public ModelAndView saveOrUpdateResource()

in study-builder/fdahpStudyDesigner/src/main/java/com/fdahpstudydesigner/controller/StudyController.java [3444:3605]


  public ModelAndView saveOrUpdateResource(HttpServletRequest request, ResourceBO resourceBO) {
    logger.entry("begin saveOrUpdateResource()");
    ModelAndView mav = new ModelAndView("redirect:/adminStudies/studyList.do");
    String resourseId = null;
    Map<String, String> propMap = FdahpStudyDesignerUtil.getAppProperties();
    ModelMap map = new ModelMap();
    Map<String, String> values = new HashMap<>();
    try {
      AuditLogEventRequest auditRequest = AuditEventMapper.fromHttpServletRequest(request);
      SessionObject sesObj =
          (SessionObject)
              request.getSession().getAttribute(FdahpStudyDesignerConstants.SESSION_OBJECT);
      Integer sessionStudyCount =
          StringUtils.isNumeric(request.getParameter("_S"))
              ? Integer.parseInt(request.getParameter("_S"))
              : 0;
      if ((sesObj != null)
          && (sesObj.getStudySession() != null)
          && sesObj.getStudySession().contains(sessionStudyCount)) {
        String textOrPdfParam =
            FdahpStudyDesignerUtil.isEmpty(request.getParameter("textOrPdfParam"))
                ? ""
                : request.getParameter("textOrPdfParam");
        String resourceVisibilityParam =
            FdahpStudyDesignerUtil.isEmpty(request.getParameter("resourceVisibilityParam"))
                ? ""
                : request.getParameter("resourceVisibilityParam");
        String buttonText =
            FdahpStudyDesignerUtil.isEmpty(
                    request.getParameter(FdahpStudyDesignerConstants.BUTTON_TEXT))
                ? ""
                : request.getParameter(FdahpStudyDesignerConstants.BUTTON_TEXT);
        String studyId =
            (String)
                request
                    .getSession()
                    .getAttribute(sessionStudyCount + FdahpStudyDesignerConstants.STUDY_ID);
        String studyProtocol =
            FdahpStudyDesignerUtil.isEmpty(
                    request.getParameter(FdahpStudyDesignerConstants.IS_STUDY_PROTOCOL))
                ? ""
                : request.getParameter(FdahpStudyDesignerConstants.IS_STUDY_PROTOCOL);
        String action =
            FdahpStudyDesignerUtil.isEmpty(
                    request.getParameter(FdahpStudyDesignerConstants.ACTION_ON))
                ? ""
                : request.getParameter(FdahpStudyDesignerConstants.ACTION_ON);
        String resourceTypeParm =
            FdahpStudyDesignerUtil.isEmpty(request.getParameter("resourceTypeParm"))
                ? ""
                : request.getParameter("resourceTypeParm");
        if (resourceBO != null) {
          StudyBo studyBo = studyService.getStudyInfo(studyId);
          auditRequest.setStudyId(studyBo.getCustomStudyId());
          auditRequest.setStudyVersion(studyBo.getVersion().toString());
          auditRequest.setAppId(studyBo.getAppId());
          if (!("").equals(buttonText)) {
            if (("save").equalsIgnoreCase(buttonText)) {
              resourceBO.setAction(false);
            } else if (("done").equalsIgnoreCase(buttonText)) {
              resourceBO.setAction(true);
            }
          }
          if (!("").equals(studyProtocol)
              && (FdahpStudyDesignerConstants.IS_STUDY_PROTOCOL).equalsIgnoreCase(studyProtocol)) {
            resourceBO.setStudyProtocol(true);
          } else {
            resourceBO.setStudyProtocol(false);
          }
          resourceBO.setStudyId(studyId);
          resourceBO.setTextOrPdf(("0").equals(textOrPdfParam) ? false : true);
          resourceBO.setResourceVisibility(("0").equals(resourceVisibilityParam) ? false : true);
          if (!resourceBO.isResourceVisibility()) {
            resourceBO.setResourceType("0".equals(resourceTypeParm) ? false : true);
          } else {
            resourceBO.setResourceType(false);
          }
          if ((resourceBO.getStudyId() != null)
              && (StringUtils.isEmpty(resourceBO.getId()))
              && !resourceBO.isStudyProtocol()) {
            int order = studyService.resourceOrder(resourceBO.getStudyId());
            resourceBO.setSequenceNo(order);
          }
          resourseId = studyService.saveOrUpdateResource(resourceBO, sesObj);
        }
        if (StringUtils.isNotEmpty(resourseId)) {
          values.put("resource_id", resourseId.toString());
          auditLogEventHelper.logEvent(STUDY_NEW_RESOURCE_CREATED, auditRequest, values);
          if ((resourceBO != null) && (StringUtils.isEmpty(resourceBO.getId()))) {
            if (("save").equalsIgnoreCase(buttonText)) {
              auditLogEventHelper.logEvent(STUDY_RESOURCE_SAVED_OR_UPDATED, auditRequest, values);
              request
                  .getSession()
                  .setAttribute(
                      sessionStudyCount + FdahpStudyDesignerConstants.SUC_MSG,
                      propMap.get(FdahpStudyDesignerConstants.SAVE_STUDY_SUCCESS_MESSAGE));
            } else {
              auditLogEventHelper.logEvent(STUDY_RESOURCE_MARKED_COMPLETED, auditRequest, values);
              request
                  .getSession()
                  .setAttribute(
                      sessionStudyCount + FdahpStudyDesignerConstants.SUC_MSG,
                      "Resource successfully added");
            }
          } else {
            if (("save").equalsIgnoreCase(buttonText)) {
              auditLogEventHelper.logEvent(STUDY_RESOURCE_SAVED_OR_UPDATED, auditRequest, values);
              request
                  .getSession()
                  .setAttribute(
                      sessionStudyCount + FdahpStudyDesignerConstants.SUC_MSG,
                      propMap.get(FdahpStudyDesignerConstants.SAVE_STUDY_SUCCESS_MESSAGE));
            } else {
              auditLogEventHelper.logEvent(STUDY_RESOURCE_MARKED_COMPLETED, auditRequest, values);
              request
                  .getSession()
                  .setAttribute(
                      sessionStudyCount + FdahpStudyDesignerConstants.SUC_MSG,
                      "Resource successfully updated");
            }
          }
        } else {
          if ((resourceBO != null) && (resourceBO.getId() == null)) {
            request
                .getSession()
                .setAttribute(
                    sessionStudyCount + FdahpStudyDesignerConstants.ERR_MSG,
                    "Failed to add resource");
          } else {
            request
                .getSession()
                .setAttribute(
                    sessionStudyCount + FdahpStudyDesignerConstants.ERR_MSG,
                    "Failed to update resource");
          }
        }
        map.addAttribute("_S", sessionStudyCount);
        if (("save").equalsIgnoreCase(buttonText)) {
          request
              .getSession()
              .setAttribute(sessionStudyCount + FdahpStudyDesignerConstants.ACTION_ON, action);
          request
              .getSession()
              .setAttribute(
                  sessionStudyCount + FdahpStudyDesignerConstants.RESOURCE_INFO_ID,
                  resourseId + "");
          request
              .getSession()
              .setAttribute(
                  sessionStudyCount + FdahpStudyDesignerConstants.IS_STUDY_PROTOCOL,
                  studyProtocol + "");
          mav = new ModelAndView("redirect:addOrEditResource.do", map);
        } else {
          mav = new ModelAndView("redirect:getResourceList.do", map);
        }
      }
    } catch (Exception e) {
      logger.error("StudyController - saveOrUpdateResource() - ERROR", e);
    }
    logger.exit("saveOrUpdateResource() - Ends");
    return mav;
  }