Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
December 2010
- 3 participants
- 58 discussions
[Suiviobsmer-commits] r845 - in trunk/wao-ui/src/main/java/fr/ifremer/wao/ui: data pages services
by bleny@users.labs.libre-entreprise.org 21 Dec '10
by bleny@users.labs.libre-entreprise.org 21 Dec '10
21 Dec '10
Author: bleny
Date: 2010-12-21 11:17:49 +0000 (Tue, 21 Dec 2010)
New Revision: 845
Log:
enable per-program page authorisation
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/RequiresAuthentication.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/BoatActivityCalendar.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Cartography.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/IndicatorsHistory.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/RequiresAuthentication.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/RequiresAuthentication.java 2010-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/RequiresAuthentication.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -21,6 +21,7 @@
package fr.ifremer.wao.ui.data;
+import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.UserRole;
import java.lang.annotation.Documented;
@@ -44,8 +45,10 @@
public @interface RequiresAuthentication {
// By default everybody can access
- UserRole[] value() default
+ UserRole[] allowedRoles() default
{UserRole.OBSERVER, UserRole.ADMIN, UserRole.COORDINATOR, UserRole.GUEST};
+ ObsProgram[] allowedPrograms() default {ObsProgram.OBSMER, ObsProgram.OBSVENTE};
+
boolean readOnlyAllowed() default true;
}
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-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -93,7 +93,7 @@
*
* @author fdesbois <fdesbois at codelutin.com>
*/
- at RequiresAuthentication(value = {UserRole.ADMIN, UserRole.COORDINATOR}, readOnlyAllowed = false)
+ at RequiresAuthentication(allowedRoles = {UserRole.ADMIN, UserRole.COORDINATOR}, readOnlyAllowed = false)
@IncludeStylesheet("context:css/administration.css")
@IncludeJavaScriptLibrary("context:js/administration.js")
public class Administration {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java 2010-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -54,7 +54,7 @@
*
* @author fdesbois <fdesbois at codelutin.com>
*/
- at RequiresAuthentication({UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
+ at RequiresAuthentication(allowedRoles = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
@IncludeStylesheet("context:css/boats.css")
public class BoatActivityCalendar {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -85,7 +85,7 @@
*
* @author fdesbois <fdesbois at codelutin.com>
*/
- at RequiresAuthentication({UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
+ at RequiresAuthentication(allowedRoles = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
@IncludeStylesheet("context:css/boats.css")
public class Boats extends AbstractFilteredPage {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Cartography.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Cartography.java 2010-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Cartography.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -51,7 +51,7 @@
* @author fdesbois <fdesbois at codelutin.com>
* @version $Id$
*/
- at RequiresAuthentication({UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
+ at RequiresAuthentication(allowedRoles = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
public class Cartography {
@SessionState
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java 2010-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -48,7 +48,7 @@
*
*
*/
- at RequiresAuthentication(value = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER}, readOnlyAllowed = false)
+ at RequiresAuthentication(allowedRoles = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER}, readOnlyAllowed = false)
@IncludeStylesheet("context:css/common.css")
@IncludeJavaScriptLibrary("context:js/contactForm.js")
public class ContactForm {
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-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -92,7 +92,7 @@
* @version $Id$
*/
@SuppressWarnings({"UnusedDeclaration"})
- at RequiresAuthentication({UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
+ at RequiresAuthentication(allowedRoles = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
@IncludeStylesheet("context:css/contacts.css")
@IncludeJavaScriptLibrary("context:js/contacts.js")
public class Contacts extends AbstractFilteredPage {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/IndicatorsHistory.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/IndicatorsHistory.java 2010-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/IndicatorsHistory.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -20,6 +20,7 @@
*/
package fr.ifremer.wao.ui.pages;
+import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.IndicatorLog;
import fr.ifremer.wao.service.ServiceSynthesis;
@@ -38,7 +39,7 @@
*
* @author bleny
*/
- at RequiresAuthentication(value = {UserRole.ADMIN}, readOnlyAllowed = true)
+ at RequiresAuthentication(allowedPrograms = {ObsProgram.OBSMER}, allowedRoles = {UserRole.ADMIN}, readOnlyAllowed = true)
@IncludeStylesheet("context:css/common.css")
public class IndicatorsHistory {
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-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -88,7 +88,7 @@
*
* @author fdesbois <fdesbois at codelutin.com>
*/
- at RequiresAuthentication(value = UserRole.ADMIN, readOnlyAllowed = false)
+ at RequiresAuthentication(allowedRoles = UserRole.ADMIN, readOnlyAllowed = false)
@IncludeStylesheet("context:css/sampling.css")
public class SampleRowForm {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2010-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -33,6 +33,7 @@
import fr.ifremer.wao.bean.GlobalIndicatorValue;
import fr.ifremer.wao.bean.GlobalSynthesisParameters;
import fr.ifremer.wao.bean.GlobalSynthesisResult;
+import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.SamplingFilterImpl;
import fr.ifremer.wao.bean.SynthesisId;
@@ -83,7 +84,7 @@
*
* @author fdesbois <fdesbois at codelutin.com>
*/
- at RequiresAuthentication({UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
+ at RequiresAuthentication(allowedPrograms = {ObsProgram.OBSMER}, allowedRoles = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER})
@IncludeStylesheet("context:css/synthesis.css")
public class Synthesis extends AbstractFilteredPage {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java 2010-12-21 11:13:57 UTC (rev 844)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java 2010-12-21 11:17:49 UTC (rev 845)
@@ -23,6 +23,7 @@
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.ui.data.RequiresAuthentication;
import org.apache.tapestry5.services.ApplicationStateManager;
@@ -60,29 +61,46 @@
@Override
public boolean isAllowed(Class<?> page) {
- if (page.isAnnotationPresent(RequiresAuthentication.class) &&
- existConnectedUser()) {
+ boolean isAllowed = false;
+ if (existConnectedUser()) {
+ if (page.isAnnotationPresent(RequiresAuthentication.class)) {
- RequiresAuthentication check =
- page.getAnnotation(RequiresAuthentication.class);
+ RequiresAuthentication check =
+ page.getAnnotation(RequiresAuthentication.class);
- ConnectedUser user = getConnectedUser();
+ ConnectedUser connectedUser = getConnectedUser();
- // Check if user readOnly is allowed
- if (user.isReadOnly() && !check.readOnlyAllowed()) {
- return false;
- }
+ // Check if user readOnly is allowed
+ if (connectedUser.isReadOnly() && ! check.readOnlyAllowed()) {
+ isAllowed = false;
+ } else {
- // Check if user role is allowed
- for (UserRole role : check.value()) {
- if (role.equals(user.getRole())) {
- return true;
+ boolean roleAllowed = false;
+ boolean programAllowed = false;
+
+ // Check if user role is allowed
+ for (UserRole role : check.allowedRoles()) {
+ if (role.equals(connectedUser.getRole())) {
+ roleAllowed = true;
+ }
+ }
+
+ // check if program is allowed
+ if (roleAllowed) { // skip if role is not allowed
+ for (ObsProgram program : check.allowedPrograms()) {
+ if (program.equals(connectedUser.getProfile().getObsProgram())) {
+ programAllowed = true;
+ }
+ }
+ }
+
+ isAllowed = roleAllowed && programAllowed;
}
+ } else {
+ isAllowed = true;
}
- return false;
}
- // No restriction if annotation is not present
- return true;
+ return isAllowed;
}
@Override
1
0
[Suiviobsmer-commits] r844 - trunk/wao-business/src/main/resources/i18n
by bleny@users.labs.libre-entreprise.org 21 Dec '10
by bleny@users.labs.libre-entreprise.org 21 Dec '10
21 Dec '10
Author: bleny
Date: 2010-12-21 11:13:57 +0000 (Tue, 21 Dec 2010)
New Revision: 844
Log:
fix i18n
Modified:
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
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-21 09:57:04 UTC (rev 843)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-21 11:13:57 UTC (rev 844)
@@ -1,5 +1,6 @@
+fr.ifremer.wao.bean.ObsProgram.OBSDEB=ObsDeb
+fr.ifremer.wao.bean.ObsProgram.OBSVENTE=ObsVente
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
1
0
[Suiviobsmer-commits] r843 - trunk/wao-business/src/main/resources/i18n
by bleny@users.labs.libre-entreprise.org 21 Dec '10
by bleny@users.labs.libre-entreprise.org 21 Dec '10
21 Dec '10
Author: bleny
Date: 2010-12-21 09:57:04 +0000 (Tue, 21 Dec 2010)
New Revision: 843
Log:
fix i18n
Modified:
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
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-21 09:51:09 UTC (rev 842)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-21 09:57:04 UTC (rev 843)
@@ -1,135 +1,135 @@
fr.ifremer.wao.bean.ObsProgram.OBSMER=ObsMer
-fr.ifremer.wao.bean.ObsProgram.ObsDeb=ObsDeb
+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.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
-fr.ifremer.wao.entity.FishingGearDCF.FAR=Pi\u00E8ges a\u00E9riens
-fr.ifremer.wao.entity.FishingGearDCF.FCN=\u00C9perviers
-fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-sp\u00E9cifi\u00E9s)
-fr.ifremer.wao.entity.FishingGearDCF.FIX=Pi\u00E8ges (non-sp\u00E9cifi\u00E9s)
-fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pi\u00E8ges fixes non couverts
+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
+fr.ifremer.wao.entity.FishingGearDCF.FAR=Pi\u00e8ges a\u00e9riens
+fr.ifremer.wao.entity.FishingGearDCF.FCN=\u00c9perviers
+fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.FIX=Pi\u00e8ges (non-sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pi\u00e8ges fixes non couverts
fr.ifremer.wao.entity.FishingGearDCF.FPO=Nasses (casiers)
-fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00E0 l'\u00E9talage (diables)
+fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00e0 l'\u00e9talage (diables)
fr.ifremer.wao.entity.FishingGearDCF.FWR=Barrages, parcs, bordigues, etc.
fr.ifremer.wao.entity.FishingGearDCF.FYK=Verveux
-fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00E9lants (non sp\u00E9cifi\u00E9s)
-fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00E0 civelles
-fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00e9lants (non sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00e0 civelles
+fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00e9cifi\u00e9s)
fr.ifremer.wao.entity.FishingGearDCF.GNC=Filets maillants encerclants
-fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00E9rivants (filets d\u00E9rivants)
+fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00e9rivants (filets d\u00e9rivants)
fr.ifremer.wao.entity.FishingGearDCF.GNF=Filets maillants fixes (sur perches)
-fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00E9s (ancr\u00E9s)
-fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00E9mailleurs
-fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00E9mails et filets maillants combin\u00E9s
-fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00E9mails
+fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00e9s (ancr\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00e9mailleurs
+fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00e9mails et filets maillants combin\u00e9s
+fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00e9mails
fr.ifremer.wao.entity.FishingGearDCF.HAR=Harpons
-fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00E9canis\u00E9es
+fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00e9canis\u00e9es
fr.ifremer.wao.entity.FishingGearDCF.HMP=Pompes
-fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00E9colte (non sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00e9colte (non sp\u00e9cifi\u00e9s)
fr.ifremer.wao.entity.FishingGearDCF.LA=Filets tournants sans coulisse (filet lamparo)
-fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00E0 main et lignes avec cannes
-fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00E0 main et lignes \u00E0 cannes
-fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00E9cifi\u00E9es)
-fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00E9rivantes
-fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00E9es ou semi-flottantes
-fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00E9s (non sp\u00E9cifi\u00E9s)
-fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00E9s man\u0153uvr\u00E9es du bateau
-fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00E9s portatifs
-fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00E9s fixes man\u0153uvr\u00E9es du rivage
-fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00EEne
-fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00E7ons et lignes (non sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00e0 main et lignes avec cannes
+fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00e0 main et lignes \u00e0 cannes
+fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00e9cifi\u00e9es)
+fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00e9rivantes
+fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00e9es ou semi-flottantes
+fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00e9s (non sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00e9s man\u0153uvr\u00e9es du bateau
+fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00e9s portatifs
+fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00e9s fixes man\u0153uvr\u00e9es du rivage
+fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00eene
+fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00e7ons et lignes (non sp\u00e9cifi\u00e9s)
fr.ifremer.wao.entity.FishingGearDCF.MIS=Divers
-fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00E9cifi\u00E9s
-fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00E0 panneaux (non sp\u00E9cifi\u00E9)
-fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00E0 panneaux
-fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00E9lagiques \u00E0 panneaux
-fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00E0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00e9cifi\u00e9s
+fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00e0 panneaux (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00e0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00e9lagiques \u00e0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00e0 panneaux
fr.ifremer.wao.entity.FishingGearDCF.PS=Filets tournants avec coulisse (sennes coulissantes)
-fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00E9es par un bateau
-fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00E9es par deux bateaux
-fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00E9cifi\u00E9)
+fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par un bateau
+fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00e9cifi\u00e9)
fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-b\u0153ufs de fond
-fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00E9lagiques
-fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00EAche r\u00E9vr\u00E9ative
+fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00e9lagiques
+fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00eache r\u00e9vr\u00e9ative
fr.ifremer.wao.entity.FishingGearDCF.SB=Sennes de plages
fr.ifremer.wao.entity.FishingGearDCF.SDN=Sennes danoises
-fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00E9es par deux bateaux
-fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00E9cossaises
-fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00E9es \u00E0 bord
-fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00E9cifi\u00E9es)
-fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00E9cifi\u00E9)
-fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00E0 perche
-fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00E0 langoustines
-fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00E0 crevettes
-fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00E9lagique (non sp\u00E9cifi\u00E9)
-fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00E0 crevettes
-fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00E9cifi\u00E9)
-fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00E9cifi\u00E9
+fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00e9es par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00e9cossaises
+fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00e9es \u00e0 bord
+fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00e9cifi\u00e9es)
+fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00e0 perche
+fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00e0 langoustines
+fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00e0 crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00e9lagique (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00e0 crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00e9cifi\u00e9
fr.ifremer.wao.entity.TargetSpeciesDCF.ALG=Algues
-fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00E8ces catadromes
-fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00E9s
+fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00e8ces catadromes
+fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00e9s
fr.ifremer.wao.entity.TargetSpeciesDCF.CSJ=Coquilles Saint-Jacques
-fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00E8ces d\u00E9mersales
-fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00E8ces d'eaux profondes
+fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00e8ces d\u00e9mersales
+fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00e8ces d'eaux profondes
fr.ifremer.wao.entity.TargetSpeciesDCF.FIN=Poisson plats
-fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00E9lagiques
+fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00e9lagiques
fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques
-fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00E9lagiques
+fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00e9lagiques
wao.business.bean.DataReliability.doubtful=douteuse
-wao.business.bean.DataReliability.not_provided=non renseign\u00E9e
+wao.business.bean.DataReliability.not_provided=non renseign\u00e9e
wao.business.bean.DataReliability.not_reliable=non exploitable
wao.business.bean.DataReliability.reliable=exploitable
wao.business.bean.DataReliability.unknown=inconnue
-wao.business.bean.GlobalIndicatorValue.bad=P\u00E9nalit\u00E9 de niveau 1
+wao.business.bean.GlobalIndicatorValue.bad=P\u00e9nalit\u00e9 de niveau 1
wao.business.bean.GlobalIndicatorValue.good=Bonus de niveau 1
wao.business.bean.GlobalIndicatorValue.neutral=Conforme au cahier des charges
-wao.business.bean.GlobalIndicatorValue.very_bad=P\u00E9nalit\u00E9 de niveau 2
+wao.business.bean.GlobalIndicatorValue.very_bad=P\u00e9nalit\u00e9 de niveau 2
wao.business.bean.GlobalIndicatorValue.very_good=Bonus de niveau 2
-wao.business.bean.SynthesisId.allegro_reactivity=D\u00E9lais de transmission des donn\u00E9es
-wao.business.bean.SynthesisId.compliance_boarding=Respect du nombre d'observateurs embarqu\u00E9s
-wao.business.bean.SynthesisId.contact_state=\u00C9tats des contacts
-wao.business.bean.SynthesisId.data_reliability=Qualit\u00E9 de la donn\u00E9e
-wao.business.bean.SynthesisId.graph_boarding=Taux d'embarquement sur un m\u00EAme navire conforme aux exigences
-wao.business.bean.SynthesisId.graph_sampling=Taux de r\u00E9alisation du plan d'\u00E9chantillonage
-wao.business.bean.SynthesisId.non_compliance_boarding=Non-respect du nombre d'observateurs embarqu\u00E9s
-wao.error.boat.canCreateContact=Impossible de cr\u00E9er un nouveau contact pour la soci\u00E9t\u00E9 %1$s et le navire %2$s (%3$d)
-wao.error.boat.getNbBoarding=Impossible de r\u00E9cup\u00E9rer le nombre d'embarquements r\u00E9els depuis le %1$s
-wao.error.boatInfos.getNbBoardingForCompany=Impossible de r\u00E9cup\u00E9rer le nombre d'embarquements r\u00E9els depuis le %1$s pour la soci\u00E9t\u00E9 %2$s
+wao.business.bean.SynthesisId.allegro_reactivity=D\u00e9lais de transmission des donn\u00e9es
+wao.business.bean.SynthesisId.compliance_boarding=Respect du nombre d'observateurs embarqu\u00e9s
+wao.business.bean.SynthesisId.contact_state=\u00c9tats des contacts
+wao.business.bean.SynthesisId.data_reliability=Qualit\u00e9 de la donn\u00e9e
+wao.business.bean.SynthesisId.graph_boarding=Taux d'embarquement sur un m\u00eame navire conforme aux exigences
+wao.business.bean.SynthesisId.graph_sampling=Taux de r\u00e9alisation du plan d'\u00e9chantillonage
+wao.business.bean.SynthesisId.non_compliance_boarding=Non-respect du nombre d'observateurs embarqu\u00e9s
+wao.error.boat.canCreateContact=Impossible de cr\u00e9er un nouveau contact pour la soci\u00e9t\u00e9 %1$s et le navire %2$s (%3$d)
+wao.error.boat.getNbBoarding=Impossible de r\u00e9cup\u00e9rer le nombre d'embarquements r\u00e9els depuis le %1$s
+wao.error.boatInfos.getNbBoardingForCompany=Impossible de r\u00e9cup\u00e9rer le nombre d'embarquements r\u00e9els depuis le %1$s pour la soci\u00e9t\u00e9 %2$s
wao.error.context.close=Une erreur est survenue pendant la fermeture du contexte principale de ToPIA
wao.error.context.encodeString=
-wao.error.context.getRootContext=Une erreur est survenue pour la r\u00E9cup\u00E9ration du contexte principale de ToPIA
+wao.error.context.getRootContext=Une erreur est survenue pour la r\u00e9cup\u00e9ration du contexte principale de ToPIA
wao.error.context.parse=Une erreur est survenue pendant le chargement de la configuration du fichier %1$s
wao.error.context.rollback=Une erreur est survenue pendant l'annulation de la transaction courante
-wao.error.context.start=Une erreur est survenue pendant le d\u00E9marrage de l'application
+wao.error.context.start=Une erreur est survenue pendant le d\u00e9marrage de l'application
wao.error.context.stop=Une erreur est survenue pendant la fermeture de l'application
-wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00E9es r\u00E9els pour le mois de %1$s [ligne \: %2$s]
-wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00E9crit par %1$s
-wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00E9er ou modifier les informations li\u00E9s au navire %1$d pour la soci\u00E9t\u00E9 %2$s
-wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00E9lectionn\u00E9s
+wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00e9es r\u00e9els pour le mois de %1$s [ligne \: %2$s]
+wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00e9crit par %1$s
+wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00e9er ou modifier les informations li\u00e9s au navire %1$d pour la soci\u00e9t\u00e9 %2$s
+wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00e9lectionn\u00e9s
wao.error.serviceBoat.getActivityCalendarLogAccessFile=
wao.error.serviceBoat.getActivityCalendarLogFile=
wao.error.serviceBoat.getBoat=Impossible de charger le navire
-wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00E9cup\u00E9rer les navires avec un nom commencant par '%1$s'
+wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00e9cup\u00e9rer les navires avec un nom commencant par '%1$s'
wao.error.serviceBoat.getBoatsByFilter=Impossible de filtrer la liste des navires
-wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00EEne d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00E9der 6 chiffres
-wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00E9cup\u00E9rer les informations du navire immatricul\u00E9 %1$d pour la soci\u00E9t\u00E9 %2$s
-wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00E9 du navire %1$s (%2$d)
+wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00eene d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00e9der 6 chiffres
+wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00e9cup\u00e9rer les informations du navire immatricul\u00e9 %1$d pour la soci\u00e9t\u00e9 %2$s
+wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00e9 du navire %1$s (%2$d)
wao.error.serviceBoat.getNbBoatsByFilter=Impossible de filtrer la liste des navires
wao.error.serviceBoat.getShipOwnerNamesContains=
-wao.error.serviceBoat.importActivityCalendarCsv=Probl\u00E8me d'import du fichier CSV des calendriers d'activit\u00E9
-wao.error.serviceBoat.importBoatCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00E9tails.
+wao.error.serviceBoat.importActivityCalendarCsv=Probl\u00e8me d'import du fichier CSV des calendriers d'activit\u00e9
+wao.error.serviceBoat.importBoatCsv=Probl\u00e8me d'import du fichier CSV. V\u00e9rifiez l'en-t\u00eate du fichier \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00e9tails.
wao.error.serviceCartography.exportContactStatisticsKml=
-wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonn\u00E9es des quartiers des navires. V\u00E9rifiez la documentation pour le bon format du fichier Kml.
+wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonn\u00e9es des quartiers des navires. V\u00e9rifiez la documentation pour le bon format du fichier Kml.
wao.error.serviceChart.getContactPieChartData=
wao.error.serviceChart.getContactPieChartUrl=
wao.error.serviceContact.exportContactCsv=Impossible d'exporter les contacts
wao.error.serviceContact.getContact=Impossible de trouver le contact
wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts
-wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00E9s
+wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00e9s
wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact
wao.error.serviceContact.importContactCsv=Impossible d'importer les contacts
wao.error.serviceContact.saveComment=
@@ -137,56 +137,56 @@
wao.error.serviceContact.sendContactDoneEmail=
wao.error.serviceContact.updateSampleMonthTidesValue=
wao.error.serviceNews.getNewNews=
-wao.error.serviceNews.getNews=Impossible de r\u00E9cup\u00E9rer l'ensemble des news
+wao.error.serviceNews.getNews=Impossible de r\u00e9cup\u00e9rer l'ensemble des news
wao.error.serviceNews.saveNews=Impossible d'enregistrer la news ayant pour titre '%1$s'
wao.error.serviceReferential.getCodesDCF5Contains=
wao.error.serviceReferential.getFacades=Impossible de charger la liste des facades
-wao.error.serviceReferential.getFishingZones=Impossible de charger la liste des secteurs de p\u00EAche
-wao.error.serviceReferential.getProfessions=Impossible de charger la liste des m\u00E9tiers
-wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00EAche
-wao.error.serviceReferential.importDCFcodes=Impossible de cr\u00E9er le r\u00E9f\u00E9rentiel des codes DCF
-wao.error.serviceReferential.importFishingZoneCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00E9tails.
+wao.error.serviceReferential.getFishingZones=Impossible de charger la liste des secteurs de p\u00eache
+wao.error.serviceReferential.getProfessions=Impossible de charger la liste des m\u00e9tiers
+wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00eache
+wao.error.serviceReferential.importDCFcodes=Impossible de cr\u00e9er le r\u00e9f\u00e9rentiel des codes DCF
+wao.error.serviceReferential.importFishingZoneCsv=Probl\u00e8me d'import du fichier CSV. V\u00e9rifiez l'en-t\u00eate du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00e9tails.
wao.error.serviceSampling.createSampleRowLog=
-wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00E9chantillon
-wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'\u00E9chantillon \: %1$s
-wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'\u00E9chantillonnage sur la p\u00E9riode du %1$s au %2$s
+wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00e9chantillon
+wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'\u00e9chantillon \: %1$s
+wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'\u00e9chantillonnage sur la p\u00e9riode du %1$s au %2$s
wao.error.serviceSampling.getDCFGears=
wao.error.serviceSampling.getDCFSpecies=
wao.error.serviceSampling.getNewProfession=
wao.error.serviceSampling.getNewSampleMonth=
wao.error.serviceSampling.getNewSampleRow=
-wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00E9cup\u00E9rer un nouveau code pour une ligne d'\u00E9chantillonnage
+wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00e9cup\u00e9rer un nouveau code pour une ligne d'\u00e9chantillonnage
wao.error.serviceSampling.getNewSampleRowLog=
wao.error.serviceSampling.getPrograms=Impossible de charger la liste des programmes
-wao.error.serviceSampling.getSampleRow=Impossible de charger la ligne d'\u00E9chantillon ayant pour identifiant \: %1$s
-wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'\u00E9chantillon ayant pour code %1$s
-wao.error.serviceSampling.getSampleRowsByFilter=Impossible de r\u00E9cup\u00E9rer la liste des lignes du plan d'\u00E9chantillonnage
-wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00E9cup\u00E9rer la liste des lignes du plan d'\u00E9chantillonnage
-wao.error.serviceSampling.importSamplingPlanCsv=Erreur \u00E0 la ligne %1$d [CODE \= %2$s]
+wao.error.serviceSampling.getSampleRow=Impossible de charger la ligne d'\u00e9chantillon ayant pour identifiant \: %1$s
+wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'\u00e9chantillon ayant pour code %1$s
+wao.error.serviceSampling.getSampleRowsByFilter=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage
+wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage
+wao.error.serviceSampling.importSamplingPlanCsv=Erreur \u00e0 la ligne %1$d [CODE \= %2$s]
wao.error.serviceSynthesis.getAllIndicatorLogs=
-wao.error.serviceSynthesis.getBoardingBoats=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es du graphique concernant les embarquements sur les navires
+wao.error.serviceSynthesis.getBoardingBoats=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es du graphique concernant les embarquements sur les navires
wao.error.serviceSynthesis.getComplianceBoardingIndicator=
-wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de r\u00E9cup\u00E9rer l'indicateur de r\u00E9activit\u00E9 sur les dates de saisies dans Allegro
+wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de r\u00e9cup\u00e9rer l'indicateur de r\u00e9activit\u00e9 sur les dates de saisies dans Allegro
wao.error.serviceSynthesis.getContactPieChartData=
wao.error.serviceSynthesis.getContactPieChartDataByBoatDistrict=
-wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00E9cup\u00E9rer les statistiques sur les \u00E9tats des contacts
+wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00e9cup\u00e9rer les statistiques sur les \u00e9tats des contacts
wao.error.serviceSynthesis.getDataReliability=
-wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es pour le graphique dynamique des efforts de mar\u00E9es
-wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es concernant les indicateurs pour la synth\u00E8se globale
+wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es pour le graphique dynamique des efforts de mar\u00e9es
+wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es concernant les indicateurs pour la synth\u00e8se globale
wao.error.serviceSynthesis.getGlobalSynthesisResult=
-wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de r\u00E9cup\u00E9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00E9s
-wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00E0 jour les param\u00E8tres de la synth\u00E8se globale
+wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de r\u00e9cup\u00e9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00e9s
+wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00e0 jour les param\u00e8tres de la synth\u00e8se globale
wao.error.serviceUser.connect=Une erreur est survenue lors de la demande de connexion
-wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00E9er l'administrateur par d\u00E9faut
-wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00E9er ou de mettre \u00E0 jour la soci\u00E9t\u00E9
-wao.error.serviceUser.createUpdateUser=Impossible de cr\u00E9er ou de mettre \u00E0 jour l'utilisateur
-wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00E9t\u00E9 ou de v\u00E9rifier les contraintes de suppression
+wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00e9er l'administrateur par d\u00e9faut
+wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00e9er ou de mettre \u00e0 jour la soci\u00e9t\u00e9
+wao.error.serviceUser.createUpdateUser=Impossible de cr\u00e9er ou de mettre \u00e0 jour l'utilisateur
+wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00e9t\u00e9 ou de v\u00e9rifier les contraintes de suppression
wao.error.serviceUser.deleteUser=Impossible de supprimer l'utilisateur
wao.error.serviceUser.existLogin=
wao.error.serviceUser.forgetPassword=Impossible d'envoyer le mail d'oubli de mot de passe
-wao.error.serviceUser.getCompanies=Impossible de r\u00E9cup\u00E9rer la liste des soci\u00E9t\u00E9s
+wao.error.serviceUser.getCompanies=Impossible de r\u00e9cup\u00e9rer la liste des soci\u00e9t\u00e9s
wao.error.serviceUser.getCompany=
wao.error.serviceUser.getNewUser=Impossible d'instancier un nouvel utilisateur
-wao.error.serviceUser.getObservers=Impossible de r\u00E9cup\u00E9rer la liste des observateurs
+wao.error.serviceUser.getObservers=Impossible de r\u00e9cup\u00e9rer la liste des observateurs
wao.error.serviceUser.getUserRolesByLogin=
-wao.error.serviceUser.getUsersByCompany=Impossible de r\u00E9cup\u00E9rer la liste des utilisateurs de la soci\u00E9t\u00E9 %1$s
+wao.error.serviceUser.getUsersByCompany=Impossible de r\u00e9cup\u00e9rer la liste des utilisateurs de la soci\u00e9t\u00e9 %1$s
1
0
[Suiviobsmer-commits] r842 - trunk/wao-business/src/main/java/fr/ifremer/wao/service
by bleny@users.labs.libre-entreprise.org 21 Dec '10
by bleny@users.labs.libre-entreprise.org 21 Dec '10
21 Dec '10
Author: bleny
Date: 2010-12-21 09:51:09 +0000 (Tue, 21 Dec 2010)
New Revision: 842
Log:
code style
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
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-21 09:50:46 UTC (rev 841)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-21 09:51:09 UTC (rev 842)
@@ -430,25 +430,11 @@
}
}
- WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
- WaoUser userToDelete = dao.findByTopiaId(user.getTopiaId());
+ WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
+ WaoUser userToDelete = dao.findByTopiaId(user.getTopiaId());
+ dao.delete(userToDelete);
+ transaction.commitTransaction();
-/* //userToDelete.clearUserProfile();
-
- // userToDelete.setUserProfile(null);
-
- // remove all profiles
- UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
- Collection<UserProfile> userProfileCollection = userToDelete.getUserProfile();
- if (CollectionUtils.isNotEmpty(userProfileCollection)) {
- for (UserProfile userProfile : userProfileCollection) {
- // userProfileDAO.delete(userProfile);
- }
- }*/
-
- dao.delete(userToDelete);
- transaction.commitTransaction();
-
}
@Override
1
0
[Suiviobsmer-commits] r841 - in trunk/wao-business/src/main: java/fr/ifremer/wao xmi
by bleny@users.labs.libre-entreprise.org 21 Dec '10
by bleny@users.labs.libre-entreprise.org 21 Dec '10
21 Dec '10
Author: bleny
Date: 2010-12-21 09:50:46 +0000 (Tue, 21 Dec 2010)
New Revision: 841
Log:
migrate code to 2.0 as next version
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContext.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
trunk/wao-business/src/main/xmi/wao.zargo
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-20 16:38:59 UTC (rev 840)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-21 09:50:46 UTC (rev 841)
@@ -580,7 +580,7 @@
}
@Override
- protected void addColumnsForObsProgram_1_7(List<String> queries) {
+ protected void addColumnsForObsProgram_2_0(List<String> queries) {
queries.add("ALTER TABLE Contact ADD obsProgramOrdinal SMALLINT;");
queries.add("ALTER TABLE SampleRow ADD obsProgramOrdinal SMALLINT;");
@@ -592,7 +592,7 @@
}
@Override
- protected void createTableUserProfile_1_7(List<String> queries) {
+ protected void createTableUserProfile_2_0(List<String> queries) {
queries.add("CREATE TABLE UserProfile (" +
"topiaId CHARACTER VARYING(255) PRIMARY KEY," +
"topiaVersion BIGINT NOT NULL," +
@@ -606,7 +606,7 @@
}
@Override
- protected void migrateFromUserRoleToUserProfile_1_7(TopiaContextImplementor tx, List<String> queries) throws TopiaException {
+ protected void migrateFromUserRoleToUserProfile_2_0(TopiaContextImplementor tx, List<String> queries) throws TopiaException {
SQLQuery query = tx.getHibernate().
createSQLQuery("SELECT topiaId, role, roleReadOnly FROM WaoUser;");
@@ -645,13 +645,13 @@
}
@Override
- protected void removeUserRolesColumns_1_7(List<String> queries) {
+ protected void removeUserRolesColumns_2_0(List<String> queries) {
queries.add("ALTER TABLE WaoUser DROP COLUMN role;");
queries.add("ALTER TABLE WaoUser DROP COLUMN roleReadOnly;");
}
@Override
- protected void addMultipleObserversInContact_1_7(List<String> queries) {
+ protected void addMultipleObserversInContact_2_0(List<String> queries) {
queries.add("ALTER TABLE Contact RENAME observer TO mainObserver");
queries.add("CREATE TABLE Contact_SecondaryObservers (" +
"Contact character varying(255) NOT NULL," +
@@ -661,4 +661,27 @@
"CONSTRAINT SecondaryObservers_fkey FOREIGN KEY (SecondaryObservers) " +
"REFERENCES WaoUser (topiaid));");
}
+
+ @Override
+ protected void addAdminRolesToAdmin_2_0(TopiaContextImplementor tx, List<String> queries) throws TopiaException {
+ SQLQuery query = tx.getHibernate().
+ createSQLQuery("SELECT topiaId FROM WaoUser WHERE login='admin';");
+
+ Object result = query.uniqueResult();
+ String adminTopiaId = (String) result;
+
+ String topiaCreateDateValue = "DATE '2010-12-20'";
+
+ String sql = String.format("INSERT INTO UserProfile (topiaId, topiaVersion, topiaCreateDate, waoUser, obsProgramOrdinal, userRoleOrdinal, canWrite) " +
+ "VALUES ('%s', %s, %s, '%s', %s, %s, %s);",
+ "fr.ifremer.wao.entities.UserProfile#1292868645000#1042143857",
+ 0,
+ topiaCreateDateValue,
+ adminTopiaId,
+ ObsProgram.OBSVENTE.ordinal(),
+ UserRole.ADMIN.ordinal(),
+ true);
+
+ queries.add(sql);
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContext.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContext.java 2010-12-20 16:38:59 UTC (rev 840)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContext.java 2010-12-21 09:50:46 UTC (rev 841)
@@ -117,7 +117,6 @@
* @param entity
* @return boolean
*/
- @Deprecated
<E extends TopiaEntity> boolean prepareTopiaId(Class<E> entityClass,
E entity);
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-20 16:38:59 UTC (rev 840)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-12-21 09:50:46 UTC (rev 841)
@@ -105,16 +105,18 @@
protected abstract void removeCodeDCF5columnFromProfession_1_6(List<String> queries);
- protected abstract void addColumnsForObsProgram_1_7(List<String> queries);
+ protected abstract void addColumnsForObsProgram_2_0(List<String> queries);
- protected abstract void createTableUserProfile_1_7(List<String> queries);
+ protected abstract void createTableUserProfile_2_0(List<String> queries);
- protected abstract void migrateFromUserRoleToUserProfile_1_7(TopiaContextImplementor tx, List<String> queries) throws TopiaException;
+ protected abstract void migrateFromUserRoleToUserProfile_2_0(TopiaContextImplementor tx, List<String> queries) throws TopiaException;
- protected abstract void removeUserRolesColumns_1_7(List<String> queries);
+ protected abstract void removeUserRolesColumns_2_0(List<String> queries);
- protected abstract void addMultipleObserversInContact_1_7(List<String> queries);
+ protected abstract void addMultipleObserversInContact_2_0(List<String> queries);
+ protected abstract void addAdminRolesToAdmin_2_0(TopiaContextImplementor tx, List<String> queries) throws TopiaException;
+
protected static final Version[] VERSIONS = new Version[] {
VersionUtil.valueOf("1.0"),
VersionUtil.valueOf("1.1"),
@@ -123,7 +125,7 @@
VersionUtil.valueOf("1.4"),
VersionUtil.valueOf("1.5"),
VersionUtil.valueOf("1.6"),
- VersionUtil.valueOf("1.7")
+ VersionUtil.valueOf("2.0")
};
@Override
@@ -399,22 +401,24 @@
return result;
}
- public void migrateTo_1_7(TopiaContextImplementor tx,
+ public void migrateTo_2_0(TopiaContextImplementor tx,
boolean showSql,
boolean showProgression) throws TopiaException {
List<String> queries = new LinkedList<String>();
- addColumnsForObsProgram_1_7(queries);
+ addColumnsForObsProgram_2_0(queries);
- createTableUserProfile_1_7(queries);
+ createTableUserProfile_2_0(queries);
- migrateFromUserRoleToUserProfile_1_7(tx, queries);
+ migrateFromUserRoleToUserProfile_2_0(tx, queries);
- removeUserRolesColumns_1_7(queries);
+ removeUserRolesColumns_2_0(queries);
- addMultipleObserversInContact_1_7(queries);
+ addMultipleObserversInContact_2_0(queries);
+ addAdminRolesToAdmin_2_0(tx, queries);
+
String[] strings = queries.toArray(new String[queries.size()]);
executeSQL(tx, true, true, strings);
}
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r840 - in trunk: . wao-business wao-ui
by bleny@users.labs.libre-entreprise.org 20 Dec '10
by bleny@users.labs.libre-entreprise.org 20 Dec '10
20 Dec '10
Author: bleny
Date: 2010-12-20 16:38:59 +0000 (Mon, 20 Dec 2010)
New Revision: 840
Log:
set version to 2.0-SNAPSHOT in POM
Modified:
trunk/pom.xml
trunk/wao-business/pom.xml
trunk/wao-ui/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-12-20 16:35:01 UTC (rev 839)
+++ trunk/pom.xml 2010-12-20 16:38:59 UTC (rev 840)
@@ -15,7 +15,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>wao</artifactId>
- <version>1.7-SNAPSHOT</version>
+ <version>2.0-SNAPSHOT</version>
<modules>
<module>wao-ui</module>
Modified: trunk/wao-business/pom.xml
===================================================================
--- trunk/wao-business/pom.xml 2010-12-20 16:35:01 UTC (rev 839)
+++ trunk/wao-business/pom.xml 2010-12-20 16:38:59 UTC (rev 840)
@@ -10,7 +10,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>wao</artifactId>
- <version>1.7-SNAPSHOT</version>
+ <version>2.0-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.wao</groupId>
Modified: trunk/wao-ui/pom.xml
===================================================================
--- trunk/wao-ui/pom.xml 2010-12-20 16:35:01 UTC (rev 839)
+++ trunk/wao-ui/pom.xml 2010-12-20 16:38:59 UTC (rev 840)
@@ -10,7 +10,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>wao</artifactId>
- <version>1.7-SNAPSHOT</version>
+ <version>2.0-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.wao</groupId>
1
0
[Suiviobsmer-commits] r839 - in trunk: wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/entity wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/resources/i18n wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/resources/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp wao-ui/src/main/webapp/js
by bleny@users.labs.libre-entreprise.org 20 Dec '10
by bleny@users.labs.libre-entreprise.org 20 Dec '10
20 Dec '10
Author: bleny
Date: 2010-12-20 16:35:01 +0000 (Mon, 20 Dec 2010)
New Revision: 839
Log:
move contact edition form to a separated page ; useless code remains until validation by user
Added:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/ContactForm.properties
trunk/wao-ui/src/main/webapp/ContactForm.tml
trunk/wao-ui/src/main/webapp/js/contactForm.js
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-ui/src/main/webapp/Contacts.tml
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-15 18:16:56 UTC (rev 838)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java 2010-12-20 16:35:01 UTC (rev 839)
@@ -43,6 +43,11 @@
}
@Override
+ public boolean isCoordinatorOrObserver() {
+ return getProfile().isCoordinatorOrObserver();
+ }
+
+ @Override
public boolean isObserver() {
return getProfile().isObserver();
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java 2010-12-15 18:16:56 UTC (rev 838)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java 2010-12-20 16:35:01 UTC (rev 839)
@@ -122,4 +122,8 @@
return results;
}
+ public String getLabel() {
+ return libelle;
+ }
+
}
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-15 18:16:56 UTC (rev 838)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java 2010-12-20 16:35:01 UTC (rev 839)
@@ -44,6 +44,11 @@
}
@Override
+ public boolean isCoordinatorOrObserver() {
+ return isCoordinator() || isObserver();
+ }
+
+ @Override
public boolean isObserver() {
return getUserRole() == UserRole.OBSERVER;
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-12-15 18:16:56 UTC (rev 838)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-12-20 16:35:01 UTC (rev 839)
@@ -124,6 +124,19 @@
}
@Override
+ protected Contact executeGetContact(TopiaContext transaction, String contactId) throws Exception {
+ ContactDAO dao = WaoDAOHelper.getContactDAO(transaction);
+ Contact contact = dao.findByTopiaId(contactId);
+
+ // force load
+ contact.getMainObserver();
+ contact.sizeSecondaryObservers();
+ contact.getSampleRow().sizeSampleMonth();
+ contact.getBoat().getName();
+ return contact;
+ }
+
+ @Override
public Map<String, Contact> executeGetContacts(TopiaContext transaction,
ContactFilter filter) throws TopiaException {
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-15 18:16:56 UTC (rev 838)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-20 16:35:01 UTC (rev 839)
@@ -144,7 +144,7 @@
wao.error.serviceReferential.getFishingZones=Impossible de charger la liste des secteurs de p\u00EAche
wao.error.serviceReferential.getProfessions=Impossible de charger la liste des m\u00E9tiers
wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00EAche
-wao.error.serviceReferential.importDCFcodes=Impossible de créer le référentiel des codes DCF
+wao.error.serviceReferential.importDCFcodes=Impossible de cr\u00E9er le r\u00E9f\u00E9rentiel des codes DCF
wao.error.serviceReferential.importFishingZoneCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00E9tails.
wao.error.serviceSampling.createSampleRowLog=
wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00E9chantillon
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java 2010-12-20 16:35:01 UTC (rev 839)
@@ -0,0 +1,486 @@
+package fr.ifremer.wao.ui.pages;
+
+import fr.ifremer.wao.WaoBusinessException;
+import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.bean.DataReliability;
+import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.entity.Contact;
+import fr.ifremer.wao.entity.SampleRow;
+import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.service.ServiceContact;
+import fr.ifremer.wao.service.ServiceUser;
+import fr.ifremer.wao.ui.components.Layout;
+import fr.ifremer.wao.ui.data.GenericSelectModel;
+import fr.ifremer.wao.ui.data.RequiresAuthentication;
+import fr.ifremer.wao.ui.services.WaoManager;
+import org.apache.commons.lang.BooleanUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.tapestry5.Block;
+import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.RenderSupport;
+import org.apache.tapestry5.annotations.Environmental;
+import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
+import org.apache.tapestry5.annotations.IncludeStylesheet;
+import org.apache.tapestry5.annotations.InjectComponent;
+import org.apache.tapestry5.annotations.Log;
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.annotations.SessionState;
+import org.apache.tapestry5.corelib.components.Form;
+import org.apache.tapestry5.corelib.components.Zone;
+import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.ioc.services.PropertyAccess;
+import org.slf4j.Logger;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * In this page, user will be able to edit a contact. Fields depends on right
+ * level and validations.
+ *
+ *
+ */
+ at RequiresAuthentication(value = {UserRole.ADMIN, UserRole.COORDINATOR, UserRole.OBSERVER}, readOnlyAllowed = false)
+ at IncludeStylesheet("context:css/common.css")
+ at IncludeJavaScriptLibrary("context:js/contactForm.js")
+public class ContactForm {
+
+ @Inject
+ private PropertyAccess propertyAccess;
+
+ @Inject
+ private Logger logger;
+
+ @InjectComponent
+ private Layout layout;
+
+ @SessionState
+ @Property
+ private ConnectedUser connectedUser;
+
+ @Inject
+ private WaoManager manager;
+
+ @Inject
+ private ServiceContact serviceContact;
+
+ @Inject
+ private ServiceUser serviceUser;
+
+ @Environmental
+ private RenderSupport renderSupport;
+
+ @InjectComponent
+ private Zone globalZone;
+
+ public DateFormat getDateFormat() {
+ return new SimpleDateFormat("dd/MM/yyyy");
+ }
+
+ public DateFormat getMonthYearFormat() {
+ return new SimpleDateFormat("MM/yyyy");
+ }
+
+ void onActivate(EventContext eventContext) {
+ if (eventContext.getCount() > 0) {
+ contactId = eventContext.get(String.class, 0);
+ }
+ }
+
+ String onPassivate() {
+ return contactId;
+ }
+
+ void setupRender() throws WaoException {
+ contact = null; // reset
+ getContact();
+ }
+
+ @Log
+ void afterRender() {
+ addSendEmailScript();
+ }
+
+ protected void addSendEmailScript() {
+ // Ask user to send an email if not already sent
+ if ( ! getContact().getEmailSent()) {
+
+ String confirmMessage =
+ "Souhaitez vous envoyer un email de demande d\\'ajout " +
+ "du navire à votre portefeuille Allegro afin de pouvoir " +
+ "saisir les données ?";
+
+ // TODO-fdesbois-2010-07-27 : manage array of states in JavaScript
+ renderSupport.addScript("new ContactSendEmail('%s', '%s');",
+ confirmMessage,
+ // Check state BOARDING_DONE
+ ContactState.BOARDING_DONE.name());
+
+ renderSupport.addScript("new ContactSendEmail('%s', '%s');",
+ confirmMessage,
+ // Check state BOARDING_EXPECTED
+ ContactState.BOARDING_EXPECTED.name());
+ }
+ }
+
+ @Persist
+ private String contactId;
+
+ @Persist
+ private Contact oldContact;
+
+ @Persist
+ private Contact contact;
+
+ @Log
+ public Contact getContact() {
+ if (contact == null) {
+ if (StringUtils.isEmpty(contactId)) {
+ // contact = serviceContact.getNewContact()
+ } else {
+ oldContact = serviceContact.getContact(contactId);
+ contact = serviceContact.getContact(contactId);
+
+ mainObserverId = contact.getMainObserver().getTopiaId();
+ if (oldContact == contact) {
+ throw new IllegalStateException("il faut deux instances différentes");
+ }
+ }
+ if (logger.isDebugEnabled()) {
+ logger.debug("contact : " + contact.getTopiaCreateDate() +
+ contact.getId() + contact.getSampleRow().getCode());
+ }
+ }
+ return contact;
+ }
+
+ @InjectComponent
+ private Form contactForm;
+
+ /****************************** INFORMATIONS ******************************/
+
+ public String getBoatDescription() {
+ return manager.getTooltipBoat(contact.getBoat());
+ }
+
+ /****************************** OBSERVERS *********************************/
+
+ @Property
+ private boolean refreshObserversForm;
+
+ @Inject
+ private Block viewObservers;
+
+ @Inject
+ private Block editObservers;
+
+ public Block getViewOrEditObservers() {
+ Block result = viewObservers;
+ if (connectedUser.isCoordinatorOrObserver() && contact.getValidationCompany() == null) {
+ result = editObservers;
+ }
+ return result;
+ }
+
+ @Property
+ private String mainObserverId;
+
+ @InjectComponent
+ private Zone observersFormZone;
+
+ @Persist
+ private List<WaoUser> secondaryObservers;
+
+ @Persist
+ @Property
+ private String selectedSecondaryObserverId;
+
+ @Property
+ private int secondaryObserverIndex;
+
+ @Property
+ private WaoUser observer; // for loop
+
+ private GenericSelectModel<WaoUser> observerSelectModel;
+
+ public GenericSelectModel<WaoUser> getObserverSelectModel() throws WaoException {
+ if (observerSelectModel == null) {
+ List<WaoUser> observers =
+ serviceUser.getObservers(connectedUser.getCompany(), true);
+ observerSelectModel = new GenericSelectModel<WaoUser>(observers,WaoUser.class,
+ "fullName", "topiaId", propertyAccess);
+ }
+ return observerSelectModel;
+ }
+
+ public List<WaoUser> getSecondaryObservers() {
+ if (secondaryObservers == null) {
+ secondaryObservers = new ArrayList<WaoUser>(getContact().getSecondaryObservers());
+ }
+ return secondaryObservers;
+ }
+
+ @Log
+ public void onChangeFromSecondaryObserver(String value) {
+ if (StringUtils.isEmpty(value)) {
+ selectedSecondaryObserverId = null;
+ } else {
+ selectedSecondaryObserverId = value;
+ }
+ if (logger.isDebugEnabled()) {
+ logger.debug("selected observer changed to " + selectedSecondaryObserverId);
+ }
+ }
+
+ @Log
+ public Zone onActionFromAddSecondaryObserver() {
+ if (selectedSecondaryObserverId != null) {
+ WaoUser observerToAdd = getObserverSelectModel().findObject(selectedSecondaryObserverId);
+
+ if (observerToAdd == null) {
+ logger.error("observerToAdd is null, id is " + selectedSecondaryObserverId);
+ } else if ( ! getSecondaryObservers().contains(observerToAdd)) {
+ getSecondaryObservers().add(observerToAdd);
+ }
+ }
+
+ refreshObserversForm = true;
+ return observersFormZone;
+ }
+
+ @Log
+ public Zone onActionFromRemoveSecondaryObserver(int secondaryObserverIndex) {
+ getSecondaryObservers().remove(secondaryObserverIndex);
+
+ refreshObserversForm = true;
+ return observersFormZone;
+ }
+
+ /************************ OBSERVATION REPORT ******************************/
+
+ @Inject
+ private Block viewObservationReport;
+
+ @Inject
+ private Block editObservationReport;
+
+ public Block getViewOrEditObservationReport() {
+ Block result = viewObservationReport;
+ if (connectedUser.isCoordinatorOrObserver() && contact.getValidationCompany() == null) {
+ result = editObservationReport;
+ }
+ return result;
+ }
+
+
+ /************************ ADMIN FIELDS ************************************/
+
+
+ public boolean canEditDataReliability() {
+ boolean result = connectedUser.isAdmin() // coordinator can see the value
+ && BooleanUtils.isTrue(getContact().getValidationCompany())
+ && getContact().getValidationProgram() == null;
+ return result;
+ }
+
+
+ /************** VALIDATION AND SUBMISSION *********************************/
+
+ @Persist
+ private boolean saveContact; // true if user selected save button, false if revert
+
+ @Log
+ public void onSelectedFromRevertContact() {
+ saveContact = false;
+ }
+
+ @Log
+ public void onSelectedFromSaveContact() {
+ saveContact = true;
+ }
+
+ @Log
+ void onValidateFormFromContactForm() {
+
+ contactForm.clearErrors();
+
+ if ( ! saveContact) {
+ return;
+ }
+
+ if (mainObserverId == null) {
+ contactForm.recordError("Il faut au moins un observateur");
+ } else {
+ WaoUser mainObserver = getObserverSelectModel().findObject(mainObserverId);
+ if (logger.isDebugEnabled()) {
+ logger.debug("main observer is " + mainObserver);
+ }
+ contact.setMainObserver(mainObserver);
+ contact.setSecondaryObservers(getSecondaryObservers());
+ }
+
+ // Validation for saving contact depends on contactState (only edition
+ // form)
+ ContactState contactState = contact.getContactState();
+ if (logger.isDebugEnabled()) {
+ logger.debug("For state : " + contactState);
+ }
+
+ Date begin = contact.getTideBeginDate();
+ Date end = contact.getTideEndDate();
+ Date input = contact.getDataInputDate();
+ SampleRow row = contact.getSampleRow();
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("begin = %s, end = %s, input = %s", begin, end, input));
+ }
+
+ if (begin != null && !row.isValid(begin)) {
+ contactForm.recordError(
+ "La date de début de la marée doit correspondre à un " +
+ "mois valide (non vide) de la ligne " + row.getCode());
+ }
+
+ if (begin != null && end != null && end.before(begin)) {
+ contactForm.recordError("La date de fin de la marée" +
+ " ne peut pas être antérieure à celle de début");
+ }
+
+ Date current = manager.getCurrentDate();
+
+ if (end != null && end.after(current)) {
+ contactForm.recordError("La date de fin de la marée" +
+ " ne peut pas être postérieure à la date du jour");
+ }
+
+ if (end != null && input != null && end.after(input)) {
+ contactForm.recordError("La date de saisie des" +
+ " données ne peut pas être antérieure à la date de" +
+ " fin de la marée");
+ }
+
+ if (input != null && input.after(current)) {
+ contactForm.recordError("La date de saisie des" +
+ " données ne peut pas être postérieure à la date" +
+ " du jour");
+ }
+
+ // Non abouti, Refus ou Refus Définitif
+ if (contactState.isUnfinishedState()) {
+ String newComment = contact.getComment();
+
+ boolean commentDefined = StringUtils.isNotEmpty(newComment);
+ boolean commentChanged = commentDefined &&
+ !newComment.equals(oldContact.getComment());
+
+ // Ano #2540 : NPE on oldState, extract boolean for
+ // previous unfinishedState case
+ boolean previousUnfinishedState = commentDefined &&
+ oldContact.getContactState() != null && oldContact.getContactState().isUnfinishedState();
+
+ // Ano #2440 : no restriction if previous state is unfinished
+ if (previousUnfinishedState || commentChanged) {
+
+ // RAZ des champs
+ contact.setTideBeginDate(null);
+ contact.setTideEndDate(null);
+ contact.setNbObservants(0);
+ contact.setMammalsCapture(false);
+ contact.setMammalsObservation(false);
+ contact.setDataInputDate(null);
+
+ } else {
+ contactForm.recordError("Vous devez ajouter" +
+ " un commentaire pour l'état" +
+ " '" + contactState.libelle() + "'");
+ }
+ // Embarquement Réalisé
+ } else if (contactState.equals(ContactState.BOARDING_DONE)) {
+
+ if (begin == null) {
+ contactForm.recordError("La date de début de" +
+ " marée est obligatoire pour l'état" +
+ " '" + contactState.libelle() + "'");
+ }
+ if (end == null) {
+ contactForm.recordError("La date de fin de" +
+ " marée est obligatoire pour l'état" +
+ " '" + contactState.libelle() + "'");
+ }
+ if (contact.getNbObservants() == 0) {
+ contactForm.recordError("Il ne peut y" +
+ " avoir aucun observateur pour l'état" +
+ " '" + contactState.libelle() + "'");
+ }
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("ValidationProgram = " + contact.isValidationProgram());
+ }
+
+ if (BooleanUtils.isTrue(contact.isValidationProgram())) {
+
+ // it's an admin validation, data-reliability field must be filled
+ if (logger.isDebugEnabled()) {
+ logger.debug("field data reliability is " +
+ contact.getDataReliability());
+ }
+
+ if (contact.getDataReliability() == null ||
+ contact.getDataReliability() == DataReliability.UNKNOWN) {
+ contactForm.recordError("Il faut préciser la qualité des données avant de valider");
+ }
+ }
+ }
+ }
+
+ @Log
+ Object onFailureFromContactForm() {
+ // refresh zone to show errors
+ return globalZone;
+ }
+
+ @Inject
+ private Messages messages;
+
+ @Property
+ private boolean sendEmail;
+
+ @Log
+ Object onSuccessFromContactForm() {
+
+ if (saveContact) {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Contact save : " + contact);
+ // logger.debug("Contact sendEmail : " + sendEmail);
+ }
+ serviceContact.saveContact(contact, false);
+
+ try {
+ if (sendEmail && serviceContact.sendContactDoneEmail(contact)) {
+ layout.addInfo("Un email a été envoyé pour l'ajout du navire au portefeuille ALLEGRO.");
+ }
+ } catch (WaoBusinessException eee) {
+ String message = manager.getErrorMessage(eee, messages, logger);
+ layout.addError(message);
+ }
+ }
+
+ // reset
+ contact = null;
+ mainObserverId = null;
+ secondaryObservers = null;
+
+ // reload page
+ return this;
+ }
+
+}
Added: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/ContactForm.properties
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/ContactForm.properties (rev 0)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/ContactForm.properties 2010-12-20 16:35:01 UTC (rev 839)
@@ -0,0 +1,13 @@
+# form labels
+mainObserver-label: Observateur r\u00e9f\u00e9rant
+secondaryObserver-label: Observateur
+contactState-label: \u00c9tat du contact
+beginDate-label: D\u00e9but de la mar\u00e9e
+endDate-label: Fin de la mar\u00e9e
+mammalsObservation-label: Observations de mammif\u00e8res
+mammalsCapture-label: Capture accidentelle de mammif\u00e8res
+inputDate-label: Date de saisie des donn\u00e9es dans Allegro
+observerComment-label: Commentaire observateur
+coordinatorComment-label: Commentaire soci\u00e9t\u00e9
+adminComment-label: Commentaire administrateur
+dataReliability-label: Qualit\u00e9 de la donn\u00e9e
\ No newline at end of file
Added: trunk/wao-ui/src/main/webapp/ContactForm.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ContactForm.tml (rev 0)
+++ trunk/wao-ui/src/main/webapp/ContactForm.tml 2010-12-20 16:35:01 UTC (rev 839)
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<t:layout t:pageTitle="Modification d'un contact" t:contentId="so-contact-form"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
+ <h1 class="acenter">
+ Modification d'un contact
+ </h1>
+
+ <div class="mtop30" />
+ <t:zone t:id="globalZone" t:update="show">
+ <form t:type="form" t:id="contactForm" t:zone="globalZone">
+
+ <t:errors />
+
+ <input t:type="hidden" t:id="hiddenSendEmail" t:value="sendEmail" />
+
+ <fieldset class="user-form clearfix">
+ <legend>Informations</legend>
+ <div class="t-beaneditor">
+ <div class="fright" style="border-left: solid 1px; padding-left: 10px;">
+ <strong>
+ Navire<br />
+ ${contact.boat.name}
+ </strong>
+ <ul style="list-style-type: none;">
+ <li>Immatriculation : ${contact.boat.immatriculation}</li>
+ <li>Quartier : ${contact.boat.districtCode}</li>
+ <li>Longueur : ${contact.boat.boatLength} m</li>
+ <li>Année de contruction : ${contact.boat.buildYear}</li>
+ </ul>
+ </div>
+ <div class="t-beaneditor-row">
+ <strong>Ligne du plan d'échantillonage</strong>
+ <br />
+ <ul style="list-style-type: none;">
+ <li>Code : ${contact.sampleRow.code}</li>
+ <li>Métier : ${contact.sampleRow.professionDescription}</li>
+ <li>Programme : ${contact.sampleRow.programName} (du
+ <t:output value="contact.sampleRow.periodBegin" format="monthYearFormat" />
+ au
+ <t:output value="contact.sampleRow.periodEnd" format="monthYearFormat" />)
+ </li>
+ </ul>
+ </div>
+ <div class="t-beaneditor-row">
+ Date de création du contact : <t:output value="contact.topiaCreateDate" format="dateFormat" />
+ </div>
+ </div>
+ </fieldset>
+
+ <fieldset class="user-form clearfix">
+ <legend>Observateurs</legend>
+ <div class="t-beaneditor">
+ <t:delegate to="viewOrEditObservers" />
+ </div>
+ </fieldset>
+
+ <t:block id="viewObservers">
+ <div class="t-beaneditor-row">
+ <t:label t:for="mainObserver" />
+ <t:if test="contact.mainObserver">
+ ${contact.mainObserver.fullName}
+ </t:if>
+ </div>
+ <div class="t-beaneditor-row" style="position: relative; left: 250px;">
+ <ul>
+ <li t:type="loop" t:source="secondaryObservers" t:value="observer">
+ ${observer.fullName}
+ </li>
+ </ul>
+ </div>
+ </t:block>
+
+ <t:block id="editObservers">
+ <div class="t-beaneditor-row">
+ <t:label t:for="mainObserver" />
+ <input t:type="select" t:id="mainObserver" t:model="observerSelectModel" t:validate="required" t:value="mainObserverId" />
+ </div>
+ <t:zone t:id="observersFormZone" t:visible="true" t:update="show">
+ <t:nuiton.subForm t:visible="refreshObserversForm">
+ <div class="t-beaneditor-row">
+ <t:label t:for="secondaryObserver" />
+ <input t:type="select" t:id="secondaryObserver" t:model="observerSelectModel" t:value="selectedSecondaryObserverId" t:mixins="ck/onEvent" t:event="change" />
+ <a t:type="actionlink" t:id="addSecondaryObserver" title="Ajouter un observateur" t:zone="observersFormZone">
+ <img src="${asset:context:img/add-16px.png}" />
+ </a>
+ <div class="t-beaneditor-row" style="position: relative; left: 250px;">
+ <ul>
+ <li t:type="loop" t:source="secondaryObservers" t:value="observer" t:index="secondaryObserverIndex" t:volatile="true">
+ ${observer.fullName}
+ <a t:type="actionlink" t:id="removeSecondaryObserver" t:context="secondaryObserverIndex" title="Supprimer cet observateur" t:zone="observersFormZone">
+ <img src="${asset:context:img/remove-22px.png}" />
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </t:nuiton.subForm>
+ </t:zone>
+ </t:block>
+
+ <fieldset class="user-form clearfix">
+ <legend>Compte-rendu de l'observation</legend>
+ <div class="t-beaneditor">
+ <t:delegate to="viewOrEditObservationReport" />
+ </div>
+ </fieldset>
+
+ <t:block id="viewObservationReport">
+ <div class="t-beaneditor-row">
+ <t:label t:for="contactState" />
+ ${contact.contactState.label}
+ </div>
+ <div class="t-beaneditor-row">
+ <t:label t:for="beginDate" />
+ <t:output value="contact.tideBeginDate" format="dateFormat" />
+ </div>
+ <div class="t-beaneditor-row">
+ <t:label t:for="endDate" />
+ <t:output value="contact.tideEndDate" format="dateFormat" />
+ </div>
+ <div class="t-beaneditor-row">
+ <img src="${asset:context:img/eye-22px.png}" alt="Observations" title="Observations" />
+ <t:label t:for="mammalsObservation" />
+ <t:booleanImage t:value="contact.mammalsObservation" />
+ </div>
+ <div class="t-beaneditor-row">
+ <img src="${asset:context:img/fishing-net-22px.png}" alt="Captures" title="Captures" />
+ <t:label t:for="mammalsCapture" />
+ <t:booleanImage t:value="contact.mammalsCapture" />
+ </div>
+ <div class="t-beaneditor-row">
+ <t:label t:for="inputDate" />
+ <t:output value="contact.dataInputDate" format="dateFormat" />
+ </div>
+
+ <div class="t-beaneditor-row">
+ <t:label t:for="observerComment" />
+ <t:if t:test="contact.comment">
+ ${contact.comment}
+ <p:else>
+ <em>aucun commentaire</em>
+ </p:else>
+ </t:if>
+ </div>
+
+ <t:unless test="connectedUser.observer">
+ <div class="t-beaneditor-row">
+ <t:label t:for="coordinatorComment" />
+ <t:if t:test="contact.commentCoordinator">
+ ${contact.commentCoordinator}
+ <p:else>
+ <em>aucun commentaire</em>
+ </p:else>
+ </t:if>
+ </div>
+ </t:unless>
+ </t:block>
+
+ <t:block id="editObservationReport">
+ <div class="t-beaneditor-row">
+ <t:label t:for="contactState" />
+ <input t:type="select" t:id="contactState" t:value="contact.contactState" t:validate="required"/>
+ </div>
+ <div class="t-beaneditor-row">
+ <t:label t:for="beginDate" />
+ <input t:type="datefield" t:id="beginDate" class="date" value="contact.tideBeginDate" />
+ </div>
+ <div class="t-beaneditor-row">
+ <t:label t:for="endDate" />
+ <input t:type="datefield" t:id="endDate" class="date" value="contact.tideEndDate" />
+ </div>
+ <div class="t-beaneditor-row">
+ <img src="${asset:context:img/eye-22px.png}" alt="Observations" title="Observations" />
+ <t:label t:for="mammalsObservation" />
+ <input t:type="checkbox" t:id="mammalsObservation" value="contact.mammalsObservation"/>
+ </div>
+ <div class="t-beaneditor-row">
+ <img src="${asset:context:img/fishing-net-22px.png}" alt="Captures" title="Captures" />
+ <t:label t:for="mammalsCapture" />
+ <input t:type="checkbox" t:id="mammalsCapture" value="contact.mammalsCapture" />
+ </div>
+ <div class="t-beaneditor-row">
+ <t:label t:for="observerComment" />
+ <input t:type="textarea" t:id="observerComment" value="contact.comment" />
+ </div>
+ <div class="t-beaneditor-row">
+ <t:label t:for="inputDate" />
+ <input t:type="datefield" t:id="inputDate" class="date" value="contact.dataInputDate" />
+ </div>
+
+
+ <t:unless test="connectedUser.observer">
+ <div class="t-beaneditor-row">
+ <t:label t:for="coordinatorComment" />
+ <input t:type="textarea" t:id="coordinatorComment" value="contact.commentCoordinator" />
+ </div>
+ </t:unless>
+ </t:block>
+
+ <t:unless test="connectedUser.observer">
+ <fieldset class="user-form clearfix">
+ <legend>Évaluation programme</legend>
+ <div class="t-beaneditor">
+ <div class="t-beaneditor-row">
+ <t:label t:for="dataReliability" />
+ <t:if t:test="canEditDataReliability()">
+ <input t:type="select" t:id="dataReliability" value="contact.dataReliability" />
+ <p:else>
+ ${contact.dataReliability.label}
+ </p:else>
+ </t:if>
+ </div>
+ <div class="t-beaneditor-row">
+ <t:label t:for="adminComment" />
+ <t:if t:test="connectedUser.admin">
+ <input t:type="textarea" t:id="adminComment" value="contact.commentAdmin" />
+ <p:else>
+ <t:if t:test="contact.commentAdmin">
+ ${contact.commentAdmin}
+ <p:else>
+ <em>aucun commentaire</em>
+ </p:else>
+ </t:if>
+ </p:else>
+ </t:if>
+ </div>
+ </div>
+ </fieldset>
+ </t:unless>
+
+ <div class="fright">
+ <input t:type="submit" t:id="saveContact" class="ico save" value="Save" title="Enregistrer les modifications" />
+ <input t:type="submit" t:id="revertContact" class="ico undo" value="Undo" title="Annuler les modifications" />
+ </div>
+
+ </form>
+ </t:zone>
+
+</t:layout>
Modified: trunk/wao-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Contacts.tml 2010-12-15 18:16:56 UTC (rev 838)
+++ trunk/wao-ui/src/main/webapp/Contacts.tml 2010-12-20 16:35:01 UTC (rev 839)
@@ -138,8 +138,10 @@
<t:label t:for="programUndefined">
<img src="${asset:context:img/help-22px.png}" title="Non validé par le programme" />
</t:label>
- <t:label t:for="reliabilityFilter" />:
- <select t:type="select" t:id="reliabilityFilter" value="contactFilter.dataReliability"/>
+ <t:unless t:test="user.observer">
+ <t:label t:for="reliabilityFilter" />:
+ <select t:type="select" t:id="reliabilityFilter" value="contactFilter.dataReliability"/>
+ </t:unless>
<span>Commentaires : </span>
<input t:type="checkbox" t:id="commentFilter" value="contactFilter.comment" />
<label for="commentFilter">observateur</label>
@@ -194,9 +196,9 @@
t:rowsPerPage="20">
<p:createdByCell>
${contact.mainObserver.fullName}
- <t:if t:test="editionMode">
+ <!--t:if t:test="editionMode">
<a t:type="actionlink" t:id="showObserversForm" t:zone="observersFormZone" context="${contact.topiaId}" class="display-form" title="Modifier les observateurs associés à ce contact">...</a>
- </t:if>
+ </t:if-->
</p:createdByCell>
<p:sampleRowCell>
<span t:type="ck/Tooltip" title="Infos" t:value="prop:sampleRowDescription" t:effect="appear">
@@ -298,11 +300,11 @@
<t:if t:test="contact.validationCompany">
<t:if test="contact.validationProgram">
${contact.dataReliability.label}
- <p:else>
+ <!--p:else>
<t:if test="canUpdateDataReliability()">
<input t:type="select" t:id="dataReliability" t:value="contact.dataReliability" validate="required" />
</t:if>
- </p:else>
+ </p:else-->
</t:if>
</t:if>
</t:if>
@@ -318,6 +320,14 @@
</span>
</p:commentAdminCell>
<p:actionsCell>
+ <t:unless t:test="contact.validationProgram">
+ <a t:type="pagelink" t:page="contactForm" t:context="contact.topiaId">
+ <img src="${asset:context:}/img/edit.png" alt="Modifier" title="Modifier le contact"/>
+ </a>
+ <p:else>
+ <img src="${asset:context:img/edit-unavailable-22px.png}" alt="Edit unavailable" title="Modification du contact indisponible"/>
+ </p:else>
+ </t:unless>
<t:if t:test="hasActions()">
<t:if t:test="editionMode">
<input t:type="submit" t:id="cancelEditContact" class="ico22px undo22px" value="Undo"
@@ -325,8 +335,8 @@
<input t:type="submitContext" t:id="saveContact" class="ico22px save22px" value="Save"
t:context="contact.topiaId" title="Enregistrer le contact" />
<p:else>
- <input t:type="submitContext" t:id="editContact" class="ico edit" value="Edit"
- t:context="contact.topiaId" title="Modifier le contact" />
+ <!--input t:type="submitContext" t:id="editContact" class="ico edit" value="Edit"
+ t:context="contact.topiaId" title="Modifier le contact" /-->
<input t:type="submitContext" t:id="deleteContact" class="ico22px delete" value="Delete"
t:context="contact.topiaId" title="Supprimer le contact"
t:mixins="nuiton/confirm" t:message="literal:Etes-vous sûr de vouloir supprimer définitivement ce contact ?" />
@@ -334,7 +344,7 @@
</t:if>
<p:else>
<t:unless t:test="user.admin">
- <img src="${asset:context:img/edit-unavailable-22px.png}" alt="Edit unavailable" title="Edition du contact indisponible"/>
+ <!--img src="${asset:context:img/edit-unavailable-22px.png}" alt="Edit unavailable" title="Edition du contact indisponible"/-->
<img src="${asset:context:img/delete-unavailable-22px.png}" alt="Delete unavailable" title="Suppression du contact indisponible"/>
</t:unless>
</p:else>
@@ -356,14 +366,14 @@
<input t:type="submitContext" t:id="unvalidateContact" class="ico22px unvalidate" value="Unvalidate"
t:context="contact.topiaId" title="Enlever la validation du contact" />
</t:if>
- <t:if t:test="editionMode">
+ <!--t:if t:test="editionMode">
<img src="${asset:context:img/comment-unavailable-22px.png}" alt="Add comment" />
<p:else>
<a class="link" onclick="commentController.openWindow(${commentData});">
<img src="${asset:context:img/comment-22px.png}" alt="Add comment" />
</a>
</p:else>
- </t:if>
+ </t:if-->
</t:if>
</p:actionsCell>
</div>
Added: trunk/wao-ui/src/main/webapp/js/contactForm.js
===================================================================
--- trunk/wao-ui/src/main/webapp/js/contactForm.js (rev 0)
+++ trunk/wao-ui/src/main/webapp/js/contactForm.js 2010-12-20 16:35:01 UTC (rev 839)
@@ -0,0 +1,16 @@
+ContactSendEmail = Class.create({
+ initialize: function(message, contactState) {
+ this.contactState = contactState;
+ this.message = message;
+
+ $('saveContact').observe('click', this.doConfirm.bind(this));
+ },
+ doConfirm: function(event) {
+
+ var contactForm = event.element().form;
+
+ if ($F(contactForm.contactState) == this.contactState && confirm(this.message)) {
+ contactForm.hiddenSendEmail.setValue(true);
+ }
+ }
+});
\ No newline at end of file
1
0
[Suiviobsmer-commits] r838 - trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 15 Dec '10
by bleny@users.labs.libre-entreprise.org 15 Dec '10
15 Dec '10
Author: bleny
Date: 2010-12-15 18:16:56 +0000 (Wed, 15 Dec 2010)
New Revision: 838
Log:
add useless assertions
Modified:
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
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-15 17:56:35 UTC (rev 837)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-12-15 18:16:56 UTC (rev 838)
@@ -71,8 +71,7 @@
private ApplicationStateManager stateManager;
@Test
- public void testUserSession()
- throws WaoException, WaoBusinessException {
+ public void testUserSession() throws WaoException, WaoBusinessException {
logger.info("## testUserSession");
prepareObserverUser(true);
@@ -82,6 +81,9 @@
Assert.assertTrue(serviceAuthentication.existConnectedUser());
+ Assert.assertNotNull(serviceAuthentication.getConnectedUser().getUser().getFullName());
+ Assert.assertNotNull(serviceAuthentication.getConnectedUser().getProfile());
+
Document page = tester.renderPage("index");
Element main = page.getElementById("so-news");
if (logger.isInfoEnabled()) {
1
0
Author: bleny
Date: 2010-12-15 17:56:35 +0000 (Wed, 15 Dec 2010)
New Revision: 837
Log:
some dependencies updates
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-12-15 16:52:03 UTC (rev 836)
+++ trunk/pom.xml 2010-12-15 17:56:35 UTC (rev 837)
@@ -121,13 +121,13 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.5.10</version>
+ <version>1.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <version>1.5.10</version>
+ <version>1.6.1</version>
<scope>runtime</scope>
</dependency>
<!-- Graphics -->
@@ -211,7 +211,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.2.137</version>
+ <version>1.3.148</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
@@ -221,7 +221,7 @@
<dependency>
<groupId>org.jvnet.hudson.winstone</groupId>
<artifactId>winstone</artifactId>
- <version>0.9.10-hudson-16</version>
+ <version>0.9.10-hudson-24</version>
<scope>provided</scope>
</dependency>
<!--dependency>
@@ -239,7 +239,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>1.8.4</version>
+ <version>1.8.5</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -329,7 +329,7 @@
<!-- libraries version -->
<nuitonI18nVersion>1.2.2</nuitonI18nVersion>
- <nuitonUtilsVersion>1.4.2</nuitonUtilsVersion>
+ <nuitonUtilsVersion>1.5.1</nuitonUtilsVersion>
<nuitonWebVersion>0.1</nuitonWebVersion>
<topiaVersion>2.5-SNAPSHOT</topiaVersion>
<eugeneVersion>2.3-SNAPSHOT</eugeneVersion>
1
0
[Suiviobsmer-commits] r836 - in trunk/wao-business/src: main/java/fr/ifremer/wao main/java/fr/ifremer/wao/service main/resources/i18n main/xmi test/java/fr/ifremer/wao/service test/resources/import
by bleny@users.labs.libre-entreprise.org 15 Dec '10
by bleny@users.labs.libre-entreprise.org 15 Dec '10
15 Dec '10
Author: bleny
Date: 2010-12-15 16:52:03 +0000 (Wed, 15 Dec 2010)
New Revision: 836
Log:
fix DCF validation at sampling plan import ; make it OK in tests
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java
trunk/wao-business/src/test/resources/import/echantillonnage.csv
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java 2010-12-15 14:11:33 UTC (rev 835)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java 2010-12-15 16:52:03 UTC (rev 836)
@@ -249,6 +249,9 @@
// Create the default admin in database
serviceUser.createDefaultAdmin();
+ // import all DCF codes
+ getServiceFactory().getServiceReferential().importDCFcodes();
+
if (log.isInfoEnabled()) {
log.info("wao is started !");
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2010-12-15 14:11:33 UTC (rev 835)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2010-12-15 16:52:03 UTC (rev 836)
@@ -32,10 +32,14 @@
import fr.ifremer.wao.WaoQueryBuilder;
import fr.ifremer.wao.WaoQueryHelper;
import fr.ifremer.wao.bean.SamplingFilter;
+import fr.ifremer.wao.entity.FishingGearDCF;
+import fr.ifremer.wao.entity.FishingGearDCFDAO;
import fr.ifremer.wao.entity.FishingZone;
import fr.ifremer.wao.entity.FishingZoneDAO;
import fr.ifremer.wao.entity.Profession;
import fr.ifremer.wao.entity.ProfessionDAO;
+import fr.ifremer.wao.entity.TargetSpeciesDCF;
+import fr.ifremer.wao.entity.TargetSpeciesDCFDAO;
import fr.ifremer.wao.io.csv.ImportHelper;
import fr.ifremer.wao.io.csv.WaoCsvHeader.FISHING_ZONE;
import org.apache.commons.lang.StringUtils;
@@ -204,4 +208,43 @@
return result;
}
+ protected void executeImportDCFcodes(TopiaContext transaction) throws TopiaException {
+
+ final String[] gearCodesBase = {"DRB", "DRH", "FAR", "FCN", "FG",
+ "FIX", "FPN", "FPO", "FSN", "FWR", "FYK", "GEN", "GES", "GN", "GNC",
+ "GND", "GNF", "GNS", "GT", "GTN", "GTR", "HAR", "HMD", "HMP", "HMX",
+ "LA", "LHM", "LHP", "LL", "LLD", "LLS", "LN", "LNB", "LNP", "LNS",
+ "LTL", "LX", "MIS", "NK", "OT", "OTB", "OTM", "OTT", "PS", "PS1",
+ "PS2", "PT", "PTB", "PTM", "RG", "SB", "SDN", "SPR", "SSC", "SV",
+ "SW", "TB", "TBB", "TBN", "TBS", "TM", "TMS", "TX"};
+ final String[] speciesCodesBase = {"ALG", "CAT", "CRU", "CSJ",
+ "DEF", "DWS", "FIN", "LPF", "MOL", "SPF"};
+
+ FishingGearDCFDAO fishingGearDCFDAO = WaoDAOHelper.getFishingGearDCFDAO(transaction);
+ TargetSpeciesDCFDAO targetSpeciesDCFDAO = WaoDAOHelper.getTargetSpeciesDCFDAO(transaction);
+
+ long nbCodes = fishingGearDCFDAO.count() + targetSpeciesDCFDAO.count();
+
+ if (nbCodes == 0) {
+ for (String code : gearCodesBase) {
+ fishingGearDCFDAO.create(FishingGearDCF.PROPERTY_CODE, code);
+ }
+
+ for (String code : speciesCodesBase) {
+ targetSpeciesDCFDAO.create(TargetSpeciesDCF.PROPERTY_CODE, code);
+ }
+
+ transaction.commitTransaction();
+
+ if (log.isDebugEnabled()) {
+ nbCodes = fishingGearDCFDAO.count() + targetSpeciesDCFDAO.count();
+ log.debug(nbCodes + " dcf codes inserted");
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("no DCF codes will be inserted");
+ }
+ }
+ }
+
}
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-12-15 14:11:33 UTC (rev 835)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-12-15 16:52:03 UTC (rev 836)
@@ -952,7 +952,7 @@
// Commit row by row
transaction.commitTransaction();
}
-
+
//transaction.closeContext();
// } catch (NumberFormatException eee) {
@@ -1059,7 +1059,7 @@
* @throws ParseException for format errors
*/
protected void updateRow(TopiaContext transaction, SampleRow sampleRow, CsvReader reader)
- throws IOException, TopiaException, ParseException {
+ throws IOException, TopiaException, ParseException, WaoBusinessException {
String fishingZoneInfos =
ImportHelper.read(reader, SAMPLING.PECHE_AUTRE);
@@ -1082,8 +1082,24 @@
sampleRow.setPeriodBegin(period.getFromDate());
sampleRow.setPeriodEnd(period.getThruDate());
sampleRow.setComment(comment);
- sampleRow.setDCF5Code(codeDCF5, " et ");
-
+
+ // a trick, nullSampleRow is just intantiated to user the parsing
+ // of the codes in the CSV. This trick is needed cause if we use
+ // sampleRow to do the parsing, parsed objects will be linked to
+ // sampleRow and the insertOrSelect will raise an exception, telling
+ // that a transient object (sampleRow) is not saved.
+ SampleRow nullSampleRow = new SampleRowImpl();
+ nullSampleRow.setDCF5Code(codeDCF5, " et ");
+
+ // now, we have a collection of DCF, we must read it to reuse those
+ // already in database
+ Collection<DCF5Code> parsed = insertOrSelect(transaction, nullSampleRow.getDCF5Code());
+
+ // now we can add those code to sampleRow
+ sampleRow.clearDCF5Code();
+ sampleRow.addAllDCF5Code(parsed);
+ // sampleRow.setDCF5Code(parsed); works fine too
+
// 16 fixed columns : 13 before months and 3 after
int nbFixedColumns = 16;
// Months begin at 14th column
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-12-15 14:11:33 UTC (rev 835)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-12-15 16:52:03 UTC (rev 836)
@@ -110,6 +110,7 @@
wao.error.serviceChart.getContactPieChartData=
wao.error.serviceChart.getContactPieChartUrl=
wao.error.serviceContact.exportContactCsv=
+wao.error.serviceContact.getContact=
wao.error.serviceContact.getContacts=
wao.error.serviceContact.getNbContacts=
wao.error.serviceContact.getNewContact=
@@ -126,6 +127,7 @@
wao.error.serviceReferential.getFishingZones=
wao.error.serviceReferential.getProfessions=
wao.error.serviceReferential.getSectors=
+wao.error.serviceReferential.importDCFcodes=
wao.error.serviceReferential.importFishingZoneCsv=
wao.error.serviceSampling.createSampleRowLog=
wao.error.serviceSampling.createUpdateSampleRow=
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-15 14:11:33 UTC (rev 835)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-15 16:52:03 UTC (rev 836)
@@ -127,6 +127,7 @@
wao.error.serviceChart.getContactPieChartData=
wao.error.serviceChart.getContactPieChartUrl=
wao.error.serviceContact.exportContactCsv=Impossible d'exporter les contacts
+wao.error.serviceContact.getContact=Impossible de trouver le contact
wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts
wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00E9s
wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact
@@ -143,6 +144,7 @@
wao.error.serviceReferential.getFishingZones=Impossible de charger la liste des secteurs de p\u00EAche
wao.error.serviceReferential.getProfessions=Impossible de charger la liste des m\u00E9tiers
wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00EAche
+wao.error.serviceReferential.importDCFcodes=Impossible de créer le référentiel des codes DCF
wao.error.serviceReferential.importFishingZoneCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00E9tails.
wao.error.serviceSampling.createSampleRowLog=
wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00E9chantillon
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2010-12-15 14:11:33 UTC (rev 835)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2010-12-15 16:52:03 UTC (rev 836)
@@ -562,6 +562,7 @@
CompanyDAO companyDAO = WaoDAOHelper.getCompanyDAO(transaction);
companyDAO.create(Company.PROPERTY_NAME, "TARTANPION");
companyDAO.create(Company.PROPERTY_NAME, "BIS");
+
transaction.commitTransaction();
transaction.closeContext();
@@ -609,6 +610,9 @@
zones.contains(zoneI);
zones.contains(zoneIId);
+ Collection<DCF5Code> dcf5codes = row1.getDCF5Code();
+ assertEquals(1, dcf5codes.size());
+
transaction.closeContext();
}
Modified: trunk/wao-business/src/test/resources/import/echantillonnage.csv
===================================================================
--- trunk/wao-business/src/test/resources/import/echantillonnage.csv 2010-12-15 14:11:33 UTC (rev 835)
+++ trunk/wao-business/src/test/resources/import/echantillonnage.csv 2010-12-15 16:52:03 UTC (rev 836)
@@ -1,14 +1,14 @@
"PLAN_CODE","SOCIETE_NOM","PECHE_DIVISION","PECHE_AUTRE","METIER_CODE_DCF5","METIER_MAILLAGE","METIER_TAILLE","METIER_AUTRE","METIER_LIBELLE","METIER_ESPECES","PROGRAMME_CODE","PROGRAMME_DEBUT","PROGRAMME_FIN",12/2009,01/2010,02/2010,03/2010,04/2010,05/2010,06/2010,07/2010,08/2010,09/2010,10/2010,11/2010,12/2010,01/2011,02/2011,03/2011,"PLAN_DUREE_MOY","PLAN_NB_OBSERV","PLAN_COMMENT"
-"2010_1",TARTANPION,"IId / I",,"DB_MOL",,,,,,"MA-2009",03/2010,01/2011,,,,0,0,0,0,0,0,0,2,0,0,4,,,"1,5",1,"Un petit commentaire"
-"2010_2",,"IId",,"GTR_DEAEF et ANS_DEF",,,,"Fileyage","poissons tubes","MANY",01/2008,12/2008,,20,0,0,21,0,0,21,0,0,21,0,0,,,,1,1,
-"2010_03",,"IId / IV",,"ORM",,,,"balottage en plein air","divers choses visqueuses","MA-2009",03/2010,01/2011,,,,0,22,0,0,25,0,0,21,0,0,25,,,2,1,
+"2010_1",TARTANPION,"IId / I",,"DRB_ALG",,,,,,"MA-2009",03/2010,01/2011,,,,0,0,0,0,0,0,0,2,0,0,4,,,"1,5",1,"Un petit commentaire"
+"2010_2",,"IId",,"DRH_CAT et DRH_CRU",,,,"Fileyage","poissons tubes","MANY",01/2008,12/2008,,20,0,0,21,0,0,21,0,0,21,0,0,,,,1,1,
+"2010_03",,"IId / IV",,"FAR",,,,"balottage en plein air","divers choses visqueuses","MA-2009",03/2010,01/2011,,,,0,22,0,0,25,0,0,21,0,0,25,,,2,1,
"2009_1",,"IId / IV",,"GTR_DEF et GNS_DEF","110-119",,,"Fileyage à poissons tubes","poissons plats","PPP2010",12/2009,10/2010,0,1,1,1,2,1,1,1,1,1,2,,,,,,1,1,
"2009_2",,"IId",,"GTR_DEF et GNS_DEF","9888-99",,,"Fileyage à sirènes ","nymphes","PPP2010",12/2009,10/2010,1,1,1,2,3,4,4,4,4,3,3,,,,,,1,1,
-"2009_3",TARTANPION,"IV",,"GTR_DF et GNS_DP",,,,"Fileyages à baleines à bosse","chameaux","PPP2010",12/2009,10/2010,2,2,2,2,2,2,2,2,2,2,4,,,,,,1,1,
-"2009_4",,"IId",,"B_DEF",">=190",">18",,"Chalutage de fond machiavélique","gadidés, divers","PPP2010",12/2009,10/2010,1,1,1,1,1,1,1,1,1,1,2,,,,,,3,2,
-"2009_5",,"IId",,"OP_DEF","70-1100",">1140",,"Plongeur de fond sous-marin","gadidés, divers","PPP2010",12/2009,10/2010,1,1,1,1,1,1,1,1,1,1,2,,,,,,3,2,
-"2009_6",BIS,"I / IV",,"OP_DEF","70-1100",">1140",,"Leon","poissons plats","PPP2010",12/2009,10/2010,0,1,0,1,0,1,2,2,2,2,1,,,,,,3,2,
-"2010_4",TARTANPION,"IId / IV",,"OTB_TEF et OTB_U et OL",,,,"Chalutage de fond","gadidés, poissons plats, divers","BLOB",01/2010,12/2010,,3,0,0,3,0,0,3,0,0,3,0,0,,,,3,1,
-"2010_5",,,,"OTB_TEF et OTB_U et OL",,,,"Kamoulox","merlu, poissons cerises, divers","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1,
-"2010_10",,"I / IV",,"OTB_TEF et OTB_U et OL","70-1100",,,"Kamoulox","merlu, poissons pommes, divers","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1,
-"2010_11",,"I / IV",,"OTB_TEF et OTB_U et OL","70-1100",,,"Troubidou","merlu, poissons cerises","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1,
+"2009_3",TARTANPION,"IV",,"GTR_MOL et GNS_FIN",,,,"Fileyages à baleines à bosse","chameaux","PPP2010",12/2009,10/2010,2,2,2,2,2,2,2,2,2,2,4,,,,,,1,1,
+"2009_4",,"IId",,"PTB_ALG",">=190",">18",,"Chalutage de fond machiavélique","gadidés, divers","PPP2010",12/2009,10/2010,1,1,1,1,1,1,1,1,1,1,2,,,,,,3,2,
+"2009_5",,"IId",,"PTB_ALG","70-1100",">1140",,"Plongeur de fond sous-marin","gadidés, divers","PPP2010",12/2009,10/2010,1,1,1,1,1,1,1,1,1,1,2,,,,,,3,2,
+"2009_6",BIS,"I / IV",,"OT_DEF","70-1100",">1140",,"Leon","poissons plats","PPP2010",12/2009,10/2010,0,1,0,1,0,1,2,2,2,2,1,,,,,,3,2,
+"2010_4",TARTANPION,"IId / IV",,"OT_DEF et PTB_ALG et DRH",,,,"Chalutage de fond","gadidés, poissons plats, divers","BLOB",01/2010,12/2010,,3,0,0,3,0,0,3,0,0,3,0,0,,,,3,1,
+"2010_5",,,,"DRB",,,,"Kamoulox","merlu, poissons cerises, divers","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1,
+"2010_10",,"I / IV",,"DRB","70-1100",,,"Kamoulox","merlu, poissons pommes, divers","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1,
+"2010_11",,"I / IV",,"DRB_CSJ","70-1100",,,"Troubidou","merlu, poissons cerises","MA-2009",03/2010,01/2011,,,,0,5,0,0,5,0,0,6,0,0,3,,,3,1,
1
0