openjava.ptree.util
Class QueryExpander

java.lang.Object
  |
  +--openjava.ptree.util.ParseTreeVisitor
        |
        +--openjava.ptree.util.EvaluationShuttle
              |
              +--openjava.ptree.util.ScopeHandler
                    |
                    +--openjava.ptree.util.QueryExpander
Direct Known Subclasses:
OJQueryExpander

public abstract class QueryExpander
extends ScopeHandler

QueryExpander is a ParseTreeVisitor which, as it passes over a parse tree, converts QueryExpressions into regular java constructs.

The non-abstract derived class OJQueryExpander does this by converting the expression to a tree of SaffronRel nodes, and using an optimizer (SaffronPlanner) to choose the optimal java implementation.


Field Summary
 
Fields inherited from class openjava.ptree.util.ScopeHandler
 
Fields inherited from class openjava.ptree.util.EvaluationShuttle
 
Constructor Summary
QueryExpander(Environment env)
           
 
Method Summary
 Expression evaluateDown(BinaryExpression p)
          Expands in union, minus, and intersect.
 Expression evaluateDown(CastExpression p)
           
 Statement evaluateDown(ForStatement p)
          Expand 'for (<> in <>) ...'.
 Expression evaluateDown(InsertExpression p)
           
 Expression evaluateDown(MethodCall p)
          Expands connection.contentsAsArray("qualifier","name"), which was probably generated by expanding connection.name.
 Expression evaluateDown(QueryExpression p)
           
 Expression evaluateDown(UnaryExpression p)
          Expands exists.
protected abstract  Expression expandExpression(Expression p)
          Converts an Expression into a java expression which returns an array.
protected abstract  Statement expandForIn(Variable var, Expression p, StatementList body)
          Converts an Expression of the form for (variable in exp) { body } into a regular java Statement.
 boolean isRelational(Expression p)
           
 
Methods inherited from class openjava.ptree.util.ScopeHandler
evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, pop, push, pushClosedEnvironment
 
Methods inherited from class openjava.ptree.util.EvaluationShuttle
evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateDown, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, evaluateUp, getEnvironment, setEnvironment, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class openjava.ptree.util.ParseTreeVisitor
visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueryExpander

public QueryExpander(Environment env)
Method Detail

evaluateDown

public Expression evaluateDown(QueryExpression p)
                        throws ParseTreeException
Overrides:
evaluateDown in class ScopeHandler
ParseTreeException

evaluateDown

public Expression evaluateDown(InsertExpression p)
                        throws ParseTreeException
Overrides:
evaluateDown in class EvaluationShuttle
ParseTreeException

isRelational

public boolean isRelational(Expression p)

evaluateDown

public Expression evaluateDown(CastExpression p)
                        throws ParseTreeException
Overrides:
evaluateDown in class EvaluationShuttle
ParseTreeException

evaluateDown

public Statement evaluateDown(ForStatement p)
                       throws ParseTreeException
Expand 'for (<> in <>) ...'.

Overrides:
evaluateDown in class ScopeHandler
ParseTreeException

evaluateDown

public Expression evaluateDown(BinaryExpression p)
                        throws ParseTreeException
Expands in union, minus, and intersect.

Overrides:
evaluateDown in class EvaluationShuttle
ParseTreeException

evaluateDown

public Expression evaluateDown(UnaryExpression p)
                        throws ParseTreeException
Expands exists.

Overrides:
evaluateDown in class EvaluationShuttle
ParseTreeException

evaluateDown

public Expression evaluateDown(MethodCall p)
                        throws ParseTreeException
Expands connection.contentsAsArray("qualifier","name"), which was probably generated by expanding connection.name.

Overrides:
evaluateDown in class EvaluationShuttle
ParseTreeException

expandExpression

protected abstract Expression expandExpression(Expression p)
Converts an Expression into a java expression which returns an array.


expandForIn

protected abstract Statement expandForIn(Variable var,
                                         Expression p,
                                         StatementList body)
Converts an Expression of the form for (variable in exp) { body } into a regular java Statement.


SourceForge.net_Logo