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

java.lang.Object
  extended by org.apache.pig.impl.plan.PlanWalker<O,P>
Direct Known Subclasses:
DependencyOrderWalker, DepthFirstWalker, ReverseDependencyOrderWalker

public abstract class PlanWalker<O extends Operator,P extends OperatorPlan<O>>
extends Object

PlanWalker encapsulates the logic to traverse a plan. It is used only by visitors. All walkers must be constructed in a way that they only visit a given node once in a traversal.


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

Field Detail

mPlan

protected P extends OperatorPlan<O> mPlan
Constructor Detail

PlanWalker

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

walk

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

Parameters:
visitor - Visitor this walker is being used by. This can't be set in the constructor because the visitor is constructing this class, and does not yet have a 'this' pointer to send as an argument.
Throws:
VisitorException - if an error is encountered while walking.

spawnChildWalker

public abstract PlanWalker<O,P> spawnChildWalker(P plan)
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.

Parameters:
plan - Plan for the new walker.
Returns:
Instance of the same type of walker with mPlan set to plan.

getPlan

public P getPlan()

setPlan

public void setPlan(P plan)


Copyright © 2007-2012 The Apache Software Foundation