@Override public void processRequest() throws Exception { SubjectDAO sdao = new SubjectDAO(sm.getDataSource()); FormProcessor fp = new FormProcessor(request); int subjectId = fp.getInt("id"); String action = fp.getString("action"); if (subjectId == 0 || StringUtil.isBlank(action)) { addPageMessage(respage.getString("please_choose_a_subject_to_remove")); forwardPage(Page.SUBJECT_LIST_SERVLET); } else { SubjectBean subject = (SubjectBean) sdao.findByPK(subjectId); // find all study subjects StudySubjectDAO ssdao = new StudySubjectDAO(sm.getDataSource()); ArrayList studySubs = ssdao.findAllBySubjectId(subjectId); // find study events StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource()); ArrayList events = sedao.findAllBySubjectId(subjectId); if ("confirm".equalsIgnoreCase(action)) { request.setAttribute("subjectToRemove", subject); request.setAttribute("studySubs", studySubs); request.setAttribute("events", events); forwardPage(Page.REMOVE_SUBJECT); } else { logger.info("submit to remove the subject"); // change all statuses to deleted subject.setStatus(Status.DELETED); subject.setUpdater(ub); subject.setUpdatedDate(new Date()); sdao.update(subject); // remove subject references from study for (int i = 0; i < studySubs.size(); i++) { StudySubjectBean studySub = (StudySubjectBean) studySubs.get(i); if (!studySub.getStatus().equals(Status.DELETED)) { studySub.setStatus(Status.AUTO_DELETED); studySub.setUpdater(ub); studySub.setUpdatedDate(new Date()); ssdao.update(studySub); } } EventCRFDAO ecdao = new EventCRFDAO(sm.getDataSource()); for (int j = 0; j < events.size(); j++) { StudyEventBean event = (StudyEventBean) events.get(j); if (!event.getStatus().equals(Status.DELETED)) { event.setStatus(Status.AUTO_DELETED); event.setUpdater(ub); event.setUpdatedDate(new Date()); sedao.update(event); ArrayList eventCRFs = ecdao.findAllByStudyEvent(event); ItemDataDAO iddao = new ItemDataDAO(sm.getDataSource()); for (int k = 0; k < eventCRFs.size(); k++) { EventCRFBean eventCRF = (EventCRFBean) eventCRFs.get(k); if (!eventCRF.getStatus().equals(Status.DELETED)) { eventCRF.setStatus(Status.AUTO_DELETED); eventCRF.setUpdater(ub); eventCRF.setUpdatedDate(new Date()); ecdao.update(eventCRF); // remove all the item data ArrayList itemDatas = iddao.findAllByEventCRFId(eventCRF.getId()); for (int a = 0; a < itemDatas.size(); a++) { ItemDataBean item = (ItemDataBean) itemDatas.get(a); if (!item.getStatus().equals(Status.DELETED)) { item.setStatus(Status.AUTO_DELETED); item.setUpdater(ub); item.setUpdatedDate(new Date()); iddao.update(item); } } } } } } String emailBody = respage.getString("the_subject") + " " + respage.getString("has_been_removed_succesfully"); addPageMessage(emailBody); // sendEmail(emailBody); forwardPage(Page.SUBJECT_LIST_SERVLET); } } }
@Override public void processRequest() throws Exception { String studySubIdString = request.getParameter("id"); // studySubjectId String subIdString = request.getParameter("subjectId"); String studyIdString = request.getParameter("studyId"); SubjectDAO sdao = new SubjectDAO(sm.getDataSource()); StudySubjectDAO subdao = new StudySubjectDAO(sm.getDataSource()); if (StringUtil.isBlank(studySubIdString) || StringUtil.isBlank(subIdString) || StringUtil.isBlank(studyIdString)) { addPageMessage(respage.getString("please_choose_a_study_subject_to_remove")); forwardPage(Page.LIST_STUDY_SUBJECT_SERVLET); } else { int studyId = Integer.valueOf(studyIdString.trim()).intValue(); int studySubId = Integer.valueOf(studySubIdString.trim()).intValue(); int subjectId = Integer.valueOf(subIdString.trim()).intValue(); SubjectBean subject = (SubjectBean) sdao.findByPK(subjectId); StudySubjectBean studySub = (StudySubjectBean) subdao.findByPK(studySubId); StudyDAO studydao = new StudyDAO(sm.getDataSource()); StudyBean study = (StudyBean) studydao.findByPK(studyId); // find study events StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource()); ArrayList events = sedao.findAllByStudyAndStudySubjectId(study, studySubId); String action = request.getParameter("action"); if ("confirm".equalsIgnoreCase(action)) { if (!studySub.getStatus().equals(Status.AVAILABLE)) { addPageMessage( respage.getString("this_subject_is_not_available_for_this_study") + " " + respage.getString("please_contact_sysadmin_for_more_information")); forwardPage(Page.LIST_STUDY_SUBJECT_SERVLET); return; } request.setAttribute("subject", subject); request.setAttribute("study", study); request.setAttribute("studySub", studySub); request.setAttribute("events", events); forwardPage(Page.REMOVE_STUDY_SUBJECT); } else { logger.info("submit to remove the subject from study"); // remove subject from study studySub.setStatus(Status.DELETED); studySub.setUpdater(ub); studySub.setUpdatedDate(new Date()); subdao.update(studySub); // remove all study events // remove all event crfs EventCRFDAO ecdao = new EventCRFDAO(sm.getDataSource()); for (int j = 0; j < events.size(); j++) { StudyEventBean event = (StudyEventBean) events.get(j); if (!event.getStatus().equals(Status.DELETED)) { event.setStatus(Status.AUTO_DELETED); event.setUpdater(ub); event.setUpdatedDate(new Date()); sedao.update(event); ArrayList eventCRFs = ecdao.findAllByStudyEvent(event); ItemDataDAO iddao = new ItemDataDAO(sm.getDataSource()); for (int k = 0; k < eventCRFs.size(); k++) { EventCRFBean eventCRF = (EventCRFBean) eventCRFs.get(k); if (!eventCRF.getStatus().equals(Status.DELETED)) { eventCRF.setStatus(Status.AUTO_DELETED); eventCRF.setUpdater(ub); eventCRF.setUpdatedDate(new Date()); ecdao.update(eventCRF); // remove all the item data ArrayList itemDatas = iddao.findAllByEventCRFId(eventCRF.getId()); for (int a = 0; a < itemDatas.size(); a++) { ItemDataBean item = (ItemDataBean) itemDatas.get(a); if (!item.getStatus().equals(Status.DELETED)) { item.setStatus(Status.AUTO_DELETED); item.setUpdater(ub); item.setUpdatedDate(new Date()); iddao.update(item); } } } } } } String emailBody = respage.getString("the_subject") + " " + subject.getName() + " " + respage.getString("has_been_removed_from_the_study") + study.getName() + "."; addPageMessage(emailBody); sendEmail(emailBody); forwardPage(Page.LIST_STUDY_SUBJECT_SERVLET); } } }