Class AbstractConflictSearch<T extends Diff>

java.lang.Object
org.eclipse.emf.compare.internal.conflict.AbstractConflictSearch<T>
Type Parameters:
T - The type of diff for which conflict are researched
Direct Known Subclasses:
AttributeChangeConflictSearch.Add, AttributeChangeConflictSearch.Change, AttributeChangeConflictSearch.Delete, AttributeChangeConflictSearch.Move, ContainmentRefChangeConflictSearch.Add, ContainmentRefChangeConflictSearch.Change, ContainmentRefChangeConflictSearch.Delete, ContainmentRefChangeConflictSearch.Move, FeatureMapChangeConflictSearch.Add, FeatureMapChangeConflictSearch.Change, FeatureMapChangeConflictSearch.Delete, FeatureMapChangeConflictSearch.Move, NonContainmentRefChangeConflictSearch.Add, NonContainmentRefChangeConflictSearch.Change, NonContainmentRefChangeConflictSearch.Delete, NonContainmentRefChangeConflictSearch.Move, ResourceAttachmentChangeConflictSearch.Add, ResourceAttachmentChangeConflictSearch.Change, ResourceAttachmentChangeConflictSearch.Delete, ResourceAttachmentChangeConflictSearch.Move

public abstract class AbstractConflictSearch<T extends Diff> extends Object
Class in charge of finding conflicting diffs for a given diff of type T.
  • Field Details

    • diff

      protected final T extends Diff diff
      The difference, never null.
    • comparison

      protected final Comparison comparison
      The comparison that contains diff.
    • index

      protected final ComparisonIndex index
      The index of the comparison.
    • monitor

      protected final Monitor monitor
      The monitor to report progress to.
  • Constructor Details

    • AbstractConflictSearch

      public AbstractConflictSearch(T diff, ComparisonIndex index, Monitor monitor)
      Constructor.
      Parameters:
      diff - The diff to search conflicts with, must not be null and have a non-null match that belongs to a non-null comparison. It must also have a non-null DifferenceKind and DifferenceSource.
      index - Comparison index, must not be null
      monitor - the monitor to report progress to, must not be null
  • Method Details

    • detectConflicts

      public abstract void detectConflicts()
      Detect conflicts with diff in its comparison. This will add or update conflicts in diff's comparison.
    • getDiffsInSameMatch

      protected EList<Diff> getDiffsInSameMatch()
      Get the diffs in the same Match as diff.
      Returns:
      A never-null EList of differences in the same Match as diff, including diff.
    • isFeatureMapChangeOrMergeableStringAttributeChange

      protected boolean isFeatureMapChangeOrMergeableStringAttributeChange(Diff diff1, Diff diff2)
      Specifies whether the given diff1 and diff2 are either feature map changes or mergeable attribute changes of String attributes.
      Parameters:
      diff1 - One of the diffs to check.
      diff2 - The other diff to check.
      Returns:
      true if it is a FeatureMapChange or a mergeable AttributeChange, false otherwise.
    • isFeatureMapChange

      protected boolean isFeatureMapChange(Diff toCheck)
      Specifies whether the given diff is a FeatureMapChange.
      Parameters:
      toCheck - The diff to check.
      Returns:
      true if it is a FeatureMapChange, false otherwise.
    • areMergeableStringAttributeChanges

      protected boolean areMergeableStringAttributeChanges(Diff diff1, Diff diff2)
      Specifies whether the two given diffs, diff1 and diff2, are both attribute changes of String attributes and can be merged with a line-based three-way merge.
      Parameters:
      diff1 - One of the diffs to check.
      diff2 - The other diff to check.
      Returns:
      true if the diffs are mergeable changes of a string attribute, false otherwise.
      See Also:
    • isStringAttributeChange

      protected boolean isStringAttributeChange(Diff toCheck)
      Specifies whether the given diff is a AttributeChange of a String attribute.
      Parameters:
      toCheck - The diff to check.
      Returns:
      true if it is a AttributeChange of a String attribute, false otherwise.
    • isMergeable

      protected boolean isMergeable(AttributeChange diff1, AttributeChange diff2)
      Specifies whether the two given attribute changes, diff1 and diff2, can be merged with a line-based three-way merge.
      Parameters:
      diff1 - One of the attribute changes to check.
      diff2 - The other attribute change to check.
      Returns:
      true if the attribute changes are mergeable, false otherwise.
      See Also:
    • isMergeableText

      protected boolean isMergeableText(String left, String right, String origin)
      Specifies whether the given three versions of a text left, right, and origin are mergeable with a line-based three-way merge.
      Parameters:
      left - The left version.
      right - The right version.
      origin - The original version.
      Returns:
      true if they are mergeable, false otherwise.
      Since:
      3.2
    • getChangedValue

      protected String getChangedValue(AttributeChange attributeChange)
      Returns the changed attribute value denoted by the given diff.
      Parameters:
      attributeChange - The attribute change for which the changed value is requested.
      Returns:
      The changed attribute value.
    • conflict

      protected void conflict(Diff other, ConflictKind kind)
      This will be called whenever we detect a new conflict in order to create (or update) the actual association.
      Parameters:
      other - Second of the two differences for which we detected a conflict.
      kind - Kind of this conflict.
    • getMatchResource

      protected MatchResource getMatchResource(Resource resource)
      Returns the MatchResource corresponding to the given resource.
      Parameters:
      resource - Resource for which we need a MatchResource.
      Returns:
      The MatchResource corresponding to the given resource.
    • getRelatedModelElement

      protected EObject getRelatedModelElement(ResourceAttachmentChange rac)
      Provide the model element the given diff applies to.
      Parameters:
      rac - The change
      Returns:
      The model element of the given diff, or null if it cannot be found.
    • getValue

      protected EObject getValue(ResourceAttachmentChange rac)
      Provide the non-null model element the given diff applies to.
      Parameters:
      rac - The change
      Returns:
      The model element of the given diff, cannot be null.
    • isContainmentDelete

      protected Predicate<? super Match> isContainmentDelete()
      This predicate will be true for any Match which represents a containment deletion.
      Returns:
      A Predicate that will be met by containment deletions.
    • getFeatureFilter

      protected FeatureFilter getFeatureFilter(Comparison comp)
      Returns the feature filter attached to the given comparison if any.
      Parameters:
      comp - The comparison.
      Returns:
      The feature filter attached to the given comparison if any.