public class CayenneDataObject extends PersistentObject implements DataObject, Validating
Modifier and Type | Field and Description |
---|---|
protected long |
snapshotVersion |
protected Map<String,Object> |
values |
objectContext, objectId, persistenceState
DEFAULT_VERSION
Constructor and Description |
---|
CayenneDataObject() |
Modifier and Type | Method and Description |
---|---|
void |
addToManyTarget(String relName,
DataObject value,
boolean setReverse)
Adds an object to a to-many relationship.
|
protected void |
appendProperties(StringBuffer buffer) |
long |
getSnapshotVersion()
Returns a version of a DataRow snapshot that was used to create this
object.
|
static String |
makePath(String... pathParts)
Convenience method to invoke
Cayenne.makePath(String...) from
within a DataObject subclass to create a dotted path using the generated
string constants for attributes and relationships. |
Object |
readNestedProperty(String path)
Returns a value of the property identified by a property path.
|
Object |
readProperty(String propertyName)
Returns a value of the property identified by propName.
|
Object |
readPropertyDirectly(String propName)
Returns mapped property value as curently stored in the DataObject.
|
void |
removeToManyTarget(String relName,
DataObject value,
boolean setReverse)
Removes an object from a to-many relationship.
|
void |
setObjectContext(ObjectContext objectContext) |
void |
setPersistenceState(int persistenceState) |
protected void |
setReverseRelationship(String relName,
DataObject val)
Initializes reverse relationship from object
val to this
object. |
void |
setSnapshotVersion(long snapshotVersion) |
List<? extends DataObject> |
setToManyTarget(String relName,
Collection<? extends DataObject> values,
boolean setReverse)
Sets the relationships to the specified
DataObject objects. |
void |
setToOneTarget(String relationshipName,
DataObject value,
boolean setReverse)
Sets to-one relationship to a new value.
|
String |
toString() |
StringBuffer |
toStringBuffer(StringBuffer buffer,
boolean fullDesc)
A variation of "toString" method, that may be more efficient in some
cases.
|
protected void |
unsetReverseRelationship(String relName,
DataObject val)
Removes current object from reverse relationship of object
val to this object. |
void |
validateForDelete(ValidationResult validationResult)
This implementation does nothing.
|
void |
validateForInsert(ValidationResult validationResult)
|
protected void |
validateForSave(ValidationResult validationResult)
Performs property validation of the object, appending any validation
failures to the provided validationResult object.
|
void |
validateForUpdate(ValidationResult validationResult)
|
protected void |
willConnect(String relationshipName,
Persistent object)
Called before establishing a relationship with another object.
|
void |
writeProperty(String propName,
Object val)
Sets the property to the new value.
|
void |
writePropertyDirectly(String propName,
Object val)
Modifies a value of a named property without altering the object state in any way,
and without triggering any database operations.
|
getMapKey, getObjectContext, getObjectId, getPersistenceState, setObjectId
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getObjectContext, getObjectId, getPersistenceState, setObjectId
public void setPersistenceState(int persistenceState)
setPersistenceState
in interface Persistent
setPersistenceState
in class PersistentObject
public Object readNestedProperty(String path)
Property path (or nested property) is a dot-separated path used to
traverse object relationships until the final object is found. If a null
object found while traversing path, null is returned. If a list is
encountered in the middle of the path, CayenneRuntimeException is thrown.
Unlike readPropertyDirectly(String)
, this method will resolve an
object if it is HOLLOW.
Examples:
String name = (String)artist.readNestedProperty("name");
Gallery g = (Gallery)paintingInfo.readNestedProperty("toPainting.toGallery");
String name = (String)painting.readNestedProperty("toArtist.artistName");
List exhibits = (List)painting.readNestedProperty("toGallery.exhibitArray");
List<String> names = (List<String>)artist.readNestedProperty("paintingArray.paintingName");
readNestedProperty
in interface DataObject
public Object readProperty(String propertyName)
DataObject
readProperty
in interface DataObject
public Object readPropertyDirectly(String propName)
DataObject
readPropertyDirectly
in interface DataObject
public void writeProperty(String propName, Object val)
DataObject
DataObject.setToOneTarget(String, DataObject, boolean)
.writeProperty
in interface DataObject
propName
- a name of the bean property being modified.val
- a new value of the property.public void writePropertyDirectly(String propName, Object val)
DataObject
writePropertyDirectly
in interface DataObject
public void removeToManyTarget(String relName, DataObject value, boolean setReverse)
DataObject
removeToManyTarget
in interface DataObject
public void addToManyTarget(String relName, DataObject value, boolean setReverse)
DataObject
addToManyTarget
in interface DataObject
public List<? extends DataObject> setToManyTarget(String relName, Collection<? extends DataObject> values, boolean setReverse)
DataObject
objects.
New relationships will be created with
addToManyTarget(String, org.apache.cayenne.DataObject, boolean)
,
already established relationships stay untouched. Missing relationships
will be removed with
removeToManyTarget(String, org.apache.cayenne.DataObject, boolean)
and returnd as List. You may delete them manually.
Notice: Moving an object relationship to another object, is still needing
an manually "unregister" from the first object by
removeToManyTarget(String, org.apache.cayenne.DataObject, boolean)
relName
- name of the relationvalues
- DataObject
objects of this
Collection
are set to the object. No changes will
be made to the the Collection
, a copy is used. It
is safe to pass a persisted Collection
of another
object.setReverse
- update reverse relationshipsList<? extends DataObject>
of unrelated
DataObjects. If no relationship was removed an empty List is
returned.IllegalArgumentException
- if no relationship could be read by relName, or if the passed
Collection
is null. To clear all relationships
use an empty Collection
UnsupportedOperationException
- if the relation Collection Type is neither
java.util.Collection
nor
java.util.Map
public void setToOneTarget(String relationshipName, DataObject value, boolean setReverse)
DataObject
setToOneTarget
in interface DataObject
relationshipName
- a name of the bean property being modified - same as the
name of ObjRelationship.value
- a new value of the property.setReverse
- whether to update the reverse relationship pointing from the old
and new values of the property to this object.protected void willConnect(String relationshipName, Persistent object)
protected void setReverseRelationship(String relName, DataObject val)
val
to this
object.relName
- name of relationship from this object to val
.protected void unsetReverseRelationship(String relName, DataObject val)
val
to this object.public StringBuffer toStringBuffer(StringBuffer buffer, boolean fullDesc)
protected void appendProperties(StringBuffer buffer)
public String toString()
toString
in class PersistentObject
public long getSnapshotVersion()
getSnapshotVersion
in interface DataObject
public void setSnapshotVersion(long snapshotVersion)
setSnapshotVersion
in interface DataObject
public static String makePath(String... pathParts)
Cayenne.makePath(String...)
from
within a DataObject subclass to create a dotted path using the generated
string constants for attributes and relationships.Cayenne.makePath(String...)
protected void validateForSave(ValidationResult validationResult)
public void validateForInsert(ValidationResult validationResult)
validateForSave(ValidationResult)
. CayenneDataObject
subclasses may override it providing validation logic that should be
executed for the newly created objects before saving them.validateForInsert
in interface Validating
public void validateForUpdate(ValidationResult validationResult)
validateForSave(ValidationResult)
. CayenneDataObject
subclasses may override it providing validation logic that should be
executed for the modified objects before saving them.validateForUpdate
in interface Validating
public void validateForDelete(ValidationResult validationResult)
validateForDelete
in interface Validating
public void setObjectContext(ObjectContext objectContext)
setObjectContext
in interface Persistent
setObjectContext
in class PersistentObject
Copyright © 2001–2019 Apache Cayenne. All rights reserved.