| 
 | Cumulus4j API (1.1.0) | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.cumulus4j.store.query.eval.AbstractExpressionEvaluator<X>
X - the Expression to be evaluated.public abstract class AbstractExpressionEvaluator<X extends Expression>
 Abstract base class for all Expression evaluators.
 
 DataNucleus gives the query implementation a tree composed of Expressions. This tree is nothing more
 than an object-oriented representation of the query to be executed. In order to actually query data, there
 needs to be evaluation logic applying the Expression to the Cumulus4j data structure. This logic is
 implemented in subclasses of AbstractExpressionEvaluator.
 
| Constructor Summary | |
|---|---|
| AbstractExpressionEvaluator(QueryEvaluator queryEvaluator,
                                                       AbstractExpressionEvaluator<?> parent,
                                                       X expression)Create an AbstractExpressionEvaluatorinstance. | |
| Method Summary | |
|---|---|
| protected  Set<Symbol> | _getResultSymbols()Get the Symbols for whichqueryResultDataEntryIDs(ResultDescriptor)(and thusqueryResultObjects(ResultDescriptor)) can return a result. | 
| protected abstract  Set<Long> | _queryResultDataEntryIDs(ResultDescriptor resultDescriptor)Execute a query for the given resultDescriptor. | 
| protected  List<Object> | _queryResultObjects(ResultDescriptor resultDescriptor)Get those objects that match the query criteria for the specified resultDescriptorornull, if the givensymbolis not queryable by the
 evaluator implementation. | 
|  X | getExpression()Get the expression that is to be evaluated by this AbstractExpressionEvaluator. | 
| protected  Class<?> | getFieldType(PrimaryExpression primaryExpression)Get the field type of the PrimaryExpression. | 
|  AbstractExpressionEvaluator<? extends Expression> | getLeft()Get the left branch in the tree structure. | 
|  AbstractExpressionEvaluator<?> | getParent()Get the parent-node in the tree. | 
|  QueryEvaluator | getQueryEvaluator()Get the evaluator responsible for evaluating the entire query. | 
|  Set<Symbol> | getResultSymbols()Get the Symbols for whichqueryResultDataEntryIDs(ResultDescriptor)(and thusqueryResultObjects(ResultDescriptor)) can return a result. | 
|  AbstractExpressionEvaluator<? extends Expression> | getRight()Get the right branch in the tree structure. | 
|  Set<Long> | queryResultDataEntryIDs(ResultDescriptor resultDescriptor)Get those dataEntryIDs that match the query
 criteria for the specifiedresultDescriptorornull,
 if the givensymbolis not queryable by the
 evaluator implementation. | 
|  List<Object> | queryResultObjects(ResultDescriptor resultDescriptor)Get those objects that match the query criteria for the specified resultDescriptorornull, if the givensymbolis not queryable by the
 evaluator implementation. | 
|  void | setLeft(AbstractExpressionEvaluator<? extends Expression> left)Set the left branch in the tree structure. | 
|  void | setRight(AbstractExpressionEvaluator<? extends Expression> right)Set the right branch in the tree structure. | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Constructor Detail | 
|---|
public AbstractExpressionEvaluator(QueryEvaluator queryEvaluator,
                                   AbstractExpressionEvaluator<?> parent,
                                   X expression)
AbstractExpressionEvaluator instance.
queryEvaluator - the evaluator responsible for evaluating the entire query. Must not be null.parent - the parent-node in the tree. The AbstractExpressionEvaluators form a tree analogue to the
 tree provided by DataNucleus. This parent is null, if it is the root of the tree.expression - the expression that is to be evaluated by this AbstractExpressionEvaluator instance.| Method Detail | 
|---|
public QueryEvaluator getQueryEvaluator()
public AbstractExpressionEvaluator<?> getParent()
AbstractExpressionEvaluators form a tree analogue to the
 tree provided by DataNucleus. This parent is null, if it is the root of the tree.
null, if this is the root.public X getExpression()
AbstractExpressionEvaluator.
AbstractExpressionEvaluator.public AbstractExpressionEvaluator<? extends Expression> getLeft()
null if there is none.setLeft(AbstractExpressionEvaluator), 
getRight()public void setLeft(AbstractExpressionEvaluator<? extends Expression> left)
left - the left branch in the tree structure or null if there is none.getLeft()public AbstractExpressionEvaluator<? extends Expression> getRight()
null if there is none.setRight(AbstractExpressionEvaluator), 
getLeft()public void setRight(AbstractExpressionEvaluator<? extends Expression> right)
right - the right branch in the tree structure or null if there is none.getRight()public final Set<Symbol> getResultSymbols()
 Get the Symbols for which queryResultDataEntryIDs(ResultDescriptor) (and thus
 queryResultObjects(ResultDescriptor)) can return a result. For all other Symbols,
 said methods return null.
 
 The implementation in AbstractExpressionEvaluator delegates to
 _getResultSymbols() and caches the result.
 
 Do not override this method, if you're not absolutely sure you want to
 deactivate/override the caching! In most cases, you should override
 _getResultSymbols() instead.
 
