Package com.orchestranetworks.service.comparison

# Class DifferenceHelper

java.lang.Object
com.orchestranetworks.service.comparison.DifferenceHelper

public final class DifferenceHelper extends Object
This class is the common entry point for performing data comparisons.

### Resolved mode

When resolved mode is used:

1. Inheritance is taken into account, meaning that if two values are inherited and different, a difference is detected
2. Computed fields are also taken into account.

Conversely, disabling the resolved mode means to focus on the raw persisted data:

1. Inheritance is not taken into account. If two values are both inherited, then they are not considered to be different because they are both equal to `AdaptationValue.INHERIT_VALUE` (result is independent of the values actually inherited).
2. Computed fields are ignored.

### Node comparison modes

A terminal node can have a comparison mode, which controls whether or not it is included during comparisons. Node that have the comparison mode `ignored` are not omitted from comparisons, even if their values contain differences.

See Also:
  - `NodeComparisonMode`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DifferenceHelper()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DifferenceBetweenTables`
  `compareAdaptationTables(AdaptationTable tableOnLeft, AdaptationTable tableOnRight, boolean isResolvedMode)`
  Performs a comparison between two tables.
  `static DifferenceBetweenInstances`
  `compareDatasetByDate(Adaptation aDataset, boolean isResolvedMode, Date aStartDate, Date aEndDate)`
  Performs a comparison between two transaction dates for a dataset and returns the result.
  `static DifferenceBetweenInstances`
  `compareDatasetByDate(Adaptation aDataset, Date aStartDate, Date aEndDate)`
  Performs a comparison between two transaction dates for a dataset and returns the result.The comparison operates in unresolved mode by default.
  `static DifferenceBetweenInstances`
  `compareDatasetByTransactionID(Adaptation aDataset, boolean isResolvedMode, long aStartTransactionId, long aEndTransactionId)`
  Performs a comparison between two transaction for a dataset and returns the result.
  `static DifferenceBetweenInstances`
  `compareDatasetByTransactionID(Adaptation aDataset, long aStartTransactionId, long aEndTransactionId)`
  Performs a comparison between two transaction for a dataset and returns the result.The comparison operates in unresolved mode by default.
  `static DifferenceBetweenHomes`
  `compareDataspaceByDate(AdaptationHome aDataspace, boolean isResolvedMode, Date aStartDate, Date aEndDate)`
  Performs a comparison between two transaction dates for a dataspace and returns the result.
  `static DifferenceBetweenHomes`
  `compareDataspaceByDate(AdaptationHome aDataspace, Date aStartDate, Date aEndDate)`
  Performs a comparison between two transaction dates for a dataspace and returns the result.The comparison operates in unresolved mode by default.
  `static DifferenceBetweenHomes`
  `compareDataspaceByTransactionID(AdaptationHome aDataspace, boolean isResolvedMode, long aStartTransactionId, long aEndTransactionId)`
  Performs a comparison between two transactions for a dataspace or a snapshot and returns the result.
  `static DifferenceBetweenHomes`
  `compareDataspaceByTransactionID(AdaptationHome aDataspace, long aStartTransactionId, long aEndTransactionId)`
  Performs a comparison between two transactions for a dataspace or a snapshot and returns the result.The comparison operates in unresolved mode by default.
  `static DifferenceBetweenHomes`
  `compareHomes(AdaptationHome leftHome, AdaptationHome rightHome, boolean isResolvedMode)`
  Compares two dataspaces or snapshots and returns the result.
  `static DifferenceBetweenInstances`
  `compareInstances(Adaptation instanceOnLeft, Adaptation instanceOnRight, boolean isResolvedMode)`
  Performs a comparison between two datasets.
  `static DifferenceBetweenOccurrences`
  `compareOccurrences(Adaptation recordOnLeft, Adaptation recordOnRight, boolean isResolvedMode)`
  Performs a comparison between two records.
  `static DifferenceBetweenOccurrences`
  `compareOccurrences(Adaptation recordOnLeft, Adaptation recordOnRight, boolean isResolvedMode, boolean showDetails)`
  Performs a comparison between two records.
  `static DifferenceBetweenOccurrences`
  `compareRecordByDate(Adaptation aRecord, boolean isResolvedMode, Date aStartDate, Date aEndDate)`
  Performs a comparison between two dates for a record and returns the result.
  `static DifferenceBetweenOccurrences`
  `compareRecordByDate(Adaptation aRecord, Date aStartDate, Date aEndDate)`
  Performs a comparison between two dates for a record and returns the result.The comparison operates in unresolved mode by default.
  `static DifferenceBetweenOccurrences`
  `compareRecordByTransactionID(Adaptation aRecord, boolean isResolvedMode, long aStartTransactionId, long aEndTransactionId)`
  Performs a comparison between two transaction times for a record and returns the result.
  `static DifferenceBetweenOccurrences`
  `compareRecordByTransactionID(Adaptation aRecord, long aStartTransactionId, long aEndTransactionId)`
  Performs a comparison between two transaction times for a record and returns the result.The comparison operates in unresolved mode by default.
  `static DifferenceBetweenTables`
  `compareTableByDate(AdaptationTable table, boolean isResolvedMode, Date aStartDate, Date aEndDate)`
  Performs a comparison between two dates for a table and returns the result.
  `static DifferenceBetweenTables`
  `compareTableByDate(AdaptationTable table, Date aStartDate, Date aEndDate)`
  Performs a comparison between two dates for a table and returns the result.The comparison operates in unresolved mode by default.
  `static DifferenceBetweenTables`
  `compareTableByTxId(AdaptationTable table, boolean isResolvedMode, long aStartTransactionId, long aEndTransactionId)`
  Performs a comparison between two transaction times for a table and returns the result.
  `static DifferenceBetweenTables`
  `compareTableByTxId(AdaptationTable table, long aStartTransactionId, long aEndTransactionId)`
  Performs a comparison between two transaction times for a table and returns the result.The comparison operates in unresolved mode by default.

  ### Methods inherited from class java.lang.Object

  `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### DifferenceHelper

    public DifferenceHelper()

