*/
public final void merge(final ForeignKey fk) throws GeneratorException {
if (fk == null) {
String msg = "Foreign key to merge is missing.";
LOG.error(msg);
throw new GeneratorException(msg);
}
if (!equals(getName(), fk.getName())) {
String msg = "Name of foreign key differs from: " + getName();
LOG.error(msg);
throw new GeneratorException(msg);
}
if (!equals(getTable(), fk.getTable())) {
String msg = "Table of foreign key differs from: " + getTable().getName();
LOG.error(msg);
throw new GeneratorException(msg);
}
if (getFieldCount() != fk.getFieldCount()) {
String msg = "Field count of foreign key differs from: " + getFieldCount();
LOG.error(msg);
throw new GeneratorException(msg);
}
for (int i = 0; i < getFieldCount(); i++) {
if (!equals(getField(i), fk.getField(i))) {
String msg = "Field of foreign key differs from: "
+ getField(i).getName();
LOG.error(msg);
throw new GeneratorException(msg);
}
}
if (!equals(getReferenceTable().getName(), fk.getReferenceTable().getName())) {
String msg = "Referenced table of foreign key differs from: "
+ getReferenceTable().getName();
LOG.error(msg);
throw new GeneratorException(msg);
}
if (getReferenceFieldCount() != fk.getReferenceFieldCount()) {
String msg = "Referenced field count of foreign key differs from: "
+ getReferenceFieldCount();
LOG.error(msg);
throw new GeneratorException(msg);
}
for (int i = 0; i < getReferenceFieldCount(); i++) {
if (!equals(getReferenceField(i), fk.getReferenceField(i))) {
String msg = "Referenced field of foreign key differs from: "
+ getReferenceField(i).getName();
LOG.error(msg);
throw new GeneratorException(msg);
}
}
}