public static Digraph buildReferentialDigraph(Digraph digraph,
Collection tables) {
HashMap tableMap = new HashMap();
for (Iterator i = tables.iterator(); i.hasNext();) {
Table table = (Table) i.next();
tableMap.put(table.getFullName(), table);
digraph.addVertex(table);
}
for (Iterator i = tables.iterator(); i.hasNext();) {
Table dst = (Table) i.next();
for (Iterator j = dst.getForeignKeys().iterator(); j.hasNext();) {
ForeignKey fk = (ForeignKey) j.next();
String pkTableFullName = Table.composeFullName(fk
.getPkTableCatalog(), fk.getPkTableSchema(), fk
.getPkTableName());
Table origin = (Table) tableMap.get(pkTableFullName);
if (origin != null) {
ArrayList fks = (ArrayList) digraph.getArc(origin, dst);
if (fks == null) {
fks = new ArrayList();
digraph.putArc(origin, dst, fks);
}
fks.add(fk);
}
}
}
return digraph;
}
}