edu.internet2.middleware.grouper.hibernate
Class ByHqlStatic

java.lang.Object
  extended by edu.internet2.middleware.grouper.hibernate.ByHqlStatic
All Implemented Interfaces:
HqlQuery

public class ByHqlStatic
extends Object
implements HqlQuery

for simple HQL, use this instead of inverse of control. this will do proper error handling and descriptive exception handling. This will by default use the transaction modes GrouperTransactionType.READONLY_OR_USE_EXISTING, and GrouperTransactionType.READ_WRITE_OR_USE_EXISTING depending on if a transaction is needed.

Author:
mchyzer

Method Summary
 ByHqlStatic assignConvertHqlColumnsToObject(boolean theConvert)
          if use resulttransformer to change columns to object
 ByHqlStatic createQuery(String theHqlQuery)
          set the query to run
 long deleteInBatches(Class<?> idType, String hqlClassNameToDelete, String columnNameOfId)
          GRP-1439: remove records with a max number and loop so it doesnt fail select ids in batches of 10k delete records in batches of 100 Note this should be setup to select a list of scalar String ids.
 void executeUpdate()
           call hql executeUpdate, e.g.
<R> List<R>
list(Class<R> returnType)
           call hql list result e.g.
<K,V> Map<K,V>
listMap(Class<K> keyClass, Class<V> valueClass, String keyPropertyName)
           call hql list result, and put the results in map with the key as one of the fields
