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 ACriteriaNoderepresenting a logical AND operator.Criteria TheCriteriaitself is the base definition of functionality which theCriteriaNodeandCriteriaLeafimplementations are to support.CriteriaAccessor Provides an accessor for aCriteriaproperty.CriteriaAccessor.CriteriaMutator Provides a mutator for aCriteriaproperty.CriteriaAccessor.CriteriaProperty Provides aCriteriaproperty.CriteriaFactory<Q> TheCriteriaFactoryconstructs 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> ACriteriaLeafrepresenting a EQUAL WITH expression.GreaterOrEqualThanCriteria<T> ACriteriaLeafrepresenting a GREATER OR EQUAL THAN expression.GreaterThanCriteria<T> ACriteriaLeafrepresenting a GREATER THAN expression.IntersectWithCriteria ACriteriaNoderepresenting a logical INTERSECT operator.LessOrEqualThanCriteria<T> ACriteriaLeafrepresenting a LESS OR EQUAL THAN expression.LessThanCriteria<T> ACriteriaLeafrepresenting a LESS THAN expression.NotCriteria ACriteriaNoderepresenting a logical NOT operator.NotEqualWithCriteria<T> ACriteriaLeafrepresenting a NOT EQUAL WITH expression.OrCriteria ACriteriaNoderepresenting a logical OR operator.PartitionQueryFactory<Q,PS> ThePartitionQueryFactoryis a specialization of theQueryFactoryin 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> TheQueryFactorygenerates 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 baseCriteriaLeaffunctionality provided forCriteriaLeafimplementations.AbstractCriteriaNode Base class with the baseCriteriaNodefunctionality provided forCriteriaNodeimplementations.AbstractSingleCriteriaNode Base class with the baseSingleCriteriaNodefunctionality provided forSingleCriteriaNodeimplementations.CriteriaSugar Declarative syntactic sugar which may be statically imported in order to allow declarative definitions ofCriteriatrees: ...CriteriaUtility The Class CriteriaUtility.ExpressionCriteriaFactoryImpl Implements aCriteriaFactorywhich is capable of parsing an expression such as the following one: ( ( ( City = 'Berlin' ) OR ( City = 'Munich' ) ) AND ( Surname = 'Miller' ) ).ExpressionQueryFactoryImpl TheExpressionCriteriaFactoryImplis capable of creating queryStringinstances fromCriteriainstances; the queryStringinstances 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.