Search in sources :

Example 36 with DataPort

use of org.apache.airavata.workflow.model.graph.DataPort in project airavata by apache.

the class ForEachNode method addOutputPort.

/**
 * Adds additional output port.
 */
public void addOutputPort() {
    ForEachComponent component = getComponent();
    ComponentDataPort outputPort = component.getOutputPort();
    DataPort port = outputPort.createPort();
    addOutputPort(port);
}
Also used : DataPort(org.apache.airavata.workflow.model.graph.DataPort) ComponentDataPort(org.apache.airavata.workflow.model.component.ComponentDataPort) ForEachComponent(org.apache.airavata.workflow.model.component.system.ForEachComponent) ComponentDataPort(org.apache.airavata.workflow.model.component.ComponentDataPort)

Example 37 with DataPort

use of org.apache.airavata.workflow.model.graph.DataPort in project airavata by apache.

the class ForEachNode method removeInputPort.

public void removeInputPort() throws GraphException {
    List<DataPort> inputPorts = getInputPorts();
    // Remove the last one.
    DataPort inputPort = inputPorts.get(inputPorts.size() - 1);
    removeInputPort(inputPort);
}
Also used : DataPort(org.apache.airavata.workflow.model.graph.DataPort) ComponentDataPort(org.apache.airavata.workflow.model.component.ComponentDataPort)

Example 38 with DataPort

use of org.apache.airavata.workflow.model.graph.DataPort in project airavata by apache.

the class ForEachNode method portTypeChanged.

/**
 * @param port
 * @throws GraphException
 */
@Override
protected void portTypeChanged(SystemDataPort port) throws GraphException {
    super.portTypeChanged(port);
    List<DataPort> inputPorts = getInputPorts();
    List<DataPort> outputPorts = getOutputPorts();
    Kind kind = port.getKind();
    int index;
    if (kind == Kind.DATA_IN) {
        index = inputPorts.indexOf(port);
    } else if (kind == Kind.DATA_OUT) {
        index = outputPorts.indexOf(port);
    } else {
        throw new WorkflowRuntimeException();
    }
    SystemDataPort inputPort = (SystemDataPort) inputPorts.get(index);
    SystemDataPort outputPort = (SystemDataPort) outputPorts.get(index);
    DataType inputType = inputPort.getType();
    DataType outputType = outputPort.getType();
    DataType portType = port.getType();
    if (portType == null || portType.equals(WSConstants.XSD_ANY_TYPE)) {
        // Do nothing
        return;
    }
    if (port == inputPort) {
        // input -> output
        if (outputType.equals(WSConstants.XSD_ANY_TYPE)) {
        // outputPort.copyType(port, -1);
        } else if (outputType.equals(portType)) {
        // Do nothing.
        } else {
        // XXX cannot parse array from WSDL.
        // String message = "The type of input " + index + " ("
        // + inputType + ") of " + getID()
        // + " must be same as the type of output " + index + " ("
        // + outputType + ").";
        // throw new GraphException(message);
        }
    } else if (port == outputPort) {
        // output -> input1
        if (inputType.equals(WSConstants.XSD_ANY_TYPE)) {
        // inputPort.copyType(port, 1);
        } else if (inputType.equals(portType)) {
        // Do nothing.
        } else {
        // XXX cannot parse array from WSDL.
        // String message = "The type of input " + index + " ("
        // + inputType + ") of " + getID()
        // + " must be same as the type of output " + index + " ("
        // + outputType + ").";
        // throw new GraphException(message);
        }
    } else {
        throw new WorkflowRuntimeException();
    }
}
Also used : DataPort(org.apache.airavata.workflow.model.graph.DataPort) ComponentDataPort(org.apache.airavata.workflow.model.component.ComponentDataPort) Kind(org.apache.airavata.workflow.model.graph.Port.Kind) DataType(org.apache.airavata.model.appcatalog.appinterface.DataType) WorkflowRuntimeException(org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException)

Example 39 with DataPort

use of org.apache.airavata.workflow.model.graph.DataPort in project airavata by apache.

the class IfNode method removeInputPort.

/**
 * @throws GraphException
 */
public void removeInputPort() throws GraphException {
    List<DataPort> inputPorts = getInputPorts();
    // Remove the last one.
    DataPort inputPort = inputPorts.get(inputPorts.size() - 1);
    removeInputPort(inputPort);
}
Also used : SystemComponentDataPort(org.apache.airavata.workflow.model.component.system.SystemComponentDataPort) DataPort(org.apache.airavata.workflow.model.graph.DataPort)

Example 40 with DataPort

use of org.apache.airavata.workflow.model.graph.DataPort in project airavata by apache.

the class GraphImpl method removeNode.

/**
 * @see org.apache.airavata.workflow.model.graph.Graph#removeNode(org.apache.airavata.workflow.model.graph.Node)
 */
