Package org.apache.cayenne.map
Class ObjEntity
- java.lang.Object
-
- org.apache.cayenne.map.Entity
-
- org.apache.cayenne.map.ObjEntity
-
- All Implemented Interfaces:
Serializable
,EventListener
,ConfigurationNode
,ObjEntityListener
,CayenneMapEntry
,XMLSerializable
public class ObjEntity extends Entity implements ObjEntityListener, ConfigurationNode
ObjEntity is a mapping descriptor for a DataObject Java class. It contains the information about the Java class itself, as well as its mapping to the DbEntity layer.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_abstract
protected Map<String,String>
attributeOverrides
protected CallbackMap
callbacks
protected String
className
protected String
clientClassName
protected String
clientSuperClassName
protected String
dbEntityName
protected static Collection<String>
DEFAULT_GENERIC_CLASSES
A collection of default "generic" entity classes excluded from class generation.static int
LOCK_TYPE_NONE
static int
LOCK_TYPE_OPTIMISTIC
protected int
lockType
protected Expression
qualifier
protected boolean
readOnly
protected boolean
serverOnly
protected String
superClassName
protected String
superEntityName
-
Fields inherited from class org.apache.cayenne.map.Entity
attributes, dataMap, name, OUTER_JOIN_INDICATOR, PATH_SEPARATOR, relationships
-
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description <T> T
acceptVisitor(ConfigurationNodeVisitor<T> visitor)
void
addAttributeOverride(String attributeName, String dbPath)
void
clearDbMapping()
Clears all the mapping between this obj entity and its current db entity.void
encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate)
Prints itself as XML to the provided XMLEncoder.ObjAttribute
getAttribute(String name)
Returns a named attribute that is either declared in this ObjEntity or is inherited.ObjAttribute
getAttributeForDbAttribute(DbAttribute dbAttribute)
Returns ObjAttribute of this entity that maps todbAttribute
parameter.Map<String,ObjAttribute>
getAttributeMap()
Returns a Map of all attributes that either belong to this ObjEntity or inherited.Collection<ObjAttribute>
getAttributes()
Returns a Collection of all attributes that either belong to this ObjEntity or inherited.CallbackMap
getCallbackMap()
Returns an object that stores callback methods of this entity.Set<String>
getCallbackMethods()
String
getClassName()
Returns the name of DataObject class described by this entity.String
getClientClassName()
Returns the name of ClientDataObject class described by this entity.ObjEntity
getClientEntity()
Returns an ObjEntity stripped of any server-side information, such as DbEntity mapping.String
getClientSuperClassName()
Returns a fully-qualified name of the client-side super class of the DataObject class.DbEntity
getDbEntity()
Returns a DbEntity associated with this ObjEntity.String
getDbEntityName()
Returns the name of the underlying DbEntity.ObjAttribute
getDeclaredAttribute(String name)
Finds attribute declared by this ObjEntity, excluding inherited attributes.Map<String,String>
getDeclaredAttributeOverrides()
Collection<ObjAttribute>
getDeclaredAttributes()
Returns a Collection of all attributes that belong to this ObjEntity, excluding inherited attributes.int
getDeclaredLockType()
Returns the type of lock used by this ObjEntity, regardless of what locking type is used by super entities.Expression
getDeclaredQualifier()
Returns a qualifier that imposes a restriction on what objects belong to this entity.Collection<ObjRelationship>
getDeclaredRelationships()
Returns a Collection of all relationships that belong to this ObjEntity, excluding inherited attributes.Class<?>
getJavaClass()
Deprecated.since 4.0 this method based on statically defined class loading algorithm is not going to work in environments like OSGi.String
getJavaClassName()
Returns a non-null class name.int
getLockType()
Returns the type of lock used by this ObjEntity.Collection<String>
getPrimaryKeyNames()
Returns the names of DbAtributes that comprise the primary key of the parent DbEntity.Collection<ObjAttribute>
getPrimaryKeys()
Returns an unmodifiable collection of ObjAttributes representing the primary key of the table described by this DbEntity.ObjRelationship
getRelationship(String name)
Returns a named Relationship that either belongs to this ObjEntity or is inherited.ObjRelationship
getRelationshipForDbRelationship(DbRelationship dbRelationship)
Returns ObjRelationship of this entity that maps todbRelationship
parameter.Map<String,ObjRelationship>
getRelationshipMap()
Returns an unmodifiable map of relationships sorted by name.Collection<ObjRelationship>
getRelationships()
Returns an unmodifiable collection of Relationships that exist in this entity.String
getSuperClassName()
Returns a fully-qualified name of the super class of the DataObject class.ObjEntity
getSuperEntity()
Returns a "super" entity in the entity inheritance hierarchy.String
getSuperEntityName()
Returns an entity name for a parent entity in the inheritance hierarchy.boolean
isAbstract()
boolean
isClientAllowed()
Returns true if this entity is allowed to be used on the client.boolean
isGeneric()
Returns whether this entity is "generic", meaning it is not mapped to a unique Java class.boolean
isReadOnly()
Returnstrue
if this ObjEntity represents a set of read-only objects.boolean
isServerOnly()
Returns true if this entity is not available on the client.boolean
isSubentityOf(ObjEntity entity)
Returns true if this entity directly or indirectly inherits from a given entity, false otherwise.PathComponent<ObjAttribute,ObjRelationship>
lastPathComponent(Expression path, Map aliasMap)
Convenience method returning the last component in the path iterator.void
objEntityAdded(EntityEvent e)
New entity has been created/added.void
objEntityChanged(EntityEvent e)
ObjEntity property changed.void
objEntityRemoved(EntityEvent e)
Entity has been removed.void
removeAttributeOverride(String attributeName)
Iterable<PathComponent<ObjAttribute,ObjRelationship>>
resolvePath(Expression pathExp, Map aliasMap)
Returns an Iterable instance over expression path components based on this entity.Iterator<CayenneMapEntry>
resolvePathComponents(Expression pathExp)
Processes expressionpathExp
and returns an Iterator of path components that contains a sequence of Attributes and Relationships.void
setAbstract(boolean isAbstract)
Sets whether this entity is abstract only.void
setClassName(String className)
Sets the name of the DataObject class described by this entity.void
setClientClassName(String clientClassName)
Sets the name of the ClientDataObject class described by this entity.void
setClientSuperClassName(String clientSuperClassName)
Sets a fully-qualified name of the client-side super class of the ClientDataObject class.void
setDbEntity(DbEntity dbEntity)
Sets the DbEntity used by this ObjEntity.void
setDbEntityName(String string)
Sets the name of underlying DbEntity.void
setDeclaredLockType(int i)
Sets the type of lock used by this ObjEntity.void
setDeclaredQualifier(Expression qualifier)
Sets a qualifier that imposes a limit on what objects belong to this entity.void
setReadOnly(boolean readOnly)
void
setServerOnly(boolean serverOnly)
Sets whether this entity is available on the client.void
setSuperClassName(String superClassName)
Sets a fully-qualified name of the super class of the DataObject class.void
setSuperEntityName(String superEntityName)
Sets an entity name for a parent entity in the inheritance hierarchy.Expression
translateToDbPath(Expression expression)
Transforms an Expression to an analogous expression in terms of the underlying DbEntity.Expression
translateToRelatedEntity(Expression expression, String relationshipPath)
Transforms an Expression rooted in this entity to an analogous expression rooted in related entity.-
Methods inherited from class org.apache.cayenne.map.Entity
addAttribute, addRelationship, clearAttributes, clearRelationships, getAnyRelationship, getDataMap, getName, getParent, removeAttribute, removeRelationship, resolvePathComponents, setDataMap, setName, setParent, toString, updateAttribute
-
-
-
-
Field Detail
-
LOCK_TYPE_NONE
public static final int LOCK_TYPE_NONE
- See Also:
- Constant Field Values
-
LOCK_TYPE_OPTIMISTIC
public static final int LOCK_TYPE_OPTIMISTIC
- See Also:
- Constant Field Values
-
DEFAULT_GENERIC_CLASSES
protected static final Collection<String> DEFAULT_GENERIC_CLASSES
A collection of default "generic" entity classes excluded from class generation.- Since:
- 1.2
-
superClassName
protected String superClassName
-
className
protected String className
-
dbEntityName
protected String dbEntityName
-
superEntityName
protected String superEntityName
-
qualifier
protected Expression qualifier
-
readOnly
protected boolean readOnly
-
lockType
protected int lockType
-
_abstract
protected boolean _abstract
-
serverOnly
protected boolean serverOnly
-
clientClassName
protected String clientClassName
-
clientSuperClassName
protected String clientSuperClassName
-
callbacks
protected CallbackMap callbacks
-
-
Constructor Detail
-
ObjEntity
public ObjEntity()
-
ObjEntity
public ObjEntity(String name)
-
-
Method Detail
-
acceptVisitor
public <T> T acceptVisitor(ConfigurationNodeVisitor<T> visitor)
- Specified by:
acceptVisitor
in interfaceConfigurationNode
- Since:
- 3.1
-
encodeAsXML
public void encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate)
Prints itself as XML to the provided XMLEncoder.- Specified by:
encodeAsXML
in interfaceXMLSerializable
- Since:
- 1.1
-
getClientEntity
public ObjEntity getClientEntity()
Returns an ObjEntity stripped of any server-side information, such as DbEntity mapping. "clientClassName" property of this entity is used to initialize "className" property of returned entity.- Since:
- 1.2
-
getJavaClassName
public String getJavaClassName()
Returns a non-null class name. For generic entities with no class specified explicitly, default DataMap superclass is used, and if it is not set - CayenneDataObject is used.- Since:
- 4.0
-
getJavaClass
@Deprecated public Class<?> getJavaClass()
Deprecated.since 4.0 this method based on statically defined class loading algorithm is not going to work in environments like OSGi.AdhocObjectFactory
should be used as it can provide the environment-specific class loading policy.Returns Java class of persistent objects described by this entity. For generic entities with no class specified explicitly, default DataMap superclass is used, and if it is not set - CayenneDataObject is used. Casts any thrown exceptions into CayenneRuntimeException.- Since:
- 1.2
-
getCallbackMap
public CallbackMap getCallbackMap()
Returns an object that stores callback methods of this entity.- Since:
- 3.0
-
getLockType
public int getLockType()
Returns the type of lock used by this ObjEntity. If this entity is not locked, this method would look in a super entity recursively, until it finds a lock somewhere in the inheritance hierarchy.- Since:
- 1.1
-
getDeclaredLockType
public int getDeclaredLockType()
Returns the type of lock used by this ObjEntity, regardless of what locking type is used by super entities.- Since:
- 1.1
-
setDeclaredLockType
public void setDeclaredLockType(int i)
Sets the type of lock used by this ObjEntity.- Since:
- 1.1
-
isGeneric
public boolean isGeneric()
Returns whether this entity is "generic", meaning it is not mapped to a unique Java class. Criterion for generic entities is that it either has no Java class mapped or its class is the same as DataMap's default superclass, or it is CayenneDataObject.- Since:
- 1.2
-
isClientAllowed
public boolean isClientAllowed()
Returns true if this entity is allowed to be used on the client. Checks that parent DataMap allows client entities and also that this entity is not explicitly disabled for the client use.- Since:
- 1.2
-
isAbstract
public boolean isAbstract()
-
setAbstract
public void setAbstract(boolean isAbstract)
Sets whether this entity is abstract only.
-
isServerOnly
public boolean isServerOnly()
Returns true if this entity is not available on the client.- Since:
- 1.2
-
setServerOnly
public void setServerOnly(boolean serverOnly)
Sets whether this entity is available on the client.- Since:
- 1.2
-
getDeclaredQualifier
public Expression getDeclaredQualifier()
Returns a qualifier that imposes a restriction on what objects belong to this entity. Returned qualifier is the one declared in this entity, and does not include qualifiers declared in super entities.- Since:
- 1.1
-
getSuperEntityName
public String getSuperEntityName()
Returns an entity name for a parent entity in the inheritance hierarchy.- Since:
- 1.1
-
setDeclaredQualifier
public void setDeclaredQualifier(Expression qualifier)
Sets a qualifier that imposes a limit on what objects belong to this entity.- Since:
- 1.1
-
setSuperEntityName
public void setSuperEntityName(String superEntityName)
Sets an entity name for a parent entity in the inheritance hierarchy.- Since:
- 1.1
-
getClassName
public String getClassName()
Returns the name of DataObject class described by this entity.
-
setClassName
public void setClassName(String className)
Sets the name of the DataObject class described by this entity.
-
getClientClassName
public String getClientClassName()
Returns the name of ClientDataObject class described by this entity.- Since:
- 1.2
-
setClientClassName
public void setClientClassName(String clientClassName)
Sets the name of the ClientDataObject class described by this entity.- Since:
- 1.2
-
getSuperClassName
public String getSuperClassName()
Returns a fully-qualified name of the super class of the DataObject class. This value is used as a hint for class generation. If the entity inherits from another entity, a superclass is the class of that entity.
-
setSuperClassName
public void setSuperClassName(String superClassName)
Sets a fully-qualified name of the super class of the DataObject class. This value is used as a hint for class generation.An attempt to set superclass on an inherited entity has no effect, since a class of the super entity is always used as a superclass.
-
getClientSuperClassName
public String getClientSuperClassName()
Returns a fully-qualified name of the client-side super class of the DataObject class. This value is used as a hint for class generation. If the entity inherits from another entity, a superclass is the class of that entity.- Since:
- 1.2
-
setClientSuperClassName
public void setClientSuperClassName(String clientSuperClassName)
Sets a fully-qualified name of the client-side super class of the ClientDataObject class. This value is used as a hint for class generation.An attempt to set superclass on an inherited entity has no effect, since a class of the super entity is always used as a superclass.
- Since:
- 1.2
-
getSuperEntity
public ObjEntity getSuperEntity()
Returns a "super" entity in the entity inheritance hierarchy.- Since:
- 1.1
-
getDbEntity
public DbEntity getDbEntity()
Returns a DbEntity associated with this ObjEntity.
-
setDbEntity
public void setDbEntity(DbEntity dbEntity)
Sets the DbEntity used by this ObjEntity.Setting DbEntity on an inherited entity has no effect, since a class of the super entity is always used as a superclass.
-
getPrimaryKeys
public Collection<ObjAttribute> getPrimaryKeys()
Returns an unmodifiable collection of ObjAttributes representing the primary key of the table described by this DbEntity. Note that since PK is very often not an object property, the returned collection may contain "synthetic" ObjAttributes that are created on the fly and are not a part of ObjEntity and will not be a part of entity.getAttributes().- Since:
- 3.0
-
getAttribute
public ObjAttribute getAttribute(String name)
Returns a named attribute that is either declared in this ObjEntity or is inherited. In any case returned attribute 'getEntity' method will return this entity. Returns null if no matching attribute is found.- Overrides:
getAttribute
in classEntity
-
getAttributeMap
public Map<String,ObjAttribute> getAttributeMap()
Returns a Map of all attributes that either belong to this ObjEntity or inherited.- Overrides:
getAttributeMap
in classEntity
-
addAttributeOverride
public void addAttributeOverride(String attributeName, String dbPath)
- Since:
- 3.0
-
removeAttributeOverride
public void removeAttributeOverride(String attributeName)
- Since:
- 4.0
-
getAttributes
public Collection<ObjAttribute> getAttributes()
Returns a Collection of all attributes that either belong to this ObjEntity or inherited.- Overrides:
getAttributes
in classEntity
-
getDeclaredAttributes
public Collection<ObjAttribute> getDeclaredAttributes()
Returns a Collection of all attributes that belong to this ObjEntity, excluding inherited attributes.- Since:
- 1.1
-
getDeclaredAttribute
public ObjAttribute getDeclaredAttribute(String name)
Finds attribute declared by this ObjEntity, excluding inherited attributes.- Parameters:
name
- of the attribute- Returns:
- declared attribute or null if no attribute is found
- Since:
- 4.0
- See Also:
getAttribute(String)
-
getRelationship
public ObjRelationship getRelationship(String name)
Returns a named Relationship that either belongs to this ObjEntity or is inherited. Returns null if no matching attribute is found.- Overrides:
getRelationship
in classEntity
-
getRelationshipMap
public Map<String,ObjRelationship> getRelationshipMap()
Description copied from class:Entity
Returns an unmodifiable map of relationships sorted by name.- Overrides:
getRelationshipMap
in classEntity
-
getRelationships
public Collection<ObjRelationship> getRelationships()
Description copied from class:Entity
Returns an unmodifiable collection of Relationships that exist in this entity.- Overrides:
getRelationships
in classEntity
-
getDeclaredRelationships
public Collection<ObjRelationship> getDeclaredRelationships()
Returns a Collection of all relationships that belong to this ObjEntity, excluding inherited attributes.- Since:
- 1.1
-
getAttributeForDbAttribute
public ObjAttribute getAttributeForDbAttribute(DbAttribute dbAttribute)
Returns ObjAttribute of this entity that maps todbAttribute
parameter. Returns null if no such attribute is found.
-
getPrimaryKeyNames
public Collection<String> getPrimaryKeyNames()
Returns the names of DbAtributes that comprise the primary key of the parent DbEntity.- Since:
- 3.0
-
getRelationshipForDbRelationship
public ObjRelationship getRelationshipForDbRelationship(DbRelationship dbRelationship)
Returns ObjRelationship of this entity that maps todbRelationship
parameter. Returns null if no such relationship is found.
-
clearDbMapping
public void clearDbMapping()
Clears all the mapping between this obj entity and its current db entity. Clears mapping between entities, attributes and relationships.
-
isReadOnly
public boolean isReadOnly()
Returnstrue
if this ObjEntity represents a set of read-only objects.- Returns:
- boolean
-
setReadOnly
public void setReadOnly(boolean readOnly)
-
isSubentityOf
public boolean isSubentityOf(ObjEntity entity)
Returns true if this entity directly or indirectly inherits from a given entity, false otherwise.- Since:
- 1.1
-
lastPathComponent
public PathComponent<ObjAttribute,ObjRelationship> lastPathComponent(Expression path, Map aliasMap)
Description copied from class:Entity
Convenience method returning the last component in the path iterator. If the last component is an alias, it is fully resolved down to the last ObjRelationship.- Overrides:
lastPathComponent
in classEntity
- Since:
- 3.0
-
resolvePath
public Iterable<PathComponent<ObjAttribute,ObjRelationship>> resolvePath(Expression pathExp, Map aliasMap)
Returns an Iterable instance over expression path components based on this entity.- Specified by:
resolvePath
in classEntity
- Since:
- 3.0
-
resolvePathComponents
public Iterator<CayenneMapEntry> resolvePathComponents(Expression pathExp) throws ExpressionException
Description copied from class:Entity
Processes expressionpathExp
and returns an Iterator of path components that contains a sequence of Attributes and Relationships. Note that if path is invalid and can not be resolved from this entity, this method will still return an Iterator, but an attempt to read the first invalid path component will result in ExpressionException.- Specified by:
resolvePathComponents
in classEntity
- Throws:
ExpressionException
-
translateToDbPath
public Expression translateToDbPath(Expression expression)
Transforms an Expression to an analogous expression in terms of the underlying DbEntity.- Since:
- 1.1
-
translateToRelatedEntity
public Expression translateToRelatedEntity(Expression expression, String relationshipPath)
Transforms an Expression rooted in this entity to an analogous expression rooted in related entity.- Specified by:
translateToRelatedEntity
in classEntity
- Since:
- 1.1
-
getDbEntityName
public String getDbEntityName()
Returns the name of the underlying DbEntity.- Since:
- 1.1
-
setDbEntityName
public void setDbEntityName(String string)
Sets the name of underlying DbEntity.- Since:
- 1.1
-
objEntityChanged
public void objEntityChanged(EntityEvent e)
ObjEntity property changed. May be name, attribute or relationship added or removed, etc. Attribute and relationship property changes are handled in respective listeners.- Specified by:
objEntityChanged
in interfaceObjEntityListener
- Since:
- 1.2
-
objEntityAdded
public void objEntityAdded(EntityEvent e)
New entity has been created/added.- Specified by:
objEntityAdded
in interfaceObjEntityListener
-
objEntityRemoved
public void objEntityRemoved(EntityEvent e)
Entity has been removed.- Specified by:
objEntityRemoved
in interfaceObjEntityListener
-
-