org.apache.openjpa.jdbc.schema
Class ForeignKey

java.lang.Object
  extended by org.apache.openjpa.jdbc.schema.ReferenceCounter
      extended by org.apache.openjpa.jdbc.schema.Constraint
          extended by org.apache.openjpa.jdbc.schema.ForeignKey
All Implemented Interfaces:
Serializable

public class ForeignKey
extends Constraint

Represents a database foreign key; may be a logical key with no database representation. This class can also represent a partial key, aligning with DatabaseMetaData.

Author:
Abe White
See Also:
Serialized Form

Nested Class Summary
static class ForeignKey.FKMapKey
           
 
Field Summary
static int ACTION_CASCADE
          Cascade any modification of the joined primary key columns to this table.
static int ACTION_DEFAULT
          Set the local columns to their default values if the primary key columns are modified.
static int ACTION_NONE
          Logical foreign key; links columns, but does not perform any action when the joined primary key columns are modified.
static int ACTION_NULL
          Null the local columns if the joined primary key columns are modified.
static int ACTION_RESTRICT
          Throw an exception if joined primary key columns are modified.
 
Constructor Summary
ForeignKey()
          Default constructor.
ForeignKey(DBIdentifier name, Table table)
           
ForeignKey(String name, Table table)
          Deprecated.  
 
Method Summary
 void addColumn(ForeignKey fk)
          Joins the column of a single column FK to this FK.
 boolean columnsMatch(Column[] fkCols, Column[] fkPKCols)
          Return true if the given local and foreign columns match those on this key.
 boolean containsColumn(Column col)
          Return true if the fk includes the given local column.
 boolean containsConstantColumn(Column col)
          Return true if the fk includes the given local column.
 boolean containsConstantPrimaryKeyColumn(Column col)
          Return true if the fk includes the given primary key column.
 boolean containsPrimaryKeyColumn(Column col)
          Return true if the fk includes the given primary key column.
 void derefColumns()
          Deref all columns in this key.
 boolean equalsForeignKey(ForeignKey fk)
          Foreign keys are equal if the satisfy the equality constraints of Constraint and they have the same local and primary key columns and action.
static int getAction(String name)
          Return the foreign key action constant for the given action name.
static String getActionName(int action)
          Return the foreign key action name for the given action constant.
 Column getColumn(Column pk)
          Return the local column joined to the given primary key column.
 Column[] getColumns()
          Return the local columns in the foreign key local table order.
 Object getConstant(Column local)
          Return the constant value assigned to the given local column.
 Column[] getConstantColumns()
          Return the local columns that we link to using constant values.
 Column[] getConstantPrimaryKeyColumns()
          Return the primary key columns that we link to using constant values.
 Object[] getConstants()
          Return the constant values assigned to the local columns returned by getConstantColumns().
 int getDeleteAction()
          Return the delete action for the key.
 int getIndex()
          Return the foreign key's 0-based index in the owning table.
 int getKeySequence()
          The sequence of this join in the foreign key.
 Column getPrimaryKeyColumn(Column local)
          Return the primary key column joined to the given local column.
 DBIdentifier getPrimaryKeyColumnIdentifier()
           
 String getPrimaryKeyColumnName()
          Deprecated.  
 Column[] getPrimaryKeyColumns()
          Return the foreign columns in the foreign key, in join-order with the result of getColumns().
 Object getPrimaryKeyConstant(Column pk)
          Return the constant value assigned to the given primary key column.
 Object[] getPrimaryKeyConstants()
          Return the constant values assigned to the primary key columns returned by getConstantPrimaryKeyColumns().
 DBIdentifier getPrimaryKeySchemaIdentifier()
           
 String getPrimaryKeySchemaName()
          Deprecated.  
 Table getPrimaryKeyTable()
          Returns the table this foreign key is linking to, if it is known yet.
 DBIdentifier getPrimaryKeyTableIdentifier()
           
 String getPrimaryKeyTableName()
          Deprecated.  
 int getUpdateAction()
          Return the update action for the key.
 boolean hasNotNullColumns()
          Checks for non-nullable local columns.
 boolean isLogical()
          Return whether this constraint is a logical constraint only; i.e.
 boolean isPrimaryKeyAutoAssigned()
          Whether the primary key columns of this key are auto-incrementing, or whether they themselves are members of a foreign key who's primary key is auto-incrementing (recursing to arbitrary depth).
 void join(Column local, Column toPK)
          Join a local column to a primary key column of another table.
 void joinConstant(Column col, Object val)
          Join a constant value to a local column of this table.
 void joinConstant(Object val, Column toPK)
          Join a constant value to a primary key column of another table.
 DBIdentifier loadIdentifierFromDB(DBDictionary dbdict, Connection conn)
           
 String loadNameFromDB(DBDictionary dbdict, Connection conn)
          Deprecated.  
 void refColumns()
          Ref all columns in this key.
 boolean removeJoin(Column col)
          Remove any joins inolving the given column.
 void setConstantJoins(Column[] cols, Object[] consts)
          Set the foreign key's constant joins.
 void setConstantJoins(Object[] consts, Column[] pkCols)
          Set the foreign key's constant joins.
 void setDeleteAction(int action)
          Set the delete action for the key.
