Search in sources :

Example 31 with Port

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

the class PortViewer method graphCanvasChanged.

/**
 * @see org.apache.airavata.xbaya.ui.graph.GraphCanvasListener#graphCanvasChanged(org.apache.airavata.xbaya.ui.graph.GraphCanvasEvent)
 */
public void graphCanvasChanged(GraphCanvasEvent event) {
    GraphCanvasEventType type = event.getType();
    GraphCanvas graphCanvas = event.getGraphCanvas();
    switch(type) {
        case INPUT_PORT_SELECTED:
            Port inputPort = graphCanvas.getSelectedInputPort();
            setInputPort(inputPort);
            break;
        case OUTPUT_PORT_SELECTED:
            Port outputPort = graphCanvas.getSelectedOutputPort();
            setOutputPort(outputPort);
            break;
        case GRAPH_LOADED:
        case NAME_CHANGED:
        case NODE_SELECTED:
    }
}
Also used : GraphCanvasEventType(org.apache.airavata.xbaya.ui.graph.GraphCanvasEvent.GraphCanvasEventType) DataPort(org.apache.airavata.workflow.model.graph.DataPort) Port(org.apache.airavata.workflow.model.graph.Port) GraphCanvas(org.apache.airavata.xbaya.ui.graph.GraphCanvas)

Example 32 with Port

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

the class EndDoWhileNodeGUI method setPortPositions.

/**
 * @see edu.indiana.extreme.xbaya.graph.gui.NodeGUI#setPortPositions()
 */
@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;
        if (i < inputPorts.size() / 2) {
            offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        } else {
            offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * (i + 1));
        }
        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);
        Point offset = new Point(this.getBounds().width - PortGUI.DATA_PORT_SIZE / 2, (int) (this.headHeight + PORT_INITIAL_GAP + PORT_GAP * (outputPorts.size() / 2.0 + i)));
        NodeController.getGUI(port).setOffset(offset);
    }
}
Also used : Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point) Point(java.awt.Point)

Example 33 with Port

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

the class EndifNodeGUI method setPortPositions.

/**
 * @see org.apache.airavata.xbaya.ui.graph.NodeGUI#setPortPositions()
 */
@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;
        if (i < inputPorts.size() / 2) {
            offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        } else {
            offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * (i + 1));
        }
        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);
        Point offset = new Point(this.getBounds().width - PortGUI.DATA_PORT_SIZE / 2, (int) (this.headHeight + PORT_INITIAL_GAP + PORT_GAP * (outputPorts.size() / 2.0 + i)));
        NodeController.getGUI(port).setOffset(offset);
    }
    // control-in
    Port controlInPort = this.node.getControlInPort();
    if (controlInPort != null) {
        NodeController.getGUI(controlInPort).setOffset(new Point(0, 0));
    }
    // control-out
    for (Port controlOutPort : this.node.getControlOutPorts()) {
        NodeController.getGUI(controlOutPort).setOffset(new Point(getBounds().width, getBounds().height - this.headHeight / 2));
        // Has only one
        break;
    }
}
Also used : Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point) Point(java.awt.Point)

Example 34 with Port

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

the class IfNodeGUI 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);
    }
    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);
    PortGUI truePortGUI = NodeController.getGUI(controlOutPort1);
    truePortGUI.setOffset(offset);
    truePortGUI.setPortText("T");
    Port controlOutPort2 = controlOutPorts.get(1);
    offset = new Point(this.getBounds().width, getBounds().height - this.headHeight / 2);
    PortGUI falsePortGUI = NodeController.getGUI(controlOutPort2);
    falsePortGUI.setOffset(offset);
    falsePortGUI.setPortText("F");
// No outputs
}
Also used : PortGUI(org.apache.airavata.xbaya.ui.graph.PortGUI) 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 35 with Port

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

the class GraphUtil method validateConnection.

/**
 * @param edge
 * @throws GraphException
 */
public static void validateConnection(Edge edge) throws GraphException {
    Port fromPort = edge.getFromPort();
    Port toPort = edge.getToPort();
    if (edge instanceof ControlEdge) {
        if (!(fromPort instanceof ControlPort && toPort instanceof ControlPort)) {
            throw new GraphException(MessageConstants.UNEXPECTED_ERROR);
        }
    } else if (edge instanceof DataEdge) {
        if (fromPort instanceof EPRPort) {
            // TODO
            return;
        }
        if (!(fromPort instanceof DataPort || fromPort instanceof EPRPort) || !(toPort instanceof DataPort)) {
            throw new GraphException(MessageConstants.UNEXPECTED_ERROR);
        }
        DataPort fromDataPort = (DataPort) fromPort;
        DataPort toDataPort = (DataPort) toPort;
        DataType fromType = fromDataPort.getType();
        DataType toType = toDataPort.getType();
        if (toDataPort.getEdges().size() > 1) {
            throw new GraphException(MessageConstants.MORE_THAN_ONE_CONNECTIONS);
        }
        // ok
        if (fromPort.getNode() instanceof WSNode) {
            if ("registerStream".equals(((WSNode) fromPort.getNode()).getOperationName())) {
                return;
            }
        }
        if (!(fromType == null || fromType.equals(WSConstants.XSD_ANY_TYPE) || fromType.equals(new QName(WSConstants.XSD_NS_URI, "anyType")) || toType == null || toType.equals(WSConstants.XSD_ANY_TYPE) || toType.equals(new QName(WSConstants.XSD_NS_URI, "anyType")) || fromType.equals(toType)) && (fromType == null || fromType.equals(WSConstants.LEAD_ANY_TYPE) || fromType.equals(new QName(WSConstants.LEAD_NS_URI, "anyType")) || toType == null || toType.equals(WSConstants.LEAD_ANY_TYPE) || toType.equals(new QName(WSConstants.LEAD_NS_URI, "anyType")) || fromType.equals(toType))) {
            throw new GraphException("Cannot connect ports with different types:" + " \nfrom=\t" + fromType + " \nto=\t" + toType + "");
        }
    }
}
Also used : GraphException(org.apache.airavata.workflow.model.graph.GraphException) DataPort(org.apache.airavata.workflow.model.graph.DataPort) DataEdge(org.apache.airavata.workflow.model.graph.DataEdge) WSNode(org.apache.airavata.workflow.model.graph.ws.WSNode) EPRPort(org.apache.airavata.workflow.model.graph.EPRPort) ControlPort(org.apache.airavata.workflow.model.graph.ControlPort) QName(javax.xml.namespace.QName) DataPort(org.apache.airavata.workflow.model.graph.DataPort) ControlPort(org.apache.airavata.workflow.model.graph.ControlPort) Port(org.apache.airavata.workflow.model.graph.Port) WSPort(org.apache.airavata.workflow.model.graph.ws.WSPort) EPRPort(org.apache.airavata.workflow.model.graph.EPRPort) DataType(org.apache.airavata.model.appcatalog.appinterface.DataType) ControlEdge(org.apache.airavata.workflow.model.graph.ControlEdge)

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