org.ow2.dragon.persistence.util
Class HibernateQueryHelper

java.lang.Object
  extended by org.ow2.dragon.persistence.util.HibernateQueryHelper

public class HibernateQueryHelper
extends java.lang.Object

A JPA Query Builder. It helps building complex JPA Query by abstracting some query constructs like grouped OR or AND, order by, paging...

Author:
ofabre - ebmwebsourcing

Nested Class Summary
static class HibernateQueryHelper.Parameter
          A class that handles parameter name, value and predicate
 
Field Summary
static java.lang.String CLAUSE_FROM
           
static java.lang.String CLAUSE_GROUPBY
           
static java.lang.String CLAUSE_HAVING
           
static java.lang.String CLAUSE_ORDERBY
           
static java.lang.String CLAUSE_SELECT
           
static java.lang.String CLAUSE_WHERE
           
static java.lang.String INNER_JOIN
           
static java.lang.String LEFT_OUTER_JOIN
           
static java.lang.String OPERATOR_AND
           
static java.lang.String OPERATOR_DISTINCT
           
static java.lang.String OPERATOR_OR
           
static java.lang.String OPERATOR_UPPER
           
static java.lang.String PREDICATE_EQUALS
           
static java.lang.String PREDICATE_IN
           
static java.lang.String PREDICATE_LIKE
           
static java.lang.String PREDICATE_NOTEQUALS
           
static java.lang.String SORT_ASC
           
static java.lang.String SORT_DESC
           
static java.lang.String WILDCARD
           
 
Constructor Summary
HibernateQueryHelper()
          Creates a new builder with an empty params vector and an empty query
HibernateQueryHelper(java.lang.String sql)
          Creates a new builder with an empty params vector and a query buffer initialized with the given sql string
 
Method Summary
 void addValue(java.lang.Object obj)
          Add a values to the inner values vector
 HibernateQueryHelper AND()
          Append an sql "and" operator to the inner sql buffer
 HibernateQueryHelper append(java.lang.String sql)
          Append the given sql string to the inner sql buffer
 HibernateQueryHelper appendCondition(java.lang.String operator, HibernateQueryHelper.Parameter... params)
          Appends a list of conditions on parameter values, linked by the specified operator.
 HibernateQueryHelper appendGroupedAnd(HibernateQueryHelper.Parameter... params)
          See appendCondition(String, Parameter...).
 HibernateQueryHelper appendGroupedOr(HibernateQueryHelper.Parameter... params)
          See appendCondition(String, Parameter...).
 HibernateQueryHelper appendInList(java.lang.String term, java.util.List<?> list)
          Appends a "in" list condition on a particuler term.
 HibernateQueryHelper appendInListWithAnd(java.lang.String term, java.util.List<?> list)
          See appendInList(String, List).
 HibernateQueryHelper appendInnerJoinStatement(java.lang.String parentAlias, java.lang.String fieldName, java.lang.String joinedAlias)
          Append an inner join statement for a given field.
 HibernateQueryHelper appendLeftOuterJoinStatement(java.lang.String parentAlias, java.lang.String fieldName, java.lang.String joinedAlias)
          Append an left outer join statement for a given field.
 HibernateQueryHelper appendMultipleInnerJoinStatement(java.lang.String parentAlias, java.lang.String... properties)
          For each properties: if the property is a dotted property (contains one or more "." character), append an inner join statement for each field following the dot.
 HibernateQueryHelper appendMultipleLeftOuterJoinStatement(java.lang.String parentAlias, java.lang.String... properties)
          For each properties: if the property is a dotted property (contains one or more "." character), append an left outer join statement for each field following the dot.
 HibernateQueryHelper appendSearchCriteriaInQuery(java.lang.String[] criterii, java.lang.String[] properties, java.lang.String clazzAlias, java.lang.String predicate, boolean caseSensitive)
          Append a "where" clause to the sql query.
 HibernateQueryHelper appendSelectDistinctStatement(java.lang.String simpleClazzName, java.lang.String fullClazzName)
          Appends a select distinct statement with the simpleClazzName.toLowerCase as alias
 HibernateQueryHelper appendSelectStatement(java.lang.String simpleClazzName, java.lang.String fullClazzName)
          Appends a select statement with the simpleClazzName.toLowerCase as alias
 HibernateQueryHelper appendSortOption(RequestOptions requestOptions, java.lang.String clazzAlias)
          Append an "order by" sql clause to the inner sql string.
 org.hibernate.Query buildHibernatePaginatedQuery(org.hibernate.Session session, RequestOptions requestOptions)
          Build a JPA query from the inner sql statement and values.
 org.hibernate.Query buildHibernateQuery(org.hibernate.Session session)
          Build a JPA query from the inner sql statement and values
 HibernateQueryHelper closeParen()
          Append an close paren character (")") to the inner sql buffer
 HibernateQueryHelper comma()
          Append a comma character (",") to the inner sql buffer