(package private)  void setIndex(int index)
          Set the foreign key's 0-based index in the owning table.
 void setJoins(Column[] cols, Column[] pkCols)
          Set the foreign key's joins.
 void setKeySequence(int seq)
          The sequence of this join in the foreign key.
 void setPrimaryKeyColumnIdentifier(DBIdentifier pkColumnName)
           
 void setPrimaryKeyColumnName(String pkColumnName)
          Deprecated.  
 void setPrimaryKeySchemaIdentifier(DBIdentifier pkSchemaName)
           
 void setPrimaryKeySchemaName(String pkSchemaName)
          Deprecated.  
 void setPrimaryKeyTableIdentifier(DBIdentifier pkTableName)
           
 void setPrimaryKeyTableName(String pkTableName)
          Deprecated.  
 void setUpdateAction(int action)
          Set the update action for the key.
 
Methods inherited from class org.apache.openjpa.jdbc.schema.Constraint
getColumnIdentifier, getColumnName, getFullIdentifier, getFullName, getIdentifier, getName, getQualifiedPath, getSchemaIdentifier, getSchemaName, getTable, getTableIdentifier, getTableName, isDeferred, remove, setColumnIdentifier, setColumnName, setDeferred, setIdentifier, setName, setSchemaIdentifier, setSchemaName, setTableIdentifier, setTableName, toString
 
Methods inherited from class org.apache.openjpa.jdbc.schema.ReferenceCounter
deref, getRefCount, ref
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ACTION_NONE

public static final int ACTION_NONE
Logical foreign key; links columns, but does not perform any action when the joined primary key columns are modified.

See Also:
Constant Field Values

ACTION_RESTRICT

public static final int ACTION_RESTRICT
Throw an exception if joined primary key columns are modified.

See Also:
Constant Field Values

ACTION_CASCADE

public static final int ACTION_CASCADE
Cascade any modification of the joined primary key columns to this table. If the joined primary key row is deleted, the row in this table will also be deleted.

See Also:
Constant Field Values

ACTION_NULL

public static final int ACTION_NULL
Null the local columns if the joined primary key columns are modified.

See Also:
Constant Field Values

ACTION_DEFAULT

public static final int ACTION_DEFAULT
Set the local columns to their default values if the primary key columns are modified.

See Also:
Constant Field Values
Constructor Detail

ForeignKey

public ForeignKey()
Default constructor.


ForeignKey

public ForeignKey(String name,
                  Table table)
Deprecated. 

Constructor.

Parameters:
name - the foreign key name, if any
table - the local table of the foreign key

ForeignKey

public ForeignKey(DBIdentifier name,
                  Table table)
Method Detail

getAction

public static int getAction(String name)
Return the foreign key action constant for the given action name.


getActionName

public static String getActionName(int action)
Return the foreign key action name for the given action constant.


isLogical

public boolean isLogical()
Description copied from class: Constraint
Return whether this constraint is a logical constraint only; i.e. if it does not exist in the database.

Specified by:
isLogical in class Constraint

isPrimaryKeyAutoAssigned

public boolean isPrimaryKeyAutoAssigned()
Whether the primary key columns of this key are auto-incrementing, or whether they themselves are members of a foreign key who's primary key is auto-incrementing (recursing to arbitrary depth).


getPrimaryKeyTableName

public String getPrimaryKeyTableName()
Deprecated. 

The name of the primary key table.


getPrimaryKeyTableIdentifier

public DBIdentifier getPrimaryKeyTableIdentifier()

setPrimaryKeyTableName

public void setPrimaryKeyTableName(String pkTableName)
Deprecated. 

The name of the primary key table. You can only set the primary key table name on foreign keys that have not already been joined.


setPrimaryKeyTableIdentifier

public void setPrimaryKeyTableIdentifier(DBIdentifier pkTableName)

getPrimaryKeySchemaName

public String getPrimaryKeySchemaName()
Deprecated. 

The name of the primary key table's schema.


getPrimaryKeySchemaIdentifier

public DBIdentifier getPrimaryKeySchemaIdentifier()

setPrimaryKeySchemaName

public void setPrimaryKeySchemaName(String pkSchemaName)
Deprecated. 

The name of the primary key table's schema. You can only set the primary key schema name on foreign keys that have not already been joined.


setPrimaryKeySchemaIdentifier

public void setPrimaryKeySchemaIdentifier(DBIdentifier pkSchemaName)

getPrimaryKeyColumnName

public String getPrimaryKeyColumnName()
Deprecated. 

The name of the primary key column.


getPrimaryKeyColumnIdentifier

public DBIdentifier getPrimaryKeyColumnIdentifier()

setPrimaryKeyColumnName

public void setPrimaryKeyColumnName(String pkColumnName)
Deprecated. 

The name of the primary key column. You can only set the primary key column name on foreign keys that have not already been joined.


setPrimaryKeyColumnIdentifier

public void setPrimaryKeyColumnIdentifier(DBIdentifier pkColumnName)

