Search in sources :

Example 16 with Port

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

the class InstanceNodeGUI method setPortPositions.

/**
 * Sets up the position of ports
 */
@Override
protected void setPortPositions() {
    // inputs
    List<? extends Port> inputPorts = this.node.getInputPorts();
    for (int i = 0; i < inputPorts.size(); i++) {
        Port port = inputPorts.get(i);
        Point offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        NodeController.getGUI(port).setOffset(offset);
    }
    // outputs
    List<? extends Port> outputPorts = this.node.getOutputPorts();
    for (int i = 0; i < outputPorts.size(); i++) {
        Port port = outputPorts.get(i);
        // Use getBounds() instead of this.dimension because subclass might
        // overwrite getBounds() to have different shape.
        Point offset = new Point(this.getBounds().width - PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        NodeController.getGUI(port).setOffset(offset);
    }
    // control out port
    List<? extends Port> controlOutPorts = this.node.getControlOutPorts();
    Port controlOutPort1 = controlOutPorts.get(0);
    Point offset = new Point(getBounds().width / 2, getBounds().height);
    NodeController.getGUI(controlOutPort1).setOffset(offset);
}
Also used : Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point) Point(java.awt.Point)

Example 17 with Port

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

the class TerminateInstanceNodeGUI method setPortPositions.

/**
 * Sets up the position of ports
 */
@Override
protected void setPortPositions() {
    // inputs
    List<? extends Port> inputPorts = this.node.getInputPorts();
    for (int i = 0; i < inputPorts.size(); i++) {
        Port port = inputPorts.get(i);
        Point offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        NodeController.getGUI(port).setOffset(offset);
    }
    // outputs
    List<? extends Port> outputPorts = this.node.getOutputPorts();
    for (int i = 0; i < outputPorts.size(); i++) {
        Port port = outputPorts.get(i);
        // Use getBounds() instead of this.dimension because subclass might
        // overwrite getBounds() to have different shape.
        Point offset = new Point(this.getBounds().width - PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        NodeController.getGUI(port).setOffset(offset);
    }
    // control in port
    Port controlInPort = this.node.getControlInPort();
    NodeController.getGUI(controlInPort).setOffset(new Point(0, 0));
}
Also used : Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point) Point(java.awt.Point)

Example 18 with Port

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

the class DoWhileNodeGUI method setPortPositions.

/**
 * Sets up the position of ports
 */
@Override
protected void setPortPositions() {
    List<? extends Port> inputPorts = this.node.getInputPorts();
    for (int i = 0; i < inputPorts.size(); i++) {
        Port port = inputPorts.get(i);
        Point offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        NodeController.getGUI(port).setOffset(offset);
    }
    // outputs
    List<? extends Port> outputPorts = this.node.getOutputPorts();
    for (int i = 0; i < outputPorts.size(); i++) {
        Port port = outputPorts.get(i);
        // Use getBounds() instead of this.dimension because subclass might
        // overwrite getBounds() to have different shape.
        Point offset = new Point(this.getBounds().width - PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        NodeController.getGUI(port).setOffset(offset);
    }
    PortImpl controlInPort = this.node.getControlInPort();
    if (controlInPort != null) {
        Point offset = new Point(0, this.headHeight / 2);
        NodeController.getGUI(controlInPort).setOffset(offset);
    }
    // There are two controlOutPorts.
    List<? extends Port> controlOutPorts = this.node.getControlOutPorts();
    Port controlOutPort1 = controlOutPorts.get(0);
    Point offset = new Point(getBounds().width, +this.headHeight / 2);
    NodeController.getGUI(controlOutPort1).setOffset(offset);
    Port controlOutPort2 = controlOutPorts.get(1);
    offset = new Point(this.getBounds().width, getBounds().height - this.headHeight / 2);
    NodeController.getGUI(controlOutPort2).setOffset(offset);
}
Also used : Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point) Point(java.awt.Point) PortImpl(org.apache.airavata.workflow.model.graph.impl.PortImpl)

Example 19 with Port

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

the class InstanceNode method edgeWasAdded.

/**
 * @see org.apache.airavata.workflow.model.graph.impl.NodeImpl#edgeWasAdded(org.apache.airavata.workflow.model.graph.Edge)
 */
@Override
protected void edgeWasAdded(Edge edge) throws GraphException {
    super.edgeWasAdded(edge);
    if (edge instanceof ControlEdge) {
        Port toPort = edge.getToPort();
        Node toNode = toPort.getNode();
        /*
             * check if there is already more than instance node connecting to destination node
             */
        if (!(toNode instanceof InstanceNode)) {
            for (Node node : toNode.getControlInPort().getFromNodes()) {
                if ((node instanceof InstanceNode) && this != node) {
                    throw new GraphException("Cannot connect more than one instance node to another node.");
                }
            }
        }
    }
}
Also used : GraphException(org.apache.airavata.workflow.model.graph.GraphException) Port(org.apache.airavata.workflow.model.graph.Port) Node(org.apache.airavata.workflow.model.graph.Node) ControlEdge(org.apache.airavata.workflow.model.graph.ControlEdge)

Example 20 with Port

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

the class ResourceNode method edgeWasAdded.

/**
 * @see org.apache.airavata.workflow.model.graph.impl.NodeImpl#edgeWasAdded(org.apache.airavata.workflow.model.graph.Edge)
 */
@Override
protected void edgeWasAdded(Edge edge) throws GraphException {
    super.edgeWasAdded(edge);
    if (edge instanceof DataEdge) {
        Port toPort = edge.getToPort();
        Node toNode = toPort.getNode();
        Port fromPort = edge.getFromPort();
        Node fromNode = fromPort.getNode();
        if (!(toNode instanceof ResourceNode && fromNode instanceof ResourceNode)) {
            throw new GraphException("Cannot connect Resource Node to other type of nodes");
        }
    }
}
Also used : GraphException(org.apache.airavata.workflow.model.graph.GraphException) DataEdge(org.apache.airavata.workflow.model.graph.DataEdge) Port(org.apache.airavata.workflow.model.graph.Port) Node(org.apache.airavata.workflow.model.graph.Node)

Aggregations

Port (org.apache.airavata.workflow.model.graph.Port)44 DataPort (org.apache.airavata.workflow.model.graph.DataPort)21 Node (org.apache.airavata.workflow.model.graph.Node)20 Point (java.awt.Point)18 InputNode (org.apache.airavata.workflow.model.graph.system.InputNode)18 WSNode (org.apache.airavata.workflow.model.graph.ws.WSNode)12 DataEdge (org.apache.airavata.workflow.model.graph.DataEdge)11 EPRPort (org.apache.airavata.workflow.model.graph.EPRPort)11 WSPort (org.apache.airavata.workflow.model.graph.ws.WSPort)10 GraphException (org.apache.airavata.workflow.model.graph.GraphException)9 OutputNode (org.apache.airavata.workflow.model.graph.system.OutputNode)9 WorkflowRuntimeException (org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException)8 StreamSourceNode (org.apache.airavata.workflow.model.graph.system.StreamSourceNode)8 WSComponentPort (org.apache.airavata.workflow.model.component.ws.WSComponentPort)7 MemoNode (org.apache.airavata.workflow.model.graph.system.MemoNode)7 DataType (org.apache.airavata.model.application.io.DataType)6 Edge (org.apache.airavata.workflow.model.graph.Edge)6 GraphPiece (org.apache.airavata.workflow.model.graph.GraphPiece)6 ConstantNode (org.apache.airavata.workflow.model.graph.system.ConstantNode)6 EndifNode (org.apache.airavata.workflow.model.graph.system.EndifNode)6