private void spiceUpRelationalModel(RelationalModelNode model) { model.getCategories().add(createCategoryMetaData("Test Category")); }
public void refresh(Domain newDomain) throws ModelerException { List<IAvailableItem> items = new ArrayList<IAvailableItem>(); for (IPhysicalTable table : newDomain.getPhysicalModels().get(0).getPhysicalTables()) { boolean isFact = table.getProperty("FACT_TABLE") != null ? (Boolean) table.getProperty("FACT_TABLE") : false; items.add(new AvailableTable(table, isFact)); } availableTables.setChildren(items); setModelIsChanging(true); setRelationalModelIsChanging(true); // Set the type of modeling session. This will propigate to the UI if (supportsOlap(newDomain)) { this.setModellingMode(ModelerMode.ANALYSIS_AND_REPORTING); } else { this.setModellingMode(ModelerMode.REPORTING_ONLY); // clear out OLAP side of the existing model model.getDimensions().clear(); } List<AvailableTable> tablesList = availableTables.getAsAvailableTablesList(); fireTablesChanged(); // replace the domain with the new domain, which // makes sure the physical and logical columns are accurate domain = newDomain; for (MeasureMetaData measure : model.getMeasures()) { boolean found = false; if (measure.getLogicalColumn() != null) { inner: for (AvailableTable table : tablesList) { for (AvailableField f : table.getAvailableFields()) { if (f.getPhysicalColumn() .getId() .equals(measure.getLogicalColumn().getPhysicalColumn().getId()) && f.getPhysicalColumn() .getPhysicalTable() .getId() .equals( measure .getLogicalColumn() .getPhysicalColumn() .getPhysicalTable() .getId())) { // the physical column backing this measure is still available, set it to the new one measure.setLogicalColumn( createColumnBackedNode(f, currentModelerPerspective).getLogicalColumn()); found = true; break inner; } } } if (!found) { // the physical column that backed this measure no longer exists in the model. // therefore, we must invalidate it's logical column measure.setLogicalColumn(null); } } } try { for (DimensionMetaData dm : model.getDimensions()) { for (HierarchyMetaData hm : dm) { for (LevelMetaData lm : hm) { boolean found = false; if (lm.getLogicalColumn() != null) { inner: for (AvailableTable table : tablesList) { for (AvailableField f : table.getAvailableFields()) { if (f.getPhysicalColumn() .getId() .equals(lm.getLogicalColumn().getPhysicalColumn().getId()) && f.getPhysicalColumn() .getPhysicalTable() .getId() .equals( lm.getLogicalColumn() .getPhysicalColumn() .getPhysicalTable() .getId())) { // the physical column backing this level is still available, it is ok lm.setLogicalColumn( createColumnBackedNode(f, currentModelerPerspective).getLogicalColumn()); found = true; break inner; } } } } if (!found) { // the physical column that backed this level no longer exists in the model. // therefore, we must invalidate it's logical column lm.setLogicalColumn(null); } } } } } catch (Exception e) { e.printStackTrace(); } for (CategoryMetaData category : relationalModel.getCategories()) { for (FieldMetaData field : category) { boolean found = false; if (field.getLogicalColumn() != null) { inner: for (AvailableTable table : tablesList) { for (AvailableField f : table.getAvailableFields()) { if (f.getPhysicalColumn() .getId() .equals(field.getLogicalColumn().getPhysicalColumn().getId()) && f.getPhysicalColumn() .getPhysicalTable() .getId() .equals( field .getLogicalColumn() .getPhysicalColumn() .getPhysicalTable() .getId())) { // the physical column backing this field is still available, it is ok found = true; break inner; } } } if (!found) { // the physical column that backed this field no longer exists in the model. // therefore, we must invalidate it's logical column field.setLogicalColumn(null); } } } } // If the new model was previously "auto-modeled" we need to clean that now LogicalModel newLModel = getLogicalModel(ModelerPerspective.ANALYSIS); if (newLModel != null) { List<OlapDimension> theDimensions = (List) newLModel.getProperty("olap_dimensions"); // $NON-NLS-1$ if (theDimensions != null) { theDimensions.clear(); } List<OlapCube> theCubes = (List) newLModel.getProperty("olap_cubes"); // $NON-NLS-1$ if (theCubes != null) { theCubes.clear(); } } setModelIsChanging(false); setRelationalModelIsChanging(false); }