package org.akaza.openclinica.dao.hibernate;
import org.akaza.openclinica.bean.submit.EventCRFBean;
import org.akaza.openclinica.bean.submit.ItemGroupMetadataBean;
import org.akaza.openclinica.dao.core.CoreResources;
import org.akaza.openclinica.domain.crfdata.DynamicsItemGroupMetadataBean;
public class DynamicsItemGroupMetadataDao extends AbstractDomainDao<DynamicsItemGroupMetadataBean>{
@Override
public Class<DynamicsItemGroupMetadataBean> domainClass() {
return DynamicsItemGroupMetadataBean.class;
}
public DynamicsItemGroupMetadataBean findByMetadataBean(ItemGroupMetadataBean metadataBean, EventCRFBean eventCrfBean) {
String query =
"from " + getDomainClassName()
+ " metadata where metadata.itemGroupMetadataId = :id and metadata.itemGroupId = :item_group_id and metadata.eventCrfId = :event_crf_id ";
org.hibernate.Query q = getCurrentSession().createQuery(query);
q.setInteger("id", new Integer(metadataBean.getId()));
q.setInteger("item_group_id", new Integer(metadataBean.getItemGroupId()));
q.setInteger("event_crf_id", new Integer(eventCrfBean.getId()));
return (DynamicsItemGroupMetadataBean) q.uniqueResult();
}
public DynamicsItemGroupMetadataBean findByMetadataBean(ItemGroupMetadataBean metadataBean, int eventCrfBeanId) {
String query =
"from " + getDomainClassName()
+ " metadata where metadata.itemGroupMetadataId = :id and metadata.itemGroupId = :item_group_id and metadata.eventCrfId = :event_crf_id ";
org.hibernate.Query q = getCurrentSession().createQuery(query);
q.setInteger("id", new Integer(metadataBean.getId()));
q.setInteger("item_group_id", new Integer(metadataBean.getItemGroupId()));
q.setInteger("event_crf_id", new Integer(eventCrfBeanId));
return (DynamicsItemGroupMetadataBean) q.uniqueResult();
}
public Boolean hasShowingInSection(int sectionId, int crfVersionId, int eventCrfId) {
String query = "";
if ("oracle".equalsIgnoreCase(CoreResources.getDBName())) {
query = "select dg.item_group_id from dyn_item_group_metadata dg where dg.event_crf_id = :eventCrfId and dg.item_group_metadata_id in ("
+ " select distinct igm.item_group_metadata_id from item_group_metadata igm where igm.crf_version_id = :crfVersionId"
+ " and igm.show_group = 0"
+ " and igm.item_id in (select im.item_id from item_form_metadata im where im.section_id = :sectionId and im.crf_version_id = :crfVersionId))"
+ " and dg.show_group = 1 and rownum = 1";
} else {
query = "select dg.item_group_id from dyn_item_group_metadata dg where dg.event_crf_id = :eventCrfId and dg.item_group_metadata_id in ("
+ " select distinct igm.item_group_metadata_id from item_group_metadata igm where igm.crf_version_id = :crfVersionId"
+ " and igm.show_group = 'false'"
+ " and igm.item_id in (select im.item_id from item_form_metadata im where im.section_id = :sectionId and im.crf_version_id = :crfVersionId))"
+ " and dg.show_group = 'true' limit 1";
}
org.hibernate.Query q = this.getCurrentSession().createSQLQuery(query);
q.setInteger("eventCrfId", eventCrfId);
q.setInteger("crfVersionId", crfVersionId);
q.setInteger("sectionId", sectionId);
q.setInteger("crfVersionId", crfVersionId);
return q.list() != null && q.list().size() > 0;
}
public void delete(int eventCrfId){
String query = " delete from " + getDomainClassName() + " where eventCrfId =:eventCrfId ";
org.hibernate.Query q = getCurrentSession().createQuery(query);
q.setInteger("eventCrfId", eventCrfId);
q.executeUpdate();
}
}