/** * Forward the specified event to all targets * * @param e */ public void sendEvent(WorkflowDataToken e) { for (Datalink link : outgoingLinks) { link.getSink().receiveEvent(e); } }
/** * Forward the specified event to all targets * * @param e */ public void sendEvent(WorkflowDataToken e) { for (Datalink link : outgoingLinks) { link.getSink().receiveEvent(e); } }
/** * Forward the specified event to all targets * * @param e */ public void sendEvent(WorkflowDataToken e) { for (Datalink link : outgoingLinks) { link.getSink().receiveEvent(e); } }
@Override public void refreshView() { datalinkView = new JPanel(); datalinkView.setBorder(new EmptyBorder(5,5,5,5)); JLabel datalinkName = new JLabel("Datalink: " + datalink.getSource().getName() + " -> " + datalink.getSink().getName()); datalinkView.add(datalinkName); }
public static Edit<?> getMoveDatalinkSinkEdit(Dataflow dataflow, Datalink datalink, EventHandlingInputPort sink, Edits edits) { List<Edit<?>> editList = new ArrayList<Edit<?>>(); editList.add(edits.getDisconnectDatalinkEdit(datalink)); if (datalink.getSink() instanceof ProcessorInputPort) { editList .add(getRemoveProcessorInputPortEdit((ProcessorInputPort) datalink .getSink(), edits)); } editList.add(getCreateAndConnectDatalinkEdit(dataflow, datalink .getSource(), sink, edits)); return new CompoundEdit(editList); }
public static Edit<?> getMoveDatalinkSinkEdit(Dataflow dataflow, Datalink datalink, EventHandlingInputPort sink) { List<Edit<?>> editList = new ArrayList<Edit<?>>(); editList.add(edits.getDisconnectDatalinkEdit(datalink)); if (datalink.getSink() instanceof ProcessorInputPort) { editList .add(getRemoveProcessorInputPortEdit((ProcessorInputPort) datalink .getSink())); } editList.add(getCreateAndConnectDatalinkEdit(dataflow, datalink .getSource(), sink)); return new CompoundEdit(editList); }
public static Edit<?> getDisconnectDatalinkAndRemovePortsEdit( Datalink datalink) { List<Edit<?>> editList = new ArrayList<Edit<?>>(); editList.add(edits.getDisconnectDatalinkEdit(datalink)); if (datalink.getSource() instanceof ProcessorOutputPort) { ProcessorOutputPort processorOutputPort = (ProcessorOutputPort) datalink .getSource(); if (processorOutputPort.getOutgoingLinks().size() == 1) { editList .add(getRemoveProcessorOutputPortEdit(processorOutputPort)); } } if (datalink.getSink() instanceof ProcessorInputPort) { editList .add(getRemoveProcessorInputPortEdit((ProcessorInputPort) datalink .getSink())); } return new CompoundEdit(editList); }
public static Edit<?> getDisconnectDatalinkAndRemovePortsEdit( Datalink datalink, Edits edits) { List<Edit<?>> editList = new ArrayList<Edit<?>>(); editList.add(edits.getDisconnectDatalinkEdit(datalink)); if (datalink.getSource() instanceof ProcessorOutputPort) { ProcessorOutputPort processorOutputPort = (ProcessorOutputPort) datalink .getSource(); if (processorOutputPort.getOutgoingLinks().size() == 1) { editList .add(getRemoveProcessorOutputPortEdit(processorOutputPort, edits)); } } if (datalink.getSink() instanceof ProcessorInputPort) { editList .add(getRemoveProcessorInputPortEdit((ProcessorInputPort) datalink .getSink(), edits)); } return new CompoundEdit(editList); }
@Override public String getViewTitle() { return "Data link: " + datalink.getSource().getName() + " -> " + datalink.getSink().getName(); }
public int compare(Datalink link1, Datalink link2) { // Text for link1 EventForwardingOutputPort source1 = link1.getSource(); String sourceName1 = findName(source1); EventHandlingInputPort sink1 = link1.getSink(); String sinkName1 = findName(sink1); String text1 = sourceName1 + " -> " + sinkName1; // Text for link2 EventForwardingOutputPort source2 = link2.getSource(); String sourceName2 = findName(source2); EventHandlingInputPort sink2 = link2.getSink(); String sinkName2 = findName(sink2); String text2 = sourceName2 + " -> " + sinkName2; return text1.compareToIgnoreCase(text2); }
/** * Receive an input event, relay it through the internal output port to all * connected entities */ public void receiveEvent(WorkflowDataToken t) { WorkflowDataToken transformedToken = t.pushOwningProcess(dataflow.getLocalName()); // I'd rather avoid casting to the implementation but in this // case we're in the same package - the only reason to do this // is to allow dummy implementations of parts of this // infrastructure during testing, in 'real' use this should // always be a dataflowimpl if (dataflow instanceof DataflowImpl) { ((DataflowImpl) dataflow).tokenReceived(transformedToken .getOwningProcess(), t.getContext()); } for (Datalink dl : internalOutput.getOutgoingLinks()) { dl.getSink().receiveEvent(transformedToken); } }
/** * Receive an input event, relay it through the internal output port to all * connected entities */ public void receiveEvent(WorkflowDataToken t) { WorkflowDataToken transformedToken = t.pushOwningProcess(dataflow.getLocalName()); // I'd rather avoid casting to the implementation but in this // case we're in the same package - the only reason to do this // is to allow dummy implementations of parts of this // infrastructure during testing, in 'real' use this should // always be a dataflowimpl if (dataflow instanceof DataflowImpl) { ((DataflowImpl) dataflow).tokenReceived(transformedToken .getOwningProcess(), t.getContext()); } for (Datalink dl : internalOutput.getOutgoingLinks()) { dl.getSink().receiveEvent(transformedToken); } }
/** * Receive an input event, relay it through the internal output port to all * connected entities */ public void receiveEvent(WorkflowDataToken t) { WorkflowDataToken transformedToken = t.pushOwningProcess(dataflow.getLocalName()); // I'd rather avoid casting to the implementation but in this // case we're in the same package - the only reason to do this // is to allow dummy implementations of parts of this // infrastructure during testing, in 'real' use this should // always be a dataflowimpl if (dataflow instanceof DataflowImpl) { ((DataflowImpl) dataflow).tokenReceived(transformedToken .getOwningProcess(), t.getContext()); } for (Datalink dl : internalOutput.getOutgoingLinks()) { dl.getSink().receiveEvent(transformedToken); } }
@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(); }
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 } } }
@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()); }
assertEquals("it should be linked to processor_A",processor_A.getInputPorts().get(0),link.getSink());
@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(); }
assertEquals("it should be linked to processor_A",processor_A.getInputPorts().get(0),link.getSink());
assertEquals("it should be linked to processor_A",processor_A.getInputPorts().get(0),link.getSink());