blob: 75e91e9de3fc680e415ca360509845c2711a38e2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2009 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.gen.internal.util;
import java.util.List;
import org.eclipse.jpt.db.ForeignKey;
/**
* Represents the metadata for a particular foreign key relationship
* in a relational database schema.
* <p/>
* The referrer column is one which actually contains a foreign
* key constraint, and is equivalent to the "foreign key" column.
* <p/>
* The referenced column is one which a referrer or foreign key
* column references, and is equivalent to the "primary key" column.
*
*/
public class ForeignKeyInfo
{
private transient ForeignKey mForeignKey ;
private String mName;
private String mReferrerTableName;
private String mReferencedTableName;
private List<String> mReferrerColNames = new java.util.ArrayList<String>();
private List<String> mReferencedColNames = new java.util.ArrayList<String>();
/**
* @param fk The name of the constraint backing
* this foreign key metadata instance.
*/
public ForeignKeyInfo(ForeignKey fk, String referrerTableName, String referencedTableName) {
mForeignKey = fk;
mName = fk.getName();
mReferrerTableName = referrerTableName;
mReferencedTableName = referencedTableName;
}
/**
* Obtain the constraint name for this foreign key specification.
* The name for a Foreign Key may, as per the JDBC specification,
* be <code>null</code> where the constraint is not named.
* In addition, it may be hardly recognizable to the user,
* particularly for DB/2 constraints.
*
* @return The name of the constraint backing
* this foreign key metadata instance.
*/
public String getName()
{
return mName;
}
public ForeignKey getForeignKey(){
return mForeignKey;
}
/**
* Add another pair of foreign key mappings for this foreign key
* definition.
*
* @param referrerColumn The referrer column name for this mapping.
*
* @param referencedColumn The referenced column name for this mapping.
*/
public void addColumnMapping(String referrerColName, String referencedColName) {
mReferrerColNames.add(referrerColName);
mReferencedColNames.add(referencedColName);
}
/**
* Returns the referrer table name of this foreign key
* relationship.
*/
public String getReferrerTableName() {
return mReferrerTableName;
}
/**
* Returns the referrer column names for this
* foreign key.
* The size of this list is always the same as the size of
* the list retured from <code>getReferencedColumnNames</code>
*/
public List<String> getReferrerColumnNames() {
return mReferrerColNames;
}
/**
* Returns the referenced table name of this foreign key
* relationship.
*/
public String getReferencedTableName() {
return mReferencedTableName;
}
/**
* Returns the referenced column names for this
* foreign key.
* The size of this list is always the same as the size of
* the list retured from <code>getReferrerColumnNames</code>
*/
public List<String> getReferencedColumnNames() {
return mReferencedColNames;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {
return "name=" + mName
+ ", referrerTable=" + mReferrerTableName
+ ", referencedTable=" + mReferencedTableName
+ ", referrerColumns=" + mReferrerColNames
+ ", referencedColumns=" + mReferencedColNames
;
}
}