String foreignKey = record.getValue("constraint_name", String.class);
String foreignKeyTableName = record.getValue(References.TABNAME);
String foreignKeyColumn = record.getValue(References.FK_COLNAMES);
String uniqueKey = record.getValue("referenced_constraint_name", String.class);
TableDefinition foreignKeyTable = getTable(foreignKeySchema, foreignKeyTableName);
if (foreignKeyTable != null) {
/*
* If a foreign key consists of several columns, all the columns
* are contained in a single database column (delimited with
* space) here we split the combined string into individual
* columns
*/
String[] referencingColumnNames = foreignKeyColumn.trim().split("[ ]+");
for (int i = 0; i < referencingColumnNames.length; i++) {
ColumnDefinition column = foreignKeyTable.getColumn(referencingColumnNames[i]);
relations.addForeignKey(foreignKey, uniqueKey, column, uniqueKeySchema);
}
}
}