package org.akaza.openclinica.dao.hibernate;
import java.util.List;
import org.akaza.openclinica.domain.datamap.ItemData;
public class ItemDataDao extends AbstractDomainDao<ItemData> {
Class<ItemData> domainClass() {
return ItemData.class;
}
public ItemData findByItemEventCrfOrdinal(Integer itemId, Integer eventCrfId, Integer ordinal) {
String query = "from " + getDomainClassName()
+ " item_data where item_data.item.itemId = :itemid and item_data.eventCrf.eventCrfId = :eventcrfid and item_data.ordinal = :ordinal";
org.hibernate.Query q = getCurrentSession().createQuery(query);
q.setInteger("itemid", itemId);
q.setInteger("eventcrfid", eventCrfId);
q.setInteger("ordinal", ordinal);
return (ItemData) q.uniqueResult();
}
public List<ItemData> findByEventCrfGroup(Integer eventCrfId, Integer itemGroupId) {
String query = "select id.* " +
"from item_data id " +
"join item i on id.item_id = i.item_id " +
"join event_crf ec on id.event_crf_id=ec.event_crf_id " +
"join item_group_metadata igm on i.item_id=igm.item_id and igm.crf_version_id = ec.crf_version_id " +
"where id.event_crf_id = " + eventCrfId + " and igm.item_group_id = " + itemGroupId + " " +
"order by id.ordinal, igm.ordinal";
org.hibernate.Query q = getCurrentSession().createSQLQuery(query).addEntity(ItemData.class);
return (List<ItemData>) q.list();
}
public List<ItemData> findByEventCrfId(Integer eventCrfId) {
String query = "from " + getDomainClassName() + " item_data where item_data.eventCrf.eventCrfId = :eventcrfid";
org.hibernate.Query q = getCurrentSession().createQuery(query);
q.setInteger("eventcrfid", eventCrfId);
return (List<ItemData>) q.list();
}
public int getMaxGroupRepeat(Integer eventCrfId, Integer itemId) {
String query = "select max(ordinal) from item_data where event_crf_id = " + eventCrfId + " and item_id = " + itemId;
org.hibernate.Query q = getCurrentSession().createSQLQuery(query);
Number result = (Number) q.uniqueResult();
if (result == null) return 0;
else return result.intValue();
}
}