|
Cumulus4j API (1.0.1) |
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||
See:
Description
| Class Summary | |
|---|---|
| AbstractExpressionEvaluator<X extends Expression> |
Abstract base class for all Expression evaluators. |
| AndExpressionEvaluator | Evaluator handling the boolean operation "&&" (AND). |
| ComparisonExpressionEvaluator | Evaluator handling the comparisons ==, <, <=, >, >=. |
| ExpressionHelper | Series of helper methods for processing expressions. |
| ExpressionHelper.ContainsConstantResolver | Resolve Collection.contains(Object) with the argument being a concrete value (a 'constant'). |
| ExpressionHelper.ContainsVariableResolver | Resolve Collection.contains(Object) with the argument being a query variable. |
| InvokeExpressionEvaluator | Evaluator handling method invocations like Collection.contains(...). |
| LiteralEvaluator | Evaluator representing literals. |
| NotExpressionEvaluator | Evaluator handling "!" (negation). |
| OrExpressionEvaluator | Evaluator handling the boolean operation "||" (OR). |
| ParameterExpressionEvaluator | Evaluator representing query parameters. |
| PrimaryExpressionEvaluator | Evaluator representing PrimaryExpressions. |
| PrimaryExpressionResolver |
Abstract base class for easy resolving of PrimaryExpressions. |
| ResultDescriptor | Descriptor specifying what kind of result is expected when a query is executed. |
| SubqueryExpressionEvaluator | Evaluator handling a sub-query. |
| VariableExpressionEvaluator | Evaluator representing variables. |
Evaluators actually doing the query work.
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.
The expression-evaluators are instantiated and arranged to form a tree just like DataNucleus'
Expression tree. Thus for each node in the expression-tree, there is a corresponding
node in the expression-evaluator-tree.
To query data via this expression-evaluator-tree, there are two methods available:
AbstractExpressionEvaluator.queryResultDataEntryIDs(ResultDescriptor)
and AbstractExpressionEvaluator.queryResultObjects(ResultDescriptor).
The 2nd method calls the first method and then resolves the persistable objects for the resulting
dataEntryIDs.
Since the first method does not resolve persistable objects but only their internal IDs, it is much faster
than the 2nd method. queryResultDataEntryIDs(ResultDescriptor) is thus used
internally within the tree to resolve sub-trees (partial results).
For example, the
AndExpressionEvaluator first resolves the
left
and the right
result-dataEntryIDs and then intersects these two sets.
queryResultObjects(ResultDescriptor) is usually only called in the root-node of the
tree at the end of the query process.
In order to resolve variables, the expression-evaluator-tree is not only able to query one single result (the
main query candidate, i.e. "this"), but the caller can tell it what result it should query. This is done by passing a
ResultDescriptor to the query methods.
|
Cumulus4j API (1.0.1) |
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||