org.apache.pig.impl.plan
Class ReverseDependencyOrderWalker<O extends Operator,P extends OperatorPlan<O>>

java.lang.Object
  extended by org.apache.pig.impl.plan.PlanWalker<O,P>
      extended by org.apache.pig.impl.plan.ReverseDependencyOrderWalker<O,P>

public class ReverseDependencyOrderWalker<O extends Operator,P extends OperatorPlan<O>>
extends PlanWalker<O,P>

ReverseDependencyOrderWalker traverses the graph in such a way that no node is visited before all the nodes that are its successors on have been visited. Beyond this, it does not guarantee any particular order. So, you have a graph with node 1 2 3 4, and edges 1->3, 2->3, and 3->4, this walker guarantees that 4 will be visited before 3 and 3 before 1 and 2, but it does not guarantee whether 1 or 2 will be visited first.


Field Summary
 
Fields inherited from class org.apache.pig.impl.plan.PlanWalker
mPlan
 
Constructor Summary
ReverseDependencyOrderWalker(P plan)
           
 
Method Summary
protected  void doAllSuccessors(O node, Set<O> seen, Collection<O> fifo)
           
 PlanWalker<O,P> spawnChildWalker(P plan)
          Return a new instance of this same type of walker for a subplan.
 void walk(PlanVisitor<O,P> visitor)
          Begin traversing the graph.
 
Methods inherited from class org.apache.pig.impl.plan.PlanWalker
getPlan, setPlan
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReverseDependencyOrderWalker

public ReverseDependencyOrderWalker(P plan)
Parameters:
plan - Plan for this walker to traverse.
Method Detail

walk

public void walk(PlanVisitor<O,P> visitor)
          throws VisitorException
Begin traversing the graph.

Specified by:
walk in class PlanWalker<O extends Operator,P extends OperatorPlan<O>>
Parameters:
visitor - Visitor this walker is being used by.
Throws:
VisitorException - if an error is encountered while walking.

spawnChildWalker

public PlanWalker<O,P> spawnChildWalker(P plan)
Description copied from class: PlanWalker
Return a new instance of this same type of walker for a subplan. When this method is called the same type of walker with the provided plan set as the plan, must be returned. This can then be used to walk subplans. This allows abstract visitors to clone walkers without knowning the type of walker their subclasses used.

Specified by:
spawnChildWalker in class PlanWalker<O extends Operator,P extends OperatorPlan<O>>
Parameters:
plan - Plan for the new walker.
Returns:
Instance of the same type of walker with mPlan set to plan.

doAllSuccessors

protected void doAllSuccessors(O node,
                               Set<O> seen,
                               Collection<O> fifo)
                        throws VisitorException
Throws:
VisitorException


Copyright © ${year} The Apache Software Foundation