Package org.datanucleus.query.expression
Class AbstractExpressionEvaluator
- java.lang.Object
-
- org.datanucleus.query.expression.AbstractExpressionEvaluator
-
- All Implemented Interfaces:
ExpressionEvaluator
- Direct Known Subclasses:
InMemoryExpressionEvaluator
public class AbstractExpressionEvaluator extends Object implements ExpressionEvaluator
Abstract evaluator for an expression. Provides a stack-like process, working its way through the expression tree. Provides methods processXXX that should be implemented by the subclass where it supports the particular operator or expression.
-
-
Constructor Summary
Constructors Constructor Description AbstractExpressionEvaluator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ObjectcompileAdditiveMultiplicativeExpression(Expression expr)protected ObjectcompileOrAndExpression(Expression expr)This method deals with the OR/AND conditions.protected ObjectcompilePrimaryExpression(Expression expr)protected ObjectcompileRelationalExpression(Expression expr)Method to handle a relational expression comparing two expressions and returning a BooleanExpression.protected ObjectcompileUnaryExpression(Expression expr)Objectevaluate(Expression expr)Method to "evaluate" the expression.protected ObjectprocessAddExpression(Expression expr)Method to process the supplied ADD expression.protected ObjectprocessAndExpression(Expression expr)Method to process the supplied AND expression.protected ObjectprocessBitAndExpression(Expression expr)Method to process the supplied BITWISE AND expression.protected ObjectprocessBitOrExpression(Expression expr)Method to process the supplied BITWISE OR expression.protected ObjectprocessBitXorExpression(Expression expr)Method to process the supplied BITWISE XOR expression.protected ObjectprocessCaseExpression(CaseExpression expr)Method to process the supplied case expression.protected ObjectprocessCastExpression(Expression expr)Method to process the supplied cast expression.protected ObjectprocessComExpression(Expression expr)Method to process the supplied COM expression.protected ObjectprocessCreatorExpression(CreatorExpression expr)Method to process the supplied creator expression.protected ObjectprocessDistinctExpression(Expression expr)Method to process the supplied DISTINCT expression.protected ObjectprocessDivExpression(Expression expr)Method to process the supplied DIV expression.protected ObjectprocessEqExpression(Expression expr)Method to process the supplied EQ expression.protected ObjectprocessGteqExpression(Expression expr)Method to process the supplied GTEQ expression.protected ObjectprocessGtExpression(Expression expr)Method to process the supplied GT expression.protected ObjectprocessInExpression(Expression expr)Method to process the supplied IN expression.protected ObjectprocessInvokeExpression(InvokeExpression expr)Method to process the supplied invoke expression.protected ObjectprocessIsExpression(Expression expr)Method to process the supplied IS (instanceof) expression.protected ObjectprocessIsnotExpression(Expression expr)Method to process the supplied ISNOT (!instanceof) expression.protected ObjectprocessLikeExpression(Expression expr)Method to process the supplied LIKE expression.protected ObjectprocessLiteral(Literal expr)Method to process the supplied invoke expression.protected ObjectprocessLteqExpression(Expression expr)Method to process the supplied LTEQ expression.protected ObjectprocessLtExpression(Expression expr)Method to process the supplied LT expression.protected ObjectprocessModExpression(Expression expr)Method to process the supplied MOD expression.protected ObjectprocessMulExpression(Expression expr)Method to process the supplied MUL expression.protected ObjectprocessNegExpression(Expression expr)Method to process the supplied NEG expression.protected ObjectprocessNoteqExpression(Expression expr)Method to process the supplied NOTEQ expression.protected ObjectprocessNotExpression(Expression expr)Method to process the supplied NOT expression.protected ObjectprocessNotInExpression(Expression expr)Method to process the supplied NOT IN expression.protected ObjectprocessOrExpression(Expression expr)Method to process the supplied OR expression.protected ObjectprocessParameterExpression(ParameterExpression expr)Method to process the supplied parameter expression.protected ObjectprocessPrimaryExpression(PrimaryExpression expr)Method to process the supplied primary expression.protected ObjectprocessSubExpression(Expression expr)Method to process the supplied SUB expression.protected ObjectprocessSubqueryExpression(SubqueryExpression expr)Method to process the supplied subquery expression.protected ObjectprocessVariableExpression(VariableExpression expr)Method to process the supplied variable expression.
-
-
-
Method Detail
-
evaluate
public Object evaluate(Expression expr)
Method to "evaluate" the expression.- Specified by:
evaluatein interfaceExpressionEvaluator- Parameters:
expr- The expression- Returns:
- The evaluated expression
-
compileOrAndExpression
protected Object compileOrAndExpression(Expression expr)
This method deals with the OR/AND conditions. A condition specifies a combination of one or more expressions and logical (Boolean) operators and returns a value of TRUE, FALSE, or unknown- Parameters:
expr- The other expression to or/and with- Returns:
- The updated expression
-
compileRelationalExpression
protected Object compileRelationalExpression(Expression expr)
Method to handle a relational expression comparing two expressions and returning a BooleanExpression.- Parameters:
expr- The (relational) expression- Returns:
- The processed expression
-
compileAdditiveMultiplicativeExpression
protected Object compileAdditiveMultiplicativeExpression(Expression expr)
-
compileUnaryExpression
protected Object compileUnaryExpression(Expression expr)
-
compilePrimaryExpression
protected Object compilePrimaryExpression(Expression expr)
-
processOrExpression
protected Object processOrExpression(Expression expr)
Method to process the supplied OR expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processAndExpression
protected Object processAndExpression(Expression expr)
Method to process the supplied AND expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processBitOrExpression
protected Object processBitOrExpression(Expression expr)
Method to process the supplied BITWISE OR expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processBitAndExpression
protected Object processBitAndExpression(Expression expr)
Method to process the supplied BITWISE AND expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processBitXorExpression
protected Object processBitXorExpression(Expression expr)
Method to process the supplied BITWISE XOR expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processEqExpression
protected Object processEqExpression(Expression expr)
Method to process the supplied EQ expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processNoteqExpression
protected Object processNoteqExpression(Expression expr)
Method to process the supplied NOTEQ expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processLikeExpression
protected Object processLikeExpression(Expression expr)
Method to process the supplied LIKE expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processGtExpression
protected Object processGtExpression(Expression expr)
Method to process the supplied GT expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processLtExpression
protected Object processLtExpression(Expression expr)
Method to process the supplied LT expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processGteqExpression
protected Object processGteqExpression(Expression expr)
Method to process the supplied GTEQ expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processLteqExpression
protected Object processLteqExpression(Expression expr)
Method to process the supplied LTEQ expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processIsExpression
protected Object processIsExpression(Expression expr)
Method to process the supplied IS (instanceof) expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processIsnotExpression
protected Object processIsnotExpression(Expression expr)
Method to process the supplied ISNOT (!instanceof) expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processInExpression
protected Object processInExpression(Expression expr)
Method to process the supplied IN expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processNotInExpression
protected Object processNotInExpression(Expression expr)
Method to process the supplied NOT IN expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processAddExpression
protected Object processAddExpression(Expression expr)
Method to process the supplied ADD expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processSubExpression
protected Object processSubExpression(Expression expr)
Method to process the supplied SUB expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processMulExpression
protected Object processMulExpression(Expression expr)
Method to process the supplied MUL expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processDivExpression
protected Object processDivExpression(Expression expr)
Method to process the supplied DIV expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processModExpression
protected Object processModExpression(Expression expr)
Method to process the supplied MOD expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processNegExpression
protected Object processNegExpression(Expression expr)
Method to process the supplied NEG expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processComExpression
protected Object processComExpression(Expression expr)
Method to process the supplied COM expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processNotExpression
protected Object processNotExpression(Expression expr)
Method to process the supplied NOT expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processDistinctExpression
protected Object processDistinctExpression(Expression expr)
Method to process the supplied DISTINCT expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processCreatorExpression
protected Object processCreatorExpression(CreatorExpression expr)
Method to process the supplied creator expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processPrimaryExpression
protected Object processPrimaryExpression(PrimaryExpression expr)
Method to process the supplied primary expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processParameterExpression
protected Object processParameterExpression(ParameterExpression expr)
Method to process the supplied parameter expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processVariableExpression
protected Object processVariableExpression(VariableExpression expr)
Method to process the supplied variable expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processSubqueryExpression
protected Object processSubqueryExpression(SubqueryExpression expr)
Method to process the supplied subquery expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processInvokeExpression
protected Object processInvokeExpression(InvokeExpression expr)
Method to process the supplied invoke expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processCastExpression
protected Object processCastExpression(Expression expr)
Method to process the supplied cast expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
processCaseExpression
protected Object processCaseExpression(CaseExpression expr)
Method to process the supplied case expression. To be implemented by subclasses.- Parameters:
expr- The expression- Returns:
- The result
-
-