static com.trg.search.ISearch createSearchContext(java.lang.Class<?> clazz, java.lang.String[] criterii, java.lang.String[] properties, RequestOptions requestOptions, java.lang.String predicate)
           
 java.lang.String createSearchedProperty(java.lang.String clazzAlias, java.lang.String p, boolean caseSensitive)
          Create a searched property.
 HibernateQueryHelper DISTINCT()
          Append an sql "distinct" operator to the inner sql buffer
 HibernateQueryHelper dot()
          Append a dot character (".") to the inner sql buffer
 HibernateQueryHelper FROM()
          Append an sql "from" clause to the inner sql buffer
 HibernateQueryHelper GROUPBY()
          Append an sql "group by" operator to the inner sql buffer
 HibernateQueryHelper HAVING()
          Append an sql "having" operator to the inner sql buffer
 HibernateQueryHelper IN()
          Append an sql "in" operator to the inner sql buffer
 HibernateQueryHelper INNER_JOIN()
          Append an sql "inner join" operator to the inner sql buffer
 HibernateQueryHelper LEFT_OUTER_JOIN()
          Append an sql "left outer join" operator to the inner sql buffer
 HibernateQueryHelper openParen()
          Append an open paren character ("(") to the inner sql buffer
 HibernateQueryHelper OR()
          Append an sql "or" operator to the inner sql buffer
 HibernateQueryHelper ORDERBY()
          Append an sql "order by" operator to the inner sql buffer
 HibernateQueryHelper pad()
          Append a blank character (" ") to the inner sql buffer
 HibernateQueryHelper param()
          Append a question mark character ("?")
 HibernateQueryHelper SELECT()
          Append an sql "select" clause to the inner sql buffer
static java.util.List sortAndPaginateByCriteria(org.springframework.orm.hibernate3.HibernateTemplate template, RequestOptions requestOptions, org.hibernate.criterion.DetachedCriteria detachedCriteria)
           
 java.lang.String toString()
           
 HibernateQueryHelper UPPER()
          Append an sql "UPPER" operator to the inner sql buffer
 HibernateQueryHelper WHERE()
          Append an sql "where" operator to the inner sql buffer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

CLAUSE_SELECT

public static final java.lang.String CLAUSE_SELECT
See Also:
Constant Field Values

OPERATOR_DISTINCT

public static final java.lang.String OPERATOR_DISTINCT
See Also:
Constant Field Values

CLAUSE_FROM

public static final java.lang.String CLAUSE_FROM
See Also:
Constant Field Values

CLAUSE_WHERE

public static final java.lang.String CLAUSE_WHERE
See Also:
Constant Field Values

CLAUSE_GROUPBY

public static final java.lang.String CLAUSE_GROUPBY
See Also:
Constant Field Values

CLAUSE_ORDERBY

public static final java.lang.String CLAUSE_ORDERBY
See Also:
Constant Field Values

CLAUSE_HAVING

