Class ChartComparisonParticipant

All Implemented Interfaces:
IComparisonParticipant

public class ChartComparisonParticipant extends AbstractMdAwareComparisonParticipant
Chart comparison participant.
  • Constructor Details

    • ChartComparisonParticipant

      public ChartComparisonParticipant()
  • Method Details

    • supports

      public boolean supports(ComparisonNode node)
      Description copied from interface: IComparisonParticipant
      Indicates whether the participant supports comparison and merging of the specified node.
      Parameters:
      node - the node, not null
      Returns:
      true if the participant supports comparison and merging, false otherwise
    • getModelPackage

      public org.eclipse.emf.ecore.EPackage getModelPackage()
      Description copied from interface: IComparisonParticipant
      Get EMF model package.
      Returns:
      the EMF model packge. Never code null.
    • compare

      public List<Long> compare(TopComparisonNode node, ComparisonContext comparisonContext, org.eclipse.core.runtime.IProgressMonitor monitor)
      Description copied from interface: IComparisonParticipant
      Compares objects contained in the specified model top node and returns a list of child nodes to be compared.
      Parameters:
      node - the top node to run comparison for, not null
      comparisonContext - the comparison context, not null
      monitor - the progress monitor, can be null. The clients are not supposed to report work to the monitor, except for the top object matching phase
      Returns:
      a list of model node identifiers, never null
    • createMergeContext

      public MergeContext createMergeContext(TopComparisonNode node, IMergeSession mergeSession, ComparisonContext comparisonContext)
      Description copied from interface: IComparisonParticipant
      Creates merge context for an upcoming merge operation.
      Parameters:
      node - the top node to be merged, not null
      mergeSession - the current merge session, not null
      comparisonContext - the comparison context, not null
      Returns:
    • merge

      public org.eclipse.core.runtime.IStatus merge(TopComparisonNode node, MergeContext context, org.eclipse.core.runtime.IProgressMonitor monitor)
      Description copied from interface: IComparisonParticipant
      Merges the differences in the specified top node in the specified merge session. This may include deletion of the main object if the other object is absent, or, conversely, import ("copying") of the other object if the main object is absent.
      Parameters:
      node - the top node to run merge for, not null
      context - the current merge context, not null
      monitor - the progress monitor, not null
      Returns:
      the result of the merge operation
    • getPotentialCorrespondingNodes

      public List<ComparisonNode> getPotentialCorrespondingNodes(ComparisonNode node, ComparisonSide sourceSide)
      Description copied from interface: IComparisonParticipant
      Returns a list of candidate nodes for setting as corresponding to the specified node.
      Parameters:
      node - the comparison result node to find potential correspondences for, not null
      sourceSide - the source side of the correspondence, not null
      Returns:
      a list of comparison result nodes, may be empty, never null
    • breakCorrespondence

      public void breakCorrespondence(ComparisonContext comparisonContext, ComparisonNode node)
      Description copied from interface: IComparisonParticipant
      Breaks the correspondence for the specified node.
      Parameters:
      comparisonContext - the comparison context, not null
      node - the node with the correspondence to break, not null
    • updateComparison

      public void updateComparison(ComparisonContext comparisonContext, ComparisonNode node, List<Long> newNodeIds)
      Description copied from interface: IComparisonParticipant
      Updates comparison for the given result node. Participants could introduce their own specific logic for managing internal states on comparison update.
      Parameters:
      comparisonContext - the comparison context, not null
      node - the node to update comparison for, not null
      newNodeIds - the list of created new node Ids to fill, not null
    • addNewTopObjectToComparison

      public TopComparisonNode addNewTopObjectToComparison(IComparisonSession comparisonSession, String mainSymlink, org.eclipse.emf.ecore.EClass eClass)
      Description copied from interface: IComparisonParticipant
      Adds a new node to the comparison for the top object. Participants could introduce their own specific logic for managing internal states on comparison update.
      Parameters:
      comparisonSession - the comparison session hosting the model, not null
      mainSymlink - the symlink for the top object to add, not null
      eClass - of the object ot add, not null
      Returns:
      The created result node for the object if supports. null otherwise.
    • combineOneSideNodes

      public void combineOneSideNodes(ComparisonContext comparisonContext, ComparisonNode mainNode, ComparisonNode otherNode, List<Long> newNodeIds)
      Description copied from interface: IComparisonParticipant
      Combines the specified two one-side nodes. The participant fills array of new node Ids created while combining the specified nodes. These node Ids must be scheduled for comparison in the external code.
      Parameters:
      comparisonContext - the comparison context, not null
      mainNode - the one-side MAIN node to be combined, not null
      otherNode - the one-side OTHER node to be combined, not null
      newNodeIds - the list of new node Ids to fill, not null
    • ableToBreakCorrespondence

      public boolean ableToBreakCorrespondence(ComparisonNode node)
      Description copied from interface: IComparisonParticipant
      Tells whether to able to break the correspondence for the specified node.
      Parameters:
      node - the comparison node to check, not null
      Returns:
      true if it is possible to break the correspondence, false otherwise
    • retrieveComparedObjects

      public ComparedChartObjects retrieveComparedObjects(ComparisonContext comparisonContext, ComparisonNode node)
      Description copied from interface: IComparisonParticipant
      Returns a compared EObjects triple for the specified model node.
      Parameters:
      comparisonContext - the comparison context, not null
      node - the model node, cannot be null
      Returns:
      the compared objects triple, never null
    • validateMerge

      public void validateMerge(IMergeSession mergeSession, ComparisonContext comparisonContext, ComparisonNode node, List<MergeValidationProblem> validationProblems)
      Description copied from interface: IComparisonParticipant
      Validates the process of merge of the specified model node.
      Parameters:
      mergeSession - the merge session, not null
      comparisonContext - the comparison context, not null
      node - the model node
      validationProblems - the list of collected validation problems to add new problem to
    • adoptExternalProperty

      public boolean adoptExternalProperty(IComparisonSession session, ExternalPropertyComparisonData extPropData)
      Description copied from interface: IComparisonParticipant
      Adopts the given external property if it is supported by the participant instance. If adopting is possible, the method fills the provided comparison data container by its own data to be used for adoption.
      Parameters:
      session - the comparison session, not null
      extPropData - the data of the external property to be adopted, cannot be null
      Returns:
      true if adopting is possible, false otherwise
    • breakMainSideCorrespondence

      public void breakMainSideCorrespondence(IComparisonSession session, ComparisonNode node)
      Description copied from interface: IComparisonParticipant
      Breaks the main side correspondence represented by the specified model node.
      Parameters:
      session - the comparison session hosting the model, can not be null
      node - the node with the correspondence to break, can not be null
    • getDefaultMustBeMerged

      public Boolean getDefaultMustBeMerged(ComparisonNode node, IComparisonSession session)
      Description copied from interface: IComparisonParticipant
      Returns the default must be merged value for the given node.
      Parameters:
      node - the node to get default must be merged value for, can not be null
      session - the comparison session, can not be null
      Returns:
      the default must be merged value or null if it wasn't specified
    • isExcludedFromComparison

      public boolean isExcludedFromComparison(org.eclipse.emf.ecore.EStructuralFeature feature, AbstractComparedEmfObjects<?> comparedContextObjects, IComparisonSession session)
      Description copied from interface: IComparisonParticipant
      Checks whether the feature must be excluded from the comparison.
      Specified by:
      isExcludedFromComparison in interface IComparisonParticipant
      Overrides:
      isExcludedFromComparison in class AbstractEmfBasedComparisonParticipant
      Parameters:
      feature - the feature to check, cannot be null
      comparedContextObjects - the triple of compared objects, cannot be null
      session - the comparison session, cannot be null
      Returns:
      true if the feature must be excluded, false otherwise
    • createImportedEObject

      protected org.eclipse.emf.ecore.EObject createImportedEObject(org.eclipse.emf.ecore.EObject otherObject, IMergeSession mergeSession)
      Specified by:
      createImportedEObject in class AbstractEmfBasedComparisonParticipant
    • getExternalPropertyQualifyingType

      protected String getExternalPropertyQualifyingType(org.eclipse.emf.ecore.EObject eObject, org.eclipse.emf.ecore.EReference externalProperty)
      Description copied from class: AbstractEmfBasedComparisonParticipant
      Returns the EClass of the specified external property of the specified EObject.
      Overrides:
      getExternalPropertyQualifyingType in class AbstractMdAwareComparisonParticipant
      Returns:
    • isFeatureWithCustomMerge

      protected boolean isFeatureWithCustomMerge(org.eclipse.emf.ecore.EStructuralFeature feature)
      Specified by:
      isFeatureWithCustomMerge in class AbstractEmfBasedComparisonParticipant
    • isUnmatchableContainment

      protected boolean isUnmatchableContainment(org.eclipse.emf.ecore.EReference reference)
      Description copied from class: AbstractEmfBasedComparisonParticipant
      Checks whether the specified containment feature cannot be matched by an identity-based matcher.
      Overrides:
      isUnmatchableContainment in class AbstractEmfBasedComparisonParticipant
      Parameters:
      reference - the containment feature to check
      Returns:
      true if the feature cannot be matched by an identity matcher