Class DeltaComputationOptionsByPosition

java.lang.Object
org.faktorips.runtime.DeltaComputationOptionsByPosition
All Implemented Interfaces:
IDeltaComputationOptions

public class DeltaComputationOptionsByPosition extends Object implements IDeltaComputationOptions
Delta computation options that create child deltas per position and don't ignore any property.
Author:
Jan Ortmann
See Also:
  • Constructor Details

    • DeltaComputationOptionsByPosition

      public DeltaComputationOptionsByPosition()
  • Method Details

    • getMethod

      public IDeltaComputationOptions.ComputationMethod getMethod(String association)
      Description copied from interface: IDeltaComputationOptions
      Returns if the delta computation computes child deltas per position/index or per object.

      1. Example for a 1-many association: A contract version A has three coverages c0, c1, and c2. A second version B of the same contract has a new coverage cNew inserted between coverage c0 and c1. The coverages c0, c1,and c2 are unchanged except for their position.

      If this method returns IDeltaComputationOptions.ComputationMethod.BY_POSITION, the following deltas are computed.

      • position 0: version A:c0, version B:c0 ⇒ empty delta
      • position 1: version A:c1, version B:cNew ⇒ changed
      • position 2: version A:c2, version B:c1 ⇒ changed
      • position 3: version A:none, version B:c2 ⇒ added
      If this method returns IDeltaComputationOptions.ComputationMethod.BY_OBJECT, the following deltas are computed.
      • c0: version A:position 0, version B:position 0 ⇒ empty delta
      • c1: version A:position 1, version B:position 2 ⇒ moved
      • c2: version A:position 2, version B:position 3 ⇒ moved
      • cNew: version A:position none, version B:position 1 ⇒ added

      2. Example for a 1-many association: Same scenario as above, but now c1 is removed and no coverage is added.

      If this method returns IDeltaComputationOptions.ComputationMethod.BY_POSITION, the following deltas are computed.

      • position 0: version A:c0, version B:c0 ⇒ empty delta
      • position 1: version A:c1, version B:v2 ⇒ changed
      • position 2: version A:c2, version B:none ⇒ removed

      If this method returns IDeltaComputationOptions.ComputationMethod.BY_OBJECT, the following deltas are computed.

      • c0: version A:position 0, version B:position 0 ⇒ empty delta
      • c1: version A:position 1, version B:position none ⇒ removed
      • c2: version A:position 2, version B:position 1 ⇒ moved
      Example for a 1-1 association: A contract version A has the insured person p0. A second contract version B has the insured person p1.

      If this method returns IDeltaComputationOptions.ComputationMethod.BY_POSITION, the following delta is computed.

      • position 0: changed
      If this method returns IDeltaComputationOptions.ComputationMethod.BY_OBJECT, the following deltas are computed.
      • p0: removed
      • p1: added
      Specified by:
      getMethod in interface IDeltaComputationOptions
    • isSame

      public boolean isSame(IModelObject object1, IModelObject object2)
      Returns true if the specified object references are identical.
      Specified by:
      isSame in interface IDeltaComputationOptions
    • ignore

      public boolean ignore(Class<?> clazz, String property)
      Returns false.
      Specified by:
      ignore in interface IDeltaComputationOptions
      Parameters:
      clazz - The class the property belongs to.
      property - The name of the property.
    • isCreateSubtreeDelta

      public boolean isCreateSubtreeDelta()
      Description copied from interface: IDeltaComputationOptions
      Controls whether delta objects for added or removed subtree elements should be created explicitly.

      This method returns true if a delta should be created for added or removed subtrees. If this method returns false a delta is only created for the root of an added or removed subtree. For non-composition associations, this property is ignored because such associated objects are never processed recursively.

      The creation of delta elements for subtree nodes is based on reflection and may cause a performance issue if used in massive delta computation with many added or removed subtrees.

      Specified by:
      isCreateSubtreeDelta in interface IDeltaComputationOptions
      Returns:
      true if a delta should be created for every element of an added or removed subtree.
    • areValuesEqual

      public boolean areValuesEqual(Class<?> modelClass, String property, Object value1, Object value2)
      Description copied from interface: IDeltaComputationOptions
      Compares two values for equality by the given model class and property, where either one or both values may be null.
      Specified by:
      areValuesEqual in interface IDeltaComputationOptions
      Parameters:
      modelClass - The class the property belongs to.
      property - The name of the property.
      value1 - The first value to compare
      value2 - The second value to compare
      Returns:
      true if the values are the same
    • ignoreAssociations

      public boolean ignoreAssociations()
      Description copied from interface: IDeltaComputationOptions
      Controls whether associations should be ignored when computing deltas. If set to true, only parent-to-child relations will be included.
      Specified by:
      ignoreAssociations in interface IDeltaComputationOptions
      Returns:
      whether associations should be ignored.