org.apache.ojb.broker.query
Class Criteria

java.lang.Object
  extended byorg.apache.ojb.broker.query.Criteria
All Implemented Interfaces:
java.io.Serializable

public class Criteria
extends java.lang.Object
implements java.io.Serializable

Persistent Criteria can be used to retrieve sets of objects based on their attributes Normally each attribute is ANDed together, an OR can be performed by creating a new PersistentCriteria and adding it.

Criteria are used, rather than a simple string, because they can be precompiled for efficiency. This code is based on stuff from COBRA - Java Object Persistence Layer Copyright (C) 1997, 1998 DB Harvey-George eMail: cobra@lowrent.org

Version:
$Id: Criteria.java,v 1.39 2004/02/21 21:41:45 brj Exp $
Author:
Jakob Braeuchi
See Also:
Serialized Form

Field Summary
static int AND
           
protected static int IN_LIMIT
           
static int NONE
           
static int OR
           
static java.lang.String PARENT_QUERY_PREFIX
           
(package private) static long serialVersionUID
           
 
Constructor Summary
Criteria()
          Constructor declaration
Criteria(SelectionCriteria aSelectionCriteria)
          Constructor with a SelectionCriteria
 
Method Summary
protected  java.util.List _getGroupby()
          Gets the groupby for ReportQueries, the elements are of class Criteria.FieldHelper
protected  java.util.List _getOrderby()
          Answer the Vector with all orderBy, the elements are of class Criteria.FieldHelper
 void addAndCriteria(Criteria pc)
          ANDs two sets of criteria together:
 void addBetween(java.lang.Object attribute, java.lang.Object value1, java.lang.Object value2)
          Adds BETWEEN criteria, customer_id between 1 and 10
 void addColumnEqualTo(java.lang.String column, java.lang.Object value)
          Adds and equals (=) criteria, CUST_ID = 10034 attribute will NOT be translated into column name
 void addColumnEqualToField(java.lang.String column, java.lang.Object fieldName)
          Adds and equals (=) criteria for field comparison.
protected  void addCriteria(Criteria crit)
           
