r334 - in trunk: simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages simexplorer-is-web/src/main/webapp
Author: glandais Date: 2008-01-21 09:35:17 +0000 (Mon, 21 Jan 2008) New Revision: 334 Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml Log: User/group edit Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java 2008-01-21 09:35:17 UTC (rev 334) @@ -40,4 +40,6 @@ public List<User> getUsersOfGroup(Group group); + public List<Group> getGroupsOfUser(User user); + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-21 09:35:17 UTC (rev 334) @@ -105,4 +105,10 @@ .setParameter("group", group).getResultList(); } + public List<Group> getGroupsOfUser(User user) { + return em.createQuery( + "select distinct u.groups from User u where u = :user") + .setParameter("user", user).getResultList(); + } + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java 2008-01-21 09:35:17 UTC (rev 334) @@ -30,6 +30,10 @@ public void setUsersOfGroup(Group group, Integer[] usersInGroup); + public Group[] getGroupsOfUser(User user); + + public void setGroupsOfUser(User user, Integer[] groupsIds); + public Group saveGroup(String name, User owner); public Group getGroup(Integer id); Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java 2008-01-21 09:35:17 UTC (rev 334) @@ -222,13 +222,28 @@ for (Integer idUser : usersToAdd) { User user = dao.getUser(idUser); user.getGroups().add(group); - dao.saveUser(user); + dao.updateUser(user); } for (Integer idUser : usersToRemove) { User user = dao.getUser(idUser); removeUserFromGroup(user, group); - dao.saveUser(user); + dao.updateUser(user); } } + public void setGroupsOfUser(User user, Integer[] groupsIds) { + User realUser = dao.getUser(user.getId()); + realUser.getGroups().clear(); + for (int i = 0; i < groupsIds.length; i++) { + Group group = dao.getGroup(groupsIds[i]); + realUser.getGroups().add(group); + } + dao.updateUser(user); + + } + + public Group[] getGroupsOfUser(User user) { + return dao.getGroupsOfUser(user).toArray(new Group[0]); + } + } Modified: trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java =================================================================== --- trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-21 09:35:17 UTC (rev 334) @@ -29,6 +29,14 @@ } public void testSecurityEntities() { + /* + User user = authenticationService.getUser("user3"); + Group[] groups = authenticationService.getGroupsOfUser(user); + for (Group group : groups) { + System.out.println(group.getName()); + } + */ + User[] simpleUsers = new User[20]; for (int i = 0; i < 20; i++) { simpleUsers[i] = authenticationService.saveUser("user" + i, @@ -60,6 +68,7 @@ superAdminUser.setAdmin(true); superAdminUser.setSuperAdmin(true); authenticationService.updateUser(superAdminUser); + /* User[] users = new User[10]; Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-21 09:35:17 UTC (rev 334) @@ -1,5 +1,7 @@ package fr.cemagref.simexplorer.is.ui.web.pages; +import java.util.ArrayList; +import java.util.List; import java.util.StringTokenizer; import javax.naming.NamingException; @@ -24,20 +26,21 @@ private StringValueEncoder stringEncoder = new StringValueEncoder(); @Persist - private String[] usersInGroup; + private List<String> usersInGroup; + @Persist + private List<String> groupsInGroup; + void setup(int groupId) throws NamingException { + this.usersInGroup = new ArrayList<String>(); if (groupId == -1) { this.group = new Group(); - this.usersInGroup = new String[0]; } else { this.group = ServiceFactory.getSecurityService().getGroup(groupId); User[] users = ServiceFactory.getSecurityService().getUsersOfGroup( group); - this.usersInGroup = new String[users.length]; - for (int i = 0; i < users.length; i++) { - this.usersInGroup[i] = users[i].getId() + "/" - + users[i].getLogin(); + for (User user : users) { + this.usersInGroup.add(user.getId() + "/" + user.getLogin()); } } } @@ -49,12 +52,27 @@ } else { ServiceFactory.getSecurityService().updateGroup(group); } - Integer[] usersIds = new Integer[usersInGroup.length]; - for (int i = 0; i < usersIds.length; i++) { - StringTokenizer st = new StringTokenizer(usersInGroup[i], "/"); + + Integer[] usersIds = new Integer[usersInGroup.size()]; + int i = 0; + for (String user : usersInGroup) { + StringTokenizer st = new StringTokenizer(user, "/"); usersIds[i] = new Integer(st.nextToken()); + i++; } ServiceFactory.getSecurityService().setUsersOfGroup(group, usersIds); + + /* + Integer[] groupsIds = new Integer[groupsInGroup.size()]; + i = 0; + for (String group : groupsInGroup) { + StringTokenizer st = new StringTokenizer(group, "/"); + groupsIds[i] = new Integer(st.nextToken()); + i++; + } + ServiceFactory.getSecurityService().setGroupsOfGroup(group, groupsIds); + */ + return groupList; } @@ -62,20 +80,21 @@ return groupList; } - public String[] getUsers() throws NamingException { + public List<String> getUsers() throws NamingException { User[] users = ServiceFactory.getSecurityService().getUsers(); - String[] result = new String[users.length]; + List<String> result = new ArrayList<String>(); for (int i = 0; i < users.length; i++) { - result[i] = users[i].getId() + "/" + users[i].getLogin(); + result.add(users[i].getId() + "/" + users[i].getLogin()); } return result; } - public String[] getUsersInGroup() throws NamingException { + public List<String> getUsersInGroup() throws NamingException { return usersInGroup; } - public void setUsersInGroup(String[] usersInGroup) throws NamingException { + public void setUsersInGroup(List<String> usersInGroup) + throws NamingException { this.usersInGroup = usersInGroup; } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-21 09:35:17 UTC (rev 334) @@ -1,10 +1,16 @@ package fr.cemagref.simexplorer.is.ui.web.pages; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + import javax.naming.NamingException; import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.annotations.Persist; +import org.apache.tapestry.internal.services.StringValueEncoder; +import fr.cemagref.simexplorer.is.security.entities.Group; import fr.cemagref.simexplorer.is.security.entities.User; import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage; import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory; @@ -17,24 +23,55 @@ @InjectPage private UserList userList; + private StringValueEncoder stringEncoder = new StringValueEncoder(); + + @Persist + private List<String> groupsOfUser; + void setup(int groupId) throws NamingException { + this.groupsOfUser = new ArrayList<String>(); if (groupId == -1) { this.user = new User(); } else { this.user = ServiceFactory.getSecurityService().getUser(groupId); + Group[] groups = ServiceFactory.getSecurityService() + .getGroupsOfUser(this.user); + for (Group group : groups) { + groupsOfUser.add(group.getId() + "/" + group.getName()); + } } } public Object onSuccess() throws NamingException { + if (user.getId() == null) { ServiceFactory.getSecurityService().saveUser(user.getLogin(), user.getMail()); } else { ServiceFactory.getSecurityService().updateUser(user); } + + Integer[] groupsIds = new Integer[groupsOfUser.size()]; + int i = 0; + for (String group : groupsOfUser) { + StringTokenizer st = new StringTokenizer(group, "/"); + groupsIds[i] = new Integer(st.nextToken()); + i++; + } + ServiceFactory.getSecurityService().setGroupsOfUser(user, groupsIds); + return userList; } + public List<String> getGroups() throws NamingException { + Group[] groups = ServiceFactory.getSecurityService().getGroups(); + List<String> result = new ArrayList<String>(); + for (int i = 0; i < groups.length; i++) { + result.add(groups[i].getId() + "/" + groups[i].getName()); + } + return result; + } + public Object onActionFromCancel() { return userList; } @@ -51,4 +88,16 @@ return user; } + public List<String> getGroupsOfUser() { + return groupsOfUser; + } + + public void setGroupsOfUser(List<String> groupsOfUser) { + this.groupsOfUser = groupsOfUser; + } + + public StringValueEncoder getStringEncoder() { + return stringEncoder; + } + } Modified: trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-21 09:35:17 UTC (rev 334) @@ -14,11 +14,10 @@ <input t:type="Palette" model="users" selected="usersInGroup" encoder="stringEncoder"/> </p> -<!-- <p>${message:groupMembers} : - <input t:type="Palette" model="groups" selected="paletteSelectedValues" encoder="stringEncoder"/> + <input t:type="Palette" model="groups" selected="groupsInGroup" encoder="stringEncoder"/> </p> - --> + <input t:type="Submit" t:value="message:submit" /> <a t:type="actionlink" t:id="cancel">${message:cancel}</a> Modified: trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-21 04:50:07 UTC (rev 333) +++ trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-21 09:35:17 UTC (rev 334) @@ -19,6 +19,10 @@ t:id="resetPassword" t:context="user.id">${message:resetPassword}</a> </p> + <p>${message:memberOf} : + <input t:type="Palette" model="groups" selected="groupsOfUser" encoder="stringEncoder"/> + </p> + <input t:type="Submit" t:value="message:submit" /> <a t:type="actionlink" t:id="cancel">${message:cancel}</a> </t:form>
participants (1)
-
glandais@users.labs.libre-entreprise.org