public static final java.lang.String CLAUSE_HAVING
See Also:
Constant Field Values

OPERATOR_OR

public static final java.lang.String OPERATOR_OR
See Also:
Constant Field Values

OPERATOR_AND

public static final java.lang.String OPERATOR_AND
See Also:
Constant Field Values

PREDICATE_EQUALS

public static final java.lang.String PREDICATE_EQUALS
See Also:
Constant Field Values

PREDICATE_NOTEQUALS

public static final java.lang.String PREDICATE_NOTEQUALS
See Also:
Constant Field Values

PREDICATE_LIKE

public static final java.lang.String PREDICATE_LIKE
See Also:
Constant Field Values

PREDICATE_IN

public static final java.lang.String PREDICATE_IN
See Also:
Constant Field Values

SORT_ASC

public static final java.lang.String SORT_ASC
See Also:
Constant Field Values

SORT_DESC

public static final java.lang.String SORT_DESC
See Also:
Constant Field Values

WILDCARD

public static final java.lang.String WILDCARD
See Also:
Constant Field Values

INNER_JOIN

public static final java.lang.String INNER_JOIN
See Also:
Constant Field Values

LEFT_OUTER_JOIN

public static final java.lang.String LEFT_OUTER_JOIN
See Also:
Constant Field Values

OPERATOR_UPPER

public static final java.lang.String OPERATOR_UPPER
See Also:
Constant Field Values
Constructor Detail

HibernateQueryHelper

public HibernateQueryHelper()
Creates a new builder with an empty params vector and an empty query


HibernateQueryHelper

public HibernateQueryHelper(java.lang.String sql)
Creates a new builder with an empty params vector and a query buffer initialized with the given sql string

Parameters:
sql - an sql string
Method Detail

append

public HibernateQueryHelper append(java.lang.String sql)
Append the given sql string to the inner sql buffer

Parameters:
sql - an sql string
Returns:
this query builder

pad

public HibernateQueryHelper pad()
Append a blank character (" ") to the inner sql buffer

Returns:
this query builder

dot

public HibernateQueryHelper dot()
Append a dot character (".") to the inner sql buffer

Returns:
this query builder

openParen

public HibernateQueryHelper openParen()
Append an open paren character ("(") to the inner sql buffer

Returns:
this query builder

closeParen

public HibernateQueryHelper closeParen()
Append an close paren character (")") to the inner sql buffer

Returns:
this query builder

param

public HibernateQueryHelper param()
Append a question mark character ("?") to the inner sql buffer

Returns:
this query builder

comma

public HibernateQueryHelper comma()
Append a comma character (",") to the inner sql buffer

Returns:
this query builder

SELECT

public HibernateQueryHelper SELECT()
Append an sql "select" clause to the inner sql buffer

Returns:
this query builder

DISTINCT

public HibernateQueryHelper DISTINCT()
Append an sql "distinct" operator to the inner sql buffer

Returns:
this query builder

FROM

public HibernateQueryHelper FROM()
Append an sql "from" clause to the inner sql buffer

Returns:
this query builder

AND

public HibernateQueryHelper AND()
Append an sql "and" operator to the inner sql buffer

Returns:
this query builder

OR

public HibernateQueryHelper OR()
Append an sql "or" operator to the inner sql buffer

Returns:
this query builder

UPPER

public HibernateQueryHelper UPPER()
Append an sql "UPPER" operator to the inner sql buffer

Returns:
this query builder

WHERE

public HibernateQueryHelper WHERE()
Append an sql "where" operator to the inner sql buffer

Returns:
this query builder

IN

public HibernateQueryHelper IN()
Append an sql "in" operator to the inner sql buffer

Returns:
this query builder

GROUPBY

public HibernateQueryHelper GROUPBY()
Append an sql "group by" operator to the inner sql buffer

Returns:
this query builder

ORDERBY

public HibernateQueryHelper ORDERBY()
Append an sql "order by" operator to the inner sql buffer

