public static void duplicateRelationshipsForOlap( LogicalModel relationalModel, LogicalModel olapModel ) { if ( olapModel.getLogicalRelationships() != null ) { olapModel.getLogicalRelationships().clear(); } if ( relationalModel.getLogicalRelationships() != null ) { for ( LogicalRelationship rel : relationalModel.getLogicalRelationships() ) { olapModel.addLogicalRelationship( duplicateRelationshipForOlap( rel, olapModel ) ); } } }
protected static void splitOlapRelationships( LogicalModel relationalModel, LogicalModel olapModel ) { List<LogicalRelationship> relationalRelationships = new ArrayList<LogicalRelationship>(); List<LogicalRelationship> olapRelationships = new ArrayList<LogicalRelationship>(); if ( relationalModel.getLogicalRelationships() != null ) { for ( LogicalRelationship rel : relationalModel.getLogicalRelationships() ) { if ( isOlap( rel.getFromColumn() ) && isOlap( rel.getToColumn() ) && isOlap( rel.getFromTable() ) && isOlap( rel.getToTable() ) ) { LogicalRelationship olapRel = duplicateRelationshipForOlap( rel, olapModel ); olapRelationships.add( olapRel ); } else { relationalRelationships.add( rel ); } } relationalModel.getLogicalRelationships().clear(); relationalModel.getLogicalRelationships().addAll( relationalRelationships ); olapModel.getLogicalRelationships().addAll( olapRelationships ); } }
private static LogicalRelationship findRelationshipUsing( LogicalModel model, LogicalTable one, LogicalTable two ) { for ( LogicalRelationship rel : model.getLogicalRelationships() ) { if ( rel.isUsingTable( one ) && rel.isUsingTable( two ) ) { return rel; } } return null; }
public LogicalRelationship findRelationshipUsing( LogicalTable one, LogicalTable two ) { for ( LogicalRelationship relationship : getLogicalRelationships() ) { if ( relationship.isUsingTable( one ) && relationship.isUsingTable( two ) ) { return relationship; } } return null; }
/** * Creates a new graph for a business model * * @param model * Business model to base graph upon */ public MqlGraph( LogicalModel model ) { this.nodes = new ArrayList<Node>(); this.arcs = new ArrayList<Arc>(); this.tableNodeMap = new HashMap<LogicalTable, Node>(); this.basicNodeQueue = new GraphElementQueue(); this.extendedNodeQueue = new GraphElementQueue(); // build the graph for this model build( model.getLogicalRelationships() ); }
/** * @param businessTable * The table to calculate the number of neighbours for. * @param selectedTables * The list of selected business tables. * @return The number of neighbours in a list of selected tables using the relationships defined in this business * Model. */ private static int getNrNeighbours( LogicalModel model, LogicalTable businessTable, List<LogicalTable> selectedTables ) { int nr = 0; for ( LogicalRelationship relationship : model.getLogicalRelationships() ) { if ( relationship.isUsingTable( businessTable ) ) { // See if one of the selected tables is also using this relationship. // If so, we have a neighbour in the selected tables. // boolean found = false; for ( int s = 0; s < selectedTables.size() && !found; s++ ) { LogicalTable selectedTable = selectedTables.get( s ); if ( relationship.isUsingTable( selectedTable ) && !businessTable.equals( selectedTable ) ) { nr++; } } } } return nr; }
List<LogicalRelationship> rels = model.getLogicalRelationships(); LogicalTable t1 = tables.get( 0 ); LogicalTable t2 = tables.get( 1 );
for ( LogicalRelationship rel : model.getLogicalRelationships() ) { Element keyRel = doc.createElement( "CWM:KeyRelationship" ); //$NON-NLS-1$ keyRel.setAttribute( "xmi.id", idGen.getNextId() ); //$NON-NLS-1$
if ( combinedModel.getLogicalRelationships().size() > 0 ) { splitOlapRelationships( combinedModel, olapModel );
if ( olapModel.getLogicalRelationships().size() != logicalModel.getLogicalRelationships().size() ) { ModelerConversionUtil.duplicateRelationshipsForOlap( logicalModel, olapModel );
logicalModel.getLogicalRelationships().add( logical );