Class ObjectTracker

java.lang.Object
org.castor.persist.ObjectTracker

public final class ObjectTracker extends Object
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 Details

    • ObjectTracker

      public ObjectTracker()
  • Method Details

    • getObjectForOID

      public Object getObjectForOID(LockEngine engine, OID oid, boolean allowReadOnly)
      Retrieve the object for a given OID.
      Parameters:
      engine - Lock engine mapped to oid
      oid - Object id specified
      allowReadOnly - Allow (or ignore, if false) read-only objects to be returned.
      Returns:
      The object associated with this oid.
    • isReadWrite

      public boolean isReadWrite(Object object)
      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

      public boolean isUpdateCacheNeeded(Object object)
      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

      public boolean isUpdatePersistNeeded(Object object)
      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

      public void markUpdateCacheNeeded(Object object)
    • unmarkUpdateCacheNeeded

      public void unmarkUpdateCacheNeeded(Object object)
    • getObjectsWithUpdateCacheNeededState

      public Collection getObjectsWithUpdateCacheNeededState()
    • markUpdatePersistNeeded

      public void markUpdatePersistNeeded(Object object)
    • unmarkUpdatePersistNeeded

      public void unmarkUpdatePersistNeeded(Object object)
    • markCreating

      public void markCreating(Object object) throws PersistenceException
      Throws:
      PersistenceException
    • markCreated

      public void markCreated(Object object)
    • markDeleted

      public void markDeleted(Object object)
    • unmarkDeleted

      public void unmarkDeleted(Object object)
    • isTracking

      public boolean isTracking(Object object)
      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

      public void trackOIDChange(Object obj, LockEngine engine, OID oldoid, OID newoid)
      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 OID
      oldoid - The old oid.
      newoid - The new oid.
    • setOIDForObject

      public void setOIDForObject(Object obj, LockEngine engine, OID oid)
      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 track
      engine - The engine to which the OID belongs
      oid - The OID of the object to track
    • removeOIDForObject

      public void removeOIDForObject(LockEngine engine, OID oid)
      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 for
      oid - The oid of the object to stop tracking on.
    • isCreating

      public boolean isCreating(Object o)
    • isCreated

      public boolean isCreated(Object o)
    • isDeleted

      public boolean isDeleted(Object o)
    • getMolderForObject

      public ClassMolder getMolderForObject(Object o)
      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

      public Collection getReadWriteObjects()
      Retrieve the list of all read-write objects being tracked.
      Returns:
      List of all read-write objects being currently tracked.
    • getReadOnlyObjects

      public Collection getReadOnlyObjects()
      Retrieve the list of all read-only objects being tracked.
      Returns:
      List of all read-only objects being currently tracked
    • getObjectsWithCreatingStateSortedByLowestMolderPriority

      public Collection 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

      public Collection 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

      public void trackObject(ClassMolder molder, OID oid, Object object)
    • untrackObject

      public void untrackObject(Object object)
    • getOIDForObject

      public OID getOIDForObject(Object o)
    • isReadOnly

      public boolean isReadOnly(Object o)
    • markReadOnly

      public void markReadOnly(Object o)
    • unmarkReadOnly

      public void unmarkReadOnly(Object o)
    • readOnlySize

      public int readOnlySize()
    • readWriteSize

      public int readWriteSize()
    • allObjectStates

      public String allObjectStates()
    • objectStateToString

      public String objectStateToString(Object obj)
      Returns the object's state.
      Parameters:
      obj - Object for which its state should be output.
      Returns:
      The state of the object specified