/******************************************************************************* | |
* Copyright (c) 2008, 2012 IBM Corporation and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License 2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* IBM Corporation - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.bpel.compare.ui.annotation; | |
import java.util.ArrayList; | |
import java.util.HashMap; | |
import java.util.Iterator; | |
import java.util.List; | |
import org.eclipse.emf.compare.diff.metamodel.DiffElement; | |
import org.eclipse.emf.compare.diff.metamodel.DiffModel; | |
import org.eclipse.emf.compare.diff.metamodel.ModelElementChangeLeftTarget; | |
import org.eclipse.emf.compare.diff.metamodel.ModelElementChangeRightTarget; | |
import org.eclipse.emf.compare.diff.metamodel.MoveModelElement; | |
import org.eclipse.emf.compare.diff.metamodel.ReferenceChangeRightTarget; | |
import org.eclipse.emf.compare.diff.metamodel.UpdateAttribute; | |
import org.eclipse.emf.compare.diff.metamodel.util.DiffSwitch; | |
import org.eclipse.emf.compare.match.metamodel.MatchModel; | |
import org.eclipse.emf.ecore.EObject; | |
class AnnotationSwitch extends DiffSwitch<Object> { | |
private HashMap<EObject, DiffElement> model2annotation = | |
new HashMap<EObject, DiffElement>(); | |
public List<DiffElement> annotations = new ArrayList<DiffElement>(); | |
public HashMap<EObject, DiffElement> getAnnotations(DiffModel diff, MatchModel match) { | |
for (Iterator<EObject> iter = diff.eAllContents(); iter.hasNext();) { | |
EObject eObject = iter.next(); | |
doSwitch(eObject); | |
} | |
return model2annotation; | |
} | |
@Override | |
public Object caseUpdateAttribute(UpdateAttribute object) { | |
annotate(object.getLeftElement(), object); | |
annotate(object.getRightElement(), object); | |
annotations.add(object); | |
return object; | |
} | |
@Override | |
public Object caseModelElementChangeLeftTarget(ModelElementChangeLeftTarget object) { | |
annotate(object.getLeftElement(), object); | |
annotations.add(object); | |
return object; | |
} | |
@Override | |
public Object caseModelElementChangeRightTarget(ModelElementChangeRightTarget object) { | |
annotate(object.getRightElement(), object); | |
annotations.add(object); | |
return object; | |
} | |
// @Override | |
// public Object caseRemoveModelElement(RemoveModelElement object) { | |
// annotate(object.getLeftElement(), object); | |
// annotations.add(object); | |
// return object; | |
// } | |
@Override | |
public Object caseReferenceChangeRightTarget( | |
ReferenceChangeRightTarget object) { | |
annotate(object.getRightElement(), object); | |
annotations.add(object); | |
return object; | |
} | |
// @Override | |
// public Object caseAddModelElement(AddModelElement object) { | |
// annotate(object.getRightElement(), object); | |
// annotations.add(object); | |
// return object; | |
// } | |
@Override | |
public Object caseMoveModelElement(MoveModelElement object) { | |
annotate(object.getLeftElement(), object); | |
annotate(object.getRightElement(), object); | |
annotations.add(object); | |
return object; | |
} | |
private void annotate(EObject model, DiffElement annotation) { | |
model2annotation.put(model, annotation); | |
} | |
} |