use of org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO in project OpenClinica by OpenClinica.
the class HideCRFManager method removeHiddenCRFBeans.
/**
* Given a StudyEventDefinitionBean and a list of CRFBeans as parameters,
* this method returns of new list of CRFBeans containing only unhidden CRFs
* (their isHideCRF property is false).
*
* @param studyEventBean
* The StudyEventDefinitionBean
* @param crfBeans
* An ArrayList of CRFBeans
* @param dataSource
* A javax.sql.DataSource for the use of the
* EventDefinitionCRFDAO.
* @return An ArrayList of CRFBeans containing only "unhidden" CRFs.
*/
public ArrayList<CRFBean> removeHiddenCRFBeans(StudyBean study, StudyEventDefinitionBean studyEventBean, ArrayList<CRFBean> crfBeans, DataSource dataSource) {
ArrayList<CRFBean> newBeans = new ArrayList<CRFBean>();
if (crfBeans == null || crfBeans.isEmpty()) {
return newBeans;
}
EventDefinitionCRFDAO eventDefinitionCRFDAO = new EventDefinitionCRFDAO(dataSource);
EventDefinitionCRFBean tempBean = new EventDefinitionCRFBean();
for (CRFBean crfBean : crfBeans) {
tempBean = eventDefinitionCRFDAO.findByStudyEventDefinitionIdAndCRFId(study, studyEventBean.getId(), crfBean.getId());
if (tempBean != null && !tempBean.isHideCrf()) {
newBeans.add(crfBean);
}
}
return newBeans;
}
use of org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO in project OpenClinica by OpenClinica.
the class DeleteEventCRFServlet method processRequest.
@Override
public void processRequest() throws Exception {
FormProcessor fp = new FormProcessor(request);
int studySubId = fp.getInt(STUDY_SUB_ID, true);
int eventCRFId = fp.getInt(EVENT_CRF_ID);
String action = request.getParameter("action");
StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource());
StudySubjectDAO subdao = new StudySubjectDAO(sm.getDataSource());
EventCRFDAO ecdao = new EventCRFDAO(sm.getDataSource());
StudyDAO sdao = new StudyDAO(sm.getDataSource());
if (eventCRFId == 0) {
addPageMessage(respage.getString("please_choose_an_event_CRF_to_delete"));
request.setAttribute("id", new Integer(studySubId).toString());
forwardPage(Page.VIEW_STUDY_SUBJECT_SERVLET);
} else {
EventCRFBean eventCRF = (EventCRFBean) ecdao.findByPK(eventCRFId);
StudySubjectBean studySub = (StudySubjectBean) subdao.findByPK(studySubId);
request.setAttribute("studySub", studySub);
// construct info needed on view event crf page
CRFDAO cdao = new CRFDAO(sm.getDataSource());
CRFVersionDAO cvdao = new CRFVersionDAO(sm.getDataSource());
int crfVersionId = eventCRF.getCRFVersionId();
CRFBean cb = cdao.findByVersionId(crfVersionId);
eventCRF.setCrf(cb);
CRFVersionBean cvb = (CRFVersionBean) cvdao.findByPK(crfVersionId);
eventCRF.setCrfVersion(cvb);
// then get the definition so we can call
// DisplayEventCRFBean.setFlags
int studyEventId = eventCRF.getStudyEventId();
StudyEventBean event = (StudyEventBean) sedao.findByPK(studyEventId);
int studyEventDefinitionId = sedao.getDefinitionIdFromStudyEventId(studyEventId);
StudyEventDefinitionDAO seddao = new StudyEventDefinitionDAO(sm.getDataSource());
StudyEventDefinitionBean sed = (StudyEventDefinitionBean) seddao.findByPK(studyEventDefinitionId);
event.setStudyEventDefinition(sed);
request.setAttribute("event", event);
EventDefinitionCRFDAO edcdao = new EventDefinitionCRFDAO(sm.getDataSource());
StudyBean study = (StudyBean) sdao.findByPK(studySub.getStudyId());
EventDefinitionCRFBean edc = edcdao.findByStudyEventDefinitionIdAndCRFId(study, studyEventDefinitionId, cb.getId());
DisplayEventCRFBean dec = new DisplayEventCRFBean();
dec.setEventCRF(eventCRF);
dec.setFlags(eventCRF, ub, currentRole, edc.isDoubleEntry());
// find all item data
ItemDataDAO iddao = new ItemDataDAO(sm.getDataSource());
dnDao = new DiscrepancyNoteDAO(sm.getDataSource());
ArrayList<ItemDataBean> itemData = iddao.findAllByEventCRFId(eventCRF.getId());
request.setAttribute("items", itemData);
if ("confirm".equalsIgnoreCase(action)) {
request.setAttribute("displayEventCRF", dec);
forwardPage(Page.DELETE_EVENT_CRF);
} else {
logger.info("submit to delete the event CRF from event");
// OC-6303 Deleting Event CRF resets Show / Hide logic
// delete records from DynamicItemForm and DynamicItemGroup
// getDynamicsItemFormMetadataDao().delete(eventCRFId);
// getDynamicsItemGroupMetadataDao().delete(eventCRFId);
eventCRF.setOldStatus(eventCRF.getStatus());
eventCRF.setStatus(Status.RESET);
eventCRF.setUpdater(ub);
ecdao.update(eventCRF);
for (ItemDataBean itemdata : itemData) {
// OC-6343 Rule behaviour must be reset if an Event CRF is deleted
// delete the records from ruleActionRunLogDao
List<RuleActionRunLogBean> ruleActionRunLog = getRuleActionRunLogDao().findAllItemData(itemdata.getId());
if (ruleActionRunLog.size() != 0) {
getRuleActionRunLogDao().delete(itemdata.getId());
}
// OC-6344 Notes & Discrepancies must be set to "closed" when event CRF is deleted
// parentDiscrepancyNoteList is the list of the parent DNs records only
ArrayList<DiscrepancyNoteBean> parentDiscrepancyNoteList = getDnDao().findParentNotesOnlyByItemData(itemdata.getId());
for (DiscrepancyNoteBean parentDiscrepancyNote : parentDiscrepancyNoteList) {
if (parentDiscrepancyNote.getResolutionStatusId() != 4) {
// if the DN's resolution status is
// not set to Closed
String description = resword.getString("dn_auto-closed_description");
String detailedNotes = resword.getString("dn_auto_closed_detailed_notes");
// create new DN record , new DN Map record , also update the parent record
createDiscrepancyNoteBean(description, detailedNotes, itemdata.getId(), study, ub, parentDiscrepancyNote);
}
}
iddao = new ItemDataDAO(sm.getDataSource());
ifmdao = new ItemFormMetadataDAO(sm.getDataSource());
ItemDataBean idBean = (ItemDataBean) iddao.findByPK(itemdata.getId());
ItemFormMetadataBean ifmBean = ifmdao.findByItemIdAndCRFVersionId(idBean.getItemId(), crfVersionId);
// Updating Dn_item_data_map actovated column into false for the existing DNs
ArrayList<DiscrepancyNoteBean> dnBeans = getDnDao().findExistingNotesForItemData(itemdata.getId());
if (dnBeans.size() != 0) {
DiscrepancyNoteBean dnBean = new DiscrepancyNoteBean();
dnBean.setEntityId(itemdata.getId());
dnBean.setActivated(false);
getDnDao().updateDnMapActivation(dnBean);
}
// Default Values are not addressed
itemdata.setValue("");
itemdata.setOldStatus(itemdata.getStatus());
itemdata.setOwner(ub);
itemdata.setStatus(Status.AVAILABLE);
itemdata.setUpdater(ub);
iddao.updateUser(itemdata);
iddao.update(itemdata);
}
// OC-6291 event_crf status change
eventCRF.setOldStatus(eventCRF.getStatus());
eventCRF.setStatus(Status.AVAILABLE);
eventCRF.setUpdater(ub);
ecdao.update(eventCRF);
if (event.getSubjectEventStatus().isCompleted() || event.getSubjectEventStatus().isSigned()) {
event.setSubjectEventStatus(SubjectEventStatus.DATA_ENTRY_STARTED);
event.setUpdater(ub);
sedao = new StudyEventDAO(sm.getDataSource());
sedao.update(event);
}
String emailBody = respage.getString("the_event_CRF") + cb.getName() + respage.getString("has_been_deleted_from_the_event") + event.getStudyEventDefinition().getName() + ". " + respage.getString("has_been_deleted_from_the_event_cont");
addPageMessage(emailBody);
// sendEmail(emailBody);
request.setAttribute("id", new Integer(studySubId).toString());
forwardPage(Page.VIEW_STUDY_SUBJECT_SERVLET);
}
}
}
use of org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO in project OpenClinica by OpenClinica.
the class AuditLogStudyServlet method processRequest.
/*
* (non-Javadoc) Assume that we get the user id automatically. We will jump
* from the edit user page if the user is an admin, they can get to see the
* users' log
*
* @see org.akaza.openclinica.control.core.SecureController#processRequest()
*/
/*
* (non-Javadoc) redo this servlet to run the audits per study subject for
* the study; need to add a studyId param and then use the
* StudySubjectDAO.findAllByStudyOrderByLabel() method to grab a lot of
* study subject beans and then return them much like in
* ViewStudySubjectAuditLogServet.process()
*
* currentStudy instead of studyId?
*/
@Override
protected void processRequest() throws Exception {
int studyId = currentStudy.getId();
StudySubjectDAO subdao = new StudySubjectDAO(sm.getDataSource());
SubjectDAO sdao = new SubjectDAO(sm.getDataSource());
AuditDAO adao = new AuditDAO(sm.getDataSource());
FormProcessor fp = new FormProcessor(request);
StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource());
StudyEventDefinitionDAO seddao = new StudyEventDefinitionDAO(sm.getDataSource());
EventDefinitionCRFDAO edcdao = new EventDefinitionCRFDAO(sm.getDataSource());
EventCRFDAO ecdao = new EventCRFDAO(sm.getDataSource());
StudyDAO studydao = new StudyDAO(sm.getDataSource());
CRFDAO cdao = new CRFDAO(sm.getDataSource());
CRFVersionDAO cvdao = new CRFVersionDAO(sm.getDataSource());
HashMap eventCRFAuditsHashMap = new HashMap();
HashMap eventsHashMap = new HashMap();
HashMap studySubjectAuditsHashMap = new HashMap();
HashMap subjectHashMap = new HashMap();
ArrayList studySubjects = subdao.findAllByStudyOrderByLabel(currentStudy);
logger.info("found " + studySubjects.size() + " study subjects");
request.setAttribute("studySubjects", studySubjects);
for (int ss = 0; ss < studySubjects.size(); ss++) {
ArrayList studySubjectAudits = new ArrayList();
ArrayList eventCRFAudits = new ArrayList();
StudySubjectBean studySubject = (StudySubjectBean) studySubjects.get(ss);
// request.setAttribute("studySub"+ss, studySubject);
SubjectBean subject = (SubjectBean) sdao.findByPK(studySubject.getSubjectId());
subjectHashMap.put(new Integer(studySubject.getId()), subject);
// logger.info("just set a subject with a status of
// "+subject.getStatus().getName());
// request.setAttribute("subject"+ss, subject);
StudyBean study = (StudyBean) studydao.findByPK(studySubject.getStudyId());
request.setAttribute("study", study);
// hmm, repetitive work?
// Show both study subject and subject audit events together
// Study
studySubjectAudits.addAll(adao.findStudySubjectAuditEvents(studySubject.getId()));
// subject
// value
// changed
// Global
studySubjectAudits.addAll(adao.findSubjectAuditEvents(subject.getId()));
// subject
// value
// changed
studySubjectAuditsHashMap.put(new Integer(studySubject.getId()), studySubjectAudits);
// request.setAttribute("studySubjectAudits"+ss,
// studySubjectAudits);
// Get the list of events
ArrayList events = sedao.findAllByStudySubject(studySubject);
for (int i = 0; i < events.size(); i++) {
// Link study event definitions
StudyEventBean studyEvent = (StudyEventBean) events.get(i);
studyEvent.setStudyEventDefinition((StudyEventDefinitionBean) seddao.findByPK(studyEvent.getStudyEventDefinitionId()));
// Link event CRFs
studyEvent.setEventCRFs(ecdao.findAllByStudyEvent(studyEvent));
}
// for (int i = 0; i < events.size(); i++) {
// StudyEventBean studyEvent = (StudyEventBean) events.get(i);
// ArrayList eventCRFs = studyEvent.getEventCRFs();
// for (int j = 0; j < eventCRFs.size(); j++) {
// //Link CRF and CRF Versions
// EventCRFBean eventCRF = (EventCRFBean) eventCRFs.get(j);
// eventCRF.setCrfVersion((CRFVersionBean)
// cvdao.findByPK(eventCRF.getCRFVersionId()));
// eventCRF.setCrf((CRFBean)
// cdao.findByVersionId(eventCRF.getCRFVersionId()));
// //Get the event crf audits
// eventCRFAudits.addAll(adao.findEventCRFAuditEvents(eventCRF.getId()));
// }
// }
eventsHashMap.put(new Integer(studySubject.getId()), events);
// request.setAttribute("events"+ss, events);
// eventCRFAuditsHashMap.put(new Integer(studySubject.getId()),
// eventCRFAudits);
// request.setAttribute("eventCRFAudits"+ss, eventCRFAudits);
}
// request.setAttribute("eventCRFAudits", eventCRFAuditsHashMap);
request.setAttribute("events", eventsHashMap);
request.setAttribute("studySubjectAudits", studySubjectAuditsHashMap);
request.setAttribute("study", currentStudy);
request.setAttribute("subjects", subjectHashMap);
// FormProcessor fp = new FormProcessor(request);
//
// AuditEventDAO aeDAO = new AuditEventDAO(sm.getDataSource());
// ArrayList al = aeDAO.findAllByStudyId(currentStudy.getId());
//
// EntityBeanTable table = fp.getEntityBeanTable();
// ArrayList allRows = AuditEventStudyRow.generateRowsFromBeans(al);
// String[] columns = { "Date and Time", "Action", "Entity/Operation",
// "Record ID", "Changes and Additions","Other Info" };
// table.setColumns(new ArrayList(Arrays.asList(columns)));
// table.hideColumnLink(4);
// table.hideColumnLink(1);
// table.hideColumnLink(5);
// table.setQuery("AuditLogUser?userLogId="+userId, new HashMap());
// String[] columns =
// {resword.getString("date_and_time"),resword.getString("action_message"),
// resword.getString("entity_operation"),
// resword.getString("updated_by"),resword.getString("subject_unique_ID"),resword.getString("changes_and_additions"),
// //"Other Info",
// resword.getString("actions")};
// table.setColumns(new ArrayList(Arrays.asList(columns)));
// table.setAscendingSort(false);
// table.hideColumnLink(1);
// table.hideColumnLink(5);
// table.hideColumnLink(6);
// //table.hideColumnLink(7);
// table.setQuery("AuditLogStudy", new HashMap());
// table.setRows(allRows);
// table.computeDisplay();
//
//
// request.setAttribute("table", table);
logger.warn("*** found servlet, sending to page ***");
String pattn = "";
String pattern2 = "";
pattn = ResourceBundleProvider.getFormatBundle().getString("date_format_string");
pattern2 = ResourceBundleProvider.getFormatBundle().getString("date_time_format_string");
request.setAttribute("dateFormatPattern", pattn);
request.setAttribute("dateTimeFormatPattern", pattern2);
forwardPage(Page.AUDIT_LOG_STUDY);
}
use of org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO in project OpenClinica by OpenClinica.
the class CreateCRFVersionServlet method processRequest.
@SuppressWarnings("unchecked")
@Override
public void processRequest() throws Exception {
resetPanel();
panel.setStudyInfoShown(true);
CRFDAO cdao = new CRFDAO(sm.getDataSource());
CRFVersionDAO vdao = new CRFVersionDAO(sm.getDataSource());
EventDefinitionCRFDAO edao = new EventDefinitionCRFDAO(sm.getDataSource());
FormProcessor fp = new FormProcessor(request);
// checks which module the requests are from
String module = fp.getString(MODULE);
// keep the module in the session
session.setAttribute(MODULE, module);
request.setAttribute("xformEnabled", CoreResources.getField("xform.enabled"));
String action = request.getParameter("action");
CRFVersionBean version = (CRFVersionBean) session.getAttribute("version");
if (StringUtil.isBlank(action)) {
logger.debug("action is blank");
request.setAttribute("version", version);
forwardPage(Page.CREATE_CRF_VERSION);
} else if ("confirm".equalsIgnoreCase(action)) {
String dir = SQLInitServlet.getField("filePath");
if (!new File(dir).exists()) {
logger.debug("The filePath in datainfo.properties is invalid " + dir);
addPageMessage(resword.getString("the_filepath_you_defined"));
forwardPage(Page.CREATE_CRF_VERSION);
// BWP 01/13/2009 >>
return;
// >>
}
// All the uploaded files will be saved in filePath/crf/original/
String theDir = dir + "crf" + File.separator + "original" + File.separator;
if (!new File(theDir).isDirectory()) {
new File(theDir).mkdirs();
logger.debug("Made the directory " + theDir);
}
// MultipartRequest multi = new MultipartRequest(request, theDir, 50 * 1024 * 1024);
String tempFile = "";
try {
tempFile = uploadFile(theDir, version);
} catch (CRFReadingException crfException) {
Validator.addError(errors, "excel_file", crfException.getMessage());
String msg = crfException.getMessage();
request.setAttribute("formMessages", errors);
forwardPage(Page.CREATE_CRF_VERSION);
return;
} catch (Exception e) {
//
logger.warn("*** Found exception during file upload***");
e.printStackTrace();
}
session.setAttribute("tempFileName", tempFile);
// provided and/or not xls format
if (errors.isEmpty()) {
String s = ((NewCRFBean) session.getAttribute("nib")).getVersionName();
if (s.length() > 255) {
Validator.addError(errors, "excel_file", resword.getString("the_version_CRF_version_more_than_255"));
} else if (s.length() <= 0) {
Validator.addError(errors, "excel_file", resword.getString("the_VERSION_column_was_blank"));
}
version.setName(s);
if (version.getCrfId() == 0) {
version.setCrfId(fp.getInt("crfId"));
}
session.setAttribute("version", version);
}
if (!errors.isEmpty()) {
logger.debug("has validation errors ");
request.setAttribute("formMessages", errors);
forwardPage(Page.CREATE_CRF_VERSION);
} else {
CRFBean crf = (CRFBean) cdao.findByPK(version.getCrfId());
ArrayList versions = (ArrayList) vdao.findAllByCRF(crf.getId());
for (int i = 0; i < versions.size(); i++) {
CRFVersionBean version1 = (CRFVersionBean) versions.get(i);
if (version.getName().equals(version1.getName())) {
// version already exists
logger.debug("Version already exists; owner or not:" + ub.getId() + "," + version1.getOwnerId());
if (ub.getId() != version1.getOwnerId()) {
// not owner
addPageMessage(respage.getString("CRF_version_try_upload_exists_database") + version1.getOwner().getName() + respage.getString("please_contact_owner_to_delete"));
forwardPage(Page.CREATE_CRF_VERSION);
return;
} else {
// owner,
ArrayList definitions = edao.findByDefaultVersion(version1.getId());
if (!definitions.isEmpty()) {
// used in
// definition
request.setAttribute("definitions", definitions);
forwardPage(Page.REMOVE_CRF_VERSION_DEF);
return;
} else {
// not used in definition
int previousVersionId = version1.getId();
version.setId(previousVersionId);
session.setAttribute("version", version);
session.setAttribute("previousVersionId", new Integer(previousVersionId));
forwardPage(Page.REMOVE_CRF_VERSION_CONFIRM);
return;
}
}
}
}
// didn't find same version in the DB,let user upload the excel
// file
logger.debug("didn't find same version in the DB,let user upload the excel file.");
// List excelErr =
// ((ArrayList)request.getAttribute("excelErrors"));
List excelErr = (ArrayList) session.getAttribute("excelErrors");
logger.debug("excelErr.isEmpty()=" + excelErr.isEmpty());
if (excelErr != null && excelErr.isEmpty()) {
addPageMessage(resword.getString("congratulations_your_spreadsheet_no_errors"));
forwardPage(Page.VIEW_SECTION_DATA_ENTRY_PREVIEW);
} else {
logger.debug("OpenClinicaException thrown, forwarding to CREATE_CRF_VERSION_CONFIRM.");
forwardPage(Page.CREATE_CRF_VERSION_CONFIRM);
}
return;
}
} else if ("confirmsql".equalsIgnoreCase(action)) {
NewCRFBean nib = (NewCRFBean) session.getAttribute("nib");
if (nib != null && nib.getItemQueries() != null) {
request.setAttribute("openQueries", nib.getItemQueries());
} else {
request.setAttribute("openQueries", new HashMap());
}
boolean canDelete = false;
// check whether need to delete previous version
Boolean deletePreviousVersion = (Boolean) session.getAttribute("deletePreviousVersion");
Integer previousVersionId = (Integer) session.getAttribute("previousVersionId");
if (deletePreviousVersion != null && deletePreviousVersion.equals(Boolean.TRUE) && previousVersionId != null && previousVersionId.intValue() > 0) {
logger.debug("Need to delete previous version");
// whether we can delete
canDelete = canDeleteVersion(previousVersionId.intValue());
if (!canDelete) {
logger.debug("but cannot delete previous version");
if (session.getAttribute("itemsHaveData") == null && session.getAttribute("eventsForVersion") == null) {
addPageMessage(respage.getString("you_are_not_owner_some_items_cannot_delete"));
}
if (session.getAttribute("itemsHaveData") == null) {
session.setAttribute("itemsHaveData", new ArrayList());
}
if (session.getAttribute("eventsForVersion") == null) {
session.setAttribute("eventsForVersion", new ArrayList());
}
forwardPage(Page.CREATE_CRF_VERSION_NODELETE);
return;
}
ArrayList<ItemBean> nonSharedItems = (ArrayList<ItemBean>) vdao.findNotSharedItemsByVersion(previousVersionId.intValue());
// htaycher: here is the trick we need to put in nib1.setItemQueries()
// update statements for shared items and insert for nonShared that were just deleted 5927
HashMap item_table_statements = new HashMap();
ArrayList<String> temp = new ArrayList<String>(nonSharedItems.size());
for (ItemBean item : nonSharedItems) {
temp.add(item.getName());
item_table_statements.put(item.getName(), nib.getBackupItemQueries().get(item.getName()));
}
for (String item_name : (Set<String>) nib.getItemQueries().keySet()) {
// check if item shared
if (!temp.contains(item_name)) {
item_table_statements.put(item_name, nib.getItemQueries().get(item_name));
}
}
// statements to run
if (!nonSharedItems.isEmpty()) {
request.setAttribute("openQueries", item_table_statements);
}
// htaycher: put all statements in
nib.setItemQueries(item_table_statements);
session.setAttribute("nib", nib);
}
// submit
logger.debug("commit sql");
NewCRFBean nib1 = (NewCRFBean) session.getAttribute("nib");
if (nib1 != null) {
try {
if (canDelete) {
nib1.deleteInsertToDB();
} else {
nib1.insertToDB();
}
request.setAttribute("queries", nib1.getQueries());
// YW << for add a link to "View CRF Version Data Entry".
// For this purpose, CRFVersion id is needed.
// So the latest CRFVersion Id of A CRF Id is it.
CRFVersionDAO cvdao = new CRFVersionDAO(sm.getDataSource());
ArrayList crfvbeans = new ArrayList();
logger.debug("CRF-ID [" + version.getCrfId() + "]");
int crfVersionId = 0;
String versionOID = null;
if (version.getCrfId() != 0) {
crfvbeans = cvdao.findAllByCRFId(version.getCrfId());
CRFVersionBean cvbean = (CRFVersionBean) crfvbeans.get(crfvbeans.size() - 1);
crfVersionId = cvbean.getId();
versionOID = cvbean.getOid();
for (Iterator iter = crfvbeans.iterator(); iter.hasNext(); ) {
cvbean = (CRFVersionBean) iter.next();
if (crfVersionId < cvbean.getId()) {
crfVersionId = cvbean.getId();
}
}
}
// Not needed; crfVersionId will be autoboxed in Java 5
// this was added for the old CVS java compiler
Integer cfvID = new Integer(crfVersionId);
if (cfvID == 0) {
cfvID = cvdao.findCRFVersionId(nib1.getCrfId(), nib1.getVersionName());
}
CRFVersionBean finalVersion = (CRFVersionBean) cvdao.findByPK(cfvID);
version.setCrfId(nib1.getCrfId());
version.setOid(finalVersion.getOid());
CRFBean crfBean = (CRFBean) cdao.findByPK(version.getCrfId());
crfBean.setUpdatedDate(version.getCreatedDate());
crfBean.setUpdater(ub);
cdao.update(crfBean);
// workaround to get a correct file name below, tbh 06/2008
request.setAttribute("crfVersionId", cfvID);
// YW >>
// return those properties to initial values
session.removeAttribute("version");
session.removeAttribute("eventsForVersion");
session.removeAttribute("itemsHaveData");
session.removeAttribute("nib");
session.removeAttribute("deletePreviousVersion");
session.removeAttribute("previousVersionId");
// save new version spreadsheet
String tempFile = (String) session.getAttribute("tempFileName");
if (tempFile != null) {
logger.debug("*** ^^^ *** saving new version spreadsheet" + tempFile);
try {
String dir = SQLInitServlet.getField("filePath");
File f = new File(dir + "crf" + File.separator + "original" + File.separator + tempFile);
// check to see whether crf/new/ folder exists
// inside, if not,
// creates
// the crf/new/ folder
String finalDir = dir + "crf" + File.separator + "new" + File.separator;
if (!new File(finalDir).isDirectory()) {
logger.debug("need to create folder for excel files" + finalDir);
new File(finalDir).mkdirs();
}
// String newFile = version.getCrfId() +
// version.getName() + ".xls";
String newFile = version.getCrfId() + version.getOid() + ".xls";
logger.debug("*** ^^^ *** new file: " + newFile);
File nf = new File(finalDir + newFile);
logger.debug("copying old file " + f.getName() + " to new file " + nf.getName());
copy(f, nf);
// ?
} catch (IOException ie) {
logger.debug("==============");
addPageMessage(respage.getString("CRF_version_spreadsheet_could_not_saved_contact"));
}
}
session.removeAttribute("tempFileName");
session.removeAttribute(MODULE);
session.removeAttribute("excelErrors");
session.removeAttribute("htmlTab");
forwardPage(Page.CREATE_CRF_VERSION_DONE);
} catch (OpenClinicaException pe) {
logger.debug("--------------");
session.setAttribute("excelErrors", nib1.getErrors());
// request.setAttribute("excelErrors", nib1.getErrors());
forwardPage(Page.CREATE_CRF_VERSION_ERROR);
}
} else {
forwardPage(Page.CREATE_CRF_VERSION);
}
} else if ("delete".equalsIgnoreCase(action)) {
logger.debug("user wants to delete previous version");
List excelErr = (ArrayList) session.getAttribute("excelErrors");
logger.debug("for overwrite CRF version, excelErr.isEmpty()=" + excelErr.isEmpty());
if (excelErr != null && excelErr.isEmpty()) {
addPageMessage(resword.getString("congratulations_your_spreadsheet_no_errors"));
// should be moved to excelErr != null block
session.setAttribute("deletePreviousVersion", Boolean.TRUE);
forwardPage(Page.VIEW_SECTION_DATA_ENTRY_PREVIEW);
} else {
// should be moved to excelErr != null
session.setAttribute("deletePreviousVersion", Boolean.FALSE);
// block
logger.debug("OpenClinicaException thrown, forwarding to CREATE_CRF_VERSION_CONFIRM.");
forwardPage(Page.CREATE_CRF_VERSION_CONFIRM);
}
}
}
use of org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO in project OpenClinica by OpenClinica.
the class RemoveStudyServlet method processRequest.
@Override
public void processRequest() throws Exception {
StudyDAO sdao = new StudyDAO(sm.getDataSource());
FormProcessor fp = new FormProcessor(request);
int studyId = fp.getInt("id");
StudyBean study = (StudyBean) sdao.findByPK(studyId);
// find all sites
ArrayList sites = (ArrayList) sdao.findAllByParent(studyId);
// find all user and roles in the study, include ones in sites
UserAccountDAO udao = new UserAccountDAO(sm.getDataSource());
ArrayList userRoles = udao.findAllByStudyId(studyId);
// find all subjects in the study, include ones in sites
StudySubjectDAO ssdao = new StudySubjectDAO(sm.getDataSource());
ArrayList subjects = ssdao.findAllByStudy(study);
// find all events in the study, include ones in sites
StudyEventDefinitionDAO sefdao = new StudyEventDefinitionDAO(sm.getDataSource());
ArrayList definitions = sefdao.findAllByStudy(study);
String action = request.getParameter("action");
if (studyId == 0) {
addPageMessage(respage.getString("please_choose_a_study_to_remove"));
forwardPage(Page.STUDY_LIST_SERVLET);
} else {
if ("confirm".equalsIgnoreCase(action)) {
request.setAttribute("studyToRemove", study);
request.setAttribute("sitesToRemove", sites);
request.setAttribute("userRolesToRemove", userRoles);
request.setAttribute("subjectsToRemove", subjects);
request.setAttribute("definitionsToRemove", definitions);
forwardPage(Page.REMOVE_STUDY);
} else {
logger.info("submit to remove the study");
// change all statuses to unavailable
StudyDAO studao = new StudyDAO(sm.getDataSource());
study.setOldStatus(study.getStatus());
study.setStatus(Status.DELETED);
study.setUpdater(ub);
study.setUpdatedDate(new Date());
studao.update(study);
// remove all sites
for (int i = 0; i < sites.size(); i++) {
StudyBean site = (StudyBean) sites.get(i);
if (!site.getStatus().equals(Status.DELETED)) {
site.setOldStatus(site.getStatus());
site.setStatus(Status.AUTO_DELETED);
site.setUpdater(ub);
site.setUpdatedDate(new Date());
sdao.update(site);
}
}
// remove all users and roles
for (int i = 0; i < userRoles.size(); i++) {
StudyUserRoleBean role = (StudyUserRoleBean) userRoles.get(i);
logger.info("remove user role" + role.getName());
if (!role.getStatus().equals(Status.DELETED)) {
role.setStatus(Status.AUTO_DELETED);
role.setUpdater(ub);
role.setUpdatedDate(new Date());
udao.updateStudyUserRole(role, role.getUserName());
}
}
// YW << bug fix for that current active study has been deleted
if (study.getId() == currentStudy.getId()) {
currentStudy.setStatus(Status.DELETED);
currentRole.setStatus(Status.DELETED);
} else // (auto-removed)
if (currentStudy.getParentStudyId() == study.getId()) {
currentStudy.setStatus(Status.AUTO_DELETED);
// we may need handle this later?
currentRole.setStatus(Status.DELETED);
}
// remove all subjects
for (int i = 0; i < subjects.size(); i++) {
StudySubjectBean subject = (StudySubjectBean) subjects.get(i);
if (!subject.getStatus().equals(Status.DELETED)) {
subject.setStatus(Status.AUTO_DELETED);
subject.setUpdater(ub);
subject.setUpdatedDate(new Date());
ssdao.update(subject);
}
}
// remove all study_group_class
// changed by jxu on 08-31-06, to fix the problem of no study_id
// in study_group table
StudyGroupClassDAO sgcdao = new StudyGroupClassDAO(sm.getDataSource());
StudyGroupDAO sgdao = new StudyGroupDAO(sm.getDataSource());
SubjectGroupMapDAO sgmdao = new SubjectGroupMapDAO(sm.getDataSource());
// YW 09-27-2007, enable status updating for StudyGroupClassBean
ArrayList groups = sgcdao.findAllByStudy(study);
for (int i = 0; i < groups.size(); i++) {
StudyGroupClassBean group = (StudyGroupClassBean) groups.get(i);
if (!group.getStatus().equals(Status.DELETED)) {
group.setStatus(Status.AUTO_DELETED);
group.setUpdater(ub);
group.setUpdatedDate(new Date());
sgcdao.update(group);
// all subject_group_map
ArrayList subjectGroupMaps = sgmdao.findAllByStudyGroupClassId(group.getId());
for (int j = 0; j < subjectGroupMaps.size(); j++) {
SubjectGroupMapBean sgMap = (SubjectGroupMapBean) subjectGroupMaps.get(j);
if (!sgMap.getStatus().equals(Status.DELETED)) {
sgMap.setStatus(Status.AUTO_DELETED);
sgMap.setUpdater(ub);
sgMap.setUpdatedDate(new Date());
sgmdao.update(sgMap);
}
}
}
}
ArrayList groupClasses = sgcdao.findAllActiveByStudy(study);
for (int i = 0; i < groupClasses.size(); i++) {
StudyGroupClassBean gc = (StudyGroupClassBean) groupClasses.get(i);
if (!gc.getStatus().equals(Status.DELETED)) {
gc.setStatus(Status.AUTO_DELETED);
gc.setUpdater(ub);
gc.setUpdatedDate(new Date());
sgcdao.update(gc);
}
}
// remove all event definitions and event
EventDefinitionCRFDAO edcdao = new EventDefinitionCRFDAO(sm.getDataSource());
StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource());
for (int i = 0; i < definitions.size(); i++) {
StudyEventDefinitionBean definition = (StudyEventDefinitionBean) definitions.get(i);
if (!definition.getStatus().equals(Status.DELETED)) {
definition.setStatus(Status.AUTO_DELETED);
definition.setUpdater(ub);
definition.setUpdatedDate(new Date());
sefdao.update(definition);
ArrayList edcs = (ArrayList) edcdao.findAllByDefinition(definition.getId());
for (int j = 0; j < edcs.size(); j++) {
EventDefinitionCRFBean edc = (EventDefinitionCRFBean) edcs.get(j);
if (!edc.getStatus().equals(Status.DELETED)) {
edc.setStatus(Status.AUTO_DELETED);
edc.setUpdater(ub);
edc.setUpdatedDate(new Date());
edcdao.update(edc);
}
}
ArrayList events = (ArrayList) sedao.findAllByDefinition(definition.getId());
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.setOldStatus(eventCRF.getStatus());
eventCRF.setStatus(Status.AUTO_DELETED);
eventCRF.setUpdater(ub);
eventCRF.setUpdatedDate(new Date());
ecdao.update(eventCRF);
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.setOldStatus(item.getStatus());
item.setStatus(Status.AUTO_DELETED);
item.setUpdater(ub);
item.setUpdatedDate(new Date());
iddao.update(item);
}
}
}
}
}
}
}
}
// for definitions
DatasetDAO datadao = new DatasetDAO(sm.getDataSource());
ArrayList dataset = datadao.findAllByStudyId(study.getId());
for (int i = 0; i < dataset.size(); i++) {
DatasetBean data = (DatasetBean) dataset.get(i);
if (!data.getStatus().equals(Status.DELETED)) {
data.setStatus(Status.AUTO_DELETED);
data.setUpdater(ub);
data.setUpdatedDate(new Date());
datadao.update(data);
}
}
addPageMessage(resexception.getString("this_study_has_been_removed_succesfully"));
forwardPage(Page.STUDY_LIST_SERVLET);
}
}
}
Aggregations