Symbols; never null._getResultSymbols()protected Set<Symbol> _getResultSymbols()
 Get the Symbols for which queryResultDataEntryIDs(ResultDescriptor) (and thus
 queryResultObjects(ResultDescriptor)) can return a result. For all other Symbols,
 said methods return null.
 
 The default implementation in AbstractExpressionEvaluator collects the result-symbols
 from its left and its right side and returns this combined
 Set.
 
 This is the actual implementation of getResultSymbols() and should be overridden
 instead of the non-"_"-prefixed version, in most cases.
 
Symbols or null (null is equivalent to an
 empty Set).getResultSymbols()
public final Set<Long> queryResultDataEntryIDs(ResultDescriptor resultDescriptor)
                                        throws UnsupportedOperationException
 Get those dataEntryIDs that match the query
 criteria for the specified resultDescriptor or null,
 if the given symbol is not queryable by the
 evaluator implementation.
 
 This method delegates to _queryResultDataEntryIDs(ResultDescriptor) and caches the
 result. Thus a second call to this method with the same symbol does not trigger a
 second query but instead immediately returns the cached result.
 
 If the subclass of AbstractExpressionEvaluator does not support querying on its
 own (e.g. querying a literal makes no sense at all), this method
 throws an UnsupportedOperationException. The same exception is thrown, if the requested
 query functionality is not yet implemented.
 
resultDescriptor - the descriptor specifying what candidates (usually "this" or a variable) the
 caller is interested in as well as modifiers (e.g. negation)
 affecting the query.
dataEntryIDs that match the query
 criteria for the specified resultSymbol or null, if the symbol is not
 supported (this should be consistent with the implementation of _getResultSymbols()).
UnsupportedOperationException - if the implementation does not support querying at all
 (e.g. because it makes no sense without more context) or if the concrete query situation is not
 yet supported._queryResultDataEntryIDs(ResultDescriptor)
protected abstract Set<Long> _queryResultDataEntryIDs(ResultDescriptor resultDescriptor)
                                               throws UnsupportedOperationException
resultDescriptor. This method should contain
 the concrete logic for queryResultDataEntryIDs(ResultDescriptor) and must be implemented
 by subclasses.
resultDescriptor - the descriptor specifying what candidates (usually "this" or a variable) the
 caller is interested in as well as modifiers (e.g. negation)
 affecting the query.
dataEntryIDs that match the query
 criteria for the specified resultSymbol or null, if the symbol is not
 supported (this should be consistent with the implementation of _getResultSymbols()).
UnsupportedOperationException - if the implementation does not support querying at all
 (e.g. because it makes no sense without more context) or if the concrete query situation is not
 yet supported.queryResultDataEntryIDs(ResultDescriptor)
public final List<Object> queryResultObjects(ResultDescriptor resultDescriptor)
                                      throws UnsupportedOperationException
 Get those objects that match the query criteria for the specified resultDescriptor
 or null, if the given symbol is not queryable by the
 evaluator implementation.
 
 This method delegates to _queryResultObjects(ResultDescriptor) and caches the
 result. Thus a second call to this method with the same symbol does not trigger a
 second query but instead immediately returns the cached result.
 
 If the subclass of AbstractExpressionEvaluator does not support querying on its
 own (e.g. querying a literal makes no sense at all), this method
 throws an UnsupportedOperationException. The same exception is thrown, if the requested
 query functionality is not yet implemented.
 
resultDescriptor - the descriptor specifying what candidates (usually "this" or a variable) the
 caller is interested in as well as modifiers (e.g. negation)
 affecting the query.
null, if the given resultSymbol
 is not supported (this should be consistent with the implementation of _getResultSymbols()).
UnsupportedOperationException - if the implementation does not support querying at all
 (e.g. because it makes no sense without more context) or if the concrete query situation is not
 yet supported._queryResultObjects(ResultDescriptor)
protected List<Object> _queryResultObjects(ResultDescriptor resultDescriptor)
                                    throws UnsupportedOperationException
 Get those objects that match the query criteria for the specified resultDescriptor
 or null, if the given symbol is not queryable by the
 evaluator implementation.
 
 The default implementation of this method in AbstractExpressionEvaluator calls
 queryResultDataEntryIDs(ResultDescriptor) and then resolves the corresponding objects
 (including decrypting their data).
 
resultDescriptor - the descriptor specifying what candidates (usually "this" or a variable) the
 caller is interested in as well as modifiers (e.g. negation)
 affecting the query.
null, if the given resultDescriptor
 is not supported (ResultDescriptor.getSymbol() should be consistent with the implementation of
 _getResultSymbols()).
UnsupportedOperationExceptionqueryResultObjects(ResultDescriptor)protected Class<?> getFieldType(PrimaryExpression primaryExpression)
 Get the field type of the PrimaryExpression. This is always the type of the last element in the list of tuples.
 
 For example, if the given PrimaryExpression references
 this.rating.name and the field name of the class Rating is a String,
 this method returns java.lang.String.
 
primaryExpression - the PrimaryExpression of which to find out the field's type.
primaryExpression.| 
 | Cumulus4j API (1.1.0) | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||