Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java =================================================================== diff -u -r771e53ce121281172ff7101bd9f4eac1b02d674c -r8397c776279c4ce695189d8d1f6275e3e9eafb92 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java (.../GradeBookService.java) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java (.../GradeBookService.java) (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -368,10 +368,10 @@ lessonRow.setStartDate(getLocaleDateString(user, lesson.getStartDateTime())); // Setting the timeTaken value as the average for the lesson, as this is not a specific user view - lessonRow.setTimeTaken(gradeBookDAO.getAverageDurationLesson(lesson.getLessonId())); + lessonRow.setAverageTimeTaken(gradeBookDAO.getAverageDurationLesson(lesson.getLessonId())); lessonRow.setLessonDescription(lesson.getLessonDescription()); - lessonRow.setMark(gradeBookDAO.getAverageMarkForLesson(lesson.getLessonId())); + lessonRow.setAverageMark(gradeBookDAO.getAverageMarkForLesson(lesson.getLessonId())); String gbMonURL = Configuration.get(ConfigurationKeys.SERVER_URL) + "gradebook/gradebookMonitoring.do?lessonID=" + lesson.getLessonId().toString(); @@ -427,7 +427,7 @@ gactivityDTO.setRowName(activity.getTitle()); // setting the average time - gactivityDTO.setTimeTaken(gradeBookDAO.getAverageDurationForActivity(activity.getActivityId())); + gactivityDTO.setAverageTimeTaken(gradeBookDAO.getAverageDurationForActivity(activity.getActivityId())); String monitorUrl = Configuration.get(ConfigurationKeys.SERVER_URL) + activity.getTool().getMonitorUrl() + "?" + AttributeNames.PARAM_CONTENT_FOLDER_ID + "=" + lesson.getLearningDesign().getContentFolderID() + "&" @@ -463,9 +463,9 @@ } } - // Settting the mark as an average for the class as this is not a specific user view + // Setting the mark as an average for the class as this is not a specific user view if (count != 0) { - gactivityDTO.setMark(sum / count); + gactivityDTO.setAverageMark(sum / count); } } Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookConstants.java =================================================================== diff -u -rdcb89ef0f3d98a36a05427e59955decefb7ab1c8 -r8397c776279c4ce695189d8d1f6275e3e9eafb92 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookConstants.java (.../GradeBookConstants.java) (revision dcb89ef0f3d98a36a05427e59955decefb7ab1c8) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookConstants.java (.../GradeBookConstants.java) (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -49,6 +49,8 @@ public static final String PARAM_SEARCH_STRING = "searchString"; public static final String PARAM_ROW_NAME = "rowName"; public static final String PARAM_TIME_TAKEN = "timeTaken"; + public static final String PARAM_AVG_TIME_TAKEN = "avgTimeTaken"; + public static final String PARAM_AVG_MARK = "avgMark"; // Sort public static final String SORT_DESC = "desc"; Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookUtil.java =================================================================== diff -u -rdcb89ef0f3d98a36a05427e59955decefb7ab1c8 -r8397c776279c4ce695189d8d1f6275e3e9eafb92 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookUtil.java (.../GradeBookUtil.java) (revision dcb89ef0f3d98a36a05427e59955decefb7ab1c8) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/util/GradeBookUtil.java (.../GradeBookUtil.java) (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -39,6 +39,8 @@ import javax.xml.transform.stream.StreamResult; 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.GBIDComparator; import org.lamsfoundation.lams.gradebook.dto.comparators.GBMarkComparator; import org.lamsfoundation.lams.gradebook.dto.comparators.GBRowNameComparator; @@ -204,6 +206,10 @@ Collections.sort(gridRows, new GBIDComparator()); } 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()); + } else if (sortBy.equals(GradeBookConstants.PARAM_AVG_MARK)) { + Collections.sort(gridRows, new GBAverageMarkComparator()); } else { Collections.sort(gridRows, new GBRowNameComparator()); } Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java =================================================================== diff -u -rdcb89ef0f3d98a36a05427e59955decefb7ab1c8 -r8397c776279c4ce695189d8d1f6275e3e9eafb92 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java (.../GradeBookAction.java) (revision dcb89ef0f3d98a36a05427e59955decefb7ab1c8) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java (.../GradeBookAction.java) (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -66,7 +66,7 @@ * * * @struts.action path="/gradebook/gradebook" parameter="dispatch" - * scope="request" name="gradeBookForm" validate="false" + * scope="request" validate="false" * * @struts:action-forward name="error" path=".error" * @struts:action-forward name="message" path=".message" Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java =================================================================== diff -u -rdcb89ef0f3d98a36a05427e59955decefb7ab1c8 -r8397c776279c4ce695189d8d1f6275e3e9eafb92 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java (.../GradeBookMonitoringAction.java) (revision dcb89ef0f3d98a36a05427e59955decefb7ab1c8) +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java (.../GradeBookMonitoringAction.java) (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -53,7 +53,7 @@ /** * @author lfoxton * - * Handles the monitor interface for gradebook + * Handles the monitor interfaces for gradebook * * This is where marking for an activity/lesson takes place * Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java =================================================================== diff -u -r771e53ce121281172ff7101bd9f4eac1b02d674c -r8397c776279c4ce695189d8d1f6275e3e9eafb92 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (.../GBActivityGridRowDTO.java) (revision 771e53ce121281172ff7101bd9f4eac1b02d674c) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (.../GBActivityGridRowDTO.java) (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -84,16 +84,16 @@ ret.add(rowName); } - if (timeTaken != null) { - ret.add(convertTimeToString(timeTaken)); + if (averageTimeTaken != null) { + ret.add(convertTimeToString(averageTimeTaken)); } else { ret.add("-"); } ret.add(competences); - if (mark != null) { - ret.add(mark.toString()); + if (averageMark != null) { + ret.add(averageMark.toString()); } else { ret.add("-"); } Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java =================================================================== diff -u -r0e1f26c5dd0feb65f9387191c66811c4ca8aa584 -r8397c776279c4ce695189d8d1f6275e3e9eafb92 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java (.../GBLessonGridRowDTO.java) (revision 0e1f26c5dd0feb65f9387191c66811c4ca8aa584) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java (.../GBLessonGridRowDTO.java) (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -60,15 +60,15 @@ ret.add(subGroup); ret.add(startDate); - if (timeTaken != null) { - ret.add(convertTimeToString(timeTaken)); + if (averageTimeTaken != null) { + ret.add(convertTimeToString(averageTimeTaken)); } else { ret.add("-"); } ret.add(lessonDescription); - if (mark != null) { - ret.add(mark.toString()); + if (averageMark != null) { + ret.add(averageMark.toString()); } else { ret.add("-"); } Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookGridRowDTO.java =================================================================== diff -u -r0e1f26c5dd0feb65f9387191c66811c4ca8aa584 -r8397c776279c4ce695189d8d1f6275e3e9eafb92 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookGridRowDTO.java (.../GradeBookGridRowDTO.java) (revision 0e1f26c5dd0feb65f9387191c66811c4ca8aa584) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/GradeBookGridRowDTO.java (.../GradeBookGridRowDTO.java) (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -37,11 +37,16 @@ public String rowName; // A unit of time in milliseconds that determines the time taken for the corressponding task - // Be it a lesson or an activity public Long timeTaken; + // Another unit of time that represents average time taken for a corresponding task + public Long averageTimeTaken; + // The mark for the corresponding gradebook grid row task public Double mark; + + // Average mark for the corresponding task + public Double averageMark; /** * A shared function to convert milliseconds into a readable string @@ -103,5 +108,23 @@ public void setRowName(String rowName) { this.rowName = rowName; } + + public Long getAverageTimeTaken() { + return averageTimeTaken; + } + + public void setAverageTimeTaken(Long averageTimeTaken) { + this.averageTimeTaken = averageTimeTaken; + } + + public Double getAverageMark() { + return averageMark; + } + + public void setAverageMark(Double averageMark) { + this.averageMark = averageMark; + } + + } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -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 + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradeBookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBAverageMarkComparator implements Comparator { + + public int compare(Object gradeBookGridRow, Object anotherGradeBookGridRow) { + + if (gradeBookGridRow instanceof GradeBookGridRowDTO && anotherGradeBookGridRow instanceof GradeBookGridRowDTO) { + + Double mark1 = ((GradeBookGridRowDTO) gradeBookGridRow).getAverageMark(); + Double mark2 = ((GradeBookGridRowDTO) anotherGradeBookGridRow).getAverageMark(); + + mark1 = (mark1 == null) ? 0.0 : mark1; + mark2 = (mark2 == null) ? 0.0 : mark2; + return new Double(mark1 - mark2).intValue(); + } else { + return 0; + } + } +} Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageTimeTakenComparator.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageTimeTakenComparator.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageTimeTakenComparator.java (revision 8397c776279c4ce695189d8d1f6275e3e9eafb92) @@ -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 + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradeBookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBAverageTimeTakenComparator implements Comparator{ + public int compare(Object gradeBookGridRow, Object anotherGradeBookGridRow) { + + if (gradeBookGridRow instanceof GradeBookGridRowDTO && anotherGradeBookGridRow instanceof GradeBookGridRowDTO) { + + Long timeTaken1 = ((GradeBookGridRowDTO) gradeBookGridRow).getAverageTimeTaken(); + Long timeTaken2 = ((GradeBookGridRowDTO) anotherGradeBookGridRow).getAverageTimeTaken(); + + timeTaken1 = (timeTaken1 == null) ? 0 : timeTaken1; + timeTaken2 = (timeTaken2 == null) ? 0 : timeTaken2; + return new Double(timeTaken1 - timeTaken2).intValue(); + } else { + return 0; + } + } +} + \ No newline at end of file