Class SDOChangeSummary

java.lang.Object
org.eclipse.persistence.sdo.SDOChangeSummary
All Implemented Interfaces:
ChangeSummary

public class SDOChangeSummary extends Object implements ChangeSummary

Purpose:A change summary is used to record changes to DataObjects.

Responsibilities:

  • Track changes to DataObjects that are within the scope of this ChangeSummary (based on the root object of the Changesummary).
  • Track if those DataObjects are created, modified or deleted.
  • Return the values at the time that ChangeSummary logging was turned on for DataObjects in scope.

This class is implemented as a Memento (283) [GOF - Gamma, Helm, Johnson, Vlissides] Design Pattern.
(Without violating encapsulation, capture and externalize an object's internal state so that the object can be restored to this state later.)

The class also realizes some aspects of the Command (233) Pattern - the undo-able operation part (from the first change).
(Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undo-able operations.)

  • Constructor Details

  • Method Details

    • isLogging

      public boolean isLogging()
      Indicates whether change logging is on (true) or off (false).
      Specified by:
      isLogging in interface ChangeSummary
      Returns:
      true if change logging is on.
      See Also:
    • setCreated

      public void setCreated(DataObject anObject, boolean created)
      INTERNAL: Set flag created value.
      Parameters:
      created - flag created's new value.
    • setDeleted

      public boolean setDeleted(DataObject anObject, boolean deleted)
      INTERNAL: Set flag modified value.
      Parameters:
      deleted - flag modified's new value.
    • setOldContainer

      public void setOldContainer(SDODataObject aKey, DataObject aValue)
      INTERNAL:
      Parameters:
      aKey -
      aValue - void
    • getOldContainers

      public Map getOldContainers()
      INTERNAL:
      Returns:
    • setOldContainmentProperty

      public void setOldContainmentProperty(SDODataObject aKey, Property aValue)
      INTERNAL:
      Parameters:
      aKey - DataObject
      aValue - Property void
    • setOldSequence

      public void setOldSequence(SDODataObject aKey, Sequence aValue)
      INTERNAL:
      Parameters:
      aKey - DataObject
      aValue - Property void
    • getDataGraph

      public DataGraph getDataGraph()
      Returns the data graph associated with this change summary or null.
      Specified by:
      getDataGraph in interface ChangeSummary
      Returns:
      the data graph.
      See Also:
    • getChangedDataObjects

      public List getChangedDataObjects()
      Returns a list consisting of all the data objects that have been changed while logging.

      The new and modified objects in the List are references to objects associated with this ChangeSummary. The deleted objects in the List are references to objects at the time that event logging was enabled;

      Each changed object must have exactly one of the following methods return true: isCreated, isDeleted, or isModified.

      Specified by:
      getChangedDataObjects in interface ChangeSummary
      Returns:
      a list of changed data objects.
      See Also:
    • getModified

      public List getModified()
      INTERNAL: Return all modified objects
      Returns:
      Set
    • getDeleted

      public List getDeleted()
      INTERNAL: Return all deleted objects
      Returns:
      Set
    • getCreated

      public List getCreated()
      INTERNAL: Return all created objects
      Returns:
      Set
    • isCreated

      public boolean isCreated(DataObject dataObject)
      Returns whether or not the specified data object was created while logging. Any object that was added to the scope but was not in the scope when logging began, will be considered created.
      Specified by:
      isCreated in interface ChangeSummary
      Parameters:
      dataObject - the data object in question.
      Returns:
      true if the specified data object was created.
      See Also:
    • isDeleted

      public boolean isDeleted(DataObject dataObject)
      Returns whether or not the specified data object was deleted while logging. Any object that is not in scope but was in scope when logging began will be considered deleted.
      Specified by:
      isDeleted in interface ChangeSummary
      Parameters:
      dataObject - the data object in question.
      Returns:
      true if the specified data object was deleted.
      See Also:
    • isModified

      public boolean isModified(DataObject dataObject)
      Returns whether or not the specified data object was updated while logging. An object that was contained in the scope when logging began and remains in the scope when logging ends will be considered potentially modified.

      An object considered modified must have at least one old value setting.

      Specified by:
      isModified in interface ChangeSummary
      Parameters:
      dataObject - the data object in question.
      Returns:
      true if the specified data object was modified.
      See Also:
    • getOldValues

      public List getOldValues(DataObject dataObject)
      Returns a list of settings that represent the property values of the given dataObject at the point when logging began.

      In the case of a deleted object, the List will include settings for all the Properties.

      An old value setting indicates the value at the point logging begins. A setting is only produced for modified objects if either the old value differs from the current value or if the isSet differs from the current value.

      No settings are produced for created objects.

      Specified by:
      getOldValues in interface ChangeSummary
      Parameters:
      dataObject - the object in question.
      Returns:
      a list of settings.
      See Also:
    • getUnsetProps

      public List getUnsetProps(DataObject dataObject)
      INTERNAL:
      Parameters:
      dataObject -
      Returns:
    • getUnsetOCPropertiesMap

      public Map getUnsetOCPropertiesMap()
      INTERNAL: Return the entire HashMap of lists of open content properties that were unset keyed on dataObject
      Returns:
    • getUnsetOCProperties

      public List getUnsetOCProperties(DataObject dataObject)
      INTERNAL: Return a List containing all open content properties that were unset
      Parameters:
      dataObject -
      Returns:
    • setUnsetOCProperty

      public void setUnsetOCProperty(DataObject dataObject, Property ocKey)
      INTERNAL: Add an open content property that has been unset to the list keyed on dataObject
      Parameters:
      dataObject -
      ocKey -
    • removeUnsetOCProperty

      public void removeUnsetOCProperty(DataObject dataObject, Property ocKey)
      INTERNAL: Delete an open content property from the list of unset oc properties keyed on dataObject
      Parameters:
      dataObject -
      ocKey -
    • beginLogging

      public void beginLogging()
      Clears the List of changes and turns change logging on. No operation occurs if logging is already on.
      Specified by:
      beginLogging in interface ChangeSummary
      See Also:
    • resumeLogging

      public void resumeLogging()
      INTERNAL: Turn both logging flags back on.
    • endLogging

      public void endLogging()
      An implementation that requires logging may throw an UnsupportedOperationException. Turns change logging off. No operation occurs if logging is already off.
      Specified by:
      endLogging in interface ChangeSummary
      See Also:
    • pauseLogging

      public void pauseLogging()
      INTERNAL: Turn both logging flags on.
    • getRootObject

      public SDODataObject getRootObject()
      Returns the ChangeSummary root DataObject - the object from which changes are tracked. When a DataGraph is used, this is the same as getDataGraph().getRootObject().
      Specified by:
      getRootObject in interface ChangeSummary
      Returns:
      the ChangeSummary root DataObject
    • getOldValue

      public ChangeSummary.Setting getOldValue(DataObject dataObject, Property property)
      Returns a setting for the specified property representing the property value of the given dataObject at the point when logging began.

      Returns null if the property was not modified and has not been deleted.

      Specified by:
      getOldValue in interface ChangeSummary
      Parameters:
      dataObject - the object in question.
      property - the property of the object.
      Returns:
      the Setting for the specified property.
      See Also:
    • getOldContainer

      public SDODataObject getOldContainer(DataObject dataObject)
      Returns the value of the container data object at the point when logging began.
      Specified by:
      getOldContainer in interface ChangeSummary
      Parameters:
      dataObject - the object in question.
      Returns:
      the old container data object.
    • getOldContainmentProperty

      public SDOProperty getOldContainmentProperty(DataObject dataObject)
      Returns the value of the containment property data object property at the point when logging began.
      Specified by:
      getOldContainmentProperty in interface ChangeSummary
      Parameters:
      dataObject - the object in question.
      Returns:
      the old containment property.
    • getOldSequence

      public SDOSequence getOldSequence(DataObject dataObject)
      Returns the value of the sequence for the data object at the point when logging began.
      Specified by:
      getOldSequence in interface ChangeSummary
      Parameters:
      dataObject - the object in question.
      Returns:
      the old containment property.
    • undoChanges

      public void undoChanges()
      This method is intended for use by service implementations only. Undoes all changes in the log to restore the tree of DataObjects to its original state when logging began. isLogging() is unchanged. The log is cleared.
      Specified by:
      undoChanges in interface ChangeSummary
      See Also:
    • setRootDataObject

      public void setRootDataObject(DataObject dataObject)
      INTERNAL: Set the root DataObject for this ChangeSummary.
      Parameters:
      dataObject - the root of DataObject tree this ChangeSummary belongs to
    • setLogging

      public void setLogging(boolean logging)
      INTERNAL: Used by CopyHelper to set logging when creating a copy of a changesummary
      Parameters:
      logging - logging status
    • setHelperContext

      public void setHelperContext(HelperContext helperContext)
      INTERNAL: Set the helperContext if the default SDOChangeSummary constructor was used
      Parameters:
      helperContext -
    • setCreatedXPaths

      public void setCreatedXPaths(List createdXPathsList)
      INTERNAL:
      Parameters:
      createdXPathsList -
    • getCreatedXPaths

      public List getCreatedXPaths()
      INTERNAL:
      Returns:
    • isLoggingMapping

      public boolean isLoggingMapping()
      INTERNAL: Return the logging state during mapping operations
      Returns:
      logging state
    • setModifiedDoms

      public void setModifiedDoms(List modifiedDomsList)
      INTERNAL:
      Parameters:
      modifiedDomsList -
    • getModifiedDoms

      public List getModifiedDoms()
      INTERNAL:
      Returns:
    • setDeletedXPaths

      public void setDeletedXPaths(List deletedXPathsList)
      INTERNAL: The deletedXPaths field is picked up reflectively during marshal/unmarshal operations.
      Parameters:
      deletedXPathsList -
    • getOldContainmentProperty

      public Map getOldContainmentProperty()
    • getOldContainer

      public Map getOldContainer()
    • wasSet

      public boolean wasSet(DataObject dataObject, Property property)
      INTERNAL:
      Parameters:
      dataObject -
      property -
      Returns:
    • getPropertyInternal

      public Object getPropertyInternal(DataObject dataObject, Property property)
      INTERNAL:
      Parameters:
      dataObject -
      property -
      Returns:
    • setPropertyInternal

      public void setPropertyInternal(DataObject dataObject, Property property, Object value)
      INTERNAL:
      Parameters:
      dataObject -
      property -
      value -
    • getOriginalValueStores

      public Map getOriginalValueStores()
      INTERNAL: Return the map of original ValueStores keyed on
      Returns:
    • isDirty

      public boolean isDirty(DataObject dataObject)
      INTERNAL: Return whether the dataObject has been modified.
      Parameters:
      dataObject -
      Returns:
    • isDirty

      public boolean isDirty(ListWrapper aListWrapper)
      INTERNAL: Return whether the aListWrapper has been modified.
      Parameters:
      aListWrapper -
      Returns:
    • isDirty

      public boolean isDirty(SDOSequence aSequence)
      INTERNAL: Return whether the aSequence has been modified.
      Parameters:
      aSequence -
      Returns:
    • unsetPropertyInternal

      public void unsetPropertyInternal(DataObject dataObject, Property property)
      INTERNAL:
      Parameters:
      dataObject -
      property -
    • getOriginalElements

      public Map getOriginalElements()
      INTERNAL:
      Returns:
      Map of original elements, key and value are both listwrappers
    • getDeepCopies

      public Map getDeepCopies()
      INTERNAL:
      Returns:
      Map of deep copies of DataObjects key is original dataobject
    • getReverseDeletedMap

      public Map getReverseDeletedMap()
      INTERNAL:
      Returns:
      Map of deep copies of DataObjects key is copy of dataobject
    • getOriginalSequences

      public Map getOriginalSequences()
      INTERNAL: Return a map of original sequences keyed on DataObject.
      Returns:
      Map of old Sequences
    • getOldSequences

      public Map getOldSequences()
      INTERNAL: Return a map of original sequences keyed on DataObject (cached values).
      Returns:
      Map of old Sequences that have deep copies of all DataObjects
    • toString

      public String toString()
      INTERNAL: Return the string representation of the receiver.
      Overrides:
      toString in class Object