package com.quantum.model; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @author BC */ public class ForeignKeyImpl implements ForeignKey { private String name; private String localEntityName; private String localEntitySchema; private String foreignEntityName; private String foreignEntitySchema; private List foreignColumns = Collections.synchronizedList(new ArrayList()); private List localColumns = Collections.synchronizedList(new ArrayList()); private int deleteRule; void addColumns(String localColumnName, String foreignColumnName) { this.foreignColumns.add(foreignColumnName); this.localColumns.add(localColumnName); } public int getDeleteRule() { return this.deleteRule; } public void setDeleteRule(int deleteRule) { this.deleteRule = deleteRule; } public String getForeignEntityName() { return this.foreignEntityName; } public void setForeignEntityName(String foreignEntityName) { this.foreignEntityName = foreignEntityName; } public String getForeignEntitySchema() { return this.foreignEntitySchema; } public void setForeignEntitySchema(String foreignEntitySchema) { this.foreignEntitySchema = foreignEntitySchema; } public String getLocalEntityName() { return this.localEntityName; } public void setLocalEntityName(String localEntityName) { this.localEntityName = localEntityName; } public String getLocalEntitySchema() { return this.localEntitySchema; } public void setLocalEntitySchema(String localEntitySchema) { this.localEntitySchema = localEntitySchema; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getNumberOfColumns() { return this.localColumns.size(); } public boolean equals(Object object) { if (this.getClass() != object.getClass()) { return false; } else { ForeignKeyImpl that = (ForeignKeyImpl) object; if (this.name == null && that.name != null) { return false; } else if (this.name != null && !this.name.equals(that.name)) { return false; } else if (this.foreignEntitySchema == null && that.foreignEntitySchema != null) { return false; } else if (this.foreignEntitySchema != null && !this.foreignEntitySchema.equals(that.foreignEntitySchema)) { return false; } else if (this.foreignEntityName == null && that.foreignEntityName != null) { return false; } else if (this.foreignEntityName != null && !this.foreignEntityName.equals(that.foreignEntityName)) { return false; } else if (this.localEntitySchema == null && that.localEntitySchema != null) { return false; } else if (this.localEntitySchema != null && !this.localEntitySchema.equals(that.foreignEntitySchema)) { return false; } else if (this.localEntityName == null && that.localEntityName != null) { return false; } else if (this.localEntityName != null && !this.localEntityName.equals(that.localEntityName)) { return false; } else if (this.deleteRule != that.deleteRule) { return false; } else if (this.localColumns.size() != that.localColumns.size() || this.foreignColumns.size() != that.foreignColumns.size()) { return false; } else { boolean result = true; for (int i = 0, length = this.localColumns.size(); i < length; i++) { Object localColumn = this.localColumns.get(i); result &= (localColumn != null && localColumn.equals(that.localColumns.get(i))); Object foreignColumn = this.foreignColumns.get(i); result &= (foreignColumn != null && foreignColumn.equals(that.foreignColumns.get(i))); } return result; } } } public int hashCode() { int hashCode = 57; if (this.name != null) { hashCode ^= this.name.hashCode(); } if (this.foreignEntitySchema != null) { hashCode ^= this.foreignEntitySchema.hashCode(); } if (this.foreignEntityName != null) { hashCode ^= this.foreignEntityName.hashCode(); } if (this.localEntitySchema != null) { hashCode ^= this.localEntitySchema.hashCode(); } if (this.localEntityName != null) { hashCode ^= this.localEntityName.hashCode(); } hashCode ^= this.deleteRule; for (int i = 0, length = this.localColumns.size(); i < length; i++) { hashCode ^= this.localColumns.get(i).hashCode(); hashCode ^= this.foreignColumns.get(i).hashCode(); } return hashCode; } public String getLocalColumnName(int index) { return (String) this.localColumns.get(index); } public String getForeignColumnName(int index) { return (String) this.foreignColumns.get(index); } public String getLocalEntityQualifiedName() { return getLocalEntitySchema() == null ? getLocalEntityName() : getLocalEntitySchema() + "." + getLocalEntityName(); } public String getForeignEntityQualifiedName() { return getForeignEntitySchema() == null ? getForeignEntityName() : getForeignEntitySchema() + "." + getForeignEntityName(); } }