protected  void addCriteria(java.util.Vector criteria)
           
 void addEqualTo(java.lang.String attribute, java.lang.Object value)
          Adds and equals (=) criteria, customer_id = 10034
 void addEqualToColumn(java.lang.String attribute, java.lang.String colName)
          Adds and equals (=) criteria for column comparison.
 void addEqualToField(java.lang.String attribute, java.lang.String fieldName)
          Adds and equals (=) criteria for field comparison.
 void addExists(Query subQuery)
          Adds an exists(sub query)
 void addGreaterOrEqualThan(java.lang.Object attribute, java.lang.Object value)
          Adds GreaterOrEqual Than (>=) criteria, customer_id >= 10034
 void addGreaterOrEqualThanField(java.lang.String attribute, java.lang.Object value)
          Adds GreaterOrEqual Than (>=) criteria, customer_id >= person_id
 void addGreaterThan(java.lang.Object attribute, java.lang.Object value)
          Adds Greater Than (>) criteria, customer_id > 10034
 void addGreaterThanField(java.lang.String attribute, java.lang.Object value)
          Adds Greater Than (>) criteria, customer_id > person_id
 void addGroupBy(FieldHelper aField)
          Deprecated. use QueryByCriteria#addGroupBy
 void addGroupBy(java.lang.String fieldName)
          Deprecated. use QueryByCriteria#addGroupBy
 void addGroupBy(java.lang.String[] fieldNames)
          Deprecated. use QueryByCriteria#addGroupBy
 void addIn(java.lang.Object attribute, Query subQuery)
          IN Criteria with SubQuery
 void addIn(java.lang.String attribute, java.util.Collection values)
          Adds IN criteria, customer_id in(1,10,33,44) large values are split into multiple InCriteria IN (1,10) OR IN(33, 44)
 void addIsNull(java.lang.String attribute)
          Adds is Null criteria, customer_id is Null
 void addLessOrEqualThan(java.lang.Object attribute, java.lang.Object value)
          Adds LessOrEqual Than (<=) criteria, customer_id <= 10034
 void addLessOrEqualThanField(java.lang.String attribute, java.lang.Object value)
          Adds LessOrEqual Than (<=) criteria, customer_id <= person_id
 void addLessThan(java.lang.Object attribute, java.lang.Object value)
          Adds Less Than (<) criteria, customer_id < 10034
 void addLessThanField(java.lang.String attribute, java.lang.Object value)
          Adds Less Than (<) criteria, customer_id < person_id
 void addLike(java.lang.Object attribute, java.lang.Object value)
          Adds Like (LIKE) criteria, customer_name LIKE "m%ller"
 void addNotBetween(java.lang.Object attribute, java.lang.Object value1, java.lang.Object value2)
          Adds NOT BETWEEN criteria, customer_id not between 1 and 10
 void addNotEqualTo(java.lang.Object attribute, java.lang.Object value)
          Adds NotEqualTo (<>) criteria, customer_id <> 10034
 void addNotEqualToColumn(java.lang.String attribute, java.lang.String colName)
          Adds and equals (<>) criteria for column comparison.
 void addNotEqualToField(java.lang.String attribute, java.lang.String fieldName)
          Adds and equals (=) criteria for field comparison.
 void addNotExists(Query subQuery)
          Adds a not exists(sub query)
 void addNotIn(java.lang.String attribute, java.util.Collection values)
          Adds NOT IN criteria, customer_id not in(1,10,33,44) large values are split into multiple InCriteria NOT IN (1,10) AND NOT IN(33, 44)
 void addNotIn(java.lang.String attribute, Query subQuery)
          NOT IN Criteria with SubQuery
 void addNotLike(java.lang.String attribute, java.lang.Object value)
          Adds Like (NOT LIKE) criteria, customer_id NOT LIKE 10034
 void addNotNull(java.lang.String attribute)
          Adds not Null criteria, customer_id is not Null
 void addOrCriteria(Criteria pc)
          ORs two sets of criteria together:
 void addOrderBy(FieldHelper aField)
          Deprecated. use QueryByCriteria#addOrderBy
 void addOrderBy(java.lang.String fieldName)
          Deprecated. use #addOrderByAscending(String fieldName)
 void addOrderBy(java.lang.String fieldName, boolean sortAscending)
          Adds a field for orderBy
 void addOrderByAscending(java.lang.String fieldName)
          Deprecated. use QueryByCriteria#addOrderByAscending
 void addOrderByDescending(java.lang.String fieldName)
          Deprecated. use QueryByCriteria#addOrderByDescending
 void addPrefetchedRelationship(java.lang.String aName)
          Deprecated. use QueryByCriteria#addPrefetchedRelationship
protected  void addSelectionCriteria(SelectionCriteria selectionCrit)
           
 void addSql(java.lang.String anSqlStatment)
          Adds freeform SQL criteria, REVERSE(name) like 're%'
 Criteria copy(boolean includeGroupBy, boolean includeOrderBy, boolean includePrefetchedRelationships)
          make a copy of the criteria
 java.lang.String getAlias()
           
protected  java.util.Vector getCriteria()
          Get a Vector with all sub criteria
 java.util.Enumeration getElements()
          Get an Enumeration with all sub criteria
(package private)  java.util.List getGroupby()
          Gets the groupby for ReportQueries of all Criteria and Sub Criteria the elements are of class FieldHelper
(package private)  java.util.List getOrderby()
          Answer the orderBy of all Criteria and Sub Criteria the elements are of class Criteria.FieldHelper
 Criteria getParentCriteria()
           
(package private)  java.util.List getPrefetchedRelationships()
          Returns the prefetchedRelationships.
 QueryByCriteria getQuery()
           
 int getType()
          Answer the type
 boolean isEmbraced()
          Answer true if embraced, ANDed criteria are embraced
 boolean isEmpty()
          Answer true if no sub criteria available
 boolean isNegative()
           
 void setAlias(java.lang.String alias)
          Sets the alias.
 void setEmbraced(boolean embraced)
          Set embraced
 void setNegative(boolean negative)
          Flags the whole Criteria as negative.
(package private)  void setParentCriteria(Criteria criteria)
           
(package private)  void setQuery(QueryByCriteria query)
           
 void setType(int type)
          Set the type
protected  java.util.List splitInCriteria(java.lang.Object attribute, java.util.Collection values, boolean negative, int inLimit)
          Answer a List of InCriteria based on values, each InCriteria contains only inLimit values
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

OR

public static final int OR
See Also:
Constant Field Values

AND

public static final int AND
See Also:
Constant Field Values

NONE

public static final int NONE
See Also:
Constant Field Values

