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:
}
}
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);
}
}
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;
}
}
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
}
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 + "");
}
}
}
Aggregations