protected void checkForForeignKeyChanges(GenericSchemaChanges changes, DbTable sourceTable, DbTable targetTable) {
for(DbForeignKey targetForeignKey : targetTable.getForeignKeys()){
DbForeignKey sourceForeignKey = sourceTable.findForeignKey(targetForeignKey.getName());
if(null == sourceForeignKey){
log.debug("Foreign key '{}' needs to be removed from table '{}'",targetForeignKey.getName(),targetTable.getName());
changes.add(new RemoveForeignKeyChange(targetTable, targetForeignKey));
}
}
for(DbForeignKey sourceForeignKey : sourceTable.getForeignKeys()){
DbForeignKey targetForeignKey = targetTable.findForeignKey(sourceForeignKey.getName());
if(null == targetForeignKey){
log.debug("Foreign key '{}' needs to be added to table '{}'",sourceForeignKey.getName(),sourceTable.getName());
changes.add(new AddForeignKeyChange(targetTable, sourceForeignKey));
}else{
checkForForeignKeyDefinitionChange(changes, sourceTable, sourceForeignKey, targetTable, targetForeignKey);
}
}
}