Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java =================================================================== diff -u -r20aa6cbca9fc96d341080e6ad39f82593443f792 -r26d1f2a5b30574d0aef6b6eaf98b2d02ba72b5a2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java (.../McService.java) (revision 20aa6cbca9fc96d341080e6ad39f82593443f792) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java (.../McService.java) (revision 26d1f2a5b30574d0aef6b6eaf98b2d02ba72b5a2) @@ -974,17 +974,18 @@ cell.setCellValue(rowCount); rowCount++; - int totalPercentage = 0; + Double totalPercentage = 0d; for (McOptsContent option : question.getMcOptionsContents()) { int optionAttemptCount = mcUsrAttemptDAO.getAttemptsCountPerOption(option.getUid()); cell = row.createCell(count++); - int percentage = optionAttemptCount / totalNumberOfUsers; + Double percentage = (totalNumberOfUsers != 0) ? (double) optionAttemptCount / totalNumberOfUsers : 0d; cell.setCellValue(percentage); - CellUtil.setCellStyleProperty(cell, CellUtil.DATA_FORMAT, percentageFormat); - totalPercentage += percentage; if (option.isCorrectOption()) { cell.setCellStyle(greenColor); } + CellUtil.setCellStyleProperty(cell, CellUtil.DATA_FORMAT, percentageFormat); + + totalPercentage += percentage; } cell = row.createCell(maxOptionsInQuestion + 1); cell.setCellValue((1 - totalPercentage)); @@ -1050,7 +1051,7 @@ cell = row.createCell(count++); cell.setCellValue(messageService.getMessage("label.learner")); - ArrayList totalPercentList = new ArrayList<>(); + ArrayList totalPercentList = new ArrayList<>(); int[] numberOfCorrectAnswersPerQuestion = new int[questions.size()]; for (McSessionMarkDTO sessionMarkDTO : sessionMarkDTOs) { Map usersMarksMap = sessionMarkDTO.getUserMarks(); @@ -1080,7 +1081,7 @@ cell = row.createCell(count++); cell.setCellValue(new Long(userMark.getTotalMark())); - int totalPercents = numberOfCorrectlyAnsweredByUser / questions.size(); + Double totalPercents = questions.size() != 0 ? (double) numberOfCorrectlyAnsweredByUser / questions.size() : 0d; totalPercentList.add(totalPercents); cell = row.createCell(count++); cell.setCellValue(totalPercents); @@ -1097,22 +1098,23 @@ cell.setCellValue(messageService.getMessage("label.ave")); for (int numberOfCorrectAnswers : numberOfCorrectAnswersPerQuestion) { cell = row.createCell(count++); - cell.setCellValue(numberOfCorrectAnswers / totalPercentList.size()); + Double average = totalPercentList.size() == 0 ? 0d : (double) numberOfCorrectAnswers / totalPercentList.size(); + cell.setCellValue(average); CellUtil.setCellStyleProperty(cell, CellUtil.DATA_FORMAT, percentageFormat); } // class mean - Integer[] totalPercents = totalPercentList.toArray(new Integer[0]); + Double[] totalPercents = totalPercentList.toArray(new Double[0]); Arrays.sort(totalPercents); - int sum = 0; + Double sum = 0d; for (int i = 0; i < totalPercents.length; i++) { sum += totalPercents[i]; } row = sheet.createRow(rowCount++); cell = row.createCell(1); cell.setCellValue(messageService.getMessage("label.class.mean")); if (totalPercents.length != 0) { - int classMean = sum / totalPercents.length; + Double classMean = totalPercents.length == 0 ? 0d : sum / totalPercents.length; cell = row.createCell(questions.size() + 3); cell.setCellValue(classMean); CellUtil.setCellStyleProperty(cell, CellUtil.DATA_FORMAT, percentageFormat); @@ -1123,12 +1125,12 @@ cell = row.createCell(1); cell.setCellValue(messageService.getMessage("label.median")); if (totalPercents.length != 0) { - int median; + Double median; int middle = totalPercents.length / 2; if ((totalPercents.length % 2) == 1) { median = totalPercents[middle]; } else { - median = (int) ((totalPercents[middle - 1] + totalPercents[middle]) / 2.0); + median = ((totalPercents[middle - 1] + totalPercents[middle]) / 2.0); } cell = row.createCell(questions.size() + 3); cell.setCellValue(median); @@ -1213,23 +1215,20 @@ } rowCount++; - } ByteArrayOutputStream bos = new ByteArrayOutputStream(); wb.write(bos); byte[] data = bos.toByteArray(); - return data; } @Override public void copyToolContent(Long fromContentId, Long toContentId) { if (fromContentId == null) { logger.warn("fromContentId is null."); - long defaultContentId = getToolDefaultContentIdBySignature(McAppConstants.TOOL_SIGNATURE); - fromContentId = new Long(defaultContentId); + fromContentId = getToolDefaultContentIdBySignature(McAppConstants.TOOL_SIGNATURE); } if (toContentId == null) { Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java =================================================================== diff -u -rbac8a1d9f2b37ca6e26f275886b9e6603a6c0fb7 -r26d1f2a5b30574d0aef6b6eaf98b2d02ba72b5a2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java (.../McMonitoringController.java) (revision bac8a1d9f2b37ca6e26f275886b9e6603a6c0fb7) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java (.../McMonitoringController.java) (revision 26d1f2a5b30574d0aef6b6eaf98b2d02ba72b5a2) @@ -263,11 +263,9 @@ @RequestMapping(path = "/downloadMarks", method = RequestMethod.POST) public String downloadMarks(HttpServletRequest request, HttpServletResponse response) throws IOException { Long toolContentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID, false); + McContent mcContent = mcService.getMcContent(toolContentID); - McContent mcContent = mcService.getMcContent(new Long(toolContentID)); - byte[] spreadsheet = null; - try { spreadsheet = mcService.prepareSessionDataSpreadsheet(mcContent); } catch (Exception e) { Index: lams_tool_lamc/web/authoring/AuthoringTabsHolder.jsp =================================================================== diff -u -r5f9e583fc8e476f6a5f9e1826332ba3788d7c68c -r26d1f2a5b30574d0aef6b6eaf98b2d02ba72b5a2 --- lams_tool_lamc/web/authoring/AuthoringTabsHolder.jsp (.../AuthoringTabsHolder.jsp) (revision 5f9e583fc8e476f6a5f9e1826332ba3788d7c68c) +++ lams_tool_lamc/web/authoring/AuthoringTabsHolder.jsp (.../AuthoringTabsHolder.jsp) (revision 26d1f2a5b30574d0aef6b6eaf98b2d02ba72b5a2) @@ -75,7 +75,7 @@ - +