Package org.castor.persist
Class ObjectTracker
java.lang.Object
org.castor.persist.ObjectTracker
A transaction records all objects accessed during the lifetime
of the transaction in this record (queries and created).
This information, stored on a per-object basis within the
ObjectTracker, covers the database engine used
to persist the object, the object's OID, the object itself, and
whether the object has been deleted in this transaction,
created in this transaction.
Sidenote: Objects identified as read only are not updated
when the transaction commits.
- Since:
- 0.9.9
- Version:
- $Revision: 7951 $ $Date: 2006-04-29 09:15:50 -0600 (Sat, 29 Apr 2006) $
- Author:
- Ralf Joachim, Werner Guttmann, Gregory Block
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Reset ObjectTracker's state.Retrieve the ClassMolder associated with a specific object.getObjectForOID
(LockEngine engine, OID oid, boolean allowReadOnly) Retrieve the object for a given OID.Retrieve the list of 'creating' objects (to be created), sorted in the order they should be created.Retrieve the list of 'deleted' objects, sorted in the order they should be deleted.Retrieve the list of all read-only objects being tracked.Retrieve the list of all read-write objects being tracked.boolean
boolean
isCreating
(Object o) boolean
boolean
isReadOnly
(Object o) boolean
isReadWrite
(Object object) Returns true if the specified object is tracked as a read-write object.boolean
isTracking
(Object object) Determine whether an object is being tracked within this tracking manager.boolean
isUpdateCacheNeeded
(Object object) Returns true if the cache needs to be updated for the given object.boolean
isUpdatePersistNeeded
(Object object) Returns true if the given object needs to be written to the persistence store.void
markCreated
(Object object) void
markCreating
(Object object) void
markDeleted
(Object object) void
void
markUpdateCacheNeeded
(Object object) void
markUpdatePersistNeeded
(Object object) Returns the object's state.int
int
void
removeOIDForObject
(LockEngine engine, OID oid) For a given lockengine and OID, remove references to an object in the maps.void
setOIDForObject
(Object obj, LockEngine engine, OID oid) For a given lockengine and OID, set the object in the maps.void
trackObject
(ClassMolder molder, OID oid, Object object) void
trackOIDChange
(Object obj, LockEngine engine, OID oldoid, OID newoid) Record changes to an OID by re-tracking the OID information.void
void
unmarkDeleted
(Object object) void
void
unmarkUpdateCacheNeeded
(Object object) void
unmarkUpdatePersistNeeded
(Object object) void
untrackObject
(Object object)
-
Constructor Details
-
ObjectTracker
public ObjectTracker()
-
-
Method Details
-
getObjectForOID
Retrieve the object for a given OID.- Parameters:
engine
- Lock engine mapped to oidoid
- Object id specifiedallowReadOnly
- Allow (or ignore, if false) read-only objects to be returned.- Returns:
- The object associated with this oid.
-
isReadWrite
Returns true if the specified object is tracked as a read-write object.- Parameters:
object
- Object instance for which it should be determined whether it's tracked as read-write object- Returns:
- True if the specified object is tracked as a read-write object
-
unmarkAllDeleted
public void unmarkAllDeleted() -
clear
public void clear()Reset ObjectTracker's state. -
isUpdateCacheNeeded
Returns true if the cache needs to be updated for the given object.- Parameters:
object
- An object instance- Returns:
- true if the cache needs to be updated; false, otherwise.
-
isUpdatePersistNeeded
Returns true if the given object needs to be written to the persistence store.- Parameters:
object
- An object instance- Returns:
- true if the object needs to be written to the persistence store
-
markUpdateCacheNeeded
-
unmarkUpdateCacheNeeded
-
getObjectsWithUpdateCacheNeededState
-
markUpdatePersistNeeded
-
unmarkUpdatePersistNeeded
-
markCreating
- Throws:
PersistenceException
-
markCreated
-
markDeleted
-
unmarkDeleted
-
isTracking
Determine whether an object is being tracked within this tracking manager.- Parameters:
object
- The object for which it should be determined whether it is tracked.- Returns:
- True if the object specified is tracked; false otherwise
-
trackOIDChange
Record changes to an OID by re-tracking the OID information. When an object's OID can change, ensure that the object is retracked.- Parameters:
obj
- The object to record a tracking change for.engine
- The engine which is responsible for the old and new OIDoldoid
- The old oid.newoid
- The new oid.
-
setOIDForObject
For a given lockengine and OID, set the object in the maps. Note that an OID can only be accessed via the LockManager which manages it.- Parameters:
obj
- The object to trackengine
- The engine to which the OID belongsoid
- The OID of the object to track
-
removeOIDForObject
For a given lockengine and OID, remove references to an object in the maps. This eliminates both the engine->oid->object and the object->oid.- Parameters:
engine
- The engine to stop tracking the OID foroid
- The oid of the object to stop tracking on.
-
isCreating
-
isCreated
-
isDeleted
-
getMolderForObject
Retrieve the ClassMolder associated with a specific object.- Parameters:
o
- Object instance the associated ClassMolder should be retrieved.- Returns:
- The ClassMolder instance associated with the Object instance specified.
-
getReadWriteObjects
Retrieve the list of all read-write objects being tracked.- Returns:
- List of all read-write objects being currently tracked.
-
getReadOnlyObjects
Retrieve the list of all read-only objects being tracked.- Returns:
- List of all read-only objects being currently tracked
-
getObjectsWithCreatingStateSortedByLowestMolderPriority
Retrieve the list of 'creating' objects (to be created), sorted in the order they should be created.- Returns:
- List of objects to be created, sorted in the order they should be created.
-
getObjectsWithDeletedStateSortedByHighestMolderPriority
Retrieve the list of 'deleted' objects, sorted in the order they should be deleted.- Returns:
- List of 'deleted' objects, sorted in the order they should be deleted.
-
trackObject
-
untrackObject
-
getOIDForObject
-
isReadOnly
-
markReadOnly
-
unmarkReadOnly
-
readOnlySize
public int readOnlySize() -
readWriteSize
public int readWriteSize() -
allObjectStates
-
objectStateToString
Returns the object's state.- Parameters:
obj
- Object for which its state should be output.- Returns:
- The state of the object specified
-