PARENT_QUERY_PREFIX

public static java.lang.String PARENT_QUERY_PREFIX

IN_LIMIT

protected static final int IN_LIMIT
Constructor Detail

Criteria

public Criteria()
Constructor declaration


Criteria

public Criteria(SelectionCriteria aSelectionCriteria)
Constructor with a SelectionCriteria

Parameters:
aSelectionCriteria -
Method Detail

copy

public Criteria copy(boolean includeGroupBy,
                     boolean includeOrderBy,
                     boolean includePrefetchedRelationships)
make a copy of the criteria

Parameters:
includeGroupBy -
includeOrderBy -
includePrefetchedRelationships -
Returns:

addSelectionCriteria

protected void addSelectionCriteria(SelectionCriteria selectionCrit)

addCriteria

protected void addCriteria(Criteria crit)

addCriteria

protected void addCriteria(java.util.Vector criteria)

splitInCriteria

protected java.util.List splitInCriteria(java.lang.Object attribute,
                                         java.util.Collection values,
                                         boolean negative,
                                         int inLimit)
Answer a List of InCriteria based on values, each InCriteria contains only inLimit values

Parameters:
attribute -
values -
negative -
inLimit - the maximum number of values for IN (-1 for no limit)
Returns:

getElements

public java.util.Enumeration getElements()
Get an Enumeration with all sub criteria

Returns:
Enumaration

getCriteria

protected java.util.Vector getCriteria()
Get a Vector with all sub criteria

Returns:
Vector

getType

public int getType()
Answer the type

Returns:
int

setType

public void setType(int type)
Set the type

Parameters:
type -

isEmbraced

public boolean isEmbraced()
Answer true if embraced, ANDed criteria are embraced


setEmbraced

public void setEmbraced(boolean embraced)
Set embraced

Parameters:
embraced -

addEqualTo

public void addEqualTo(java.lang.String attribute,
                       java.lang.Object value)
Adds and equals (=) criteria, customer_id = 10034

Parameters:
attribute - The field name to be used
value - An object representing the value of the field

addColumnEqualTo

public void addColumnEqualTo(java.lang.String column,
                             java.lang.Object value)
Adds and equals (=) criteria, CUST_ID = 10034 attribute will NOT be translated into column name

Parameters:
column - The column name to be used without translation
value - An object representing the value of the column

addColumnEqualToField

public void addColumnEqualToField(java.lang.String column,
                                  java.lang.Object fieldName)
Adds and equals (=) criteria for field comparison. The field name will be translated into the appropriate columnName by SqlStatement. The attribute will NOT be translated into column name

Parameters:
column - The column name to be used without translation
fieldName - An object representing the value of the field

addEqualToField

public void addEqualToField(java.lang.String attribute,
                            java.lang.String fieldName)
Adds and equals (=) criteria for field comparison. The field name will be translated into the appropriate columnName by SqlStatement.
name = boss.name

Parameters:
attribute - The field name to be used
fieldName - The field name to compare with

addNotEqualToField

public void addNotEqualToField(java.lang.String attribute,
                               java.lang.String fieldName)
Adds and equals (=) criteria for field comparison. The field name will be translated into the appropriate columnName by SqlStatement.
name <> boss.name

Parameters:
attribute - The field name to be used
fieldName - The field name to compare with

addNotEqualToColumn

public void addNotEqualToColumn(java.lang.String attribute,
                                java.lang.String colName)
Adds and equals (<>) criteria for column comparison. The column Name will NOT be translated.
name <> T_BOSS.LASTNMAE

Parameters:
attribute - The field name to be used
colName - The name of the column to compare with

addEqualToColumn

public void addEqualToColumn(java.lang.String attribute,
                             java.lang.String colName)
Adds and equals (=) criteria for column comparison. The column Name will NOT be translated.
name = T_BOSS.LASTNMAE

Parameters:
attribute - The field name to be used
colName - The name of the column to compare with

addGreaterOrEqualThan

public void addGreaterOrEqualThan(java.lang.Object attribute,
                                  java.lang.Object value)
Adds GreaterOrEqual Than (>=) criteria, customer_id >= 10034

Parameters:
attribute - The field name to be used
value - An object representing the value of the field

addGreaterOrEqualThanField

public void addGreaterOrEqualThanField(java.lang.String attribute,
                                       java.lang.Object value)
Adds GreaterOrEqual Than (>=) criteria, customer_id >= person_id