public void removeNode(Node node) throws GraphException {
    if (node == null) {
        throw new IllegalArgumentException("null");
    }
    if (!this.nodes.contains(node)) {
        throw new GraphException("The graph doesn't contain the node that is being removed.");
    }
    NodeImpl nodeImpl = (NodeImpl) node;
    // Remove edges connected to input ports.
    for (Iterator<DataPort> portItr = nodeImpl.getInputPorts().iterator(); portItr.hasNext(); ) {
        DataPort port = portItr.next();
        for (Iterator<DataEdge> edgeItr = port.getEdges().iterator(); edgeItr.hasNext(); ) {
            DataEdge edge = edgeItr.next();
            // Remove the edge from from-port.
            DataPort fromPort = edge.getFromPort();
            fromPort.removeEdge(edge);
            // remove the edge from this port. This is necessary so that
            // type update works properly.
            edgeItr.remove();
            // Remove the edge from the graph.
            this.edges.remove(edge);
            fromPort.getNode().edgeWasRemoved(edge);
        }
        // Remove the port from the node.
        portItr.remove();
        // Remove the port from the graph.
        this.ports.remove(port);
    }
    // Remove edges connected to output ports.
    for (Iterator<DataPort> portItr = nodeImpl.getOutputPorts().iterator(); portItr.hasNext(); ) {
        DataPort port = portItr.next();
        for (Iterator<DataEdge> edgeItr = port.getEdges().iterator(); edgeItr.hasNext(); ) {
            DataEdge edge = edgeItr.next();
            DataPort toPort = edge.getToPort();
            toPort.removeEdge(edge);
            edgeItr.remove();
            this.edges.remove(edge);
            toPort.getNode().edgeWasRemoved(edge);
        }
        portItr.remove();
        this.ports.remove(port);
    }
    for (Iterator<ControlPort> portItr = nodeImpl.getControlOutPorts().iterator(); portItr.hasNext(); ) {
        PortImpl port = portItr.next();
        for (Iterator<? extends EdgeImpl> edgeItr = port.getEdges().iterator(); edgeItr.hasNext(); ) {
            EdgeImpl edge = edgeItr.next();
            PortImpl toPort = edge.getToPort();
            toPort.removeEdge(edge);
            edgeItr.remove();
            this.edges.remove(edge);
            toPort.getNode().edgeWasRemoved(edge);
        }
        portItr.remove();
        this.ports.remove(port);
    }
    PortImpl controlInPort = nodeImpl.getControlInPort();
    if (controlInPort != null) {
        for (Iterator<? extends EdgeImpl> edgeItr = controlInPort.getEdges().iterator(); edgeItr.hasNext(); ) {
            EdgeImpl edge = edgeItr.next();
            PortImpl fromPort = edge.getFromPort();
            fromPort.removeEdge(edge);
            edgeItr.remove();
            this.edges.remove(edge);
            fromPort.getNode().edgeWasRemoved(edge);
        }
        this.ports.remove(controlInPort);
    }
    PortImpl eprPort = nodeImpl.getEPRPort();
    if (eprPort != null) {
        for (Iterator<? extends EdgeImpl> edgeItr = eprPort.getEdges().iterator(); edgeItr.hasNext(); ) {
            EdgeImpl edge = edgeItr.next();
            PortImpl toPort = edge.getToPort();
            toPort.removeEdge(edge);
            edgeItr.remove();
            this.edges.remove(edge);
            toPort.getNode().edgeWasRemoved(edge);
        }
        this.ports.remove(eprPort);
    }
    this.nodes.remove(node);
}
Also used : GraphException(org.apache.airavata.workflow.model.graph.GraphException) SystemDataPort(org.apache.airavata.workflow.model.graph.system.SystemDataPort) DataPort(org.apache.airavata.workflow.model.graph.DataPort) DataEdge(org.apache.airavata.workflow.model.graph.DataEdge) ControlPort(org.apache.airavata.workflow.model.graph.ControlPort)

Aggregations

DataPort (org.apache.airavata.workflow.model.graph.DataPort)100 ComponentDataPort (org.apache.airavata.workflow.model.component.ComponentDataPort)39 WorkflowRuntimeException (org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException)26 Node (org.apache.airavata.workflow.model.graph.Node)26 DataEdge (org.apache.airavata.workflow.model.graph.DataEdge)20 WSNode (org.apache.airavata.workflow.model.graph.ws.WSNode)16 GraphException (org.apache.airavata.workflow.model.graph.GraphException)15 InputNode (org.apache.airavata.workflow.model.graph.system.InputNode)13 DataType (org.apache.airavata.model.application.io.DataType)12 DynamicNode (org.apache.airavata.workflow.model.graph.dynamic.DynamicNode)12 Port (org.apache.airavata.workflow.model.graph.Port)11 WSPort (org.apache.airavata.workflow.model.graph.ws.WSPort)10 SubWorkflowNode (org.apache.airavata.workflow.model.graph.subworkflow.SubWorkflowNode)9 DataType (org.apache.airavata.model.appcatalog.appinterface.DataType)8 NodeImpl (org.apache.airavata.workflow.model.graph.impl.NodeImpl)8 LinkedList (java.util.LinkedList)7 ControlPort (org.apache.airavata.workflow.model.graph.ControlPort)7 EPRPort (org.apache.airavata.workflow.model.graph.EPRPort)7 EndForEachNode (org.apache.airavata.workflow.model.graph.system.EndForEachNode)6 ForEachNode (org.apache.airavata.workflow.model.graph.system.ForEachNode)6