java.lang.Object
org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.actions.AbstractMergeRunnable
org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.actions.MergeNonConflictingRunnable
All Implemented Interfaces:
IMergeRunnable, IMergeAllNonConflictingRunnable

public class MergeNonConflictingRunnable extends AbstractMergeRunnable implements IMergeAllNonConflictingRunnable, IMergeRunnable
Implements the "merge non-conflicting" and "merge all non-conflicting" action.
  • Constructor Details

    • MergeNonConflictingRunnable

      public MergeNonConflictingRunnable(boolean isLeftEditable, boolean isRightEditable, MergeMode mergeMode, IDiffRelationshipComputer diffRelationshipComputer)
      Default constructor.
      Parameters:
      isLeftEditable - Whether the left side of the comparison we're operating on is editable.
      isRightEditable - Whether the right side of the comparison we're operating on is editable.
      mergeMode - Merge mode for this operation.
      diffRelationshipComputer - The diff relationship computer used to find resulting merges and rejections.
  • Method Details

    • merge

      public Iterable<Diff> merge(Comparison comparison, boolean leftToRight, IMerger.Registry mergerRegistry)
      Merges all non-conflicting differences from the given comparison in either direction.
      Specified by:
      merge in interface IMergeAllNonConflictingRunnable
      Parameters:
      comparison - The comparison which differences we are to merge.
      leftToRight - Direction of the merge operation.
      mergerRegistry - The registry to query for the appropriate merger for each difference.
      Returns:
      an iterable over the differences that have actually been merged by this operation.
    • merge

      public void merge(List<? extends Diff> differences, boolean leftToRight, IMerger.Registry mergerRegistry)
      Execute the merge operation.

      Differences that are conflicting or that depend on conflicting differences will be left out. Non-conflicting differences that are implied or required by the given differences will be merged, also if they are not explicitly included in the given list of differences.

      Specified by:
      merge in interface IMergeRunnable
      Parameters:
      differences - the differences to merge.
      leftToRight - whether the differences have to be merge from left to right or right to left.
      mergerRegistry - the merger registry to query to get the appropriate mergers for each difference to be merged.
    • doMergeDiffWithConflicts

      protected void doMergeDiffWithConflicts(boolean leftToRight, IMerger.Registry mergerRegistry, List<Diff> affectedDiffs, Monitor emfMonitor, Diff diff)