Author: glandais Date: 2008-03-20 11:30:17 +0000 (Thu, 20 Mar 2008) New Revision: 1406 Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java trunk/simexplorer-is/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/credentials/CredentialDataSet.java trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java Log: JPA update Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-03-20 01:54:37 UTC (rev 1405) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-03-20 11:30:17 UTC (rev 1406) @@ -18,10 +18,11 @@ package fr.cemagref.simexplorer.is.security.entities; import java.io.Serializable; -import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.Iterator; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -30,7 +31,6 @@ import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.ManyToMany; -import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; @@ -52,17 +52,13 @@ protected Integer actorId; /** The groups with actor is member of. */ - @ManyToMany(fetch = FetchType.EAGER, targetEntity = Group.class) + @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) private Collection<Group> memberOf; /** The visible. */ @Column(nullable = false) private boolean visible; - /** The permissions. */ - @OneToMany(targetEntity = Permission.class, mappedBy = "actor") - private Collection<Permission> permissions; - /** * Gets the actor id. * @@ -106,7 +102,7 @@ */ public Collection<Group> getMemberOf() { if (memberOf == null) { - return new ArrayList<Group>(); + return new HashSet<Group>(); } return memberOf; } @@ -121,27 +117,6 @@ } /** - * Gets the permissions. - * - * @return the permissions - */ - public Collection<Permission> getPermissions() { - if (permissions == null) { - return new ArrayList<Permission>(); - } - return permissions; - } - - /** - * Sets the permissions. - * - * @param permissions the new permissions - */ - public void setPermissions(Collection<Permission> permissions) { - this.permissions = permissions; - } - - /** * Hash code groups. * * @param hashedGroups the hashed groups @@ -165,7 +140,7 @@ public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + hashCodeGroups(memberOf); + result = prime * result + ((memberOf == null) ? 0 : hashCodeGroups(memberOf)); result = prime * result + ((actorId == null) ? 0 : actorId.hashCode()); return result; } Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java 2008-03-20 01:54:37 UTC (rev 1405) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java 2008-03-20 11:30:17 UTC (rev 1406) @@ -20,9 +20,9 @@ import java.util.ArrayList; import java.util.Collection; -import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.Table; @@ -44,11 +44,11 @@ private String name; /** The owner. */ - @ManyToOne(optional = false) + @ManyToOne(optional = false, fetch = FetchType.EAGER) private User owner; /** The members. */ - @ManyToMany(targetEntity = Actor.class, mappedBy = "memberOf") + @ManyToMany(mappedBy = "memberOf") private Collection<Actor> members; /** @@ -92,7 +92,7 @@ * * @return the members */ - public Collection<Actor> getMembers() { + public Collection<Actor> getMembersReadOnly() { if (members == null) { return new ArrayList<Actor>(); } @@ -100,12 +100,27 @@ } /** + * Adds the member. + * + * @param actor the actor + */ + public void addMember(Actor actor) { + actor.getMemberOf().add(this); + } + + /** * Sets the members. * - * @param members the new members + * @param newMembers the new members */ - public void setMembers(Collection<Actor> members) { - this.members = members; + public void setMembers(Collection<Actor> newMembers) { + for (Actor oldMember : getMembersReadOnly()) { + oldMember.getMemberOf().remove(this); + } + for (Actor newMember : newMembers) { + newMember.getMemberOf().add(this); + } + members = newMembers; } /* (non-Javadoc) Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java 2008-03-20 01:54:37 UTC (rev 1405) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java 2008-03-20 11:30:17 UTC (rev 1406) @@ -20,7 +20,6 @@ import java.util.ArrayList; import java.util.Collection; -import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.OneToMany; @@ -59,13 +58,9 @@ private boolean superAdmin; /** The groups owned. */ - @OneToMany(targetEntity = Group.class, mappedBy = "owner") + @OneToMany(mappedBy = "owner") private Collection<Group> groupsOwned; - /** The logins. */ - @OneToMany(targetEntity = LoginAction.class, mappedBy = "loggedUser") - private Collection<LoginAction> logins; - /** * Gets the login. * @@ -161,43 +156,13 @@ * * @return the groups owned */ - public Collection<Group> getGroupsOwned() { + public Collection<Group> getGroupsOwnedReadOnly() { if (groupsOwned == null) { return new ArrayList<Group>(); } return groupsOwned; } - /** - * Sets the groups owned. - * - * @param groupsOwned the new groups owned - */ - public void setGroupsOwned(Collection<Group> groupsOwned) { - this.groupsOwned = groupsOwned; - } - - /** - * Gets the logins. - * - * @return the logins - */ - public Collection<LoginAction> getLogins() { - if (logins == null) { - return new ArrayList<LoginAction>(); - } - return logins; - } - - /** - * Sets the logins. - * - * @param logins the new logins - */ - public void setLogins(Collection<LoginAction> logins) { - this.logins = logins; - } - /* (non-Javadoc) * @see java.lang.Object#toString() */ Modified: trunk/simexplorer-is/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/credentials/CredentialDataSet.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/credentials/CredentialDataSet.java 2008-03-20 01:54:37 UTC (rev 1405) +++ trunk/simexplorer-is/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/credentials/CredentialDataSet.java 2008-03-20 11:30:17 UTC (rev 1406) @@ -18,7 +18,9 @@ package fr.cemagref.simexplorer.is.security.credentials; import java.util.ArrayList; +import java.util.Collection; import java.util.Date; +import java.util.HashSet; import java.util.List; import javax.persistence.EntityManager; @@ -84,21 +86,13 @@ if (!tx.isActive()) tx.begin(); - List resultList = entityManager.createQuery("SELECT a FROM Actor a").getResultList(); + List<?> resultList = entityManager.createQuery("SELECT a FROM Actor a").getResultList(); for (Object object : resultList) { Actor actor = (Actor) object; - actor.getMemberOf().clear(); - actor.getPermissions().clear(); + actor.setMemberOf(new ArrayList<Group>()); entityManager.merge(actor); } - resultList = entityManager.createQuery("SELECT u FROM User u").getResultList(); - for (Object object : resultList) { - User user = (User) object; - user.getGroupsOwned().clear(); - user.getLogins().clear(); - entityManager.merge(user); - } tx.commit(); tx.begin(); @@ -125,8 +119,7 @@ User user = new User(); user.setAdmin(admin); user.setSuperAdmin(superadmin); - user.setGroupsOwned(new ArrayList<Group>()); - user.setMemberOf(new ArrayList<Group>()); + user.setMemberOf(new HashSet<Group>()); user.setLogin(login); user.setMail(login + "@user.user"); user.setVisible(true); @@ -152,8 +145,7 @@ */ private Group createGroup(String name, User owner) { Group group = new Group(); - group.setMemberOf(new ArrayList<Group>()); - group.setMembers(new ArrayList<Actor>()); + group.setMemberOf(new HashSet<Group>()); group.setName(name); group.setOwner(owner); group.setVisible(true); @@ -181,11 +173,28 @@ return p; } + private void commit() { + entityManager.getTransaction().commit(); + entityManager.getTransaction().begin(); + } + /* (non-Javadoc) * @see com.bm.testsuite.dataloader.InitialDataSet#create() */ @Override public void create() { + + User usera = createUser("usera", false, false); + + Group group1 = createGroup("group1", usera); + + group1.addMember(usera); + commit(); + + entityManager.refresh(usera); + entityManager.refresh(group1); + commit(); + User user1 = createUser("user1", false, false); User user2 = createUser("user2", false, false); user3 = createUser("user3", false, false); @@ -196,21 +205,15 @@ Group groupA = createGroup("groupA", admin); user1.getMemberOf().add(groupA); - entityManager.merge(user1); Group groupB = createGroup("groupB", admin); - groupB.getMembers().add(user2); - groupB.getMembers().add(user4); - entityManager.merge(groupB); user2.getMemberOf().add(groupB); user4.getMemberOf().add(groupB); - entityManager.merge(user2); - entityManager.merge(user4); Group groupC = createGroup("groupC", admin); + groupB.getMemberOf().add(groupC); - entityManager.merge(groupB); Permission[] p = new Permission[6]; int i = 0; @@ -227,10 +230,26 @@ i++; p[i] = createPermission("b" + i, user4); + Permission[] p3 = new Permission[N_PERMISSIONS_USER3]; for (int j = 0; j < N_PERMISSIONS_USER3; j++) { - createPermission("u3_" + j, user3); + p3[j] = createPermission("u3_" + j, user3); } + commit(); + entityManager.refresh(user1); + entityManager.refresh(user2); + entityManager.refresh(user3); + entityManager.refresh(user4); + entityManager.refresh(groupA); + entityManager.refresh(groupB); + entityManager.refresh(groupC); + for (Permission permission : p) { + entityManager.refresh(permission); + } + for (Permission permission : p3) { + entityManager.refresh(permission); + } + } /** Modified: trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-03-20 01:54:37 UTC (rev 1405) +++ trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-03-20 11:30:17 UTC (rev 1406) @@ -89,7 +89,7 @@ } else { this.group = RemoteSecurityService.getAuthentificationService().getGroup(getToken(), groupId); - Collection<Actor> members = this.group.getMembers(); + Collection<Actor> members = this.group.getMembersReadOnly(); for (Actor actor : members) { if (actor instanceof User) { this.usersInGroup.add((User) actor); Modified: trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-03-20 01:54:37 UTC (rev 1405) +++ trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-03-20 11:30:17 UTC (rev 1406) @@ -92,7 +92,7 @@ if (isUserSuperAdmin()) { groups = RemoteSecurityService.getAuthentificationService().getGroups(getToken()); } else { - Collection<Group> groupsOwned = getUserLogged().getGroupsOwned(); + Collection<Group> groupsOwned = getUserLogged().getGroupsOwnedReadOnly(); groups = groupsOwned.toArray(new Group[groupsOwned.size()]); } Modified: trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-03-20 01:54:37 UTC (rev 1405) +++ trunk/simexplorer-is/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-03-20 11:30:17 UTC (rev 1406) @@ -183,7 +183,7 @@ if (user.getActorId() == null) { return new Group[0]; } - Collection<Group> groupsOwned = user.getGroupsOwned(); + Collection<Group> groupsOwned = user.getGroupsOwnedReadOnly(); Group[] result = groupsOwned.toArray(new Group[groupsOwned.size()]); return result; }