Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgRoleSaveAction.java =================================================================== diff -u -r41ca46c169681862f94f041c78f455009be73c24 -rb5a5cd364990006a849db8385a1d5ed4d66e9466 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgRoleSaveAction.java (.../UserOrgRoleSaveAction.java) (revision 41ca46c169681862f94f041c78f455009be73c24) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgRoleSaveAction.java (.../UserOrgRoleSaveAction.java) (revision b5a5cd364990006a849db8385a1d5ed4d66e9466) @@ -25,7 +25,9 @@ package org.lamsfoundation.lams.admin.web; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; import javax.servlet.http.HttpServletRequest; @@ -93,37 +95,19 @@ // for subgroups, if user is not a member of the parent group then add to that as well. for(int i=0; i)Arrays.asList(roleIds)); if (organisation.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { if (getService().getUserOrganisation(bean.getUserId(), organisation.getParentOrganisation().getOrganisationId())==null) { - saveRoles(bean.getUserId(), organisation.getParentOrganisation(), roleIds); + getService().setRolesForUserOrganisation(user, organisation.getParentOrganisation(), (List)Arrays.asList(roleIds)); } } } return mapping.findForward("userlist"); } - private void saveRoles(Integer userId, Organisation organisation, String[] roleIds) { - - User user = (User)getService().findById(User.class, userId); - UserOrganisation uo = new UserOrganisation(user, organisation); - getService().save(uo); - log.debug("added "+uo.getUser().getLogin()+" to "+uo.getOrganisation().getName()); - Set uors = new HashSet(); - for(int j=0; j rolesList = Arrays.asList(roles); - List rolesCopy = new ArrayList(); - rolesCopy.addAll(rolesList); - log.debug("rolesList.size: " + rolesList.size()); - Set uors = uo.getUserOrganisationRoles(); - Set uorsCopy = new HashSet(); - uorsCopy.addAll(uors); - // remove the common part from the rolesList and uors - // to get the uors to remove and the roles to add - for(String roleId : rolesList) { - for(UserOrganisationRole uor : uors) { - if (uor.getRole().getRoleId().toString().equals(roleId)) { - rolesCopy.remove(roleId); - uorsCopy.remove(uor); - } - } - } - uors.removeAll(uorsCopy); - for(String roleId : rolesCopy){ - UserOrganisationRole uor = new UserOrganisationRole(uo, findRole(rolelist, roleId)); - getService().save(uor); - uors.add(uor); - } - uo.setUserOrganisationRoles(uors); - } - getService().save(user); + getService().setRolesForUserOrganisation(user, org, (List)Arrays.asList(roles)); } else { // create user log.debug("creating user..."); User user = new User(); @@ -218,14 +191,7 @@ orgs.add(parentOrg); } for (Organisation o : orgs) { - UserOrganisation uo = new UserOrganisation(user,o); - getService().save(uo); - for (String roleId : roles) { - UserOrganisationRole uor = new UserOrganisationRole(uo, findRole(rolelist,roleId)); - getService().save(uor); - uo.addUserOrganisationRole(uor); - } - user.addUserOrganisation(uo); + getService().setRolesForUserOrganisation(user, o, (List)Arrays.asList(roles)); } } } @@ -246,14 +212,6 @@ } - private Role findRole(List allRoles, String roleId){ - for(Role role: allRoles){ - if(role.getRoleId().toString().equals(roleId)) - return role; - } - return null; - } - @SuppressWarnings("unchecked") private IUserManagementService getService() { if (service == null) {