/* * OpenClinica is distributed under the * GNU Lesser General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * * Copyright 2003-2008 Akaza Research */ package org.akaza.openclinica.dao.ws; import org.akaza.openclinica.bean.core.EntityBean; import org.akaza.openclinica.bean.login.UserAccountBean; import org.akaza.openclinica.bean.managestudy.SubjectTransferBean; import org.akaza.openclinica.bean.rule.RuleSetAuditBean; import org.akaza.openclinica.bean.rule.RuleSetBean; import org.akaza.openclinica.bean.submit.ItemGroupMetadataBean; import org.akaza.openclinica.dao.core.EntityDAO; import org.akaza.openclinica.dao.core.SQLFactory; import org.akaza.openclinica.dao.core.TypeNames; import org.akaza.openclinica.dao.login.UserAccountDAO; import org.akaza.openclinica.exception.OpenClinicaException; import java.sql.Types; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import javax.sql.DataSource; public class SubjectTransferDAO extends EntityDAO { UserAccountDAO userAccountDao; public SubjectTransferDAO(DataSource ds) { super(ds); this.getCurrentPKName = "findCurrentPKValue"; // this.getNextPKName = "getNextPK"; } @Override public int getCurrentPK() { int answer = 0; if (getCurrentPKName == null) { return answer; } this.unsetTypeExpected(); this.setTypeExpected(1, TypeNames.INT); ArrayList al = select(digester.getQuery(getCurrentPKName)); if (al.size() > 0) { HashMap h = (HashMap) al.get(0); answer = ((Integer) h.get("key")).intValue(); } return answer; } private UserAccountDAO getUserAccountDao() { return this.userAccountDao != null ? this.userAccountDao : new UserAccountDAO(ds); } @Override protected void setDigesterName() { digesterName = SQLFactory.getInstance().DAO_SUBJECTTRANSFER; } public void setTypesExpected() { this.unsetTypeExpected(); this.setTypeExpected(1, TypeNames.STRING); // personId this.setTypeExpected(2, TypeNames.STRING); // studySubject this.setTypeExpected(3, TypeNames.DATE); // dateOfBirth this.setTypeExpected(4, TypeNames.CHAR); // gender this.setTypeExpected(5, TypeNames.STRING); // study_oid this.setTypeExpected(6, TypeNames.INT); // owner_id this.setTypeExpected(7, TypeNames.DATE); // enrollment_date this.setTypeExpected(8, TypeNames.DATE); // date_received } public Object getEntityFromHashMap(HashMap hm) { SubjectTransferBean subjectTransferBean = new SubjectTransferBean(); subjectTransferBean.setId((Integer) hm.get("subject_transfer_id")); subjectTransferBean.setPersonId((String) hm.get("person_id")); subjectTransferBean.setStudySubjectId((String) hm.get("study_subject_id")); subjectTransferBean.setDateOfBirth((Date) hm.get("date_of_birth")); try { String gender = (String) hm.get("gender"); char[] genderarr = gender.toCharArray(); subjectTransferBean.setGender(genderarr[0]); } catch (ClassCastException ce) { subjectTransferBean.setGender(' '); } subjectTransferBean.setEnrollmentDate((Date) hm.get("enrollment_date")); subjectTransferBean.setOwner((UserAccountBean) getUserAccountDao().findByPK((Integer) hm.get("owner_id"))); return subjectTransferBean; } public Collection findAll(String strOrderByColumn, boolean blnAscendingSort, String strSearchPhrase) throws OpenClinicaException { return new ArrayList(); } public Collection findAll() throws OpenClinicaException { return new ArrayList(); } public EntityBean findByPK(int id) throws OpenClinicaException { RuleSetAuditBean ruleSetAudit = null; this.setTypesExpected(); HashMap<Integer, Object> variables = new HashMap<Integer, Object>(); variables.put(new Integer(1), id); String sql = digester.getQuery("findByPK"); ArrayList<?> alist = this.select(sql, variables); Iterator<?> it = alist.iterator(); if (it.hasNext()) { ruleSetAudit = (RuleSetAuditBean) this.getEntityFromHashMap((HashMap<?, ?>) it.next()); } return ruleSetAudit; } public ArrayList<RuleSetAuditBean> findAllByRuleSet(RuleSetBean ruleSet) { ArrayList<RuleSetAuditBean> ruleSetAuditBeans = new ArrayList<RuleSetAuditBean>(); this.setTypesExpected(); HashMap<Integer, Object> variables = new HashMap<Integer, Object>(); variables.put(new Integer(1), ruleSet.getId()); String sql = digester.getQuery("findAllByRuleSet"); ArrayList<?> alist = this.select(sql, variables); Iterator<?> it = alist.iterator(); while (it.hasNext()) { RuleSetAuditBean ruleSetAudit = (RuleSetAuditBean) this.getEntityFromHashMap((HashMap<?, ?>) it.next()); ruleSetAuditBeans.add(ruleSetAudit); } return ruleSetAuditBeans; } public EntityBean create(EntityBean eb, UserAccountBean ub) { // INSERT INTO subject_transfer (subject_transfer_id,date_of_birth,gender,person_id,study_subject_id, status_id,updater_id,date_updated) VALUES // (?,?,?,?,?) SubjectTransferBean subjectTransferBean = (SubjectTransferBean) eb; RuleSetAuditBean ruleSetAudit = new RuleSetAuditBean(); HashMap<Integer, Object> variables = new HashMap<Integer, Object>(); HashMap<Integer, Object> nullVars = new HashMap<Integer, Object>(); if (subjectTransferBean.getDateOfBirth() == null) { nullVars.put(new Integer(1), new Integer(Types.DATE)); variables.put(new Integer(1), null); } else { variables.put(new Integer(1), subjectTransferBean.getDateOfBirth()); } if (subjectTransferBean.getGender() != 'm' && subjectTransferBean.getGender() != 'f') { nullVars.put(new Integer(2), new Integer(Types.CHAR)); variables.put(new Integer(2), null); } else { char[] ch = { subjectTransferBean.getGender() }; variables.put(new Integer(2), new String(ch)); } variables.put(3, subjectTransferBean.getPersonId()); variables.put(4, subjectTransferBean.getStudySubjectId()); variables.put(5, subjectTransferBean.getStudyOid()); variables.put(6, subjectTransferBean.getDateReceived()); variables.put(7, subjectTransferBean.getEnrollmentDate()); variables.put(8, subjectTransferBean.getOwner().getId()); executeWithPK(digester.getQuery("create"), variables, nullVars); if (isQuerySuccessful()) { subjectTransferBean.setId(getLatestPK()); } return subjectTransferBean; } public EntityBean create(EntityBean eb) throws OpenClinicaException { SubjectTransferBean subjectTransferBean = (SubjectTransferBean) eb; return create(eb, subjectTransferBean.getOwner()); } public EntityBean update(EntityBean eb) throws OpenClinicaException { return new ItemGroupMetadataBean(); // To change body of implemented } public Collection findAllByPermission(Object objCurrentUser, int intActionType, String strOrderByColumn, boolean blnAscendingSort, String strSearchPhrase) throws OpenClinicaException { return new ArrayList<RuleSetAuditBean>(); } public Collection findAllByPermission(Object objCurrentUser, int intActionType) throws OpenClinicaException { return new ArrayList<RuleSetAuditBean>(); } }