in study-datastore/src/main/java/com/hphc/mystudies/dao/DashboardMetaDataDao.java [74:517]
public StudyDashboardResponse studyDashboardInfo(String studyId) throws DAOException {
LOGGER.entry("begin studyDashboardInfo()");
Session session = null;
StudyDashboardResponse studyDashboardResponse = new StudyDashboardResponse();
DashboardBean dashboard = new DashboardBean();
List<ChartsBean> chartsList = new ArrayList<>();
List<StatisticsBean> statisticsList = new ArrayList<>();
Map<String, Object> activityMap = new LinkedHashMap<>();
Map<String, Object> questionnaireMap = new LinkedHashMap<>();
List<String> activeTaskIdsList = new ArrayList<>();
List<String> questionnaireIdsList = new ArrayList<>();
List<ActiveTaskDto> activeTaskList = null;
List<QuestionnairesDto> questionnaireList = null;
List<ActiveTaskAttrtibutesValuesDto> activeTaskValuesList = null;
List<QuestionnairesStepsDto> questionnaireStepsList = null;
List<String> questionIdsList = new ArrayList<>();
List<String> formIdsList = new ArrayList<>();
List<ActiveTaskFormulaDto> formulaDtoList = null;
List<StatisticImageListDto> statisticImageList = null;
StudyDto studyDto = null;
StudyVersionDto studyVersionDto = null;
try {
session = sessionFactory.openSession();
studyDto =
(StudyDto)
session
.getNamedQuery("getLiveStudyIdByCustomStudyId")
.setString(StudyMetaDataEnum.QF_CUSTOM_STUDY_ID.value(), studyId)
.uniqueResult();
if (studyDto != null) {
studyVersionDto =
(StudyVersionDto)
session
.getNamedQuery("getLiveVersionDetailsByCustomStudyIdAndVersion")
.setString(
StudyMetaDataEnum.QF_CUSTOM_STUDY_ID.value(), studyDto.getCustomStudyId())
.setFloat(StudyMetaDataEnum.QF_STUDY_VERSION.value(), studyDto.getVersion())
.setMaxResults(1)
.uniqueResult();
activeTaskList =
session
.getNamedQuery("getActiveTaskDetailsByCustomStudyId")
.setString(
StudyMetaDataEnum.QF_CUSTOM_STUDY_ID.value(),
studyVersionDto.getCustomStudyId())
.setInteger(StudyMetaDataEnum.QF_LIVE.value(), 1)
.setInteger(StudyMetaDataEnum.QF_ACTIVE.value(), 0)
.list();
if ((activeTaskList != null) && !activeTaskList.isEmpty()) {
for (ActiveTaskDto activeTask : activeTaskList) {
boolean addToDashboardFlag = false;
activeTask = this.getTimeDetailsByActivityIdForActiveTask(activeTask, session);
if ((activeTask.getActive() != null) && (activeTask.getActive() == 1)) {
addToDashboardFlag = true;
} else {
if (StringUtils.isNotEmpty(activeTask.getActiveTaskLifetimeStart())
&& StudyMetaDataConstants.SDF_DATE
.parse(activeTask.getModifiedDate())
.after(
StudyMetaDataConstants.SDF_DATE.parse(
activeTask.getActiveTaskLifetimeStart()))) {
addToDashboardFlag = true;
}
}
if (addToDashboardFlag) {
activityMap.put(
StudyMetaDataConstants.ACTIVITY_TYPE_ACTIVE_TASK + "-" + activeTask.getId(),
activeTask);
activeTaskIdsList.add(activeTask.getId());
}
}
}
questionnaireList =
session
.getNamedQuery("getQuestionnaireDetailsByCustomStudyId")
.setString(
StudyMetaDataEnum.QF_CUSTOM_STUDY_ID.value(),
studyVersionDto.getCustomStudyId())
.setInteger(StudyMetaDataEnum.QF_LIVE.value(), 1)
.setBoolean(StudyMetaDataEnum.QF_ACTIVE.value(), false)
.list();
if ((questionnaireList != null) && !questionnaireList.isEmpty()) {
for (QuestionnairesDto questionnaire : questionnaireList) {
boolean addToDashboardFlag = false;
QuestionnairesDto questionnaireDto =
this.getTimeDetailsByActivityIdForQuestionnaire(questionnaire, session);
if (questionnaireDto.getActive()) {
addToDashboardFlag = true;
} else {
if (questionnaire.getStudyLifetimeStart() == null) {
if (StudyMetaDataConstants.SDF_DATE
.parse(questionnaireDto.getModifiedDate())
.after(
StudyMetaDataConstants.SDF_DATE.parse(
questionnaireDto.getStudyLifetimeStart()))) {
addToDashboardFlag = true;
}
}
}
if (addToDashboardFlag) {
questionnaireMap.put(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE
+ "-"
+ questionnaireDto.getId(),
questionnaireDto);
questionnaireIdsList.add(questionnaireDto.getId());
}
}
if ((questionnaireIdsList != null) && !questionnaireIdsList.isEmpty()) {
questionnaireStepsList =
session
.createQuery(
"from QuestionnairesStepsDto QSDTO"
+ " where QSDTO.questionnairesId in (:questionnaireIdsList)"
+ " and QSDTO.stepType in (:QuesStepTypeQue,:QuesStepTypeForm)"
+ " and QSDTO.status=true"
+ " ORDER BY QSDTO.questionnairesId, QSDTO.sequenceNo")
.setParameterList("questionnaireIdsList", questionnaireIdsList)
.setString(
"QuesStepTypeQue", StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_QUESTION)
.setString(
"QuesStepTypeForm", StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_FORM)
.list();
if ((questionnaireStepsList != null) && !questionnaireStepsList.isEmpty()) {
for (QuestionnairesStepsDto questionnaireSteps : questionnaireStepsList) {
if (questionnaireSteps
.getStepType()
.equalsIgnoreCase(StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_QUESTION)) {
questionIdsList.add(questionnaireSteps.getInstructionFormId());
}
if (questionnaireSteps
.getStepType()
.equalsIgnoreCase(StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_FORM)) {
formIdsList.add(questionnaireSteps.getInstructionFormId());
}
activityMap.put(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE
+ "-"
+ questionnaireSteps.getInstructionFormId()
+ "-"
+ questionnaireSteps.getStepType(),
questionnaireSteps);
}
}
}
}
formulaDtoList = session.createQuery("from ActiveTaskFormulaDto ATCDTO").list();
statisticImageList = session.createQuery(" from StatisticImageListDto STDTO").list();
if ((activeTaskIdsList != null) && !activeTaskIdsList.isEmpty()) {
activeTaskValuesList =
session
.createQuery(
"from ActiveTaskAttrtibutesValuesDto ATAVDTO"
+ " where ATAVDTO.addToLineChart=true or ATAVDTO.useForStatistic=true"
+ " and ATAVDTO.activeTaskId in (:activeTaskIdsList)")
.setParameterList("activeTaskIdsList", activeTaskIdsList)
.list();
if ((activeTaskValuesList != null) && !activeTaskValuesList.isEmpty()) {
int taskTypeId = 0;
Map<String, String> activeTaskMasterAttrIdsMap = new HashMap<>();
Map<String, String> activeTaskMasterAttrIdNameMap = new HashMap<>();
List<String> activeTaskMasterAttrIdList = new ArrayList<>();
for (ActiveTaskAttrtibutesValuesDto activeTaskAttrDto : activeTaskValuesList) {
activeTaskMasterAttrIdsMap.put(
activeTaskAttrDto.getActiveTaskMasterAttrId(),
activeTaskAttrDto.getActiveTaskMasterAttrId());
}
for (String activeTaskMasterAttrId : activeTaskMasterAttrIdsMap.keySet()) {
activeTaskMasterAttrIdList.add(activeTaskMasterAttrId);
}
if (!activeTaskMasterAttrIdList.isEmpty()) {
List<ActiveTaskMasterAttributeDto> activeTaskMasterAttributeList =
session
.createQuery(
"from ActiveTaskMasterAttributeDto ATMADTO"
+ " where ATMADTO.masterId IN (:activeTaskMasterAttrIdList)")
.setParameterList("activeTaskMasterAttrIdList", activeTaskMasterAttrIdList)
.list();
if ((null != activeTaskMasterAttributeList)
&& !activeTaskMasterAttributeList.isEmpty()) {
for (ActiveTaskMasterAttributeDto atmt : activeTaskMasterAttributeList) {
activeTaskMasterAttrIdNameMap.put(atmt.getMasterId(), atmt.getDisplayName());
}
}
}
for (ActiveTaskAttrtibutesValuesDto activeTaskAttrDto : activeTaskValuesList) {
ActiveTaskDto activeTaskDto = null;
taskTypeId = 0;
activeTaskDto =
(ActiveTaskDto)
activityMap.get(
StudyMetaDataConstants.ACTIVITY_TYPE_ACTIVE_TASK
+ "-"
+ activeTaskAttrDto.getActiveTaskId());
if (activeTaskDto != null) {
if ((null != activeTaskDto.getTaskTypeId())
&& ("3".equals(activeTaskDto.getTaskTypeId()))) {
taskTypeId = 3;
}
activeTaskAttrDto.setActivityType(StudyMetaDataConstants.DASHBOARD_ACTIVE_TASK);
activeTaskAttrDto.setActivityStepKey(
StringUtils.isEmpty(activeTaskDto.getShortTitle())
? ""
: activeTaskDto.getShortTitle());
activeTaskAttrDto.setActivityVersion(
activeTaskDto.getVersion() == null
? StudyMetaDataConstants.STUDY_DEFAULT_VERSION
: activeTaskDto.getVersion().toString());
activeTaskAttrDto.setActivityId(activeTaskDto.getShortTitle());
if (activeTaskAttrDto.isAddToLineChart()) {
chartsList =
this.getChartDetails(
StudyMetaDataConstants.ACTIVITY_TYPE_ACTIVE_TASK,
activeTaskAttrDto,
null,
chartsList,
activeTaskDto.getShortTitle(),
taskTypeId,
activeTaskMasterAttrIdNameMap);
}
if (activeTaskAttrDto.isUseForStatistic()) {
statisticsList =
this.getStatisticsDetails(
StudyMetaDataConstants.ACTIVITY_TYPE_ACTIVE_TASK,
activeTaskAttrDto,
null,
statisticsList,
formulaDtoList,
statisticImageList,
taskTypeId,
activeTaskMasterAttrIdNameMap);
}
}
}
}
}
if ((questionIdsList != null) && !questionIdsList.isEmpty()) {
List<QuestionsDto> questionsList;
questionsList =
session
.createQuery(
" from QuestionsDto QDTO"
+ " where QDTO.id in (:questionIdsList) and QDTO.status=true"
+ " and QDTO.addLineChart=:addLineChart"
+ " or QDTO.useStasticData=:useStasticData")
.setParameterList("questionIdsList", questionIdsList)
.setString("addLineChart", StudyMetaDataConstants.YES)
.setString("useStasticData", StudyMetaDataConstants.YES)
.list();
for (QuestionsDto questionDto : questionsList) {
QuestionnairesStepsDto questionnaireSteps =
(QuestionnairesStepsDto)
activityMap.get(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE
+ "-"
+ questionDto.getId()
+ "-"
+ StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_QUESTION);
if (questionnaireSteps != null) {
QuestionnairesDto questionnaireDto =
(QuestionnairesDto)
questionnaireMap.get(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE
+ "-"
+ questionnaireSteps.getQuestionnairesId());
if (questionnaireDto != null) {
questionDto.setActivityType(StudyMetaDataConstants.DASHBOARD_QUESTIONNAIRE);
questionDto.setActivityStepKey(
StringUtils.isEmpty(questionnaireSteps.getStepShortTitle())
? ""
: questionnaireSteps.getStepShortTitle());
questionDto.setActivityVersion(
questionnaireDto.getVersion() == null
? StudyMetaDataConstants.STUDY_DEFAULT_VERSION
: questionnaireDto.getVersion().toString());
questionDto.setActivityId(questionnaireDto.getShortTitle());
if (questionDto.getAddLineChart().equalsIgnoreCase(StudyMetaDataConstants.YES)) {
chartsList =
this.getChartDetails(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE,
null,
questionDto,
chartsList,
questionnaireSteps.getStepShortTitle(),
0,
null);
}
if (questionDto.getUseStasticData().equalsIgnoreCase(StudyMetaDataConstants.YES)) {
statisticsList =
this.getStatisticsDetails(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE,
null,
questionDto,
statisticsList,
formulaDtoList,
statisticImageList,
0,
null);
}
}
}
}
}
if ((formIdsList != null) && !formIdsList.isEmpty()) {
List<FormDto> formDtoList = null;
formDtoList =
session
.createQuery("from FormDto FDTO where FDTO.formId in (:formIdsList)")
.setParameterList("formIdsList", formIdsList)
.list();
if ((formDtoList != null) && !formDtoList.isEmpty()) {
for (FormDto form : formDtoList) {
List<String> formQuestionIdsList = new ArrayList<>();
List<FormMappingDto> formMappingDtoList;
formMappingDtoList =
session
.createQuery(
"from FormMappingDto FMDTO"
+ " where FMDTO.formId=:formId"
+ " order by FMDTO.sequenceNo")
.setString("formId", form.getFormId())
.list();
if ((formMappingDtoList != null) && !formMappingDtoList.isEmpty()) {
for (FormMappingDto formMappingDto : formMappingDtoList) {
formQuestionIdsList.add(formMappingDto.getQuestionId());
}
}
if (!formQuestionIdsList.isEmpty()) {
List<QuestionsDto> formQuestionDtoList = null;
formQuestionDtoList =
session
.createQuery(
"from QuestionsDto FQDTO"
+ " where FQDTO.id in (:formQuestionIdsList)"
+ " and FQDTO.status=true"
+ " and FQDTO.addLineChart=:addLineChart"
+ " or FQDTO.useStasticData=:useStasticData")
.setParameterList("formQuestionIdsList", formQuestionIdsList)
.setString("addLineChart", StudyMetaDataConstants.YES)
.setString("useStasticData", StudyMetaDataConstants.YES)
.list();
if ((formQuestionDtoList != null) && !formQuestionDtoList.isEmpty()) {
for (QuestionsDto questionDto : formQuestionDtoList) {
if (formQuestionIdsList.contains(questionDto.getId())) {
QuestionnairesStepsDto questionnaireSteps =
(QuestionnairesStepsDto)
activityMap.get(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE
+ "-"
+ form.getFormId()
+ "-"
+ StudyMetaDataConstants.QUESTIONAIRE_STEP_TYPE_FORM);
if (questionnaireSteps != null) {
QuestionnairesDto questionnaireDto =
(QuestionnairesDto)
questionnaireMap.get(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE
+ "-"
+ questionnaireSteps.getQuestionnairesId());
if (questionnaireDto != null) {
questionDto.setActivityType(
StudyMetaDataConstants.DASHBOARD_QUESTIONNAIRE);
questionDto.setActivityStepKey(
StringUtils.isEmpty(questionDto.getShortTitle())
? ""
: questionDto.getShortTitle());
questionDto.setActivityVersion(
questionnaireDto.getVersion() == null
? StudyMetaDataConstants.STUDY_DEFAULT_VERSION
: questionnaireDto.getVersion().toString());
questionDto.setActivityId(questionnaireDto.getShortTitle());
if (questionDto
.getAddLineChart()
.equalsIgnoreCase(StudyMetaDataConstants.YES)) {
chartsList =
this.getChartDetails(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE,
null,
questionDto,
chartsList,
questionDto.getShortTitle(),
0,
null);
}
if (questionDto
.getUseStasticData()
.equalsIgnoreCase(StudyMetaDataConstants.YES)) {
statisticsList =
this.getStatisticsDetails(
StudyMetaDataConstants.ACTIVITY_TYPE_QUESTIONAIRE,
null,
questionDto,
statisticsList,
formulaDtoList,
statisticImageList,
0,
null);
}
}
}
}
}
}
}
}
}
}
dashboard.setCharts(chartsList);
dashboard.setStatistics(statisticsList);
studyDashboardResponse.setDashboard(dashboard);
studyDashboardResponse.setMessage(StudyMetaDataConstants.SUCCESS);
}
} catch (Exception e) {
LOGGER.error("DashboardMetaDataDao - studyDashboardInfo() :: ERROR", e);
} finally {
if (session != null) {
session.close();
}
}
LOGGER.exit("studyDashboardInfo() :: Ends");
return studyDashboardResponse;
}