Class DeltaComputationOptionsByPosition

    • Constructor Detail

      • DeltaComputationOptionsByPosition

        public DeltaComputationOptionsByPosition()
    • Method Detail

      • getMethod

        public IDeltaComputationOptions.ComputationMethod getMethod​(java.lang.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
      • ignore

        public boolean ignore​(java.lang.Class<?> clazz,
                              java.lang.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​(java.lang.Class<?> modelClass,
                                      java.lang.String property,
                                      java.lang.Object value1,
                                      java.lang.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