public ModelAndView getFormStepQuestionPage()

in study-builder/fdahpStudyDesigner/src/main/java/com/fdahpstudydesigner/controller/StudyQuestionnaireController.java [683:908]


  public ModelAndView getFormStepQuestionPage(
      HttpServletRequest request, HttpServletResponse response) {
    logger.entry("begin getFormStepQuestionPage");
    ModelAndView mav = new ModelAndView("questionPage");
    String sucMsg = "";
    String errMsg = "";
    ModelMap map = new ModelMap();
    QuestionnaireBo questionnaireBo = null;
    QuestionnairesStepsBo questionnairesStepsBo = null;
    StudyBo studyBo = null;
    QuestionsBo questionsBo = null;
    List<String> timeRangeList = new ArrayList<String>();
    List<StatisticImageListBo> statisticImageList = new ArrayList<>();
    List<ActivetaskFormulaBo> activetaskFormulaList = new ArrayList<>();
    List<QuestionResponseTypeMasterInfoBo> questionResponseTypeMasterInfoList = new ArrayList<>();
    List<HealthKitKeysInfo> healthKitKeysInfo = null;
    try {
      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)) {
        if (null
            != request
                .getSession()
                .getAttribute(sessionStudyCount + FdahpStudyDesignerConstants.SUC_MSG)) {
          sucMsg =
              (String)
                  request
                      .getSession()
                      .getAttribute(sessionStudyCount + FdahpStudyDesignerConstants.SUC_MSG);
          map.addAttribute(FdahpStudyDesignerConstants.SUC_MSG, sucMsg);
          request
              .getSession()
              .removeAttribute(sessionStudyCount + FdahpStudyDesignerConstants.SUC_MSG);
        }
        if (null
            != request
                .getSession()
                .getAttribute(sessionStudyCount + FdahpStudyDesignerConstants.ERR_MSG)) {
          errMsg =
              (String)
                  request
                      .getSession()
                      .getAttribute(sessionStudyCount + FdahpStudyDesignerConstants.ERR_MSG);
          map.addAttribute(FdahpStudyDesignerConstants.ERR_MSG, errMsg);
          request
              .getSession()
              .removeAttribute(sessionStudyCount + FdahpStudyDesignerConstants.ERR_MSG);
        }

        request.getSession().removeAttribute(sessionStudyCount + "actionTypeForFormStep");
        String actionTypeForQuestionPage =
            FdahpStudyDesignerUtil.isEmpty(request.getParameter("actionTypeForQuestionPage"))
                ? ""
                : request.getParameter("actionTypeForQuestionPage");
        if (StringUtils.isEmpty(actionTypeForQuestionPage)) {
          actionTypeForQuestionPage =
              (String)
                  request
                      .getSession()
                      .getAttribute(sessionStudyCount + "actionTypeForQuestionPage");
        }

        String actionTypeForFormStep =
            FdahpStudyDesignerUtil.isEmpty(request.getParameter("actionTypeForFormStep"))
                ? ""
                : request.getParameter("actionTypeForFormStep");
        if (StringUtils.isEmpty(actionTypeForFormStep)) {
          actionTypeForFormStep =
              (String)
                  request.getSession().getAttribute(sessionStudyCount + "actionTypeForFormStep");
          if ("edit".equals(actionTypeForFormStep)) {
            map.addAttribute("actionTypeForFormStep", "edit");
            request.getSession().setAttribute(sessionStudyCount + "actionTypeForFormStep", "edit");
          } else if ("view".equals(actionTypeForFormStep)) {
            map.addAttribute("actionTypeForFormStep", "view");
            request.getSession().setAttribute(sessionStudyCount + "actionTypeForFormStep", "view");
          } else {
            map.addAttribute("actionTypeForFormStep", "add");
            request.getSession().setAttribute(sessionStudyCount + "actionTypeForFormStep", "add");
          }
        } else {
          map.addAttribute("actionTypeForFormStep", actionTypeForFormStep);
        }

        String formId =
            FdahpStudyDesignerUtil.isEmpty(request.getParameter("formId"))
                ? ""
                : request.getParameter("formId");
        String questionId =
            FdahpStudyDesignerUtil.isEmpty(request.getParameter("questionId"))
                ? ""
                : request.getParameter("questionId");
        String questionnaireId =
            FdahpStudyDesignerUtil.isEmpty(request.getParameter("questionnaireId"))
                ? ""
                : request.getParameter("questionnaireId");
        String studyId =
            (String)
                request
                    .getSession()
                    .getAttribute(sessionStudyCount + FdahpStudyDesignerConstants.STUDY_ID);
        if (StringUtils.isEmpty(studyId)) {
          studyId =
              FdahpStudyDesignerUtil.isEmpty(
                      request.getParameter(FdahpStudyDesignerConstants.STUDY_ID))
                  ? ""
                  : request.getParameter(FdahpStudyDesignerConstants.STUDY_ID);
          request.getSession().setAttribute(FdahpStudyDesignerConstants.STUDY_ID, studyId);
        }
        if (StringUtils.isNotEmpty(studyId)) {
          studyBo = studyService.getStudyById(studyId, sesObj.getUserId());
          boolean isExists =
              studyQuestionnaireService.isAnchorDateExistsForStudy(
                  studyId, studyBo.getCustomStudyId());
          map.addAttribute("isAnchorDate", isExists);
          map.addAttribute(FdahpStudyDesignerConstants.STUDY_BO, studyBo);
        }
        if (StringUtils.isEmpty(formId)) {
          formId = (String) request.getSession().getAttribute(sessionStudyCount + "formId");
          request.getSession().setAttribute(sessionStudyCount + "formId", formId);
        }
        if (StringUtils.isEmpty(questionId)) {
          questionId = (String) request.getSession().getAttribute(sessionStudyCount + "questionId");
          request.getSession().setAttribute(sessionStudyCount + "questionId", questionId);
        }
        if (StringUtils.isEmpty(questionnaireId)) {
          questionnaireId =
              (String) request.getSession().getAttribute(sessionStudyCount + "questionnaireId");
          request.getSession().setAttribute(sessionStudyCount + "questionnaireId", questionnaireId);
        }
        if (StringUtils.isNotEmpty(questionnaireId)) {
          request.getSession().removeAttribute(sessionStudyCount + "actionTypeForQuestionPage");
          questionnaireBo =
              studyQuestionnaireService.getQuestionnaireById(
                  questionnaireId, studyBo.getCustomStudyId());
          map.addAttribute("questionnaireBo", questionnaireBo);
          if ("edit".equals(actionTypeForQuestionPage)) {
            map.addAttribute("actionTypeForQuestionPage", "edit");
            request
                .getSession()
                .setAttribute(sessionStudyCount + "actionTypeForQuestionPage", "edit");
          } else if ("view".equals(actionTypeForQuestionPage)) {
            map.addAttribute("actionTypeForQuestionPage", "view");
            request
                .getSession()
                .setAttribute(sessionStudyCount + "actionTypeForQuestionPage", "view");
          } else {
            map.addAttribute("actionTypeForQuestionPage", "add");
            request
                .getSession()
                .setAttribute(sessionStudyCount + "actionTypeForQuestionPage", "add");
          }
          request.getSession().setAttribute(sessionStudyCount + "questionnaireId", questionnaireId);
          if ((questionnaireBo != null) && StringUtils.isNotEmpty(questionnaireBo.getFrequency())) {
            String frequency = questionnaireBo.getFrequency();
            if (questionnaireBo
                .getFrequency()
                .equalsIgnoreCase(FdahpStudyDesignerConstants.FREQUENCY_TYPE_DAILY)) {
              if ((questionnaireBo.getQuestionnairesFrequenciesList() != null)
                  && (questionnaireBo.getQuestionnairesFrequenciesList().size() > 1)) {
                frequency = questionnaireBo.getFrequency();
              } else {
                frequency = FdahpStudyDesignerConstants.FREQUENCY_TYPE_ONE_TIME;
              }
            }
            timeRangeList = FdahpStudyDesignerUtil.getTimeRangeList(frequency);
          }
        }
        if ((formId != null) && !formId.isEmpty()) {
          questionnairesStepsBo =
              studyQuestionnaireService.getQuestionnaireStep(
                  formId,
                  FdahpStudyDesignerConstants.FORM_STEP,
                  questionnaireBo.getShortTitle(),
                  studyBo.getCustomStudyId(),
                  questionnaireBo.getId());
          if ((questionId != null) && !questionId.isEmpty()) {
            questionsBo =
                studyQuestionnaireService.getQuestionsById(
                    questionId, questionnaireBo.getShortTitle(), studyBo.getCustomStudyId());
            map.addAttribute("questionsBo", questionsBo);
            request.getSession().setAttribute(sessionStudyCount + "questionId", questionId);
            if (questionnairesStepsBo != null) {
              List<QuestionnairesStepsBo> destionationStepList =
                  studyQuestionnaireService.getQuestionnairesStepsList(
                      questionnairesStepsBo.getQuestionnairesId(),
                      questionnairesStepsBo.getSequenceNo());
              map.addAttribute("destinationStepList", destionationStepList);
            }
          }
          map.addAttribute("formId", formId);
          map.addAttribute("questionnairesStepsBo", questionnairesStepsBo);
          request.getSession().setAttribute(sessionStudyCount + "formId", formId);
        }
        statisticImageList = studyActiveTasksService.getStatisticImages();
        activetaskFormulaList = studyActiveTasksService.getActivetaskFormulas();
        questionResponseTypeMasterInfoList = studyQuestionnaireService.getQuestionReponseTypeList();
        if (studyBo != null) {
          if (studyBo.getPlatform().contains(FdahpStudyDesignerConstants.IOS)) {
            healthKitKeysInfo = studyQuestionnaireService.getHeanlthKitKeyInfoList();
            map.addAttribute("healthKitKeysInfo", healthKitKeysInfo);
          }
        }
        map.addAttribute("timeRangeList", timeRangeList);
        map.addAttribute("statisticImageList", statisticImageList);
        map.addAttribute("activetaskFormulaList", activetaskFormulaList);
        map.addAttribute("questionResponseTypeMasterInfoList", questionResponseTypeMasterInfoList);
        request
            .getSession()
            .setAttribute(sessionStudyCount + FdahpStudyDesignerConstants.QUESTION_STEP, "Yes");
        map.addAttribute("_S", sessionStudyCount);
        mav = new ModelAndView("questionPage", map);
      }
    } catch (Exception e) {
      logger.error("StudyQuestionnaireController - getFormStepQuestionPage - Error", e);
    }
    logger.exit("getFormStepQuestionPage - Ends");
    return mav;
  }