@Test public void testFieldAggregations() throws ModelerException { ModelerWorkspaceHelper helper = new ModelerWorkspaceHelper(LOCALE); helper.autoModelFlat(workspace); helper.autoModelRelationalFlat(workspace); FieldMetaData firstField = workspace.getRelationalModel().get(0).get(0).get(0); assertEquals(firstField.getTextAggregationTypes(), firstField.getSelectedAggregations()); assertEquals(AggregationType.NONE, firstField.getDefaultAggregation()); firstField.setDefaultAggregation(AggregationType.COUNT); assertEquals(AggregationType.COUNT, firstField.getDefaultAggregation()); firstField.setSelectedAggregations(Arrays.asList(AggregationType.COUNT)); // Test Olap side assertEquals( workspace.getModel().getMeasures().get(0).getDefaultAggregation(), AggregationType.SUM); helper.populateDomain(workspace); // Now verify with the generated models LogicalModel logicalModel = workspace.getLogicalModel(ModelerPerspective.REPORTING); LogicalColumn lCol = logicalModel.getCategories().get(0).getLogicalColumns().get(0); assertEquals(firstField.getDefaultAggregation(), lCol.getAggregationType()); assertEquals(firstField.getSelectedAggregations(), lCol.getAggregationList()); List<OlapCube> cubes = (List<OlapCube>) workspace.getLogicalModel(ModelerPerspective.ANALYSIS).getProperty("olap_cubes"); OlapMeasure measure = cubes.get(0).getOlapMeasures().get(0); assertEquals(AggregationType.SUM, measure.getLogicalColumn().getAggregationType()); }
@Test public void testPopulateCategories_MultipleCategoriesAggregationTypesAndFormatMasks() throws ModelerException { ModelerWorkspaceHelper helper = new ModelerWorkspaceHelper(LOCALE); LogicalModel logicalModel = workspace.getLogicalModel(ModelerPerspective.REPORTING); helper.autoModelFlat(workspace); helper.autoModelRelationalFlat(workspace); spiceUpRelationalModel(workspace.getRelationalModel()); helper.populateCategories(workspace); List<AvailableTable> tablesList = workspace.getAvailableTables().getAsAvailableTablesList(); List<Category> categories = logicalModel.getCategories(); assertEquals(2, categories.size()); assertEquals( tablesList.get(0).getAvailableFields().size(), categories.get(0).getLogicalColumns().size()); System.out.println(logicalModel.getLogicalTables().get(0).getLogicalColumns().size()); assertEquals(1, categories.get(1).getLogicalColumns().size()); for (int i = 0; i < categories.size(); i++) { for (LogicalColumn lCol : categories.get(i).getLogicalColumns()) { FieldMetaData orig = null; for (FieldMetaData fieldMetaData : workspace.getRelationalModel().getCategories().get(i)) { if (lCol.getId().equals(fieldMetaData.getLogicalColumn().getId())) { orig = fieldMetaData; break; } } assertNotNull(orig); assertEquals(orig.getDefaultAggregation(), lCol.getAggregationType()); if (orig.getFormat().equals("NONE")) { if (orig.getLogicalColumn().getDataType() == DataType.NUMERIC) { assertTrue(((String) lCol.getProperty("mask")).indexOf("#") > -1); } else { assertTrue(lCol.getProperty("mask") == null); } } else { assertEquals(orig.getFormat(), lCol.getProperty("mask")); } } } }
@Test public void testPopulateCategories() throws ModelerException { ModelerWorkspaceHelper helper = new ModelerWorkspaceHelper(LOCALE); LogicalModel logicalModel = workspace.getDomain().getLogicalModels().get(0); List<AvailableTable> tablesList = workspace.getAvailableTables().getAsAvailableTablesList(); int fields = tablesList.get(0).getAvailableFields().size(); helper.autoModelFlat(workspace); helper.autoModelRelationalFlat(workspace); helper.populateCategories(workspace); List<Category> categories = logicalModel.getCategories(); assertEquals(1, categories.size()); assertEquals(fields, tablesList.get(0).getAvailableFields().size()); System.out.println(logicalModel.getLogicalTables().get(0).getLogicalColumns().size()); assertEquals( tablesList.get(0).getAvailableFields().size(), categories.get(0).getLogicalColumns().size()); for (LogicalColumn lCol : categories.get(0).getLogicalColumns()) { FieldMetaData orig = null; for (FieldMetaData fieldMetaData : workspace.getRelationalModel().getCategories().get(0)) { if (lCol.getId().equals(fieldMetaData.getLogicalColumn().getId())) { orig = fieldMetaData; break; } } assertNotNull(orig); assertEquals(orig.getDefaultAggregation(), lCol.getAggregationType()); if (orig.getFormat().equals("NONE")) { if (orig.getLogicalColumn().getDataType() == DataType.NUMERIC) { assertTrue("#".equals(lCol.getProperty("mask"))); } else { assertTrue(lCol.getProperty("mask") == null); } } else { assertEquals(orig.getFormat(), lCol.getProperty("mask")); } } }