Class InMemoryExpressionEvaluator
- java.lang.Object
-
- org.datanucleus.store.query.expression.AbstractExpressionEvaluator
-
- org.datanucleus.store.query.inmemory.InMemoryExpressionEvaluator
-
- All Implemented Interfaces:
ExpressionEvaluator
public class InMemoryExpressionEvaluator extends AbstractExpressionEvaluator
Class providing evaluation of java "string-based" queries in-memory.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) java.lang.String
candidateAlias
Alias name for the candidate.(package private) ClassLoaderResolver
clr
(package private) ExecutionContext
ec
(package private) Imports
imports
(package private) java.util.Map
parameterValues
Map of input parameter values, keyed by their name.(package private) java.lang.String
queryLanguage
(package private) QueryManager
queryMgr
(package private) java.util.Deque<java.lang.Object>
stack
(package private) java.util.Map<java.lang.String,java.lang.Object>
state
Map of state variables for query evaluation.(package private) java.util.Map<java.lang.String,java.lang.Object>
variableValues
Map of variable values, keyed by the variable name.
-
Constructor Summary
Constructors Constructor Description InMemoryExpressionEvaluator(ExecutionContext ec, java.util.Map params, java.util.Map<java.lang.String,java.lang.Object> state, Imports imports, ClassLoaderResolver clr, java.lang.String candidateAlias, java.lang.String queryLang)
Constructor for an in-memory evaluator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getIntegerForLiteral(Literal lit)
Convenience method to get an int value from the supplied literal.java.util.Map
getParameterValues()
java.lang.String
getQueryLanguage()
private java.lang.Object
getValueForArrayExpression(ArrayExpression arrayExpr)
java.lang.Object
getValueForExpression(Expression expr)
java.lang.Object
getValueForInvokeExpression(InvokeExpression invokeExpr)
Method to evaluate an InvokeExpression.java.lang.Object
getValueForPrimaryExpression(PrimaryExpression primExpr)
Convenience method to get the value for a PrimaryExpression.java.lang.Object
getValueForVariableExpression(VariableExpression varExpr)
Convenience method to get the (current) value for a VariableExpression.java.util.Map<java.lang.String,java.lang.Object>
getVariableExpressionValues()
protected java.lang.Object
processAddExpression(Expression expr)
Method to process the supplied ADD expression.protected java.lang.Object
processAndExpression(Expression expr)
Method to process the supplied AND expression.protected java.lang.Object
processBitAndExpression(Expression expr)
Method to process the supplied BITWISE AND expression.protected java.lang.Object
processBitOrExpression(Expression expr)
Method to process the supplied BITWISE OR expression.protected java.lang.Object
processBitXorExpression(Expression expr)
Method to process the supplied BITWISE XOR expression.protected java.lang.Object
processCaseExpression(CaseExpression expr)
Method to process the supplied case expression.protected java.lang.Object
processCastExpression(Expression expr)
Method to process the supplied cast expression.protected java.lang.Object
processComExpression(Expression expr)
Method to process the supplied COM expression.protected java.lang.Object
processCreatorExpression(CreatorExpression expr)
Method to process the supplied creator expression.protected java.lang.Object
processDivExpression(Expression expr)
Method to process the supplied DIV expression.protected java.lang.Object
processEqExpression(Expression expr)
Method to process the supplied EQ expression.protected java.lang.Object
processGteqExpression(Expression expr)
Method to process the supplied GTEQ expression.protected java.lang.Object
processGtExpression(Expression expr)
Method to process the supplied GT expression.protected java.lang.Object
processInExpression(Expression expr)
Method to process the supplied IN expression.protected java.lang.Object
processInvokeExpression(InvokeExpression expr)
Method to process the supplied invoke expression.protected java.lang.Object
processIsExpression(Expression expr)
Method to process the supplied IS (instanceof) expression.protected java.lang.Object
processIsnotExpression(Expression expr)
Method to process the supplied ISNOT (!instanceof) expression.protected java.lang.Object
processLikeExpression(Expression expr)
Method to process the supplied LIKE expression.protected java.lang.Object
processLiteral(Literal expr)
Method to process the supplied invoke expression.protected java.lang.Object
processLteqExpression(Expression expr)
Method to process the supplied LTEQ expression.protected java.lang.Object
processLtExpression(Expression expr)
Method to process the supplied LT expression.protected java.lang.Object
processModExpression(Expression expr)
Method to process the supplied MOD expression.protected java.lang.Object
processMulExpression(Expression expr)
Method to process the supplied MUL expression.protected java.lang.Object
processNegExpression(Expression expr)
Method to process the supplied NEG expression.protected java.lang.Object
processNoteqExpression(Expression expr)
Method to process the supplied NOTEQ expression.protected java.lang.Object
processNotExpression(Expression expr)
Method to process the supplied NOT expression.protected java.lang.Object
processNotInExpression(Expression expr)
Method to process the supplied NOT IN expression.protected java.lang.Object
processOrExpression(Expression expr)
Method to process the supplied OR expression.protected java.lang.Object
processParameterExpression(ParameterExpression expr)
Method to process the supplied parameter expression.protected java.lang.Object
processPrimaryExpression(PrimaryExpression expr)
Method to process the supplied primary expression.protected java.lang.Object
processSubExpression(Expression expr)
Method to process the supplied SUB expression.protected java.lang.Object
processVariableExpression(VariableExpression expr)
Method to process the supplied variable expression.void
removeVariableValue(java.lang.String id)
Method to remove a variable value.void
setVariableValue(java.lang.String id, java.lang.Object value)
Method to set the value for a variable.-
Methods inherited from class org.datanucleus.store.query.expression.AbstractExpressionEvaluator
compileAdditiveMultiplicativeExpression, compileOrAndExpression, compilePrimaryExpression, compileRelationalExpression, compileUnaryExpression, evaluate, processDistinctExpression, processSubqueryExpression
-
-
-
-
Field Detail
-
queryLanguage
java.lang.String queryLanguage
-
stack
java.util.Deque<java.lang.Object> stack
-
parameterValues
java.util.Map parameterValues
Map of input parameter values, keyed by their name.
-
variableValues
java.util.Map<java.lang.String,java.lang.Object> variableValues
Map of variable values, keyed by the variable name. Set during execution.
-
state
java.util.Map<java.lang.String,java.lang.Object> state
Map of state variables for query evaluation.
-
imports
Imports imports
-
ec
ExecutionContext ec
-
clr
ClassLoaderResolver clr
-
queryMgr
QueryManager queryMgr
-
candidateAlias
final java.lang.String candidateAlias
Alias name for the candidate.
-
-
Constructor Detail
-
InMemoryExpressionEvaluator
public InMemoryExpressionEvaluator(ExecutionContext ec, java.util.Map params, java.util.Map<java.lang.String,java.lang.Object> state, Imports imports, ClassLoaderResolver clr, java.lang.String candidateAlias, java.lang.String queryLang)
Constructor for an in-memory evaluator.- Parameters:
ec
- ExecutionContextparams
- Input parametersstate
- Map of state values keyed by their symbolic nameimports
- Any importsclr
- ClassLoader resolvercandidateAlias
- Alias for the candidate class. With JDOQL this is "this".queryLang
- Query language (JDOQL, JPQL etc)
-
-
Method Detail
-
getParameterValues
public java.util.Map getParameterValues()
-
getQueryLanguage
public java.lang.String getQueryLanguage()
-
processAndExpression
protected java.lang.Object processAndExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied AND expression. To be implemented by subclasses.- Overrides:
processAndExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processOrExpression
protected java.lang.Object processOrExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied OR expression. To be implemented by subclasses.- Overrides:
processOrExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processBitOrExpression
protected java.lang.Object processBitOrExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied BITWISE OR expression. To be implemented by subclasses.- Overrides:
processBitOrExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processBitAndExpression
protected java.lang.Object processBitAndExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied BITWISE AND expression. To be implemented by subclasses.- Overrides:
processBitAndExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processBitXorExpression
protected java.lang.Object processBitXorExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied BITWISE XOR expression. To be implemented by subclasses.- Overrides:
processBitXorExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processEqExpression
protected java.lang.Object processEqExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied EQ expression. To be implemented by subclasses.- Overrides:
processEqExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processLikeExpression
protected java.lang.Object processLikeExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied LIKE expression. To be implemented by subclasses.- Overrides:
processLikeExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processNoteqExpression
protected java.lang.Object processNoteqExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied NOTEQ expression. To be implemented by subclasses.- Overrides:
processNoteqExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processGteqExpression
protected java.lang.Object processGteqExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied GTEQ expression. To be implemented by subclasses.- Overrides:
processGteqExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processGtExpression
protected java.lang.Object processGtExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied GT expression. To be implemented by subclasses.- Overrides:
processGtExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processIsExpression
protected java.lang.Object processIsExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied IS (instanceof) expression. To be implemented by subclasses.- Overrides:
processIsExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processIsnotExpression
protected java.lang.Object processIsnotExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied ISNOT (!instanceof) expression. To be implemented by subclasses.- Overrides:
processIsnotExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processCastExpression
protected java.lang.Object processCastExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied cast expression. To be implemented by subclasses.- Overrides:
processCastExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processLteqExpression
protected java.lang.Object processLteqExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied LTEQ expression. To be implemented by subclasses.- Overrides:
processLteqExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processLtExpression
protected java.lang.Object processLtExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied LT expression. To be implemented by subclasses.- Overrides:
processLtExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processAddExpression
protected java.lang.Object processAddExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied ADD expression. To be implemented by subclasses.- Overrides:
processAddExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processSubExpression
protected java.lang.Object processSubExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied SUB expression. To be implemented by subclasses.- Overrides:
processSubExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processDivExpression
protected java.lang.Object processDivExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied DIV expression. To be implemented by subclasses.- Overrides:
processDivExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processModExpression
protected java.lang.Object processModExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied MOD expression. To be implemented by subclasses.- Overrides:
processModExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processMulExpression
protected java.lang.Object processMulExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied MUL expression. To be implemented by subclasses.- Overrides:
processMulExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processNegExpression
protected java.lang.Object processNegExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied NEG expression. To be implemented by subclasses.- Overrides:
processNegExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processComExpression
protected java.lang.Object processComExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied COM expression. To be implemented by subclasses.- Overrides:
processComExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processNotExpression
protected java.lang.Object processNotExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied NOT expression. To be implemented by subclasses.- Overrides:
processNotExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processCreatorExpression
protected java.lang.Object processCreatorExpression(CreatorExpression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied creator expression. To be implemented by subclasses.- Overrides:
processCreatorExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processInvokeExpression
protected java.lang.Object processInvokeExpression(InvokeExpression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied invoke expression. To be implemented by subclasses.- Overrides:
processInvokeExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processInExpression
protected java.lang.Object processInExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied IN expression. To be implemented by subclasses.- Overrides:
processInExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processNotInExpression
protected java.lang.Object processNotInExpression(Expression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied NOT IN expression. To be implemented by subclasses.- Overrides:
processNotInExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processLiteral
protected java.lang.Object processLiteral(Literal expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied invoke expression. To be implemented by subclasses.- Overrides:
processLiteral
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processVariableExpression
protected java.lang.Object processVariableExpression(VariableExpression expr)
Method to process the supplied variable expression. To be implemented by subclasses.- Overrides:
processVariableExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processParameterExpression
protected java.lang.Object processParameterExpression(ParameterExpression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied parameter expression. To be implemented by subclasses.- Overrides:
processParameterExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processPrimaryExpression
protected java.lang.Object processPrimaryExpression(PrimaryExpression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied primary expression. To be implemented by subclasses.- Overrides:
processPrimaryExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
processCaseExpression
protected java.lang.Object processCaseExpression(CaseExpression expr)
Description copied from class:AbstractExpressionEvaluator
Method to process the supplied case expression. To be implemented by subclasses.- Overrides:
processCaseExpression
in classAbstractExpressionEvaluator
- Parameters:
expr
- The expression- Returns:
- The result
-
getValueForInvokeExpression
public java.lang.Object getValueForInvokeExpression(InvokeExpression invokeExpr)
Method to evaluate an InvokeExpression. Will navigate along chained invocations, evaluating the first one, then the second one etc until it gets the value for the passed in expression.- Parameters:
invokeExpr
- The InvokeExpression- Returns:
- The value
-
getValueForArrayExpression
private java.lang.Object getValueForArrayExpression(ArrayExpression arrayExpr)
-
getValueForExpression
public java.lang.Object getValueForExpression(Expression expr)
-
getIntegerForLiteral
public int getIntegerForLiteral(Literal lit)
Convenience method to get an int value from the supplied literal. Returns a value if it is convertible into an int.- Parameters:
lit
- The literal- Returns:
- The int value
- Throws:
NucleusException
- if impossible to convert into an int
-
getValueForPrimaryExpression
public java.lang.Object getValueForPrimaryExpression(PrimaryExpression primExpr)
Convenience method to get the value for a PrimaryExpression.- Parameters:
primExpr
- Expression- Returns:
- The value in the object for this expression
-
setVariableValue
public void setVariableValue(java.lang.String id, java.lang.Object value)
Method to set the value for a variable.- Parameters:
id
- Id of the variablevalue
- The value to use
-
removeVariableValue
public void removeVariableValue(java.lang.String id)
Method to remove a variable value.- Parameters:
id
- The id of the variable
-
getValueForVariableExpression
public java.lang.Object getValueForVariableExpression(VariableExpression varExpr)
Convenience method to get the (current) value for a VariableExpression. If the variable has no current value, throws aVariableNotSetException
.- Parameters:
varExpr
- Variable Expression- Returns:
- The value
- Throws:
VariableNotSetException
- Thrown when the variable has no value currently set.
-
getVariableExpressionValues
public java.util.Map<java.lang.String,java.lang.Object> getVariableExpressionValues()
-
-