Returns:
this query builder

HAVING

public HibernateQueryHelper HAVING()
Append an sql "having" operator to the inner sql buffer

Returns:
this query builder

INNER_JOIN

public HibernateQueryHelper INNER_JOIN()
Append an sql "inner join" operator to the inner sql buffer

Returns:
this query builder

LEFT_OUTER_JOIN

public HibernateQueryHelper LEFT_OUTER_JOIN()
Append an sql "left outer join" operator to the inner sql buffer

Returns:
this query builder

appendGroupedAnd

public HibernateQueryHelper appendGroupedAnd(HibernateQueryHelper.Parameter... params)
See appendCondition(String, Parameter...). The operator used is "and"

Parameters:
params - a list of parameters to link with the operator. Nothing appended if null or empty
Returns:
this query builder

appendGroupedOr

public HibernateQueryHelper appendGroupedOr(HibernateQueryHelper.Parameter... params)
See appendCondition(String, Parameter...). The operator used is "or"

Parameters:
params - a list of parameters to link with the operator. Nothing appended if null or empty
Returns:
this query builder

appendCondition

public HibernateQueryHelper appendCondition(java.lang.String operator,
                                            HibernateQueryHelper.Parameter... params)
Appends a list of conditions on parameter values, linked by the specified operator. For exemple, if the given operator is "or" and two params (name:foo1, value:bar1, predicate:like) (name:foo2, value:bar2, predicate:like), then the appended string is : (foo1 like ? or foo2 like ?) ; in the same time two values are added to the builder inner values vector (bar1, bar2)

Parameters:
operator - an operator ("or", "and",...). Nothing appended if null or empty
params - a list of parameters to link with the operator. Nothing appended if null or empty
Returns:
this query builder

appendSearchCriteriaInQuery

public HibernateQueryHelper appendSearchCriteriaInQuery(java.lang.String[] criterii,
                                                        java.lang.String[] properties,
                                                        java.lang.String clazzAlias,
                                                        java.lang.String predicate,
                                                        boolean caseSensitive)
Append a "where" clause to the sql query.

Parameters:
criterii - an array of criterii ( String )
properties - the properties to search on
queryString - the StringBuffer representing the hibernate query
clazzAlias - the simple class name used as alias
predicate - type of search (strict equality, similarity...)
caseSensitive - true if the search must be done with case sensitivity enabled

createSearchedProperty

public java.lang.String createSearchedProperty(java.lang.String clazzAlias,
                                               java.lang.String p,
                                               boolean caseSensitive)
Create a searched property.

Parameters:
clazzAlias - the simple class name used as alias
p - a property (can be a simple or dotted property)
caseSensitive - true if the search must be done with case sensitivity enabled

appendInnerJoinStatement

public HibernateQueryHelper appendInnerJoinStatement(java.lang.String parentAlias,
                                                     java.lang.String fieldName,
                                                     java.lang.String joinedAlias)
Append an inner join statement for a given field.

Parameters:
parentAlias - the alias of the parent part of the join statement. Nothing appended if null or empty
fieldName - the field name to join. Nothing appended if null or empty
joinedAlias - an alias for the joined field. Nothing appended if null or empty
Returns:
this query builder

appendLeftOuterJoinStatement

public HibernateQueryHelper appendLeftOuterJoinStatement(java.lang.String parentAlias,
                                                         java.lang.String fieldName,
                                                         java.lang.String joinedAlias)
Append an left outer join statement for a given field.

Parameters:
parentAlias - the alias of the parent part of the join statement. Nothing appended if null or empty
fieldName - the field name to join. Nothing appended if null or empty
joinedAlias - an alias for the joined field. Nothing appended if null or empty
Returns:
this query builder

appendMultipleInnerJoinStatement

public HibernateQueryHelper appendMultipleInnerJoinStatement(java.lang.String parentAlias,
                                                             java.lang.String... properties)
