public void generate() throws SQLException, NamingException { final GraphvizDiagramGenerator gdg = getGraphvizDiagramGenerator(); final GraphvizSchemaDiagramGeneratorFilter filter = getSchemaDiagramFilter(); final Set referenceColumnsInIncludedTables = new HashSet(); final Tables tables = schema.getTables(); for (int i = 0; i < tables.size(); i++) { final Table table = tables.get(i); if (filter.includeTableInDiagram(this, table)) { final Columns foreignKeyColumns = table.getForeignKeyColumns(); for (int j = 0; j < foreignKeyColumns.size(); j++) referenceColumnsInIncludedTables.add(foreignKeyColumns.get(j)); final GraphvizSchemaDiagramTableNodeGenerator nodeGenerator = filter.getTableNodeGenerator(this, table); final GraphvizDiagramNode node = nodeGenerator.generateTableNode(this, filter, table); gdg.addNode(node); } } for (Iterator i = referenceColumnsInIncludedTables.iterator(); i.hasNext(); ) { final Column foreignKeyColumn = (Column) i.next(); final ForeignKey foreignKey = foreignKeyColumn.getForeignKey(); final Column firstSourceColumn = foreignKey.getSourceColumns().getFirst(); final Column firstReferenceColumn = foreignKey.getReference().getColumns().getFirst(); final GraphvizSchemaDiagramTableNodeGenerator sourceTableNodeGenerator = filter.getTableNodeGenerator(this, firstSourceColumn.getTable()); final GraphvizSchemaDiagramTableNodeGenerator refTableNodeGenerator = filter.getTableNodeGenerator(this, firstReferenceColumn.getTable()); // make sure both sides have a table.column visible otherwise we won't draw an edge if (filter.includeTableInDiagram(this, firstSourceColumn.getTable()) && filter.includeTableInDiagram(this, firstReferenceColumn.getTable()) && filter.includeColumnInDiagram(this, firstSourceColumn) && filter.includeColumnInDiagram(this, firstReferenceColumn) && filter.includeForeignKeyEdgeInDiagram(this, foreignKey)) { GraphvizDiagramEdge edge = new GraphvizDiagramEdge( gdg, sourceTableNodeGenerator.getEdgeSourceElementAndPort(this, foreignKey), refTableNodeGenerator.getEdgeDestElementAndPort(this, foreignKey)); filter.formatForeignKeyEdge(this, foreignKey, edge); gdg.addEdge(edge); } } }
public PersonIdentifierTable(Table table) { this.table = (com.netspective.axiom.schema.table.BasicTable) table; this.schema = table.getSchema(); this.accessors = table.getQueryDefinition().getSelects(); crSessIdForeignKey = table.getColumns().get(COLINDEX_CR_SESS_ID).getForeignKey(); recStatIdForeignKey = table.getColumns().get(COLINDEX_REC_STAT_ID).getForeignKey(); personIdForeignKey = (ParentForeignKey) table.getColumns().get(COLINDEX_PERSON_ID).getForeignKey(); orgIdForeignKey = table.getColumns().get(COLINDEX_ORG_ID).getForeignKey(); idTypeIdForeignKey = table.getColumns().get(COLINDEX_ID_TYPE_ID).getForeignKey(); sourceTypeIdForeignKey = table.getColumns().get(COLINDEX_SOURCE_TYPE_ID).getForeignKey(); }
public PersonEthnicityTable(Table table) { this.table = (com.netspective.axiom.schema.table.BasicTable) table; this.schema = table.getSchema(); this.accessors = table.getQueryDefinition().getSelects(); crSessIdForeignKey = table.getColumns().get(COLINDEX_CR_SESS_ID).getForeignKey(); recStatIdForeignKey = table.getColumns().get(COLINDEX_REC_STAT_ID).getForeignKey(); personIdForeignKey = (ParentForeignKey) table.getColumns().get(COLINDEX_PERSON_ID).getForeignKey(); ethnicityIdForeignKey = table.getColumns().get(COLINDEX_ETHNICITY_ID).getForeignKey(); }