package org.akaza.openclinica.dao.hibernate;
import org.akaza.openclinica.bean.oid.CrfVersionOidGenerator;
import org.akaza.openclinica.bean.oid.OidGenerator;
import org.akaza.openclinica.domain.datamap.CrfVersion;
public class CrfVersionDao extends AbstractDomainDao<CrfVersion> {
@Override
Class<CrfVersion> domainClass() {
// TODO Auto-generated method stub
return CrfVersion.class;
}
public CrfVersion findByCrfVersionId(int crf_version_id) {
String query = "from " + getDomainClassName() + " crf_version where crf_version.crfVersionId = :crfversionid ";
org.hibernate.Query q = getCurrentSession().createQuery(query);
q.setInteger("crfversionid", crf_version_id);
return (CrfVersion) q.uniqueResult();
}
public CrfVersion findByOcOID(String OCOID) {
getSessionFactory().getStatistics().logSummary();
String query = "from " + getDomainClassName() + " do where do.ocOid = :OCOID";
org.hibernate.Query q = getCurrentSession().createQuery(query);
q.setString("OCOID", OCOID);
return (CrfVersion) q.uniqueResult();
}
public CrfVersion findByNameCrfId(String name, Integer crfId) {
String query = "select distinct cv.* from crf_version cv,crf c " + "where c.crf_id = " + crfId + " and cv.name = '" + name
+ "' and cv.crf_id = c.crf_id";
org.hibernate.Query q = getCurrentSession().createSQLQuery(query).addEntity(CrfVersion.class);
return ((CrfVersion) q.uniqueResult());
}
private String getOid(CrfVersion crfVersion, String crfName, String crfVersionName) {
OidGenerator oidGenerator = new CrfVersionOidGenerator();
String oid;
try {
oid = crfVersion.getOcOid() != null ? crfVersion.getOcOid() : oidGenerator.generateOid(crfName, crfVersionName);
return oid;
} catch (Exception e) {
throw new RuntimeException("CANNOT GENERATE OID");
}
}
public String getValidOid(CrfVersion crfVersion, String crfName, String crfVersionName) {
OidGenerator oidGenerator = new CrfVersionOidGenerator();
String oid = getOid(crfVersion, crfName, crfVersionName);
String oidPreRandomization = oid;
while (findByOcOID(oid) != null) {
oid = oidGenerator.randomizeOid(oidPreRandomization);
}
return oid;
}
}