# HG changeset patch # User ymh # Date 1389718962 -3600 # Node ID 67c2b0fb9b19bdca75a3e83e94eed7f4e9158b18 # Parent ffe52333854352ca382375f9e26b7009d146df30 add user and group list in group and user edit pages diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/java/org/iri_research/renkan/controller/admin/GroupsAdminController.java --- a/server/src/main/java/org/iri_research/renkan/controller/admin/GroupsAdminController.java Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/java/org/iri_research/renkan/controller/admin/GroupsAdminController.java Tue Jan 14 18:02:42 2014 +0100 @@ -16,6 +16,7 @@ import org.iri_research.renkan.forms.GroupFormValidator; import org.iri_research.renkan.models.Group; import org.iri_research.renkan.repositories.GroupsRepository; +import org.iri_research.renkan.repositories.UsersRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.propertyeditors.StringTrimmerEditor; @@ -46,6 +47,9 @@ @Inject private GroupsRepository groupsRepository; + @Inject + private UsersRepository usersRepository; + @InitBinder(value = { "group" }) protected void initBinder(WebDataBinder binder) { @@ -94,6 +98,7 @@ groupForm = new GroupForm(group); model.addAttribute("group", groupForm); + model.addAttribute("allUsers", this.usersRepository.findAll()); return "admin/groupEdit"; } diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/java/org/iri_research/renkan/controller/admin/UsersAdminController.java --- a/server/src/main/java/org/iri_research/renkan/controller/admin/UsersAdminController.java Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/java/org/iri_research/renkan/controller/admin/UsersAdminController.java Tue Jan 14 18:02:42 2014 +0100 @@ -18,6 +18,7 @@ import org.iri_research.renkan.forms.UserForm; import org.iri_research.renkan.forms.UserFormValidator; import org.iri_research.renkan.models.User; +import org.iri_research.renkan.repositories.GroupsRepository; import org.iri_research.renkan.repositories.ProjectsRepository; import org.iri_research.renkan.repositories.UsersRepository; import org.slf4j.Logger; @@ -54,6 +55,9 @@ @Inject private ProjectsRepository projectsRepository; + @Inject + private GroupsRepository groupsRepository; + @Resource(name="renkanPasswordEncoder") private PasswordEncoder passwordEncoder; @@ -105,6 +109,7 @@ userForm = new UserForm(user); model.addAttribute("user", userForm); + model.addAttribute("allGroups", this.groupsRepository.findAll()); return "admin/userEdit"; } diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/java/org/iri_research/renkan/forms/GroupForm.java --- a/server/src/main/java/org/iri_research/renkan/forms/GroupForm.java Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/java/org/iri_research/renkan/forms/GroupForm.java Tue Jan 14 18:02:42 2014 +0100 @@ -1,7 +1,7 @@ package org.iri_research.renkan.forms; -import java.util.ArrayList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import org.iri_research.renkan.Constants; import org.iri_research.renkan.models.Group; @@ -12,7 +12,7 @@ public class GroupForm extends RenkanForm { private String avatar; - private List users; + private Set users; private GroupsRepository groupsRepository; @@ -25,7 +25,7 @@ super(model); if (model != null) { this.avatar = model.getAvatar(); - this.setUsers(new ArrayList()); + this.setUsers(new HashSet<>(model.getUsers())); if(model.getUsers() != null) { this.getUsers().addAll(model.getUsers()); } @@ -72,11 +72,11 @@ this.groupsRepository = groupsRepository; } - public List getUsers() { + public Set getUsers() { return users; } - public void setUsers(List users) { + public void setUsers(Set users) { this.users = users; } diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/java/org/iri_research/renkan/forms/UserForm.java --- a/server/src/main/java/org/iri_research/renkan/forms/UserForm.java Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/java/org/iri_research/renkan/forms/UserForm.java Tue Jan 14 18:02:42 2014 +0100 @@ -1,7 +1,9 @@ package org.iri_research.renkan.forms; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.iri_research.renkan.Constants; import org.iri_research.renkan.models.User; @@ -28,6 +30,7 @@ private boolean locked; private String password; private String passwordConfirm; + private Set groups; private List userAuthorities; private UsersRepository usersRepository; @@ -53,6 +56,7 @@ this.enabled = model.isEnabled(); this.locked = model.isLocked(); this.userAuthorities = model.getUserAuthorities()!=null?new ArrayList(model.getUserAuthorities()):new ArrayList(); + this.setGroups(new HashSet<>(model.getGroups())); } } @@ -114,6 +118,9 @@ this.model.setEnabled(this.enabled); this.model.setLocked(this.locked); this.model.setUserAuthorities((this.userAuthorities!=null && !this.userAuthorities.isEmpty())?new ArrayList(this.userAuthorities):null); + if(this.getGroups() != null) { + this.usersRepository.setGroupsList(this.model, this.getGroups()); + } if(this.password != null && this.password.length() > 0) { this.model.setPassword(this.passwordEncoder.encode(this.password)); } @@ -165,4 +172,12 @@ this.userAuthorities = userAuthorities; } + public Set getGroups() { + return groups; + } + + public void setGroups(Set groups) { + this.groups = groups; + } + } diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryCustom.java --- a/server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryCustom.java Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryCustom.java Tue Jan 14 18:02:42 2014 +0100 @@ -1,9 +1,17 @@ package org.iri_research.renkan.repositories; -import java.util.List; +import java.util.Collection; +import java.util.Map; import org.iri_research.renkan.models.Group; +import org.iri_research.renkan.models.User; public interface GroupsRepositoryCustom { - public void setUsersList(Group group, List userIds); + /** + * Set the list of user for the group + * @param group: the group. + * @param userIds: the collection of user ids. This parameter must not be null. + */ + public void setUsersList(Group group, Collection userIds); + public Map getUsersMap(Group group); } diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryImpl.java --- a/server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryImpl.java Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/java/org/iri_research/renkan/repositories/GroupsRepositoryImpl.java Tue Jan 14 18:02:42 2014 +0100 @@ -1,7 +1,10 @@ package org.iri_research.renkan.repositories; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.commons.collections4.IteratorUtils; import org.iri_research.renkan.models.Group; @@ -18,7 +21,9 @@ @Override // TODO: implement a transaction mecanism... - public void setUsersList(Group group, List userIds) { + public void setUsersList(Group group, Collection userIds) { + + assert userIds != null : "list of user ids must not be null"; // takes previous user list List oldUsers = new ArrayList<>(group.getUsers()); @@ -47,4 +52,15 @@ this.groupsRepository.save(group); } + @Override + public Map getUsersMap(Group group) { + HashMap res = new HashMap<>(group.getUsers().size()); + + for (User user : this.usersRepository.findAll(group.getUsers())) { + res.put(user.getId(), user); + } + + return res; + } + } diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryCustom.java --- a/server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryCustom.java Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryCustom.java Tue Jan 14 18:02:42 2014 +0100 @@ -1,9 +1,17 @@ package org.iri_research.renkan.repositories; -import java.util.List; +import java.util.Collection; +import java.util.Map; +import org.iri_research.renkan.models.Group; import org.iri_research.renkan.models.User; public interface UsersRepositoryCustom { - public void setGroupsList(User user, List groupIds); + /** + * Set the users group list. + * @param user : the user + * @param groupIds : the list of group ids. this parameter must not be null. + */ + public void setGroupsList(User user, Collection groupIds); + public Map getGroupsMap(User user); } diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryImpl.java --- a/server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryImpl.java Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/java/org/iri_research/renkan/repositories/UsersRepositoryImpl.java Tue Jan 14 18:02:42 2014 +0100 @@ -1,7 +1,10 @@ package org.iri_research.renkan.repositories; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.commons.collections4.IteratorUtils; import org.iri_research.renkan.models.Group; @@ -18,7 +21,9 @@ @Override // TODO: implement a transaction mecanism... - public void setGroupsList(User user, List groupIds) { + public void setGroupsList(User user, Collection groupIds) { + + assert groupIds != null : "list of group ids must not be null"; // takes previous user list List oldGroups = new ArrayList<>(user.getGroups()); @@ -47,4 +52,15 @@ this.usersRepository.save(user); } + @Override + public Map getGroupsMap(User user) { + HashMap res = new HashMap<>(user.getGroups().size()); + + for (Group group : this.groupsRepository.findAll(user.getGroups())) { + res.put(group.getId(), group); + } + + return res; + } + } diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/webapp/WEB-INF/i18n/messages.properties --- a/server/src/main/webapp/WEB-INF/i18n/messages.properties Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/webapp/WEB-INF/i18n/messages.properties Tue Jan 14 18:02:42 2014 +0100 @@ -70,7 +70,7 @@ renkanAdmin.form.space.compact = Compact renkanAdmin.form.avatar = Avatar -renkanAdmin.form.credentialExpirationDate = Cred. exp. date +renkanAdmin.form.credentialsExpirationDate = Cred. exp. date renkanAdmin.form.expirationDate = Exp. date renkanAdmin.form.email = Email renkanAdmin.form.enabled = Enabled @@ -78,6 +78,8 @@ renkanAdmin.form.password = Password renkanAdmin.form.passwordConfirm = Confirm password renkanAdmin.form.roles = Roles +renkanAdmin.form.groups = Groups +renkanAdmin.form.users = Users renkanAdmin.form.user.submit = Ok renkan.error.title.empty = Title must not be empty or null diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/webapp/WEB-INF/i18n/messages_en.properties --- a/server/src/main/webapp/WEB-INF/i18n/messages_en.properties Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/webapp/WEB-INF/i18n/messages_en.properties Tue Jan 14 18:02:42 2014 +0100 @@ -79,7 +79,7 @@ renkanAdmin.user_confirm_delete = Do you want to delete the user with username "{0}" ? renkanAdmin.form.avatar = Avatar -renkanAdmin.form.credentialExpirationDate = Cred. exp. date +renkanAdmin.form.credentialsExpirationDate = Cred. exp. date renkanAdmin.form.expirationDate = Exp. date renkanAdmin.form.email = Email renkanAdmin.form.enabled = Enabled @@ -87,6 +87,8 @@ renkanAdmin.form.password = Password renkanAdmin.form.passwordConfirm = Confirm password renkanAdmin.form.roles = Roles +renkanAdmin.form.groups = Groups +renkanAdmin.form.users = Users renkanAdmin.form.user.submit = Ok diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/webapp/WEB-INF/i18n/messages_fr.properties --- a/server/src/main/webapp/WEB-INF/i18n/messages_fr.properties Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/webapp/WEB-INF/i18n/messages_fr.properties Tue Jan 14 18:02:42 2014 +0100 @@ -77,7 +77,7 @@ renkanAdmin.user_confirm_delete = Do you want to delete the user with username "{0}" ? renkanAdmin.form.avatar = Avatar -renkanAdmin.form.credentialExpirationDate = Date exp. mdp. +renkanAdmin.form.credentialsExpirationDate = Date exp. mdp. renkanAdmin.form.expirationDate = Date exp. renkanAdmin.form.email = Email renkanAdmin.form.enabled = Actif @@ -85,6 +85,8 @@ renkanAdmin.form.password = Mot de passe renkanAdmin.form.passwordConfirm = Conf. mot de passe renkanAdmin.form.roles = RĂ´les +renkanAdmin.form.groups = Groupes +renkanAdmin.form.users = Utilisateurs renkanAdmin.form.user.submit = Ok diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/webapp/WEB-INF/templates/admin/groupsList.html --- a/server/src/main/webapp/WEB-INF/templates/admin/groupsList.html Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/webapp/WEB-INF/templates/admin/groupsList.html Tue Jan 14 18:02:42 2014 +0100 @@ -21,7 +21,7 @@

Renkan administration

-

List of objects

+

List of objects

<< diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/webapp/WEB-INF/templates/fragment/groupForm.html --- a/server/src/main/webapp/WEB-INF/templates/fragment/groupForm.html Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/webapp/WEB-INF/templates/fragment/groupForm.html Tue Jan 14 18:02:42 2014 +0100 @@ -65,6 +65,13 @@
+ +
+ + +
diff -r ffe523338543 -r 67c2b0fb9b19 server/src/main/webapp/WEB-INF/templates/fragment/userForm.html --- a/server/src/main/webapp/WEB-INF/templates/fragment/userForm.html Mon Jan 06 10:06:50 2014 +0100 +++ b/server/src/main/webapp/WEB-INF/templates/fragment/userForm.html Tue Jan 14 18:02:42 2014 +0100 @@ -130,6 +130,13 @@
+ +
+ + +