@Test public void testMetaDataUpdateFormat() throws Exception { ModelerWorkspace model = new ModelerWorkspace(new ModelerWorkspaceHelper("")); model.setDomain(new XmiParser().parseXmi(new FileInputStream(PRODUCT_XMI_FILE))); model.getWorkspaceHelper().populateDomain(model); // Initial measure exists LogicalModel logicalModel = model.getLogicalModel(ModelerPerspective.ANALYSIS); OlapCube cube = ((List<OlapCube>) logicalModel.getProperty(LogicalModel.PROPERTY_OLAP_CUBES)).get(0); List<OlapMeasure> olapMeasures = cube.getOlapMeasures(); OlapMeasure measure = AnnotationUtil.getOlapMeasure(INIT_BUYPRICE_NAME, olapMeasures); assertNotNull(measure); assertNull(measure.getLogicalColumn().getProperty("mask")); // Changing the aggregation type UpdateMeasure updateMeasure = new UpdateMeasure(); updateMeasure.setMeasure(INIT_MEASURE_FORMULA); updateMeasure.setName(INIT_BUYPRICE_NAME); updateMeasure.setFormat(NEW_FORMAT); boolean isApplied = updateMeasure.apply(model, metaStore); assertTrue(isApplied); // Ensure the aggregation type got set logicalModel = model.getLogicalModel(ModelerPerspective.ANALYSIS); cube = ((List<OlapCube>) logicalModel.getProperty(LogicalModel.PROPERTY_OLAP_CUBES)).get(0); olapMeasures = cube.getOlapMeasures(); measure = AnnotationUtil.getOlapMeasure(INIT_BUYPRICE_NAME, olapMeasures); assertNotNull(measure); assertEquals(NEW_FORMAT, measure.getLogicalColumn().getProperty("mask")); }
@Test public void testMetaDataUpdateName() throws Exception { ModelerWorkspace model = new ModelerWorkspace(new ModelerWorkspaceHelper("")); model.setDomain(new XmiParser().parseXmi(new FileInputStream(PRODUCT_XMI_FILE))); model.getWorkspaceHelper().populateDomain(model); // Initial measure exists LogicalModel logicalModel = model.getLogicalModel(ModelerPerspective.ANALYSIS); OlapCube cube = ((List<OlapCube>) logicalModel.getProperty(LogicalModel.PROPERTY_OLAP_CUBES)).get(0); List<OlapMeasure> olapMeasures = cube.getOlapMeasures(); assertNotNull(AnnotationUtil.getOlapMeasure(INIT_BUYPRICE_NAME, olapMeasures)); // Renaming the measure UpdateMeasure updateMeasure = new UpdateMeasure(); updateMeasure.setMeasure(INIT_MEASURE_FORMULA); updateMeasure.setName(NEW_BUYPRICE_NAME); boolean isApplied = updateMeasure.apply(model, metaStore); assertTrue(isApplied); // Make sure the initial measure name cannot be found and the new measure name exists logicalModel = model.getLogicalModel(ModelerPerspective.ANALYSIS); cube = ((List<OlapCube>) logicalModel.getProperty(LogicalModel.PROPERTY_OLAP_CUBES)).get(0); olapMeasures = cube.getOlapMeasures(); assertNull(AnnotationUtil.getOlapMeasure(INIT_BUYPRICE_NAME, olapMeasures)); assertNotNull(AnnotationUtil.getOlapMeasure(NEW_BUYPRICE_NAME, olapMeasures)); }
@Test public void testMetaDataNoDuplicateNames() throws Exception { ModelerWorkspace model = new ModelerWorkspace(new ModelerWorkspaceHelper("")); model.setDomain(new XmiParser().parseXmi(new FileInputStream(PRODUCT_XMI_FILE))); model.getWorkspaceHelper().populateDomain(model); // Initial measure exists LogicalModel logicalModel = model.getLogicalModel(ModelerPerspective.ANALYSIS); OlapCube cube = ((List<OlapCube>) logicalModel.getProperty(LogicalModel.PROPERTY_OLAP_CUBES)).get(0); List<OlapMeasure> olapMeasures = cube.getOlapMeasures(); assertNotNull(AnnotationUtil.getOlapMeasure(INIT_BUYPRICE_NAME, olapMeasures)); // Renaming the measure UpdateMeasure updateMeasure = new UpdateMeasure(); updateMeasure.setMeasure(INIT_MEASURE_FORMULA); updateMeasure.setName(EXISTING_NAME); boolean isApplied = updateMeasure.apply(model, metaStore); assertFalse(isApplied); // Make sure nothing has changed logicalModel = model.getLogicalModel(ModelerPerspective.ANALYSIS); cube = ((List<OlapCube>) logicalModel.getProperty(LogicalModel.PROPERTY_OLAP_CUBES)).get(0); olapMeasures = cube.getOlapMeasures(); OlapMeasure oldMeasure = AnnotationUtil.getOlapMeasure(INIT_BUYPRICE_NAME, olapMeasures); assertNotNull(oldMeasure); INIT_BUYPRICE_COLUMN.equals(oldMeasure.getLogicalColumn().getName()); oldMeasure = AnnotationUtil.getOlapMeasure(EXISTING_NAME, olapMeasures); assertNotNull(oldMeasure); EXISTING_COLUMN.equals(oldMeasure.getLogicalColumn().getName()); }