blob: d46741edfe86cd507ab8cd7e8ccff65eeebea8ab [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004-2009 Akos Horvath and Daniel Varro
* 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:
* Akos Horvath - initial API and implementation
*******************************************************************************/
/**
*
*/
package org.eclipse.viatra2.gtasm.patternmatcher.impl.patternmatcher.internal.searchgraph.traceability;
import java.util.ArrayList;
import org.eclipse.viatra2.gtasmmodel.gtasm.metamodel.asm.core.AnnotatedElement;
/**
* For each VPM search graph element a traceability Element is created that can point to multiple GTASM element
* and its corresponding operation (either pattern or gtRule)
* @author Akos Horvath
*
*/
public abstract class AbstractTraceabilityElement<VPMType> {
private ArrayList<AnnotatedElement> emfElements;
public AbstractTraceabilityElement(){
emfElements = new ArrayList<AnnotatedElement>();
}
public AbstractTraceabilityElement(AnnotatedElement element){
emfElements = new ArrayList<AnnotatedElement>();
if(element != null)
emfElements.add(0, element);
}
/** Adds an EMF element to the traceability node. If it is the first one than it will become the representative one
* @param element
*/
public void addEMFElement(AnnotatedElement element){
if(element != null)
emfElements.add(element);
}
/** Adds the representative EMF element to the traceability node
* @param element
*/
public void addRepresentativeElement(AnnotatedElement element){
if(element != null)
{
if(emfElements.get(0) != null)
{
AnnotatedElement _temp = emfElements.get(0);
emfElements.add(0, element);
emfElements.add(_temp);
}
else
emfElements.add(0,element);
}
}
/** Return the representative EMF element.
* @return
*/
public AnnotatedElement getRepresentativeEMFElement(){
return emfElements.get(0);
}
public abstract VPMType getVPMElement();
}