Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonJoinServlet.java =================================================================== diff -u -r68d2988cca350af15ba4087814f74e1527a71997 -red0cc400ab00e2c188be1f4227532770fec5a6e7 --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonJoinServlet.java (.../LessonJoinServlet.java) (revision 68d2988cca350af15ba4087814f74e1527a71997) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonJoinServlet.java (.../LessonJoinServlet.java) (revision ed0cc400ab00e2c188be1f4227532770fec5a6e7) @@ -285,7 +285,7 @@ ownerUserId = ld.getUser().getUserId(); learnerGroupName = org.getName() + " Learners"; staffGroupName = org.getName() + " Staff"; - Vector userDTOs = userService.getUsersFromOrganisationByRole(orgId, Role.MONITOR, false); + Vector userDTOs = userService.getUsersFromOrganisationByRole(orgId, Role.MONITOR, false, false); staffList = getUsersFromDTOs(userDTOs); } Lesson lesson = monitoringService.initializeLesson(lessonName, lessonDescription, learnerExportAvailable, Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java =================================================================== diff -u -r0f8935bc85059df40ad07b28c5b9b2ed844fc74d -red0cc400ab00e2c188be1f4227532770fec5a6e7 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 0f8935bc85059df40ad07b28c5b9b2ed844fc74d) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision ed0cc400ab00e2c188be1f4227532770fec5a6e7) @@ -118,13 +118,13 @@ */ public void setAuthoringService(IAuthoringService authoringService) { this.authoringService = authoringService; - } + } /** * @param repositoryService The repositoryService to set. */ public void setRepositoryService(IRepositoryService repositoryService) { this.repositoryService = repositoryService; - } + } /** * @param learningDesignDAO The learningDesignDAO to set. */ @@ -1458,7 +1458,7 @@ */ public Vector getUsersFromOrganisationByRole(Integer organisationID, String roleName) { - return (Vector) userMgmtService.getUsersFromOrganisationByRole(organisationID, roleName, true); + return (Vector) userMgmtService.getUsersFromOrganisationByRole(organisationID, roleName, true, false); } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r4ffd949a4e68634b24fdb6150064ec812350ed71 -red0cc400ab00e2c188be1f4227532770fec5a6e7 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 4ffd949a4e68634b24fdb6150064ec812350ed71) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision ed0cc400ab00e2c188be1f4227532770fec5a6e7) @@ -218,9 +218,10 @@ * @param organisationID * @param roleName * @param isFlashCall + * @param getUser * @return UserFlashDTO objects (in a Vector to suit WDDX) */ - public Vector getUsersFromOrganisationByRole(Integer organisationID, String roleName, boolean isFlashCall); + public Vector getUsersFromOrganisationByRole(Integer organisationID, String roleName, boolean isFlashCall, boolean getUser); public Organisation getRootOrganisation(); Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -rf8a6d5c288bcb3143758e52c2e7017d6d73692b7 -red0cc400ab00e2c188be1f4227532770fec5a6e7 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision f8a6d5c288bcb3143758e52c2e7017d6d73692b7) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision ed0cc400ab00e2c188be1f4227532770fec5a6e7) @@ -366,10 +366,12 @@ * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUsersFromOrganisationByRole(java.lang.Integer, * java.lang.String) */ - public Vector getUsersFromOrganisationByRole(Integer organisationID, String roleName, boolean isFlashCall) { + public Vector getUsersFromOrganisationByRole(Integer organisationID, String roleName, boolean isFlashCall, boolean getUser) { Vector users = null; if (isFlashCall) users = new Vector(); + else if(getUser) + users = new Vector(); else users = new Vector(); @@ -385,10 +387,12 @@ UserOrganisationRole userOrganisationRole = (UserOrganisationRole) userOrganisationRoleIterator .next(); if (userOrganisationRole.getRole().getName().equals(roleName)) - if (isFlashCall) - users.add(userOrganisation.getUser().getUserFlashDTO()); + if (isFlashCall && !getUser) + users.add(userOrganisation.getUser().getUserFlashDTO()); + else if(getUser) + users.add(userOrganisation.getUser()); else - users.add(userOrganisation.getUser().getUserDTO()); + users.add(userOrganisation.getUser().getUserDTO()); } } } @@ -534,7 +538,7 @@ // get course managers and give them staff role in this new // class Vector managers = getUsersFromOrganisationByRole(pOrg.getOrganisationId(), Role.GROUP_MANAGER, - false); + false, false); for (UserDTO m : managers) { User user = (User) findById(User.class, m.getUserID()); UserOrganisation uo = new UserOrganisation(user, organisation); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -rc18e988af13e3ade386f0c2b76e84e5ea44dbd83 -red0cc400ab00e2c188be1f4227532770fec5a6e7 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision c18e988af13e3ade386f0c2b76e84e5ea44dbd83) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision ed0cc400ab00e2c188be1f4227532770fec5a6e7) @@ -81,10 +81,12 @@ import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.Workspace; import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.usermanagement.util.LastNameAlphabeticComparator; @@ -518,29 +520,35 @@ 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); - if (learners == null) { - learners = new LinkedList(); - } - if (staffs == null) { - staffs = new LinkedList(); - } - 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 @@ -549,8 +557,15 @@ Iterator iter = learners.iterator(); while (iter.hasNext()) { try { - int id = ((Double) iter.next()).intValue(); - learnerList.add((User) baseDAO.find(User.class, id)); + 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; @@ -560,6 +575,7 @@ List staffList = new LinkedList(); staffList.add(creator); iter = staffs.iterator(); + while (iter.hasNext()) { try { int id = ((Double) iter.next()).intValue();