public void actionPerformed(ActionEvent e) { try { Set<? extends Datalink> datalinks = port.getInternalOutputPort().getOutgoingLinks(); if (datalinks.isEmpty()) { editManager.doDataflowEdit(dataflow, edits.getRemoveDataflowInputPortEdit(dataflow, port)); } else { List<Edit<?>> editList = new ArrayList<Edit<?>>(); for (Datalink datalink : datalinks) { editList.add(Tools.getDisconnectDatalinkAndRemovePortsEdit(datalink)); } editList.add(edits.getRemoveDataflowInputPortEdit(dataflow, port)); editManager.doDataflowEdit(dataflow, new CompoundEdit(editList)); } dataflowSelectionModel.removeSelection(port); } catch (EditException e1) { logger.debug("Delete workflow input port failed", e1); } }
public void actionPerformed(ActionEvent e) { try { List<? extends MergeInputPort> inputPorts = merge.getInputPorts(); EventForwardingOutputPort outputPort = merge.getOutputPort(); List<Edit<?>> editList = new ArrayList<Edit<?>>(); for (MergeInputPort inputPort : inputPorts) { Datalink datalink = inputPort.getIncomingLink(); if (datalink != null) { editList.add(Tools.getDisconnectDatalinkAndRemovePortsEdit(datalink)); } } for (Datalink datalink : outputPort.getOutgoingLinks()) { editList.add(Tools.getDisconnectDatalinkAndRemovePortsEdit(datalink)); } if (editList.isEmpty()) { editManager.doDataflowEdit(dataflow, edits.getRemoveMergeEdit(dataflow, merge)); } else { editList.add(edits.getRemoveMergeEdit(dataflow, merge)); editManager.doDataflowEdit(dataflow, new CompoundEdit(editList)); } dataflowSelectionModel.removeSelection(merge); } catch (EditException e1) { logger.debug("Delete merge failed", e1); } }
@Override protected void doEditAction(MergeImpl mergeImpl) throws EditException { Edits edits = new EditsImpl(); mergeInputPort = new MergeInputPortImpl(mergeImpl,sourcePort.getName()+"_tomerge",sinkPort.getDepth()); inLink = edits.createDatalink(sourcePort, mergeInputPort); connectInLinkEdit=edits.getConnectDatalinkEdit(inLink); if (mergeImpl.getOutputPort().getOutgoingLinks().size()==0) { outLink = edits.createDatalink(mergeImpl.getOutputPort(), sinkPort); connectOutLinkEdit=edits.getConnectDatalinkEdit(outLink); } else if (mergeImpl.getOutputPort().getOutgoingLinks().size()==1){ if (mergeImpl.getOutputPort().getOutgoingLinks().toArray(new Datalink[]{})[0].getSink() != sinkPort) { throw new EditException("Cannot add a different sinkPort to a Merge that already has one defined"); } } else { throw new EditException("The merge instance cannot have more that 1 outgoing Datalink"); } mergeImpl.addInputPort(mergeInputPort); connectInLinkEdit.doEdit(); if (connectOutLinkEdit!=null) connectOutLinkEdit.doEdit(); }
@Override protected void doEditAction(MergeImpl mergeImpl) throws EditException { Edits edits = new EditsImpl(); String name = Tools.getUniqueMergeInputPortName(mergeImpl, sourcePort.getName()+"To" + merge.getLocalName() + "_input", 0); mergeInputPort = new MergeInputPortImpl(mergeImpl,name,sinkPort.getDepth()); inLink = edits.createDatalink(sourcePort, mergeInputPort); connectInLinkEdit=edits.getConnectDatalinkEdit(inLink); if (mergeImpl.getOutputPort().getOutgoingLinks().size()==0) { outLink = edits.createDatalink(mergeImpl.getOutputPort(), sinkPort); connectOutLinkEdit=edits.getConnectDatalinkEdit(outLink); } else if (mergeImpl.getOutputPort().getOutgoingLinks().size()==1){ if (mergeImpl.getOutputPort().getOutgoingLinks().toArray(new Datalink[]{})[0].getSink() != sinkPort) { throw new EditException("Cannot add a different sinkPort to a Merge that already has one defined"); } } else { throw new EditException("The merge instance cannot have more that 1 outgoing Datalink"); } mergeImpl.addInputPort(mergeInputPort); connectInLinkEdit.doEdit(); if (connectOutLinkEdit!=null) connectOutLinkEdit.doEdit(); }
@Override protected void doEditAction(MergeImpl mergeImpl) throws EditException { Edits edits = new EditsImpl(); String name = Tools.getUniqueMergeInputPortName(mergeImpl, sourcePort.getName()+"To" + merge.getLocalName() + "_input", 0); mergeInputPort = new MergeInputPortImpl(mergeImpl,name,sinkPort.getDepth()); inLink = edits.createDatalink(sourcePort, mergeInputPort); connectInLinkEdit=edits.getConnectDatalinkEdit(inLink); if (mergeImpl.getOutputPort().getOutgoingLinks().size()==0) { outLink = edits.createDatalink(mergeImpl.getOutputPort(), sinkPort); connectOutLinkEdit=edits.getConnectDatalinkEdit(outLink); } else if (mergeImpl.getOutputPort().getOutgoingLinks().size()==1){ if (mergeImpl.getOutputPort().getOutgoingLinks().toArray(new Datalink[]{})[0].getSink() != sinkPort) { throw new EditException("Cannot add a different sinkPort to a Merge that already has one defined"); } } else { throw new EditException("The merge instance cannot have more that 1 outgoing Datalink"); } mergeImpl.addInputPort(mergeInputPort); connectInLinkEdit.doEdit(); if (connectOutLinkEdit!=null) connectOutLinkEdit.doEdit(); }
Merge m = ((MergeInputPortImpl) link.getSink()).getMerge(); effectiveLink = (Datalink) m .getOutputPort().getOutgoingLinks().toArray()[0]; dataLinkSinkType = determineDatalinkType(effectiveLink.getSink());
Merge m = ((MergeInputPortImpl) link.getSink()).getMergeInstance(); ProcessorPort processorPort = (ProcessorPort) ((Datalink) m .getOutputPort().getOutgoingLinks().toArray()[0]).getSink(); Element proc = new Element(PROCESSOR, T2_WORKFLOW_NAMESPACE); proc.setText(processorPort.getProcessor().getLocalName()); Merge m = ((MergeOutputPortImpl) link.getSource()).getMerge(); ProcessorPort processorPort = (ProcessorPort) ((Datalink) m .getOutputPort().getOutgoingLinks().toArray()[0]).getSink(); Element proc = new Element(PROCESSOR, T2_WORKFLOW_NAMESPACE); proc.setText(processorPort.getProcessor().getLocalName());
@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 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()); }
@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()); }
@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 considerNearestDownstream(TokenProcessingEntity investigate) { if (investigate instanceof Processor) for (Condition condition : ((Processor) investigate) .getControlledPreconditionList()) considerInclusion(condition.getTarget()); for (EventForwardingOutputPort outputPort : investigate .getOutputPorts()) for (Datalink datalink : outputPort.getOutgoingLinks()) { EventHandlingInputPort sink = datalink.getSink(); if (sink instanceof ProcessorInputPort) considerInclusion(((ProcessorInputPort) sink) .getProcessor()); else if (sink instanceof MergeInputPort) considerInclusion(((MergeInputPort) sink).getMerge()); // The merge it self doesn't count as a processor else { // Ignore dataflow ports } } }
assertNotNull(merge.getOutputPort()); assertTrue(merge.getOutputPort() instanceof MergeOutputPort); assertEquals(0,merge.getOutputPort().getOutgoingLinks().size()); 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()); assertEquals(1,merge.getOutputPort().getOutgoingLinks().size()); assertEquals(2,merge.getInputPorts().size()); assertTrue(merge.getInputPorts().get(1) instanceof MergeInputPort);
/** * Check that the outgoing link to the sink port is retained when undoing a second merged input. */ @Test public void undoSecond() throws Exception { Edit<Merge> theEdit = new ConnectMergedDatalinkEdit(merge,sourcePort,sinkPort); theEdit.doEdit(); ProcessorImpl p3=new ProcessorImpl(); ProcessorOutputPortImpl sourcePort2=new ProcessorOutputPortImpl(p3,"source_port2",0,0); Edit<Merge> theEdit2 = new ConnectMergedDatalinkEdit(merge,sourcePort2,sinkPort); theEdit2.doEdit(); theEdit2.undo(); assertEquals(1,merge.getInputPorts().size()); assertEquals(1,merge.getOutputPort().getOutgoingLinks().size()); }
.getOutgoingLinks().size()); assertEquals(1, workflowInput_2.getInternalOutputPort() .getOutgoingLinks().size()); .getOutgoingLinks().toArray()[0]; assertEquals("input_1", link.getSink().getName()); .getOutgoingLinks().toArray()[0]; assertEquals("input_2", link.getSink().getName());
Object[] links = merge.getOutputPort().getOutgoingLinks().toArray();
.getOutgoingLinks().size()); assertEquals(1, workflowInput_2.getInternalOutputPort() .getOutgoingLinks().size()); .getOutgoingLinks().toArray()[0]; assertEquals("input_1", link.getSink().getName()); .getOutgoingLinks().toArray()[0]; assertEquals("input_2", link.getSink().getName());
.getOutgoingLinks().size()); assertEquals(1, workflowInput_2.getInternalOutputPort() .getOutgoingLinks().size()); .getOutgoingLinks().toArray()[0]; assertEquals("input_1", link.getSink().getName()); .getOutgoingLinks().toArray()[0]; assertEquals("input_2", link.getSink().getName());
workflowIn2); assertEquals(1, workflowIn1.getInternalOutputPort().getOutgoingLinks() .size()); assertEquals(1, workflowIn2.getInternalOutputPort().getOutgoingLinks() .size()); .getOutgoingLinks().toArray()[0]; Datalink input2link = (Datalink) workflowIn1.getInternalOutputPort() .getOutgoingLinks().toArray()[0];
workflowIn2); assertEquals(1, workflowIn1.getInternalOutputPort().getOutgoingLinks() .size()); assertEquals(1, workflowIn2.getInternalOutputPort().getOutgoingLinks() .size()); .getOutgoingLinks().toArray()[0]; Datalink input2link = (Datalink) workflowIn1.getInternalOutputPort() .getOutgoingLinks().toArray()[0];