public class DeltaComputationOptionsByPosition extends Object implements IDeltaComputationOptions
IDeltaComputationOptions.ComputationMethod.BY_POSITION
IDeltaComputationOptions.ComputationMethod
Constructor and Description |
---|
DeltaComputationOptionsByPosition() |
Modifier and Type | Method and Description |
---|---|
boolean |
areValuesEqual(Class<?> modelClass,
String property,
Object value1,
Object value2)
Compares two values for equality by the given model class and property, where either one or
both values may be
null . |
IDeltaComputationOptions.ComputationMethod |
getMethod(String association)
Returns if the delta computation computes child deltas per position/index or per object.
|
boolean |
ignore(Class<?> clazz,
String property)
Returns
false . |
boolean |
ignoreAssociations()
Controls whether
associations should be ignored when
computing deltas. |
boolean |
isCreateSubtreeDelta()
Controls whether delta objects for added or removed subtree elements should be created
explicitly.
|
boolean |
isSame(IModelObject object1,
IModelObject object2)
Returns
true if the specified object references are identical. |
public IDeltaComputationOptions.ComputationMethod getMethod(String association)
IDeltaComputationOptions
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. p1: removed p2: added
getMethod
in interface IDeltaComputationOptions
public boolean isSame(IModelObject object1, IModelObject object2)
true
if the specified object references are identical.isSame
in interface IDeltaComputationOptions
public boolean ignore(Class<?> clazz, String property)
false
.ignore
in interface IDeltaComputationOptions
clazz
- The class the property belongs to.property
- The name of the property.public boolean isCreateSubtreeDelta()
IDeltaComputationOptions
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.
isCreateSubtreeDelta
in interface IDeltaComputationOptions
true
if a delta should be created for every element of an added or
removed subtree.public boolean areValuesEqual(Class<?> modelClass, String property, Object value1, Object value2)
IDeltaComputationOptions
null
.areValuesEqual
in interface IDeltaComputationOptions
modelClass
- The class the property belongs to.property
- The name of the property.value1
- The first value to comparevalue2
- The second value to comparetrue
if the values are the samepublic boolean ignoreAssociations()
IDeltaComputationOptions
associations
should be ignored when
computing deltas. If set to true
, only parent-to-child relations
will be included.ignoreAssociations
in interface IDeltaComputationOptions
associations
should be ignored.Copyright © 2021. All rights reserved.