Package org.refcodes.criteria
This implies the creation of query statements from the criteria which can be applied to data sinks; such as databases (SQL like statements). In turn, this also implies parsing of criteria trees from a query statement (provided as logical operators in your code). Such parsable query statement can look as follows:
( ( ( City = 'Berlin' ) OR ( City = 'Munich' ) ) AND ( Surname = 'Miller' ) )A dedicated CriteriaFactory implementation is required (and already provided) for parsing the above query statement.
The refcodes-criteria framework consists of the following components:
A Criteria represents an atomic query or atomic logical operator with which complex queries can be constructed in an object oriented manner by combining the Criteria instances in a tree structure. From this tree structure, query statements can be generated. In turn, a query statement provided as logical operators can be parsed for the construction of a Criteria tree (see example above)s.
This means that a Criteria query is constructed from a Criteria tree with CriteriaNode node instances and CriteriaLeaf leaf instances. A node may contain other node instances and/or other leaf instances, all of which being the node's children.
CriteriaNode
:
A CriteriaNode tree node may represent a logical AND or a logical OR or a
logical NOT applied on the node's children Criteria (CriteriaNode instances
and CriteriaLeaf instances).
CriteriaLeaf
:
A CriteriaLeaf tree leaf is an expression usually relating to a key (for
example identifying a table's column in a database) and a value, both of
which consolidating an expression (for example "City = 'Munich'").
SingleCriteriaNode
:
A special specialization of the CriteriaNode, allowing just one child. This
is required for nodes representing for example a logical NOT.
Criteria
:
The Criteria itself is the base definition of functionality which the
CriteriaNode and CriteriaLeaf implementations are to support. Mainly, a
Criteria is to have a name (for example "AND", "OR", "LESS_THAN" and so on).
CriteriaSugar
:
DeclarativeCreteria is a utility class which may be statically imported in
order to allow declarative definitions of Criteria trees. In the Java code
this may look as follows (simplified):
import static org.refcodes.criteria.-DeclarativeCriteria.*;
...
Criteria theCriteria = and( or( equalWith( "City", "Berlin" ), equalWith( "City", "Munich" ) ), equalWith( "Surname", "Miller" ) );
...
CriteriaFactory
:
The CriteriaFactory constructs a Criteria (tree) from the provided query. The
syntax of the query is implementation specific and may look as follows:
( ( ( City = 'Berlin' ) OR ( City = 'Munich' ) ) AND ( Surname = 'Miller' ) )CAUTION: The syntax supported for the query statement is implementation depended!
The ExpressionCriteriaFactoryImpl implements a CriteriaFactory being capable of parsing the above query.
QueryFactory
:
The QueryFactory generates a query from the provided Criteria (tree). The
resulting query may be targeted at a database and therefore be SQL like.
CAUTION: The syntax supported for the query statement is implementation depended!
-
Interface Summary Interface Description AndCriteria ACriteriaNode
representing a logical AND operator.Criteria TheCriteria
itself is the base definition of functionality which theCriteriaNode
andCriteriaLeaf
implementations are to support.CriteriaAccessor Provides an accessor for aCriteria
property.CriteriaAccessor.CriteriaMutator Provides a mutator for aCriteria
property.CriteriaAccessor.CriteriaProperty Provides aCriteria
property.CriteriaFactory<Q> TheCriteriaFactory
constructs aCriteria
(tree) from the provided query.CriteriaLeaf<T> A CriteriaLeaf tree leaf is an expression usually relating to a key (for example identifying a table's column in a database) and a value, both of which consolidating an expression (for example "City = 'Munich'").CriteriaNode A CriteriaNode tree node may represent a logical AND or a logical OR or a logical NOT applied on the node's children Criteria (CriteriaNode instances and CriteriaLeaf instances).EqualWithCriteria<T> ACriteriaLeaf
representing a EQUAL WITH expression.GreaterOrEqualThanCriteria<T> ACriteriaLeaf
representing a GREATER OR EQUAL THAN expression.GreaterThanCriteria<T> ACriteriaLeaf
representing a GREATER THAN expression.IntersectWithCriteria ACriteriaNode
representing a logical INTERSECT operator.LessOrEqualThanCriteria<T> ACriteriaLeaf
representing a LESS OR EQUAL THAN expression.LessThanCriteria<T> ACriteriaLeaf
representing a LESS THAN expression.NotCriteria ACriteriaNode
representing a logical NOT operator.NotEqualWithCriteria<T> ACriteriaLeaf
representing a NOT EQUAL WITH expression.OrCriteria ACriteriaNode
representing a logical OR operator.PartitionQueryFactory<Q,PS> ThePartitionQueryFactory
is a specialization of theQueryFactory
in that it is capable of generating queries targeting at a dedicated partition of a (database) cluster, the partion's query does not contain obsolete query statements enhancing the database's query processing performance.QueryFactory<Q> TheQueryFactory
generates a query from the providedCriteria
(tree).SingleCriteriaNode A special specialization of theCriteriaNode
, allowing just one child. -
Class Summary Class Description AbstractCriteria AbstractCriteriaLeaf<T> Base class with the baseCriteriaLeaf
functionality provided forCriteriaLeaf
implementations.AbstractCriteriaNode Base class with the baseCriteriaNode
functionality provided forCriteriaNode
implementations.AbstractSingleCriteriaNode Base class with the baseSingleCriteriaNode
functionality provided forSingleCriteriaNode
implementations.CriteriaSugar Declarative syntactic sugar which may be statically imported in order to allow declarative definitions ofCriteria
trees: ...CriteriaUtility The Class CriteriaUtility.ExpressionCriteriaFactoryImpl Implements aCriteriaFactory
which is capable of parsing an expression such as the following one: ( ( ( City = 'Berlin' ) OR ( City = 'Munich' ) ) AND ( Surname = 'Miller' ) ).ExpressionQueryFactoryImpl TheExpressionCriteriaFactoryImpl
is capable of creating queryString
instances fromCriteria
instances; the queryString
instances which can be used as parts of SQL statements. -
Exception Summary Exception Description ComplexCriteriaException The Class ComplexCriteriaException.CriteriaException The Class CriteriaException.CriteriaRuntimeException The Class CriteriaRuntimeException.UnknownCriteriaRuntimeException The Class UnknownCriteriaRuntimeException.