in study-datastore/src/main/java/com/hphc/mystudies/dao/ActivityMetaDataDao.java [615:861]
public QuestionnaireActivityStructureBean questionnaireMetadata(
String studyId, String activityId, Session session, String activityVersion)
throws DAOException {
LOGGER.entry("begin questionnaireMetadata()");
QuestionnaireActivityStructureBean activityStructureBean =
new QuestionnaireActivityStructureBean();
Map<String, Integer> sequenceNoMap = new HashMap<>();
Map<String, QuestionnairesStepsDto> questionnaireStepDetailsMap = new HashMap<>();
TreeMap<Integer, QuestionnaireActivityStepsBean> stepsSequenceTreeMap = new TreeMap<>();
QuestionnairesDto questionnaireDto = null;
List<QuestionnairesStepsDto> questionaireStepsList = null;
List<QuestionnaireActivityStepsBean> steps = new ArrayList<>();
List<QuestionResponsetypeMasterInfoDto> questionResponseTypeMasterInfoList = null;
try {
questionnaireDto =
(QuestionnairesDto)
session
.createQuery(
"from QuestionnairesDto QDTO"
+ " where QDTO.customStudyId= :customStudyId and QDTO.shortTitle= :shortTitle"
+ " and QDTO.status=true and ROUND(QDTO.version, 1)= :version"
+ " ORDER BY QDTO.modifiedDate DESC")
.setString(StudyMetaDataEnum.QF_CUSTOM_STUDY_ID.value(), studyId)
.setString(
StudyMetaDataEnum.QF_SHORT_TITLE.value(),
StudyMetaDataUtil.replaceSingleQuotes(activityId))
.setFloat(StudyMetaDataEnum.QF_VERSION.value(), Float.parseFloat(activityVersion))
.setMaxResults(1)
.uniqueResult();
if (questionnaireDto != null) {
activityStructureBean.setType(StudyMetaDataConstants.ACTIVITY_QUESTIONNAIRE);
ActivityMetadataBean metadata = new ActivityMetadataBean();
metadata.setActivityId(questionnaireDto.getShortTitle());
ActivitiesBean activityBean = new ActivitiesBean();
activityBean =
this.getTimeDetailsByActivityIdForQuestionnaire(
questionnaireDto, activityBean, session);
metadata.setStartDate(activityBean.getStartTime());
metadata.setEndDate(activityBean.getEndTime());
metadata.setLastModified(
StringUtils.isEmpty(questionnaireDto.getModifiedDate())
? ""
: StudyMetaDataUtil.getFormattedDateTimeZone(
questionnaireDto.getModifiedDate(),
StudyMetaDataConstants.SDF_DATE_TIME_PATTERN,
StudyMetaDataConstants.SDF_DATE_TIME_TIMEZONE_MILLISECONDS_PATTERN));
metadata.setName(
StringUtils.isEmpty(questionnaireDto.getTitle()) ? "" : questionnaireDto.getTitle());
metadata.setStudyId(studyId);
metadata.setVersion(
questionnaireDto.getVersion() == null
? StudyMetaDataConstants.STUDY_DEFAULT_VERSION
: questionnaireDto.getVersion().toString());
if (!questionnaireDto.getActive()) {
metadata.setEndDate(
StudyMetaDataUtil.getFormattedDateTimeZone(
questionnaireDto.getModifiedDate(),
StudyMetaDataConstants.SDF_DATE_TIME_PATTERN,
StudyMetaDataConstants.SDF_DATE_TIME_TIMEZONE_MILLISECONDS_PATTERN));
}
activityStructureBean.setMetadata(metadata);
questionaireStepsList =
session
.createQuery(
"from QuestionnairesStepsDto QSDTO"
+ " where QSDTO.questionnairesId=:questRespId"
+ " and QSDTO.status=true"
+ " ORDER BY QSDTO.sequenceNo")
.setString("questRespId", questionnaireDto.getId())
.list();
if ((questionaireStepsList != null) && !questionaireStepsList.isEmpty()) {
List<String> instructionIdList = new ArrayList<>();
List<String> questionIdList = new ArrayList<>();
List<String> formIdList = new ArrayList<>();
for (int i = 0; i < questionaireStepsList.size(); i++) {
if (!questionnaireDto.getBranching()) {
if ((questionaireStepsList.size() - 1) == i) {
questionaireStepsList.get(i).setDestinationStep(String.valueOf(0));
} else {
questionaireStepsList
.get(i)
.setDestinationStep(questionaireStepsList.get(i + 1).getStepId());
}
}
}
questionaireStepsList = this.getDestinationStepType(questionaireStepsList);
for (QuestionnairesStepsDto questionnairesStep : questionaireStepsList) {
switch (questionnairesStep.getStepType()) {
case StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_INSTRUCTION:
instructionIdList.add(questionnairesStep.getInstructionFormId());
sequenceNoMap.put(
String.valueOf(questionnairesStep.getInstructionFormId())
+ StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_INSTRUCTION,
questionnairesStep.getSequenceNo());
questionnaireStepDetailsMap.put(
String.valueOf(questionnairesStep.getInstructionFormId())
+ StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_INSTRUCTION,
questionnairesStep);
break;
case StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_QUESTION:
questionIdList.add(questionnairesStep.getInstructionFormId());
sequenceNoMap.put(
String.valueOf(questionnairesStep.getInstructionFormId())
+ StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_QUESTION,
questionnairesStep.getSequenceNo());
questionnaireStepDetailsMap.put(
String.valueOf(questionnairesStep.getInstructionFormId())
+ StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_QUESTION,
questionnairesStep);
break;
case StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_FORM:
formIdList.add(questionnairesStep.getInstructionFormId());
sequenceNoMap.put(
String.valueOf(questionnairesStep.getInstructionFormId())
+ StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_FORM,
questionnairesStep.getSequenceNo());
questionnaireStepDetailsMap.put(
String.valueOf(questionnairesStep.getInstructionFormId())
+ StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_FORM,
questionnairesStep);
break;
default:
break;
}
}
questionResponseTypeMasterInfoList =
session.createQuery("from QuestionResponsetypeMasterInfoDto").list();
StudyDto studyDto =
(StudyDto)
session
.getNamedQuery("getLiveStudyIdByCustomStudyId")
.setString(StudyMetaDataEnum.QF_CUSTOM_STUDY_ID.value(), studyId)
.uniqueResult();
if (!instructionIdList.isEmpty()) {
List<InstructionsDto> instructionsDtoList =
session
.createQuery(
"from InstructionsDto IDTO"
+ " where IDTO.id in (:instructionIdList) and IDTO.status=true")
.setParameterList("instructionIdList", instructionIdList)
.list();
if ((instructionsDtoList != null) && !instructionsDtoList.isEmpty()) {
stepsSequenceTreeMap =
(TreeMap<Integer, QuestionnaireActivityStepsBean>)
this.getStepsInfoForQuestionnaires(
StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_INSTRUCTION,
instructionsDtoList,
null,
null,
sequenceNoMap,
stepsSequenceTreeMap,
session,
questionnaireStepDetailsMap,
null,
questionaireStepsList,
questionnaireDto,
studyDto);
}
}
if (!questionIdList.isEmpty()) {
List<QuestionsDto> questionsList =
session
.createQuery(
" from QuestionsDto QDTO"
+ " where QDTO.id in (:questionIdList"
+ ") and QDTO.status=true")
.setParameterList("questionIdList", questionIdList)
.list();
if ((questionsList != null) && !questionsList.isEmpty()) {
stepsSequenceTreeMap =
(TreeMap<Integer, QuestionnaireActivityStepsBean>)
this.getStepsInfoForQuestionnaires(
StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_QUESTION,
null,
questionsList,
null,
sequenceNoMap,
stepsSequenceTreeMap,
session,
questionnaireStepDetailsMap,
questionResponseTypeMasterInfoList,
questionaireStepsList,
questionnaireDto,
studyDto);
}
}
if (!formIdList.isEmpty()) {
for (String formId : formIdList) {
List<FormMappingDto> formList =
session
.createQuery(
"from FormMappingDto FMDTO"
+ " where FMDTO.formId in (select FDTO.formId"
+ " from FormDto FDTO"
+ " where FDTO.formId=:formId"
+ ") and FMDTO.active=true"
+ " ORDER BY FMDTO.sequenceNo ")
.setString("formId", formId)
.list();
if ((formList != null) && !formList.isEmpty()) {
stepsSequenceTreeMap =
(TreeMap<Integer, QuestionnaireActivityStepsBean>)
this.getStepsInfoForQuestionnaires(
StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_FORM,
null,
null,
formList,
sequenceNoMap,
stepsSequenceTreeMap,
session,
questionnaireStepDetailsMap,
questionResponseTypeMasterInfoList,
questionaireStepsList,
questionnaireDto,
studyDto);
}
}
}
for (Integer key : stepsSequenceTreeMap.keySet()) {
steps.add(stepsSequenceTreeMap.get(key));
}
activityStructureBean.setSteps(steps);
}
}
} catch (Exception e) {
LOGGER.error("ActivityMetaDataDao - questionnaireMetadata() :: ERROR", e);
}
LOGGER.exit("questionnaireMetadata() :: Ends");
return activityStructureBean;
}