Class 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.)

    • Method Detail

      • 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
      • 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:
        getChangedDataObjects()
      • 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:
        getChangedDataObjects()
      • 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:
        getChangedDataObjects()
      • 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:
        getChangedDataObjects()
      • 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 -
      • 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:
        beginLogging(), isLogging()
      • 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:
        getChangedDataObjects()
      • 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:
        beginLogging(), endLogging(), isLogging()
      • 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