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
- 2352 discussions
[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
[Suiviobsmer-commits] r817 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/service wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 30 Nov '10
by bleny@users.labs.libre-entreprise.org 30 Nov '10
30 Nov '10
Author: bleny
Date: 2010-11-30 11:11:13 +0000 (Tue, 30 Nov 2010)
New Revision: 817
Log:
add DCF5 code filtering in synthesis
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java
trunk/wao-ui/src/main/webapp/Synthesis.tml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-11-29 17:53:00 UTC (rev 816)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-11-30 11:11:13 UTC (rev 817)
@@ -204,14 +204,21 @@
return query;
}
+ public TopiaQuery applySamplingFilter(SamplingFilter filter) {
+ return applySamplingFilter(filter, true);
+ }
+
/**
* Prepare the {@code query} with sampleRow filters. Need the {@code main}
* alias to set SampleRow properties. The zoneAlias can also be used if
* the query already have the fishingZone.
*
+ * @param joinDCF5ifneeded set it to false if your request already join
+ * sample-rows to DCF5code. Otherwise, your request full to the join
+ * two times and will lead to a bad HQL
* @return the query with filtered elements added
*/
- public TopiaQuery applySamplingFilter(SamplingFilter filter) {
+ public TopiaQuery applySamplingFilter(SamplingFilter filter, boolean joinDCF5ifneeded) {
// need sampleRowProperty, may have fishingZoneProperty
@@ -331,13 +338,28 @@
query.addWhere(sampleRowProperty.periodEnd(), TopiaQuery.Op.GE, calendar.getTime());
}
+ WaoQueryHelper.DCF5CodeProperty dcf5CodeProperty =
+ WaoQueryHelper.newDCF5CodeProperty();
+
+ if (joinDCF5ifneeded) {
+ // needed is true if we need to make the join, we need to if any
+ // of DCF is used in filter
+ boolean needed = filter.getFishingGearDCF() != null
+ || filter.getTargetSpeciesDCF() != null;
+
+ if (needed) {
+ query.addLeftJoin(sampleRowProperty.dCF5Code(),
+ dcf5CodeProperty.$alias(), false);
+ }
+ }
+
if (filter.getFishingGearDCF() != null) {
- query.addEquals(WaoQueryHelper.newDCF5CodeProperty().fishingGearDCF(),
+ query.addEquals(dcf5CodeProperty.fishingGearDCF(),
filter.getFishingGearDCF());
}
if (filter.getTargetSpeciesDCF() != null) {
- query.addEquals(WaoQueryHelper.newDCF5CodeProperty().targetSpeciesDCF(),
+ query.addEquals(dcf5CodeProperty.targetSpeciesDCF(),
filter.getTargetSpeciesDCF());
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-11-29 17:53:00 UTC (rev 816)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-11-30 11:11:13 UTC (rev 817)
@@ -531,7 +531,7 @@
WaoQueryHelper.DCF5CodeProperty dcf5CodeProperty =
WaoQueryHelper.newDCF5CodeProperty();
- TopiaQuery query = builder.applySamplingFilter(filter).
+ TopiaQuery query = builder.applySamplingFilter(filter, false).
addDistinct().
setSelect(sampleRowProperty.$alias()).
addLeftJoin(sampleRowProperty.dCF5Code(),
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-11-29 17:53:00 UTC (rev 816)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-11-30 11:11:13 UTC (rev 817)
@@ -273,7 +273,7 @@
}
}
- // results like
+ // results like (first column is a boat entity)
// [AN TUAZ COZ, 2010_0043, 2009-11-19 00:00:00.0]
// [AN TUAZ COZ, 2010_0043, 2009-11-20 00:00:00.0]
// [APHRODITE, 2009_0185, 2009-09-24 00:00:00.0]
Modified: trunk/wao-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Synthesis.tml 2010-11-29 17:53:00 UTC (rev 816)
+++ trunk/wao-ui/src/main/webapp/Synthesis.tml 2010-11-30 11:11:13 UTC (rev 817)
@@ -79,6 +79,12 @@
<!--<t:label t:for="program" />:
<input t:type="select" t:id="program" t:model="programSelectModel" value="programId" />-->
</div>
+ <div>
+ <t:label t:for="fishingGearDCF" /> :
+ <input t:type="select" t:id="fishingGearDCF" t:model="dcfGearSelectModel" value="fishingGearDCFId"/>
+ <t:label t:for="targetSpeciesDCF" /> :
+ <input t:type="select" t:id="targetSpeciesDCF" t:model="dcfSpeciesSelectModel" value="targetSpeciesDCFId"/>
+ </div>
<div class="filterRow">
<input t:type="checkbox" t:id="estimatedTides" value="filter.estimatedTides" />
<t:label t:for="estimatedTides" title="L'effort d'observations estimé équivaut au nombre de contacts validés ou non par la société. Les contacts refusés par le programme ne sont pas pris en compte" />
1
0
[Suiviobsmer-commits] r816 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/service wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/resources/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp wao-ui/src/main/webapp/WEB-INF
by bleny@users.labs.libre-entreprise.org 29 Nov '10
by bleny@users.labs.libre-entreprise.org 29 Nov '10
29 Nov '10
Author: bleny
Date: 2010-11-29 17:53:00 +0000 (Mon, 29 Nov 2010)
New Revision: 816
Log:
minor fixes
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Synthesis.properties
trunk/wao-ui/src/main/webapp/SamplingPlan.tml
trunk/wao-ui/src/main/webapp/WEB-INF/app.properties
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-11-28 20:10:23 UTC (rev 815)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-11-29 17:53:00 UTC (rev 816)
@@ -215,8 +215,6 @@
// need sampleRowProperty, may have fishingZoneProperty
- SampleRow sampleRow = filter.getSampleRow();
- String codeDCF5 = filter.getCodeDCF5();
String programName = filter.getProgramName();
PeriodDates period = filter.getPeriod();
Date fromDate = filter.getFromDate();
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-11-28 20:10:23 UTC (rev 815)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-11-29 17:53:00 UTC (rev 816)
@@ -663,8 +663,6 @@
protected Map<String, Double> executeGetDataReliability
(TopiaContext transaction, SamplingFilter filter) throws Exception {
- // FIXME bleny 20101028 exception if company is not in the DB results
-
WaoQueryBuilder builder = context.newQueryBuilder();
ContactProperty contactProperty = builder.initializeForContact();
@@ -871,8 +869,11 @@
}
}
- double percentRealized = ((double) totalNumberOfRealized /
+ Double percentRealized = null;
+ if (totalNumberOfPlanned > 0) {
+ percentRealized = ((double) totalNumberOfRealized /
(double) totalNumberOfPlanned) * 100.0;
+ }
if (log.isDebugEnabled()) {
log.debug(String.format("percent realized %f %%", percentRealized));
@@ -918,7 +919,10 @@
}
double numberOfCompanies = (double) allegroReactivity.size();
- double totalAverages = sumAverages / numberOfCompanies;
+ Double totalAverages = null;
+ if (numberOfCompanies > 0) {
+ totalAverages = sumAverages / numberOfCompanies;
+ }
return totalAverages;
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-11-28 20:10:23 UTC (rev 815)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-11-29 17:53:00 UTC (rev 816)
@@ -612,9 +612,15 @@
if ( ! existingFishingGearCodes.contains(code.getFishingGearCode())) {
sampleRowForm.recordError(code.getFishingGearCode() + " n'est pas un code d'engin valide");
}
- if (code.getTargetSpeciesCode() != null &&
- ! existingTargetSpeciesCodes.contains(code.getTargetSpeciesCode())) {
- sampleRowForm.recordError(code.getTargetSpeciesCode() + " n'est pas un code d'espèces cibles valide");
+
+ if (StringUtils.isEmpty(code.getTargetSpeciesCode())) {
+ if (StringUtils.isEmpty(getSampleRow().getProfession().getSpecies())) {
+ sampleRowForm.recordError("Le code DCF d'espèces cibles peut ne pas être renseigné, mais dans ce cas il faut préciser une description des espèces cibles");
+ }
+ } else {
+ if ( ! existingTargetSpeciesCodes.contains(code.getTargetSpeciesCode())) {
+ sampleRowForm.recordError(code.getTargetSpeciesCode() + " n'est pas un code d'espèces cibles valide");
+ }
}
}
}
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Synthesis.properties
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Synthesis.properties 2010-11-28 20:10:23 UTC (rev 815)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Synthesis.properties 2010-11-29 17:53:00 UTC (rev 816)
@@ -33,6 +33,8 @@
company-label: Soci\u00e9t\u00e9
programName-label: Programme
estimatedTides-label: Voir l'effort d'observations estim\u00e9
+fishingGearDCF-label: Engins code DCF
+targetSpeciesDCF-label: Ensembles d\'esp\u00e8ces-cible code DCF
companyForBoarding-label: Soci\u00e9t\u00e9
Modified: trunk/wao-ui/src/main/webapp/SamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2010-11-28 20:10:23 UTC (rev 815)
+++ trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2010-11-29 17:53:00 UTC (rev 816)
@@ -206,12 +206,10 @@
title="Changer les dates de la période par rapport à celles de la ligne">
${row.code}
</a>
- <t:if t:test="canEditSampleRow()">
- <t:if test="rowModified">
- <a t:type="pagelink" t:page="sampleRowHistoric" t:context="row.code">
- <img src="${asset:context:}/img/clock-22px.png" class="fright" alt=" * " title="Cette ligne a été modifiée (voir l'historique)"/>
- </a>
- </t:if>
+ <t:if test="rowModified">
+ <a t:type="pagelink" t:page="sampleRowHistoric" t:context="row.code">
+ <img src="${asset:context:}/img/clock-22px.png" class="fright" alt=" * " title="Cette ligne a été modifiée (voir l'historique)"/>
+ </a>
</t:if>
</td>
<td class="width150">${row.programName}</td>
Modified: trunk/wao-ui/src/main/webapp/WEB-INF/app.properties
===================================================================
--- trunk/wao-ui/src/main/webapp/WEB-INF/app.properties 2010-11-28 20:10:23 UTC (rev 815)
+++ trunk/wao-ui/src/main/webapp/WEB-INF/app.properties 2010-11-29 17:53:00 UTC (rev 816)
@@ -33,7 +33,8 @@
ContactState.CONTACT_START: Contact pris
DataReliability.UNKNOWN: Inconnue
-DataReliability.NOT_RELIABLE: Non-exploitable
+DataReliability.NOT_RELIABLE: Non exploitable
DataReliability.DOUBTFUL: Douteuse
DataReliability.RELIABLE: Exploitable
+DataReliability.NOT_PROVIDED: Non contr\u00f4l\u00e9e
1
0
Author: tchemit
Date: 2010-11-28 20:10:23 +0000 (Sun, 28 Nov 2010)
New Revision: 815
Log:
use last dev version of eugene and topia
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-11-26 18:03:26 UTC (rev 814)
+++ trunk/pom.xml 2010-11-28 20:10:23 UTC (rev 815)
@@ -331,8 +331,8 @@
<nuitonI18nVersion>1.2.2</nuitonI18nVersion>
<nuitonUtilsVersion>1.4.2</nuitonUtilsVersion>
<nuitonWebVersion>0.1</nuitonWebVersion>
- <topiaVersion>2.4.4-SNAPSHOT</topiaVersion>
- <eugeneVersion>2.2.1-SNAPSHOT</eugeneVersion>
+ <topiaVersion>2.5-SNAPSHOT</topiaVersion>
+ <eugeneVersion>2.3-SNAPSHOT</eugeneVersion>
<tapestryVersion>5.1.0.5</tapestryVersion>
<hibernateVersion>3.3.2.GA</hibernateVersion>
1
0
Author: tchemit
Date: 2010-11-26 18:03:26 +0000 (Fri, 26 Nov 2010)
New Revision: 814
Log:
use dev version of eugene and topia
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-11-26 16:21:42 UTC (rev 813)
+++ trunk/pom.xml 2010-11-26 18:03:26 UTC (rev 814)
@@ -331,8 +331,8 @@
<nuitonI18nVersion>1.2.2</nuitonI18nVersion>
<nuitonUtilsVersion>1.4.2</nuitonUtilsVersion>
<nuitonWebVersion>0.1</nuitonWebVersion>
- <topiaVersion>2.4.3</topiaVersion>
- <eugeneVersion>2.2</eugeneVersion>
+ <topiaVersion>2.4.4-SNAPSHOT</topiaVersion>
+ <eugeneVersion>2.2.1-SNAPSHOT</eugeneVersion>
<tapestryVersion>5.1.0.5</tapestryVersion>
<hibernateVersion>3.3.2.GA</hibernateVersion>
1
0