Parameters:
attribute - The field name to be used
value - The field name to compare with

addLessOrEqualThan

public void addLessOrEqualThan(java.lang.Object attribute,
                               java.lang.Object value)
Adds LessOrEqual Than (<=) criteria, customer_id <= 10034

Parameters:
attribute - The field name to be used
value - An object representing the value of the field

addLessOrEqualThanField

public void addLessOrEqualThanField(java.lang.String attribute,
                                    java.lang.Object value)
Adds LessOrEqual Than (<=) criteria, customer_id <= person_id

Parameters:
attribute - The field name to be used
value - The field name to compare with

addLike

public void addLike(java.lang.Object attribute,
                    java.lang.Object value)
Adds Like (LIKE) criteria, customer_name LIKE "m%ller"

Parameters:
attribute - The field name to be used
value - An object representing the value of the field
See Also:
LikeCriteria

addNotLike

public void addNotLike(java.lang.String attribute,
                       java.lang.Object value)
Adds Like (NOT LIKE) criteria, customer_id NOT LIKE 10034

Parameters:
attribute - The field name to be used
value - An object representing the value of the field
See Also:
LikeCriteria

addNotEqualTo

public void addNotEqualTo(java.lang.Object attribute,
                          java.lang.Object value)
Adds NotEqualTo (<>) criteria, customer_id <> 10034

Parameters:
attribute - The field name to be used
value - An object representing the value of the field

addGreaterThan

public void addGreaterThan(java.lang.Object attribute,
                           java.lang.Object value)
Adds Greater Than (>) criteria, customer_id > 10034

Parameters:
attribute - The field name to be used
value - An object representing the value of the field

addGreaterThanField

public void addGreaterThanField(java.lang.String attribute,
                                java.lang.Object value)
Adds Greater Than (>) criteria, customer_id > person_id

Parameters:
attribute - The field name to be used
value - The field to compare with

addLessThan

public void addLessThan(java.lang.Object attribute,
                        java.lang.Object value)
Adds Less Than (<) criteria, customer_id < 10034

Parameters:
attribute - The field name to be used
value - An object representing the value of the field

addLessThanField

public void addLessThanField(java.lang.String attribute,
                             java.lang.Object value)
Adds Less Than (<) criteria, customer_id < person_id

Parameters:
attribute - The field name to be used
value - The field to compare with

addOrderBy

public void addOrderBy(java.lang.String fieldName)
Deprecated. use #addOrderByAscending(String fieldName)

Adds a field for orderBy, order is ASCENDING

Parameters:
fieldName - The field name to be used

addOrderBy

public void addOrderBy(java.lang.String fieldName,
                       boolean sortAscending)
Adds a field for orderBy

Parameters:
fieldName - The field name to be used
sortAscending - true for ASCENDING, false for DESCENDING

addOrderBy

public void addOrderBy(FieldHelper aField)
Deprecated. use QueryByCriteria#addOrderBy

Adds a field for orderBy

Parameters:
aField -

addOrderByAscending

public void addOrderByAscending(java.lang.String fieldName)
Deprecated. use QueryByCriteria#addOrderByAscending

Adds a field for orderBy ASCENDING

Parameters:
fieldName - The field name to be used

addOrderByDescending

public void addOrderByDescending(java.lang.String fieldName)
Deprecated. use QueryByCriteria#addOrderByDescending

Adds a field for orderBy DESCENDING

Parameters:
fieldName - The field name to be used

getOrderby

java.util.List getOrderby()
Answer the orderBy of all Criteria and Sub Criteria the elements are of class Criteria.FieldHelper

Returns:
List

_getOrderby

protected java.util.List _getOrderby()
Answer the Vector with all orderBy, the elements are of class Criteria.FieldHelper

Returns:
List

addOrCriteria

public void addOrCriteria(Criteria pc)
ORs two sets of criteria together:
 active = true AND balance < 0 OR active = true AND overdraft = 0
 

Parameters:
pc - criteria

addIsNull

public void addIsNull(java.lang.String attribute)
Adds is Null criteria, customer_id is Null

Parameters:
attribute - The field name to be used

addNotNull

public void addNotNull(java.lang.String attribute)
Adds not Null criteria, customer_id is not Null

Parameters:
attribute - The field name to be used

addBetween

public void addBetween(java.lang.Object attribute,
                       java.lang.Object value1,
                       java.lang.Object value2)
