Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u -r4f284603a74199f14d9eb0d5e1cc04b89755ba31 -r8f41081e2335cb612bb70ce0d2b2923a7c65e914 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 4f284603a74199f14d9eb0d5e1cc04b89755ba31) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 8f41081e2335cb612bb70ce0d2b2923a7c65e914) @@ -118,6 +118,32 @@ Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, 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. * Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r4f284603a74199f14d9eb0d5e1cc04b89755ba31 -r8f41081e2335cb612bb70ce0d2b2923a7c65e914 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 4f284603a74199f14d9eb0d5e1cc04b89755ba31) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 8f41081e2335cb612bb70ce0d2b2923a7c65e914) @@ -572,6 +572,102 @@ } /** + * @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). Fisheye: Tag 4f284603a74199f14d9eb0d5e1cc04b89755ba31 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/CreateLessonServlet.java'. Fisheye: No comparison available. Pass `N' to diff?