- ## Method Details

  - ### compareHomes

    public static DifferenceBetweenHomes compareHomes(AdaptationHome leftHome, AdaptationHome rightHome, boolean isResolvedMode)
    Compares two dataspaces or snapshots and returns the result.
    Parameters:
      `leftHome` - dataspace or snapshot on left to use for comparison.
      `rightHome` - dataspace or snapshot on right to use for comparison.
      `isResolvedMode` - specifies whether or not the comparison is in resolved mode.
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null`.

  - ### compareDataspaceByTransactionID

    public static DifferenceBetweenHomes compareDataspaceByTransactionID(AdaptationHome aDataspace, long aStartTransactionId, long aEndTransactionId)
    Performs a comparison between two transactions for a dataspace or a snapshot and returns the result.The comparison operates in unresolved mode by default.
    Parameters:
      `aDataspace` - dataspace or snapshot to use for comparison.
      `aStartTransactionId` - the start transaction id
      `aEndTransactionId` - the end transaction id
    Throws:
      `IllegalArgumentException` - if the specified `AdaptationHome` is `null` or if one of the specified transaction ids is negative.
    Since:
      6.2.1

  - ### compareDataspaceByTransactionID

    public static DifferenceBetweenHomes compareDataspaceByTransactionID(AdaptationHome aDataspace, boolean isResolvedMode, long aStartTransactionId, long aEndTransactionId)
    Performs a comparison between two transactions for a dataspace or a snapshot and returns the result.
    Parameters:
      `aDataspace` - dataspace or snapshot to use for comparison.
      `isResolvedMode` - specifies whether or not the comparison is in resolved mode.
      `aStartTransactionId` - the start transaction id
      `aEndTransactionId` - the end transaction id
    Throws:
      `IllegalArgumentException` - if the specified `AdaptationHome` is `null` or if one of the specified transaction ids is negative.
    Since:
      6.1.3

  - ### compareDataspaceByDate

    public static DifferenceBetweenHomes compareDataspaceByDate(AdaptationHome aDataspace, Date aStartDate, Date aEndDate)
    Performs a comparison between two transaction dates for a dataspace and returns the result.The comparison operates in unresolved mode by default.
    Parameters:
      `aDataspace` - the dataspace to compare
      `aStartDate` - the start transaction id
      `aEndDate` - the end transaction id
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null`.
    Since:
      6.2.1

  - ### compareDataspaceByDate

    public static DifferenceBetweenHomes compareDataspaceByDate(AdaptationHome aDataspace, boolean isResolvedMode, Date aStartDate, Date aEndDate)
    Performs a comparison between two transaction dates for a dataspace and returns the result.
    Parameters:
      `aDataspace` - the dataspace to compare
      `isResolvedMode` - specifies whether or not the comparison is in resolved mode.
      `aStartDate` - the start transaction id
      `aEndDate` - the end transaction id
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null`.
    Since:
      6.1.3

  - ### compareInstances

    public static DifferenceBetweenInstances compareInstances(Adaptation instanceOnLeft, Adaptation instanceOnRight, boolean isResolvedMode)
    Performs a comparison between two datasets.
    Parameters:
      `instanceOnLeft` - dataset on left to use for comparison.
      `instanceOnRight` - dataset on right to use for comparison.
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null`.

  - ### compareDatasetByTransactionID

    public static DifferenceBetweenInstances compareDatasetByTransactionID(Adaptation aDataset, boolean isResolvedMode, long aStartTransactionId, long aEndTransactionId)
    Performs a comparison between two transaction for a dataset and returns the result.
    Parameters:
      `aDataset` - the dataset to be compared
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
      `aStartTransactionId` - the start transaction id
      `aEndTransactionId` - the end transaction id
    Throws:
      `IllegalArgumentException` - if the specified `Adaptation` is `null` or if it is a table record or one of the specified transaction ids is negative.
    Since:
      6.1.3

  - ### compareDatasetByTransactionID

    public static DifferenceBetweenInstances compareDatasetByTransactionID(Adaptation aDataset, long aStartTransactionId, long aEndTransactionId)
    Performs a comparison between two transaction for a dataset and returns the result.The comparison operates in unresolved mode by default.
    Parameters:
      `aDataset` - the dataset to be compared
      `aStartTransactionId` - the start transaction id
      `aEndTransactionId` - the end transaction id
    Throws:
      `IllegalArgumentException` - if the specified `Adaptation` is `null` or if it is a table record or one of the specified transaction ids is negative.
    Since:
      6.2.1

  - ### compareDatasetByDate

    public static DifferenceBetweenInstances compareDatasetByDate(Adaptation aDataset, Date aStartDate, Date aEndDate)
    Performs a comparison between two transaction dates for a dataset and returns the result.The comparison operates in unresolved mode by default.
    Parameters:
      `aDataset` - the Dataset to compare
      `aStartDate` - the start date
      `aEndDate` - the end date
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null` or if the specified `Adaptation` is a table record.
    Since:
      6.2.1

  - ### compareDatasetByDate

    public static DifferenceBetweenInstances compareDatasetByDate(Adaptation aDataset, boolean isResolvedMode, Date aStartDate, Date aEndDate)
    Performs a comparison between two transaction dates for a dataset and returns the result.
    Parameters:
      `aDataset` - the Dataset to compare
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
      `aStartDate` - the start date
      `aEndDate` - the end date
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null` or if the specified `Adaptation` is a table record.
    Since:
      6.1.3

  - ### compareAdaptationTables

    public static DifferenceBetweenTables compareAdaptationTables(AdaptationTable tableOnLeft, AdaptationTable tableOnRight, boolean isResolvedMode)
    Performs a comparison between two tables.
    Parameters:
      `tableOnLeft` - table on left to use for comparison.
      `tableOnRight` - table on right to use for comparison.
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null` or if tables do not have the same primary key definition.

  - ### compareTableByTxId

    public static DifferenceBetweenTables compareTableByTxId(AdaptationTable table, long aStartTransactionId, long aEndTransactionId)
    Performs a comparison between two transaction times for a table and returns the result.The comparison operates in unresolved mode by default.
    Parameters:
      `table` - the table
      `aStartTransactionId` - the start transaction id
      `aEndTransactionId` - the end transaction id
    Throws:
      `IllegalArgumentException` - if the specified `AdaptationTable` is `null` or if one of the specified transaction ids is negative.
    Since:
      6.2.1

  - ### compareTableByTxId

    public static DifferenceBetweenTables compareTableByTxId(AdaptationTable table, boolean isResolvedMode, long aStartTransactionId, long aEndTransactionId)
    Performs a comparison between two transaction times for a table and returns the result.
    Parameters:
      `table` - the table
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
      `aStartTransactionId` - the start transaction id
      `aEndTransactionId` - the end transaction id
    Throws:
      `IllegalArgumentException` - if the specified `AdaptationTable` is `null` or if one of the specified transaction ids is negative.
    Since:
      6.1.3

  - ### compareTableByDate

    public static DifferenceBetweenTables compareTableByDate(AdaptationTable table, boolean isResolvedMode, Date aStartDate, Date aEndDate)
    Performs a comparison between two dates for a table and returns the result.
    Parameters:
      `table` - the table to compare
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
      `aStartDate` - the start date
      `aEndDate` - the end date
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null`.
    Since:
      6.1.3

  - ### compareTableByDate

    public static DifferenceBetweenTables compareTableByDate(AdaptationTable table, Date aStartDate, Date aEndDate)
    Performs a comparison between two dates for a table and returns the result.The comparison operates in unresolved mode by default.
    Parameters:
      `table` - the table to compare
      `aStartDate` - the start date
      `aEndDate` - the end date
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null`.
    Since:
      6.2.1

  - ### compareOccurrences

    public static DifferenceBetweenOccurrences compareOccurrences(Adaptation recordOnLeft, Adaptation recordOnRight, boolean isResolvedMode)
    Performs a comparison between two records.

    This method is equivalent to `compareOccurrences(recordOnLeft, recordOnRight, isResolvedMode, false)`. That is, it does show details on terminal complex nodes.

    Parameters:
      `recordOnLeft` - record on left to use for comparison.
      `recordOnRight` - record on right to use for comparison.
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null`.

  - ### compareOccurrences

    public static DifferenceBetweenOccurrences compareOccurrences(Adaptation recordOnLeft, Adaptation recordOnRight, boolean isResolvedMode, boolean showDetails)
    Performs a comparison between two records.
    Parameters:
      `recordOnLeft` - record on left to use for comparison.
      `recordOnRight` - record on right to use for comparison.
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
      `showDetails` - if `true`, differences on terminal complex nodes are detailed; if `false`, comparison stops on terminal node elements even if they are complex. `showDetails` is forced to `false` if `isResolvedMode` is set to `false`.
    Throws:
      `IllegalArgumentException` - if one of the specified arguments is `null`.

  - ### compareRecordByTransactionID

    public static DifferenceBetweenOccurrences compareRecordByTransactionID(Adaptation aRecord, boolean isResolvedMode, long aStartTransactionId, long aEndTransactionId)
    Performs a comparison between two transaction times for a record and returns the result.

    Returns `null` if there is no differences between the two specified transactions.

    Parameters:
      `aRecord` - the record to compare
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
      `aStartTransactionId` - the start transaction id
      `aEndTransactionId` - the end transaction id
    Throws:
      `IllegalArgumentException` - if the specified `Adaptation` is `null` or if it is not a table record or if one of the specified transaction ids is negative.
    Since:
      6.1.3

  - ### compareRecordByTransactionID

    public static DifferenceBetweenOccurrences compareRecordByTransactionID(Adaptation aRecord, long aStartTransactionId, long aEndTransactionId)
    Performs a comparison between two transaction times for a record and returns the result.The comparison operates in unresolved mode by default.

    Returns `null` if there is no differences between the two specified transactions.

    Parameters:
      `aRecord` - the record to compare
      `aStartTransactionId` - the start transaction id
      `aEndTransactionId` - the end transaction id
    Throws:
      `IllegalArgumentException` - if the specified `Adaptation` is `null` or if it is not a table record or if one of the specified transaction ids is negative.
    Since:
      6.2.1

  - ### compareRecordByDate

    public static DifferenceBetweenOccurrences compareRecordByDate(Adaptation aRecord, Date aStartDate, Date aEndDate)
    Performs a comparison between two dates for a record and returns the result.The comparison operates in unresolved mode by default.

    Returns `null` if there is no differences between the two specified dates.

    Parameters:
      `aRecord` - the record to compare
      `aStartDate` - the start date
      `aEndDate` - the end date
    Throws:
      `IllegalArgumentException` - if the specified `Adaptation` is `null` or if it is not a table record.
    Since:
      6.2.1

  - ### compareRecordByDate

    public static DifferenceBetweenOccurrences compareRecordByDate(Adaptation aRecord, boolean isResolvedMode, Date aStartDate, Date aEndDate)
    Performs a comparison between two dates for a record and returns the result.

    Returns `null` if there is no differences between the two specified dates.

    Parameters:
      `aRecord` - the record to compare
      `isResolvedMode` - specifies whether the comparison is in resolved mode.
      `aStartDate` - the start date
      `aEndDate` - the end date
    Throws:
      `IllegalArgumentException` - if the specified `Adaptation` is `null` or if it is not a table record.
    Since:
      6.1.3