Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/GroupUser.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/commonContext.xml,v diff -u -r1.79 -r1.79.2.1 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 9 Apr 2009 05:05:39 -0000 1.79 +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 16 Apr 2009 06:46:26 -0000 1.79.2.1 @@ -42,7 +42,8 @@ classpath:org/lamsfoundation/lams/learningdesign/Activity.hbm.xml classpath:org/lamsfoundation/lams/learningdesign/BranchActivityEntry.hbm.xml classpath:org/lamsfoundation/lams/learningdesign/BranchCondition.hbm.xml - classpath:org/lamsfoundation/lams/learningdesign/Group.hbm.xml + classpath:org/lamsfoundation/lams/learningdesign/Group.hbm.xml + classpath:org/lamsfoundation/lams/learningdesign/GroupUser.hbm.xml classpath:org/lamsfoundation/lams/learningdesign/Grouping.hbm.xml classpath:org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml classpath:org/lamsfoundation/lams/learningdesign/Competence.hbm.xml Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java,v diff -u -r1.1 -r1.1.2.1 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java 9 Apr 2009 05:05:39 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java 16 Apr 2009 06:46:26 -0000 1.1.2.1 @@ -46,6 +46,10 @@ public long getAverageDurationForActivity(Long activityID); public Double getAverageMarkForActivity(Long activityID); + + public Double getAverageMarkForGroupedActivity(Long activityID, Long groupID); + + public long getAverageDurationForGroupedActivity(Long activityID, Long groupID); } Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java,v diff -u -r1.1 -r1.1.2.1 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java 9 Apr 2009 05:05:40 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java 16 Apr 2009 06:46:26 -0000 1.1.2.1 @@ -56,7 +56,13 @@ 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, Activity act, Group grp, GroupUser gu where " + + "compProg.activity.activityId=:activityID and grp.groupId=:groupID and gu.user=compProg.learnerProgress.user and gu.group=grp"; + @SuppressWarnings("unchecked") public GradebookUserActivity getGradebookUserDataForActivity(Long activityID, Integer userID) { List result = getSession().createQuery(GET_GRADEBOOK_USER_ACTIVITY).setInteger("userID", userID.intValue()) @@ -185,8 +191,8 @@ @SuppressWarnings("unchecked") public Double getAverageMarkForActivity(Long activityID) { - List result = getSession().createQuery(GET_AVERAGE_MARK_FOR_ACTIVTY).setLong("activityID", activityID.longValue()) - .list(); + List result = getSession().createQuery(GET_AVERAGE_MARK_FOR_ACTIVTY).setLong("activityID", + activityID.longValue()).list(); if (result != null) { if (result.size() > 0) @@ -196,4 +202,49 @@ return 0.0; } + + @SuppressWarnings("unchecked") + public Double getAverageMarkForGroupedActivity(Long activityID, Long groupID) { + List result = getSession().createQuery(GET_AVERAGE_MARK_FOR_GROUPED_ACTIVTY).setLong("activityID", + activityID.longValue()).setLong("groupID", groupID.longValue()).list(); + + if (result != null) { + if (result.size() > 0) + return (Double) result.get(0); + } + + return 0.0; + } + + @SuppressWarnings("unchecked") + public long getAverageDurationForGroupedActivity(Long activityID, Long groupID) { + List result = (List) getSession().createQuery(GET_AVERAGE_COMPLETION_TIME_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; + } + } + + } + return 0; + } } Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupUser.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java,v diff -u -r1.1.2.2 -r1.1.2.3 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java 15 Apr 2009 07:40:22 -0000 1.1.2.2 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java 16 Apr 2009 06:46:25 -0000 1.1.2.3 @@ -46,7 +46,16 @@ // Properties for activity view String monitorUrl; + Long groupId; + public Long getGroupId() { + return groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + public GBActivityGridRowDTO() { } @@ -71,7 +80,8 @@ ret.add((mark != null) ? mark.toString() : CELL_EMPTY); } else if (view == GBGridView.MON_ACTIVITY) { - + + ret.add(groupId != null ? groupId.toString() : ""); if (monitorUrl != null && monitorUrl.length() != 0) { ret.add("" + rowName + ""); Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java,v diff -u -r1.1 -r1.1.2.1 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java 9 Apr 2009 04:55:57 -0000 1.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java 16 Apr 2009 06:46:25 -0000 1.1.2.1 @@ -34,7 +34,7 @@ public static final String CELL_EMPTY = "-"; // The id for a row, might be activityId, userId, lessonID etc - public Long id; + public String id; // The name for the row, every gradebook row has some sort of name // Be it the user's name, the activity name, the lesson name etc @@ -101,11 +101,11 @@ this.mark = mark; } - public Long getId() { + public String getId() { return id; } - public void setId(Long id) { + public void setId(String id) { this.id = id; } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java,v diff -u -r1.1 -r1.1.2.1 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java 9 Apr 2009 04:55:55 -0000 1.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java 16 Apr 2009 06:46:25 -0000 1.1.2.1 @@ -33,8 +33,14 @@ if (gradebookRow instanceof GradebookGridRowDTO && anotherGradebookRow instanceof GradebookGridRowDTO) { - Long id1 = ((GradebookGridRowDTO) gradebookRow).getId(); - Long id2 = ((GradebookGridRowDTO) anotherGradebookRow).getId(); + Long id1; + Long id2; + try { + id1 = Long.parseLong(((GradebookGridRowDTO) gradebookRow).getId()); + id2 = Long.parseLong(((GradebookGridRowDTO) anotherGradebookRow).getId()); + } catch (NumberFormatException e) { + return 0; + } if (id1 == null || id2 == null) { return 0; Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBStartDateComparator.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBStartDateComparator.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBStartDateComparator.java 15 Apr 2009 07:40:21 -0000 1.1.2.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBStartDateComparator.java 16 Apr 2009 06:46:25 -0000 1.1.2.2 @@ -27,6 +27,7 @@ import java.util.Date; import org.lamsfoundation.lams.gradebook.dto.GBActivityGridRowDTO; +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; @SuppressWarnings("unchecked") public class GBStartDateComparator implements Comparator { @@ -36,10 +37,18 @@ Date startDate1 = ((GBActivityGridRowDTO) actGridRow).getStartDate(); Date startDate2 = ((GBActivityGridRowDTO) anotherActGridRow).getStartDate(); - Long id1 = ((GBActivityGridRowDTO) actGridRow).getId(); - Long id2 = ((GBActivityGridRowDTO) anotherActGridRow).getId(); - if (startDate1 == null && startDate2 == null) { + + Long id1 = null; + Long id2 = null; + + try { + id1 = Long.parseLong(((GradebookGridRowDTO) actGridRow).getId()); + id2 = Long.parseLong(((GradebookGridRowDTO) anotherActGridRow).getId()); + } catch (NumberFormatException e) { + return 0; + } + if (id1 == null || id2 == null) { return 0; } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java,v diff -u -r1.1.2.3 -r1.1.2.4 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 15 Apr 2009 07:40:22 -0000 1.1.2.3 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 16 Apr 2009 06:46:25 -0000 1.1.2.4 @@ -45,6 +45,8 @@ import org.lamsfoundation.lams.gradebook.util.GBGridView; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.CompetenceMapping; +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.CompletedActivityProgress; import org.lamsfoundation.lams.lesson.LearnerProgress; @@ -156,15 +158,46 @@ .getActivityId()); if (firstActivity.isToolActivity() && firstActivity instanceof ToolActivity) { - GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, lesson); - gradebookActivityDTOs.add(activityDTO); + Grouping grouping = firstActivity.getGrouping(); + if (grouping != null) { + Set groups = (Set) grouping.getGroups(); + if (groups != null) { + + for (Group group : groups) { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, + lesson, group.getGroupName(), group.getGroupId()); + gradebookActivityDTOs.add(activityDTO); + } + + } + } else { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, lesson, null, + null); + gradebookActivityDTOs.add(activityDTO); + } } for (Activity activity : activities) { if (activity.getActivityId().longValue() != firstActivity.getActivityId().longValue() && activity instanceof ToolActivity) { - GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) activity, lesson); - gradebookActivityDTOs.add(activityDTO); + + Grouping grouping = activity.getGrouping(); + if (grouping != null) { + Set groups = (Set) grouping.getGroups(); + if (groups != null) { + + for (Group group : groups) { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) activity, lesson, + group.getGroupName(), group.getGroupId()); + gradebookActivityDTOs.add(activityDTO); + } + + } + } else { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) activity, lesson, null, + null); + gradebookActivityDTOs.add(activityDTO); + } } } @@ -177,17 +210,27 @@ * org.lamsfoundation.lams.learningdesign.Activity) */ @SuppressWarnings("unchecked") - public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity) { + public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity, Long groupId) { List gradebookUserDTOs = new ArrayList(); - Set learners = (Set) lesson.getAllLearners(); + Set learners = null; + if (groupId != null) { + Group group = (Group) userService.findById(Group.class, groupId); + if (group != null) { + learners = (Set) group.getUsers(); + } else { + learners = (Set) lesson.getAllLearners(); + } + } else { + learners = (Set) lesson.getAllLearners(); + } if (learners != null) { for (User learner : learners) { GBUserGridRowDTO gUserDTO = new GBUserGridRowDTO(); gUserDTO.setRowName(learner.getLastName() + " " + learner.getFirstName()); - gUserDTO.setId(new Long(learner.getUserId())); + gUserDTO.setId(learner.getUserId().toString()); GradebookUserActivity gradebookUserActivity = gradebookDAO.getGradebookUserDataForActivity(activity .getActivityId(), learner.getUserId()); @@ -242,7 +285,7 @@ for (User learner : learners) { GBUserGridRowDTO gradebookUserDTO = new GBUserGridRowDTO(); - gradebookUserDTO.setId(new Long(learner.getUserId())); + gradebookUserDTO.setId(learner.getUserId().toString()); gradebookUserDTO.setRowName(learner.getLastName() + " " + learner.getFirstName()); // Setting the status and time taken for the user's lesson @@ -380,7 +423,7 @@ GBLessonGridRowDTO lessonRow = new GBLessonGridRowDTO(); lessonRow.setLessonName(lesson.getLessonName()); - lessonRow.setId(lesson.getLessonId()); + lessonRow.setId(lesson.getLessonId().toString()); lessonRow.setStartDate(getLocaleDateString(user, lesson.getStartDateTime())); if (view == GBGridView.MON_COURSE) { @@ -466,15 +509,32 @@ * @param lesson * @return */ - private GBActivityGridRowDTO getGradebookActivityDTO(ToolActivity activity, Lesson lesson) { + private GBActivityGridRowDTO getGradebookActivityDTO(ToolActivity activity, Lesson lesson, String groupName, + Long groupId) { + GBActivityGridRowDTO gactivityDTO = new GBActivityGridRowDTO(); - gactivityDTO.setId(activity.getActivityId()); + gactivityDTO.setId(activity.getActivityId().toString()); + + // Setting name + // If grouped acitivty, append group name gactivityDTO.setRowName(activity.getTitle()); + if (groupName != null && groupId != null) { + gactivityDTO.setGroupId(groupId); + gactivityDTO.setRowName(activity.getTitle() + " (" + groupName + ")"); + + // Need to make the id unique, so appending the group id for this row + gactivityDTO.setId(activity.getActivityId().toString() + "_" + groupId.toString()); + + // Setting averages for group + gactivityDTO.setAverageMark(gradebookDAO.getAverageMarkForGroupedActivity(activity.getActivityId(), groupId)); + gactivityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForGroupedActivity(activity.getActivityId(), groupId)); + + } else { + // Setting averages for lesson + gactivityDTO.setAverageMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); + gactivityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForActivity(activity.getActivityId())); + } - // Setting averages - gactivityDTO.setAverageMark(gradebookDAO.getAverageMarkForActivity(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() + "&" + AttributeNames.PARAM_TOOL_CONTENT_ID + "=" + activity.getToolContentId(); @@ -513,8 +573,17 @@ + learner.getUserId()); GBActivityGridRowDTO gactivityDTO = new GBActivityGridRowDTO(); - gactivityDTO.setId(activity.getActivityId()); + gactivityDTO.setId(activity.getActivityId().toString()); + + // Set the title + // If it is a grouped activity, and the user has a group get the group title as well gactivityDTO.setRowName(activity.getTitle()); + if (activity.getGrouping() != null) { + Group group = activity.getGroupFor(learner); + if (group != null) { + gactivityDTO.setRowName(activity.getTitle() + " (" + group.getGroupName() + ")"); + } + } GradebookUserActivity gradebookActivity = gradebookDAO.getGradebookUserDataForActivity( activity.getActivityId(), learner.getUserId()); @@ -557,10 +626,10 @@ + activity.getTool().getLearnerProgressUrl() + "&userID=" + learner.getUserId() + "&toolSessionID=" + toolSession.getToolSessionId().toString()); gactivityDTO.setOutput(this.getToolOutputsStr(activity, toolSession, learner)); - + if (activityState == LearnerProgress.ACTIVITY_ATTEMPTED) { gactivityDTO.setStartDate(learnerProgress.getAttemptedActivities().get(activity)); - }else { + } else { gactivityDTO.setStartDate(learnerProgress.getCompletedActivities().get(activity).getStartDate()); } } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java,v diff -u -r1.1 -r1.1.2.1 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 9 Apr 2009 04:55:58 -0000 1.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 16 Apr 2009 06:46:25 -0000 1.1.2.1 @@ -64,9 +64,10 @@ * * @param lesson * @param activity + * @param groupId * @return */ - public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity); + public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity, Long groupId); /** * Gets the user rows and the user's entire lesson mark for all users Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java 15 Apr 2009 07:40:22 -0000 1.1.2.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java 16 Apr 2009 06:46:25 -0000 1.1.2.2 @@ -53,6 +53,7 @@ public static final String PARAM_AVG_MARK = "avgMark"; public static final String PARAM_VIEW = "view"; public static final String PARAM_START_DATE = "startDate"; + public static final String PARAM_GROUP_ID = "groupId"; // Sort public static final String SORT_DESC = "desc"; Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java 15 Apr 2009 07:40:21 -0000 1.1.2.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java 16 Apr 2009 06:46:25 -0000 1.1.2.2 @@ -44,6 +44,7 @@ import org.lamsfoundation.lams.gradebook.util.GradebookConstants; import org.lamsfoundation.lams.gradebook.util.GradebookUtil; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; @@ -221,11 +222,24 @@ if (view == GBGridView.MON_USER || view == GBGridView.MON_COURSE) { gradebookUserDTOs = gradebookService.getGBUserRowsForLesson(lesson); } else if (view == GBGridView.MON_ACTIVITY) { - Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - + String rowID = WebUtil.readStrParam(request, AttributeNames.PARAM_ACTIVITY_ID); + + Long activityID = null; + + // Splitting the rowID param to get the activity/group id pair + String[] split = rowID.split("_"); + if (split.length == 2) { + activityID = Long.parseLong(split[0]); + } else { + activityID = Long.parseLong(rowID); + } + + // Getting the group id if it is there + Long groupId = WebUtil.readLongParam(request, GradebookConstants.PARAM_GROUP_ID, true); + Activity activity = monitoringService.getActivityById(activityID); if (activity != null && activity instanceof ToolActivity) { - gradebookUserDTOs = gradebookService.getGBUserRowsForActivity(lesson, (ToolActivity)activity); + gradebookUserDTOs = gradebookService.getGBUserRowsForActivity(lesson, (ToolActivity)activity, groupId); } else { // return null and the grid will report an error logger.error("No activity found for: " + activityID); Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java,v diff -u -r1.1 -r1.1.2.1 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java 9 Apr 2009 04:55:56 -0000 1.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java 16 Apr 2009 06:46:25 -0000 1.1.2.1 @@ -63,8 +63,7 @@ * @struts.action path="/gradebookMonitoring" parameter="dispatch" * scope="request" name="monitoringForm" validate="false" * - * @struts:action-forward name="monitorgradebook" - * path="/gradebookMonitor.jsp" + * @struts:action-forward name="monitorgradebook" path="/gradebookMonitor.jsp" * @struts:action-forward name="monitorcoursegradebook" * path="/gradebookCourseMonitor.jsp" * @struts:action-forward name="error" path=".error" @@ -116,23 +115,23 @@ return mapping.findForward("error"); } } - + @SuppressWarnings("unchecked") public ActionForward courseMonitor(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { initServices(); Integer oranisationID = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID); - + logger.debug("request monitorGradebook for organisation: " + oranisationID.toString()); UserDTO user = getUser(); if (user == null) { logger.error("User missing from session. "); return mapping.findForward("error"); } else { - - Organisation organisation = (Organisation)userService.findById(Organisation.class, oranisationID); + + Organisation organisation = (Organisation) userService.findById(Organisation.class, oranisationID); if (organisation == null) { logger.error("Organisation " + oranisationID + " does not exist. Unable to load gradebook"); return mapping.findForward("error"); @@ -146,17 +145,17 @@ } logger.debug("user is staff"); - + request.setAttribute("organisationID", oranisationID); request.setAttribute("organisationName", organisation.getName()); - + return mapping.findForward("monitorcoursegradebook"); } } catch (Exception e) { logger.error("Failed to load gradebook monitor", e); return mapping.findForward("error"); } - } + } /** * Updates a user's mark or feedback for an entire lesson @@ -174,17 +173,17 @@ Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); Integer userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_ID); String markStr = WebUtil.readStrParam(request, GradebookConstants.PARAM_MARK, true); - String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); + String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); Lesson lesson = lessonService.getLesson(lessonID); - User learner = (User)userService.findById(User.class, userID); + User learner = (User) userService.findById(User.class, userID); if (lesson != null || learner != null) { - + if (markStr != null && !markStr.equals("")) { Double mark = Double.parseDouble(markStr); gradebookService.updateUserLessonGradebookMark(lesson, learner, mark); } - + if (feedback != null) { gradebookService.updateUserLessonGradebookFeedback(lesson, learner, feedback); } @@ -196,8 +195,8 @@ } /** - * Updates a user's mark or feedback for an activity, - * then aggregates their total lesson mark + * Updates a user's mark or feedback for an activity, then aggregates their + * total lesson mark * * @param mapping * @param form @@ -210,40 +209,49 @@ HttpServletRequest request, HttpServletResponse response) throws Exception { initServices(); Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - + GBGridView view = GradebookUtil.readGBGridViewParam(request, GradebookConstants.PARAM_VIEW, false); Long activityID = null; Integer userID = null; - + // Fetch the id based on which grid it came from if (view == GBGridView.MON_ACTIVITY) { - activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_ID); + String rowID = WebUtil.readStrParam(request, AttributeNames.PARAM_ACTIVITY_ID); + // Splitting the rowID param to get the activity/group id pair + String[] split = rowID.split("_"); + if (split.length == 2) { + activityID = Long.parseLong(split[0]); + } else { + activityID = Long.parseLong(rowID); + } + + userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_ID); + } else if (view == GBGridView.MON_USER) { activityID = WebUtil.readLongParam(request, GradebookConstants.PARAM_ID); userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_USERID); } String markStr = WebUtil.readStrParam(request, GradebookConstants.PARAM_MARK, true); - String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); + String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); Activity activity = monitoringService.getActivityById(activityID); - User learner = (User)userService.findById(User.class, userID); + User learner = (User) userService.findById(User.class, userID); Lesson lesson = lessonService.getLesson(lessonID); if (lesson != null && activity != null && learner != null && activity.isToolActivity()) { - + if (markStr != null && !markStr.equals("")) { Double mark = Double.parseDouble(markStr); gradebookService.updateUserActivityGradebookMark(lesson, learner, activity, mark); } - + if (feedback != null) { gradebookService.updateUserActivityGradebookFeedback(activity, learner, feedback); } - + } else { logger.error("Lesson or activity missing for lesson: " + lessonID + "and activity: " + activityID); } @@ -270,7 +278,7 @@ getMonitoringServiceService(); getGradebookService(); } - + private IUserManagementService getUserService() { if (userService == null) { WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() @@ -288,7 +296,7 @@ } return lessonService; } - + private IMonitoringService getMonitoringServiceService() { if (monitoringService == null) { WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() @@ -297,7 +305,7 @@ } return monitoringService; } - + private IGradebookService getGradebookService() { if (gradebookService == null) { WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/gradebookCourseMonitor.jsp,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_gradebook/web/gradebookCourseMonitor.jsp 14 Apr 2009 06:18:50 -0000 1.1.2.1 +++ lams_gradebook/web/gradebookCourseMonitor.jsp 16 Apr 2009 06:46:25 -0000 1.1.2.2 @@ -74,7 +74,7 @@ '', '', '', - '', + '', '' ], colModel:[ Index: lams_gradebook/web/gradebookMonitor.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/gradebookMonitor.jsp,v diff -u -r1.1.2.2 -r1.1.2.3 --- lams_gradebook/web/gradebookMonitor.jsp 15 Apr 2009 07:40:21 -0000 1.1.2.2 +++ lams_gradebook/web/gradebookMonitor.jsp 16 Apr 2009 06:46:25 -0000 1.1.2.3 @@ -37,7 +37,7 @@ '', '', '', - '', + '', '' ], colModel:[ @@ -168,13 +168,15 @@ sortname: "activityId", colNames:[ '', + '', '', '', '', '' ], colModel:[ {name:'id', index:'id', sortable:false, hidden:true, hidedlg:true}, + {name:'groupId', index:'groupId', sortable:false, editable:false, hidden:true, search:false, hidedlg:true}, {name:'rowName', index:'rowName', sortable:true, editable: false}, {name:'avgTimeTaken', index:'avgTimeTaken', sortable:true, editable: false, width:80, align:"center"}, {name:'competences', index:'competences', sortable:false, editable: false, hidden:true}, @@ -189,11 +191,13 @@ subGridRowExpanded: function(subgrid_id, row_id) { var subgrid_table_id; var activityID = jQuery("#activityView").getRowData(row_id)["id"]; + var groupID = jQuery("#activityView").getRowData(row_id)["groupId"]; subgrid_table_id = subgrid_id+"_t"; + jQuery("#"+subgrid_id).html("
"); jQuery("#"+subgrid_table_id).jqGrid({ datatype: "xml", - url: "/gradebook/gradebook.do?dispatch=getUserGridData&view=monActivityView&lessonID=${lessonDetails.lessonID}&activityID=" + activityID, + url: "/gradebook/gradebook.do?dispatch=getUserGridData&view=monActivityView&lessonID=${lessonDetails.lessonID}&activityID=" + activityID + "&groupId=" + groupID, height: "100%", width: 600, cellEdit:true,