<S> Set<S>
listSet(Class<S> returnType)
           call hql list result, and put the results in an ordered set e.g.
 ByHqlStatic options(QueryOptions queryOptions1)
          add a paging/sorting/resultSetSize, etc to the query
 ByHqlStatic setCacheable(Boolean cacheable)
          assign if this query is cacheable or not.
 ByHqlStatic setCacheRegion(String cacheRegion)
          cache region for cache
 ByHqlStatic setCollectionInClause(StringBuilder query, Collection<?> params)
          append a certain number of params, and commas, and attach the data.
 ByHqlStatic setDouble(String bindVarName, Double value)
          assign data to the bind var
 ByHqlStatic setGrouperTransactionType(GrouperTransactionType theGrouperTransactionType)
          assign a different grouperTransactionType (e.g.
 ByHqlStatic setInteger(String bindVarName, Integer value)
          assign data to the bind var
 ByHqlStatic setLong(String bindVarName, Long value)
          assign data to the bind var
 ByHqlStatic setScalar(String bindVarName, Object value)
          assign data to the bind var
 ByHqlStatic setString(String bindVarName, String value)
          assign data to the bind var
 ByHqlStatic setTimestamp(String bindVarName, Date value)
          assign data to the bind var
 String toString()
          string value for error handling
<Q> Q
uniqueResult(Class<Q> returnType)
           call hql unique result (returns one or null) e.g.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

assignConvertHqlColumnsToObject

public ByHqlStatic assignConvertHqlColumnsToObject(boolean theConvert)
if use resulttransformer to change columns to object

Parameters:
theConvert -
Returns:
this for chaining

setGrouperTransactionType

public ByHqlStatic setGrouperTransactionType(GrouperTransactionType theGrouperTransactionType)
assign a different grouperTransactionType (e.g. for autonomous transactions)

Parameters:
theGrouperTransactionType -
Returns:
the same object for chaining

setCacheable

public ByHqlStatic setCacheable(Boolean cacheable)
assign if this query is cacheable or not.

Parameters:
cacheable - the cacheable to set
Returns:
this object for chaining

toString

public String toString()
string value for error handling

Overrides:
toString in class Object
Returns:
the string value

createQuery

public ByHqlStatic createQuery(String theHqlQuery)
set the query to run

Parameters:
theHqlQuery -
Returns:
this object for chaining

setCacheRegion

public ByHqlStatic setCacheRegion(String cacheRegion)
cache region for cache

Parameters:
cacheRegion - the cacheRegion to set
Returns:
this object for chaining

setString

public ByHqlStatic setString(String bindVarName,
                             String value)
assign data to the bind var

Specified by:
setString in interface HqlQuery
Parameters:
bindVarName -
value -
Returns:
this object for chaining

setTimestamp

public ByHqlStatic setTimestamp(String bindVarName,
                                Date value)
assign data to the bind var

Parameters:
bindVarName -
value -
Returns:
this object for chaining

setLong

public ByHqlStatic setLong(String bindVarName,
                           Long value)
assign data to the bind var

Parameters:
bindVarName -
value - is long, primitive so not null
Returns:
this object for chaining

setDouble

public ByHqlStatic setDouble(String bindVarName,
                             Double value)
assign data to the bind var

Parameters:
bindVarName -
value - is double
Returns:
this object for chaining

setInteger

public ByHqlStatic setInteger(String bindVarName,
                              Integer value)
assign data to the bind var

Parameters:
bindVarName -
value - is long, primitive so not null
Returns:
this object for chaining

setScalar

public ByHqlStatic setScalar(String bindVarName,
                             Object value)
assign data to the bind var

Specified by:
setScalar in interface HqlQuery
Parameters:
bindVarName -
value - is long, primitive so not null
Returns:
this object for chaining

setCollectionInClause

public ByHqlStatic setCollectionInClause(StringBuilder query,
                                         Collection<?> params)
append a certain number of params, and commas, and attach the data. Note any params before the in clause need to be already attached, since these will attach now (ordering issue)

Parameters:
query -
params - collection of params, note, this is for an inclause, so it cant be null
Returns:
this for chaining

uniqueResult

public <Q> Q uniqueResult(Class<Q> returnType)
               throws GrouperDAOException
 call hql unique result (returns one or null)
 
 e.g.
 
 Hib3GroupDAO hib3GroupDAO = HibernateSession.byHqlStatic()
 .createQuery("from Hib3GroupDAO as g where g.uuid = :uuid")
  .setCacheable(false)
  .setCacheRegion(KLASS + ".Exists")
  .setString("uuid", uuid).uniqueResult(Hib3GroupDAO.class);
 
 

Type Parameters:
Q - is the template
Parameters:
returnType - type of the result (in future can use this for typecasting)
Returns:
the object or null if none found
Throws:
GrouperDAOException

list

public <R> List<R> list(Class<R> returnType)
             throws GrouperDAOException
 call hql list result 
 
 e.g.
 
 List hib3GroupTypeTupleDAOs = 
  HibernateSession.byHqlStatic()
    .createQuery("from Hib3GroupTypeTupleDAO as gtt where gtt.groupUuid = :group")
    .setCacheable(false).setString("group", uuid).list(Hib3GroupTypeTupleDAO.class);
 

Type Parameters:
R - is the template
Parameters:
returnType - type of the result (can typecast)
Returns:
the list or the empty list if not found (never null)
Throws:
GrouperDAOException

listSet

public <S> Set<S> listSet(Class<S> returnType)
               throws GrouperDAOException
 call hql list result, and put the results in an ordered set
 
 e.g.
 
 Set groupTypeTupleDTOs = 
  HibernateSession.byHqlStatic()
    .createQuery("from Hib3GroupTypeTupleDAO as gtt where gtt.groupUuid = :group")
    .setCacheable(false).setString("group", uuid).listSet(Hib3GroupTypeTupleDAO.class);
 

Type Parameters:
S - is the template
Parameters:
returnType - type of the result (can typecast)
Returns:
the ordered set or the empty set if not found (never null)
Throws:
GrouperDAOException

listMap

public <K,V> Map<K,V> listMap(Class<K> keyClass,
                              Class<V> valueClass,
                              String keyPropertyName)
                 throws GrouperDAOException
 call hql list result, and put the results in map with the key as one of the fields
 
 

Type Parameters:
K - is the template of the key of the map
V - is the template of the value of the map
Parameters:
valueClass - type of the result (can typecast)
keyClass - is the type of the key of the map
keyPropertyName - name of the javabeans property for the key in the map
Returns:
the ordered set or the empty set if not found (never null)
Throws:
GrouperDAOException

deleteInBatches

public long deleteInBatches(Class<?> idType,
                            String hqlClassNameToDelete,
                            String columnNameOfId)
GRP-1439: remove records with a max number and loop so it doesnt fail select ids in batches of 10k delete records in batches of 100 Note this should be setup to select a list of scalar String ids. It will page it

Parameters:
idType - type of id which can be String or long
hqlClassNameToDelete -
columnNameOfId -
Returns:
the total number of records deleted

executeUpdate

public void executeUpdate()
                   throws GrouperDAOException
 call hql executeUpdate, e.g. delete or update statement
 
 

Throws:
GrouperDAOException

options

public ByHqlStatic options(QueryOptions queryOptions1)
add a paging/sorting/resultSetSize, etc to the query

Parameters:
queryOptions1 -
Returns:
this for chaining