diff options
Diffstat (limited to 'sandbox/PapyrusEMFCompareV1/org.eclipse.papyrus.infra.emf.compare/src/org/eclipse/papyrus/infra/emf/compare/merger/DiffGroupMerger.java')
-rw-r--r-- | sandbox/PapyrusEMFCompareV1/org.eclipse.papyrus.infra.emf.compare/src/org/eclipse/papyrus/infra/emf/compare/merger/DiffGroupMerger.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/sandbox/PapyrusEMFCompareV1/org.eclipse.papyrus.infra.emf.compare/src/org/eclipse/papyrus/infra/emf/compare/merger/DiffGroupMerger.java b/sandbox/PapyrusEMFCompareV1/org.eclipse.papyrus.infra.emf.compare/src/org/eclipse/papyrus/infra/emf/compare/merger/DiffGroupMerger.java new file mode 100644 index 00000000000..b04da1a0f90 --- /dev/null +++ b/sandbox/PapyrusEMFCompareV1/org.eclipse.papyrus.infra.emf.compare/src/org/eclipse/papyrus/infra/emf/compare/merger/DiffGroupMerger.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2006, 2011 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.papyrus.infra.emf.compare.merger; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.emf.compare.diff.merge.DefaultMerger; +import org.eclipse.emf.compare.diff.merge.service.MergeService; +import org.eclipse.emf.compare.diff.metamodel.DiffElement; + +/** + * This merger will handle DiffGroup merging by recursively create mergers on each of its contents. + * + * @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a> + */ +public class DiffGroupMerger extends DefaultMerger { + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.compare.diff.merge.DefaultMerger#applyInOrigin() + */ + @Override + public void applyInOrigin() { + // Creates a temporary list to avoid ConcurentModificationExceptions + final List<DiffElement> subDiffs = new ArrayList<DiffElement>(diff.getSubDiffElements()); + MergeService.merge(subDiffs, false); + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.compare.diff.merge.DefaultMerger#undoInTarget() + */ + @Override + public void undoInTarget() { + // Creates a temporary list to avoid ConcurentModificationExceptions + final List<DiffElement> subDiffs = new ArrayList<DiffElement>(diff.getSubDiffElements()); + MergeService.merge(subDiffs, true); + } +} |