Index: lams_build/lib/lams/lams-monitoring.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-monitoring.jar,v diff -u -r1.59 -r1.60 Binary files differ Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java,v diff -u -r1.104 -r1.105 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java 10 Dec 2013 17:07:14 -0000 1.104 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java 16 Jan 2014 16:48:20 -0000 1.105 @@ -137,29 +137,6 @@ Boolean liveEditEnabled); /** - * Create a lession according to the input lession WDDX package. The sample package is following: - *
-     * 
- * 135 - * 10 - * 78 - * 12 - * 3456 - * - *
- *
- *

- * The lesson will includes creator who create this lesson as staff and learner. - * - * @param creatorUserId - * The lesson creator, who will be add to lesson as staff and learner. - * @param lessionPackage - * @return - */ - public String createLessonClassForLessonWDDX(Integer creatorUserId, String lessionPackage) - throws UserAccessDeniedException; - - /** * Setup the lesson class and organization for a lesson according to the input from monitoring GUI interface. * * @param lessonId @@ -176,7 +153,7 @@ * a list of staffs who will be in charge of this lesson. * @return the lesson with lesson class and organization */ - public Lesson createLessonClassForLesson(long lessonId, Organisation organisation, String leanerGroupName, + public Lesson createLessonClassForLesson(long lessonId, Organisation organisation, String learnerGroupName, List organizationUsers, String staffGroupName, List staffs, Integer userID) throws UserAccessDeniedException; Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java,v diff -u -r1.185 -r1.186 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 14 Oct 2013 10:54:42 -0000 1.185 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 16 Jan 2014 16:48:19 -0000 1.186 @@ -73,7 +73,6 @@ import org.lamsfoundation.lams.learningdesign.dao.IGroupingDAO; import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; import org.lamsfoundation.lams.learningdesign.dao.ITransitionDAO; -import org.lamsfoundation.lams.learningdesign.exception.LearningDesignProcessorException; import org.lamsfoundation.lams.lesson.CompletedActivityProgress; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; @@ -88,7 +87,6 @@ import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.monitoring.MonitoringConstants; import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO; -import org.lamsfoundation.lams.monitoring.dto.LearnerProgressBatchDTO; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; import org.lamsfoundation.lams.tool.exception.ToolException; @@ -222,6 +220,7 @@ this.messageService = messageService; } + @Override public MessageService getMessageService() { return messageService; } @@ -345,6 +344,7 @@ /** * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext) */ + @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } @@ -374,6 +374,7 @@ auditService.log("Monitoring", message); } + @Override public void checkOwnerOrStaffMember(Integer userId, Long lessonId, String actionDescription) { checkOwnerOrStaffMember(userId, lessonDAO.getLesson(lessonId), actionDescription); } @@ -382,6 +383,7 @@ * Checks whether the user is a staff member for the lesson, the creator of the lesson or simply a group manager. If * not, throws a UserAccessDeniedException exception */ + @Override public void checkOwnerOrStaffMember(Integer userId, Lesson lesson, String actionDescription) { User user = (User) baseDAO.find(User.class, userId); @@ -418,6 +420,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#initializeLesson(String, String, long, * Integer) */ + @Override public Lesson initializeLesson(String lessonName, String lessonDescription, long learningDesignId, Integer organisationId, Integer userID, String customCSV, Boolean enableLessonIntro, Boolean displayDesignImage, Boolean learnerExportAvailable, Boolean learnerPresenceAvailable, @@ -471,6 +474,7 @@ * Create new lesson according to the learning design specified by the user, but for a preview session rather than a * normal learning session. The design is not assigned to any workspace folder. */ + @Override public Lesson initializeLessonForPreview(String lessonName, String lessonDescription, long learningDesignId, Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) { @@ -489,6 +493,7 @@ /** * Intialise lesson without creating Learning Design copy, i.e. the original LD will be used. */ + @Override public Lesson initializeLessonWithoutLDcopy(String lessonName, String lessonDescription, long learningDesignID, User user, String customCSV, Boolean enableLessonIntro, Boolean displayDesignImage, Boolean learnerExportAvailable, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, @@ -538,6 +543,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#initializeLesson(java.util.Integer, * java.lang.String) */ + @Override public String initializeLesson(Integer creatorUserId, String lessonPacket) throws Exception { FlashMessage flashMessage = null; @@ -593,107 +599,9 @@ MonitoringService.log.error("Exception occured trying to create a lesson class ", e); throw new Exception(e); } - } /** - * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#createLessonClassForLessonWDDX(Integer, - * String, java.util.Integer) - */ - public String createLessonClassForLessonWDDX(Integer creatorUserId, String lessonPacket) - throws UserAccessDeniedException { - FlashMessage flashMessage = null; - - try { - Hashtable table = (Hashtable) WDDXProcessor.deserialize(lessonPacket); - - // todo: convert:data type: - Integer orgId = WDDXProcessor.convertToInteger(MonitoringConstants.KEY_ORGANISATION_ID, - table.get(MonitoringConstants.KEY_ORGANISATION_ID)); - long lessonId = WDDXProcessor.convertToLong(MonitoringConstants.KEY_LESSON_ID, - table.get(MonitoringConstants.KEY_LESSON_ID)).longValue(); - - // get leaner group info - Hashtable learnerMap = (Hashtable) table.get(MonitoringConstants.KEY_LEARNER); - List learners = (List) learnerMap.get(MonitoringConstants.KEY_USERS); - String learnerGroupName = WDDXProcessor.convertToString(learnerMap, MonitoringConstants.KEY_GROUP_NAME); - - // get staff group info - Hashtable staffMap = (Hashtable) table.get(MonitoringConstants.KEY_STAFF); - List staffs = (List) staffMap.get(MonitoringConstants.KEY_USERS); - String staffGroupName = WDDXProcessor.convertToString(staffMap, MonitoringConstants.KEY_GROUP_NAME); - - Organisation organisation = (Organisation) baseDAO.find(Organisation.class, orgId); - User creator = (User) baseDAO.find(User.class, creatorUserId); - - if ((learners == null) || (learners.size() <= 0)) { - learners = new LinkedList(); - Vector learnersList = userManagementService.getUsersFromOrganisationByRole(orgId, Role.LEARNER, - false, true); - learners.addAll(learnersList); - } - - if ((staffs == null) || (staffs.size() <= 0)) { - staffs = new LinkedList(); - } - - // create the lesson class - add all the users in this organisation - // to the lesson class - // add user as staff - List learnerList = new LinkedList(); - Iterator iter = learners.iterator(); - while (iter.hasNext()) { - try { - Object user = iter.next(); - - if (user instanceof User) { - learnerList.add((User) user); - } else { - int id = ((Double) user).intValue(); - learnerList.add((User) baseDAO.find(User.class, id)); - } - - } catch (Exception e) { - MonitoringService.log.error("Error parsing learner ID from " + lessonPacket); - continue; - } - } - // get staff user info - List staffList = new LinkedList(); - staffList.add(creator); - iter = staffs.iterator(); - - while (iter.hasNext()) { - try { - int id = ((Double) iter.next()).intValue(); - staffList.add((User) baseDAO.find(User.class, id)); - } catch (Exception e) { - MonitoringService.log.error("Error parsing staff ID from " + lessonPacket); - continue; - } - } - - // Create Lesson class - createLessonClassForLesson(lessonId, organisation, learnerGroupName, learnerList, staffGroupName, - staffList, creatorUserId); - - flashMessage = new FlashMessage("createLesson", Boolean.TRUE); - } catch (Exception e) { - MonitoringService.log.error("Exception occured trying to create a lesson class ", e); - flashMessage = new FlashMessage("createLesson", e.getMessage(), FlashMessage.ERROR); - } - - String message = "Failed on creating flash message:" + flashMessage; - try { - message = flashMessage.serializeMessage(); - } catch (IOException e) { - MonitoringService.log.error(message); - } - - return message; - } - - /** *

* Pre-condition: This method must be called under the condition of the the new lesson exists (without lesson * class). @@ -708,6 +616,8 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#createLessonClassForLesson(long, * org.lamsfoundation.lams.usermanagement.Organisation, java.util.List, java.util.List, java.util.Integer) */ + @Override + @SuppressWarnings("unchecked") public Lesson createLessonClassForLesson(long lessonId, Organisation organisation, String learnerGroupName, List organizationUsers, String staffGroupName, List staffs, Integer userId) { Lesson newLesson = lessonDAO.getLesson(new Long(lessonId)); @@ -718,13 +628,11 @@ checkOwnerOrStaffMember(userId, newLesson, "create lesson class"); // if lesson isn't started recreate the lesson class - if (!newLesson.isLessonStarted()) { + if (newLesson.isLessonStarted()) { + lessonService.setLearners(newLesson, organizationUsers); + lessonService.setStaffMembers(newLesson, staffs); - if (newLesson == null) { - throw new MonitoringServiceException("Lesson for id=" + lessonId - + " is missing. Unable to create class for lesson."); - } - + } else { LessonClass oldLessonClass = newLesson.getLessonClass(); LessonClass newLessonClass = this.createLessonClass(organisation, learnerGroupName, organizationUsers, @@ -738,10 +646,6 @@ if (oldLessonClass != null) { lessonClassDAO.deleteLessonClass(oldLessonClass); } - - } else { - lessonService.setLearners(newLesson, organizationUsers); - lessonService.setStaffMembers(newLesson, staffs); } return newLesson; @@ -756,6 +660,7 @@ * : checks that this user is a staff member for this lesson * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#startLessonOnSchedule(long , Date, User) */ + @Override public void startLessonOnSchedule(long lessonId, Date startDate, Integer userId) { // we get the lesson just created @@ -819,6 +724,7 @@ * @param endDate * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#finishLessonOnSchedule(long , Date , User) */ + @Override public void finishLessonOnSchedule(long lessonId, int scheduledNumberDaysToLessonFinish, Integer userId) { // we get the lesson want to finish Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); @@ -906,6 +812,7 @@ /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#startlesson(long) */ + @Override public void startLesson(long lessonId, Integer userId) { // System.out.println(messageService.getMessage("NO.SUCH.LESSON",new // Object[]{new Long(lessonId)})); @@ -945,7 +852,7 @@ design.setMaxID(newMaxId); designModified = true; } - + activity.setInitialised(Boolean.TRUE); activityDAO.update(activity); } @@ -970,6 +877,7 @@ * activities added during a Live Edit. Returns a new MaxID for the design if needed. If MaxID is returned, update * the design with this new value and save the whole design (as initialiseSystemActivities has changed the design). */ + @Override public Integer startSystemActivity(Activity activity, Integer currentMaxId, Date lessonStartTime, String lessonName) { Integer newMaxId = null; @@ -1019,6 +927,7 @@ * the name lesson incorporating this gate - used for the description of the Quartz job. Optional. * @returns An updated gate, that should be saved by the calling code. */ + @Override public ScheduleGateActivity runGateScheduler(ScheduleGateActivity scheduleGate, Date schedulingStartTime, String lessonName) { @@ -1067,6 +976,7 @@ /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#finishLesson(long) */ + @Override public void finishLesson(long lessonId, Integer userId) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1083,6 +993,7 @@ * @param lessonId * the specified the lesson id. */ + @Override public void archiveLesson(long lessonId, Integer userId) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1102,6 +1013,7 @@ * @param lessonId * the specified the lesson id. */ + @Override public void unarchiveLesson(long lessonId, Integer userId) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1117,6 +1029,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#suspendLesson(long) */ + @Override public void suspendLesson(long lessonId, Integer userId) { Lesson lesson = lessonDAO.getLesson(new Long(lessonId)); checkOwnerOrStaffMember(userId, lesson, "suspend lesson"); @@ -1133,6 +1046,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#unsuspendLesson(long) */ + @Override public void unsuspendLesson(long lessonId, Integer userId) { Lesson lesson = lessonDAO.getLesson(new Long(lessonId)); checkOwnerOrStaffMember(userId, lesson, "unsuspend lesson"); @@ -1205,6 +1119,7 @@ /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#removeLesson(long) */ + @Override public void removeLesson(long lessonId, Integer userId) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1221,6 +1136,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#setLearnerPortfolioAvailable(long, * java.lang.Integer, boolean) */ + @Override public Boolean setLearnerPortfolioAvailable(long lessonId, Integer userId, Boolean learnerExportAvailable) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1240,6 +1156,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#setPresenceAvailable(long, java.lang.Integer, * boolean) */ + @Override public Boolean setPresenceAvailable(long lessonId, Integer userId, Boolean presenceAvailable) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1256,6 +1173,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#setPresenceImAvailable(long, * java.lang.Integer, boolean) */ + @Override public Boolean setPresenceImAvailable(long lessonId, Integer userId, Boolean presenceImAvailable) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1272,6 +1190,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#setLiveEditEnabled(long, java.lang.Integer, * boolean) */ + @Override public Boolean setLiveEditEnabled(long lessonId, Integer userId, Boolean liveEditEnabled) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1287,6 +1206,7 @@ /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#openGate(org.lamsfoundation.lams.learningdesign.GateActivity) */ + @Override public GateActivity openGate(Long gateId) { GateActivity gate = (GateActivity) activityDAO.getActivityByActivityId(gateId); if (gate != null) { @@ -1313,6 +1233,7 @@ return gate; } + @Override public Boolean openTimeChart(long lessonId, Integer userId) { Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); if (requestedLesson == null) { @@ -1324,6 +1245,7 @@ return true; } + @Override public GateActivity openGateForSingleUser(Long gateId, Integer userId) { GateActivity gate = (GateActivity) activityDAO.getActivityByActivityId(gateId); if ((gate != null) && (userId != null) && (userId >= 0)) { @@ -1337,6 +1259,7 @@ /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#closeGate(org.lamsfoundation.lams.learningdesign.GateActivity) */ + @Override public GateActivity closeGate(Long gateId) { GateActivity gate = (GateActivity) activityDAO.getActivityByActivityId(gateId); gate.setGateOpen(new Boolean(false)); @@ -1348,6 +1271,7 @@ * @throws LamsToolServiceException * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#forceCompleteLessonByUser(Integer,long,long) */ + @Override public String forceCompleteActivitiesByUser(Integer learnerId, Integer requesterId, long lessonId, Long activityId) { Lesson lesson = lessonDAO.getLesson(new Long(lessonId)); checkOwnerOrStaffMember(requesterId, lesson, "force complete"); @@ -1638,8 +1562,7 @@ for (Activity childActivity : (Set) ((ComplexActivity) currentActivity).getActivities()) { uncompleteActivities.add(childActivity); if (childActivity.isComplexActivity()) { - uncompleteActivities.addAll((Set) ((ComplexActivity) childActivity) - .getActivities()); + uncompleteActivities.addAll(((ComplexActivity) childActivity).getActivities()); } // mark the activity to be "unbranched" @@ -1757,6 +1680,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getLessonDetails(java.lang.Long) */ + @Override public String getLessonDetails(Long lessonID, Integer userID) throws IOException { Lesson lesson = lessonDAO.getLesson(new Long(lessonID)); checkOwnerOrStaffMember(userID, lesson, "get lesson deatils"); @@ -1803,6 +1727,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getLessonLearners(java.lang.Long) */ + @Override public String getLessonLearners(Long lessonID, Integer userID) throws IOException { Lesson lesson = lessonDAO.getLesson(lessonID); checkOwnerOrStaffMember(userID, lesson, "get lesson learners"); @@ -1828,6 +1753,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getLessonStaff(java.lang.Long) */ + @Override public String getLessonStaff(Long lessonID, Integer userID) throws IOException { Lesson lesson = lessonDAO.getLesson(lessonID); checkOwnerOrStaffMember(userID, lesson, "get lesson staff"); @@ -1848,6 +1774,7 @@ return flashMessage.serializeMessage(); } + @Override public Collection getUsersByEmailNotificationSearchType(int searchType, Long lessonId, String[] lessonIds, Long activityId, Integer xDaystoFinish, Integer orgId) { @@ -1959,6 +1886,7 @@ } Set sortedUsers = new TreeSet(new Comparator() { + @Override public int compare(User usr0, User usr1) { return ((usr0.getFirstName() + usr0.getLastName() + usr0.getLogin()).compareTo(usr1.getFirstName() + usr1.getLastName() + usr1.getLogin())); @@ -1992,6 +1920,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getLearningDesignDetails(java.lang.Long) */ + @Override public String getLearningDesignDetails(Long lessonID) throws IOException { Lesson lesson = lessonDAO.getLesson(lessonID); return authoringService.getLearningDesignDetails(lesson.getLearningDesign().getLearningDesignId(), ""); @@ -2000,6 +1929,7 @@ /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getActivityById(Long) */ + @Override public Activity getActivityById(Long activityId) { return activityDAO.getActivityByActivityId(activityId); } @@ -2010,6 +1940,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getAllLearnersProgress(java.lang.Long, * java.lang.Integer) */ + @Override public String getAllLearnersProgress(Long lessonID, Integer userID, Boolean completedDataOnly) throws IOException { Lesson lesson = lessonDAO.getLesson(lessonID); FlashMessage flashMessage; @@ -2034,7 +1965,8 @@ } return flashMessage.serializeMessage(); } - + + @Override public String getAllCompletedActivities(Long lessonID, Long learnerID, Integer userID) throws IOException { Lesson lesson = lessonDAO.getLesson(lessonID); FlashMessage flashMessage; @@ -2058,17 +1990,19 @@ } return flashMessage.serializeMessage(); } - + /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getActivityById(Long, Class) */ + @Override public Activity getActivityById(Long activityId, Class clasz) { return activityDAO.getActivityByActivityId(activityId, clasz); } /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getGroupingActivityById(Long) */ + @Override public GroupingActivity getGroupingActivityById(Long activityID) { Activity activity = getActivityById(activityID); if (activity == null) { @@ -2085,6 +2019,7 @@ return (GroupingActivity) activity; } + @Override public List getAllContributeActivityDTO(Long lessonID) { List result = null; Lesson lesson = lessonDAO.getLesson(lessonID); @@ -2103,6 +2038,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getLearnerActivityURL(java.lang.Long, * java.lang.Integer) */ + @Override public String getLearnerActivityURL(Long lessonID, Long activityID, Integer learnerUserID, Integer requestingUserId) throws IOException, LamsToolServiceException { Lesson lesson = lessonDAO.getLesson(lessonID); @@ -2133,6 +2069,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getActivityDefineLaterURL(java.lang.Long) */ + @Override public String getActivityDefineLaterURL(Long lessonID, Long activityID, Integer userID) throws IOException, LamsToolServiceException { Lesson lesson = lessonDAO.getLesson(lessonID); @@ -2156,6 +2093,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getActivityMonitorURL(java.lang.Long) */ + @Override public String getActivityMonitorURL(Long lessonID, Long activityID, String contentFolderID, Integer userID) throws IOException, LamsToolServiceException { Lesson lesson = lessonDAO.getLesson(lessonID); @@ -2179,6 +2117,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#moveLesson(java.lang.Long, java.lang.Integer, * java.lang.Integer) */ + @Override public String moveLesson(Long lessonID, Integer targetWorkspaceFolderID, Integer userID) throws IOException { Lesson lesson = lessonDAO.getLesson(lessonID); FlashMessage flashMessage; @@ -2212,6 +2151,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#renameLesson(java.lang.Long, java.lang.String, * java.lang.Integer) */ + @Override public String renameLesson(Long lessonID, String newName, Integer userID) throws IOException { Lesson lesson = lessonDAO.getLesson(lessonID); FlashMessage flashMessage; @@ -2236,6 +2176,7 @@ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#checkGateStatus(java.lang.Long, * java.lang.Long) */ + @Override public String checkGateStatus(Long activityID, Long lessonID) throws IOException { FlashMessage flashMessage; GateActivity gate = (GateActivity) activityDAO.getActivityByActivityId(activityID); @@ -2258,6 +2199,7 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#releaseGate(java.lang.Long) */ + @Override public String releaseGate(Long activityID) throws IOException { GateActivity gate = (GateActivity) activityDAO.getActivityByActivityId(activityID); FlashMessage flashMessage; @@ -2279,6 +2221,7 @@ * @throws LessonServiceException * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#performChosenGrouping(GroupingActivity,java.util.List) */ + @Override public void performChosenGrouping(GroupingActivity groupingActivity, List groups) throws LessonServiceException { Grouping grouping = groupingActivity.getCreateGrouping(); @@ -2292,6 +2235,7 @@ // try to sorted group list by orderID. Iterator iter = groups.iterator(); Map sortedMap = new TreeMap(new Comparator() { + @Override public int compare(Object arg0, Object arg1) { return ((Long) arg0).compareTo((Long) arg1); } @@ -2435,6 +2379,7 @@ * @throws LamsToolServiceException * the exception when lams is talking to tool. */ + @Override public void initToolSessionIfSuitable(ToolActivity activity, Lesson lesson) { if (activity.getApplyGrouping().equals(Boolean.FALSE) && (activity.getParentBranch() == null)) { activity.setToolSessions(new HashSet()); @@ -2530,6 +2475,7 @@ * @seeorg.lamsfoundation.lams.preview.service.IMonitoringService# * createPreviewClassForLesson(long, long) */ + @Override public Lesson createPreviewClassForLesson(int userID, long lessonID) throws UserAccessDeniedException { User user = (User) baseDAO.find(User.class, userID); @@ -2553,6 +2499,7 @@ * integrity if it is done to any other type of lesson. See removeLesson() for hiding lessons from a teacher's view * without removing them from the database. TODO remove the related tool data. */ + @Override public void deletePreviewLesson(long lessonID) { Lesson lesson = lessonDAO.getLesson(new Long(lessonID)); deletePreviewLesson(lesson); @@ -2595,6 +2542,7 @@ * @seeorg.lamsfoundation.lams.preview.service.IMonitoringService# * deleteAllOldPreviewLessons(int) */ + @Override public int deleteAllOldPreviewLessons() { int numDays = Configuration.getAsInt(ConfigurationKeys.PREVIEW_CLEANUP_NUM_DAYS); @@ -2610,7 +2558,7 @@ int numDeleted = 0; // calculate comparison date - long newestDateToKeep = System.currentTimeMillis() - numDays * MonitoringService.numMilliSecondsInADay; + long newestDateToKeep = System.currentTimeMillis() - (numDays * MonitoringService.numMilliSecondsInADay); Date date = new Date(newestDateToKeep); // convert data to UTC MonitoringService.log.info("Deleting all preview lessons before " + date.toString() + " (server time) (" @@ -2649,6 +2597,7 @@ * true/false for GroupingActivities, always false for non-GroupingActivities * @return Sorted set of Users, sorted by surname */ + @Override public SortedSet getClassMembersNotGrouped(Long lessonID, Long activityID, boolean useCreateGrouping) { Activity activity = getActivityById(activityID); Grouping grouping = getGroupingForActivity(activity, useCreateGrouping, "getClassMembersNotGrouped"); @@ -2740,6 +2689,7 @@ * @throws LessonServiceException * , MonitoringServiceException */ + @Override public Group addGroup(Long activityID, String name, boolean overrideMaxNumberOfGroups) throws LessonServiceException, MonitoringServiceException { Activity activity = getActivityById(activityID); @@ -2790,6 +2740,7 @@ * group name * @throws LessonServiceException **/ + @Override public void removeGroup(Long activityID, Long groupId) throws LessonServiceException { Activity activity = getActivityById(activityID); Grouping grouping = getGroupingForActivity(activity, true, "removeGroup"); @@ -2799,6 +2750,7 @@ /** * Add learners to a group. Doesn't necessarily check if the user is already in another group. */ + @Override public void addUsersToGroup(Long activityID, Long groupId, String learnerIDs[]) throws LessonServiceException { Activity activity = getActivityById(activityID); Grouping grouping = getGroupingForActivity(activity, true, "addUsersToGroup"); @@ -2839,6 +2791,7 @@ * @param learnerIDs * the IDS of the learners to be added. */ + @Override public void addUsersToBranch(Long sequenceActivityID, String learnerIDs[]) throws LessonServiceException { SequenceActivity branch = (SequenceActivity) getActivityById(sequenceActivityID); @@ -2892,6 +2845,7 @@ * * @throws LessonServiceException */ + @Override public void removeUsersFromGroup(Long activityID, Long groupId, String learnerIDs[]) throws LessonServiceException { Activity activity = getActivityById(activityID); Grouping grouping = getGroupingForActivity(activity, true, "removeUsersFromGroup"); @@ -2908,6 +2862,7 @@ * @param learnerIDs * the IDS of the learners to be added. */ + @Override public void removeUsersFromBranch(Long sequenceActivityID, String learnerIDs[]) throws LessonServiceException { SequenceActivity branch = (SequenceActivity) getActivityById(sequenceActivityID); @@ -2939,6 +2894,7 @@ * @param learnerIDs * the IDS of the learners to be added. */ + @Override public void addGroupToBranch(Long sequenceActivityID, String groupIDs[]) throws LessonServiceException { SequenceActivity branch = (SequenceActivity) getActivityById(sequenceActivityID); @@ -2996,6 +2952,7 @@ * @param learnerIDs * the IDS of the learners to be added. */ + @Override public void removeGroupFromBranch(Long sequenceActivityID, String groupIDs[]) throws LessonServiceException { SequenceActivity branch = (SequenceActivity) getActivityById(sequenceActivityID); @@ -3050,6 +3007,7 @@ * Has anyone started this branch / branching activity ? Irrespective of the groups. Used to determine if a branch * mapping can be removed. */ + @Override public boolean isActivityAttempted(Activity activity) { Integer numAttempted = lessonService.getCountLearnersHaveAttemptedActivity(activity); if (MonitoringService.log.isDebugEnabled()) { @@ -3065,6 +3023,7 @@ * @param branchingActivityID * Activity id of the branchingActivity */ + @Override public SortedSet getGroupsNotAssignedToBranch(Long branchingActivityID) throws LessonServiceException { BranchingActivity branchingActivity = (BranchingActivity) getActivityById(branchingActivityID); @@ -3095,23 +3054,27 @@ * give the users in all tool sessions for an activity (if it is a tool activity) or it will give all the users who * have attempted an activity that doesn't have any tool sessions, i.e. system activities such as branching. */ + @Override public List getLearnersHaveAttemptedActivity(Activity activity) throws LessonServiceException { return lessonService.getLearnersHaveAttemptedActivity(activity); } + @Override public LearnerProgress getLearnerProgress(Integer learnerId, Long lessonId) { return learnerService.getProgress(learnerId, lessonId); } /** * Set a group's name */ + @Override public void setGroupName(Long groupID, String name) { Group group = groupDAO.getGroupById(groupID); group.setGroupName(name); groupDAO.saveGroup(group); } + @Override public Organisation getOrganisation(Integer organisationId) { return (Organisation) baseDAO.find(Organisation.class, organisationId); } @@ -3129,6 +3092,7 @@ * @return number of lessons created. * @throws MonitoringServiceException */ + @Override public int cloneLessons(String[] lessonIds, Boolean addAllStaff, Boolean addAllLearners, String[] staffIds, String[] learnerIds, Organisation group) throws MonitoringServiceException { int result = 0; Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java,v diff -u -r1.107 -r1.108 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java 27 Dec 2013 13:40:27 -0000 1.107 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java 16 Jan 2014 16:48:19 -0000 1.108 @@ -86,7 +86,6 @@ import org.lamsfoundation.lams.util.wddx.FlashMessage; import org.lamsfoundation.lams.util.wddx.WDDXTAGS; import org.lamsfoundation.lams.web.action.LamsDispatchAction; -import org.lamsfoundation.lams.web.servlet.AbstractStoreWDDXPacketServlet; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.web.context.WebApplicationContext; @@ -180,7 +179,7 @@ /** * Initializes a lesson for specific learning design with the given lesson title and lesson description. If - * initialization is successed, this method will return a WDDX message which includes the ID of new lesson. + * initialization is successful, this method will the ID of new lesson. * * Currently used only in TestHarness. */ @@ -189,36 +188,27 @@ IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet() .getServletContext()); - FlashMessage flashMessage = null; - try { - String title = WebUtil.readStrParam(request, "lessonName"); - if (title == null) { - title = "lesson"; - } - String desc = WebUtil.readStrParam(request, "lessonDescription", true); - if (desc == null) { - desc = "description"; - } - Integer organisationId = WebUtil.readIntParam(request, "organisationID", true); - long ldId = WebUtil.readLongParam(request, AttributeNames.PARAM_LEARNINGDESIGN_ID); - Boolean learnerExportAvailable = WebUtil.readBooleanParam(request, "learnerExportPortfolio", false); - Boolean learnerPresenceAvailable = WebUtil.readBooleanParam(request, "learnerPresenceAvailable", false); - Boolean learnerImAvailable = WebUtil.readBooleanParam(request, "learnerImAvailable", false); - Boolean liveEditEnabled = WebUtil.readBooleanParam(request, "liveEditEnabled", false); - Lesson newLesson = monitoringService.initializeLesson(title, desc, ldId, organisationId, getUserId(), null, - Boolean.FALSE, Boolean.FALSE, learnerExportAvailable, learnerPresenceAvailable, learnerImAvailable, - liveEditEnabled, Boolean.FALSE, null, null); - - flashMessage = new FlashMessage("initializeLesson", newLesson.getLessonId()); - } catch (Exception e) { - flashMessage = handleException(e, "initializeLesson", monitoringService); + String title = WebUtil.readStrParam(request, "lessonName"); + if (title == null) { + title = "lesson"; } + String desc = WebUtil.readStrParam(request, "lessonDescription", true); + if (desc == null) { + desc = "description"; + } + Integer organisationId = WebUtil.readIntParam(request, "organisationID", true); + long ldId = WebUtil.readLongParam(request, AttributeNames.PARAM_LEARNINGDESIGN_ID); + Boolean learnerExportAvailable = WebUtil.readBooleanParam(request, "learnerExportPortfolio", false); + Boolean learnerPresenceAvailable = WebUtil.readBooleanParam(request, "learnerPresenceAvailable", false); + Boolean learnerImAvailable = WebUtil.readBooleanParam(request, "learnerImAvailable", false); + Boolean liveEditEnabled = WebUtil.readBooleanParam(request, "liveEditEnabled", false); + Lesson newLesson = monitoringService.initializeLesson(title, desc, ldId, organisationId, getUserId(), null, + Boolean.FALSE, Boolean.FALSE, learnerExportAvailable, learnerPresenceAvailable, learnerImAvailable, + liveEditEnabled, Boolean.FALSE, null, null); - String message = flashMessage.serializeMessage(); - PrintWriter writer = response.getWriter(); - writer.println(message); + writer.println(newLesson.getLessonId()); return null; } @@ -257,13 +247,23 @@ public ActionForward createLessonClass(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + int organisationId = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID); + Integer userID = WebUtil.readIntParam(request, AttributeNames.PARAM_USER_ID); + long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet() .getServletContext()); + IUserManagementService userManagementService = MonitoringServiceProxy.getUserManagementService(getServlet() + .getServletContext()); - Integer userID = WebUtil.readIntParam(request, AttributeNames.PARAM_USER_ID); - String lessonPacket = AbstractStoreWDDXPacketServlet.getBody(request); + Organisation organisation = (Organisation) userManagementService.findById(Organisation.class, organisationId); + String learnerGroupName = organisation.getName() + " learners"; + String staffGroupName = organisation.getName() + " staff"; + List learners = parseUserList(request, "learners"); + List staff = parseUserList(request, "monitors"); - monitoringService.createLessonClassForLessonWDDX(userID, lessonPacket); + monitoringService.createLessonClassForLesson(lessonId, organisation, learnerGroupName, learners, + staffGroupName, staff, userID); return null; }