Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package org.apache.pig.newplan.logical.optimizer;
 
 
A visitor that walks a logical plan and then applies a given LogicalExpressionVisitor to all expressions it encounters.
 
 public abstract class AllExpressionVisitor extends LogicalRelationalNodesVisitor {
     
     protected LogicalRelationalOperator currentOp;

    

Parameters:
plan LogicalPlan to visit
walker Walker to use to visit the plan.
 
     public AllExpressionVisitor(OperatorPlan plan,
                                 PlanWalker walkerthrows FrontendException {
         super(planwalker);
     }
    
    
Get a new instance of the expression visitor to apply to a given expression.

Parameters:
expr LogicalExpressionPlan that will be visited
Returns:
a new LogicalExpressionVisitor for that expression
 
     abstract protected LogicalExpressionVisitor getVisitor(LogicalExpressionPlan exprthrows FrontendException;
     
     private void visitAll(Collection<LogicalExpressionPlanlexpPlansthrows FrontendException {
 	for (LogicalExpressionPlan plan : lexpPlans) {
 	    LogicalExpressionVisitor v = getVisitor(plan);
 	    v.visit();
 	}
     }
     
     @Override
     public void visit(LOFilter filterthrows FrontendException {
          = filter;
         LogicalExpressionVisitor v = getVisitor(filter.getFilterPlan());
         v.visit();
     }
     
     @Override
     public void visit(LOLimit limitthrows FrontendException {
          = limit;
         if (limit.getLimitPlan() != null) {
             LogicalExpressionVisitor v = getVisitor(limit.getLimitPlan());
             v.visit();
         }
     }
  
     @Override
     public void visit(LOJoin jointhrows FrontendException {
          = join;
         visitAll(join.getExpressionPlanValues());
     }
     
     @Override
     public void visit(LOCube cuthrows FrontendException {
	 = cu;
	for (Integer key : expressionPlans.keySet()) {
	    visitAll(expressionPlans.get(key));
        }
    }
    
    @Override
    public void visit(LOCogroup cgthrows FrontendException {
         = cg;
        MultiMap<IntegerLogicalExpressionPlanexpressionPlans = cg.getExpressionPlans();
        forInteger key : expressionPlans.keySet() ) {
            visitAll(expressionPlans.get(key));
        }
    }
    
    @Override
    public void visit(LOForEach foreachthrows FrontendException {
         = foreach;
        // We have an Inner OperatorPlan in ForEach, so we go ahead
        // and work on that plan
        OperatorPlan innerPlan = foreach.getInnerPlan();
        PlanWalker newWalker = .spawnChildWalker(innerPlan);
        pushWalker(newWalker);
        .walk(this);
        popWalker();
    }
    
    @Override
    public void visit(LOGenerate gen ) throws FrontendException {
         = gen;
        visitAll(gen.getOutputPlans());
    }
    
    @Override
    public void visit(LOInnerLoad loadthrows FrontendException {
        // the expression in LOInnerLoad contains info relative from LOForEach
        // so use LOForeach as currentOp
         = load.getLOForEach();
       
        LogicalExpressionVisitor v = getVisitor(exp);
        v.visit();       
    }
    
    @Override
    public void visit(LOSplitOutput splitOutputthrows FrontendException {
         = splitOutput;
        LogicalExpressionVisitor v = getVisitor(splitOutput.getFilterPlan());
        v.visit();
    }
    @Override
    public void visit(LORank rankthrows FrontendException{
         = rank;
        visitAll(rank.getRankColPlans());
    }
    @Override
    public void visit(LOSort sortthrows FrontendException {
         = sort;
        visitAll(sort.getSortColPlans());
    }
New to GrepCode? Check out our FAQ X