Adds BETWEEN criteria, customer_id between 1 and 10

Parameters:
attribute - The field name to be used
value1 - The lower boundary
value2 - The upper boundary

addNotBetween

public void addNotBetween(java.lang.Object attribute,
                          java.lang.Object value1,
                          java.lang.Object value2)
Adds NOT BETWEEN criteria, customer_id not between 1 and 10

Parameters:
attribute - The field name to be used
value1 - The lower boundary
value2 - The upper boundary

addIn

public void addIn(java.lang.String attribute,
                  java.util.Collection values)
Adds IN criteria, customer_id in(1,10,33,44) large values are split into multiple InCriteria IN (1,10) OR IN(33, 44)

Parameters:
attribute - The field name to be used
values - The value Collection

addNotIn

public void addNotIn(java.lang.String attribute,
                     java.util.Collection values)
Adds NOT IN criteria, customer_id not in(1,10,33,44) large values are split into multiple InCriteria NOT IN (1,10) AND NOT IN(33, 44)

Parameters:
attribute - The field name to be used
values - The value Collection

addIn

public void addIn(java.lang.Object attribute,
                  Query subQuery)
IN Criteria with SubQuery

Parameters:
attribute -
subQuery -

addNotIn

public void addNotIn(java.lang.String attribute,
                     Query subQuery)
NOT IN Criteria with SubQuery

Parameters:
attribute -
subQuery -

addSql

public void addSql(java.lang.String anSqlStatment)
Adds freeform SQL criteria, REVERSE(name) like 're%'

Parameters:
anSqlStatment - The free form SQL-Statement

addAndCriteria

public void addAndCriteria(Criteria pc)
ANDs two sets of criteria together:

Parameters:
pc - criteria

addExists

public void addExists(Query subQuery)
Adds an exists(sub query)

Parameters:
subQuery - sub-query

addNotExists

public void addNotExists(Query subQuery)
Adds a not exists(sub query)

Parameters:
subQuery - sub-query

isEmpty

public boolean isEmpty()
Answer true if no sub criteria available

Returns:
boolean

getGroupby

java.util.List getGroupby()
Gets the groupby for ReportQueries of all Criteria and Sub Criteria the elements are of class FieldHelper

Returns:
List of FieldHelper

_getGroupby

protected java.util.List _getGroupby()
Gets the groupby for ReportQueries, the elements are of class Criteria.FieldHelper

Returns:
List of Criteria.FieldHelper

addGroupBy

public void addGroupBy(java.lang.String fieldName)
Deprecated. use QueryByCriteria#addGroupBy

Adds a groupby fieldName for ReportQueries.

Parameters:
fieldName - The groupby to set

addGroupBy

public void addGroupBy(FieldHelper aField)
Deprecated. use QueryByCriteria#addGroupBy

Adds a field for groupby

Parameters:
aField -

addGroupBy

public void addGroupBy(java.lang.String[] fieldNames)
Deprecated. use QueryByCriteria#addGroupBy

Adds an array of groupby fieldNames for ReportQueries.

Parameters:
fieldNames - The groupby to set

getPrefetchedRelationships

java.util.List getPrefetchedRelationships()
Returns the prefetchedRelationships.

Returns:
List

addPrefetchedRelationship

public void addPrefetchedRelationship(java.lang.String aName)
Deprecated. use QueryByCriteria#addPrefetchedRelationship

add the name of aRelationship for prefetch read


getAlias

public java.lang.String getAlias()
Returns:
String

setAlias

public void setAlias(java.lang.String alias)
Sets the alias. Empty String is regarded as null.

Parameters:
alias - The alias to set

getQuery

public QueryByCriteria getQuery()
Returns:

setQuery

void setQuery(QueryByCriteria query)
Parameters:
query -

getParentCriteria

public Criteria getParentCriteria()
Returns:

setParentCriteria

void setParentCriteria(Criteria criteria)
Parameters:
criteria -

toString

public java.lang.String toString()

isNegative

public boolean isNegative()
Returns:
Returns the negative.

setNegative

public void setNegative(boolean negative)
Flags the whole Criteria as negative.

Parameters:
negative - The negative to set.


Authors: Thomas Mahler and others. (C) 2000 - 2003 Apache Software Foundation
All rights reserved. Published under the Apache License.
http://db.apache.org/ojb
Version: 1.0.rc5, 2003-12-14