[Suiviobsmer-commits] r819 - in trunk: wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/entity wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi wao-business/src/test/java/fr/ifremer/wao wao-business/src/test/java/fr/ifremer/wao/entity wao-business/src/test/java/fr/ifremer/wao/service wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages
Author: bleny Date: 2010-12-02 18:18:37 +0000 (Thu, 02 Dec 2010) New Revision: 819 Log: continuing putting obsProgram everywhere in Wao Removed: trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java trunk/wao-business/src/main/xmi/wao.properties trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java trunk/wao-ui/src/main/webapp/Administration.tml trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java 2010-12-02 18:18:37 UTC (rev 819) @@ -72,6 +72,11 @@ } @Override + public UserRole getRole() { + return getProfile().getUserRole(); + } + + @Override public boolean isIndicatorsViewer() { boolean test = false; Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java 2010-12-02 18:18:37 UTC (rev 819) @@ -1,10 +1,18 @@ package fr.ifremer.wao.bean; +import static org.nuiton.i18n.I18n._; + public enum ObsProgram { - OBSMER, - OBSVENTE; + OBSMER(ObsProgram.class.getName() + "OBSMER"), + OBSVENTE(ObsProgram.class.getName() + "OBSVENTE"); + protected String label; + + ObsProgram(String label) { + this.label = label; + } + public static ObsProgram valueOf(int obsProgramOrdinal) { for (ObsProgram obsProgram : values()) { if (obsProgram.ordinal() == obsProgramOrdinal) { @@ -13,4 +21,8 @@ } return null; } + + public String getLabel() { + return _(label); + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java 2010-12-02 18:18:37 UTC (rev 819) @@ -42,13 +42,13 @@ */ public enum UserRole { /** Admin role **/ - ADMIN("Administrateur"), + ADMIN(UserRole.class.getName() + "ADMIN"), /** User/observer role **/ - OBSERVER("Observateur"), + OBSERVER(UserRole.class.getName() + "OBSERVER"), /** Coordinator role **/ - COORDINATOR("Coordinateur"), + COORDINATOR(UserRole.class.getName() + "COORDINATOR"), /** Guest role **/ - GUEST("Invité"); + GUEST(UserRole.class.getName() + "GUEST"); static final int MAX_CODE = (int)Math.pow(values().length, 2) -1; @@ -62,10 +62,12 @@ return label; } + @Deprecated public int toInt() { return 1 << ordinal(); } + @Deprecated public boolean isSelected(int code) { return (code >> ordinal()) % 2 == 1; } @@ -76,6 +78,7 @@ * @param roles List of roles to check * @return an array of Integer for result codes */ + @Deprecated public static Integer[] getMatchCodes(UserRole... roles) { Set<Integer> results = new HashSet<Integer>(); for (UserRole role : roles) { @@ -97,6 +100,7 @@ * @return a unique code corresponding to the combination of roles * @see #toInt() */ + @Deprecated public static int toInt(UserRole... roles) { int result = 0; for (UserRole role : roles) { @@ -115,6 +119,7 @@ * @return an array of UserRole * @see #isSelected(int) */ + @Deprecated public static UserRole[] toUserRoles(int code) { EnumSet<UserRole> result = EnumSet.noneOf(UserRole.class); for (UserRole role : values()) { Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java 2010-12-02 18:18:37 UTC (rev 819) @@ -5,6 +5,14 @@ public class UserProfileImpl extends UserProfileAbstract { + public UserProfileImpl() {} + + public UserProfileImpl(ObsProgram obsProgram, UserRole userRole, boolean canWrite) { + setObsProgram(obsProgram); + setUserRole(userRole); + setCanWrite(canWrite); + } + @Override public UserRole getUserRole() { return UserRole.valueOf(getUserRoleOrdinal()); @@ -59,4 +67,16 @@ public boolean isObsVente() { return getObsProgram() == ObsProgram.OBSVENTE; } + + @Override + public String getDescription() { + StringBuilder result = new StringBuilder(); + result.append(getUserRole().getLabel()); + result.append(" sur "); + result.append(getObsProgram().getLabel()); + if (isReadOnly()) { + result.append(" (lecture seule)"); + } + return result.toString(); + } } \ No newline at end of file Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-12-02 18:18:37 UTC (rev 819) @@ -25,10 +25,13 @@ package fr.ifremer.wao.entity; import fr.ifremer.wao.WaoUtils; +import fr.ifremer.wao.bean.UserRole; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; /** * UserImpl @@ -75,4 +78,27 @@ public boolean isPasswordChanged() { return this.passwordChanged; } + + @Override + public boolean hasUserRole(UserRole userRole) { + // true if user has a profile with the role whatever the program + for (UserProfile profile : getUserProfile()) { + if (profile.getUserRole() == userRole) { + return true; + } + } + return false; + } + + @Override + public void addProfile(UserProfile userProfile) { + Collection<UserProfile> profiles = getUserProfile(); + + if (profiles == null) { + profiles = new ArrayList<UserProfile>(); + setUserProfile(profiles); + } + + profiles.add(userProfile); + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-02 18:18:37 UTC (rev 819) @@ -42,6 +42,7 @@ import fr.ifremer.wao.entity.SampleRowLog; import fr.ifremer.wao.entity.SampleRowLogDAO; import fr.ifremer.wao.entity.UserProfile; +import fr.ifremer.wao.entity.UserProfileDAO; import fr.ifremer.wao.entity.UserProfileImpl; import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.entity.WaoUserDAO; @@ -124,10 +125,10 @@ ConnectedUser result = new ConnectedUserImpl(); result.setUser(user); - List<UserRole> roles = user.getUserRoles(); - // Set unique role - if (roles.size() == 1) { - result.setRole(roles.get(0)); + List<UserProfile> profiles = new ArrayList<UserProfile>(user.getUserProfile()); + // Set unique profile + if (profiles.size() == 1) { + result.setProfile(profiles.get(0)); } return result; @@ -383,16 +384,12 @@ WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction); - // Evo #2325 : multi roles available, need code conversion using UserRole enum - Integer[] matchCodes = - UserRole.getMatchCodes(UserRole.OBSERVER, UserRole.COORDINATOR); - WaoQueryHelper.UserProfileProperty userProfileProperty = WaoQueryHelper.newUserProfileProperty(); WaoQueryHelper.WaoUserProperty waoUserProperty = WaoQueryHelper.newWaoUserProperty(); - TopiaQuery query = dao.createQuery() + TopiaQuery query = dao.createQuery(waoUserProperty.$alias()) .addJoin(waoUserProperty.userProfile(), userProfileProperty.$alias(), false) .addEquals(userProfileProperty.userRoleOrdinal(), UserRole.OBSERVER.ordinal(), UserRole.COORDINATOR.ordinal()) .addOrder(WaoUser.PROPERTY_FIRST_NAME, WaoUser.PROPERTY_LAST_NAME); @@ -405,6 +402,10 @@ query.addEquals(WaoUser.PROPERTY_ACTIVE, Boolean.TRUE); } + if (log.isDebugEnabled()) { + log.debug("query to find observers " + query); + } + return dao.findAllByQuery(query); } @@ -415,8 +416,6 @@ log.debug("Set company for new user : " + company.getName()); } user.setCompany(company); - // Default role set to OBSERVER not readOnly - user.addUserRole(UserRole.OBSERVER, false); return user; } @@ -453,14 +452,14 @@ WaoUser.PROPERTY_LAST_NAME, "Admin"); user.setCompany(company); + UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction); + // this account will be admin on every programs Collection<UserProfile> profiles = new LinkedList<UserProfile>(); for (ObsProgram obsProgram : ObsProgram.values()) { - UserProfile adminProfile = new UserProfileImpl(); - adminProfile.setUserRole(UserRole.ADMIN); - adminProfile.setObsProgram(obsProgram); - adminProfile.setCanWrite(true); + UserProfile adminProfile = new UserProfileImpl(obsProgram, UserRole.ADMIN, true); + userProfileDAO.create(adminProfile); profiles.add(adminProfile); } user.setUserProfile(profiles); Modified: trunk/wao-business/src/main/xmi/wao.properties =================================================================== --- trunk/wao-business/src/main/xmi/wao.properties 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/main/xmi/wao.properties 2010-12-02 18:18:37 UTC (rev 819) @@ -29,10 +29,8 @@ #model.tagvalue.useLegacyDAO=true -#fr.ifremer.wao.entity.Company.attribute.waoUser.tagvalue.lazy=false -#fr.ifremer.wao.entity.Company.attribute.waoUser.tagvalue.orderBy=firstName,lastName +fr.ifremer.wao.entity.WaoUser.attribute.userProfile.tagvalue.lazy=false -#fr.ifremer.wao.entity.SampleRow.attribute.sampleMonth.tagvalue.lazy=false fr.ifremer.wao.entity.SampleRow.attribute.sampleMonth.tagvalue.orderBy=periodDate fr.ifremer.wao.entity.SampleRow.attribute.fishingZone.tagvalue.lazy=false fr.ifremer.wao.entity.SampleRow.attribute.fishingZone.tagvalue.orderBy=facadeName,sectorName,districtCode Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java 2010-12-02 18:18:37 UTC (rev 819) @@ -140,8 +140,7 @@ WaoUser.PROPERTY_COMPANY, findDefaultCompany(), WaoUser.PROPERTY_LOGIN, OBSERVER_DEFAULT_LOGIN, WaoUser.PROPERTY_FIRST_NAME, OBSERVER_DEFAULT_FIRST_NAME, - WaoUser.PROPERTY_LAST_NAME, OBSERVER_DEFAULT_LAST_NAME, - WaoUser.PROPERTY_ROLE, UserRole.OBSERVER.ordinal()); + WaoUser.PROPERTY_LAST_NAME, OBSERVER_DEFAULT_LAST_NAME); if (log.isDebugEnabled()) { log.debug("Create default observer : " + observer); } @@ -179,8 +178,7 @@ WaoUser.PROPERTY_COMPANY, company, WaoUser.PROPERTY_LOGIN, login, WaoUser.PROPERTY_FIRST_NAME, null, - WaoUser.PROPERTY_LAST_NAME, null, - WaoUser.PROPERTY_ROLE, role.ordinal()); + WaoUser.PROPERTY_LAST_NAME, null); if (log.isDebugEnabled()) { log.debug("Create observer : " + observer); Deleted: trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java 2010-12-02 18:18:37 UTC (rev 819) @@ -1,98 +0,0 @@ -/* - * #%L - * Wao :: Business - * %% - * Copyright (C) 2009 - 2010 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package fr.ifremer.wao.entity; - -import fr.ifremer.wao.bean.UserRole; -import org.junit.Assert; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Created: 8 juin 2010 - * - * @author fdesbois <fdesbois at codelutin.com> - * @version $Id$ - */ -public class WaoUserImplTest { - - private static final Logger log = - LoggerFactory.getLogger(WaoUserImplTest.class); - - - @Test - public void testAddUserRole() { - - WaoUser user = new WaoUserImpl(); - user.setRole(2); // only OBSERVER - - user.addUserRole(UserRole.COORDINATOR, false); - Assert.assertEquals(6, user.getRole()); - Assert.assertEquals(0, user.getRoleReadOnly()); - - user.addUserRole(UserRole.GUEST, true); - Assert.assertEquals(14, user.getRole()); - Assert.assertEquals(8, user.getRoleReadOnly()); - - user.addUserRole(UserRole.ADMIN, true); - Assert.assertEquals(15, user.getRole()); - Assert.assertEquals(9, user.getRoleReadOnly()); - - // Do nothing, role already set - user.addUserRole(UserRole.OBSERVER, true); - Assert.assertEquals(15, user.getRole()); - // readOnly is updated - Assert.assertEquals(11, user.getRoleReadOnly()); - } - - @Test - public void testRemoveUserRole() { - - WaoUser user = new WaoUserImpl(); - user.setRole(7); // OBSERVER, ADMIN, COORDINATOR - - user.removeUserRole(UserRole.COORDINATOR); - Assert.assertEquals(3, user.getRole()); - - user.removeUserRole(UserRole.ADMIN); - Assert.assertEquals(2, user.getRole()); - - user.removeUserRole(UserRole.ADMIN); - Assert.assertEquals(2, user.getRole()); - - user.addUserRole(UserRole.GUEST, false); - Assert.assertEquals(10, user.getRole()); - } - -// @Test -// public void testCurrentRole() { -// -// WaoUser user = new WaoUserImpl(); -// user.addUserRole(UserRole.OBSERVER, true); -// -// boolean result = user.setCurrentRole(UserRole.OBSERVER); -// Assert.assertTrue(result); -// Assert.assertTrue(user.isCurrentReadOnly()); -// -// result = user.setCurrentRole(UserRole.ADMIN); -// Assert.assertFalse(result); -// } -} Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2010-12-02 18:18:37 UTC (rev 819) @@ -34,6 +34,7 @@ import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.ConnectedUserImpl; import fr.ifremer.wao.bean.ContactState; +import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.ActivityCalendar; import fr.ifremer.wao.entity.ActivityCalendarDAO; @@ -48,6 +49,8 @@ import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRowDAO; import fr.ifremer.wao.entity.SampleRowLogImpl; +import fr.ifremer.wao.entity.UserProfile; +import fr.ifremer.wao.entity.UserProfileImpl; import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.entity.WaoUserImpl; import org.junit.After; @@ -404,14 +407,15 @@ user.setLastName("Michmuche"); // Evo #2063 : the defaut instanciation of WaoUser doesn't put the // user automatically as an non admin - user.addUserRole(UserRole.OBSERVER, false); + UserProfile profile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.OBSERVER, true); + user.addUserProfile(profile); Company company = new CompanyImpl(); company.setName("TARTANPION"); user.setCompany(company); ConnectedUser connectedUser = new ConnectedUserImpl(); connectedUser.setUser(user); - connectedUser.setRole(UserRole.OBSERVER); + connectedUser.setProfile(profile); ActivityCalendar result = service.getLastActivityCalendar(connectedUser, boat); Assert.assertNotNull(result); Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2010-12-02 18:18:37 UTC (rev 819) @@ -147,8 +147,7 @@ WaoUser.PROPERTY_COMPANY, company, WaoUser.PROPERTY_LOGIN, "jmichmuche", WaoUser.PROPERTY_FIRST_NAME, "Jean", - WaoUser.PROPERTY_LAST_NAME, "Michmuche", - WaoUser.PROPERTY_ROLE, UserRole.OBSERVER.ordinal()); + WaoUser.PROPERTY_LAST_NAME, "Michmuche"); when(contact.getObserver()).thenReturn(observer); } Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java 2010-12-02 18:18:37 UTC (rev 819) @@ -25,9 +25,14 @@ package fr.ifremer.wao.service; import fr.ifremer.wao.TestManager; +import fr.ifremer.wao.WaoDAOHelper; +import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.CompanyImpl; +import fr.ifremer.wao.entity.UserProfile; +import fr.ifremer.wao.entity.UserProfileDAO; +import fr.ifremer.wao.entity.UserProfileImpl; import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.entity.WaoUserImpl; import org.junit.After; @@ -36,6 +41,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.nuiton.topia.TopiaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -132,6 +138,21 @@ public void testGetObservers() throws Exception { log.info("## START ## getObservers"); + UserProfile adminProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.ADMIN, true); + UserProfile coordinatorProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.COORDINATOR, true); + UserProfile observerProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.OBSERVER, true); + UserProfile observerProfile2 = new UserProfileImpl(ObsProgram.OBSMER, UserRole.OBSERVER, true); + + TopiaContext context = manager.getContext().beginTransaction(); + UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(context); + userProfileDAO.create(adminProfile); + userProfileDAO.create(coordinatorProfile); + userProfileDAO.create(observerProfile); + // each user need its own profiles, so we can't re-use observerProfile + userProfileDAO.create(observerProfile2); + context.commitTransaction(); + manager.getContext().closeTransaction(context); + Company company = new CompanyImpl(); company.setName("TARTANPION"); service.createUpdateCompany(company); @@ -144,7 +165,7 @@ user1.setLogin("user1"); user1.setFirstName("Jean"); user1.setLastName("Michmuche"); - user1.addUserRole(UserRole.OBSERVER, false); + user1.addProfile(observerProfile); user1.setCompany(company); user1.setActive(true); service.createUpdateUser(user1, true); @@ -153,7 +174,7 @@ user2.setLogin("user2"); user2.setFirstName("Jack"); user2.setLastName("Pot"); - user2.addUserRole(UserRole.ADMIN, false); + user2.addProfile(adminProfile); user2.setCompany(company); user2.setActive(true); service.createUpdateUser(user2, true); @@ -162,7 +183,7 @@ user3.setLogin("user3"); user3.setFirstName("Denis"); user3.setLastName("La Malice"); - user3.addUserRole(UserRole.OBSERVER, false); + user3.addProfile(observerProfile2); user3.setCompany(company); user3.setActive(false); service.createUpdateUser(user3, true); @@ -172,13 +193,20 @@ user4.setFirstName("Ben"); user4.setLastName("Hur"); // The coordinator is also an observer - user4.addUserRole(UserRole.COORDINATOR, false); + user4.addProfile(coordinatorProfile); user4.setCompany(company2); user4.setActive(true); service.createUpdateUser(user4, true); /** EXEC METHOD **/ List<WaoUser> users = service.getObservers(null, false); + + if (log.isDebugEnabled()) { + for (WaoUser waoUser : users) { + log.debug("observer found " + waoUser.getFullName()); + } + } + // user1, user3 and user4 Assert.assertEquals(3, users.size()); Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-02 18:18:37 UTC (rev 819) @@ -51,6 +51,7 @@ import fr.ifremer.wao.ui.data.ImportEngine; import fr.ifremer.wao.ui.data.RequiresAuthentication; import fr.ifremer.wao.ui.services.WaoManager; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.tapestry5.EventContext; import org.apache.tapestry5.OptionModel; @@ -480,7 +481,7 @@ @Log void onValidateFormFromUserForm() { userForm.clearErrors(); - if (userEdited.getUserRoles().isEmpty()) { + if (CollectionUtils.isEmpty(userEdited.getUserProfile())) { userForm.recordError("L'utilisateur doit au minimum avoir un rôle."); } } @@ -523,7 +524,7 @@ @Persist @Property - private UserRole userRole; + private UserProfile profile; @Persist @Property @@ -533,7 +534,7 @@ private UserRole role; @Property - private int roleIndex; + private int profileIndex; @Property private boolean refreshUserRoleZone; @@ -558,20 +559,23 @@ } public String getRoleReadOnly() { - String text = ""; + /*String text = ""; if (userEdited.isReadOnly(role)) { text = "lecture seule"; } - return text; + return text;*/ + return "not yet implemented"; } @Log void onChangeFromUserRole(String value) { + /* if (StringUtils.isNotEmpty(value)) { userRole = UserRole.valueOf(value); } else { userRole = null; } + */ } @Log @@ -581,6 +585,7 @@ @Log Object onActionFromAddRole() { + /* if (log.isDebugEnabled()) { log.debug("Add userRole : " + userRole + " (readOnly=" + readOnly + ")"); @@ -594,15 +599,20 @@ // Refresh the zone refreshUserRoleZone = true; return userRoleZone; + */ + return null; } @Log Object onActionFromRemoveRole(int roleIndex) { + /* UserRole roleToRemove = userEdited.getUserRoles().get(roleIndex); userEdited.removeUserRole(roleToRemove); // Refresh the zone refreshUserRoleZone = true; return userRoleZone; + */ + return null; } /*********************** INDICATORS AND LEVELS ****************************/ Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-02 18:18:37 UTC (rev 819) @@ -25,9 +25,8 @@ import fr.ifremer.wao.WaoBusinessException.Type; import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.ConnectedUser; -import fr.ifremer.wao.bean.UserRole; -import fr.ifremer.wao.entity.*; import fr.ifremer.wao.entity.UserProfile; +import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.service.ServiceUser; import fr.ifremer.wao.ui.components.FeedBack; import fr.ifremer.wao.ui.data.TapestryUtil; @@ -245,7 +244,7 @@ private SelectModel roleSelectModel; @Property - private UserRole userRole; + private UserProfile userProfile; /** * Retrieve the SelectModel for user roles. Will be loaded only if user is @@ -263,7 +262,7 @@ List<OptionModel> options = new ArrayList<OptionModel>(); for (UserProfile profile : user.getUserProfile()) { - OptionModel option = new OptionModelImpl(profile.getUserRole().getLabel(), role); + OptionModel option = new OptionModelImpl(profile.getDescription(), profile); options.add(option); } roleSelectModel = new SelectModelImpl(null, options); @@ -283,9 +282,9 @@ */ Link onSuccessFromRoleForm() { if (logger.isDebugEnabled()) { - logger.debug("Connection with role : " + userRole); + logger.debug("Connection with role : " + userProfile.getDescription()); } - serviceAuthentication.getConnectedUser().setRole(userRole); + serviceAuthentication.getConnectedUser().setProfile(userProfile); return getRedirectLink(); } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-12-02 18:18:37 UTC (rev 819) @@ -232,9 +232,7 @@ * @return true if import/export of contacts can be done */ public boolean canImportExport() { - return (user.isAdmin() || - user.getRole().equals(UserRole.COORDINATOR)) && - !user.isReadOnly(); + return (user.isAdmin() || user.isCoordinator()) && ! user.isReadOnly(); } @Log @@ -458,9 +456,7 @@ * @return true if the validation actions can be displayed */ public boolean hasValidationActions() { - return (user.isAdmin() || - user.getRole().equals(UserRole.COORDINATOR)) && - !user.isReadOnly(); + return (user.isAdmin() || user.isCoordinator()) && ! user.isReadOnly(); } public boolean canValidate() { Modified: trunk/wao-ui/src/main/webapp/Administration.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-02 18:18:37 UTC (rev 819) @@ -115,7 +115,7 @@ <t:zone id="so-admin-userRoleZone" t:id="userRoleZone" t:update="show"> <t:nuiton.subForm t:visible="refreshUserRoleZone"> <label t:type="label" for="userRole" /> - <select t:type="select" t:id="userRole" t:value="userRole" t:model="userRoleSelectModel" + <select t:type="select" t:id="userRole" t:value="userProfile" t:model="userRoleSelectModel" t:mixins="ck/onEvent" t:event="change"/> <span>Lecture seule : </span> @@ -126,9 +126,9 @@ <img src="${asset:context:img/add-16px.png}" /> </a> <ul> - <li t:type="loop" t:source="userEdited.userRoles" t:value="role" t:index="roleIndex"> + <li t:type="loop" t:source="userEdited.userProfile" t:value="profile" t:index="profileIndex"> ${role.label} ${roleReadOnly} - <a t:type="actionlink" t:id="removeRole" t:context="roleIndex" title="Supprimer ce rôle" t:zone="so-admin-userRoleZone"> + <a t:type="actionlink" t:id="removeRole" t:context="profileIndex" title="Supprimer ce rôle" t:zone="so-admin-userRoleZone"> <img src="${asset:context:img/remove-22px.png}" /> </a> </li> Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java =================================================================== --- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-12-02 14:39:21 UTC (rev 818) +++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-12-02 18:18:37 UTC (rev 819) @@ -29,9 +29,11 @@ import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.ConnectedUserImpl; +import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.News; +import fr.ifremer.wao.entity.UserProfileImpl; import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.service.ServiceNews; import fr.ifremer.wao.service.ServiceUser; @@ -48,8 +50,9 @@ import test.fr.ifremer.wao.ui.AbstractApplicationTest; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; -import java.util.List; +import java.util.LinkedList; import java.util.Map; import static org.mockito.Mockito.mock; @@ -149,17 +152,15 @@ Company company = mock(Company.class); when(company.getName()).thenReturn("TEST"); - List<UserRole> roles = new ArrayList<UserRole>(); - roles.add(UserRole.ADMIN); - roles.add(UserRole.OBSERVER); + Collection<fr.ifremer.wao.entity.UserProfile> profiles = new LinkedList<fr.ifremer.wao.entity.UserProfile>(); + profiles.add(new UserProfileImpl(ObsProgram.OBSMER, UserRole.ADMIN, true)); + profiles.add(new UserProfileImpl(ObsProgram.OBSMER, UserRole.COORDINATOR, true)); WaoUser user = mock(WaoUser.class); - when(user.getUserRoles()).thenReturn(roles); + when(user.getUserProfile()).thenReturn(profiles); when(user.getLogin()).thenReturn("multiroleUser"); when(user.getFullName()).thenReturn("User Test"); when(user.getCompany()).thenReturn(company); - when(user.isReadOnly(UserRole.ADMIN)).thenReturn(false); - when(user.isReadOnly(UserRole.OBSERVER)).thenReturn(false); return user; }
participants (1)
-
bleny@users.labs.libre-entreprise.org