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 TypeMethodDescriptionvoidclear()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.booleanbooleanisCreating(Object o) booleanbooleanisReadOnly(Object o) booleanisReadWrite(Object object) Returns true if the specified object is tracked as a read-write object.booleanisTracking(Object object) Determine whether an object is being tracked within this tracking manager.booleanisUpdateCacheNeeded(Object object) Returns true if the cache needs to be updated for the given object.booleanisUpdatePersistNeeded(Object object) Returns true if the given object needs to be written to the persistence store.voidmarkCreated(Object object) voidmarkCreating(Object object) voidmarkDeleted(Object object) voidvoidmarkUpdateCacheNeeded(Object object) voidmarkUpdatePersistNeeded(Object object) Returns the object's state.intintvoidremoveOIDForObject(LockEngine engine, OID oid) For a given lockengine and OID, remove references to an object in the maps.voidsetOIDForObject(Object obj, LockEngine engine, OID oid) For a given lockengine and OID, set the object in the maps.voidtrackObject(ClassMolder molder, OID oid, Object object) voidtrackOIDChange(Object obj, LockEngine engine, OID oldoid, OID newoid) Record changes to an OID by re-tracking the OID information.voidvoidunmarkDeleted(Object object) voidvoidunmarkUpdateCacheNeeded(Object object) voidunmarkUpdatePersistNeeded(Object object) voiduntrackObject(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
-