public DataModelDesc createDataModelDesc(DataModelDesc desc, String projectName, String owner) throws IOException { try (AutoLock lock = modelMapLock.lockForWrite()) { String name = desc.getName(); if (dataModelDescMap.containsKey(name)) throw new IllegalArgumentException("DataModelDesc '" + name + "' already exists"); ProjectManager prjMgr = ProjectManager.getInstance(config); ProjectInstance prj = prjMgr.getProject(projectName); if (prj.containsModel(name)) throw new IllegalStateException("project " + projectName + " already contains model " + name); try { // Temporarily register model under project, because we want to // update project formally after model is saved. prj.getModels().add(name); desc.setOwner(owner); logger.info("Saving Model {} to Project {} with {} as owner", desc.getName(), projectName, owner); desc = saveDataModelDesc(desc); } finally { prj.getModels().remove(name); } // now that model is saved, update project formally prjMgr.addModelToProject(name, projectName); return desc; } }
private void injest(File metaRoot) throws IOException { KylinConfig srcConfig = KylinConfig.createInstanceFromUri(metaRoot.getAbsolutePath()); TableMetadataManager srcMetadataManager = TableMetadataManager.getInstance(srcConfig); DataModelManager srcModelManager = DataModelManager.getInstance(srcConfig); HybridManager srcHybridManager = HybridManager.getInstance(srcConfig); CubeManager srcCubeManager = CubeManager.getInstance(srcConfig); CubeDescManager srcCubeDescManager = CubeDescManager.getInstance(srcConfig); checkAndMark(srcMetadataManager, srcModelManager, srcHybridManager, srcCubeManager, srcCubeDescManager); new ResourceTool().copy(srcConfig, kylinConfig, Lists.newArrayList(requiredResources)); // clear the cache Broadcaster.getInstance(kylinConfig).notifyClearAll(); ProjectManager projectManager = ProjectManager.getInstance(kylinConfig); for (TableDesc tableDesc : srcMetadataManager.listAllTables(null)) { logger.info("add " + tableDesc + " to " + targetProjectName); projectManager.addTableDescToProject(Lists.newArrayList(tableDesc.getIdentity()).toArray(new String[0]), targetProjectName); } for (CubeInstance cube : srcCubeManager.listAllCubes()) { logger.info("add " + cube + " to " + targetProjectName); projectManager.addModelToProject(cube.getModel().getName(), targetProjectName); projectManager.moveRealizationToProject(RealizationType.CUBE, cube.getName(), targetProjectName, null); } }
public DataModelDesc createDataModelDesc(DataModelDesc desc, String projectName, String owner) throws IOException { try (AutoLock lock = modelMapLock.lockForWrite()) { String name = desc.getName(); if (dataModelDescMap.containsKey(name)) throw new IllegalArgumentException("DataModelDesc '" + name + "' already exists"); ProjectManager prjMgr = ProjectManager.getInstance(config); ProjectInstance prj = prjMgr.getProject(projectName); if (prj.containsModel(name)) throw new IllegalStateException("project " + projectName + " already contains model " + name); try { // Temporarily register model under project, because we want to // update project formally after model is saved. prj.getModels().add(name); desc.setOwner(owner); logger.info("Saving Model {} to Project {} with {} as owner", desc.getName(), projectName, owner); desc = saveDataModelDesc(desc); } finally { prj.getModels().remove(name); } // now that model is saved, update project formally prjMgr.addModelToProject(name, projectName); return desc; } }
private void injest(File metaRoot) throws IOException { KylinConfig srcConfig = KylinConfig.createInstanceFromUri(metaRoot.getAbsolutePath()); TableMetadataManager srcMetadataManager = TableMetadataManager.getInstance(srcConfig); DataModelManager srcModelManager = DataModelManager.getInstance(srcConfig); HybridManager srcHybridManager = HybridManager.getInstance(srcConfig); CubeManager srcCubeManager = CubeManager.getInstance(srcConfig); CubeDescManager srcCubeDescManager = CubeDescManager.getInstance(srcConfig); checkAndMark(srcMetadataManager, srcModelManager, srcHybridManager, srcCubeManager, srcCubeDescManager); new ResourceTool().copy(srcConfig, kylinConfig, Lists.newArrayList(requiredResources)); // clear the cache Broadcaster.getInstance(kylinConfig).notifyClearAll(); ProjectManager projectManager = ProjectManager.getInstance(kylinConfig); for (TableDesc tableDesc : srcMetadataManager.listAllTables(null)) { logger.info("add " + tableDesc + " to " + targetProjectName); projectManager.addTableDescToProject(Lists.newArrayList(tableDesc.getIdentity()).toArray(new String[0]), targetProjectName); } for (CubeInstance cube : srcCubeManager.listAllCubes()) { logger.info("add " + cube + " to " + targetProjectName); projectManager.addModelToProject(cube.getModel().getName(), targetProjectName); projectManager.moveRealizationToProject(RealizationType.CUBE, cube.getName(), targetProjectName, null); } }