| /******************************************************************************* |
| * Copyright (c) 2014 Obeo. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Obeo - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.emf.compare.merge; |
| |
| import java.util.Set; |
| |
| import org.eclipse.emf.compare.Diff; |
| |
| /** |
| * This adds the ability for {@link IMerger mergers} to define their own sub-set of "required" differences. |
| * <p> |
| * This set of differences is what will be used by the UI to highlight related differences, by the batch |
| * merger to determine whether the diff can be merged beforehand (one of the related being in conflict will |
| * prevent the merge as a whole), ... |
| * </p> |
| * <p> |
| * The {@link AbstractMerger} implements this and can be sub-classed instead when the default set of |
| * requirements is enough. |
| * </p> |
| * |
| * @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a> |
| * @since 3.2 |
| */ |
| public interface IMerger2 extends IMerger { |
| /** |
| * Retrieves the set of <b>directly</b> required diffs needed in order to merge the current one. This may |
| * includes the diff's {@link Diff#getRequires() requirements} or any other diff that we need to merge |
| * <u>before</u> the given one. |
| * |
| * @param diff |
| * The diff which direct requirements we need. |
| * @param mergeRightToLeft |
| * The direction in which we're considering a merge. |
| * @return The set of <b>directly</b> required diffs in order to merge the current one. |
| */ |
| Set<Diff> getDirectMergeDependencies(Diff diff, boolean mergeRightToLeft); |
| |
| /** |
| * Returns all differences that will be merged because of our merging the given <code>target</code> |
| * difference. This may include the diff's {@link Diff#getImplies() implications}, the diff's |
| * {@link Diff#getEquivalence() equivalences}, the diff's {@link Diff#getRefines() refinements} or any |
| * other diff that we need to merge <u>together</u> with the given diff. |
| * |
| * @param target |
| * The difference we're considering merging. |
| * @param mergeRightToLeft |
| * The direction in which we're considering a merge. |
| * @return The Set of all differences that will be merged because we've merged <code>target</code>. |
| */ |
| Set<Diff> getDirectResultingMerges(Diff target, boolean mergeRightToLeft); |
| |
| /** |
| * Returns the set of all differences that need to be rejected if <code>target</code> is merged in the |
| * given direction. |
| * |
| * @param target |
| * The difference we're considering merging. |
| * @param mergeRightToLeft |
| * The direction in which we're considering a merge. |
| * @return The Set of all differences that will be rejected if we are to merge merged <code>target</code>. |
| */ |
| Set<Diff> getDirectResultingRejections(Diff target, boolean mergeRightToLeft); |
| } |