MCPcopy Create free account
hub / github.com/apache/pig / replaceNode

Method replaceNode

src/org/apache/pig/impl/plan/OperatorPlan.java:617–660  ·  view source on GitHub ↗
(E src, E replacement, E dst, MultiMap<E, E> multiMap)

Source from the content-addressed store, hash-verified

615
616 // replaces (src -> dst) entry in multiMap with (src -> replacement)
617 private boolean replaceNode(E src, E replacement, E dst, MultiMap<E, E> multiMap) {
618 if(multiMap == null) return false;
619
620 if(src == null) return false;
621
622 List<E> nodes = (ArrayList<E>)multiMap.get(src);
623 if (nodes == null) {
624 //we need to add replacement to the multimap as long as replacement != null
625 if(replacement == null) {
626 return false;
627 } else if (dst == null) {
628 ArrayList<E> replacementNodes = new ArrayList<E>();
629 replacementNodes.add(replacement);
630 multiMap.put(src, replacementNodes);
631 return true;
632 } else {
633 return false;
634 }
635 }
636
637 if(dst == null) return false;
638
639 boolean replaced = false;
640 ArrayList<E> replacementNodes = new ArrayList<E>();
641 for(int i = 0; i < nodes.size(); ++i) {
642 E to = nodes.get(i);
643 if(to.equals(dst)) {
644 replaced = true;
645 if(replacement != null) {
646 replacementNodes.add(replacement);
647 }
648 } else {
649 replacementNodes.add(to);
650 }
651 }
652
653 if(replaced) {
654 multiMap.removeKey(src);
655 if(replacementNodes.size() > 0) {
656 multiMap.put(src, replacementNodes);
657 }
658 }
659 return replaced;
660 }
661
662 /**
663 * Replace an existing node in the graph with a new node. The new node

Callers 2

doInsertBetweenMethod · 0.95
swapMethod · 0.95

Calls 6

removeKeyMethod · 0.80
getMethod · 0.65
addMethod · 0.65
sizeMethod · 0.65
putMethod · 0.45
equalsMethod · 0.45

Tested by

no test coverage detected