@Override public boolean apply(@Nullable DAGEdge<V, E> input) { DAGNode<V,E> head = input == null ? null : input.getHead(); return pred.apply(head); } };
@Nullable @Override public DAGNode<V, E> apply(@Nullable DAGEdge<V, E> input) { return input == null ? null : input.getHead(); } };
@Override public boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof DAGEdge) { DAGEdge<?,?> oe = (DAGEdge<?,?>) o; return head.equals(oe.getHead()) && tail.equals(oe.getTail()) && label.equals(oe.getLabel()); } else { return false; } }
@Nullable @Override public DAGEdge<V, E> apply(@Nullable DAGEdge<V, E> input) { if (input == null) { return null; } DAGNode<V,E> nt, nh; nt = func.apply(input.getTail()); nh = func.apply(input.getHead()); if (nt == null) { nt = input.getTail(); } if (nh == null) { nh = input.getHead(); } if (!nt.equals(input.getTail()) || !nh.equals(input.getHead())) { return create(nh, nt, input.getLabel()); } else { return input; } } };
private void replaceNode(DAGNode<Component,Dependency> old, DAGNode<Component,Dependency> repl) { Map<DAGNode<Component,Dependency>, DAGNode<Component,Dependency>> memory = Maps.newHashMap(); graph = graph.replaceNode(old, repl, memory); // loop over a snapshot of the list, replacing nodes Collection<DAGEdge<Component, Dependency>> oldBackEdges = backEdges.values(); backEdges = HashMultimap.create(); for (DAGEdge<Component,Dependency> edge: oldBackEdges) { DAGNode<Component,Dependency> newHead, newTail; newHead = memory.get(edge.getHead()); if (newHead == null) { newHead = edge.getHead(); } newTail = memory.get(edge.getTail()); if (newTail == null) { newTail = edge.getTail(); } DAGEdge<Component,Dependency> newEdge; if (newHead.equals(edge.getHead()) && newTail.equals(edge.getTail())) { newEdge = edge; } else { newEdge = DAGEdge.create(newHead, newTail, edge.getLabel()); } backEdges.put(newHead, newEdge); } }