public void rememberDataLinkSender(DataLink dl) { SenderPort sender = dl.getReceivesFrom(); if (sender != null) { if (!senderDataLinkMap.containsKey(sender)) senderDataLinkMap.put(sender, new ArrayList<DataLink>()); senderDataLinkMap.get(sender).add(dl); } }
@Override public void dataLinkSender(DataLink dl) { SenderPort sender = dl.getReceivesFrom(); if (sender != null) { if (!senderDataLinkMap.containsKey(sender)) senderDataLinkMap.put(sender, new ArrayList<DataLink>()); senderDataLinkMap.get(sender).add(dl); } }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (getSendsTo() == null ? 0 : getSendsTo().hashCode()); result = prime * result + (getReceivesFrom() == null ? 0 : getReceivesFrom().hashCode()); return result; }
@SuppressWarnings("unchecked") public List<DataLink> datalinksFrom(SenderPort senderPort) { Workflow wf = findParent(Workflow.class, (Child<Workflow>) senderPort); List<DataLink> links = new ArrayList<>(); for (DataLink link : wf.getDataLinks()) if (link.getReceivesFrom().equals(senderPort)) links.add(link); Collections.sort(links); return links; }
@Override public String toString() { return String.format("%s %s=>%s", getClass().getSimpleName(), getReceivesFrom() != null ? getReceivesFrom().getName() : "", getSendsTo() != null ? getSendsTo().getName() : ""); }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; DataLink other = (DataLink) obj; if (getSendsTo() == null) { if (other.getSendsTo() != null) return false; } else if (!getSendsTo().equals(other.getSendsTo())) return false; if (getReceivesFrom() == null) { if (other.getReceivesFrom() != null) return false; } else if (!getReceivesFrom().equals(other.getReceivesFrom())) return false; if (getMergePosition() == null) { if (other.getMergePosition() != null) return false; } else if (!getMergePosition().equals(other.getMergePosition())) { return false; } return true; }
@Override public int compareTo(Object other) { if (getClass() != other.getClass()) { int classCompare = getClass().getCanonicalName().compareTo( other.getClass().getCanonicalName()); if (classCompare != 0) // Allow having say InputPorts and OutputPorts in the same sorted list return classCompare; } DataLink o1 = this; DataLink o2 = (DataLink) other; int senderCompare = portCompare(o1.getReceivesFrom(), o2.getReceivesFrom()); if (senderCompare != 0) return senderCompare; int receiverCompare = portCompare(o1.getSendsTo(), o2.getSendsTo()); if (receiverCompare != 0) return receiverCompare; // TODO Don't refer to impl from api? return NullSafeComparator.compareObjects(o1.getMergePosition(), o2.getMergePosition()); }
SenderPort source = incomingLink.getReceivesFrom(); if (!(source instanceof OutputProcessorPort)) continue;
@Override protected void cloneInto(WorkflowBean clone, Cloning cloning) { DataLink cloneLink = (DataLink) clone; cloneLink.setMergePosition(getMergePosition()); cloneLink.setReceivesFrom(cloning.cloneIfNotInCache(getReceivesFrom())); cloneLink.setSendsTo(cloning.cloneIfNotInCache(getSendsTo())); }
URI wfUri = uriForBean(wf); URI receivesFrom = relativePath(wfUri, uriForBean(dataLink.getReceivesFrom())); URI sendsTo = relativePath(wfUri, uriForBean(dataLink.getSendsTo()));
@Override public void visitDataLink(DataLink bean) { ReceiverPort sendsTo = bean.getSendsTo(); SenderPort receivesFrom = bean.getReceivesFrom();
link.setAbout(uri.toASCIIString()); URI fromUri = uriTools.relativeUriForBean( dataLink.getReceivesFrom(), wf); URI toUri = uriTools.relativeUriForBean(dataLink.getSendsTo(), wf);
links.add(datalink(dl.getReceivesFrom()) + " -> " + datalink(dl.getSendsTo())); Collections.sort(links); if (!links.isEmpty()) {