Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/gradebook/service/Attic/GradeBookService.java,v diff -u -r1.8 -r1.9 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java 25 Mar 2009 05:29:07 -0000 1.8 +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/service/GradeBookService.java 26 Mar 2009 23:25:39 -0000 1.9 @@ -50,6 +50,7 @@ import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.web.util.AttributeNames; /** * @author lfoxton @@ -60,7 +61,7 @@ public class GradeBookService implements IGradeBookService { private static Logger logger = Logger.getLogger(GradeBookService.class); - + private static final String IMAGES_DIR = Configuration.get(ConfigurationKeys.SERVER_URL) + "images"; // Services @@ -357,6 +358,12 @@ if (activity.isToolActivity() && activity instanceof ToolActivity) { ToolActivity toolAct = (ToolActivity) activity; + String monitorUrl = Configuration.get(ConfigurationKeys.SERVER_URL) + toolAct.getTool().getMonitorUrl() + + "?" + AttributeNames.PARAM_CONTENT_FOLDER_ID + "=" + + lesson.getLearningDesign().getContentFolderID() + "&" + AttributeNames.PARAM_TOOL_CONTENT_ID + + "=" + toolAct.getToolContentId(); + gactivityDTO.setMonitorUrl(monitorUrl); + // Get the competences for this activity Set competenceMappings = toolAct.getCompetenceMappings(); String competenceMappingsStr = ""; @@ -580,6 +587,6 @@ public void setGradeBookDAO(IGradeBookDAO gradeBookDAO) { this.gradeBookDAO = gradeBookDAO; } - + // ------------------------------------------------------------------------- } Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/Attic/GradeBookAction.java,v diff -u -r1.5 -r1.6 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java 25 Mar 2009 04:26:45 -0000 1.5 +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookAction.java 26 Mar 2009 23:25:39 -0000 1.6 @@ -82,7 +82,7 @@ HttpServletResponse response) throws Exception { return null; } - + /** * Returns an xml representation of the activity grid for gradebook * @@ -91,7 +91,7 @@ * User view will get the grid data for a specified user, which is all their * activity marks/outputs etc * - * Activity view will get the grid data for all activities, without user + * Activity view will get the grid data for all activities, without user * info, instead there is an average mark for each activity * * @param mapping @@ -101,26 +101,26 @@ * @return * @throws Exception */ - @SuppressWarnings(value={"unchecked", "unused"}) + @SuppressWarnings(value = { "unchecked", "unused" }) public ActionForward getActivityGridData(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { initServices(); int page = WebUtil.readIntParam(request, GradeBookConstants.PARAM_PAGE); int rowLimit = WebUtil.readIntParam(request, GradeBookConstants.PARAM_ROWS); - + // Leaving the sorting params here if we decide to sort the activities in some way String sortOrder = WebUtil.readStrParam(request, GradeBookConstants.PARAM_SORD); String sortBy = WebUtil.readStrParam(request, GradeBookConstants.PARAM_SIDX, true); - + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); String method = WebUtil.readStrParam(request, "method"); Lesson lesson = lessonService.getLesson(lessonID); if (lesson != null) { - - List gradeBookActivityDTOs = new ArrayList(); - + + List gradeBookActivityDTOs = new ArrayList(); + // Get the user gradebook list from the db // A slightly different list is needed for userview or activity view if (method.equals("userView")) { @@ -136,8 +136,7 @@ } else if (method.equals("activityView")) { gradeBookActivityDTOs = gradeBookService.getGBActivityRowsForLesson(lesson); } - - + // Work out the sublist to fetch based on rowlimit and current page. int totalPages = 1; if (rowLimit < gradeBookActivityDTOs.size()) { @@ -154,14 +153,16 @@ } } - + String ret = ""; if (method.equals("userView")) { - ret = GradeBookUtil.toGridXML(gradeBookActivityDTOs, page, rowLimit, GradeBookUtil.GRID_TYPE_MONITOR_USER_VIEW); - } else if (method.equals("activityView")){ - ret = GradeBookUtil.toGridXML(gradeBookActivityDTOs, page, totalPages, GradeBookUtil.GRID_TYPE_MONITOR_ACTIVITY_VIEW); + ret = GradeBookUtil.toGridXML(gradeBookActivityDTOs, page, rowLimit, + GradeBookUtil.GRID_TYPE_MONITOR_USER_VIEW); + } else if (method.equals("activityView")) { + ret = GradeBookUtil.toGridXML(gradeBookActivityDTOs, page, totalPages, + GradeBookUtil.GRID_TYPE_MONITOR_ACTIVITY_VIEW); } - + response.setContentType("text/xml"); PrintWriter out = response.getWriter(); out.print(ret); @@ -171,14 +172,14 @@ return null; } - + /** * Returns an xml representation of the user grid for gradebook * * This has two modes, userView and activityView * - * User view will get all the learners in a lesson and print their - * gradebook data with their mark for the entire lesson] + * User view will get all the learners in a lesson and print their gradebook + * data with their mark for the entire lesson] * * Activity view will take an extra parameter (activityID) and instead show * the user's mark just for one activity @@ -199,23 +200,23 @@ String sortOrder = WebUtil.readStrParam(request, GradeBookConstants.PARAM_SORD); String sortBy = WebUtil.readStrParam(request, GradeBookConstants.PARAM_SIDX, true); Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - + Boolean isSearch = WebUtil.readBooleanParam(request, "_search"); String method = WebUtil.readStrParam(request, "method"); Lesson lesson = lessonService.getLesson(lessonID); if (lesson != null) { - + // Get the user gradebook list from the db List gradeBookUserDTOs = new ArrayList(); - + if (method.equals("userView")) { gradeBookUserDTOs = gradeBookService.getGBUserRowsForLesson(lesson); } else if (method.equals("activityView")) { Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - + Activity activity = monitoringService.getActivityById(activityID); - if(activity != null) { + if (activity != null) { gradeBookUserDTOs = gradeBookService.getGBUserRowsForActivity(lesson, activity); } else { // return null and the grid will report an error @@ -237,6 +238,15 @@ Collections.sort(gradeBookUserDTOs, new GBUserFullNameComparator()); } + // if it is a search fix up the set + if (isSearch) { + String searchField = WebUtil.readStrParam(request, "searchField"); + String searchOper = WebUtil.readStrParam(request, "searchOper"); + String searchString = WebUtil.readStrParam(request, "searchString"); + gradeBookUserDTOs = doUserSearch(gradeBookUserDTOs, searchField, searchOper, searchString.toLowerCase()); + } + + // Reverse the order if requested if (sortOrder != null && sortOrder.equals("desc")) { Collections.reverse(gradeBookUserDTOs); @@ -260,13 +270,15 @@ } String ret = ""; - + if (method.equals("userView")) { - ret = GradeBookUtil.toGridXML(gradeBookUserDTOs, page, totalPages, GradeBookUtil.GRID_TYPE_MONITOR_USER_VIEW); + ret = GradeBookUtil.toGridXML(gradeBookUserDTOs, page, totalPages, + GradeBookUtil.GRID_TYPE_MONITOR_USER_VIEW); } else if (method.equals("activityView")) { - ret = GradeBookUtil.toGridXML(gradeBookUserDTOs, page, totalPages, GradeBookUtil.GRID_TYPE_MONITOR_ACTIVITY_VIEW); + ret = GradeBookUtil.toGridXML(gradeBookUserDTOs, page, totalPages, + GradeBookUtil.GRID_TYPE_MONITOR_ACTIVITY_VIEW); } - + response.setContentType("text/xml"); PrintWriter out = response.getWriter(); out.print(ret); @@ -276,7 +288,43 @@ return null; } - + + private List doUserSearch(List gradeBookUserDTOs, String searchField, + String searchOper, String searchString) { + List ret = new ArrayList(); + + if (searchField.equals("fullName")){ + for (GBUserGridRowDTO userRow : gradeBookUserDTOs) { + + String fullName = userRow.getLastName() + " " + userRow.getFirstName(); + fullName = fullName.toLowerCase(); + + if (searchOper.equals("eq")) { + if (fullName.equals(searchString)) { + ret.add(userRow); + } + } else if (searchOper.equals("ne")){ + if (!fullName.equals(searchString)) { + ret.add(userRow); + } + } else if (searchOper.equals("bw")){ + if (fullName.startsWith(searchString)) { + ret.add(userRow); + } + } else if (searchOper.equals("ew")){ + if (fullName.endsWith(searchString)) { + ret.add(userRow); + } + }else if (searchOper.equals("cn")){ + if (fullName.contains(searchString)) { + ret.add(userRow); + } + } + } + } + return ret; + } + private UserDTO getUser() { HttpSession ss = SessionManager.getSession(); return (UserDTO) ss.getAttribute(AttributeNames.USER); @@ -313,7 +361,7 @@ if (lessonService == null) lessonService = (ILessonService) WebApplicationContextUtils.getRequiredWebApplicationContext(context) .getBean("lessonService"); - + if (monitoringService == null) monitoringService = (IMonitoringService) WebApplicationContextUtils.getRequiredWebApplicationContext( context).getBean("monitoringService"); Index: lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/Attic/GradeBookMonitoringAction.java,v diff -u -r1.7 -r1.8 --- lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java 25 Mar 2009 04:26:45 -0000 1.7 +++ lams_central/src/java/org/lamsfoundation/lams/gradebook/web/action/GradeBookMonitoringAction.java 26 Mar 2009 23:25:39 -0000 1.8 @@ -138,7 +138,7 @@ gradeBookService.updateUserLessonGradeBookMark(lesson, learner, mark); } - if (feedback != null && !feedback.equals("")) { + if (feedback != null) { gradeBookService.updateUserLessonGradeBookFeedback(lesson, learner, feedback); } @@ -192,7 +192,7 @@ gradeBookService.updateUserActivityGradeBookMark(lesson, learner, activity, mark); } - if (feedback != null && !feedback.equals("")) { + if (feedback != null) { gradeBookService.updateUserActivityGradeBookFeedback(activity, learner, feedback); } Index: lams_central/web/gradebook/gradeBookMonitor.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/gradebook/Attic/gradeBookMonitor.jsp,v diff -u -r1.7 -r1.8 --- lams_central/web/gradebook/gradeBookMonitor.jsp 25 Mar 2009 05:29:07 -0000 1.7 +++ lams_central/web/gradebook/gradeBookMonitor.jsp 26 Mar 2009 23:25:39 -0000 1.8 @@ -19,7 +19,36 @@