Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
December 2010
- 3 participants
- 58 discussions
[Suiviobsmer-commits] r825 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/resources/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 09 Dec '10
by bleny@users.labs.libre-entreprise.org 09 Dec '10
09 Dec '10
Author: bleny
Date: 2010-12-09 09:18:12 +0000 (Thu, 09 Dec 2010)
New Revision: 825
Log:
filter sampleRow and contacts on ObsProgram ; fix user admin ui ; misc code style
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -41,7 +41,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.logging.Logger;
/**
* PgMigrationCallback
@@ -51,9 +50,7 @@
* @author fdesbois <fdesbois at codelutin.com>
*/
public class PostgresMigrationCallback extends WaoMigrationCallBack {
- private static final Logger logger = Logger.getLogger(PostgresMigrationCallback.class.getName());
-
@Override
protected void createUserRoleColumn_1_1a(List<String> queries) {
// Evo #2063
@@ -411,6 +408,7 @@
/** Help method to create insertion for initial data in table levels.
* @param indicatorTopiaId the topiaId of the concerned indicator (foreign key)
+ * @param topiaId topiaId for the indicatorLevel to insert
* @param level value in the tuple
* @param upperBound value in the tuble
* @return an SQL "insert" request for table IndicatorLevel
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -363,6 +363,11 @@
filter.getTargetSpeciesDCF());
}
+ // filtering on ObsProgram
+ if (filter.getObsProgram() != null) {
+ query.addEquals(sampleRowProperty.obsProgramOrdinal(), filter.getObsProgram().ordinal());
+ }
+
if(logger.isDebugEnabled()) {
logger.debug("sampling filter query " + query);
}
@@ -596,8 +601,13 @@
// ORDER_BY
if (StringUtils.isNotEmpty(orderBy)) {
query.addOrder(contactProperty.$property(orderBy));
- }
+ }
+ // filtering on ObsProgram
+ if (filter.getObsProgram() != null) {
+ query.addEquals(contactProperty.obsProgramOrdinal(), filter.getObsProgram().ordinal());
+ }
+
return query;
}
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
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-08 16:13:54 UTC (rev 824)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -546,8 +546,7 @@
private UserProfile editedProfile;
@Persist
- @Property
- private boolean readOnly;
+ private Boolean readOnly;
@Property
private UserRole role;
@@ -558,6 +557,17 @@
@Property
private boolean refreshUserRoleZone;
+ public Boolean getReadOnly() {
+ if (readOnly == null) {
+ readOnly = false;
+ }
+ return readOnly;
+ }
+
+ public void setReadOnly(Boolean readOnly) {
+ this.readOnly = readOnly;
+ }
+
@Log
public UserProfile getEditedProfile() {
if (editedProfile == null) {
@@ -602,7 +612,10 @@
@Log
void onChangeFromReadOnly(boolean value) {
- getEditedProfile().setCanWrite( ! value);
+ if (log.isDebugEnabled()) {
+ log.debug("readOnly value changed to " + value);
+ }
+ setReadOnly(value);
}
@Log
@@ -621,7 +634,7 @@
Object onActionFromAddRole() {
if (getEditedProfile() != null &&
getEditedProfile().getUserRoleOrdinal() != null) {
- getEditedProfile().setCanWrite( ! readOnly);
+ getEditedProfile().setCanWrite( ! getReadOnly());
if (log.isDebugEnabled()) {
log.debug("Add user profile : " + getEditedProfile().getDescription());
}
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-08 16:13:54 UTC (rev 824)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -167,6 +167,7 @@
GregorianCalendar beginningOfCurrentYear = new GregorianCalendar();
beginningOfCurrentYear.set(Calendar.DAY_OF_YEAR, 1);
contactFilter.setFromDate(beginningOfCurrentYear.getTime());
+ contactFilter.setObsProgram(user.getProfile().getObsProgram());
}
return contactFilter;
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -62,7 +62,6 @@
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -197,6 +196,7 @@
// Initialize period
PeriodDates period = PeriodDates.createMonthsPeriodFromToday(11);
filter.setPeriod(period);
+ filter.setObsProgram(user.getProfile().getObsProgram());
}
return filter;
}
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-12-09 09:18:12 UTC (rev 825)
@@ -37,7 +37,7 @@
loginAdministration-label: Identifiant de connexion (email)*
active-label: Actif
generatePassword-label: G\u00e9n\u00e9rer le password
-userRole-label: R\u00f4les
+userRole-label: R\u00f4le
readOnly-label: Lecture seule
# follow statement doesn't work with BeanEditForm
userForm-errors-banner: L'utilisateur n'a pas \u00e9t\u00e9 sauvegard\u00e9 \u00e0 cause des erreurs suivantes :
1
0
[Suiviobsmer-commits] r824 - 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/service wao-ui/src/main/java/fr/ifremer/wao/ui/base 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
by bleny@users.labs.libre-entreprise.org 08 Dec '10
by bleny@users.labs.libre-entreprise.org 08 Dec '10
08 Dec '10
Author: bleny
Date: 2010-12-08 16:13:54 +0000 (Wed, 08 Dec 2010)
New Revision: 824
Log:
UI improvement for managing user ; tests issues remaining
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.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/webapp/Administration.tml
trunk/wao-ui/src/main/webapp/Connexion.tml
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.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-07 15:58:04 UTC (rev 823)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -88,4 +88,9 @@
return test;
}
+
+ @Override
+ public boolean isAdminAndCanWrite() {
+ return ! isReadOnly() && isAdmin();
+ }
}
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-07 15:58:04 UTC (rev 823)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -71,12 +71,26 @@
@Override
public String getDescription() {
StringBuilder result = new StringBuilder();
- result.append(getUserRole().getLabel());
+ if (getUserRoleOrdinal() == null) {
+ result.append("<no user role>");
+ } else {
+ result.append(getUserRole().getLabel());
+ }
result.append(" sur ");
- result.append(getObsProgram().getLabel());
- if (isReadOnly()) {
+ if (getObsProgramOrdinal() == null) {
+ result.append("<no program>");
+ } else {
+ result.append(getObsProgram().getLabel());
+ }
+ if (getCanWrite() == null) {
+ result.append("<no write access specified>");
+ } else if (isReadOnly()) {
result.append(" (lecture seule)");
}
return result.toString();
}
+
+ public String toString() {
+ return getDescription() + " " + getTopiaId();
+ }
}
\ No newline at end of file
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-07 15:58:04 UTC (rev 823)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -56,6 +56,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -196,62 +197,100 @@
}
WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
+ UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
- boolean newUser = context.prepareTopiaId(WaoUser.class, user);
+ WaoUser actualUser = user;
- // Check for a new user if login already exists
+ boolean newUser = user.getTopiaId() == null;
+
if (newUser) {
+ context.prepareTopiaId(WaoUser.class, actualUser);
WaoUser existUser = dao.findByLogin(user.getLogin());
+ // Check for a new user if login already exists
if (existUser != null) {
throw new WaoBusinessException(Type.ALREADY_EXISTS,
this.getClass(),
"Un utilisateur existe déjà avec ce login " +
user.getLogin());
}
+
+ if (actualUser.getUserProfile() != null) {
+ for (UserProfile userProfile : actualUser.getUserProfile()) {
+ log.debug(userProfile + " to save : " + userProfile.getDescription());
+ context.prepareTopiaId(UserProfile.class, userProfile);
+ userProfileDAO.update(userProfile);
+ }
+ }
+ } else {
+ actualUser = dao.findByTopiaId(user.getTopiaId());
+
+ Collection<UserProfile> oldProfiles;
+ if (actualUser.getUserProfile() == null) {
+ oldProfiles = Collections.EMPTY_LIST;
+ } else {
+ oldProfiles = new ArrayList<UserProfile>(actualUser.getUserProfile());
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("old profiles : " + oldProfiles);
+ }
+
+ // set may be buggy
+ // actualUser.setUserProfile(user.getUserProfile());
+ actualUser.clearUserProfile();
+ actualUser.addAllUserProfile(user.getUserProfile());
+
+ if (log.isDebugEnabled()) {
+ log.debug("new profiles : " + actualUser.getUserProfile());
+ }
+
+ for (UserProfile userProfile : actualUser.getUserProfile()) {
+ if (log.isDebugEnabled()) {
+ log.debug("is " + userProfile + " in " + oldProfiles + " ? "
+ + oldProfiles.contains(userProfile));
+ }
+ if (oldProfiles.contains(userProfile)) {
+ // this profile was already attributed to this user, don't
+ // remove it : just keep it from being removed
+ if (log.isDebugEnabled()) {
+ log.debug("profile " + userProfile + " was already given to user");
+ }
+ oldProfiles.remove(userProfile);
+ } else {
+ // this profile was added to the user
+ if (log.isDebugEnabled()) {
+ log.debug("profile " + userProfile + " is new for user");
+ }
+ context.prepareTopiaId(UserProfile.class, userProfile);
+ userProfileDAO.create(userProfile);
+ }
+ }
+
+ // now, oldProfiles contains user has no longer, we must remove them
+ if (log.isDebugEnabled()) {
+ log.debug("will remove deleted profiles : " + oldProfiles);
+ }
+ for (UserProfile userProfile : oldProfiles) {
+ userProfileDAO.delete(userProfile);
+ }
}
- String password = user.getPassword();
+ String password = actualUser.getPassword();
if (generatePassword) {
password = context.createRandomString(8);
- user.setPasswordChanged(true);
+ actualUser.setPasswordChanged(true);
}
// For a password set manually by user or generated
- if (user.isPasswordChanged()) {
+ if (actualUser.isPasswordChanged()) {
String passwordEncoded = context.encodeString(password);
- user.setPassword(passwordEncoded);
+ actualUser.setPassword(passwordEncoded);
}
- WaoQueryHelper.UserProfileProperty userProfileProperty = WaoQueryHelper.newUserProfileProperty();
- WaoQueryHelper.WaoUserProperty waoUserProperty = WaoQueryHelper.newWaoUserProperty();
- TopiaQuery query = dao.createQuery(waoUserProperty.$alias())
- .setSelect(userProfileProperty.$alias())
- .addJoin(waoUserProperty.userProfile(), userProfileProperty.$alias(), false)
- .addEquals(waoUserProperty.$alias(), user);
- if (log.isDebugEnabled()) {
- log.debug("query to find old profiles for user is " + query);
- }
+ log.debug("will store " + actualUser.getTopiaId());
+ dao.update(actualUser);
+ log.debug("had stored " + actualUser.getTopiaId());
- UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
- List<UserProfile> oldProfiles = userProfileDAO.findAllByQuery(query);
-
- if (log.isDebugEnabled()) {
- log.debug("profiles for user was " + oldProfiles);
- }
- for (UserProfile userProfile : oldProfiles) {
- userProfileDAO.delete(userProfile);
- }
-
- if (user.getUserProfile() != null) {
- for (UserProfile userProfile : user.getUserProfile()) {
- log.debug(userProfile + " to save : " + userProfile.getDescription());
- context.prepareTopiaId(UserProfile.class, userProfile);
- userProfileDAO.update(userProfile);
- }
- }
-
- dao.update(user);
-
transaction.commitTransaction();
try {
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
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-07 15:58:04 UTC (rev 823)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -25,6 +25,7 @@
package fr.ifremer.wao.service;
import fr.ifremer.wao.TestManager;
+import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.UserRole;
@@ -45,6 +46,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.LinkedList;
import java.util.List;
/**
@@ -101,10 +103,48 @@
/**
* Test of createUpdateUser method, of class ServiceUserImpl.
+ *
+ * This test is not complete : it doesn't check if given data are well
+ * registered. For profile updating, it only checks that no exception is
+ * raised.
*/
- //@Test
+ @Test
public void testCreateUpdateUser() throws Exception {
System.out.println("createUpdateUser");
+
+ // create a user with no role
+ WaoUser user = new WaoUserImpl();
+ user.setLogin("login");
+ service.createUpdateUser(user, false);
+
+ // now, update user with or without adding, removing, a profile to
+ // see if an error is raised
+ List<UserProfile> profiles = new LinkedList<UserProfile>();
+ user.setUserProfile(profiles);
+
+ UserProfile adminProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.ADMIN, true);
+ UserProfile coordinatorProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.COORDINATOR, true);
+
+ profiles.add(adminProfile);
+
+ log.debug("trying to store " + user.getTopiaId());
+ service.createUpdateUser(user, false);
+
+ profiles.add(coordinatorProfile);
+ service.createUpdateUser(user, false);
+
+ profiles.remove(adminProfile);
+ service.createUpdateUser(user, false);
+
+ // check that creating two user with the same login is not allowed
+ try {
+ user = new WaoUserImpl();
+ user.setLogin("login");
+ service.createUpdateUser(user, false);
+ Assert.fail("an exception should have been raised");
+ } catch (WaoBusinessException e) {
+ Assert.assertEquals(WaoBusinessException.Type.ALREADY_EXISTS, e.getType());
+ }
}
/**
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -143,9 +143,6 @@
@Persist
private boolean programSelect;
-
-
-
public void onSelectedFromAddSampleRowCode() {
if (sampleRowId != null) {
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-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -415,6 +415,11 @@
layout.addError(eee.getMessage());
}
}
+
+ // reset : if user change, its profiles change
+ editedUserProfiles = null;
+ editedProfile = null;
+
if (log.isDebugEnabled()) {
log.debug("'User id : " + userId);
}
@@ -483,8 +488,14 @@
@Log
void onValidateFormFromUserForm() {
userForm.clearErrors();
- if (CollectionUtils.isEmpty(userEdited.getUserProfile())) {
+
+ if (CollectionUtils.isEmpty(getEditedUserProfiles())) {
userForm.recordError("L'utilisateur doit au minimum avoir un rôle.");
+ } else {
+ // set may be buggy
+ // getUserEdited().setUserProfile(getEditedUserProfiles());
+ getUserEdited().clearUserProfile();
+ getUserEdited().addAllUserProfile(getEditedUserProfiles());
}
}
@@ -524,6 +535,7 @@
private SelectModel userRoleSelectModel;
+ @Persist
private List<UserProfile> editedUserProfiles;
@Persist
@@ -546,6 +558,7 @@
@Property
private boolean refreshUserRoleZone;
+ @Log
public UserProfile getEditedProfile() {
if (editedProfile == null) {
editedProfile = new UserProfileImpl();
@@ -558,6 +571,7 @@
return editedProfile;
}
+ @Log
public SelectModel getUserRoleSelectModel() {
if (userRoleSelectModel == null) {
List<OptionModel> options = new ArrayList<OptionModel>();
@@ -572,16 +586,16 @@
}
return userRoleSelectModel;
}
-
+
private OptionModel newUserRoleOption(UserRole role) {
return new OptionModelImpl(role.getLabel(), role);
}
@Log
void onChangeFromUserRole(String value) {
- // XXX 20101203 bleny, what if value="" ? field is not reset and can't
- // be reset
- if (StringUtils.isNotEmpty(value)) {
+ if (StringUtils.isEmpty(value)) {
+ getEditedProfile().setUserRole(null);
+ } else {
getEditedProfile().setUserRole(UserRole.valueOf(value));
}
}
@@ -591,17 +605,23 @@
getEditedProfile().setCanWrite( ! value);
}
+ @Log
public List<UserProfile> getEditedUserProfiles() {
if (editedUserProfiles == null) {
- editedUserProfiles = new ArrayList<UserProfile>(getUserEdited().getUserProfile());
- getUserEdited().setUserProfile(editedUserProfiles);
+ if (getUserEdited() != null && getUserEdited().getUserProfile() != null) {
+ editedUserProfiles = new ArrayList<UserProfile>(getUserEdited().getUserProfile());
+ } else {
+ editedUserProfiles = new ArrayList<UserProfile>();
+ }
}
return editedUserProfiles;
}
@Log
Object onActionFromAddRole() {
- if (getEditedProfile() != null && getEditedProfile().getUserRole() != null) {
+ if (getEditedProfile() != null &&
+ getEditedProfile().getUserRoleOrdinal() != null) {
+ getEditedProfile().setCanWrite( ! readOnly);
if (log.isDebugEnabled()) {
log.debug("Add user profile : " + getEditedProfile().getDescription());
}
@@ -617,8 +637,16 @@
@Log
Object onActionFromRemoveRole(int roleIndex) {
+ if (log.isDebugEnabled()) {
+ log.debug("edited profiles before remove : " + getEditedUserProfiles());
+ }
+
getEditedUserProfiles().remove(roleIndex);
+ if (log.isDebugEnabled()) {
+ log.debug("edited profiles after remove : " + getEditedUserProfiles());
+ }
+
// Refresh the zone
refreshUserRoleZone = true;
return userRoleZone;
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-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -29,22 +29,20 @@
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.GenericSelectModel;
import fr.ifremer.wao.ui.data.TapestryUtil;
import fr.ifremer.wao.ui.services.RequiresAuthenticationFilter;
import fr.ifremer.wao.ui.services.ServiceAuthentication;
import org.apache.tapestry5.Link;
-import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.internal.OptionModelImpl;
-import org.apache.tapestry5.internal.SelectModelImpl;
import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.ioc.services.PropertyAccess;
import org.apache.tapestry5.services.PageRenderLinkSource;
import org.slf4j.Logger;
@@ -100,6 +98,9 @@
@InjectComponent
private Form connexionForm;
+ @Inject
+ private PropertyAccess propertyAccess;
+
void onActivate(Object... activationContext) {
if (logger.isDebugEnabled()) {
logger.debug("Activiation context : " + Arrays.toString(activationContext));
@@ -241,33 +242,33 @@
}
}
- private SelectModel profileSelectModel;
+ private GenericSelectModel<UserProfile> profileSelectModel;
@Property
private UserProfile userProfile;
+ @Property
+ private String userProfileId;
+
/**
* Retrieve the SelectModel for user roles. Will be loaded only if user is
* already connected. This list is useful if user as more than one role.
*
* @return the SelectModel for user roles
*/
- public SelectModel getProfileSelectModel() {
+ public GenericSelectModel<UserProfile> getProfileSelectModel() throws WaoException {
if (serviceAuthentication.existConnectedUser()) {
WaoUser user = serviceAuthentication.getConnectedUser().getUser();
if (logger.isDebugEnabled()) {
logger.debug("Load user roles for " + user.getLogin());
}
-
- List<OptionModel> options = new ArrayList<OptionModel>();
- for (UserProfile profile : user.getUserProfile()) {
- OptionModel option = new OptionModelImpl(profile.getDescription(), profile);
- options.add(option);
- }
- profileSelectModel = new SelectModelImpl(null, options);
+ List<UserProfile> profiles = new ArrayList<UserProfile>(user.getUserProfile());
+ profileSelectModel = new GenericSelectModel<UserProfile>(profiles,
+ UserProfile.class, "Description", "topiaId", propertyAccess);
} else if (profileSelectModel == null) {
- profileSelectModel = new SelectModelImpl(new OptionModelImpl(null));
+ profileSelectModel = new GenericSelectModel<UserProfile>(new ArrayList<UserProfile>(),
+ UserProfile.class, "Description", "topiaId", propertyAccess);
}
return profileSelectModel;
}
@@ -281,6 +282,7 @@
* @see #getRedirectLink()
*/
Link onSuccessFromRoleForm() {
+ userProfile = getProfileSelectModel().findObject(userProfileId);
if (logger.isDebugEnabled()) {
logger.debug("Connection with role : " + userProfile.getDescription());
}
Modified: trunk/wao-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-08 16:13:54 UTC (rev 824)
@@ -126,7 +126,7 @@
<img src="${asset:context:img/add-16px.png}" />
</a>
<ul>
- <li t:type="loop" t:source="userEdited.userProfile" t:value="profile" t:index="profileIndex" t:volatile="true">
+ <li t:type="loop" t:source="editedUserProfiles" t:value="profile" t:index="profileIndex" t:volatile="true">
${profile.description}
<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}" />
@@ -185,7 +185,7 @@
<!-- ALL ACTUAL VALUES FOR INDICATORS OF GLOBAL SYNTHESIS -->
<t:loop t:source="globalSynthesisParameters.parameters" t:value="indicator" t:volatile="true">
- <t:indicatorLevels t:indicator="indicator" editable="currentUser.admin" />
+ <t:indicatorLevels t:indicator="indicator" editable="currentUser.adminAndCanWrite" />
</t:loop>
<table class="indicatorLevels">
@@ -202,7 +202,7 @@
</td>
</tr>
<tr>
- <t:if test="currentUser.admin">
+ <t:if test="currentUser.adminAndCanWrite">
<td t:type="loop" t:source="globalSynthesisParameters.globalIndicator.indicatorLevel" t:value="indicatorLevel" volatile="true">
[ <input type="text" size="3" value="${indicatorLevel.lowerBound}" disabled="disabled" /> ;
<span t:type="ck/Tooltip" t:value="Attention à bien utiliser ',' et non '.' pour les décimales" t:effect="appear">
@@ -230,18 +230,20 @@
</tr>
</table>
- <div>
- <p><label>Commentaire sur la modification* :</label></p>
- <p><input t:type="textarea" t:id="comment" cols="50" rows="5" value="comment"/></p>
- </div>
+ <t:if test="currentUser.adminAndCanWrite">
+ <div>
+ <p><label>Commentaire sur la modification* :</label></p>
+ <p><input t:type="textarea" t:id="comment" cols="50" rows="5" value="comment"/></p>
+ </div>
- <div class="fright">
- <a t:type="pagelink" page="IndicatorsHistory">
- <img src="${asset:context:/img/clock.png}" alt="Historique" title="Voir l'historique des modifications des indicateurs" />
- </a>
- <input t:type="submit" t:id="saveData" class="ico save" value="Save" title="Enregistrer les modifications" />
- <input type="reset" class="ico undo" value="Annuler les modificationss" title="Annuler les modifications" />
- </div>
+ <div class="fright">
+ <a t:type="pagelink" page="IndicatorsHistory">
+ <img src="${asset:context:/img/clock.png}" alt="Historique" title="Voir l'historique des modifications des indicateurs" />
+ </a>
+ <input t:type="submit" t:id="saveData" class="ico save" value="Save" title="Enregistrer les modifications" />
+ <input type="reset" class="ico undo" value="Annuler les modificationss" title="Annuler les modifications" />
+ </div>
+ </t:if>
</form>
</t:zone>
Modified: trunk/wao-ui/src/main/webapp/Connexion.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Connexion.tml 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/webapp/Connexion.tml 2010-12-08 16:13:54 UTC (rev 824)
@@ -72,8 +72,8 @@
t:title="literal:Choisissez dans la liste votre profil de connexion : ">
<form t:id="roleForm" t:type="form" action="tapestry">
<p class="roleSelect">
- <select t:type="select" t:id="userProfile" t:value="userProfile" t:model="profileSelectModel"
- onChange="this.form.submit()" t:volatile="true" />
+ <select t:type="select" t:id="userProfile" t:value="userProfileId" t:model="profileSelectModel"
+ onChange="this.form.submit()" />
</p>
</form>
</div>
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -26,8 +26,15 @@
import com.formos.tapestry.testify.core.TapestryTester;
import com.formos.tapestry.testify.junit4.TapestryTest;
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.CompanyImpl;
+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 fr.ifremer.wao.ui.services.AppModule;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.ApplicationStateManager;
@@ -71,6 +78,7 @@
private ApplicationStateManager stateManager;
protected void prepareObserverUser(boolean contributeSession) {
+ /*
Company company = mock(Company.class);
when(company.getName()).thenReturn("TARTANPION");
@@ -78,8 +86,22 @@
when(user.isAdmin()).thenReturn(false);
when(user.getRole()).thenReturn(UserRole.OBSERVER);
when(user.getCompany()).thenReturn(company);
+ */
+
+ Company company = new CompanyImpl();
+ company.setName("TARTANPION");
+ WaoUser user = new WaoUserImpl();
+ user.setFirstName("Jean");
+ user.setLastName("Michmuche");
+ UserProfile observerProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.OBSERVER, true);
+ user.addUserProfile(observerProfile);
+
+ ConnectedUser connectedUser = new ConnectedUserImpl();
+ connectedUser.setUser(user);
+ connectedUser.setProfile(observerProfile);
+
if (contributeSession) {
- stateManager.set(ConnectedUser.class, user);
+ stateManager.set(ConnectedUser.class, connectedUser);
}
}
1
0
[Suiviobsmer-commits] r823 - in trunk/wao-ui/src/main: java/fr/ifremer/wao/ui/pages webapp
by bleny@users.labs.libre-entreprise.org 07 Dec '10
by bleny@users.labs.libre-entreprise.org 07 Dec '10
07 Dec '10
Author: bleny
Date: 2010-12-07 15:58:04 +0000 (Tue, 07 Dec 2010)
New Revision: 823
Log:
fix contacts page filter : sample row code was not saved in filter
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
trunk/wao-ui/src/main/webapp/Contacts.tml
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-07 14:33:10 UTC (rev 822)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-12-07 15:58:04 UTC (rev 823)
@@ -220,6 +220,14 @@
return this;
}
+ public void onChangeFromSampleRow(String sampleRowId) {
+ getFilter().setSampleRow(getSampleRowSelectModel().findObject(sampleRowId));
+ if (logger.isDebugEnabled()) {
+ logger.debug("change sample row code in filter to " + getFilter().getSampleRow());
+ }
+ edited = true;
+ }
+
/**************************** CONTACT IMPORT/EXPORT ***********************/
@Property
Modified: trunk/wao-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Contacts.tml 2010-12-07 14:33:10 UTC (rev 822)
+++ trunk/wao-ui/src/main/webapp/Contacts.tml 2010-12-07 15:58:04 UTC (rev 823)
@@ -96,7 +96,7 @@
<input t:type="submit" class="ico22px refresh" t:id="refreshBySector" value="Refresh"
title="Rafraîchir les métiers en fonction de la zone sélectionnée"/>
<t:label t:for="sampleRow" />:
- <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
+ <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" t:mixins="ck/onEvent" t:event="change" />
<!-- Contact filter -->
<label>Observations: </label>
<input t:type="checkbox" t:id="mammalsObservation1" value="contactFilter.mammalsObservation" />
1
0
[Suiviobsmer-commits] r822 - trunk/wao-business/src/main/java/fr/ifremer/wao/service
by bleny@users.labs.libre-entreprise.org 07 Dec '10
by bleny@users.labs.libre-entreprise.org 07 Dec '10
07 Dec '10
Author: bleny
Date: 2010-12-07 14:33:10 +0000 (Tue, 07 Dec 2010)
New Revision: 822
Log:
refactor boarding computing in synthesis ; make it testable ; bug fixed
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-12-05 20:55:28 UTC (rev 821)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-12-07 14:33:10 UTC (rev 822)
@@ -78,8 +78,8 @@
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedHashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
@@ -199,19 +199,13 @@
}
/**
- * We need to select the boats and for each one, the number of boardings
- * done. The number of boardings is calculated with the number of contacts
- * finished linked with each boat. The {@code fromDate} is used to filter
- * results since this date. For observer view, only results for his
- * company is needed.
*
- * @return a BoardingResult which contains the number of boats for boardings
- * and for invalid boardings from 1 to {@code MAX_BOARDINGS}, the boat with
- * the max boarding and its value.
- * @throws WaoException
+ * @param data for each boat, a set of ordered contact (a sample row code
+ * and the tides begin dates)
+ * @return a boarding result
*/
- @Override
- protected BoardingResult executeGetBoardingBoats(TopiaContext transaction, SamplingFilter filter) throws Exception {
+ protected BoardingResult computeBoardingReasult(Map<Boat, LinkedHashMap<String, List<Date>>> data) {
+
Map<String, Integer> mapBoarding = new LinkedHashMap<String, Integer>();
BoardingResult result = new BoardingResultImpl();
result.setBoardings(mapBoarding);
@@ -227,6 +221,102 @@
}
mapBoarding.put(maxBoardingsKey, 0);
+ int maxBoardingCount = -1;
+ Boat maxBoardingBoat = null;
+
+ int invalidBoardingTotal = 0;
+ int boardingTotal = 0;
+
+ for (Map.Entry<Boat, LinkedHashMap<String, List<Date>>> entry : data.entrySet()) {
+ Boat boat = entry.getKey();
+ LinkedHashMap<String, List<Date>> codesAndTides = entry.getValue();
+
+ if (log.isDebugEnabled()) {
+ StringBuilder logMessage = new StringBuilder();
+ logMessage.append("in data, for boat " + boat.getName() + " tides are :");
+ for (Map.Entry<String, List<Date>> codeAndTides : codesAndTides.entrySet()) {
+ logMessage.append(codeAndTides.getKey() + " -> " + codeAndTides.getValue());
+ }
+ log.debug(logMessage.toString());
+ }
+
+ int boardingCount = 0;
+ int invalidBoardingCount = 0;
+
+ for (Map.Entry<String, List<Date>> codeAndTides : codesAndTides.entrySet()) {
+ List<Date> tides = codeAndTides.getValue();
+
+ boardingCount += tides.size();
+
+ Date lastTideBeginDate = null;
+ for (Date tideBeginDate : tides) {
+
+ if (lastTideBeginDate != null && // prevent NPE for first iteration
+ DateUtil.getDifferenceInMonths(lastTideBeginDate, tideBeginDate) <= 3) {
+
+ invalidBoardingCount += 1;
+ }
+
+ lastTideBeginDate = tideBeginDate;
+ }
+ }
+
+ invalidBoardingTotal += invalidBoardingCount;
+ boardingTotal += boardingCount;
+
+ // update max
+ if (boardingCount > maxBoardingCount) {
+ maxBoardingCount = boardingCount;
+ maxBoardingBoat = boat;
+ }
+
+ // update mapBoarding
+ String key;
+ if (boardingCount >= MAX_BOARDINGS) {
+ key = maxBoardingsKey;
+ } else {
+ key = String.valueOf(boardingCount);
+ }
+
+ Integer oldValue = mapBoarding.get(key);
+ // add one more boat for "key" number of boardings
+ mapBoarding.put(key, oldValue + 1);
+
+ if (log.isDebugEnabled()) {
+ log.debug(boat + " made " + boardingCount + " boardings");
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("boat " + boat.getName() + " did " + invalidBoardingCount
+ + " invalid boardings on " + boardingCount);
+ }
+ }
+
+ result.setMaxBoardingValue(maxBoardingCount);
+ result.setMaxBoardingBoat(maxBoardingBoat);
+ result.setBoardingsCount(boardingTotal);
+ result.setInvalidBoardingsCount(invalidBoardingTotal);
+ result.setValidBoardingsCount(boardingTotal - invalidBoardingTotal);
+
+ return result;
+
+ }
+
+ /**
+ * We need to select the boats and for each one, the number of boardings
+ * done. The number of boardings is calculated with the number of contacts
+ * finished linked with each boat. The {@code fromDate} is used to filter
+ * results since this date. For observer view, only results for his
+ * company is needed.
+ *
+ * @return a BoardingResult which contains the number of boats for boardings
+ * and for invalid boardings from 1 to {@code MAX_BOARDINGS}, the boat with
+ * the max boarding and its value.
+ * @throws WaoException
+ */
+ @Override
+ protected BoardingResult executeGetBoardingBoats(TopiaContext transaction, SamplingFilter filter) throws Exception {
+
// The number of boardings is the number of finished contacts
// Use fromDate to filter contacts finished from this date
// No need to use boat filter for this method
@@ -263,13 +353,11 @@
log.trace("Exec query : " + query);
}
- List<Object[]> nbBoardingsByBoat = transaction.findByQuery(query);
+ List<Object[]> boardingsByBoat = transaction.findByQuery(query);
-
-
if (log.isDebugEnabled()) {
- for (Object[] row : nbBoardingsByBoat) {
- log.debug("results for nbBoardingBoats " + Arrays.toString(row));
+ for (Object[] row : boardingsByBoat) {
+ log.debug("result in boardingsByBoat " + Arrays.toString(row));
}
}
@@ -285,101 +373,28 @@
// [ARC EN CIEL, 2009_0200, 2010-01-17 00:00:00.0]
// [ARC EN CIEL, 2009_0200, 2010-02-13 00:00:00.0]
- String lastBoatName = null;
- String lastSampleRowCode = null;
- Date lastTideBeginDate = null;
+ Map<Boat, LinkedHashMap<String, List<Date>>> data = new HashMap<Boat, LinkedHashMap<String, List<Date>>>();
- int currentBoardingCount = 1;
-
- int maxBoardingCount = -1;
- Boat maxBoardingBoat = null;
-
- int invalidBoardingCount = 0;
-
- // We will browse result line after line, at each line, we know what was
- // in the last line. By Comparing we know if it's the same boat.
- // If yes, check sample-row and date to count a possible invalid
- // boarding. If no, we changed boat and then we can add it to the totals
- // and consider it as a maximum
- //for (Object[] row : nbBoardingsByBoat) {
- Iterator<Object[]> it = nbBoardingsByBoat.iterator();
- while (it.hasNext()) {
- Object[] row = it.next();
-
+ for (Object[] row : boardingsByBoat) {
Boat boat = (Boat) row[0];
- String boatName = boat.getName();
String sampleRowCode = (String) row[1];
Date tideBeginDate = (Date) row[2];
- if (log.isDebugEnabled()) {
- log.debug("results for nbBoardingBoats " + Arrays.toString(row));
+ LinkedHashMap<String, List<Date>> value = data.get(boat);
+ if (value == null) {
+ value = new LinkedHashMap<String, List<Date>>();
+ data.put(boat, value);
}
- if (boatName.equals(lastBoatName)) {
-
- currentBoardingCount += 1;
-
- if (sampleRowCode.equals(lastSampleRowCode) &&
- DateUtil.getDifferenceInMonths(lastTideBeginDate, tideBeginDate) <= 3) {
-
- invalidBoardingCount += 1;
- }
-
+ List<Date> dates = value.get(sampleRowCode);
+ if (dates == null) {
+ dates = new LinkedList<Date>();
+ value.put(sampleRowCode, dates);
}
-
- boolean computeValue = // there is two case when we know we can consider we
- // computed a new set of data for a same boat
-
- // first case, current row has not the same boat
- // as last row. Common case : we can conclude
- // things from last rows
- ! boatName.equals(lastBoatName)
- // just one exception for the first row
- // don't conclude things for boat "null"
- && lastBoatName != null
-
- // second case, this is the last boat and
- // the last row, we must compute now or we will
- // miss data for the last boat
- || ! it.hasNext();
-
- if (computeValue) {
-
- // update max
- if (currentBoardingCount > maxBoardingCount) {
- maxBoardingCount = currentBoardingCount;
- maxBoardingBoat = boat;
- }
-
- // update mapBoarding
- String key;
- if (currentBoardingCount >= MAX_BOARDINGS) {
- key = maxBoardingsKey;
- } else {
- key = String.valueOf(currentBoardingCount);
- }
-
- Integer oldValue = mapBoarding.get(key);
- mapBoarding.put(key, oldValue + 1);
-
- if (log.isDebugEnabled()) {
- log.debug(lastBoatName + " made " + currentBoardingCount + " boardings");
- }
-
- // re-initialize values for the new boat in the lines
- currentBoardingCount = 1;
- }
-
- lastBoatName = boatName;
- lastSampleRowCode = sampleRowCode;
- lastTideBeginDate = tideBeginDate;
+ dates.add(tideBeginDate);
}
- result.setMaxBoardingValue(maxBoardingCount);
- result.setMaxBoardingBoat(maxBoardingBoat);
- result.setBoardingsCount(nbBoardingsByBoat.size());
- result.setInvalidBoardingsCount(invalidBoardingCount);
- result.setValidBoardingsCount(nbBoardingsByBoat.size() - invalidBoardingCount);
+ BoardingResult result = computeBoardingReasult(data);
return result;
}
1
0
[Suiviobsmer-commits] r821 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/resources/i18n wao-business/src/test/java/fr/ifremer/wao/bean wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/resources/fr/ifremer/wao/ui/components wao-ui/src/main/resources/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 05 Dec '10
by bleny@users.labs.libre-entreprise.org 05 Dec '10
05 Dec '10
Author: bleny
Date: 2010-12-05 20:55:28 +0000 (Sun, 05 Dec 2010)
New Revision: 821
Log:
WIP, adding program in whole app ; dealing with connexion form and user administration
Added:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfileForm.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfileForm.properties
trunk/wao-ui/src/main/webapp/UserProfileForm.tml
Removed:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfile.properties
trunk/wao-ui/src/main/webapp/UserProfile.tml
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.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/service/ServiceUserImpl.java
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.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/resources/fr/ifremer/wao/ui/components/Layout.tml
trunk/wao-ui/src/main/webapp/Administration.tml
trunk/wao-ui/src/main/webapp/Connexion.tml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -35,7 +35,6 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -626,10 +625,10 @@
for (Object[] row : results) {
String waoUserTopiaId = (String) row[0];
short role = (Short) row[1];
- short roleReadOnly = (Short) row[1];
+ int roleReadOnly = (Integer) row[2];
- List<UserRole> readOnlyRoles = Arrays.asList(UserRole.toUserRoles(roleReadOnly));
- for (UserRole userRole : UserRole.toUserRoles(role)) {
+ List<UserRole> readOnlyRoles = codedRolesToUserRoles_1_7(roleReadOnly);
+ for (UserRole userRole : codedRolesToUserRoles_1_7(role)) {
boolean canWrite = ! readOnlyRoles.contains(userRole);
String sql = String.format("INSERT INTO UserProfile (topiaId, topiaVersion, topiaCreateDate, waoUser, obsProgramOrdinal, userRoleOrdinal, canWrite) " +
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -24,6 +24,7 @@
package fr.ifremer.wao;
+import fr.ifremer.wao.bean.UserRole;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaException;
@@ -368,6 +369,34 @@
return result;
}
+ /** return an array of roles like when roles was stored as int in < 1.6 */
+ protected List<UserRole> codedRolesToUserRoles_1_7(int codedRoles) {
+ List<UserRole> result = null;
+ switch (codedRoles) {
+ case 0 : result = Arrays.asList(); break;
+ case 1 : result = Arrays.asList(UserRole.ADMIN); break;
+ case 2 : result = Arrays.asList(UserRole.OBSERVER); break;
+ case 3 : result = Arrays.asList(UserRole.ADMIN,UserRole.OBSERVER); break;
+ case 4 : result = Arrays.asList(UserRole.COORDINATOR); break;
+ case 5 : result = Arrays.asList(UserRole.ADMIN,UserRole.COORDINATOR); break;
+ case 6 : result = Arrays.asList(UserRole.OBSERVER,UserRole.COORDINATOR); break;
+ case 7 : result = Arrays.asList(UserRole.ADMIN,UserRole.OBSERVER,UserRole.COORDINATOR); break;
+ case 8 : result = Arrays.asList(UserRole.GUEST); break;
+ case 9 : result = Arrays.asList(UserRole.ADMIN,UserRole.GUEST); break;
+ case 10 : result = Arrays.asList(UserRole.OBSERVER,UserRole.GUEST); break;
+ case 11 : result = Arrays.asList(UserRole.ADMIN,UserRole.OBSERVER,UserRole.GUEST); break;
+ case 12 : result = Arrays.asList(UserRole.COORDINATOR,UserRole.GUEST); break;
+ case 13 : result = Arrays.asList(UserRole.ADMIN,UserRole.COORDINATOR,UserRole.GUEST); break;
+ case 14 : result = Arrays.asList(UserRole.OBSERVER,UserRole.COORDINATOR,UserRole.GUEST); break;
+ case 15 : result = Arrays.asList(UserRole.ADMIN,UserRole.OBSERVER,UserRole.COORDINATOR,UserRole.GUEST); break;
+ }
+
+ if (result == null && log.isErrorEnabled()) {
+ log.error("codedRoles value " + codedRoles + " has no sense");
+ }
+ return result;
+ }
+
public void migrateTo_1_7(TopiaContextImplementor tx,
boolean showSql,
boolean showProgression) throws TopiaException {
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-03 13:56:38 UTC (rev 820)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -4,8 +4,8 @@
public enum ObsProgram {
- OBSMER(ObsProgram.class.getName() + "OBSMER"),
- OBSVENTE(ObsProgram.class.getName() + "OBSVENTE");
+ OBSMER(ObsProgram.class.getName() + ".OBSMER"),
+ OBSVENTE(ObsProgram.class.getName() + ".OBSVENTE");
protected String 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-03 13:56:38 UTC (rev 820)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -30,6 +30,8 @@
import java.util.HashSet;
import java.util.Set;
+import static org.nuiton.i18n.I18n._;
+
/**
* Enumeration used as roles for {@link WaoUser}. Methods is available in WaoUser
* to use this enum like a property of the entity.
@@ -42,13 +44,13 @@
*/
public enum UserRole {
/** Admin role **/
- ADMIN(UserRole.class.getName() + "ADMIN"),
+ ADMIN(UserRole.class.getName() + ".ADMIN"),
/** User/observer role **/
- OBSERVER(UserRole.class.getName() + "OBSERVER"),
+ OBSERVER(UserRole.class.getName() + ".OBSERVER"),
/** Coordinator role **/
- COORDINATOR(UserRole.class.getName() + "COORDINATOR"),
+ COORDINATOR(UserRole.class.getName() + ".COORDINATOR"),
/** Guest role **/
- GUEST(UserRole.class.getName() + "GUEST");
+ GUEST(UserRole.class.getName() + ".GUEST");
static final int MAX_CODE = (int)Math.pow(values().length, 2) -1;
@@ -59,7 +61,7 @@
}
public String getLabel() {
- return label;
+ return _(label);
}
@Deprecated
@@ -138,4 +140,15 @@
}
return null;
}
+
+ public static UserRole valueOfLabel(String label) {
+ for (UserRole userRole : values()) {
+ if (userRole.getLabel().equals(label)) {
+ return userRole;
+ }
+ }
+ return null;
+ }
+
+
}
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-03 13:56:38 UTC (rev 820)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -222,6 +222,34 @@
user.setPassword(passwordEncoded);
}
+ WaoQueryHelper.UserProfileProperty userProfileProperty = WaoQueryHelper.newUserProfileProperty();
+ WaoQueryHelper.WaoUserProperty waoUserProperty = WaoQueryHelper.newWaoUserProperty();
+ TopiaQuery query = dao.createQuery(waoUserProperty.$alias())
+ .setSelect(userProfileProperty.$alias())
+ .addJoin(waoUserProperty.userProfile(), userProfileProperty.$alias(), false)
+ .addEquals(waoUserProperty.$alias(), user);
+ if (log.isDebugEnabled()) {
+ log.debug("query to find old profiles for user is " + query);
+ }
+
+ UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
+ List<UserProfile> oldProfiles = userProfileDAO.findAllByQuery(query);
+
+ if (log.isDebugEnabled()) {
+ log.debug("profiles for user was " + oldProfiles);
+ }
+ for (UserProfile userProfile : oldProfiles) {
+ userProfileDAO.delete(userProfile);
+ }
+
+ if (user.getUserProfile() != null) {
+ for (UserProfile userProfile : user.getUserProfile()) {
+ log.debug(userProfile + " to save : " + userProfile.getDescription());
+ context.prepareTopiaId(UserProfile.class, userProfile);
+ userProfileDAO.update(userProfile);
+ }
+ }
+
dao.update(user);
transaction.commitTransaction();
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-05 20:55:28 UTC (rev 821)
@@ -1,3 +1,9 @@
+fr.ifremer.wao.bean.ObsProgram.OBSMER=ObsMer
+fr.ifremer.wao.bean.ObsProgram.ObsDeb=ObsDeb
+fr.ifremer.wao.bean.UserRole.ADMIN=Administrateur
+fr.ifremer.wao.bean.UserRole.COORDINATOR=Coordinateur
+fr.ifremer.wao.bean.UserRole.GUEST=Invit\u00E9
+fr.ifremer.wao.bean.UserRole.OBSERVER=Observateur
fr.ifremer.wao.entity.FishingGearDCF.=Non sp\u00E9cifi\u00E9
fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorqu\u00E9es par bateau
fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues \u00E0 main
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -116,4 +116,19 @@
Assert.assertEquals(expected, actual);
}
}
+
+ @Test
+ public void showCodeToUserRole() {
+ for (int i = 0 ; i <= UserRole.MAX_CODE ; i ++) {
+ StringBuilder code = new StringBuilder();
+ code.append("case " + i + " : result = Arrays.asList(");
+
+ for (UserRole role : UserRole.toUserRoles(i)) {
+ code.append("UserRole." + role + ",");
+ }
+ code.append("); break;");
+
+ System.out.println(code.toString());
+ }
+ }
}
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-03 13:56:38 UTC (rev 820)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -36,6 +36,8 @@
import fr.ifremer.wao.entity.CompanyImpl;
import fr.ifremer.wao.entity.Indicator;
import fr.ifremer.wao.entity.IndicatorLevel;
+import fr.ifremer.wao.entity.UserProfile;
+import fr.ifremer.wao.entity.UserProfileImpl;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.io.ImportResults;
import fr.ifremer.wao.io.ImportResultsImpl;
@@ -522,11 +524,16 @@
private SelectModel userRoleSelectModel;
+ private List<UserProfile> editedUserProfiles;
+
@Persist
@Property
private UserProfile profile;
@Persist
+ private UserProfile editedProfile;
+
+ @Persist
@Property
private boolean readOnly;
@@ -539,6 +546,18 @@
@Property
private boolean refreshUserRoleZone;
+ public UserProfile getEditedProfile() {
+ if (editedProfile == null) {
+ editedProfile = new UserProfileImpl();
+
+ // By default, rights has a scope on the same program as the current user is
+ // ie an user connected as an Admin of the ObsMer program can give rights
+ // only on the ObsMer program
+ editedProfile.setObsProgram(currentUser.getProfile().getObsProgram());
+ }
+ return editedProfile;
+ }
+
public SelectModel getUserRoleSelectModel() {
if (userRoleSelectModel == null) {
List<OptionModel> options = new ArrayList<OptionModel>();
@@ -558,61 +577,51 @@
return new OptionModelImpl(role.getLabel(), role);
}
- public String getRoleReadOnly() {
- /*String text = "";
- if (userEdited.isReadOnly(role)) {
- text = "lecture seule";
- }
- return text;*/
- return "not yet implemented";
- }
-
@Log
void onChangeFromUserRole(String value) {
- /*
+ // XXX 20101203 bleny, what if value="" ? field is not reset and can't
+ // be reset
if (StringUtils.isNotEmpty(value)) {
- userRole = UserRole.valueOf(value);
- } else {
- userRole = null;
+ getEditedProfile().setUserRole(UserRole.valueOf(value));
}
- */
}
@Log
void onChangeFromReadOnly(boolean value) {
- readOnly = value;
+ getEditedProfile().setCanWrite( ! value);
}
+ public List<UserProfile> getEditedUserProfiles() {
+ if (editedUserProfiles == null) {
+ editedUserProfiles = new ArrayList<UserProfile>(getUserEdited().getUserProfile());
+ getUserEdited().setUserProfile(editedUserProfiles);
+ }
+ return editedUserProfiles;
+ }
+
@Log
Object onActionFromAddRole() {
- /*
- if (log.isDebugEnabled()) {
- log.debug("Add userRole : " + userRole +
- " (readOnly=" + readOnly + ")");
+ if (getEditedProfile() != null && getEditedProfile().getUserRole() != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Add user profile : " + getEditedProfile().getDescription());
+ }
+ getEditedUserProfiles().add(getEditedProfile());
}
- if (userRole != null) {
- userEdited.addUserRole(userRole, readOnly);
- }
// Reset fields
- userRole = null;
+ editedProfile = null;
readOnly = false;
// Refresh the zone
refreshUserRoleZone = true;
return userRoleZone;
- */
- return null;
}
@Log
Object onActionFromRemoveRole(int roleIndex) {
- /*
- UserRole roleToRemove = userEdited.getUserRoles().get(roleIndex);
- userEdited.removeUserRole(roleToRemove);
+ getEditedUserProfiles().remove(roleIndex);
+
// 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-03 13:56:38 UTC (rev 820)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -120,7 +120,7 @@
* with user roles list. Two type of errors can be catch during connection :
* <ul>
* <li>BAD_CONNECTION : login or password are not corresponding, forgetPassword
- * can be used by user</li>
+ * can be used by user</li> n = dev _ password =
* <li>ILLEGAL_CONNECTION : user is not active anymore</li>
* </ul>
*/
@@ -241,7 +241,7 @@
}
}
- private SelectModel roleSelectModel;
+ private SelectModel profileSelectModel;
@Property
private UserProfile userProfile;
@@ -252,7 +252,7 @@
*
* @return the SelectModel for user roles
*/
- public SelectModel getRoleSelectModel() {
+ public SelectModel getProfileSelectModel() {
if (serviceAuthentication.existConnectedUser()) {
WaoUser user = serviceAuthentication.getConnectedUser().getUser();
@@ -265,11 +265,11 @@
OptionModel option = new OptionModelImpl(profile.getDescription(), profile);
options.add(option);
}
- roleSelectModel = new SelectModelImpl(null, options);
- } else if (roleSelectModel == null) {
- roleSelectModel = new SelectModelImpl(new OptionModelImpl(null));
+ profileSelectModel = new SelectModelImpl(null, options);
+ } else if (profileSelectModel == null) {
+ profileSelectModel = new SelectModelImpl(new OptionModelImpl(null));
}
- return roleSelectModel;
+ return profileSelectModel;
}
/**
Deleted: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -1,106 +0,0 @@
-/*
- * #%L
- * Wao :: Web Interface
- *
- * $Id$
- * $HeadURL$
- * %%
- * 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.ui.pages;
-
-import fr.ifremer.wao.WaoBusinessException;
-import fr.ifremer.wao.WaoBusinessException.Type;
-import fr.ifremer.wao.WaoException;
-import fr.ifremer.wao.bean.ConnectedUser;
-import fr.ifremer.wao.entity.WaoUser;
-import fr.ifremer.wao.service.ServiceUser;
-import fr.ifremer.wao.ui.components.Layout;
-import fr.ifremer.wao.ui.data.RequiresAuthentication;
-import org.apache.commons.lang.StringUtils;
-import org.apache.tapestry5.annotations.IncludeStylesheet;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SessionState;
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * UserProfile
- *
- * Created: 10 nov. 2009
- *
- * @author fdesbois <fdesbois at codelutin.com>
- */
- at RequiresAuthentication
- at IncludeStylesheet("context:css/userProfile.css")
-public class UserProfile {
-
- @Inject
- private ServiceUser serviceUser;
-
- @InjectComponent
- private Layout layout;
-
- @SessionState
- private ConnectedUser user;
-
- private WaoUser userEditable;
-
- @InjectComponent
- private BeanEditForm userForm;
-
- @Property
- private String password;
-
- @Property
- private String password2;
-
- public WaoUser getUserEditable() {
- if (userEditable == null) {
- userEditable = user.getUser();
- }
- return userEditable;
- }
-
- void onSuccessFromUserForm() throws WaoException {
-
- if (password != null && !password.equals(password2)) {
- userForm.recordError("Les deux password ne sont pas identiques, vérifiez la saisie !");
- } else {
- try {
- if (!StringUtils.isEmpty(password)) {
- userEditable.setPassword(password);
- userEditable.setPasswordChanged(true);
- }
- serviceUser.createUpdateUser(userEditable, false);
- layout.addInfo("Modifications enregistrées avec succès !");
- } catch (WaoBusinessException eee) {
- if (eee.getType().equals(Type.SMTP_NOT_FOUND)) {
- layout.addInfo("Modifications enregistrées avec succès !");
- layout.addInfo(eee.getMessage());
- } else {
- userForm.recordError(eee.getMessage());
- }
- }
- }
- }
-
-
-
-}
Copied: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfileForm.java (from rev 819, trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java)
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfileForm.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfileForm.java 2010-12-05 20:55:28 UTC (rev 821)
@@ -0,0 +1,106 @@
+/*
+ * #%L
+ * Wao :: Web Interface
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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.ui.pages;
+
+import fr.ifremer.wao.WaoBusinessException;
+import fr.ifremer.wao.WaoBusinessException.Type;
+import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.service.ServiceUser;
+import fr.ifremer.wao.ui.components.Layout;
+import fr.ifremer.wao.ui.data.RequiresAuthentication;
+import org.apache.commons.lang.StringUtils;
+import org.apache.tapestry5.annotations.IncludeStylesheet;
+import org.apache.tapestry5.annotations.InjectComponent;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.annotations.SessionState;
+import org.apache.tapestry5.corelib.components.BeanEditForm;
+import org.apache.tapestry5.ioc.annotations.Inject;
+
+/**
+ * UserProfileForm
+ *
+ * Created: 10 nov. 2009
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ */
+ at RequiresAuthentication
+ at IncludeStylesheet("context:css/userProfile.css")
+public class UserProfileForm {
+
+ @Inject
+ private ServiceUser serviceUser;
+
+ @InjectComponent
+ private Layout layout;
+
+ @SessionState
+ private ConnectedUser user;
+
+ private WaoUser userEditable;
+
+ @InjectComponent
+ private BeanEditForm userForm;
+
+ @Property
+ private String password;
+
+ @Property
+ private String password2;
+
+ public WaoUser getUserEditable() {
+ if (userEditable == null) {
+ userEditable = user.getUser();
+ }
+ return userEditable;
+ }
+
+ void onSuccessFromUserForm() throws WaoException {
+
+ if (password != null && !password.equals(password2)) {
+ userForm.recordError("Les deux password ne sont pas identiques, vérifiez la saisie !");
+ } else {
+ try {
+ if (!StringUtils.isEmpty(password)) {
+ userEditable.setPassword(password);
+ userEditable.setPasswordChanged(true);
+ }
+ serviceUser.createUpdateUser(userEditable, false);
+ layout.addInfo("Modifications enregistrées avec succès !");
+ } catch (WaoBusinessException eee) {
+ if (eee.getType().equals(Type.SMTP_NOT_FOUND)) {
+ layout.addInfo("Modifications enregistrées avec succès !");
+ layout.addInfo(eee.getMessage());
+ } else {
+ userForm.recordError(eee.getMessage());
+ }
+ }
+ }
+ }
+
+
+
+}
Property changes on: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfileForm.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-12-05 20:55:28 UTC (rev 821)
@@ -63,7 +63,7 @@
</a>
</div>
<div id="user-infos" class="fleft">
- Vous êtes <strong>${currentUser.fullName}</strong> de la société <strong>${currentUser.company.name}</strong>
+ Vous êtes <strong>${currentUser.user.fullName}</strong> de la société <strong>${currentUser.company.name}</strong>
(${accessText})
</div>
<div id="user-actions" class="fright">
@@ -75,7 +75,7 @@
<img src="${asset:context:img/cartography.png}" alt="Cartes" title="Cartes"/>
</a>
</t:unless>
- <a t:type="pagelink" t:page="userProfile" title="Gestion profil">
+ <a t:type="pagelink" t:page="userProfileForm" title="Gestion profil">
<img src="${asset:context:img/user.png}" alt="Preferences" title="Gestion profil"/>
</a>
<a t:type="actionlink" t:id="exit" title="Déconnexion">
Deleted: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfile.properties
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfile.properties 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfile.properties 2010-12-05 20:55:28 UTC (rev 821)
@@ -1,32 +0,0 @@
-###
-# #%L
-# Wao :: Web Interface
-#
-#
-# $Id$
-# $HeadURL$
-# %%
-# 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%
-###
-firstName-label: Pr\u00e9nom
-lastName-label: Nom
-login-label: Id. connexion (email)
-name-label: Pr\u00e9nom et nom
-phoneNumber-label: T\u00e9l\u00e9phone
-password-label: Nouveau mot de passe
-password2-label: V\u00e9rification mot de passe
-active-label: Actif
Copied: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfileForm.properties (from rev 819, trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfile.properties)
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfileForm.properties (rev 0)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfileForm.properties 2010-12-05 20:55:28 UTC (rev 821)
@@ -0,0 +1,32 @@
+###
+# #%L
+# Wao :: Web Interface
+#
+#
+# $Id$
+# $HeadURL$
+# %%
+# 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%
+###
+firstName-label: Pr\u00e9nom
+lastName-label: Nom
+login-label: Id. connexion (email)
+name-label: Pr\u00e9nom et nom
+phoneNumber-label: T\u00e9l\u00e9phone
+password-label: Nouveau mot de passe
+password2-label: V\u00e9rification mot de passe
+active-label: Actif
Property changes on: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/UserProfileForm.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/wao-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-05 20:55:28 UTC (rev 821)
@@ -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="userProfile" t:model="userRoleSelectModel"
+ <select t:type="select" t:id="userRole" t:value="role" t:model="userRoleSelectModel"
t:mixins="ck/onEvent" t:event="change"/>
<span>Lecture seule : </span>
@@ -126,8 +126,8 @@
<img src="${asset:context:img/add-16px.png}" />
</a>
<ul>
- <li t:type="loop" t:source="userEdited.userProfile" t:value="profile" t:index="profileIndex">
- ${role.label} ${roleReadOnly}
+ <li t:type="loop" t:source="userEdited.userProfile" t:value="profile" t:index="profileIndex" t:volatile="true">
+ ${profile.description}
<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>
Modified: trunk/wao-ui/src/main/webapp/Connexion.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Connexion.tml 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-ui/src/main/webapp/Connexion.tml 2010-12-05 20:55:28 UTC (rev 821)
@@ -72,8 +72,8 @@
t:title="literal:Choisissez dans la liste votre profil de connexion : ">
<form t:id="roleForm" t:type="form" action="tapestry">
<p class="roleSelect">
- <select t:type="select" t:id="userRole" t:value="userRole" t:model="roleSelectModel"
- onChange="this.form.submit()"/>
+ <select t:type="select" t:id="userProfile" t:value="userProfile" t:model="profileSelectModel"
+ onChange="this.form.submit()" t:volatile="true" />
</p>
</form>
</div>
Deleted: trunk/wao-ui/src/main/webapp/UserProfile.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/UserProfile.tml 2010-12-03 13:56:38 UTC (rev 820)
+++ trunk/wao-ui/src/main/webapp/UserProfile.tml 2010-12-05 20:55:28 UTC (rev 821)
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- #%L
- Wao :: Web Interface
-
- $Author$
- $LastChangedDate$
- $LastChangedRevision$
- $Id$
- $HeadURL$
- %%
- 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%
- -->
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<t:layout t:pageTitle="Gestion du profile utilisateur" t:contentId="so-user-profile"
- xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-
- <fieldset class="user-form">
- <form t:type="beaneditform" class="clearfix" t:id="userForm" t:object="userEditable"
- t:include="firstName, lastName, login, phoneNumber, password" t:add="password2">
- <p:password>
- <t:label t:for="password" />
- <input t:type="passwordfield" t:id="password" value="password"/>
- </p:password>
- <p:password2>
- <t:label t:for="password2" />
- <input t:type="passwordfield" t:id="password2" value="password2"/>
- </p:password2>
-<!-- <p:login>
- <label>${message:login}</label>
- ${user.login}
- </p:login>-->
- </form>
- </fieldset>
-
-</t:layout>
Copied: trunk/wao-ui/src/main/webapp/UserProfileForm.tml (from rev 819, trunk/wao-ui/src/main/webapp/UserProfile.tml)
===================================================================
--- trunk/wao-ui/src/main/webapp/UserProfileForm.tml (rev 0)
+++ trunk/wao-ui/src/main/webapp/UserProfileForm.tml 2010-12-05 20:55:28 UTC (rev 821)
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Wao :: Web Interface
+
+ $Author$
+ $LastChangedDate$
+ $LastChangedRevision$
+ $Id$
+ $HeadURL$
+ %%
+ 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%
+ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<t:layout t:pageTitle="Gestion du profile utilisateur" t:contentId="so-user-profile"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
+
+ <fieldset class="user-form">
+ <form t:type="beaneditform" class="clearfix" t:id="userForm" t:object="userEditable"
+ t:include="firstName, lastName, login, phoneNumber, password" t:add="password2">
+ <p:password>
+ <t:label t:for="password" />
+ <input t:type="passwordfield" t:id="password" value="password"/>
+ </p:password>
+ <p:password2>
+ <t:label t:for="password2" />
+ <input t:type="passwordfield" t:id="password2" value="password2"/>
+ </p:password2>
+<!-- <p:login>
+ <label>${message:login}</label>
+ ${user.login}
+ </p:login>-->
+ </form>
+ </fieldset>
+
+</t:layout>
Property changes on: trunk/wao-ui/src/main/webapp/UserProfileForm.tml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0
[Suiviobsmer-commits] r820 - trunk/wao-business/src/main/java/fr/ifremer/wao/bean
by bleny@users.labs.libre-entreprise.org 03 Dec '10
by bleny@users.labs.libre-entreprise.org 03 Dec '10
03 Dec '10
Author: bleny
Date: 2010-12-03 13:56:38 +0000 (Fri, 03 Dec 2010)
New Revision: 820
Log:
fix NPE
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/GlobalSynthesisResultImpl.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/GlobalSynthesisResultImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/GlobalSynthesisResultImpl.java 2010-12-02 18:18:37 UTC (rev 819)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/GlobalSynthesisResultImpl.java 2010-12-03 13:56:38 UTC (rev 820)
@@ -68,6 +68,8 @@
if (indicatorLevel == null) {
// since we can't compute a level for this indicator,
// it's not possible to consider a coherent global level value
+ log.debug("Since value for synthesis " + indicator.getSynthesisId()
+ + " cannot be computed, global synthesis result is null");
return null;
}
@@ -107,8 +109,13 @@
}
}
- int globalIndicatorValueOrdinal = globalIndicator.getLevelForValue(getGlobalResult()).getLevel();
- GlobalIndicatorValue result = GlobalIndicatorValue.valueOf(globalIndicatorValueOrdinal);
+ Double globalResult = getGlobalResult(); // a double between 1 and 6
+ // may be null if value not computable
+ GlobalIndicatorValue result = null;
+ if (globalResult != null) {
+ int globalIndicatorValueOrdinal = globalIndicator.getLevelForValue(globalResult).getLevel();
+ result = GlobalIndicatorValue.valueOf(globalIndicatorValueOrdinal);
+ }
if (log.isDebugEnabled()) {
log.debug("global indicator value is " + result);
}
1
0
02 Dec '10
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;
}
1
0
[Suiviobsmer-commits] r818 - in trunk: wao-business/src/main/java/fr/ifremer/wao 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-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 02 Dec '10
by bleny@users.labs.libre-entreprise.org 02 Dec '10
02 Dec '10
Author: bleny
Date: 2010-12-02 14:39:21 +0000 (Thu, 02 Dec 2010)
New Revision: 818
Log:
starting putting obsProgram everywhere in Wao
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.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.zargo
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-11-30 11:11:13 UTC (rev 817)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -25,7 +25,9 @@
package fr.ifremer.wao;
import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.SynthesisId;
+import fr.ifremer.wao.bean.UserRole;
import org.hibernate.SQLQuery;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaContextImplementor;
@@ -33,6 +35,7 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -578,4 +581,76 @@
protected void removeCodeDCF5columnFromProfession_1_6(List<String> queries) {
queries.add("ALTER TABLE Profession DROP COLUMN codedcf5;");
}
+
+ @Override
+ protected void addColumnsForObsProgram_1_7(List<String> queries) {
+ queries.add("ALTER TABLE Contact ADD obsProgramOrdinal SMALLINT;");
+ queries.add("ALTER TABLE SampleRow ADD obsProgramOrdinal SMALLINT;");
+
+ queries.add(String.format("UPDATE Contact SET obsProgramOrdinal = %d", ObsProgram.OBSMER.ordinal()));
+ queries.add(String.format("UPDATE SampleRow SET obsProgramOrdinal = %d", ObsProgram.OBSMER.ordinal()));
+
+ queries.add("ALTER TABLE Contact ALTER COLUMN obsProgramOrdinal SET NOT NULL;");
+ queries.add("ALTER TABLE SampleRow ALTER COLUMN obsProgramOrdinal SET NOT NULL;");
+ }
+
+ @Override
+ protected void createTableUserProfile_1_7(List<String> queries) {
+ queries.add("CREATE TABLE UserProfile (" +
+ "topiaId CHARACTER VARYING(255) PRIMARY KEY," +
+ "topiaVersion BIGINT NOT NULL," +
+ "topiaCreateDate TIMESTAMP WITHOUT TIME ZONE NOT NULL," +
+ "waoUser character varying(255) NOT NULL," +
+ "obsProgramOrdinal SMALLINT NOT NULL," +
+ "userRoleOrdinal SMALLINT NOT NULL," +
+ "canWrite BOOLEAN NOT NULL," +
+ "CONSTRAINT waoUser_fkey FOREIGN KEY (waoUser) " +
+ "REFERENCES WaoUser (topiaid) MATCH SIMPLE " +
+ "ON UPDATE NO ACTION ON DELETE NO ACTION);");
+ }
+
+ @Override
+ protected void migrateFromUserRoleToUserProfile_1_7(TopiaContextImplementor tx, List<String> queries) throws TopiaException {
+
+ SQLQuery query = tx.getHibernate().
+ createSQLQuery("SELECT topiaId, role, roleReadOnly FROM WaoUser;");
+
+ List<Object[]> results = query.list();
+
+ String topiaIdPrefix = "fr.ifremer.wao.entities.UserProfile#1291132115000#933387724";
+ int count = 0;
+
+ int topiaVersion = 0;
+ String topiaCreateDateValue = "DATE '2010-11-09'";
+
+ for (Object[] row : results) {
+ String waoUserTopiaId = (String) row[0];
+ short role = (Short) row[1];
+ short roleReadOnly = (Short) row[1];
+
+ List<UserRole> readOnlyRoles = Arrays.asList(UserRole.toUserRoles(roleReadOnly));
+ for (UserRole userRole : UserRole.toUserRoles(role)) {
+ boolean canWrite = ! readOnlyRoles.contains(userRole);
+
+ String sql = String.format("INSERT INTO UserProfile (topiaId, topiaVersion, topiaCreateDate, waoUser, obsProgramOrdinal, userRoleOrdinal, canWrite) " +
+ "VALUES ('%s', %s, %s, '%s', %s, %s, %s);",
+ topiaIdPrefix + count++,
+ topiaVersion,
+ topiaCreateDateValue,
+ waoUserTopiaId,
+ ObsProgram.OBSMER.ordinal(),
+ userRole.ordinal(),
+ canWrite);
+
+ queries.add(sql);
+ }
+
+ }
+ }
+
+ @Override
+ protected void removeUserRolesColumns_1_7(List<String> queries) {
+ queries.add("ALTER TABLE WaoUser DROP COLUMN role;");
+ queries.add("ALTER TABLE WaoUser DROP COLUMN roleReadOnly;");
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-11-30 11:11:13 UTC (rev 817)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -35,6 +35,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -103,6 +104,14 @@
protected abstract void removeCodeDCF5columnFromProfession_1_6(List<String> queries);
+ protected abstract void addColumnsForObsProgram_1_7(List<String> queries);
+
+ protected abstract void createTableUserProfile_1_7(List<String> queries);
+
+ protected abstract void migrateFromUserRoleToUserProfile_1_7(TopiaContextImplementor tx, List<String> queries) throws TopiaException;
+
+ protected abstract void removeUserRolesColumns_1_7(List<String> queries);
+
protected static final Version[] VERSIONS = new Version[] {
VersionUtil.valueOf("1.0"),
VersionUtil.valueOf("1.1"),
@@ -110,7 +119,8 @@
VersionUtil.valueOf("1.3"),
VersionUtil.valueOf("1.4"),
VersionUtil.valueOf("1.5"),
- VersionUtil.valueOf("1.6")
+ VersionUtil.valueOf("1.6"),
+ VersionUtil.valueOf("1.7")
};
@Override
@@ -358,4 +368,22 @@
return result;
}
+ public void migrateTo_1_7(TopiaContextImplementor tx,
+ boolean showSql,
+ boolean showProgression) throws TopiaException {
+
+ List<String> queries = new LinkedList<String>();
+
+ addColumnsForObsProgram_1_7(queries);
+
+ createTableUserProfile_1_7(queries);
+
+ migrateFromUserRoleToUserProfile_1_7(tx, queries);
+
+ removeUserRolesColumns_1_7(queries);
+
+ String[] strings = queries.toArray(new String[queries.size()]);
+ executeSQL(tx, true, true, strings);
+ }
+
}
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-11-30 11:11:13 UTC (rev 817)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -34,36 +34,36 @@
@Override
public boolean isAdmin() {
- return role.equals(UserRole.ADMIN);
+ return getProfile().isAdmin();
}
@Override
- public boolean isGuest() {
- return role.equals(UserRole.GUEST);
+ public boolean isCoordinator() {
+ return getProfile().isCoordinator();
}
@Override
- public boolean isCoordinator() {
- return role.equals(UserRole.COORDINATOR);
+ public boolean isObserver() {
+ return getProfile().isObserver();
}
@Override
- public boolean isObserver() {
- return role.equals(UserRole.OBSERVER);
+ public boolean isGuest() {
+ return getProfile().isGuest();
}
@Override
public boolean isReadOnly() {
- return user.isReadOnly(role);
+ return getProfile().isReadOnly();
}
@Override
public String getFullName() {
- return user.getFullName();
+ return getUser().getFullName();
}
@Override
public String getLogin() {
- return user.getLogin();
+ return getUser().getLogin();
}
@Override
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ObsProgram.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -0,0 +1,16 @@
+package fr.ifremer.wao.bean;
+
+public enum ObsProgram {
+
+ OBSMER,
+ OBSVENTE;
+
+ public static ObsProgram valueOf(int obsProgramOrdinal) {
+ for (ObsProgram obsProgram : values()) {
+ if (obsProgram.ordinal() == obsProgramOrdinal) {
+ return obsProgram;
+ }
+ }
+ return null;
+ }
+}
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-11-30 11:11:13 UTC (rev 817)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -124,4 +124,13 @@
}
return result.toArray(new UserRole[result.size()]);
}
+
+ public static UserRole valueOf(int userRoleOrdinal) {
+ for (UserRole userRole : values()) {
+ if (userRole.ordinal() == userRoleOrdinal) {
+ return userRole;
+ }
+ }
+ return null;
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java 2010-11-30 11:11:13 UTC (rev 817)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -25,6 +25,7 @@
package fr.ifremer.wao.entity;
import fr.ifremer.wao.WaoUtils;
+import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.service.ServiceSampling;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
@@ -421,4 +422,13 @@
setDCF5Code(dcfFives);
}
+ @Override
+ public ObsProgram getObsProgram() {
+ return ObsProgram.valueOf(getObsProgramOrdinal());
+ }
+
+ @Override
+ public void setObsProgram(ObsProgram obsProgram) {
+ setObsProgramOrdinal(obsProgram.ordinal());
+ }
}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -0,0 +1,62 @@
+package fr.ifremer.wao.entity;
+
+import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.bean.UserRole;
+
+public class UserProfileImpl extends UserProfileAbstract {
+
+ @Override
+ public UserRole getUserRole() {
+ return UserRole.valueOf(getUserRoleOrdinal());
+ }
+
+ @Override
+ public void setUserRole(UserRole userRole) {
+ setUserRoleOrdinal(userRole.ordinal());
+ }
+
+ @Override
+ public ObsProgram getObsProgram() {
+ return ObsProgram.valueOf(getObsProgramOrdinal());
+ }
+
+ @Override
+ public void setObsProgram(ObsProgram obsProgram) {
+ setObsProgramOrdinal(obsProgram.ordinal());
+ }
+
+ @Override
+ public boolean isAdmin() {
+ return getUserRole() == UserRole.ADMIN;
+ }
+
+ @Override
+ public boolean isCoordinator() {
+ return getUserRole() == UserRole.COORDINATOR;
+ }
+
+ @Override
+ public boolean isObserver() {
+ return getUserRole() == UserRole.OBSERVER;
+ }
+
+ @Override
+ public boolean isGuest() {
+ return getUserRole() == UserRole.GUEST;
+ }
+
+ @Override
+ public boolean isReadOnly() {
+ return ! getCanWrite();
+ }
+
+ @Override
+ public boolean isObsMer() {
+ return getObsProgram() == ObsProgram.OBSMER;
+ }
+
+ @Override
+ public boolean isObsVente() {
+ return getObsProgram() == ObsProgram.OBSVENTE;
+ }
+}
\ 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-11-30 11:11:13 UTC (rev 817)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -25,13 +25,10 @@
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.Arrays;
-import java.util.List;
/**
* UserImpl
@@ -78,84 +75,4 @@
public boolean isPasswordChanged() {
return this.passwordChanged;
}
-
- @Override
- public List<UserRole> getUserRoles() {
- UserRole[] roles = UserRole.toUserRoles(getRole());
-// List<UserRole> results = new ArrayList<UserRole>();
-// if (roles.length > 0) {
-// results = Arrays.asList(roles);
-// }
-// return results;
- return Arrays.asList(roles);
- }
-
- @Override
- public boolean hasUserRole(UserRole role) {
- boolean result = getUserRoles().contains(role);
- return result;
- }
-
- @Override
- public boolean addUserRole(UserRole role, boolean readOnly) {
- boolean added = false;
- if (!hasUserRole(role)) {
- if (logger.isDebugEnabled()) {
- logger.debug("Add role : " + role +
- " _ ordinal=" + role.ordinal() +
- " _ code=" + role.toInt() +
- " _ readOnly=" + readOnly);
- }
- // Just apply an addition to add the role
- int newCode = getRole() + role.toInt();
-
- if (logger.isDebugEnabled()) {
- logger.debug("New code for role : " + newCode);
- }
-
- setRole(newCode);
- added = true;
- }
-
- updateReadOnly(role, readOnly);
-
- return added;
- }
-
- protected void updateReadOnly(UserRole role, boolean readOnly) {
-
- boolean previousReadOnly = isReadOnly(role);
-
- // Update readOnly true from false : add value with code calcul
- if (readOnly && !previousReadOnly) {
- int newReadOnly = getRoleReadOnly() + role.toInt();
- setRoleReadOnly(newReadOnly);
-
- // Update readOnly false from true : remove value with code calcul
- } else if (!readOnly && previousReadOnly) {
- int newReadOnly = getRoleReadOnly() - role.toInt();
- setRoleReadOnly(newReadOnly);
- }
- }
-
- @Override
- public boolean removeUserRole(UserRole role) {
- for (UserRole current : getUserRoles()) {
- if (current.equals(role)) {
- // Just apply a soustraction to remove the role
- int newCode = getRole() - role.toInt();
- setRole(newCode);
- // Update the readOnly to false (will check if operation is needed)
- updateReadOnly(role, false);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public boolean isReadOnly(UserRole role) {
- boolean result = role.isSelected(getRoleReadOnly());
- return result;
- }
}
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-11-30 11:11:13 UTC (rev 817)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -30,8 +30,10 @@
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.WaoProperty;
+import fr.ifremer.wao.WaoQueryHelper;
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.CompanyDAO;
@@ -39,6 +41,8 @@
import fr.ifremer.wao.entity.ContactDAO;
import fr.ifremer.wao.entity.SampleRowLog;
import fr.ifremer.wao.entity.SampleRowLogDAO;
+import fr.ifremer.wao.entity.UserProfile;
+import fr.ifremer.wao.entity.UserProfileImpl;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.entity.WaoUserDAO;
import fr.ifremer.wao.entity.WaoUserImpl;
@@ -50,6 +54,8 @@
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
import java.util.List;
/**
@@ -381,10 +387,16 @@
Integer[] matchCodes =
UserRole.getMatchCodes(UserRole.OBSERVER, UserRole.COORDINATOR);
- TopiaQuery query = dao.createQuery().
- addEquals(WaoUser.PROPERTY_ROLE, (Object[])matchCodes).
- addOrder(WaoUser.PROPERTY_FIRST_NAME, WaoUser.PROPERTY_LAST_NAME);
+ WaoQueryHelper.UserProfileProperty userProfileProperty =
+ WaoQueryHelper.newUserProfileProperty();
+ WaoQueryHelper.WaoUserProperty waoUserProperty =
+ WaoQueryHelper.newWaoUserProperty();
+ TopiaQuery query = dao.createQuery()
+ .addJoin(waoUserProperty.userProfile(), userProfileProperty.$alias(), false)
+ .addEquals(userProfileProperty.userRoleOrdinal(), UserRole.OBSERVER.ordinal(), UserRole.COORDINATOR.ordinal())
+ .addOrder(WaoUser.PROPERTY_FIRST_NAME, WaoUser.PROPERTY_LAST_NAME);
+
if (company != null) {
query.addEquals(WaoUser.PROPERTY_COMPANY, company);
}
@@ -434,7 +446,6 @@
String password = context.encodeString("password");
WaoUser user = dao.create(
- WaoUser.PROPERTY_ROLE, UserRole.ADMIN.toInt(),
WaoUser.PROPERTY_ACTIVE, true,
WaoUser.PROPERTY_LOGIN, "admin",
WaoUser.PROPERTY_PASSWORD, password,
@@ -442,6 +453,18 @@
WaoUser.PROPERTY_LAST_NAME, "Admin");
user.setCompany(company);
+ // 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);
+ profiles.add(adminProfile);
+ }
+ user.setUserProfile(profiles);
+
transaction.commitTransaction();
}
}
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
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-11-30 11:11:13 UTC (rev 817)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-02 14:39:21 UTC (rev 818)
@@ -26,7 +26,8 @@
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
-import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.entity.*;
+import fr.ifremer.wao.entity.UserProfile;
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.ui.components.FeedBack;
import fr.ifremer.wao.ui.data.TapestryUtil;
@@ -170,7 +171,7 @@
*/
@Log
Object onSuccessFromConnexionForm() throws WaoException {
- if (serviceAuthentication.getConnectedUser().getRole() == null) {
+ if (serviceAuthentication.getConnectedUser().getProfile() == null) {
if (logger.isDebugEnabled()) {
logger.debug("Not only one role, window will be open to select the role");
}
@@ -261,8 +262,8 @@
}
List<OptionModel> options = new ArrayList<OptionModel>();
- for (UserRole role : user.getUserRoles()) {
- OptionModel option = new OptionModelImpl(role.getLabel(), role);
+ for (UserProfile profile : user.getUserProfile()) {
+ OptionModel option = new OptionModelImpl(profile.getUserRole().getLabel(), role);
options.add(option);
}
roleSelectModel = new SelectModelImpl(null, options);
1
0