Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1019 → Rev 1020

/hostadmiral/trunk/src/ak/hostadmiral/util/HibernateUtil.java
1,9 → 1,11
package ak.hostadmiral.util;
 
import java.util.Collection;
import java.util.Map;
 
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
import net.sf.hibernate.type.Type;
 
public class HibernateUtil
{
133,6 → 135,69
hb.transaction = null;
}
 
public static Collection pageableList(CollectionInfo info, int pageSize, int pageNumber,
String query, String[] returnAliases, Class[] returnClasses,
Object[] values, Type[] types)
throws ModelException
{
try {
// find the collection size if needed
if(info != null) {
Query sizeq = HibernateUtil.currentSession().createSQLQuery(
"select count(*) as {c} from " + query,
"c", Integer.class);
 
if(values != null && types != null) {
for(int i = 0; i < values.length; i++)
sizeq.setParameter(i, values[i], types[i]);
}
 
info.setSize(((Integer)sizeq.iterate().next()).intValue());
}
 
// find the collection
Query hq = HibernateUtil.currentSession().createSQLQuery(
query, returnAliases, returnClasses);
 
if(values != null && types != null) {
for(int i = 0; i < values.length; i++)
hq.setParameter(i, values[i], types[i]);
}
 
if(pageSize > 0) {
hq.setFirstResult(pageSize * pageNumber);
hq.setMaxResults(pageSize);
}
 
return hq.list();
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public static String formOrderClause(Integer[] sortingKeys, Map fieldMap)
throws ModelException
{
if(sortingKeys == null || sortingKeys.length == 0) return "";
 
StringBuffer buf = new StringBuffer(" order by ");
 
for(int i = 0; i < sortingKeys.length; i++) {
if(i > 0) buf.append(",");
 
String field = (String)fieldMap.get(sortingKeys[i]);
if(field == null)
throw new ModelException(
"Field for sorting key " + sortingKeys[i] + " not found");
 
buf.append(field);
}
 
return buf.toString();
}
 
static class HibernateBean
{
public Session session;