From ada8a569326a9d0242b44de587be74545c375f9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Fri, 18 Dec 2009 10:50:34 +0100 Subject: [PATCH] ItEr39S19CUAltaGrupoUsuarios: Implemented a many-to-many relation between User and Profile. The relation is not navigable in the direction Profile -> User. A new unit test has been added. --- .../business/users/entities/User.java | 15 ++++++++++ .../business/users/entities/Users.hbm.xml | 5 ++++ .../business/test/users/daos/UserDAOTest.java | 30 +++++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/users/entities/User.java b/navalplanner-business/src/main/java/org/navalplanner/business/users/entities/User.java index 97d6783e5..ef6ba0f3c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/users/entities/User.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/users/entities/User.java @@ -34,6 +34,7 @@ import org.navalplanner.business.users.daos.IUserDAO; * Entity for modeling a user. * * @author Fernando Bellas Permuy + * @author Jacobo Aragunde Perez */ public class User extends BaseEntity { @@ -46,6 +47,8 @@ public class User extends BaseEntity { @NotEmpty(message="user roles not specified") private Set roles = new HashSet(); + private Set profiles = new HashSet(); + private String email; /** @@ -98,6 +101,18 @@ public class User extends BaseEntity { return email; } + public Set getProfiles() { + return profiles; + } + + public void addProfile(Profile profile) { + profiles.add(profile); + } + + public void removeProfile(Profile profile) { + profiles.remove(profile); + } + @AssertTrue(message="login name is already being used by another user") public boolean checkConstraintUniqueLoginName() { diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/users/entities/Users.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/users/entities/Users.hbm.xml index 17d80e00b..79856e175 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/users/entities/Users.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/users/entities/Users.hbm.xml @@ -32,6 +32,11 @@ + + + + diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/users/daos/UserDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/users/daos/UserDAOTest.java index c93d833fd..f31d7f099 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/users/daos/UserDAOTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/users/daos/UserDAOTest.java @@ -36,7 +36,9 @@ import org.navalplanner.business.common.IAdHocTransactionService; import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.users.daos.IProfileDAO; import org.navalplanner.business.users.daos.IUserDAO; +import org.navalplanner.business.users.entities.Profile; import org.navalplanner.business.users.entities.User; import org.navalplanner.business.users.entities.UserRole; import org.springframework.beans.factory.annotation.Autowired; @@ -49,6 +51,7 @@ import org.springframework.transaction.annotation.Transactional; * Tests for IUserDAO. * * @author Fernando Bellas Permuy + * @author Jacobo Aragunde Perez */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE, @@ -62,6 +65,9 @@ public class UserDAOTest { @Autowired private IUserDAO userDAO; + @Autowired + IProfileDAO profileDAO; + @Test public void testBasicSave() throws InstanceNotFoundException { @@ -196,7 +202,26 @@ public class UserDAOTest { transactionService.runOnTransaction(createUsers); transactionService.runOnTransaction(updateUser1); + } + @Test + public void testListProfiles() throws InstanceNotFoundException{ + + User user = createUser(getUniqueName()); + userDAO.save(user); + + Profile profile = createProfile(getUniqueName()); + profileDAO.save(profile); + + int previous = user.getProfiles().size(); + user.addProfile(profile); + userDAO.save(user); + assertEquals(previous + 1, userDAO.find(user.getId()).getProfiles().size()); + + previous = user.getProfiles().size(); + user.removeProfile(profile); + userDAO.save(user); + assertEquals(previous - 1, userDAO.find(user.getId()).getProfiles().size()); } private String getUniqueName() { @@ -221,4 +246,9 @@ public class UserDAOTest { UserRole.values()[1]; } + private Profile createProfile(String profileName) { + Set roles = new HashSet(); + roles.add(UserRole.ROLE_BASIC_USER); + return Profile.create(profileName, roles); + } }