Skip navigation links

Package org.refcodes.criteria

The refcodes-criteria framework allows the construction of criteria for selecting or filtering or identifying issues (such issues could be the selection of entries from a database).

See: Description

Package org.refcodes.criteria Description

The refcodes-criteria framework allows the construction of criteria for selecting or filtering or identifying issues (such issues could be the selection of entries from a database).

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).

CriteriaByDeclaration:

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.statics.-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!

Skip navigation links

Copyright © 2015. All rights reserved.