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 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.
      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.
    • 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.
      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.
    • 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, long aStartTransactionId, long aEndTransactionId)
      Performs a comparison between two transaction for a dataset and returns the result.
      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.
    • 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.
      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.
    • 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.
      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.
    • compareTableByDate

      public static DifferenceBetweenTables compareTableByDate(AdaptationTable table, Date aStartDate, Date aEndDate)
      Performs a comparison between two dates for a table and returns the result.
      Parameters:
      table - the table to compare
      aStartDate - the start date
      aEndDate - the end date
      Throws:
      IllegalArgumentException - if one of the specified arguments is null.
    • 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, 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
      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.
    • compareRecordByDate

      public static DifferenceBetweenOccurrences compareRecordByDate(Adaptation aRecord, 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
      aStartDate - the start date
      aEndDate - the end date
      Throws:
      IllegalArgumentException - if the specified Adaptation is null or if it is not a table record.