For each properties: if the property is a dotted property (contains one or more "." character), append an inner join statement for each field following the dot.

Parameters:
parentAlias - the alias of the parent part of all join statement
properties - properties array containing possible dotted properties. Nothing appended if null or empty
Returns:
this query builder

appendMultipleLeftOuterJoinStatement

public HibernateQueryHelper appendMultipleLeftOuterJoinStatement(java.lang.String parentAlias,
                                                                 java.lang.String... properties)
For each properties: if the property is a dotted property (contains one or more "." character), append an left outer join statement for each field following the dot.

Parameters:
parentAlias - the alias of the parent part of all join statement
properties - properties array containing possible dotted properties. Nothing appended if null or empty
Returns:
this query builder

appendSelectDistinctStatement

public HibernateQueryHelper appendSelectDistinctStatement(java.lang.String simpleClazzName,
                                                          java.lang.String fullClazzName)
Appends a select distinct statement with the simpleClazzName.toLowerCase as alias

Parameters:
simpleClazzName - the simple class name used as alias
fullClazzName - the full class name used for the select statement

appendSelectStatement

public HibernateQueryHelper appendSelectStatement(java.lang.String simpleClazzName,
                                                  java.lang.String fullClazzName)
Appends a select statement with the simpleClazzName.toLowerCase as alias

Parameters:
simpleClazzName - the simple class name used as alias
fullClazzName - the full class name used for the select statement

appendSortOption

public HibernateQueryHelper appendSortOption(RequestOptions requestOptions,
                                             java.lang.String clazzAlias)
Append an "order by" sql clause to the inner sql string. The property on which the order by is applied is defined in the request options

Parameters:
requestOptions - request option defining sort criteria and pagination
clazzAlias - the alias of the entities that will be ordered
Returns:
this query builder

appendInListWithAnd

public HibernateQueryHelper appendInListWithAnd(java.lang.String term,
                                                java.util.List<?> list)
See appendInList(String, List). Append a "and" operator before appending list condition

Parameters:
term - a string term like "foo"
list - a list of values like "bar1", "bar2". Nothing appended if null or empty
Returns:
this query builder

appendInList

public HibernateQueryHelper appendInList(java.lang.String term,
                                         java.util.List<?> list)
Appends a "in" list condition on a particuler term. For exemple, if the term is "foo" and the list contains the given string values ("bar1", "bar2"), then the appended string is : foo in ("?", "?") ; in the same time two values are added to the builder inner values vector (bar1, bar2)

Parameters:
term - a string term like "foo"
list - a list of values like "bar1", "bar2". Nothing appended if null or empty
Returns:

addValue

public void addValue(java.lang.Object obj)
Add a values to the inner values vector

Parameters:
obj - the value to add

buildHibernateQuery

public org.hibernate.Query buildHibernateQuery(org.hibernate.Session session)
Build a JPA query from the inner sql statement and values

Parameters:
em - a JPA entity manager
Returns:
a JPA Query

buildHibernatePaginatedQuery

public org.hibernate.Query buildHibernatePaginatedQuery(org.hibernate.Session session,
                                                        RequestOptions requestOptions)
Build a JPA query from the inner sql statement and values. Paginate it following the given request options.

Parameters:
em - a JPA entity manager
Returns:
a JPA Query

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

sortAndPaginateByCriteria

public static java.util.List sortAndPaginateByCriteria(org.springframework.orm.hibernate3.HibernateTemplate template,
                                                       RequestOptions requestOptions,
                                                       org.hibernate.criterion.DetachedCriteria detachedCriteria)

createSearchContext

public static com.trg.search.ISearch createSearchContext(java.lang.Class<?> clazz,
                                                         java.lang.String[] criterii,
                                                         java.lang.String[] properties,
                                                         RequestOptions requestOptions,
                                                         java.lang.String predicate)


Copyright © 2008-2009 eBMWebsourcing. All Rights Reserved.