org.apache.cayenne.map
Class DbRelationship

java.lang.Object
  extended by org.apache.cayenne.map.Relationship
      extended by org.apache.cayenne.map.DbRelationship
All Implemented Interfaces:
Serializable, CayenneMapEntry, XMLSerializable
Direct Known Subclasses:
DbRelationshipDetected

public class DbRelationship
extends Relationship

A DbRelationship is a descriptor of a database inter-table relationship based on one or more primary key/foreign key pairs.

See Also:
Serialized Form

Field Summary
protected  List<DbJoin> joins
           
static EventSubject PROPERTY_DID_CHANGE
          Deprecated. since 3.0 - unused
protected  boolean toDependentPK
           
 
Fields inherited from class org.apache.cayenne.map.Relationship
name, runtime, sourceEntity, targetEntityName, toMany
 
Constructor Summary
DbRelationship()
           
DbRelationship(String name)
           
 
Method Summary
 void addJoin(DbJoin join)
          Adds a join.
 DbRelationship createReverseRelationship()
          Creates a new relationship with the same set of joins, but going in the opposite direction.
 void encodeAsXML(XMLEncoder encoder)
          Prints itself as XML to the provided XMLEncoder.
protected  void firePropertyDidChange()
          Deprecated. since 3.0 - unused.
 List<DbJoin> getJoins()
          Returns a list of joins.
 DbRelationship getReverseRelationship()
          Returns DbRelationship that is the opposite of this DbRelationship.
 Collection<DbAttribute> getSourceAttributes()
          Returns a Collection of source attributes.
 Collection<DbAttribute> getTargetAttributes()
          Returns a Collection of target attributes.
 Entity getTargetEntity()
          Returns a target of this relationship.
 boolean isFromPK()
           
 boolean isToDependentPK()
          Returns true if relationship from source to target points to dependent primary key.
 boolean isToMasterPK()
          Returns true if a method isToDependentPK of reverse relationship of this relationship returns true.
 boolean isToPK()
          Returns true if the relationship points to at least one of the PK columns of the target entity.
 boolean isValidForDepPk()
           
 void removeAllJoins()
           
 void removeJoin(DbJoin join)
           
 void setJoins(Collection<DbJoin> newJoins)
           
 void setToDependentPK(boolean toDependentPK)
           
 void setToMany(boolean toMany)
          Sets relationship multiplicity.
 Map<String,Object> srcFkSnapshotWithTargetSnapshot(Map<String,Object> targetSnapshot)
          Creates a snapshot of foreign key attributes of a source object of this relationship based on a snapshot of a target.
 Map<String,Object> srcPkSnapshotWithTargetSnapshot(Map<String,Object> targetSnapshot)
          Creates a snapshot of primary key attributes of a source object of this relationship based on a snapshot of a target.
 Map<String,Object> targetPkSnapshotWithSrcSnapshot(Map<String,Object> srcSnapshot)
          Creates a snapshot of primary key attributes of a target object of this relationship based on a snapshot of a source.
 
Methods inherited from class org.apache.cayenne.map.Relationship
getName, getParent, getSourceEntity, getTargetEntityName, isRuntime, isToMany, setName, setParent, setRuntime, setSourceEntity, setTargetEntity, setTargetEntityName, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PROPERTY_DID_CHANGE

public static final EventSubject PROPERTY_DID_CHANGE
Deprecated. since 3.0 - unused

joins

protected List<DbJoin> joins

toDependentPK

protected boolean toDependentPK
Constructor Detail

DbRelationship

public DbRelationship()

DbRelationship

public DbRelationship(String name)
Method Detail

encodeAsXML

public void encodeAsXML(XMLEncoder encoder)
Prints itself as XML to the provided XMLEncoder.

Since:
1.1

getTargetEntity

public Entity getTargetEntity()
Returns a target of this relationship. If relationship is not attached to a DbEntity, and DbEntity doesn't have a namespace, and exception is thrown.

Specified by:
getTargetEntity in class Relationship

getTargetAttributes

public Collection<DbAttribute> getTargetAttributes()
Returns a Collection of target attributes.

Since:
1.1

getSourceAttributes

public Collection<DbAttribute> getSourceAttributes()
Returns a Collection of source attributes.

Since:
1.1

createReverseRelationship

public DbRelationship createReverseRelationship()
Creates a new relationship with the same set of joins, but going in the opposite direction.

Since:
1.0.5

getReverseRelationship

public DbRelationship getReverseRelationship()
Returns DbRelationship that is the opposite of this DbRelationship. This means a relationship from this target entity to this source entity with the same join semantics. Returns null if no such relationship exists.


isToPK

public boolean isToPK()
Returns true if the relationship points to at least one of the PK columns of the target entity.

Since:
1.1

isFromPK

public boolean isFromPK()
Since:
3.0

isToMasterPK

public boolean isToMasterPK()
Returns true if a method isToDependentPK of reverse relationship of this relationship returns true.


isToDependentPK

public boolean isToDependentPK()
Returns true if relationship from source to target points to dependent primary key. Dependent PK is a primary key column of the destination table that is also a FK to the source column.


setToDependentPK

public void setToDependentPK(boolean toDependentPK)

isValidForDepPk

public boolean isValidForDepPk()
Since:
1.1

getJoins

public List<DbJoin> getJoins()
Returns a list of joins. List is returned by reference, so any modifications of the list will affect this relationship.


addJoin

public void addJoin(DbJoin join)
Adds a join.

Since:
1.1

removeJoin

public void removeJoin(DbJoin join)

removeAllJoins

public void removeAllJoins()

setJoins

public void setJoins(Collection<DbJoin> newJoins)

targetPkSnapshotWithSrcSnapshot

public Map<String,Object> targetPkSnapshotWithSrcSnapshot(Map<String,Object> srcSnapshot)
Creates a snapshot of primary key attributes of a target object of this relationship based on a snapshot of a source. Only "to-one" relationships are supported. Returns null if relationship does not point to an object. Throws CayenneRuntimeException if relationship is "to many" or if snapshot is missing id components.


srcFkSnapshotWithTargetSnapshot

public Map<String,Object> srcFkSnapshotWithTargetSnapshot(Map<String,Object> targetSnapshot)
Creates a snapshot of foreign key attributes of a source object of this relationship based on a snapshot of a target. Only "to-one" relationships are supported. Throws CayenneRuntimeException if relationship is "to many".


srcPkSnapshotWithTargetSnapshot

public Map<String,Object> srcPkSnapshotWithTargetSnapshot(Map<String,Object> targetSnapshot)
Creates a snapshot of primary key attributes of a source object of this relationship based on a snapshot of a target. Only "to-many" relationships are supported. Throws CayenneRuntimeException if relationship is "to one".


setToMany

public void setToMany(boolean toMany)
Sets relationship multiplicity.


firePropertyDidChange

protected void firePropertyDidChange()
Deprecated. since 3.0 - unused.



Copyright © 2001-2011 Apache Cayenne. All Rights Reserved.