/** * For each processor input, merge input and workflow output get the * incoming link and, if non null, add to a list and return the entire list. */ public synchronized List<? extends Datalink> getLinks() { List<Datalink> result = new ArrayList<Datalink>(); // All processors have a set of input ports each of which has at most // one incoming data link for (TokenProcessingEntity p : getEntities(TokenProcessingEntity.class)) { for (EventHandlingInputPort pip : p.getInputPorts()) { Datalink dl = pip.getIncomingLink(); if (dl != null) { result.add(dl); } } } // Workflow outputs have zero or one incoming data link to their // internal input port for (DataflowOutputPort dop : getOutputPorts()) { Datalink dl = dop.getInternalInputPort().getIncomingLink(); if (dl != null) { result.add(dl); } } return result; }
/** * For each processor input, merge input and workflow output get the * incoming link and, if non null, add to a list and return the entire list. */ public synchronized List<? extends Datalink> getLinks() { List<Datalink> result = new ArrayList<Datalink>(); // All processors have a set of input ports each of which has at most // one incoming data link for (TokenProcessingEntity p : getEntities(TokenProcessingEntity.class)) { for (EventHandlingInputPort pip : p.getInputPorts()) { Datalink dl = pip.getIncomingLink(); if (dl != null) { result.add(dl); } } } // Workflow outputs have zero or one incoming data link to their // internal input port for (DataflowOutputPort dop : getOutputPorts()) { Datalink dl = dop.getInternalInputPort().getIncomingLink(); if (dl != null) { result.add(dl); } } return result; }
/** * For each processor input, merge input and workflow output get the * incoming link and, if non null, add to a list and return the entire list. */ public synchronized List<? extends Datalink> getLinks() { List<Datalink> result = new ArrayList<Datalink>(); // All processors have a set of input ports each of which has at most // one incoming data link for (TokenProcessingEntity p : getEntities(TokenProcessingEntity.class)) { for (EventHandlingInputPort pip : p.getInputPorts()) { Datalink dl = pip.getIncomingLink(); if (dl != null) { result.add(dl); } } } // Workflow outputs have zero or one incoming data link to their // internal input port for (DataflowOutputPort dop : getOutputPorts()) { Datalink dl = dop.getInternalInputPort().getIncomingLink(); if (dl != null) { result.add(dl); } } return result; }
public void actionPerformed(ActionEvent e) { try { Datalink datalink = port.getInternalInputPort().getIncomingLink(); if (datalink == null) { editManager.doDataflowEdit(dataflow, edits.getRemoveDataflowOutputPortEdit(dataflow, port)); } else { List<Edit<?>> editList = new ArrayList<Edit<?>>(); editList.add(Tools.getDisconnectDatalinkAndRemovePortsEdit(datalink)); editList.add(edits.getRemoveDataflowOutputPortEdit(dataflow, port)); editManager.doDataflowEdit(dataflow, new CompoundEdit(editList)); } dataflowSelectionModel.removeSelection(port); } catch (EditException e1) { logger.debug("Delete workflow output port failed", e1); } }
private void addMergedDatalink(EventForwardingOutputPort sourcePort, EventHandlingInputPort sinkPort, Dataflow targetDataflow) throws EditException, WorkflowTranslationException { Merge merge = null; if (sinkPort.getIncomingLink() == null) { merge = edits.createMerge(targetDataflow); // Add to the dataflow edits.getAddMergeEdit(targetDataflow, merge).doEdit(); } else { if (sinkPort.getIncomingLink().getSource() instanceof MergeOutputPort) { merge = ((MergeOutputPort) sinkPort.getIncomingLink() .getSource()).getMerge(); } else { // FIXME: what to do when a Taverna 1 workflow has 2 inputs to a // single port that isn't a merge?? For now throw an exception throw new WorkflowTranslationException( "Unable to translate a workflow that has multiple un-merged inputs to a single port."); } } edits.getConnectMergedDatalinkEdit(merge, sourcePort, sinkPort) .doEdit(); }
private void addMergedDatalink(EventForwardingOutputPort sourcePort, EventHandlingInputPort sinkPort, Dataflow targetFlow) throws EditException, WorkflowTranslationException { Merge merge = null; if (sinkPort.getIncomingLink() == null) { merge = edits.createMerge(sinkPort); // Add to the dataflow edits.getAddMergeEdit(targetFlow, merge).doEdit(); } else { if (sinkPort.getIncomingLink().getSource() instanceof MergeOutputPort) { merge = ((MergeOutputPort) sinkPort.getIncomingLink() .getSource()).getMerge(); } else { // FIXME: what to do when a Taverna 1 workflow has 2 inputs to a // single port that isn't a merge?? For now throw an exception throw new WorkflowTranslationException( "Unable to translate a workflow that has multiple un-merged inputs to a single port."); } } edits.getConnectMergedDatalinkEdit(merge, sourcePort, sinkPort) .doEdit(); }
if (sinkType.equals(DATALINK_TYPES.MERGE.toString())) { Merge merge; if (sinkPort.getIncomingLink() == null) { merge = edits.createMerge(dataflow); edits.getAddMergeEdit(dataflow, merge).doEdit(); } else { if (sinkPort.getIncomingLink().getSource() instanceof MergeOutputPort) { merge = ((MergeOutputPort) sinkPort.getIncomingLink() .getSource()).getMerge(); } else {
if (sinkType.equals(DATALINK_TYPES.MERGE.toString())) { Merge merge; if (sinkPort.getIncomingLink() == null) { merge = edits.createMerge(dataflow); edits.getAddMergeEdit(dataflow, merge).doEdit(); } else { if (sinkPort.getIncomingLink().getSource() instanceof MergeOutputPort) { merge = ((MergeOutputPort) sinkPort.getIncomingLink() .getSource()).getMerge(); } else {
@Test public void testDoEditAction() throws EditException { ConnectDatalinkEdit edit = new ConnectDatalinkEdit(datalink); assertEquals(0, datalink.getSource().getOutgoingLinks().size()); assertNull(datalink.getSink().getIncomingLink()); edit.doEditAction(datalink); assertEquals(1, datalink.getSource().getOutgoingLinks().size()); assertEquals(datalink, datalink.getSource().getOutgoingLinks() .iterator().next()); assertEquals(datalink, datalink.getSink().getIncomingLink()); }
@Test public void testUndoEditAction() throws EditException { ConnectDatalinkEdit edit = new ConnectDatalinkEdit(datalink); assertEquals(0, datalink.getSource().getOutgoingLinks().size()); assertNull(datalink.getSink().getIncomingLink()); edit.doEditAction(datalink); edit.undoEditAction(datalink); assertEquals(0, datalink.getSource().getOutgoingLinks().size()); assertNull(datalink.getSink().getIncomingLink()); }
private void considerNearestUpstream(TokenProcessingEntity investigate) { if (investigate instanceof Processor) for (Condition condition : ((Processor) investigate) .getPreconditionList()) considerInclusion(condition.getControl()); for (EventHandlingInputPort inputPort : investigate.getInputPorts()) { Datalink incomingLink = inputPort.getIncomingLink(); if (incomingLink == null) continue; EventForwardingOutputPort source = incomingLink.getSource(); if (source instanceof ProcessorOutputPort) considerInclusion(((ProcessorOutputPort) source).getProcessor()); else if (source instanceof MergeOutputPort) considerInclusion(((MergeOutputPort) source).getMerge()); else { // Ignore } } }
@Test public void undo() throws Exception { Edit<Merge> theEdit = new ConnectMergedDatalinkEdit(merge,sourcePort,sinkPort); theEdit.doEdit(); theEdit.undo(); assertEquals(0,merge.getInputPorts().size()); assertEquals(0,merge.getOutputPort().getOutgoingLinks().size()); assertEquals(0,sourcePort.getOutgoingLinks().size()); assertNull(sinkPort.getIncomingLink()); }
Edit<?> edit = null; Datalink incomingLink = sink.getIncomingLink(); if (incomingLink == null) { Datalink datalink = edits.createDatalink(source, sink);
Edit<?> edit = null; Datalink incomingLink = sink.getIncomingLink(); if (incomingLink == null) { Datalink datalink = edits.createDatalink(source, sink);
@Test public void redo() throws Exception { Edit<Merge> theEdit = new ConnectMergedDatalinkEdit(merge,sourcePort,sinkPort); theEdit.doEdit(); theEdit.undo(); theEdit.doEdit(); assertEquals(1,merge.getInputPorts().size()); assertTrue(merge.getInputPorts().get(0) instanceof MergeInputPort); assertSame(sourcePort,merge.getInputPorts().get(0).getIncomingLink().getSource()); assertEquals(1,merge.getOutputPort().getOutgoingLinks().size()); assertSame(sinkPort,merge.getOutputPort().getOutgoingLinks().toArray(new Datalink[]{})[0].getSink()); assertEquals(1,sourcePort.getOutgoingLinks().size()); assertTrue(sourcePort.getOutgoingLinks().toArray(new Datalink[]{})[0].getSink() instanceof MergeInputPort); assertTrue(sinkPort.getIncomingLink().getSource() instanceof MergeOutputPort); assertSame(merge.getInputPorts().get(0),sourcePort.getOutgoingLinks().toArray(new Datalink[]{})[0].getSink()); assertSame(sinkPort.getIncomingLink().getSource(),merge.getOutputPort()); }
assertTrue(sinkPort.getIncomingLink().getSource() instanceof MergeOutputPort); assertSame(sinkPort.getIncomingLink().getSource(),merge.getOutputPort());
.getSink(); assertTrue(inputPort_1.getIncomingLink().getSource() instanceof MergeOutputPort); .getIncomingLink().getSource(); assertFalse(inputPort_2.getIncomingLink().getSource() instanceof MergeOutputPortImpl);
.getIncomingLink().getSource().getName()); assertEquals("output_2", workflowOutput_2.getInternalInputPort() .getIncomingLink().getSource().getName());
.getIncomingLink().getSource().getName()); assertEquals("output_2", workflowOutput_2.getInternalInputPort() .getIncomingLink().getSource().getName());
.getIncomingLink().getSource().getName()); assertEquals("output_2", workflowOutput_2.getInternalInputPort() .getIncomingLink().getSource().getName());