Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r98434014914e1f22cac864e59e5918087ac1dc50 -r1699f7ed4fd338ac614126e4d68739f417997c4d --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 98434014914e1f22cac864e59e5918087ac1dc50) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 1699f7ed4fd338ac614126e4d68739f417997c4d) @@ -191,7 +191,7 @@ } @Override - public Object[] getGBLessonComplete(Long lessonId, Integer userId) { + public List getGBLessonComplete(Long lessonId, Integer userId) { GradebookService.logger .debug("Getting lesson complete gradebook user data for lesson: " + lessonId + ". For user: " + userId); @@ -226,9 +226,7 @@ gradebookActivityDTOs.add(activityDTO); } - return new Object[] { gradebookActivityDTOs, - gradebookDAO.getGradebookUserDataForLesson(lessonId, userId).getMark(), - getAverageMarkForLesson(lessonId), isWeightedMarks(lesson.getLearningDesign()) }; + return gradebookActivityDTOs; } @Override @@ -665,6 +663,11 @@ } @Override + public boolean isWeightedMarks(Long lessonId) { + return isWeightedMarks(getLessonService().getLesson(lessonId).getLearningDesign()); + } + + @Override public List getWeights(LearningDesign design) { List evaluations = new ArrayList(); Set activities = design.getActivities(); @@ -984,7 +987,8 @@ Double lessonAverageMarkValue = getAverageMarkForLesson(lesson.getLessonId()); ExcelCell[] lessonAverageMark = new ExcelCell[2]; lessonAverageMark[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.mark"), true); - ExcelCell markCell = isWeighted ? GradebookUtil.createPercentageCell(lessonAverageMarkValue, true) : new ExcelCell(lessonAverageMarkValue, false); + ExcelCell markCell = isWeighted ? GradebookUtil.createPercentageCell(lessonAverageMarkValue, true) + : new ExcelCell(lessonAverageMarkValue, false); lessonAverageMark[1] = markCell; ExcelCell[] lessonMedianTimeTaken = new ExcelCell[2]; @@ -1047,7 +1051,8 @@ userDataRow[2] = new ExcelCell(userRow.getLogin(), false); userDataRow[3] = new ExcelCell(getProgressMessage(userRow), false); userDataRow[4] = new ExcelCell(userRow.getTimeTakenSeconds(), false); - userDataRow[5] = isWeighted ? GradebookUtil.createPercentageCell(userRow.getMark(), true) : new ExcelCell(userRow.getMark(), false); + userDataRow[5] = isWeighted ? GradebookUtil.createPercentageCell(userRow.getMark(), true) + : new ExcelCell(userRow.getMark(), false); rowList.add(userDataRow); } rowList.add(GradebookService.EMPTY_ROW); @@ -1108,7 +1113,8 @@ } userDataRow[count++] = new ExcelCell(userActivityMark, false); } - userDataRow[count] = isWeighted ? GradebookUtil.createPercentageCell(userRow.getMark(), true) : new ExcelCell(userRow.getMark(), false); + userDataRow[count] = isWeighted ? GradebookUtil.createPercentageCell(userRow.getMark(), true) + : new ExcelCell(userRow.getMark(), false); rowList.add(userDataRow); } @@ -1383,7 +1389,9 @@ userDataRow[i++] = new ExcelCell(finishDate, false); userDataRow[i++] = new ExcelCell(timeTakenSeconds, false); userDataRow[i++] = new ExcelCell(feedback, false); - userDataRow[i++] = isWeightedLessonMap.get(lesson.getLessonId()) ? GradebookUtil.createPercentageCell(mark, true) : new ExcelCell(mark, false); + userDataRow[i++] = isWeightedLessonMap.get(lesson.getLessonId()) + ? GradebookUtil.createPercentageCell(mark, true) + : new ExcelCell(mark, false); } rowList.add(userDataRow); @@ -1568,16 +1576,16 @@ Long rawActivityTotalMarks = 0l; if (activityToTotalMarkMap.get(activity.getActivityId()) != null) { rawActivityTotalMarks = activityToTotalMarkMap.get(activity.getActivityId()); - } + } Integer weight = weighted && activity.getEvaluation() != null && activity.getEvaluation().getWeight() != null ? activity.getEvaluation().getWeight() : null; Long weightedActivityTotalMarks = weight != null ? weight : rawActivityTotalMarks; - + Double mark = 0d; if (gradebookUserActivity != null) { mark = gradebookUserActivity.getMark(); - if ( weight != null ) { + if (weight != null) { mark = doWeightedMarkCalc(mark, activity, weight, rawActivityTotalMarks); } if (!simplified) { @@ -1590,10 +1598,11 @@ } if (!simplified) { - if ( weightedActivityTotalMarks > 0 ) + if (weightedActivityTotalMarks > 0) { userRow[i++] = new ExcelCell(weightedActivityTotalMarks, false); - else + } else { userRow[i++] = new ExcelCell("", false); + } } lessonTotal += mark; @@ -1603,30 +1612,34 @@ } if (simplified) { - if ( weighted ) { - userRow[i++] = GradebookUtil.createPercentageCell(lessonTotal, true, false, ExcelCell.BORDER_STYLE_LEFT_THIN); + if (weighted) { + userRow[i++] = GradebookUtil.createPercentageCell(lessonTotal, true, false, + ExcelCell.BORDER_STYLE_LEFT_THIN); } else { - userRow[i++] = new ExcelCell(lessonTotal, ExcelCell.BORDER_STYLE_LEFT_THIN ); + userRow[i++] = new ExcelCell(lessonTotal, ExcelCell.BORDER_STYLE_LEFT_THIN); } } else { userRow[i++] = new ExcelCell(lessonTotal, ExcelCell.BORDER_STYLE_LEFT_THIN); userRow[i++] = new ExcelCell(lessonMaxMark, false); Double percentage = (lessonMaxMark != 0) ? lessonTotal / lessonMaxMark : 0d; - - userRow[i++] = GradebookUtil.createPercentageCell(percentage, false, false, ExcelCell.BORDER_STYLE_RIGHT_THICK); + + userRow[i++] = GradebookUtil.createPercentageCell(percentage, false, false, + ExcelCell.BORDER_STYLE_RIGHT_THICK); } } Double percentage = (overallMaxMark != 0) ? overallTotal / overallMaxMark : 0d; if (simplified) { userRow[i++] = new ExcelCell(overallTotal, ExcelCell.BORDER_STYLE_LEFT_THICK); userRow[i++] = new ExcelCell(overallMaxMark, false); - userRow[i++] = GradebookUtil.createPercentageCell(percentage, false, false, ExcelCell.BORDER_STYLE_RIGHT_THICK); + userRow[i++] = GradebookUtil.createPercentageCell(percentage, false, false, + ExcelCell.BORDER_STYLE_RIGHT_THICK); } else { i += 2; userRow[i++] = new ExcelCell(overallTotal, ExcelCell.BORDER_STYLE_LEFT_THIN); userRow[i++] = new ExcelCell(overallMaxMark, false); - userRow[i++] = GradebookUtil.createPercentageCell(percentage, false, true, ExcelCell.BORDER_STYLE_RIGHT_THICK); + userRow[i++] = GradebookUtil.createPercentageCell(percentage, false, true, + ExcelCell.BORDER_STYLE_RIGHT_THICK); } rowList.add(userRow); Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== diff -u -r0ed631e40db21814547bde9728628fd891473dd5 -r1699f7ed4fd338ac614126e4d68739f417997c4d --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 0ed631e40db21814547bde9728628fd891473dd5) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 1699f7ed4fd338ac614126e4d68739f417997c4d) @@ -94,10 +94,9 @@ String searchString, TimeZone userTimezone); /** - * Returns several outputs: leaner's rows for lesson's each activity, learner's mark for lesson, learners average - * mark for lesson, are the marks weighted. + * Returns output for gradebook on lesson complete. */ - Object[] getGBLessonComplete(Long lessonId, Integer userId); + List getGBLessonComplete(Long lessonId, Integer userId); // /** // * Gets the user rows containing only users' names. Do proper paging on DB side. @@ -329,6 +328,9 @@ /** Will the marks caculation take into account weighting? */ boolean isWeightedMarks(LearningDesign design); + /** Will the marks caculation take into account weighting? */ + boolean isWeightedMarks(Long lessonId); + /** Get a summary of the weightings */ List getWeights(LearningDesign design); Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java =================================================================== diff -u -ra750fb35682c60e1f04e0b3f8aff29f204d3c703 -r1699f7ed4fd338ac614126e4d68739f417997c4d --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java (.../GradebookAction.java) (revision a750fb35682c60e1f04e0b3f8aff29f204d3c703) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java (.../GradebookAction.java) (revision 1699f7ed4fd338ac614126e4d68739f417997c4d) @@ -153,25 +153,22 @@ return null; } - @SuppressWarnings("unchecked") public ActionForward getLessonCompleteGridData(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // Getting the params passed in from the jqGrid - Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); UserDTO currentUserDTO = getUser(); Integer userId = currentUserDTO.getUserID(); - if (!getSecurityService().isLessonParticipant(lessonID, userId, "get lesson complete gradebook data", false)) { + if (!getSecurityService().isLessonParticipant(lessonId, userId, "get lesson complete gradebook data", false)) { response.sendError(HttpServletResponse.SC_FORBIDDEN, "User is not a learner in the lesson"); return null; } - Object[] lessonCompleteData = getGradebookService().getGBLessonComplete(lessonID, userId); - List gradebookActivityDTOs = (List) lessonCompleteData[0]; + List gradebookActivityDTOs = getGradebookService().getGBLessonComplete(lessonId, userId); JSONObject resultJSON = new JSONObject(); resultJSON.put(GradebookConstants.ELEMENT_RECORDS, gradebookActivityDTOs.size()); - boolean isWeighted = (Boolean) lessonCompleteData[3]; JSONArray rowsJSON = new JSONArray(); for (GradebookGridRowDTO gradebookActivityDTO : gradebookActivityDTOs) { JSONObject rowJSON = new JSONObject(); @@ -188,8 +185,11 @@ } resultJSON.put(GradebookConstants.ELEMENT_ROWS, rowsJSON); - resultJSON.put("learnerLessonMark", GradebookUtil.niceFormatting((Double) lessonCompleteData[1], isWeighted)); - resultJSON.put("averageLessonMark", GradebookUtil.niceFormatting((Double) lessonCompleteData[2], isWeighted)); + boolean isWeighted = getGradebookService().isWeightedMarks(lessonId); + Double learnerLessonMark = getGradebookService().getGradebookUserLesson(lessonId, userId).getMark(); + resultJSON.put("learnerLessonMark", GradebookUtil.niceFormatting(learnerLessonMark, isWeighted)); + Double averageLessonMark = getGradebookService().getAverageMarkForLesson(lessonId); + resultJSON.put("averageLessonMark", GradebookUtil.niceFormatting(averageLessonMark, isWeighted)); response.setContentType("application/json;charset=utf-8"); response.getWriter().print(resultJSON.toString());