1 24 package org.riotfamily.riot.hibernate.workflow.status; 25 26 import java.sql.SQLException ; 27 28 import org.hibernate.HibernateException; 29 import org.hibernate.Query; 30 import org.hibernate.Session; 31 import org.hibernate.SessionFactory; 32 import org.riotfamily.riot.workflow.status.support.AbstractStatusMonitor; 33 import org.springframework.orm.hibernate3.HibernateCallback; 34 import org.springframework.orm.hibernate3.HibernateTemplate; 35 36 public class HqlStatusMonitor extends AbstractStatusMonitor { 37 38 private SessionFactory sessionFactory; 39 40 private String hql; 41 42 43 public void setSessionFactory(SessionFactory sessionFactory) { 44 this.sessionFactory = sessionFactory; 45 } 46 47 public void setHql(String hql) { 48 this.hql = hql; 49 } 50 51 protected Object [] getArgs() { 52 Object result = new HibernateTemplate(sessionFactory).execute( 53 new HibernateCallback() { 54 55 public Object doInHibernate(Session session) 56 throws HibernateException, SQLException { 57 58 Query query = session.createQuery(hql); 59 return query.uniqueResult(); 60 } 61 }); 62 63 if (result == null) { 64 return null; 65 } 66 else if (result instanceof Object []) { 67 return (Object []) result; 68 } 69 else { 70 return new Object [] { result }; 71 } 72 } 73 74 } 75 | Popular Tags |