Index: lams_build/lib/lams/lams-central.jar =================================================================== diff -u -r1454b2fd27486dd14b1ccf172b96df61a0b0d355 -rff6228b576d4e7056c01ba7d7d8a109a5b738838 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java =================================================================== diff -u -rcea798b3457c895676bf1cc5ebb3013eee53f505 -rff6228b576d4e7056c01ba7d7d8a109a5b738838 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision cea798b3457c895676bf1cc5ebb3013eee53f505) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision ff6228b576d4e7056c01ba7d7d8a109a5b738838) @@ -318,14 +318,18 @@ public String getWorkspace(Integer userID) throws IOException; /** - * Retrieves the list of organisations in which the user has the specified role. - * in WDDX format + * Retrieves a tree of organisations in which the user has the specified role. + * If courseID is not set, then returns all organisations + * If courseID only is set, then return course organisationDTO and its children as its nodes + * If courseID && classID(s) are set, then course organisationDTO and its the nominated class + * organisationDTOs - most cases will have only single classID * @param userID * @param roles - * @param organisationID if null returns all organisations, if set returns child organisations for this organisation - * @return + * @param courseID + * @param classID + * @return organisationDTO hierarchy, in WDDX format. */ - public String getOrganisationsByUserRole(Integer userID, List roleNames, Integer organisationId) throws IOException; + public String getOrganisationsByUserRole(Integer userID, List roleNames, Integer courseId, List restrictToClassIds) throws IOException; /** * Returns the users within the Organisation with organisationID Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java =================================================================== diff -u -rcea798b3457c895676bf1cc5ebb3013eee53f505 -rff6228b576d4e7056c01ba7d7d8a109a5b738838 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision cea798b3457c895676bf1cc5ebb3013eee53f505) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision ff6228b576d4e7056c01ba7d7d8a109a5b738838) @@ -1383,19 +1383,19 @@ } /** - * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#getOrganisationsByUserRole(Integer, String) + * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#getOrganisationsByUserRole(Integer, List, Integer, List) */ - public String getOrganisationsByUserRole(Integer userID, List roleNames, Integer organisationId) throws IOException + public String getOrganisationsByUserRole(Integer userID, List roleNames, Integer courseId, List restrictToClassIds) throws IOException { User user = userDAO.getUserById(userID); if (user!=null) { - if ( organisationId == null ) { + if ( courseId == null ) { flashMessage = new FlashMessage( MSG_KEY_ORG_BY_ROLE, userMgmtService.getOrganisationsForUserByRole(user, roleNames)); } else { flashMessage = new FlashMessage( - MSG_KEY_ORG_BY_ROLE, userMgmtService.getOrganisationsForUserByRole(user, roleNames, organisationId)); + MSG_KEY_ORG_BY_ROLE, userMgmtService.getOrganisationsForUserByRole(user, roleNames, courseId, restrictToClassIds)); } } else flashMessage = FlashMessage.getNoSuchUserExists( Index: lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java =================================================================== diff -u -rcea798b3457c895676bf1cc5ebb3013eee53f505 -rff6228b576d4e7056c01ba7d7d8a109a5b738838 --- lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision cea798b3457c895676bf1cc5ebb3013eee53f505) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision ff6228b576d4e7056c01ba7d7d8a109a5b738838) @@ -33,6 +33,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; @@ -514,14 +516,33 @@ roleList.add(role); } - Integer orgId = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID,true); String wddxPacket = null; + Integer courseId = null; + String[] classIdStrings = null; try { + courseId = WebUtil.readIntParam(request, AttributeNames.PARAM_COURSE_ID,true); + classIdStrings = request.getParameterValues(AttributeNames.PARAM_CLASS_ID); + ArrayList classIds = new ArrayList(); + if ( classIdStrings != null ) { + for ( String str: classIdStrings) { + // any number format exception will be caught by the general catch + int classId = Integer.parseInt(str); + classIds.add(new Integer(classId)); + } + } IWorkspaceManagementService workspaceManagementService = getWorkspaceManagementService(); - wddxPacket = workspaceManagementService.getOrganisationsByUserRole(userID, roleList,orgId); + wddxPacket = workspaceManagementService.getOrganisationsByUserRole(userID, roleList,courseId,classIds); + } catch (Exception e) { - log.error("getOrganisationsByUserRole: Exception occured. userID "+userID+" role "+roles.toString(), e); + String error = new ToStringBuilder(this) + .append("") + .append("userID",userID) + .append("roles",roles) + .append("courseId",courseId) + .append("classIdStrings",classIdStrings) + .toString(); + log.error("getOrganisationsByUserRole: Exception occured. Request data "+error, e); FlashMessage flashMessage = FlashMessage.getExceptionOccured(IWorkspaceManagementService.MSG_KEY_ORG_BY_ROLE, e.getMessage()); wddxPacket = flashMessage.serializeMessage(); } Index: lams_central/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u -r440554bb4a9a414c6e3e676a93de72de3298951c -rff6228b576d4e7056c01ba7d7d8a109a5b738838 --- lams_central/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 440554bb4a9a414c6e3e676a93de72de3298951c) +++ lams_central/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision ff6228b576d4e7056c01ba7d7d8a109a5b738838) @@ -14,13 +14,13 @@ - +