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;
}