Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java =================================================================== diff -u -rc307a78aca6f80434a5ee07496e70cb3f418d6cd -re194f22014c7cbffaf5168f1982aa89e7c34c34d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision c307a78aca6f80434a5ee07496e70cb3f418d6cd) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision e194f22014c7cbffaf5168f1982aa89e7c34c34d) @@ -105,9 +105,9 @@ AssessmentResult getAssessmentResultByUid(Long assessmentResultUid); /** - * Count how many last finished attempts selected specified option. + * Count how many last attempts selected specified option. */ - int countAttemptsPerOption(Long toolContentId, Long optionUid); + int countAttemptsPerOption(Long toolContentId, Long optionUid, boolean finishedAttemptsOnly); Map countAnsweredQuestionsByUsers(long toolContentId); } \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java =================================================================== diff -u -rc307a78aca6f80434a5ee07496e70cb3f418d6cd -re194f22014c7cbffaf5168f1982aa89e7c34c34d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision c307a78aca6f80434a5ee07496e70cb3f418d6cd) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision e194f22014c7cbffaf5168f1982aa89e7c34c34d) @@ -359,14 +359,15 @@ } @Override - public int countAttemptsPerOption(Long toolContentId, Long optionUid) { + public int countAttemptsPerOption(Long toolContentId, Long optionUid, boolean finishedAttemptsOnly) { String COUNT_ATTEMPTS_BY_OPTION_UID = "SELECT count(*) " + "FROM tl_laasse10_assessment_result AS result " + "JOIN tl_laasse10_assessment AS assessment ON assessment.uid = result.assessment_uid " + "JOIN tl_laasse10_question_result AS questionResult ON questionResult.result_uid = result.uid " + "JOIN lams_qb_tool_answer AS qbToolAnswer ON qbToolAnswer.answer_uid = questionResult.uid " + "JOIN tl_laasse10_option_answer AS optionAnswer ON questionResult.uid = optionAnswer.question_result_uid " - + "WHERE (result.finish_date IS NOT NULL) AND result.latest=1 && assessment.content_id = :toolContentId" - + " AND optionAnswer.question_option_uid = :optionUid AND (optionAnswer.answer_boolean=1 OR qbToolAnswer.qb_option_uid = :optionUid) "; + + "WHERE " + (finishedAttemptsOnly ? "(result.finish_date IS NOT NULL) AND " : "") + + "result.latest=1 && assessment.content_id = :toolContentId AND optionAnswer.question_option_uid = :optionUid " + + "AND (optionAnswer.answer_boolean=1 OR qbToolAnswer.qb_option_uid = :optionUid) "; NativeQuery query = getSession().createNativeQuery(COUNT_ATTEMPTS_BY_OPTION_UID); query.setParameter("toolContentId", toolContentId); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -rb140d07f5673be1ca39ed3fb06e9a51173e2c620 -re194f22014c7cbffaf5168f1982aa89e7c34c34d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision b140d07f5673be1ca39ed3fb06e9a51173e2c620) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision e194f22014c7cbffaf5168f1982aa89e7c34c34d) @@ -1126,8 +1126,8 @@ } @Override - public int countAttemptsPerOption(Long toolContentId, Long optionUid) { - return assessmentResultDao.countAttemptsPerOption(toolContentId, optionUid); + public int countAttemptsPerOption(Long toolContentId, Long optionUid, boolean finishedAttemptsOnly) { + return assessmentResultDao.countAttemptsPerOption(toolContentId, optionUid, finishedAttemptsOnly); } @Override @@ -1613,7 +1613,7 @@ } @Override - public Map getQuestionSummaryForExport(Assessment assessment) { + public Map getQuestionSummaryForExport(Assessment assessment, boolean finishedAttemptsOnly) { Map questionSummaries = new LinkedHashMap<>(); if (assessment.getQuestions() == null) { @@ -1623,8 +1623,9 @@ SortedSet sessions = new TreeSet<>(new AssessmentSessionComparator()); sessions.addAll(assessmentSessionDao.getByContentId(assessment.getContentId())); - List assessmentResults = assessmentResultDao - .getLastFinishedAssessmentResults(assessment.getContentId()); + List assessmentResults = finishedAttemptsOnly + ? assessmentResultDao.getLastFinishedAssessmentResults(assessment.getContentId()) + : assessmentResultDao.getLastAssessmentResults(assessment.getUid()); Map userUidToResultMap = new HashMap<>(); for (AssessmentResult assessmentResult : assessmentResults) { userUidToResultMap.put(assessmentResult.getUser().getUid(), assessmentResult); @@ -1862,7 +1863,7 @@ summaryTitleRow.addCell(getMessage("label.export.question.summary"), true); questionSummarySheet.addEmptyRow(); - Map questionSummaries = getQuestionSummaryForExport(assessment); + Map questionSummaries = getQuestionSummaryForExport(assessment, true); if (assessment.getQuestions() != null) { Set questions = assessment.getQuestions(); @@ -1961,7 +1962,7 @@ .getQuestionResultsPerSession(); int markCount = 0; - Float markTotal = 0.0F; + float markTotal = 0.0F; int timeTakenCount = 0; int timeTakenTotal = 0; for (List resultList : allResultsForQuestion) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -rf299a43b38f1c06f1c9a0810b3ae6205b10e0269 -re194f22014c7cbffaf5168f1982aa89e7c34c34d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision f299a43b38f1c06f1c9a0810b3ae6205b10e0269) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision e194f22014c7cbffaf5168f1982aa89e7c34c34d) @@ -321,9 +321,9 @@ Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId); /** - * Count how many last finished attempts selected specified option. + * Count how many last attempts selected specified option. */ - int countAttemptsPerOption(Long toolContentId, Long optionUid); + int countAttemptsPerOption(Long toolContentId, Long optionUid, boolean finishedAttemptsOnly); /** * Return the latest *finished* result (the same as the method above). But previously evicting it from the cache. It @@ -446,7 +446,7 @@ * @param questionUid * @return */ - Map getQuestionSummaryForExport(Assessment assessment); + Map getQuestionSummaryForExport(Assessment assessment, boolean finishedAttemptsOnly); /** * Prepares data for Summary excel export Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java =================================================================== diff -u -rb140d07f5673be1ca39ed3fb06e9a51173e2c620 -re194f22014c7cbffaf5168f1982aa89e7c34c34d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision b140d07f5673be1ca39ed3fb06e9a51173e2c620) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision e194f22014c7cbffaf5168f1982aa89e7c34c34d) @@ -1148,7 +1148,7 @@ } request.setAttribute("sessions", sessionList); - Map questionSummaries = service.getQuestionSummaryForExport(assessment); + Map questionSummaries = service.getQuestionSummaryForExport(assessment, true); request.setAttribute("questionSummaries", questionSummaries); // Assessment currently supports only one place for ratings. Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java =================================================================== diff -u -r262aeb03fd125991274edab2ce2f6dcb2b1b4714 -re194f22014c7cbffaf5168f1982aa89e7c34c34d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 262aeb03fd125991274edab2ce2f6dcb2b1b4714) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision e194f22014c7cbffaf5168f1982aa89e7c34c34d) @@ -233,7 +233,7 @@ // build candidate dtos for (OptionDTO optionDto : questionDto.getOptionDtos()) { - int optionAttemptCount = service.countAttemptsPerOption(contentId, optionDto.getUid()); + int optionAttemptCount = service.countAttemptsPerOption(contentId, optionDto.getUid(), false); float percentage = (float) (optionAttemptCount * 100) / totalNumberOfUsers; optionDto.setPercentage(percentage); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/TblMonitoringController.java =================================================================== diff -u -r0d458a161ee50dd2db8283520b80b5cc559705bf -re194f22014c7cbffaf5168f1982aa89e7c34c34d --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/TblMonitoringController.java (.../TblMonitoringController.java) (revision 0d458a161ee50dd2db8283520b80b5cc559705bf) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/TblMonitoringController.java (.../TblMonitoringController.java) (revision e194f22014c7cbffaf5168f1982aa89e7c34c34d) @@ -104,8 +104,8 @@ // build candidate dtos for (OptionDTO optionDto : questionDto.getOptionDtos()) { - int optionAttemptCount = assessmentService.countAttemptsPerOption(toolContentId, - optionDto.getUid()); + int optionAttemptCount = assessmentService.countAttemptsPerOption(toolContentId, optionDto.getUid(), + false); float percentage = (float) (optionAttemptCount * 100) / totalNumberOfUsers; optionDto.setPercentage(percentage); @@ -195,7 +195,7 @@ public String aesStudentChoices(HttpServletRequest request) { Long toolContentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); Assessment assessment = assessmentService.getAssessmentByContentId(toolContentId); - Map questionSummaries = assessmentService.getQuestionSummaryForExport(assessment); + Map questionSummaries = assessmentService.getQuestionSummaryForExport(assessment, false); List tblQuestionDtos = new ArrayList<>(); for (QuestionSummary questionSummary : questionSummaries.values()) { QuestionDTO questionDto = questionSummary.getQuestionDto();