/** * */ package se.sics.kompics.ide.model.ast; import java.util.HashMap; import java.util.Map; import org.eclipse.emf.ecore.EObject; import org.eclipse.jdt.core.dom.ASTNode; import se.sics.kompics.model.kompicsComponents.Component; import se.sics.kompics.model.kompicsComponents.ComponentDefinition; import se.sics.kompics.model.kompicsComponents.KompicsComponentsPackage; import se.sics.kompics.model.kompicsComponents.Port; /** * The <code>ASTComponent</code> . * * @author Lars Kroll <lkr@lars-kroll.com> * @version $Id: $ * */ public class ASTComponent extends ASTModelObject { private final Component model; private Map<String, ASTPort> required = new HashMap<String, ASTPort>(); private Map<String, ASTPort> provided = new HashMap<String, ASTPort>(); private ASTPort controlPort; public ASTComponent(String id, Component model, ASTNode node) { super(id, node, model.eClass()); this.model = model; } public Component getModel() { return this.model; } @Override public EObject getEObject() { return model; } @Override public void addToModel(EObject obj, int environmentModifier) { switch(obj.eClass().getClassifierID()) { case KompicsComponentsPackage.COMPONENT_DEFINITION: model.setType((ComponentDefinition) obj); break; case KompicsComponentsPackage.PORT: if (environmentModifier == ASTModelObject.PROVIDED_PORT) { model.getProvides().add((Port) obj); } else if (environmentModifier == ASTModelObject.REQUIRED_PORT) { model.getRequires().add((Port) obj); } } } public void addProvided(ASTPort p) { this.provided.put(p.getModel().getPortType().getType(), p); } public void addRequired(ASTPort p) { this.required.put(p.getModel().getPortType().getType(), p); } public ASTPort getProvided(String type) { return this.provided.get(type); } public ASTPort getRequired(String type) { return this.required.get(type); } /** * @return the controlPort */ public ASTPort getControlPort() { return controlPort; } /** * @param controlPort the controlPort to set */ public void setControlPort(ASTPort controlPort) { this.controlPort = controlPort; } }