getKeySequence

public int getKeySequence()
The sequence of this join in the foreign key.


setKeySequence

public void setKeySequence(int seq)
The sequence of this join in the foreign key.


getDeleteAction

public int getDeleteAction()
Return the delete action for the key. Will be one of: ACTION_NONE, ACTION_RESTRICT, ACTION_CASCADE, ACTION_NULL, ACTION_DEFAULT.


setDeleteAction

public void setDeleteAction(int action)
Set the delete action for the key. Must be one of: ACTION_NONE, ACTION_RESTRICT, ACTION_CASCADE, ACTION_NULL, ACTION_DEFAULT.


getUpdateAction

public int getUpdateAction()
Return the update action for the key. Will be one of: ACTION_NONE, ACTION_RESTRICT, ACTION_CASCADE, ACTION_NULL, ACTION_DEFAULT.


setUpdateAction

public void setUpdateAction(int action)
Set the update action for the key. Must be one of: ACTION_NONE, ACTION_RESTRICT, ACTION_CASCADE, ACTION_NULL, ACTION_DEFAULT.


getIndex

public int getIndex()
Return the foreign key's 0-based index in the owning table.


setIndex

void setIndex(int index)
Set the foreign key's 0-based index in the owning table.


getPrimaryKeyColumn

public Column getPrimaryKeyColumn(Column local)
Return the primary key column joined to the given local column.


getColumn

public Column getColumn(Column pk)
Return the local column joined to the given primary key column.


getConstant

public Object getConstant(Column local)
Return the constant value assigned to the given local column.


getPrimaryKeyConstant

public Object getPrimaryKeyConstant(Column pk)
Return the constant value assigned to the given primary key column.


getColumns

public Column[] getColumns()
Return the local columns in the foreign key local table order.


getConstants

public Object[] getConstants()
Return the constant values assigned to the local columns returned by getConstantColumns().


getPrimaryKeyConstants

public Object[] getPrimaryKeyConstants()
Return the constant values assigned to the primary key columns returned by getConstantPrimaryKeyColumns().


containsColumn

public boolean containsColumn(Column col)
Return true if the fk includes the given local column.


containsPrimaryKeyColumn

public boolean containsPrimaryKeyColumn(Column col)
Return true if the fk includes the given primary key column.


containsConstantColumn

public boolean containsConstantColumn(Column col)
Return true if the fk includes the given local column.


containsConstantPrimaryKeyColumn

public boolean containsConstantPrimaryKeyColumn(Column col)
Return true if the fk includes the given primary key column.


getPrimaryKeyColumns

public Column[] getPrimaryKeyColumns()
Return the foreign columns in the foreign key, in join-order with the result of getColumns().


getConstantColumns

public Column[] getConstantColumns()
Return the local columns that we link to using constant values.


getConstantPrimaryKeyColumns

public Column[] getConstantPrimaryKeyColumns()
Return the primary key columns that we link to using constant values.


setJoins

public void setJoins(Column[] cols,
                     Column[] pkCols)
Set the foreign key's joins.


setConstantJoins

public void setConstantJoins(Object[] consts,
                             Column[] pkCols)
Set the foreign key's constant joins.


setConstantJoins

public void setConstantJoins(Column[] cols,
                             Object[] consts)
Set the foreign key's constant joins.


join

public void join(Column local,
                 Column toPK)
Join a local column to a primary key column of another table.


joinConstant

public void joinConstant(Object val,
                         Column toPK)
Join a constant value to a primary key column of another table. The constant must be either a string or a number.


joinConstant

public void joinConstant(Column col,
                         Object val)
Join a constant value to a local column of this table. The constant must be either a string or a number.


removeJoin

public boolean removeJoin(Column col)
Remove any joins inolving the given column.

Returns:
true if the join was removed, false if not part of the key

getPrimaryKeyTable

public Table getPrimaryKeyTable()
Returns the table this foreign key is linking to, if it is known yet.


refColumns

public void refColumns()
Ref all columns in this key.


derefColumns

public void derefColumns()
Deref all columns in this key.


equalsForeignKey

public boolean equalsForeignKey(ForeignKey fk)
Foreign keys are equal if the satisfy the equality constraints of Constraint and they have the same local and primary key columns and action.


columnsMatch

public boolean columnsMatch(Column[] fkCols,
                            Column[] fkPKCols)
Return true if the given local and foreign columns match those on this key. This can be used to find foreign keys given only column linking information.


hasNotNullColumns

public boolean hasNotNullColumns()
Checks for non-nullable local columns.


loadNameFromDB

public String loadNameFromDB(DBDictionary dbdict,
                             Connection conn)
Deprecated. 

Return the name of the foreignkey constraint as defined in the database.


loadIdentifierFromDB

public DBIdentifier loadIdentifierFromDB(DBDictionary dbdict,
                                         Connection conn)

addColumn

public void addColumn(ForeignKey fk)
Joins the column of a single column FK to this FK.

Parameters:
fk -


Copyright © 2006-2010 Apache Software Foundation. All Rights Reserved.