public QuestionnairesStepsBo getQuestionnaireStep()

in study-builder/fdahpStudyDesigner/src/main/java/com/fdahpstudydesigner/dao/StudyQuestionnaireDAOImpl.java [1974:2275]


  public QuestionnairesStepsBo getQuestionnaireStep(
      String stepId,
      String stepType,
      String questionnaireShortTitle,
      String customStudyId,
      String questionnaireId) {
    logger.entry("begin getQuestionnaireStep()");
    Session session = null;
    QuestionnairesStepsBo questionnairesStepsBo = null;
    try {
      session = hibernateTemplate.getSessionFactory().openSession();
      if (questionnaireId != null) {
        query =
            session
                .createQuery(
                    "From QuestionnairesStepsBo QSBO where QSBO.instructionFormId=:instructionFormId "
                        + " and QSBO.stepType=:stepType "
                        + " and QSBO.active=1 and QSBO.questionnairesId=:questionnaireId ")
                .setString("instructionFormId", stepId)
                .setString("stepType", stepType)
                .setString("questionnaireId", questionnaireId);
      } else {
        query =
            session
                .getNamedQuery("getQuestionnaireStep")
                .setString("instructionFormId", stepId)
                .setString("stepType", stepType);
      }

      questionnairesStepsBo = (QuestionnairesStepsBo) query.uniqueResult();
      if ((null != questionnairesStepsBo) && (questionnairesStepsBo.getStepType() != null)) {
        if (StringUtils.isNotEmpty(questionnaireShortTitle)) {
          // Duplicate ShortTitle per QuestionnaireStepBo Start
          BigInteger shortTitleCount =
              (BigInteger)
                  session
                      .createSQLQuery(
                          "select count(*) from questionnaires_steps qs where qs.questionnaires_id  "
                              + " in(select q.id from questionnaires q where q.short_title=:questionnaireShortTitle "
                              + " and q.active=1 and q.is_live=1 and q.custom_study_id=:customStudyId )"
                              + " and qs.step_short_title=:shortTitle ")
                      .setString("questionnaireShortTitle", questionnaireShortTitle)
                      .setString("customStudyId", customStudyId)
                      .setString("shortTitle", questionnairesStepsBo.getStepShortTitle())
                      .uniqueResult();
          if ((shortTitleCount != null) && (shortTitleCount.intValue() > 0)) {
            questionnairesStepsBo.setIsShorTitleDuplicate(shortTitleCount.intValue());
          } else {
            questionnairesStepsBo.setIsShorTitleDuplicate(0);
          }
        } else {
          questionnairesStepsBo.setIsShorTitleDuplicate(0);
        }
        // Duplicate ShortTitle per QuestionnaireStepBo End

        if (questionnairesStepsBo
            .getStepType()
            .equalsIgnoreCase(FdahpStudyDesignerConstants.QUESTION_STEP)) {
          // get the one question step of questionnaire
          QuestionsBo questionsBo = null;
          query = session.getNamedQuery("getQuestionStep").setString("stepId", stepId);
          questionsBo = (QuestionsBo) query.uniqueResult();
          if ((questionsBo != null) && (questionsBo.getId() != null)) {
            if (StringUtils.isNotEmpty(questionnaireShortTitle)) {
              // Duplicate statShortTitle per questionsBo Start
              if (StringUtils.isNotEmpty(questionsBo.getStatShortName())) {
                BigInteger quesionStatshortTitleCount =
                    (BigInteger)
                        session
                            .createSQLQuery(
                                "select count(*) From questions QBO,questionnaires_steps QSBO,questionnaires Q where QBO.id=QSBO.instruction_form_id and QSBO.questionnaires_id=Q.id and Q.short_title=:questionnaireShortTitle "
                                    + " and Q.active=1 and Q.is_live=1 and Q.custom_study_id=:customStudyId "
                                    + " and QSBO.step_type='Question' and QBO.stat_short_name=:shortName "
                                    + " and QBO.active=1")
                            .setString("questionnaireShortTitle", questionnaireShortTitle)
                            .setString("customStudyId", customStudyId)
                            .setString("shortName", questionsBo.getStatShortName())
                            .uniqueResult();
                if ((quesionStatshortTitleCount != null)
                    && (quesionStatshortTitleCount.intValue() > 0)) {
                  questionsBo.setIsStatShortNameDuplicate(quesionStatshortTitleCount.intValue());
                } else {
                  questionsBo.setIsStatShortNameDuplicate(0);
                }
              }
            } else {
              questionsBo.setIsStatShortNameDuplicate(0);
            }
            // Duplicate statShortTitle per questionsBo End

            // get the response level attributes values of an
            // questions
            QuestionReponseTypeBo questionReponseTypeBo = null;
            logger.info(
                "StudyQuestionnaireDAOImpl - getQuestionnaireStep() - questionsResponseTypeId:"
                    + questionsBo.getId());
            query =
                session
                    .getNamedQuery("getQuestionResponse")
                    .setString("questionsResponseTypeId", questionsBo.getId());
            query.setMaxResults(1);
            questionReponseTypeBo = (QuestionReponseTypeBo) query.uniqueResult();
            if ((questionReponseTypeBo != null)
                && (questionReponseTypeBo.getStyle() != null)
                && StringUtils.isNotEmpty(questionReponseTypeBo.getStyle())) {
              questionReponseTypeBo.setStyle(questionReponseTypeBo.getStyle());
              if ((FdahpStudyDesignerConstants.DATE)
                  .equalsIgnoreCase(questionReponseTypeBo.getStyle())) {
                if ((questionReponseTypeBo.getMinDate() != null)
                    && StringUtils.isNotEmpty(questionReponseTypeBo.getMinDate())) {
                  questionReponseTypeBo.setMinDate(
                      FdahpStudyDesignerUtil.getFormattedDate(
                          questionReponseTypeBo.getMinDate(),
                          FdahpStudyDesignerConstants.DB_SDF_DATE,
                          FdahpStudyDesignerConstants.UI_SDF_DATE));
                }
                if ((questionReponseTypeBo.getMaxDate() != null)
                    && StringUtils.isNotEmpty(questionReponseTypeBo.getMaxDate())) {
                  questionReponseTypeBo.setMaxDate(
                      FdahpStudyDesignerUtil.getFormattedDate(
                          questionReponseTypeBo.getMaxDate(),
                          FdahpStudyDesignerConstants.DB_SDF_DATE,
                          FdahpStudyDesignerConstants.UI_SDF_DATE));
                }
                if ((questionReponseTypeBo.getDefaultDate() != null)
                    && StringUtils.isNotEmpty(questionReponseTypeBo.getDefaultDate())) {
                  questionReponseTypeBo.setDefaultDate(
                      FdahpStudyDesignerUtil.getFormattedDate(
                          questionReponseTypeBo.getDefaultDate(),
                          FdahpStudyDesignerConstants.DB_SDF_DATE,
                          FdahpStudyDesignerConstants.UI_SDF_DATE));
                }
              } else if ((FdahpStudyDesignerConstants.DATE_TIME)
                  .equalsIgnoreCase(questionReponseTypeBo.getStyle())) {
                if ((questionReponseTypeBo.getMinDate() != null)
                    && StringUtils.isNotEmpty(questionReponseTypeBo.getMinDate())) {
                  questionReponseTypeBo.setMinDate(
                      FdahpStudyDesignerUtil.getFormattedDate(
                          questionReponseTypeBo.getMinDate(),
                          FdahpStudyDesignerConstants.DB_SDF_DATE_TIME,
                          FdahpStudyDesignerConstants.REQUIRED_DATE_TIME));
                }
                if ((questionReponseTypeBo.getMaxDate() != null)
                    && StringUtils.isNotEmpty(questionReponseTypeBo.getMaxDate())) {
                  questionReponseTypeBo.setMaxDate(
                      FdahpStudyDesignerUtil.getFormattedDate(
                          questionReponseTypeBo.getMaxDate(),
                          FdahpStudyDesignerConstants.DB_SDF_DATE_TIME,
                          FdahpStudyDesignerConstants.REQUIRED_DATE_TIME));
                }
                if ((questionReponseTypeBo.getDefaultDate() != null)
                    && StringUtils.isNotEmpty(questionReponseTypeBo.getDefaultDate())) {
                  questionReponseTypeBo.setDefaultDate(
                      FdahpStudyDesignerUtil.getFormattedDate(
                          questionReponseTypeBo.getDefaultDate(),
                          FdahpStudyDesignerConstants.DB_SDF_DATE_TIME,
                          FdahpStudyDesignerConstants.REQUIRED_DATE_TIME));
                }
              }
            }
            if ((questionReponseTypeBo != null)
                && (questionReponseTypeBo.getFormulaBasedLogic() != null)
                && questionReponseTypeBo
                    .getFormulaBasedLogic()
                    .equalsIgnoreCase(FdahpStudyDesignerConstants.YES)) {
              List<QuestionConditionBranchBo> questionConditionBranchList =
                  getQuestionConditionalBranchingLogic(session, questionsBo.getId());
              questionnairesStepsBo.setQuestionConditionBranchBoList(questionConditionBranchList);
            }

            if ((questionReponseTypeBo != null)
                && StringUtils.isNotEmpty(questionReponseTypeBo.getMaxImage())) {
              questionReponseTypeBo.setSignedMaxImage(
                  FdahpStudyDesignerUtil.getImageResources(
                      FdahpStudyDesignerConstants.STUDIES
                          + FdahpStudyDesignerConstants.PATH_SEPARATOR
                          + customStudyId
                          + FdahpStudyDesignerConstants.PATH_SEPARATOR
                          + FdahpStudyDesignerConstants.QUESTIONNAIRE
                          + FdahpStudyDesignerConstants.PATH_SEPARATOR
                          + questionReponseTypeBo.getMaxImage()));
            }

            if ((questionReponseTypeBo != null)
                && StringUtils.isNotEmpty(questionReponseTypeBo.getMinImage())) {
              questionReponseTypeBo.setSignedMinImage(
                  FdahpStudyDesignerUtil.getImageResources(
                      FdahpStudyDesignerConstants.STUDIES
                          + FdahpStudyDesignerConstants.PATH_SEPARATOR
                          + customStudyId
                          + FdahpStudyDesignerConstants.PATH_SEPARATOR
                          + FdahpStudyDesignerConstants.QUESTIONNAIRE
                          + "/"
                          + questionReponseTypeBo.getMinImage()));
            }

            questionnairesStepsBo.setQuestionReponseTypeBo(questionReponseTypeBo);

            List<QuestionResponseSubTypeBo> questionResponseSubTypeList = null;
            query =
                session
                    .getNamedQuery("getQuestionSubResponse")
                    .setString("responseTypeId", questionsBo.getId());
            questionResponseSubTypeList = query.list();
            // appending the current date time to the image url
            if ((null != questionResponseSubTypeList) && !questionResponseSubTypeList.isEmpty()) {
              for (QuestionResponseSubTypeBo s : questionResponseSubTypeList) {
                if (FdahpStudyDesignerUtil.isNotEmpty(s.getImage())) {

                  s.setSignedImage(
                      FdahpStudyDesignerUtil.getImageResources(
                          FdahpStudyDesignerConstants.STUDIES
                              + FdahpStudyDesignerConstants.PATH_SEPARATOR
                              + customStudyId
                              + FdahpStudyDesignerConstants.PATH_SEPARATOR
                              + FdahpStudyDesignerConstants.QUESTIONNAIRE
                              + FdahpStudyDesignerConstants.PATH_SEPARATOR
                              + s.getImage()));
                }
                if (FdahpStudyDesignerUtil.isNotEmpty(s.getSelectedImage())) {
                  s.setSignedSelectedImage(
                      FdahpStudyDesignerUtil.getImageResources(
                          FdahpStudyDesignerConstants.STUDIES
                              + FdahpStudyDesignerConstants.PATH_SEPARATOR
                              + customStudyId
                              + FdahpStudyDesignerConstants.PATH_SEPARATOR
                              + FdahpStudyDesignerConstants.QUESTIONNAIRE
                              + FdahpStudyDesignerConstants.PATH_SEPARATOR
                              + s.getSelectedImage()));
                }
              }
            }
            questionnairesStepsBo.setQuestionResponseSubTypeList(questionResponseSubTypeList);

            // Phase 2a ancordate start
            if (questionsBo.getAnchorDateId() != null) {
              String name =
                  (String)
                      session
                          .createSQLQuery(
                              "select name from anchordate_type where id=:anchorDateId ")
                          .setString("anchorDateId", questionsBo.getAnchorDateId())
                          .uniqueResult();
              questionsBo.setAnchorDateName(name);
            }
            // phase 2a anchordate end

          }
          questionnairesStepsBo.setQuestionsBo(questionsBo);

        } else if (questionnairesStepsBo
            .getStepType()
            .equalsIgnoreCase(FdahpStudyDesignerConstants.FORM_STEP)) {
          // get the one from step of an questionnaire
          String fromQuery =
              "select f.form_id,f.question_id,f.sequence_no, q.id, q.question,q.response_type,q.add_line_chart,q.use_stastic_data,q.status,q.use_anchor_date from questions q, form_mapping f where q.id=f.question_id and f.form_id=:stepId "
                  + " and f.active=1 order by f.form_id";
          Iterator iterator =
              session.createSQLQuery(fromQuery).setString("stepId", stepId).list().iterator();
          TreeMap<Integer, QuestionnaireStepBean> formQuestionMap = new TreeMap<>();
          boolean isDone = true;
          while (iterator.hasNext()) {
            Object[] objects = (Object[]) iterator.next();
            String formId = (String) objects[0];
            Integer sequenceNo = (Integer) objects[2];
            String questionId = (String) objects[3];
            String questionText = (String) objects[4];
            Integer responseType = (Integer) objects[5];
            String lineChart = (String) objects[6];
            String statData = (String) objects[7];
            Boolean status = (Boolean) objects[8];
            Boolean useAnchorDate = (Boolean) objects[9];
            QuestionnaireStepBean questionnaireStepBean = new QuestionnaireStepBean();
            questionnaireStepBean.setStepId(formId);
            questionnaireStepBean.setQuestionInstructionId(questionId);
            questionnaireStepBean.setTitle(questionText);
            questionnaireStepBean.setSequenceNo(sequenceNo);
            questionnaireStepBean.setStepType(FdahpStudyDesignerConstants.FORM_STEP);
            questionnaireStepBean.setResponseType(responseType);
            questionnaireStepBean.setLineChart(lineChart);
            questionnaireStepBean.setStatData(statData);
            questionnaireStepBean.setStatus(status);
            questionnaireStepBean.setUseAnchorDate(useAnchorDate);
            formQuestionMap.put(sequenceNo, questionnaireStepBean);
            if (!status) {
              isDone = false;
            }
          }
          questionnairesStepsBo.setStatus(isDone);
          questionnairesStepsBo.setFormQuestionMap(formQuestionMap);
        }
      }
    } catch (Exception e) {
      logger.error("StudyQuestionnaireDAOImpl - getQuestionnaireStep() - ERROR ", e);
    } finally {
      if (session != null) {
        session.close();
      }
    }
    logger.exit("getQuestionnaireStep() - Ends");
    return questionnairesStepsBo;
  }