package eu.scape_project.planning.services.taverna.generator.model;
import java.util.ArrayList;
import java.util.List;
/**
* Definition of a linkable element.
*/
public abstract class LinkableElement {
private String name;
private List<InputPort> inputPorts = new ArrayList<InputPort>();
private List<OutputPort> outputPorts = new ArrayList<OutputPort>();
/**
* Creates a new linkable element.
*
* @param name
* the element name
*/
public LinkableElement(String name) {
this.name = name;
}
/**
* Adds a new input port to the element.
*
* @param inputPort
* the input port to add
*/
public void addInputPort(InputPort inputPort) {
this.inputPorts.add(inputPort);
}
/**
* Creates a new output port for the element.
*
* @param outputPort
* the output port to add
*/
public void addOutputPort(OutputPort outputPort) {
this.outputPorts.add(outputPort);
}
/**
* Checks if this element has a source with the provided name.
*
* @param sourceName
* the name to check
* @return true if a source was added, false otherwise
*/
public boolean hasSource(String sourceName) {
for (OutputPort p : outputPorts) {
if (p.getName().equals(sourceName)) {
return true;
}
}
return false;
}
/**
* Checks if this element has a sink with the provided name.
*
* @param sinkName
* the name to check
* @return true if a sink was added, false otherwise
*/
public boolean hasSink(String sinkName) {
for (InputPort p : inputPorts) {
if (p.getName().equals(sinkName)) {
return true;
}
}
return false;
}
/**
* Returns the type of this element.
*
* @return the type
*/
public abstract String getType();
// ---------- getter/setter ----------
public String getName() {
return name;
}
public List<InputPort> getInputPorts() {
return inputPorts;
}
public List<OutputPort> getOutputPorts() {
return outputPorts;
}
}