| 
 | Cumulus4j API (1.2.0-SNAPSHOT) | |||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||
See:
          Description
| Class Summary | |
|---|---|
| AbstractExpressionEvaluator<X extends Expression> | Abstract base class for all Expressionevaluators. | 
| 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.2.0-SNAPSHOT) | |||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||