package net.sf.egonet.persistence;
import java.util.List;
import net.sf.egonet.model.Study;
import net.sf.egonet.web.Main;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.google.common.base.Function;
public class Studies {
@SuppressWarnings("unchecked")
public static List<Study> getStudies(Session session) {
return
session.createQuery("from Study s where active = 1 order by s.name")
.list();
}
public static Study getStudy(Session session, final Long id) {
// Yes, this is different from session.load(Study.class, id),
// which triggers a lazy initialization exception when any
// field of Study is requested after the session is closed.
return (Study) session.createQuery("from Study where id = :id and active = 1")
.setParameter("id", id).uniqueResult();
}
public static Study getStudy(final Long id) {
return DB.withTx(new Function<Session,Study>(){
public Study apply(Session session) {
return getStudy(session, id);
}
});
}
public static Study getStudyForInterview(Session session, Long interviewId) {
return getStudy(session, Interviews.getInterview(session,interviewId).getStudyId());
}
public static Study getStudyForInterview(final Long interviewId) {
return DB.withTx(new Function<Session,Study>() {
public Study apply(Session session) {
return getStudyForInterview(session,interviewId);
}
});
}
public static List<Study> getStudies()
{
Session session = Main.getDBSessionFactory().openSession();
Transaction tx = session.beginTransaction();
List<Study> studies = getStudies(session);
tx.commit();
session.close();
return studies;
}
}