Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java (.../IGradebookDAO.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java (.../IGradebookDAO.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -53,17 +53,17 @@ */ List getGradebookUserActivitiesForActivity(Long activityID, List userIds); - Double getMedianMarkForLesson(Long lessonID); + Double getAverageMarkForLesson(Long lessonID); - long getAverageDurationLesson(Long lessonID); + long getMedianTimeTakenLesson(Long lessonID); - long getAverageDurationForActivity(Long activityID); + long getMedianTimeTakenForActivity(Long activityID); Double getAverageMarkForActivity(Long activityID); Double getAverageMarkForGroupedActivity(Long activityID, Long groupID); - long getAverageDurationForGroupedActivity(Long activityID, Long groupID); + long getMedianTimeTakenForGroupedActivity(Long activityID, Long groupID); List getLessonsByGroupAndUser(final Integer userId, final Integer orgId, int page, int size, String sortBy, String sortOrder, String searchString); Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java (.../GradebookDAO.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java (.../GradebookDAO.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -52,24 +52,12 @@ private static final String GET_GRADEBOOK_USER_ACTIVITIES_FOR_ACTIVITY = "FROM GradebookUserActivity gact where " + "gact.activity.activityId=:activityID"; - private static final String GET_AVERAGE_COMPLETION_TIME = "select prog.finishDate, prog.startDate FROM LearnerProgress prog where " - + "prog.lesson.lessonId=:lessonID"; - - final String GET_AVERAGE_COMPLETION_TIME2 = "SELECT AVG(TIMEDIFF(progress.finishDate,progress.startDate)) " - + "FROM LearnerProgress progress " + "WHERE progress.lesson.lessonId = :lessonId "; - - private static final String GET_AVERAGE_COMPLETION_TIME_ACTIVITY = "select compProg.finishDate, compProg.startDate from CompletedActivityProgress compProg where " - + "compProg.activity.activityId=:activityID"; - private static final String GET_AVERAGE_MARK_FOR_ACTIVTY = "select avg(gact.mark) from GradebookUserActivity gact where " + "gact.activity.activityId=:activityID"; private static final String GET_AVERAGE_MARK_FOR_GROUPED_ACTIVTY = "select avg(gact.mark) from GradebookUserActivity gact, GroupUser gu, Group grp where " + "gact.activity.activityId=:activityID and grp.groupId=:groupID and gu.user=gact.learner and gu.group=grp"; - private static final String GET_AVERAGE_COMPLETION_TIME_GROUPED_ACTIVITY = "select compProg.finishDate, compProg.startDate from CompletedActivityProgress compProg, Group grp, GroupUser gu where " - + "compProg.activity.activityId=:activityID and grp.groupId=:groupID and gu.user=compProg.learnerProgress.user and gu.group=grp"; - @Override @SuppressWarnings("unchecked") public GradebookUserActivity getGradebookUserDataForActivity(Long activityID, Integer userID) { @@ -146,28 +134,12 @@ @Override @SuppressWarnings("unchecked") - public Double getMedianMarkForLesson(Long lessonID) { + public Double getAverageMarkForLesson(Long lessonID) { - // Hacking SQL and using /*'*/:=/*'*/ instead of := which brakes HQL (https://hibernate.onjira.com/browse/HHH-2697) - // After moving to Hibernate higher than 4.1.3, it can be replaced by \\:= - final String GET_MEDIAN_MARK_FOR_LESSON = "SELECT avg(t1.mark) as medianVal FROM (" - + " SELECT @rownum/*'*/:=/*'*/@rownum+1 as `rowNumber`, gles.mark" - + " FROM lams_gradebook_user_lesson gles, (SELECT @rownum/*'*/:=/*'*/0) r" - + " WHERE 1" - + " AND gles.lesson_id=:lessonID" - + " ORDER BY gles.mark" - + " ) as t1, " - + " (" - + " SELECT count(*) as totalRows" - + " FROM lams_gradebook_user_lesson gles" - + " WHERE 1" - + " AND gles.lesson_id=:lessonID" - + " ) as t2" - + " WHERE 1" - + " AND t1.rowNumber in ( floor((totalRows+1)/2), floor((totalRows+2)/2) )"; + final String GET_AVERAGE_MARK_FOR_LESSON = "SELECT AVG(gles.mark) FROM GradebookUserLesson gles WHERE " + + "gles.lesson.lessonId=:lessonID"; - List result = getSession().createSQLQuery(GET_MEDIAN_MARK_FOR_LESSON).setLong("lessonID", lessonID.longValue()) - .list(); + List result = getSession().createQuery(GET_AVERAGE_MARK_FOR_LESSON).setLong("lessonID", lessonID.longValue()).list(); if (result != null) { if (result.size() > 0) { @@ -180,51 +152,61 @@ @Override @SuppressWarnings("unchecked") - public long getAverageDurationLesson(Long lessonID) { + public long getMedianTimeTakenLesson(Long lessonID) { + + // Hacking SQL and using /*'*/:=/*'*/ instead of := which brakes HQL (https://hibernate.onjira.com/browse/HHH-2697) + // After moving to Hibernate higher than 4.1.3, it can be replaced by \\:= + final String GET_MEDIAN_TIME_TAKEN_FOR_LESSON = "SELECT AVG(t1.timeTaken) AS medianVal FROM (" + + " SELECT @rownum/*'*/:=/*'*/@rownum+1 AS `rowNumber`, TIME_TO_SEC(TIMEDIFF(progress.finish_date_time, progress.start_date_time)) AS timeTaken" + + " FROM lams_learner_progress progress, (SELECT @rownum/*'*/:=/*'*/0) r" + + " WHERE progress.lesson_id=:lessonID AND TIMEDIFF(progress.finish_date_time, progress.start_date_time) IS NOT NULL" + + " ORDER BY TIMEDIFF(progress.finish_date_time, progress.start_date_time)" + + " ) AS t1, " + + " (" + + " SELECT count(*) AS totalRows" + + " FROM lams_learner_progress progress" + + " WHERE progress.lesson_id=:lessonID AND TIMEDIFF(progress.finish_date_time, progress.start_date_time) IS NOT NULL" + + " ) AS t2" + + " WHERE t1.rowNumber in ( floor((totalRows+1)/2), floor((totalRows+2)/2) )"; - final String GET_AVERAGE_COMPLETION_TIME2 = "SELECT AVG(TIMEDIFF(progress.finishDate,progress.startDate)) " - + "FROM LearnerProgress progress " + "WHERE progress.lesson.lessonId = :lessonId "; + List result = getSession().createSQLQuery(GET_MEDIAN_TIME_TAKEN_FOR_LESSON).setLong("lessonID", lessonID).list(); - List result = getSession().createQuery(GET_AVERAGE_COMPLETION_TIME2).setLong("lessonId", lessonID).list(); - if (result == null || result.size() == 0 || result.get(0) == null) { return 0; } else { - return ((Number) result.get(0)).intValue(); + //converting into milliseconds + return ((Number) result.get(0)).intValue() * 1000; } } @Override @SuppressWarnings("unchecked") - public long getAverageDurationForActivity(Long activityID) { - List result = getSession().createQuery(GET_AVERAGE_COMPLETION_TIME_ACTIVITY) - .setLong("activityID", activityID.longValue()).list(); + public long getMedianTimeTakenForActivity(Long activityID) { + + // Hacking SQL and using /*'*/:=/*'*/ instead of := which brakes HQL (https://hibernate.onjira.com/browse/HHH-2697) + // After moving to Hibernate higher than 4.1.3, it can be replaced by \\:= + final String GET_MEDIAN_TIME_TAKEN_FOR_ACTIVITY = "SELECT AVG(t1.timeTaken) AS medianVal FROM (" + + " SELECT @rownum/*'*/:=/*'*/@rownum+1 AS `rowNumber`, TIME_TO_SEC(TIMEDIFF(progress.completed_date_time, progress.start_date_time)) AS timeTaken" + + " FROM lams_progress_completed progress, (SELECT @rownum/*'*/:=/*'*/0) r" + + " WHERE progress.activity_id=:activityID AND TIMEDIFF(progress.completed_date_time, progress.start_date_time) IS NOT NULL" + + " ORDER BY TIMEDIFF(progress.completed_date_time, progress.start_date_time)" + + " ) AS t1, " + + " (" + + " SELECT count(*) AS totalRows" + + " FROM lams_progress_completed progress" + + " WHERE progress.activity_id=:activityID AND TIMEDIFF(progress.completed_date_time, progress.start_date_time) IS NOT NULL" + + " ) AS t2" + + " WHERE t1.rowNumber in ( floor((totalRows+1)/2), floor((totalRows+2)/2) )"; - if (result != null) { - if (result.size() > 0) { - - long sum = 0; - long count = 0; - for (Object[] dateObjs : result) { - if (dateObjs != null && dateObjs.length == 2) { - Date finishDate = (Date) dateObjs[0]; - Date startDate = (Date) dateObjs[1]; - - if (startDate != null && finishDate != null) { - - sum += finishDate.getTime() - startDate.getTime(); - count++; - } - } - } - - if (count > 0) { - return sum / count; - } - } - + List result = getSession().createSQLQuery(GET_MEDIAN_TIME_TAKEN_FOR_ACTIVITY) + .setLong("activityID", activityID.longValue()).list(); + + if (result == null || result.size() == 0 || result.get(0) == null) { + return 0; + } else { + //converting into milliseconds + return ((Number) result.get(0)).intValue() * 1000; } - return 0; } @Override @@ -260,35 +242,34 @@ @Override @SuppressWarnings("unchecked") - public long getAverageDurationForGroupedActivity(Long activityID, Long groupID) { - List result = getSession().createQuery(GET_AVERAGE_COMPLETION_TIME_GROUPED_ACTIVITY) + public long getMedianTimeTakenForGroupedActivity(Long activityID, Long groupID) { + + // Hacking SQL and using /*'*/:=/*'*/ instead of := which brakes HQL (https://hibernate.onjira.com/browse/HHH-2697) + // After moving to Hibernate higher than 4.1.3, it can be replaced by \\:= + final String GET_MEDIAN_TIME_TAKEN_FOR_GROUPED_ACTIVITY = "SELECT AVG(t1.timeTaken) AS medianVal FROM (" + + " SELECT @rownum/*'*/:=/*'*/@rownum+1 AS `rowNumber`, TIME_TO_SEC(TIMEDIFF(compProgress.completed_date_time, compProgress.start_date_time)) AS timeTaken" + + " FROM lams_progress_completed compProgress, (SELECT @rownum/*'*/:=/*'*/0) r, lams_learner_progress progr, lams_user_group ug " + + " WHERE compProgress.activity_id=:activityID AND TIMEDIFF(compProgress.completed_date_time, compProgress.start_date_time) IS NOT NULL" + + " AND ug.group_id=:groupID AND compProgress.learner_progress_id = progr.learner_progress_id AND progr.user_id=ug.user_id " + + " ORDER BY TIMEDIFF(compProgress.completed_date_time, compProgress.start_date_time)" + + " ) AS t1, " + + " (" + + " SELECT count(*) AS totalRows" + + " FROM lams_progress_completed compProgress, lams_learner_progress progr, lams_user_group ug" + + " WHERE compProgress.activity_id=:activityID AND TIMEDIFF(compProgress.completed_date_time, compProgress.start_date_time) IS NOT NULL" + + " AND ug.group_id=:groupID AND compProgress.learner_progress_id = progr.learner_progress_id AND progr.user_id=ug.user_id" + + " ) AS t2" + + " WHERE t1.rowNumber in ( floor((totalRows+1)/2), floor((totalRows+2)/2) )"; + + List result = getSession().createSQLQuery(GET_MEDIAN_TIME_TAKEN_FOR_GROUPED_ACTIVITY) .setLong("activityID", activityID.longValue()).setLong("groupID", groupID.longValue()).list(); - if (result != null) { - if (result.size() > 0) { - - long sum = 0; - long count = 0; - for (Object[] dateObjs : result) { - if (dateObjs != null && dateObjs.length == 2) { - Date finishDate = (Date) dateObjs[0]; - Date startDate = (Date) dateObjs[1]; - - if (startDate != null && finishDate != null) { - - sum += finishDate.getTime() - startDate.getTime(); - count++; - } - } - } - - if (count > 0) { - return sum / count; - } - } - + if (result == null || result.size() == 0 || result.get(0) == null) { + return 0; + } else { + //converting into milliseconds + return ((Number) result.get(0)).intValue() * 1000; } - return 0; } @Override Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (.../GBActivityGridRowDTO.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (.../GBActivityGridRowDTO.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -118,17 +118,17 @@ ret.add(rowName); } - ret.add((averageTimeTaken != null) ? convertTimeToString(averageTimeTaken) : CELL_EMPTY); + ret.add((medianTimeTaken != null) ? convertTimeToString(medianTimeTaken) : CELL_EMPTY); ret.add(competences); - ret.add(medianMark != null ? GradebookUtil.niceFormatting(medianMark) : CELL_EMPTY); + ret.add(averageMark != null ? GradebookUtil.niceFormatting(averageMark) : CELL_EMPTY); } else if (view == GBGridView.LRN_ACTIVITY) { ret.add(rowName); ret.add(status); ret.add(feedback); - ret.add((averageTimeTaken != null) ? convertTimeToString(averageTimeTaken) : CELL_EMPTY); + ret.add((medianTimeTaken != null) ? convertTimeToString(medianTimeTaken) : CELL_EMPTY); ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); - ret.add(medianMark != null ? GradebookUtil.niceFormatting(medianMark) : CELL_EMPTY); + ret.add(averageMark != null ? GradebookUtil.niceFormatting(averageMark) : CELL_EMPTY); ret.add(mark != null ? GradebookUtil.niceFormatting(mark) : CELL_EMPTY); } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java (.../GBLessonGridRowDTO.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java (.../GBLessonGridRowDTO.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -64,9 +64,9 @@ } ret.add(subGroup); ret.add(startDate); - ret.add((averageTimeTaken != null && averageTimeTaken != 0) ? convertTimeToString(averageTimeTaken) + ret.add((medianTimeTaken != null && medianTimeTaken != 0) ? convertTimeToString(medianTimeTaken) : CELL_EMPTY); - ret.add((medianMark != null) ? GradebookUtil.niceFormatting(medianMark) : CELL_EMPTY); + ret.add((averageMark != null) ? GradebookUtil.niceFormatting(averageMark) : CELL_EMPTY); } else if ((view == GBGridView.LRN_COURSE) || (view == GBGridView.MON_USER)) { if (gradebookLearnerURL != null && gradebookLearnerURL.length() != 0) { @@ -80,10 +80,10 @@ ret.add(feedback); ret.add((startDate != null) ? startDate : CELL_EMPTY); ret.add((finishDate != null) ? finishDate : CELL_EMPTY); - ret.add((averageTimeTaken != null && averageTimeTaken != 0) - ? toItalic(convertTimeToString(averageTimeTaken)) : CELL_EMPTY); + ret.add((medianTimeTaken != null && medianTimeTaken != 0) + ? toItalic(convertTimeToString(medianTimeTaken)) : CELL_EMPTY); ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); - ret.add((medianMark != null) ? toItalic(GradebookUtil.niceFormatting(medianMark)) : CELL_EMPTY); + ret.add((averageMark != null) ? toItalic(GradebookUtil.niceFormatting(averageMark)) : CELL_EMPTY); ret.add((mark != null) ? GradebookUtil.niceFormatting(mark) : CELL_EMPTY); //plain lesson list case Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java (.../GradebookGridRowDTO.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java (.../GradebookGridRowDTO.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -50,13 +50,13 @@ protected Long timeTaken; // Another unit of time that represents average time taken for a corresponding task - protected Long averageTimeTaken; + protected Long medianTimeTaken; // The mark for the corresponding gradebook grid row task protected Double mark; // Average mark for the corresponding task - protected Double medianMark; + protected Double averageMark; // Number of marks available where applicable protected Long marksAvailable; @@ -138,8 +138,8 @@ } protected String averageMarkToString() { - if (medianMark != null) { - String avgStr = new DecimalFormat("##0.00").format(medianMark); + if (averageMark != null) { + String avgStr = new DecimalFormat("##0.00").format(averageMark); if (marksAvailable != null) { return avgStr + "/" + marksAvailable.toString(); } else { @@ -194,28 +194,28 @@ this.rowName = rowName; } - public Long getAverageTimeTaken() { - return averageTimeTaken; + public Long getMedianTimeTaken() { + return medianTimeTaken; } - public Long getAverageTimeTakenSeconds() { - if (averageTimeTaken != null) { - return averageTimeTaken / 1000; + public Long getMedianTimeTakenSeconds() { + if (medianTimeTaken != null) { + return medianTimeTaken / 1000; } else { return null; } } - public void setAverageTimeTaken(Long averageTimeTaken) { - this.averageTimeTaken = averageTimeTaken; + public void setMedianTimeTaken(Long medianTimeTaken) { + this.medianTimeTaken = medianTimeTaken; } - public Double getMedianMark() { - return medianMark; + public Double getAverageMark() { + return averageMark; } - public void setMedianMark(Double medianMark) { - this.medianMark = medianMark; + public void setAverageMark(Double averageMark) { + this.averageMark = averageMark; } public Long getMarksAvailable() { Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java (.../GBAverageMarkComparator.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java (.../GBAverageMarkComparator.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -35,8 +35,8 @@ if (gradebookGridRow instanceof GradebookGridRowDTO && anotherGradebookGridRow instanceof GradebookGridRowDTO) { - Double mark1 = ((GradebookGridRowDTO) gradebookGridRow).getMedianMark(); - Double mark2 = ((GradebookGridRowDTO) anotherGradebookGridRow).getMedianMark(); + Double mark1 = ((GradebookGridRowDTO) gradebookGridRow).getAverageMark(); + Double mark2 = ((GradebookGridRowDTO) anotherGradebookGridRow).getAverageMark(); mark1 = (mark1 == null) ? 0.0 : mark1; mark2 = (mark2 == null) ? 0.0 : mark2; Fisheye: Tag 61753b963f79323ff21d671c6b6d2b563957d289 refers to a dead (removed) revision in file `lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageTimeTakenComparator.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBMedianTimeTakenComparator.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBMedianTimeTakenComparator.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBMedianTimeTakenComparator.java (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -0,0 +1,47 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBMedianTimeTakenComparator implements Comparator { + @Override + public int compare(Object gradebookGridRow, Object anotherGradebookGridRow) { + + if (gradebookGridRow instanceof GradebookGridRowDTO && anotherGradebookGridRow instanceof GradebookGridRowDTO) { + + Long timeTaken1 = ((GradebookGridRowDTO) gradebookGridRow).getMedianTimeTaken(); + Long timeTaken2 = ((GradebookGridRowDTO) anotherGradebookGridRow).getMedianTimeTaken(); + + timeTaken1 = (timeTaken1 == null) ? 0 : timeTaken1; + timeTaken2 = (timeTaken2 == null) ? 0 : timeTaken2; + return new Double(timeTaken1 - timeTaken2).intValue(); + } else { + return 0; + } + } +} Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -155,8 +155,8 @@ activityDTO.setStatus(getActivityStatusStr(learnerProgress, activity)); // Setting averages - activityDTO.setMedianMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); - activityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForActivity(activity.getActivityId())); + activityDTO.setAverageMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); + activityDTO.setMedianTimeTaken(gradebookDAO.getMedianTimeTakenForActivity(activity.getActivityId())); // Get the tool outputs for this user if there are any ToolSession toolSession = toolService.getToolSessionByLearner(learner, activity); @@ -414,8 +414,8 @@ } @Override - public Double getMedianMarkForLesson(Long lessonID) { - return gradebookDAO.getMedianMarkForLesson(lessonID); + public Double getAverageMarkForLesson(Long lessonID) { + return gradebookDAO.getAverageMarkForLesson(lessonID); } @Override @@ -669,8 +669,8 @@ } else if (view == GBGridView.MON_COURSE) { // Setting the averages for monitor view - lessonRow.setAverageTimeTaken(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())); - lessonRow.setMedianMark(gradebookDAO.getMedianMarkForLesson(lesson.getLessonId())); + lessonRow.setMedianTimeTaken(gradebookDAO.getMedianTimeTakenLesson(lesson.getLessonId())); + lessonRow.setAverageMark(gradebookDAO.getAverageMarkForLesson(lesson.getLessonId())); // Set the gradebook monitor url String gbMonURL = Configuration.get(ConfigurationKeys.SERVER_URL) @@ -681,8 +681,8 @@ GradebookUserLesson gbLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), userId); - lessonRow.setAverageTimeTaken(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())); - lessonRow.setMedianMark(gradebookDAO.getMedianMarkForLesson(lesson.getLessonId())); + lessonRow.setMedianTimeTaken(gradebookDAO.getMedianTimeTakenLesson(lesson.getLessonId())); + lessonRow.setAverageMark(gradebookDAO.getAverageMarkForLesson(lesson.getLessonId())); if (gbLesson != null) { lessonRow.setMark(gbLesson.getMark()); @@ -773,16 +773,15 @@ List rowList = new LinkedList(); // Adding the lesson average data to the summary - ExcelCell[] lessonMedianMark = new ExcelCell[2]; - lessonMedianMark[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.mark"), true); - lessonMedianMark[1] = new ExcelCell(getMedianMarkForLesson(lesson.getLessonId()), false); - rowList.add(lessonMedianMark); + ExcelCell[] lessonAverageMark = new ExcelCell[2]; + lessonAverageMark[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.mark"), true); + lessonAverageMark[1] = new ExcelCell(getAverageMarkForLesson(lesson.getLessonId()), false); + rowList.add(lessonAverageMark); - ExcelCell[] lessonAverageTimeTaken = new ExcelCell[2]; - lessonAverageTimeTaken[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.time.taken"), true); - lessonAverageTimeTaken[1] = new ExcelCell(gradebookDAO.getAverageDurationLesson(lesson.getLessonId()) / 1000, - false); - rowList.add(lessonAverageTimeTaken); + ExcelCell[] lessonMedianTimeTaken = new ExcelCell[2]; + lessonMedianTimeTaken[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.time.taken"), true); + lessonMedianTimeTaken[1] = new ExcelCell(gradebookDAO.getMedianTimeTakenLesson(lesson.getLessonId()) / 1000, false); + rowList.add(lessonMedianTimeTaken); rowList.add(GradebookService.EMPTY_ROW); // Adding the activity average data to the summary @@ -806,8 +805,8 @@ ExcelCell[] activityDataRow = new ExcelCell[4]; activityDataRow[0] = new ExcelCell(activityRow.getRowName(), false); activityDataRow[1] = new ExcelCell(activityRow.getCompetences(), false); - activityDataRow[2] = new ExcelCell(activityRow.getAverageTimeTakenSeconds(), false); - activityDataRow[3] = new ExcelCell(activityRow.getMedianMark(), false); + activityDataRow[2] = new ExcelCell(activityRow.getMedianTimeTakenSeconds(), false); + activityDataRow[3] = new ExcelCell(activityRow.getAverageMark(), false); rowList.add(activityDataRow); } rowList.add(GradebookService.EMPTY_ROW); @@ -1447,14 +1446,14 @@ // Setting averages for group activityDTO - .setMedianMark(gradebookDAO.getAverageMarkForGroupedActivity(activity.getActivityId(), groupId)); - activityDTO.setAverageTimeTaken( - gradebookDAO.getAverageDurationForGroupedActivity(activity.getActivityId(), groupId)); + .setAverageMark(gradebookDAO.getAverageMarkForGroupedActivity(activity.getActivityId(), groupId)); + activityDTO.setMedianTimeTaken( + gradebookDAO.getMedianTimeTakenForGroupedActivity(activity.getActivityId(), groupId)); } else { // Setting averages for lesson - activityDTO.setMedianMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); - activityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForActivity(activity.getActivityId())); + activityDTO.setAverageMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); + activityDTO.setMedianTimeTaken(gradebookDAO.getMedianTimeTakenForActivity(activity.getActivityId())); } // Set the possible marks if applicable Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -240,7 +240,7 @@ * @param lessonID * @return */ - Double getMedianMarkForLesson(Long lessonID); + Double getAverageMarkForLesson(Long lessonID); /** * Method for updating an activity mark that tools can call Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookUtil.java =================================================================== diff -u -rd0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookUtil.java (.../GradebookUtil.java) (revision d0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookUtil.java (.../GradebookUtil.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -42,7 +42,7 @@ import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; import org.lamsfoundation.lams.gradebook.dto.comparators.GBAverageMarkComparator; -import org.lamsfoundation.lams.gradebook.dto.comparators.GBAverageTimeTakenComparator; +import org.lamsfoundation.lams.gradebook.dto.comparators.GBMedianTimeTakenComparator; import org.lamsfoundation.lams.gradebook.dto.comparators.GBIDComparator; import org.lamsfoundation.lams.gradebook.dto.comparators.GBMarkComparator; import org.lamsfoundation.lams.gradebook.dto.comparators.GBRowNameComparator; @@ -219,7 +219,7 @@ } else if (sortBy.equals(GradebookConstants.PARAM_TIME_TAKEN)) { Collections.sort(gridRows, new GBTimeTakenComparator()); } else if (sortBy.equals(GradebookConstants.PARAM_AVG_TIME_TAKEN)) { - Collections.sort(gridRows, new GBAverageTimeTakenComparator()); + Collections.sort(gridRows, new GBMedianTimeTakenComparator()); } else if (sortBy.equals(GradebookConstants.PARAM_AVG_MARK)) { Collections.sort(gridRows, new GBAverageMarkComparator()); } else if (sortBy.equals(GradebookConstants.PARAM_START_DATE)) { Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java (.../GradebookAction.java) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java (.../GradebookAction.java) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -501,15 +501,15 @@ * @return * @throws Exception */ - public ActionForward getMedianMarkForLesson(ActionMapping mapping, ActionForm form, HttpServletRequest request, + public ActionForward getAverageMarkForLesson(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); if (!getSecurityService().isLessonMonitor(lessonID, getUser().getUserID(), "get lesson mark average", false)) { response.sendError(HttpServletResponse.SC_FORBIDDEN, "User is not a monitor in the lesson"); return null; } - Double medianMark = getGradebookService().getMedianMarkForLesson(lessonID); + Double medianMark = getGradebookService().getAverageMarkForLesson(lessonID); if (medianMark != null) { writeResponse(response, LamsDispatchAction.CONTENT_TYPE_TEXT_PLAIN, LamsDispatchAction.ENCODING_UTF8, Index: lams_gradebook/web/gradebookCourseLearner.jsp =================================================================== diff -u -rf8dd21c4cc3c22cde58e64cf596ca480a4d755f3 -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/web/gradebookCourseLearner.jsp (.../gradebookCourseLearner.jsp) (revision f8dd21c4cc3c22cde58e64cf596ca480a4d755f3) +++ lams_gradebook/web/gradebookCourseLearner.jsp (.../gradebookCourseLearner.jsp) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -55,7 +55,7 @@ {name:'feedback',index:'feedback', sortable:false, editable:false, search:false, width:200}, {name:'startDate',index:'startDate', sortable:false, editable:false, hidden:true, search:false}, {name:'finishDate',index:'finishDate', sortable:false, editable:false, hidden:true, search:false}, - {name:'averageTimeTaken',index:'averageTimeTaken', sortable:true, hidden:true, editable:false, search:false, width:80, align:"center"}, + {name:'medianTimeTaken',index:'medianTimeTaken', sortable:true, hidden:true, editable:false, search:false, width:80, align:"center"}, {name:'timeTaken',index:'timeTaken', sortable:true, editable:false, hidden:true, search:false, width:80, align:"center"}, {name:'averageMark',index:'averageMark', sortable:true, editable:false, search:false, width:50, align:"center"}, {name:'mark',index:'mark', sortable:true, editable:false, search:false, width:50, align:"center"} @@ -93,7 +93,7 @@ {name:'rowName', index:'rowName', sortable:false, editable: false, width:100}, {name:'status', index:'status', sortable:false, editable:false, width:50, align:"center"}, {name:'feedback', index:'feedback', sortable:false, editable: false, hidden:true}, - {name:'averageTimeTaken',index:'averageTimeTaken', sortable:true, hidden:true, editable:false, search:false, width:80, align:"center"}, + {name:'medianTimeTaken',index:'medianTimeTaken', sortable:true, hidden:true, editable:false, search:false, width:80, align:"center"}, {name:'timeTaken',index:'timeTaken', sortable:true, editable:false, hidden:true, search:false, width:80, align:"center"}, {name:'averageMark',index:'averageMark', sortable:true, editable:false, search:false, width:50, align:"center"}, {name:'mark', width:100, index:'mark', sortable:true, editable: false, width:50, align:"center"} Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== diff -u -r5e6303fa679ceff627f5a18a2b34db4e654486ed -r61753b963f79323ff21d671c6b6d2b563957d289 --- lams_gradebook/web/gradebookCourseMonitor.jsp (.../gradebookCourseMonitor.jsp) (revision 5e6303fa679ceff627f5a18a2b34db4e654486ed) +++ lams_gradebook/web/gradebookCourseMonitor.jsp (.../gradebookCourseMonitor.jsp) (revision 61753b963f79323ff21d671c6b6d2b563957d289) @@ -111,7 +111,7 @@ // update the lesson average mark if (cellname == "mark") { // Update the average activity mark - $.get("/gradebook/gradebook.do", {dispatch:"getMedianMarkForLesson", lessonID:lessonID}, function(xml) { + $.get("/gradebook/gradebook.do", {dispatch:"getAverageMarkForLesson", lessonID:lessonID}, function(xml) { if (xml!=null) { jQuery("#organisationGrid").setCell(row_id, "avgMark", xml, "", ""); } @@ -229,7 +229,7 @@ {name:'feedback', index:'feedback', sortable:false, editable: true, edittype:'textarea', editoptions:{rows:'4',cols:'20'}, width:150}, {name:'startDate',index:'startDate', sortable:false, editable:false, hidden:true, search:false}, {name:'finishDate',index:'finishDate', sortable:false, editable:false, hidden:true, search:false}, - {name:'averageTimeTaken',index:'averageTimeTaken', sortable:true, hidden:true, editable:false, search:false, width:80, align:"center"}, + {name:'medianTimeTaken',index:'medianTimeTaken', sortable:true, hidden:true, editable:false, search:false, width:80, align:"center"}, {name:'timeTaken',index:'timeTaken', sortable:true, editable:false, hidden:true, search:false, width:80, align:"center"}, {name:'averageMark',index:'averageMark', sortable:true, editable:false, hidden:true, search:false, width:50, align:"center"}, {name:'mark',index:'mark', sortable:true, editable:true, editrules:{number:true}, search:false, width:60, align:"center"}