public static String getUniqueMergeInputPortName(Merge merge, String name, int count) { String uniqueName = name + count; for (MergeInputPort mergeInputPort : merge.getInputPorts()) { if (mergeInputPort.getName().equals(uniqueName)) { return getUniqueMergeInputPortName(merge, name, ++count); } } return uniqueName; }
public static String getUniqueMergeInputPortName(Merge merge, String name, int count) { String uniqueName = name + count; for (MergeInputPort mergeInputPort : merge.getInputPorts()) { if (mergeInputPort.getName().equals(uniqueName)) { return getUniqueMergeInputPortName(merge, name, ++count); } } return uniqueName; }
editList.add(edits.getDisconnectDatalinkEdit(incomingLink)); MergeInputPort mergeInputPort = edits.createMergeInputPort( merge, getUniqueMergeInputPortName(merge, incomingLink .getSource().getName() + "To" + merge.getLocalName() + "_input", counter++), incomingLink.getSink() getUniqueMergeInputPortName(merge, source.getName() + "To" + merge.getLocalName() + "_input", counter), sink.getDepth()); editList.add(edits.getAddMergeInputPortEdit(merge, mergeInputPort));
editList.add(edits.getDisconnectDatalinkEdit(incomingLink)); MergeInputPort mergeInputPort = edits.createMergeInputPort( merge, getUniqueMergeInputPortName(merge, incomingLink .getSource().getName() + "To" + merge.getLocalName() + "_input", getUniqueMergeInputPortName(merge, source.getName() + "To" + merge.getLocalName() + "_input", counter), sink .getDepth());
@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(); }