/* * OpenClinica is distributed under the * GNU Lesser General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * copyright 2003-2009 Akaza Research */ package org.akaza.openclinica.control.submit; import java.util.Date; import java.util.HashMap; import java.util.Locale; import org.akaza.openclinica.bean.managestudy.StudySubjectBean; import org.akaza.openclinica.control.core.SecureController; import org.akaza.openclinica.control.form.FormDiscrepancyNotes; import org.akaza.openclinica.control.form.FormProcessor; import org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO; import org.akaza.openclinica.dao.managestudy.StudyDAO; import org.akaza.openclinica.dao.managestudy.StudyEventDAO; import org.akaza.openclinica.dao.managestudy.StudyEventDefinitionDAO; import org.akaza.openclinica.dao.managestudy.StudyGroupClassDAO; import org.akaza.openclinica.dao.managestudy.StudyGroupDAO; import org.akaza.openclinica.dao.managestudy.StudySubjectDAO; import org.akaza.openclinica.dao.service.StudyParameterValueDAO; import org.akaza.openclinica.dao.submit.EventCRFDAO; import org.akaza.openclinica.dao.submit.SubjectDAO; import org.akaza.openclinica.dao.submit.SubjectGroupMapDAO; import org.akaza.openclinica.i18n.core.LocaleResolver; import org.akaza.openclinica.view.Page; import org.akaza.openclinica.web.InsufficientPermissionException; /** * Servlet for creating a table. * * @author Krikor Krumlian */ public class ListStudySubjectsServlet extends SecureController { // Shaoyu Su private static final long serialVersionUID = 1L; private StudyEventDefinitionDAO studyEventDefinitionDAO; private SubjectDAO subjectDAO; private StudySubjectDAO studySubjectDAO; private StudyEventDAO studyEventDAO; private StudyGroupClassDAO studyGroupClassDAO; private SubjectGroupMapDAO subjectGroupMapDAO; private StudyDAO studyDAO; private EventCRFDAO eventCRFDAO; private EventDefinitionCRFDAO eventDefintionCRFDAO; private StudyGroupDAO studyGroupDAO; private boolean showMoreLink; private StudyParameterValueDAO studyParameterValueDAO; Locale locale; /* * (non-Javadoc) * * @see org.akaza.openclinica.control.core.SecureController#mayProceed() */ @Override protected void mayProceed() throws InsufficientPermissionException { locale = LocaleResolver.getLocale(request); if (ub.isSysAdmin()) { return; } if (SubmitDataServlet.mayViewData(ub, currentRole)) { return; } addPageMessage(respage.getString("no_have_correct_privilege_current_study") + respage.getString("change_study_contact_sysadmin")); throw new InsufficientPermissionException(Page.MENU_SERVLET, resexception.getString("may_not_submit_data"), "1"); } @Override protected void processRequest() throws Exception { getCrfLocker().unlockAllForUser(ub.getId()); FormProcessor fp = new FormProcessor(request); if(fp.getString("showMoreLink").equals("")){ showMoreLink = true; }else { showMoreLink = Boolean.parseBoolean(fp.getString("showMoreLink")); } String idSetting = currentStudy.getStudyParameterConfig().getSubjectIdGeneration(); // set up auto study subject id if (idSetting.equals("auto editable") || idSetting.equals("auto non-editable")) { //Shaoyu Su // int nextLabel = getStudySubjectDAO().findTheGreatestLabel() + 1; // request.setAttribute("label", new Integer(nextLabel).toString()); request.setAttribute("label", resword.getString("id_generated_Save_Add")); fp.addPresetValue("label", resword.getString("id_generated_Save_Add")); } if (fp.getRequest().getParameter("subjectOverlay") == null){ Date today = new Date(System.currentTimeMillis()); String todayFormatted = local_df.format(today); if (request.getAttribute(PRESET_VALUES) != null) { fp.setPresetValues((HashMap)request.getAttribute(PRESET_VALUES)); } fp.addPresetValue(AddNewSubjectServlet.INPUT_ENROLLMENT_DATE, todayFormatted); fp.addPresetValue(AddNewSubjectServlet.INPUT_EVENT_START_DATE, todayFormatted); setPresetValues(fp.getPresetValues()); } request.setAttribute("closeInfoShowIcons", true); if (fp.getString("navBar").equals("yes") && fp.getString("findSubjects_f_studySubject.label").trim().length() > 0) { StudySubjectBean studySubject = getStudySubjectDAO().findByLabelAndStudy(fp.getString("findSubjects_f_studySubject.label"), currentStudy); if (studySubject.getId() > 0) { request.setAttribute("id", new Integer(studySubject.getId()).toString()); forwardPage(Page.VIEW_STUDY_SUBJECT_SERVLET); } else { createTable(); } } else { createTable(); } } private void createTable() { ListStudySubjectTableFactory factory = new ListStudySubjectTableFactory(showMoreLink); factory.setStudyEventDefinitionDao(getStudyEventDefinitionDao()); factory.setSubjectDAO(getSubjectDAO()); factory.setStudySubjectDAO(getStudySubjectDAO()); factory.setStudyEventDAO(getStudyEventDAO()); factory.setStudyBean(currentStudy); factory.setStudyGroupClassDAO(getStudyGroupClassDAO()); factory.setSubjectGroupMapDAO(getSubjectGroupMapDAO()); factory.setStudyDAO(getStudyDAO()); factory.setCurrentRole(currentRole); factory.setCurrentUser(ub); factory.setEventCRFDAO(getEventCRFDAO()); factory.setEventDefintionCRFDAO(getEventDefinitionCRFDAO()); factory.setStudyGroupDAO(getStudyGroupDAO()); factory.setStudyParameterValueDAO(getStudyParameterValueDAO()); String findSubjectsHtml = factory.createTable(request, response).render(); request.setAttribute("findSubjectsHtml", findSubjectsHtml); // A. Hamid. // For event definitions and group class list in the add subject popup request.setAttribute("allDefsArray", super.getEventDefinitionsByCurrentStudy()); request.setAttribute("studyGroupClasses", super.getStudyGroupClassesByCurrentStudy()); FormDiscrepancyNotes discNotes = new FormDiscrepancyNotes(); session.setAttribute(AddNewSubjectServlet.FORM_DISCREPANCY_NOTES_NAME, discNotes); forwardPage(Page.LIST_STUDY_SUBJECTS); } @Override protected String getAdminServlet() { return SecureController.ADMIN_SERVLET_CODE; } public StudyParameterValueDAO getStudyParameterValueDAO() { studyParameterValueDAO = this.studyParameterValueDAO == null ? new StudyParameterValueDAO(sm.getDataSource()) : studyParameterValueDAO; return studyParameterValueDAO; } public void setStudyParameterValueDAO(StudyParameterValueDAO studyParameterValueDAO) { this.studyParameterValueDAO = studyParameterValueDAO; } public StudyEventDefinitionDAO getStudyEventDefinitionDao() { studyEventDefinitionDAO = studyEventDefinitionDAO == null ? new StudyEventDefinitionDAO(sm.getDataSource()) : studyEventDefinitionDAO; return studyEventDefinitionDAO; } public SubjectDAO getSubjectDAO() { subjectDAO = this.subjectDAO == null ? new SubjectDAO(sm.getDataSource()) : subjectDAO; return subjectDAO; } public StudySubjectDAO getStudySubjectDAO() { studySubjectDAO = this.studySubjectDAO == null ? new StudySubjectDAO(sm.getDataSource()) : studySubjectDAO; return studySubjectDAO; } public StudyGroupClassDAO getStudyGroupClassDAO() { studyGroupClassDAO = this.studyGroupClassDAO == null ? new StudyGroupClassDAO(sm.getDataSource()) : studyGroupClassDAO; return studyGroupClassDAO; } public SubjectGroupMapDAO getSubjectGroupMapDAO() { subjectGroupMapDAO = this.subjectGroupMapDAO == null ? new SubjectGroupMapDAO(sm.getDataSource()) : subjectGroupMapDAO; return subjectGroupMapDAO; } public StudyEventDAO getStudyEventDAO() { studyEventDAO = this.studyEventDAO == null ? new StudyEventDAO(sm.getDataSource()) : studyEventDAO; return studyEventDAO; } public StudyDAO getStudyDAO() { studyDAO = this.studyDAO == null ? new StudyDAO(sm.getDataSource()) : studyDAO; return studyDAO; } public EventCRFDAO getEventCRFDAO() { eventCRFDAO = this.eventCRFDAO == null ? new EventCRFDAO(sm.getDataSource()) : eventCRFDAO; return eventCRFDAO; } public EventDefinitionCRFDAO getEventDefinitionCRFDAO() { eventDefintionCRFDAO = this.eventDefintionCRFDAO == null ? new EventDefinitionCRFDAO(sm.getDataSource()) : eventDefintionCRFDAO; return eventDefintionCRFDAO; } public StudyGroupDAO getStudyGroupDAO() { studyGroupDAO = this.studyGroupDAO == null ? new StudyGroupDAO(sm.getDataSource()) : studyGroupDAO; return studyGroupDAO; } }