Class ObjRelationship

All Implemented Interfaces:
ProjectNode, XMLSerializable

public class ObjRelationship extends Relationship<ObjEntity, ObjAttribute, ObjRelationship> implements ProjectNode
Describes an association between two Java classes mapped as source and target ObjEntity. Maps to a path of DbRelationships.
  • Field Details

    • DEFAULT_COLLECTION_TYPE

      public static final String DEFAULT_COLLECTION_TYPE
      Denotes a default type of to-many relationship collection which is a Java List.
      Since:
      3.0
      See Also:
    • deleteRule

      protected DeleteRule deleteRule
    • usedForLocking

      protected boolean usedForLocking
    • dbRelationships

      protected List<DbRelationship> dbRelationships
    • collectionType

      protected String collectionType
      Stores the type of collection mapped by a to-many relationship. Null for to-one relationships.
      Since:
      3.0
    • mapKey

      protected String mapKey
      Stores a property name of a target entity used to create a relationship map. Only has effect if collectionType property is set to "java.util.Map".
      Since:
      3.0
  • Constructor Details

    • ObjRelationship

      public ObjRelationship()
    • ObjRelationship

      public ObjRelationship(String name)
  • Method Details

    • getSourceEntity

      public ObjEntity getSourceEntity()
      Description copied from class: Relationship
      Returns relationship source entity.
      Overrides:
      getSourceEntity in class Relationship<ObjEntity, ObjAttribute, ObjRelationship>
    • acceptVisitor

      public <T> T acceptVisitor(ProjectNodeVisitor<T> visitor)
      Specified by:
      acceptVisitor in interface ProjectNode
      Since:
      3.1
    • encodeAsXML

      public void encodeAsXML(XMLEncoder encoder, ProjectNodeVisitor<?> delegate)
      Prints itself as XML to the provided XMLEncoder.
      Specified by:
      encodeAsXML in interface XMLSerializable
      Since:
      1.1
    • getTargetEntity

      public ObjEntity getTargetEntity()
      Returns a target ObjEntity of this relationship. Entity is looked up in the parent DataMap using "targetEntityName".
      Specified by:
      getTargetEntity in class Relationship<ObjEntity, ObjAttribute, ObjRelationship>
    • getReverseRelationshipName

      public String getReverseRelationshipName()
      Returns the name of a complementary relationship going in the opposite direction or null if it doesn't exist.
      Since:
      1.2
    • getReverseRelationship

      public ObjRelationship getReverseRelationship()
      Returns a "complementary" ObjRelationship going in the opposite direction. Returns null if no such relationship is found.
      Specified by:
      getReverseRelationship in class Relationship<ObjEntity, ObjAttribute, ObjRelationship>
    • getReverseRelationship

      public ObjRelationship getReverseRelationship(ObjEntity entity)
      Returns a relationship of the given entity that is complementary to this one, or null if it's not found.
      Since:
      5.0
      See Also:
    • getDbRelationships

      public List<DbRelationship> getDbRelationships()
      Returns an immutable list of underlying DbRelationships.
    • addDbRelationship

      public void addDbRelationship(DbRelationship dbRel)
      Appends a DbRelationship to the existing list of DbRelationships.
    • removeDbRelationship

      public void removeDbRelationship(DbRelationship dbRel)
      Removes the relationship dbRel from the list of relationships.
    • clearDbRelationships

      public void clearDbRelationships()
    • isFromFK

      public boolean isFromFK()
      Returns true if this relationship's source owns the foreign key side of the relationship.
      Since:
      5.0
    • isFlattened

      public boolean isFlattened()
      Returns true if the relationship is a "flattened" relationship. A relationship is considered "flattened" if it maps to more than one DbRelationship. Such chain of DbRelationships is also called "relationship path".
      Returns:
      flag indicating if the relationship is flattened or not.
    • isToMany

      public boolean isToMany()
      Description copied from class: Relationship
      Returns a boolean value that determines relationship multiplicity. This defines semantics of the connection between two nodes described by the source and target entities. E.g. to-many relationship between two Persistent object classes means that a source object would have a collection of target objects. This is a read-only property.
      Overrides:
      isToMany in class Relationship<ObjEntity, ObjAttribute, ObjRelationship>
    • getDeleteRule

      public DeleteRule getDeleteRule()
      Returns the deleteRule. The delete rule is a constant from the DeleteRule class, and specifies what should happen to the destination object when the source object is deleted.
      See Also:
    • setDeleteRule

      public void setDeleteRule(DeleteRule deleteRule)
      Sets the delete rule of the relationship. A null rule means that no action is taken on the target objects.
    • isUsedForLocking

      public boolean isUsedForLocking()
      Returns whether this attribute should be used for locking.
      Since:
      1.1
    • setUsedForLocking

      public void setUsedForLocking(boolean usedForLocking)
      Sets whether this attribute should be used for locking.
      Since:
      1.1
    • getDbRelationshipPath

      public CayennePath getDbRelationshipPath()
      Returns a dot-separated path over mapped DbRelationships.
      Returns:
      path or null if no db relationships set
      Since:
      1.1, 5.0 returns CayennePath instead of a plain String
    • getReverseDbRelationshipPath

      public CayennePath getReverseDbRelationshipPath() throws ExpressionException
      Returns a reversed dbRelationship path.
      Throws:
      ExpressionException
      Since:
      1.2, 5.0 returns CayennePath instead of a plain String
    • setDbRelationshipPath

      public void setDbRelationshipPath(String relationshipPath)
      Sets mapped DbRelationships as a dot-separated path.
    • setDbRelationshipPath

      public void setDbRelationshipPath(CayennePath relationshipPath)
      Sets mapped DbRelationships as a dot-separated path.
      Since:
      5.0
    • setDeferredDbRelationshipPath

      public void setDeferredDbRelationshipPath(String relationshipPath)
      Sets relationship path, but does not trigger its conversion to List<DbRelationship>.
      NOTE: this method is intended for internal usage, primarily datamap loading.
      Since:
      4.1 this method is public as it is used by new XML loaders
    • recalculateToManyValue

      public void recalculateToManyValue()
      Recalculates whether a relationship is toMany or toOne, based on the underlying db relationships.
    • toString

      public String toString()
      Description copied from class: Relationship
      Overrides Object.toString() to return informative description.
      Overrides:
      toString in class Relationship<ObjEntity, ObjAttribute, ObjRelationship>
    • getCollectionType

      public String getCollectionType()
      Returns the interface of collection mapped by a to-many relationship. Returns null for to-one relationships. Default for to-many is "java.util.List". Other possible values are "java.util.Set", "java.util.Collection", "java.util.Map".
      Since:
      3.0
    • setCollectionType

      public void setCollectionType(String collectionType)
      Since:
      3.0
    • getMapKey

      public String getMapKey()
      Returns a property name of a target entity used to create a relationship map. Only has effect if collectionType property is set to "java.util.Map".
      Returns:
      The attribute name used for the map key or null if the default (PK) is used as the map key.
      Since:
      3.0
    • setMapKey

      public void setMapKey(String mapKey)
      Since:
      3.0