/* * OpenClinica is distributed under the * GNU Lesser General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * copyright 2003-2005 Akaza Research */ package org.akaza.openclinica.control.managestudy; import org.akaza.openclinica.bean.admin.CRFBean; import org.akaza.openclinica.bean.core.NullValue; import org.akaza.openclinica.bean.core.NumericComparisonOperator; import org.akaza.openclinica.bean.core.Role; import org.akaza.openclinica.bean.core.Status; import org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean; import org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean; import org.akaza.openclinica.bean.submit.CRFVersionBean; import org.akaza.openclinica.control.SpringServletAccess; import org.akaza.openclinica.control.core.SecureController; import org.akaza.openclinica.control.form.FormProcessor; import org.akaza.openclinica.control.form.Validator; import org.akaza.openclinica.core.form.StringUtil; import org.akaza.openclinica.dao.admin.CRFDAO; import org.akaza.openclinica.dao.core.CoreResources; import org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO; import org.akaza.openclinica.dao.managestudy.StudyDAO; import org.akaza.openclinica.dao.managestudy.StudyEventDefinitionDAO; import org.akaza.openclinica.dao.service.StudyParameterValueDAO; import org.akaza.openclinica.dao.submit.CRFVersionDAO; import org.akaza.openclinica.domain.SourceDataVerification; import org.akaza.openclinica.service.managestudy.EventDefinitionCrfTagService; import org.akaza.openclinica.service.pmanage.Authorization; import org.akaza.openclinica.service.pmanage.ParticipantPortalRegistrar; import org.akaza.openclinica.view.Page; import org.akaza.openclinica.web.InsufficientPermissionException; import org.akaza.openclinica.web.bean.CRFRow; import org.akaza.openclinica.web.bean.EntityBeanTable; import org.apache.commons.lang.StringUtils; import java.net.MalformedURLException; import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * @author jxu * * Defines a new study event */ public class DefineStudyEventServlet extends SecureController { EventDefinitionCrfTagService eventDefinitionCrfTagService = null; /** * Checks whether the user has the correct privilege */ @Override public void mayProceed() throws InsufficientPermissionException { checkStudyLocked(Page.LIST_DEFINITION_SERVLET, respage.getString("current_study_locked")); if (currentStudy.getParentStudyId() > 0) { addPageMessage(respage.getString("SED_may_only_added_top_level") + respage.getString("please_contact_sysadmin_questions")); throw new InsufficientPermissionException(Page.STUDY_EVENT_DEFINITION_LIST, resexception.getString("not_top_study"), "1"); } if (ub.isSysAdmin()) { return; } if (currentRole.getRole().equals(Role.STUDYDIRECTOR) || currentRole.getRole().equals(Role.COORDINATOR)) { return; } addPageMessage(respage.getString("no_have_persmission_add_SED_to_study") + respage.getString("change_study_contact_sysadmin")); throw new InsufficientPermissionException(Page.STUDY_EVENT_DEFINITION_LIST, resexception.getString("not_study_director"), "1"); } /** * Processes the 'define study event' request * */ @Override public void processRequest() throws Exception { FormProcessor fpr = new FormProcessor(request); // logger.info("actionName*******" + fpr.getString("actionName")); // logger.info("pageNum*******" + fpr.getString("pageNum")); String actionName = request.getParameter("actionName"); ArrayList crfsWithVersion = (ArrayList) session.getAttribute("crfsWithVersion"); if (crfsWithVersion == null) { crfsWithVersion = new ArrayList(); CRFDAO cdao = new CRFDAO(sm.getDataSource()); CRFVersionDAO cvdao = new CRFVersionDAO(sm.getDataSource()); ArrayList crfs = (ArrayList) cdao.findAllByStatus(Status.AVAILABLE); for (int i = 0; i < crfs.size(); i++) { CRFBean crf = (CRFBean) crfs.get(i); ArrayList versions = cvdao.findAllByCRFId(crf.getId()); if (!versions.isEmpty()) { crfsWithVersion.add(crf); } } session.setAttribute("crfsWithVersion", crfsWithVersion); } if (StringUtil.isBlank(actionName)) { StudyEventDefinitionBean sed = new StudyEventDefinitionBean(); sed.setStudyId(currentStudy.getId()); session.setAttribute("definition", sed); session.removeAttribute("tmpCRFIdMap"); forwardPage(Page.DEFINE_STUDY_EVENT1); } else { if ("confirm".equalsIgnoreCase(actionName)) { confirmWholeDefinition(); } else if ("submit".equalsIgnoreCase(actionName)) { // put a try catch in here to fix task # 1642 in Mantis, added // 092007 tbh try { Integer nextAction = Integer.valueOf(request.getParameter("nextAction")); if (nextAction != null) { if (nextAction.intValue() == 1) { session.removeAttribute("definition"); addPageMessage(respage.getString("the_new_event_definition_creation_cancelled")); forwardPage(Page.LIST_DEFINITION_SERVLET); } else if (nextAction.intValue() == 2) { submitDefinition(); //forwardPage(Page.LIST_DEFINITION_SERVLET); ArrayList pageMessages = (ArrayList) request.getAttribute(PAGE_MESSAGE); session.setAttribute("pageMessages", pageMessages); response.sendRedirect(request.getContextPath() + Page.MANAGE_STUDY_MODULE.getFileName()); //forwardPage(Page.MANAGE_STUDY_MODULE); // request.getRequestDispatcher("/pages/studymodule").forward(request, response); // org.akaza.openclinica.service.sdv.SDVUtil sdvUtil = new org.akaza.openclinica.service.sdv.SDVUtil(); // sdvUtil.forwardRequestFromController(request,response,"http://localhost:8080/OpenClinica-SNAPSHOT/pages/studymodule"); //This last part is necessary because the compiler will complain about the return; //statement in the absence of the "if" [the following statements are "reachable"] // boolean redir = "y".equalsIgnoreCase((String)request.getParameter("r")); // if(redir) { return;} } else { logger.debug("actionName ==> 3"); submitDefinition(); StudyEventDefinitionBean sed = new StudyEventDefinitionBean(); sed.setStudyId(currentStudy.getId()); session.setAttribute("definition", sed); forwardPage(Page.DEFINE_STUDY_EVENT1); } } } catch (NumberFormatException e) { e.printStackTrace(); addPageMessage(respage.getString("the_new_event_definition_creation_cancelled")); forwardPage(Page.LIST_DEFINITION_SERVLET); } catch (NullPointerException e) { e.printStackTrace(); addPageMessage(respage.getString("the_new_event_definition_creation_cancelled")); forwardPage(Page.LIST_DEFINITION_SERVLET); } // above added 092007 tbh } else if ("next".equalsIgnoreCase(actionName)) { Integer pageNumber = Integer.valueOf(request.getParameter("pageNum")); if (pageNumber != null) { if (pageNumber.intValue() == 2) { String nextListPage = request.getParameter("next_list_page"); if (nextListPage != null && nextListPage.equalsIgnoreCase("true")) { confirmDefinition1(); } else { confirmDefinition2(); } } else { confirmDefinition1(); } } else { if (session.getAttribute("definition") == null) { StudyEventDefinitionBean sed = new StudyEventDefinitionBean(); sed.setStudyId(currentStudy.getId()); session.setAttribute("definition", sed); } forwardPage(Page.DEFINE_STUDY_EVENT1); } } } } /** * Validates the first section of definition inputs * * @throws Exception */ private void confirmDefinition1() throws Exception { Validator v = new Validator(request); FormProcessor fp = new FormProcessor(request); v.addValidation("name", Validator.NO_BLANKS); v.addValidation("name", Validator.LENGTH_NUMERIC_COMPARISON, NumericComparisonOperator.LESS_THAN_OR_EQUAL_TO, 2000); v.addValidation("description", Validator.LENGTH_NUMERIC_COMPARISON, NumericComparisonOperator.LESS_THAN_OR_EQUAL_TO, 2000); v.addValidation("category", Validator.LENGTH_NUMERIC_COMPARISON, NumericComparisonOperator.LESS_THAN_OR_EQUAL_TO, 2000); errors = v.validate(); session.setAttribute("definition", createStudyEventDefinition()); if (errors.isEmpty()) { logger.debug("no errors in the first section"); // logger.debug("actionName*******" + fp.getString("actionName")); //debugger.debug("pageNum*******" + fp.getString("pageNum")); CRFVersionDAO vdao = new CRFVersionDAO(sm.getDataSource()); ArrayList crfArray = new ArrayList(); /* * The tmpCRFIdMap will hold all the selected CRFs in the session * when the user is navigating through the list. This has been done * so that when the user moves to the next page of CRF list, the * selection made in the previous page doesn't get lost. */ Map tmpCRFIdMap = (HashMap) session.getAttribute("tmpCRFIdMap"); if (tmpCRFIdMap == null) { tmpCRFIdMap = new HashMap(); } ArrayList crfsWithVersion = (ArrayList) session.getAttribute("crfsWithVersion"); for (int i = 0; i < crfsWithVersion.size(); i++) { int id = fp.getInt("id" + i); String name = fp.getString("name" + i); String selected = fp.getString("selected" + i); if (!StringUtil.isBlank(selected) && "yes".equalsIgnoreCase(selected.trim())) { tmpCRFIdMap.put(id, name); } else { // Removing the elements from session which has been // deselected. if (tmpCRFIdMap.containsKey(id)) { tmpCRFIdMap.remove(id); } } } session.setAttribute("tmpCRFIdMap", tmpCRFIdMap); EntityBeanTable table = fp.getEntityBeanTable(); ArrayList allRows = CRFRow.generateRowsFromBeans(crfsWithVersion); String[] columns = { resword.getString("CRF_name"), resword.getString("date_created"), resword.getString("owner"), resword.getString("date_updated"), resword.getString("last_updated_by"), resword.getString("selected") }; table.setColumns(new ArrayList(Arrays.asList(columns))); table.hideColumnLink(5); StudyEventDefinitionBean def1 = (StudyEventDefinitionBean) session.getAttribute("definition"); HashMap args = new HashMap(); args.put("actionName", "next"); args.put("pageNum", "1"); args.put("name", URLEncoder.encode(def1.getName(),"UTF-8")); args.put("repeating", new Boolean(def1.isRepeating()).toString()); args.put("category", def1.getCategory()); args.put("description", URLEncoder.encode(def1.getDescription(),"UTF-8")); args.put("type", def1.getType()); table.setQuery("DefineStudyEvent", args, true); table.setRows(allRows); table.computeDisplay(); request.setAttribute("table", table); forwardPage(Page.DEFINE_STUDY_EVENT2); } else { logger.debug("has validation errors in the first section"); request.setAttribute("formMessages", errors); forwardPage(Page.DEFINE_STUDY_EVENT1); } } /** * Validates the entire definition * * @throws Exception */ private void confirmWholeDefinition() throws Exception { Validator v = new Validator(request); FormProcessor fp = new FormProcessor(request); StudyEventDefinitionBean sed = (StudyEventDefinitionBean) session.getAttribute("definition"); ArrayList eventDefinitionCRFs = new ArrayList(); CRFVersionDAO cvdao = new CRFVersionDAO(sm.getDataSource()); for (int i = 0; i < sed.getCrfs().size(); i++) { EventDefinitionCRFBean edcBean = new EventDefinitionCRFBean(); int crfId = fp.getInt("crfId" + i); int defaultVersionId = fp.getInt("defaultVersionId" + i); edcBean.setCrfId(crfId); edcBean.setDefaultVersionId(defaultVersionId); CRFVersionBean defaultVersion = (CRFVersionBean) cvdao.findByPK(edcBean.getDefaultVersionId()); edcBean.setDefaultVersionName(defaultVersion.getName()); String crfName = fp.getString("crfName" + i); // String crfLabel = fp.getString("crfLabel" + i); edcBean.setCrfName(crfName); // edcBean.setCrfLabel(crfLabel); String requiredCRF = fp.getString("requiredCRF" + i); String doubleEntry = fp.getString("doubleEntry" + i); String decisionCondition = fp.getString("decisionCondition" + i); String electronicSignature = fp.getString("electronicSignature" + i); String participantForm = fp.getString("participantForm" + i); String allowAnonymousSubmission = fp.getString("allowAnonymousSubmission" + i); String submissionUrl = fp.getString("submissionUrl" + i); String offline = fp.getString("offline" + i); // issue 312 BWP<< String hiddenCrf = fp.getString("hiddenCrf" + i); // hideCRF is false by default in the bean if (!StringUtil.isBlank(hiddenCrf) && "yes".equalsIgnoreCase(hiddenCrf.trim())) { edcBean.setHideCrf(true); } else { edcBean.setHideCrf(false); } // >> String sdvOption = fp.getString("sdvOption" + i); if (!StringUtils.isBlank(sdvOption)) { int id = Integer.valueOf(sdvOption); edcBean.setSourceDataVerification(SourceDataVerification.getByCode(id)); } if (!StringUtils.isBlank(requiredCRF) && "yes".equalsIgnoreCase(requiredCRF.trim())) { edcBean.setRequiredCRF(true); } else { edcBean.setRequiredCRF(false); } if (!StringUtils.isBlank(participantForm) && "yes".equalsIgnoreCase(participantForm.trim())) { edcBean.setParticipantForm(true); } else { edcBean.setParticipantForm(false); } // when participant form is not selected, force allow anonymous to be not selected if (edcBean.isParticipantForm() && !StringUtils.isBlank(allowAnonymousSubmission) && "yes".equalsIgnoreCase(allowAnonymousSubmission.trim())) { edcBean.setAllowAnonymousSubmission(true); } else { edcBean.setAllowAnonymousSubmission(false); } if (!StringUtils.isBlank(offline) && "yes".equalsIgnoreCase(offline.trim())) { edcBean.setOffline(true); } else { edcBean.setOffline(false); } if (!StringUtils.isBlank(doubleEntry) && "yes".equalsIgnoreCase(doubleEntry.trim())) { edcBean.setDoubleEntry(true); } else { edcBean.setDoubleEntry(false); } if (!StringUtils.isBlank(decisionCondition) && "yes".equalsIgnoreCase(decisionCondition.trim())) { edcBean.setDecisionCondition(true); } else { edcBean.setDecisionCondition(false); } if (!StringUtils.isBlank(electronicSignature) && "yes".equalsIgnoreCase(electronicSignature.trim())) { edcBean.setElectronicSignature(true); } else { edcBean.setElectronicSignature(false); } // only update submission url when participant form and allow anonymous was selected, // otherwise keep old value for history sake // also useful to protect from naughty submission not coming from our html form if (edcBean.isParticipantForm() && edcBean.isAllowAnonymousSubmission()) { edcBean.setSubmissionUrl(submissionUrl.trim()); } ArrayList <CRFVersionBean> versions = cvdao.findAllByCRFId(crfId); edcBean.setVersions(versions); String nullString = ""; // process null values ArrayList nulls = NullValue.toArrayList(); for (int a = 0; a < nulls.size(); a++) { NullValue n = (NullValue) nulls.get(a); String myNull = fp.getString(n.getName().toLowerCase() + i); if (!StringUtils.isBlank(myNull) && "yes".equalsIgnoreCase(myNull.trim())) { nullString = nullString + n.getName().toUpperCase() + ","; } } edcBean.setNullValues(nullString); edcBean.setStudyId(ub.getActiveStudyId()); eventDefinitionCRFs.add(edcBean); } StudyParameterValueDAO spvdao = new StudyParameterValueDAO(sm.getDataSource()); String participateFormStatus = spvdao.findByHandleAndStudy(sed.getStudyId(), "participantPortal").getValue(); request.setAttribute("participateFormStatus",participateFormStatus ); if (participateFormStatus.equals("enabled")) baseUrl(); request.setAttribute("participateFormStatus",participateFormStatus ); request.setAttribute("eventDefinitionCRFs", eventDefinitionCRFs); session.setAttribute("edCRFs", eventDefinitionCRFs);// not used on page ArrayList <EventDefinitionCRFBean> edcsInSession = (ArrayList<EventDefinitionCRFBean>) session.getAttribute("edCRFs"); int parentStudyId=sed.getStudyId(); EventDefinitionCRFDAO edcdao = new EventDefinitionCRFDAO(sm.getDataSource()); ArrayList <EventDefinitionCRFBean> eventDefCrfList =(ArrayList <EventDefinitionCRFBean>) edcdao.findAllActiveSitesAndStudiesPerParentStudy(parentStudyId); if(eventDefCrfList.size()!=0) validateSubmissionUrl(edcsInSession,eventDefCrfList,v); errors = v.validate(); if (!errors.isEmpty()) { ArrayList<String> sdvOptions = new ArrayList<String>(); sdvOptions.add(SourceDataVerification.AllREQUIRED.toString()); sdvOptions.add(SourceDataVerification.PARTIALREQUIRED.toString()); sdvOptions.add(SourceDataVerification.NOTREQUIRED.toString()); sdvOptions.add(SourceDataVerification.NOTAPPLICABLE.toString()); request.setAttribute("sdvOptions", sdvOptions); logger.info("has errors"); session.setAttribute("eventDefinitionCRFs", eventDefinitionCRFs); request.setAttribute("formMessages", errors); forwardPage(Page.DEFINE_STUDY_EVENT4); } forwardPage(Page.DEFINE_STUDY_EVENT_CONFIRM); } /** * Constructs study bean from request-first section * * @return */ private StudyEventDefinitionBean createStudyEventDefinition() { FormProcessor fp = new FormProcessor(request); StudyEventDefinitionBean sed = (StudyEventDefinitionBean) session.getAttribute("definition"); try{ String name = URLDecoder.decode(request.getParameter("name"), "UTF-8"); String description = URLDecoder.decode(request.getParameter("description"), "UTF-8"); sed.setName(name); sed.setDescription(description); } catch(Exception e){ //leaving old code here sed.setName(fp.getString("name")); sed.setDescription(fp.getString("description")); } // YW << String temp = fp.getString("repeating"); if ("true".equalsIgnoreCase(temp) || "1".equals(temp)) { sed.setRepeating(true); } else if ("false".equalsIgnoreCase(temp) || "0".equals(temp)) { sed.setRepeating(false); } // YW >> sed.setCategory(fp.getString("category")); sed.setType(fp.getString("type")); return sed; } private void confirmDefinition2() throws Exception { FormProcessor fp = new FormProcessor(request); CRFVersionDAO vdao = new CRFVersionDAO(sm.getDataSource()); ArrayList crfArray = new ArrayList(); Map tmpCRFIdMap = (HashMap) session.getAttribute("tmpCRFIdMap"); // trying to avoid NPE not sure why we would get it there ((tmpCRFIdMap.containsKey(id))), tbh if (tmpCRFIdMap == null) { tmpCRFIdMap = new HashMap(); } ArrayList crfsWithVersion = (ArrayList) session.getAttribute("crfsWithVersion"); for (int i = 0; i < crfsWithVersion.size(); i++) { int id = fp.getInt("id" + i); String name = fp.getString("name" + i); // String label = fp.getString("label" + i); String selected = fp.getString("selected" + i); // logger.info("selected:" + selected); if (!StringUtils.isBlank(selected) && "yes".equalsIgnoreCase(selected.trim())) { logger.debug("one crf selected"); CRFBean cb = new CRFBean(); cb.setId(id); cb.setName(name); // only find active verions ArrayList versions = (ArrayList) vdao.findAllActiveByCRF(cb.getId()); cb.setVersions(versions); crfArray.add(cb); } else { if (tmpCRFIdMap.containsKey(id)) { tmpCRFIdMap.remove(id); } } } for (Iterator tmpCRFIterator = tmpCRFIdMap.keySet().iterator(); tmpCRFIterator.hasNext();) { int id = (Integer) tmpCRFIterator.next(); String name = (String) tmpCRFIdMap.get(id); boolean isExists = false; for (Iterator it = crfArray.iterator(); it.hasNext();) { CRFBean cb = (CRFBean) it.next(); if (id == cb.getId()) { isExists = true; } } if (!isExists) { CRFBean cb = new CRFBean(); cb.setId(id); cb.setName(name); // only find active verions ArrayList versions = (ArrayList) vdao.findAllActiveByCRF(cb.getId()); cb.setVersions(versions); crfArray.add(cb); } } session.removeAttribute("tmpCRFIdMap"); StudyParameterValueDAO spvdao = new StudyParameterValueDAO(sm.getDataSource()); if (crfArray.size() == 0) {// no crf seleted // addPageMessage("At least one CRF must be selected."); // request.setAttribute("crfs", crfs); addPageMessage(respage.getString("no_CRF_selected_for_definition_add_later")); StudyEventDefinitionBean sed = (StudyEventDefinitionBean) session.getAttribute("definition"); sed.setCrfs(new ArrayList()); String participateFormStatus = spvdao.findByHandleAndStudy(sed.getStudyId(), "participantPortal").getValue(); request.setAttribute("participateFormStatus",participateFormStatus ); session.setAttribute("definition", sed); request.setAttribute("eventDefinitionCRFs", new ArrayList()); session.setAttribute("edCRFs", new ArrayList());// not used on page forwardPage(Page.DEFINE_STUDY_EVENT_CONFIRM); // forwardPage(Page.DEFINE_STUDY_EVENT2); } else { StudyEventDefinitionBean sed = (StudyEventDefinitionBean) session.getAttribute("definition"); sed.setCrfs(crfArray);// crfs selected by user session.setAttribute("eventDefinitionCRFs", new ArrayList()); session.setAttribute("definition", sed); String participateFormStatus = spvdao.findByHandleAndStudy(sed.getStudyId(), "participantPortal").getValue(); if (participateFormStatus.equals("enabled")) baseUrl(); request.setAttribute("participateFormStatus",participateFormStatus ); ArrayList<String> sdvOptions = new ArrayList<String>(); sdvOptions.add(SourceDataVerification.AllREQUIRED.toString()); sdvOptions.add(SourceDataVerification.PARTIALREQUIRED.toString()); sdvOptions.add(SourceDataVerification.NOTREQUIRED.toString()); sdvOptions.add(SourceDataVerification.NOTAPPLICABLE.toString()); request.setAttribute("sdvOptions", sdvOptions); forwardPage(Page.DEFINE_STUDY_EVENT3); } } /** * Inserts the new study into database NullPointer catch added by tbh * 092007, mean to fix task #1642 in Mantis * */ private void submitDefinition() throws NullPointerException { StudyEventDefinitionDAO edao = new StudyEventDefinitionDAO(sm.getDataSource()); StudyEventDefinitionBean sed = (StudyEventDefinitionBean) session.getAttribute("definition"); // added tbh 092007, to catch bug # 1531 if (sed.getName() == "" || sed.getName() == null) { throw new NullPointerException(); } logger.debug("Definition bean to be created:" + sed.getName() + sed.getStudyId()); // fine the last one's ordinal ArrayList defs = edao.findAllByStudy(currentStudy); if (defs == null || defs.isEmpty()) { sed.setOrdinal(1); } else { int lastCount = defs.size() - 1; StudyEventDefinitionBean last = (StudyEventDefinitionBean) defs.get(lastCount); sed.setOrdinal(last.getOrdinal() + 1); } sed.setOwner(ub); sed.setCreatedDate(new Date()); sed.setStatus(Status.AVAILABLE); StudyEventDefinitionBean sed1 = (StudyEventDefinitionBean) edao.create(sed); EventDefinitionCRFDAO cdao = new EventDefinitionCRFDAO(sm.getDataSource()); CRFDAO crfdao = new CRFDAO(sm.getDataSource()); StudyEventDefinitionDAO seddao = new StudyEventDefinitionDAO(sm.getDataSource()); ArrayList eventDefinitionCRFs = new ArrayList(); if (session.getAttribute("edCRFs") != null) { eventDefinitionCRFs = (ArrayList) session.getAttribute("edCRFs"); } for (int i = 0; i < eventDefinitionCRFs.size(); i++) { EventDefinitionCRFBean edc = (EventDefinitionCRFBean) eventDefinitionCRFs.get(i); edc.setOwner(ub); edc.setCreatedDate(new Date()); edc.setStatus(Status.AVAILABLE); edc.setStudyEventDefinitionId(sed1.getId()); edc.setOrdinal(i + 1); StudyEventDefinitionBean sedBean = (StudyEventDefinitionBean) seddao.findByPK(sed.getId()); CRFBean cBean = (CRFBean) crfdao.findByPK(edc.getCrfId()); String crfPath=sedBean.getOid()+"."+cBean.getOid(); getEventDefinitionCrfTagService().saveEventDefnCrfOfflineTag(2, crfPath, edc ,sedBean); cdao.create(edc); } session.removeAttribute("definition"); session.removeAttribute("edCRFs"); session.removeAttribute("crfsWithVersion"); addPageMessage(respage.getString("the_new_event_definition_created_succesfully")); } public void validateSubmissionUrl(ArrayList <EventDefinitionCRFBean> edcsInSession ,ArrayList <EventDefinitionCRFBean> eventDefCrfList ,Validator v){ for (int i = 0; i < edcsInSession.size(); i++) { v.addValidation("submissionUrl"+ i, Validator.NO_SPACES_ALLOWED); EventDefinitionCRFBean sessionBean=null; boolean isExist = false; for (EventDefinitionCRFBean eventDef : eventDefCrfList){ sessionBean = edcsInSession.get(i); if(!sessionBean.isAllowAnonymousSubmission() || !sessionBean.isParticipantForm()){ isExist = true; break; } System.out.println("iter: "+eventDef.getId()+ "--db: "+eventDef.getSubmissionUrl()); System.out.println("edcsInSession: "+sessionBean.getId() + "--session:"+sessionBean.getSubmissionUrl()); System.out.println(); if(sessionBean.getSubmissionUrl() == null || sessionBean.getSubmissionUrl()==""){ break; }else{ if (eventDef.getSubmissionUrl().trim().equalsIgnoreCase(sessionBean.getSubmissionUrl().trim()) && (eventDef.getId() != sessionBean.getId()) || (eventDef.getSubmissionUrl().trim().equalsIgnoreCase(sessionBean.getSubmissionUrl().trim()) && (eventDef.getId() == sessionBean.getId()) && sessionBean.getId()==0)){ v.addValidation("submissionUrl"+ i, Validator.SUBMISSION_URL_NOT_UNIQUE); System.out.println("Duplicate ****************************"); isExist = true; break; }else if(eventDef.getSubmissionUrl().trim().equalsIgnoreCase(sessionBean.getSubmissionUrl().trim()) && (eventDef.getId() == sessionBean.getId()) && sessionBean.getId()!=0){ System.out.println("Not Duplicate ***********"); isExist = true; break; } } } if(!isExist){ eventDefCrfList.add(sessionBean); } } } public EventDefinitionCrfTagService getEventDefinitionCrfTagService() { eventDefinitionCrfTagService= this.eventDefinitionCrfTagService != null ? eventDefinitionCrfTagService : (EventDefinitionCrfTagService) SpringServletAccess.getApplicationContext(context).getBean("eventDefinitionCrfTagService"); return eventDefinitionCrfTagService; } }