Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml =================================================================== diff -u -r36855148d0e3028a6f5651d0ce51aa0d1bf8de1a -re803c94086cc8f1ae62ffd49a1a8f9c194639db1 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 36855148d0e3028a6f5651d0ce51aa0d1bf8de1a) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision e803c94086cc8f1ae62ffd49a1a8f9c194639db1) @@ -222,15 +222,15 @@ - + - + - + Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml =================================================================== diff -u -r36855148d0e3028a6f5651d0ce51aa0d1bf8de1a -re803c94086cc8f1ae62ffd49a1a8f9c194639db1 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml (.../Group.hbm.xml) (revision 36855148d0e3028a6f5651d0ce51aa0d1bf8de1a) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml (.../Group.hbm.xml) (revision e803c94086cc8f1ae62ffd49a1a8f9c194639db1) @@ -74,7 +74,7 @@ - + - + - + - + Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Organisation.hbm.xml =================================================================== diff -u -r36855148d0e3028a6f5651d0ce51aa0d1bf8de1a -re803c94086cc8f1ae62ffd49a1a8f9c194639db1 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Organisation.hbm.xml (.../Organisation.hbm.xml) (revision 36855148d0e3028a6f5651d0ce51aa0d1bf8de1a) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Organisation.hbm.xml (.../Organisation.hbm.xml) (revision e803c94086cc8f1ae62ffd49a1a8f9c194639db1) @@ -226,7 +226,7 @@ - + @hibernate.set lazy="true" inverse="true" cascade="none" Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Role.hbm.xml =================================================================== diff -u -r36855148d0e3028a6f5651d0ce51aa0d1bf8de1a -re803c94086cc8f1ae62ffd49a1a8f9c194639db1 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Role.hbm.xml (.../Role.hbm.xml) (revision 36855148d0e3028a6f5651d0ce51aa0d1bf8de1a) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Role.hbm.xml (.../Role.hbm.xml) (revision e803c94086cc8f1ae62ffd49a1a8f9c194639db1) @@ -69,33 +69,6 @@ - - - - @hibernate.set - lazy="true" - inverse="true" - cascade="delete-orphan" - - @hibernate.collection-key - column="role_id" - - @hibernate.collection-one-to-many - class="org.lamsfoundation.lams.usermanagement.UserOrganisationRole" - - - - - - - Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/Role.java =================================================================== diff -u -ree6a40ada6ae3bea48ecdedc5cad0ce3e7a3f3d8 -re803c94086cc8f1ae62ffd49a1a8f9c194639db1 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/Role.java (.../Role.java) (revision ee6a40ada6ae3bea48ecdedc5cad0ce3e7a3f3d8) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/Role.java (.../Role.java) (revision e803c94086cc8f1ae62ffd49a1a8f9c194639db1) @@ -24,47 +24,42 @@ package org.lamsfoundation.lams.usermanagement; import java.io.Serializable; -import java.util.HashSet; import java.util.Set; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; -public class Role implements Serializable,Comparable{ +public class Role implements Serializable, Comparable { - public static final String LEARNER = "LEARNER"; - - public static final String MONITOR = "MONITOR"; - - public static final String AUTHOR = "AUTHOR"; - - public static final String AUTHOR_ADMIN = "AUTHOR ADMIN"; - - public static final String GROUP_MANAGER = "GROUP MANAGER"; - - public static final String GROUP_ADMIN = "GROUP ADMIN"; - - public static final String SYSADMIN = "SYSADMIN";//for future use - - /** - * Added by Manpreet Minhas - * *********************** - * final static variables indicating the various - * roles available for a given user ar per the - * database. New roles may be added/deleted in the - * near future - * - ************************************************************/ - public static final Integer ROLE_SYSADMIN =new Integer(1); - public static final Integer ROLE_GROUP_MANAGER =new Integer(2); - public static final Integer ROLE_AUTHOR =new Integer(3); - public static final Integer ROLE_MONITOR =new Integer(4); - public static final Integer ROLE_LEARNER =new Integer(5); - public static final Integer ROLE_GROUP_ADMIN =new Integer(6); - public static final Integer ROLE_AUTHOR_ADMIN =new Integer(7); - /***********************************************************/ - + public static final String LEARNER = "LEARNER"; + + public static final String MONITOR = "MONITOR"; + + public static final String AUTHOR = "AUTHOR"; + + public static final String AUTHOR_ADMIN = "AUTHOR ADMIN"; + + public static final String GROUP_MANAGER = "GROUP MANAGER"; + + public static final String GROUP_ADMIN = "GROUP ADMIN"; + + public static final String SYSADMIN = "SYSADMIN";// for future use + + /** + * Added by Manpreet Minhas *********************** final static variables indicating the various roles available + * for a given user ar per the database. New roles may be added/deleted in the near future + * + ************************************************************/ + public static final Integer ROLE_SYSADMIN = new Integer(1); + public static final Integer ROLE_GROUP_MANAGER = new Integer(2); + public static final Integer ROLE_AUTHOR = new Integer(3); + public static final Integer ROLE_MONITOR = new Integer(4); + public static final Integer ROLE_LEARNER = new Integer(5); + public static final Integer ROLE_GROUP_ADMIN = new Integer(6); + public static final Integer ROLE_AUTHOR_ADMIN = new Integer(7); + /***********************************************************/ + /** identifier field */ private Integer roleId; @@ -75,16 +70,12 @@ private String description; /** persistent field */ - private Set userOrganisationRoles; - - /** persistent field */ private Set rolePrivileges; /** full constructor */ - public Role(String name, String description, Set userOrganisationRoles) { - this.name = name; - this.description = description; - this.userOrganisationRoles = userOrganisationRoles; + public Role(String name, String description) { + this.name = name; + this.description = description; } /** default constructor */ @@ -93,99 +84,87 @@ /** minimal constructor */ public Role(String name, Set userOrganisationRoles) { - this.name = name; - this.userOrganisationRoles = userOrganisationRoles; + this.name = name; } public Integer getRoleId() { - return this.roleId; + return this.roleId; } public void setRoleId(Integer roleId) { - this.roleId = roleId; + this.roleId = roleId; } public String getName() { - return this.name; + return this.name; } public void setName(String name) { - this.name = name; + this.name = name; } public String getDescription() { - return this.description; + return this.description; } public void setDescription(String description) { - this.description = description; + this.description = description; } - public Set getUserOrganisationRoles() { - return this.userOrganisationRoles; + public Set getRolePrivileges() { + return rolePrivileges; } - public void setUserOrganisationRoles(Set userOrganisationRoles) { - this.userOrganisationRoles = userOrganisationRoles; + public void setRolePrivileges(Set rolePrivileges) { + this.rolePrivileges = rolePrivileges; } - public Set getRolePrivileges() { - return rolePrivileges; - } - - public void setRolePrivileges(Set rolePrivileges) { - this.rolePrivileges = rolePrivileges; - } - - public void addUserOrganisationRole(UserOrganisationRole userOrganisationRole){ - if(userOrganisationRoles==null) - userOrganisationRoles = new HashSet(); - userOrganisationRoles.add(userOrganisationRole); - } + @Override public String toString() { - return new ToStringBuilder(this) - .append("roleId", getRoleId()) - .toString(); + return new ToStringBuilder(this).append("roleId", getRoleId()).toString(); } + @Override public boolean equals(Object other) { - if ( !(other instanceof Role) ) return false; - Role castOther = (Role) other; - return new EqualsBuilder() - .append(this.getRoleId(), castOther.getRoleId()) - .isEquals(); + if (!(other instanceof Role)) { + return false; + } + Role castOther = (Role) other; + return new EqualsBuilder().append(this.getRoleId(), castOther.getRoleId()).isEquals(); } - - public int compareTo(Object role){ - Role r = (Role)role; - return name.compareTo(r.getName()); + + @Override + public int compareTo(Object role) { + Role r = (Role) role; + return name.compareTo(r.getName()); } + @Override public int hashCode() { - return new HashCodeBuilder() - .append(getRoleId()) - .toHashCode(); + return new HashCodeBuilder().append(getRoleId()).toHashCode(); } - public boolean isAuthor(){ - return this.roleId.equals(ROLE_AUTHOR); + + public boolean isAuthor() { + return this.roleId.equals(Role.ROLE_AUTHOR); } - public boolean isGroupManager(){ - return this.roleId.equals(ROLE_GROUP_MANAGER); + + public boolean isGroupManager() { + return this.roleId.equals(Role.ROLE_GROUP_MANAGER); } - - public boolean isGroupAdmin(){ - return this.roleId.equals(ROLE_GROUP_ADMIN); + + public boolean isGroupAdmin() { + return this.roleId.equals(Role.ROLE_GROUP_ADMIN); } - - public boolean isMonitor(){ - return this.roleId.equals(ROLE_MONITOR); + + public boolean isMonitor() { + return this.roleId.equals(Role.ROLE_MONITOR); } - public boolean isSysAdmin(){ - return this.roleId.equals(ROLE_SYSADMIN); + public boolean isSysAdmin() { + return this.roleId.equals(Role.ROLE_SYSADMIN); } - - public boolean isAuthorAdmin(){ - return this.roleId.equals(ROLE_AUTHOR_ADMIN); + + public boolean isAuthorAdmin() { + return this.roleId.equals(Role.ROLE_AUTHOR_ADMIN); } } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -rac293c56d01d08018c14f01dfa851a772dfde23a -re803c94086cc8f1ae62ffd49a1a8f9c194639db1 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision ac293c56d01d08018c14f01dfa851a772dfde23a) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision e803c94086cc8f1ae62ffd49a1a8f9c194639db1) @@ -433,6 +433,7 @@ * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUsersFromOrganisationByRole(java.lang.Integer, * java.lang.String) */ + @SuppressWarnings("unchecked") public Vector getUsersFromOrganisationByRole(Integer organisationID, String roleName, boolean isFlashCall, boolean getUser) { Vector users = null; @@ -444,30 +445,21 @@ users = new Vector(); } - Organisation organisation = (Organisation) baseDAO.find(Organisation.class, organisationID); - if (organisation != null) { - Set uos = organisation.getUserOrganisations(); - if (uos != null) { - Iterator iterator = uos.iterator(); - while (iterator.hasNext()) { - UserOrganisation userOrganisation = (UserOrganisation) iterator.next(); - Iterator userOrganisationRoleIterator = userOrganisation.getUserOrganisationRoles().iterator(); - while (userOrganisationRoleIterator.hasNext()) { - UserOrganisationRole userOrganisationRole = (UserOrganisationRole) userOrganisationRoleIterator - .next(); - if (userOrganisationRole.getRole().getName().equals(roleName)) { - if (isFlashCall && !getUser) { - users.add(userOrganisation.getUser().getUserFlashDTO()); - } else if (getUser) { - users.add(userOrganisation.getUser()); - } else { - users.add(userOrganisation.getUser().getUserDTO()); - } - } - } - } + // it's ugly to put query string here, but it is a convention of this class so let's stick to it for now + String query = "SELECT uo.user FROM UserOrganisation uo INNER JOIN uo.userOrganisationRoles r WHERE uo.organisation.organisationId=" + + organisationID + " AND r.role.name= '" + roleName + "'"; + List queryResult = (List) baseDAO.find(query); + + for (User user : queryResult) { + if (isFlashCall && !getUser) { + users.add(user.getUserFlashDTO()); + } else if (getUser) { + users.add(user); + } else { + users.add(user.getUserDTO()); } } + return users; } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== diff -u -r7fa802b7c320a02bee50983e37f514aa08755436 -re803c94086cc8f1ae62ffd49a1a8f9c194639db1 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 7fa802b7c320a02bee50983e37f514aa08755436) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision e803c94086cc8f1ae62ffd49a1a8f9c194639db1) @@ -21,6 +21,7 @@ * **************************************************************** */ +/* $$Id$$ */ package org.lamsfoundation.lams.monitoring.web; import java.io.IOException; @@ -29,6 +30,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashSet; @@ -276,10 +278,11 @@ .getServletContext()); Organisation organisation = (Organisation) userManagementService.findById(Organisation.class, organisationId); + List allUsers = userManagementService.getUsersFromOrganisation(organisationId); String learnerGroupName = organisation.getName() + " learners"; String staffGroupName = organisation.getName() + " staff"; - List learners = parseUserList(request, "learners"); - List staff = parseUserList(request, "monitors"); + List learners = parseUserList(request, "learners", allUsers); + List staff = parseUserList(request, "monitors", allUsers); monitoringService.createLessonClassForLesson(lessonId, organisation, learnerGroupName, learners, staffGroupName, staff, userID); @@ -331,10 +334,11 @@ Integer userId = getUserId(); User creator = (User) userManagementService.findById(User.class, userId); - List learners = parseUserList(request, "learners"); + List allUsers = userManagementService.getUsersFromOrganisation(organisationId); + List learners = parseUserList(request, "learners", allUsers); String learnerGroupName = organisation.getName() + " learners"; - List staff = parseUserList(request, "monitors"); + List staff = parseUserList(request, "monitors", allUsers); // add the creator as staff, if not already done if (!staff.contains(creator)) { staff.add(creator); @@ -665,7 +669,11 @@ Lesson lesson = getLessonService().getLesson(lessonId); // monitor user opted for removing lesson progress for following users - List removedLearners = parseUserList(request, "removedLearners"); + IUserManagementService userManagementService = MonitoringServiceProxy.getUserManagementService(getServlet() + .getServletContext()); + List allUsers = userManagementService.getUsersFromOrganisation(lesson.getOrganisation() + .getOrganisationId()); + List removedLearners = parseUserList(request, "removedLearners", allUsers); for (User removedLearner : removedLearners) { getLessonService().removeLearnerProgress(lessonId, removedLearner.getUserId()); if (LamsDispatchAction.log.isDebugEnabled()) { @@ -674,10 +682,10 @@ } } - List learners = parseUserList(request, "learners"); + List learners = parseUserList(request, "learners", allUsers); getLessonService().setLearners(lesson, learners); - List staff = parseUserList(request, "monitors"); + List staff = parseUserList(request, "monitors", allUsers); getLessonService().setStaffMembers(lesson, staff); return null; @@ -1372,16 +1380,20 @@ /** * Creates a list of users out of string with comma-delimited user IDs. */ - private List parseUserList(HttpServletRequest request, String paramName) { + private List parseUserList(HttpServletRequest request, String paramName, Collection users) { IUserManagementService userManagementService = MonitoringServiceProxy.getUserManagementService(getServlet() .getServletContext()); String userIdList = request.getParameter(paramName); String[] userIdArray = userIdList.split(","); List result = new ArrayList(userIdArray.length); - for (String userId : userIdArray) { - if (!StringUtils.isBlank(userId)) { - User user = (User) userManagementService.findById(User.class, Integer.valueOf(userId)); + + for (User user : users) { + Integer userId = user.getUserId(); + for (String includeId : userIdArray) { + if (userId.equals(includeId)) { result.add(user); + break; + } } } return result;