Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- 2352 discussions
[Suiviobsmer-commits] r1315 - trunk/wao-business/src/test/java/fr/ifremer/wao/business
by bleny@users.labs.libre-entreprise.org 03 Jun '11
by bleny@users.labs.libre-entreprise.org 03 Jun '11
03 Jun '11
Author: bleny
Date: 2011-06-03 16:24:40 +0000 (Fri, 03 Jun 2011)
New Revision: 1315
Log:
fix tests
Modified:
trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java 2011-06-03 16:06:35 UTC (rev 1314)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java 2011-06-03 16:24:40 UTC (rev 1315)
@@ -95,7 +95,7 @@
// i can read what was imported
List<TerrestrialDivision> observationsUnits = serviceReferential.getAllObservationUnits();
- Assert.assertEquals(243, observationsUnits.size());
+ Assert.assertEquals(236, observationsUnits.size());
}
/**
1
0
[Suiviobsmer-commits] r1314 - in trunk: 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-business/src/test/java/fr/ifremer/wao/service wao-ui/src/main/java/fr/ifremer/wao/ui/data wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/java/fr/ifremer/wao/ui/services wao-ui/src/main/resources/i18n wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 03 Jun '11
by bleny@users.labs.libre-entreprise.org 03 Jun '11
03 Jun '11
Author: bleny
Date: 2011-06-03 16:06:35 +0000 (Fri, 03 Jun 2011)
New Revision: 1314
Log:
others fixes in UI
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationDAOImpl.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.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/ServiceReferentialImplTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/WaoActivationContext.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/ContactForm.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java
trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties
trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties
trunk/wao-ui/src/main/webapp/ContactForm.tml
trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
trunk/wao-ui/src/main/webapp/SampleRowForm.tml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -473,7 +473,7 @@
if (oldRow == null || oldRow.getBoat() == null) {
addChange("Le navire associé est " + newRow.getBoat().getDescription());
} else if ( ! newRow.getBoat().equals(oldRow.getBoat())) {
- addChange("Le navire associé passe de '" + oldRow.getBoat().getDescription()
+ addChange("Le navire associé passe de " + oldRow.getBoat().getDescription()
+ " à " + newRow.getBoat().getDescription());
}
}
@@ -535,6 +535,7 @@
compareDays();
if (newRow.isPhoneCall()) {
compareBoats();
+ compareTerrestrialLocations();
} else {
compareObservationUnits();
}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationDAOImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationDAOImpl.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationDAOImpl.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -0,0 +1,22 @@
+package fr.ifremer.wao.entity;
+
+import fr.ifremer.wao.bean.LocationType;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaQuery;
+
+import java.util.List;
+
+public class TerrestrialLocationDAOImpl<E extends TerrestrialLocation> extends TerrestrialLocationDAOAbstract<E> {
+
+ @Override
+ public List<TerrestrialLocation> findAllByLocationType(LocationType... locationType) throws TopiaException {
+ TopiaQuery query = createQuery();
+ Integer locationTypeOrdinal[] = new Integer[locationType.length];
+ for (int i = 0 ; i < locationType.length ; i++) {
+ locationTypeOrdinal[i] = locationType[i].ordinal();
+ }
+ query.addEquals(TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL,
+ locationTypeOrdinal);
+ return (List<TerrestrialLocation>) findAllByQuery(query);
+ }
+}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -24,8 +24,6 @@
import fr.ifremer.wao.bean.LocationType;
import org.apache.commons.lang.builder.ToStringBuilder;
-import static org.nuiton.i18n.I18n.n_;
-
public class TerrestrialLocationImpl extends TerrestrialLocationAbstract {
@Override
@@ -68,25 +66,32 @@
*/
public String getDescription() {
StringBuilder description = new StringBuilder();
- if (isDistrict()) {
- description.append(getDistrictName()).append(" (");
+ if (isRegion()) {
+ description.append(getRegionIfremerName());
+ if (getCountryName() != null) {
+ description.append(" (").append(getCountryName()).append(")");
+ }
} else {
- description.append(getName()).append(" (")
- .append(getLocationType()).append(", ");
- // add the port name only if it's different of the name
- // because most of the time it's redundant
- if (getPortName() != null && ! getPortName().equals(getName())) {
- description.append(getPortName()).append(", ");
+ if (isDistrict()) {
+ description.append(getDistrictName()).append(" (");
+ } else {
+ description.append(getName()).append(" (")
+ .append(getLocationType()).append(", ");
+ // add the port name only if it's different of the name
+ // because most of the time it's redundant
+ if (getPortName() != null && ! getPortName().equals(getName())) {
+ description.append(getPortName()).append(", ");
+ }
}
- }
- if (getRegionName() == null) {
- description.append(getCountryName());
- } else {
- description.append(getRegionName());
+ if (getRegionName() == null) {
+ description.append(getCountryName());
+ } else {
+ description.append(getRegionName());
+ }
+
+ description.append(")");
}
-
- description.append(")");
return description.toString();
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -67,7 +67,7 @@
import fr.ifremer.wao.entity.ShipOwner;
import fr.ifremer.wao.entity.ShipOwnerDAO;
import fr.ifremer.wao.entity.TerrestrialLocation;
-import fr.ifremer.wao.entity.TerrestrialLocationDAO;
+import fr.ifremer.wao.entity.TerrestrialLocationDAOImpl;
import fr.ifremer.wao.io.ImportResults;
import fr.ifremer.wao.io.ImportResultsImpl;
import fr.ifremer.wao.io.csv2.Export;
@@ -424,7 +424,7 @@
// Before importing, we need to retrieve all ports that may be mentioned
// in the CSV file
- TerrestrialLocationDAO terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ TerrestrialLocationDAOImpl terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
List<TerrestrialLocation> ports = terrestrialLocationDAO.findAllByLocationTypeOrdinal(LocationType.PORT.ordinal());
// Building the model, providing ports
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 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -25,7 +25,6 @@
package fr.ifremer.wao.service;
import com.csvreader.CsvReader;
-import com.csvreader.CsvWriter;
import fr.ifremer.wao.WaoBinderHelper;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoContext;
@@ -51,7 +50,6 @@
import fr.ifremer.wao.bean.ValidationResultImpl;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.BoatDAO;
-import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.ContactDAO;
import fr.ifremer.wao.entity.ContactImpl;
@@ -61,27 +59,20 @@
import fr.ifremer.wao.entity.FishingZone;
import fr.ifremer.wao.entity.ObsDebCode;
import fr.ifremer.wao.entity.ObsDebCodeDAO;
-import fr.ifremer.wao.entity.Profession;
import fr.ifremer.wao.entity.SampleMonth;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowDAO;
-import fr.ifremer.wao.entity.TerrestrialDivision;
import fr.ifremer.wao.entity.TerrestrialLocation;
-import fr.ifremer.wao.entity.TerrestrialLocationDAO;
+import fr.ifremer.wao.entity.TerrestrialLocationDAOImpl;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.entity.WaoUserDAO;
import fr.ifremer.wao.io.ContactInput;
import fr.ifremer.wao.io.ImportRefusedException;
import fr.ifremer.wao.io.ImportResults;
import fr.ifremer.wao.io.ImportResultsImpl;
-import fr.ifremer.wao.io.csv.ExportHelper;
import fr.ifremer.wao.io.csv.ImportHelper;
-import fr.ifremer.wao.io.csv.WaoCsvHeader;
import fr.ifremer.wao.io.csv.WaoCsvHeader.BOAT;
import fr.ifremer.wao.io.csv.WaoCsvHeader.CONTACT;
-import fr.ifremer.wao.io.csv.WaoCsvHeader.ContactHeader;
-import fr.ifremer.wao.io.csv.WaoCsvHeader.FISHING_ZONE;
-import fr.ifremer.wao.io.csv.WaoCsvHeader.SAMPLING;
import fr.ifremer.wao.io.csv2.Export;
import fr.ifremer.wao.io.csv2.ExportModel;
import fr.ifremer.wao.io.csv2.Import;
@@ -106,15 +97,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
-import java.text.DateFormat;
import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Comparator;
@@ -499,9 +484,6 @@
// who was on the observation are the one expected
if (newContact.getObsProgram() == ObsProgram.OBSDEB) {
newContact.setObservationType(row.getObservationType());
- newContact.setObservationBeginDate(row.getExpectedDate());
- newContact.setObservationEndDate(row.getExpectedDate());
- newContact.setLandingDate(row.getExpectedDate());
if (CollectionUtils.isNotEmpty(row.getObservers())) {
List<WaoUser> expectedObservers = new LinkedList<WaoUser>(row.getObservers());
newContact.setMainObserver(expectedObservers.get(0));
@@ -510,6 +492,10 @@
}
if (row.isFieldWorkObservation()) {
+ newContact.setObservationBeginDate(row.getExpectedDate());
+ newContact.setObservationEndDate(row.getExpectedDate());
+ newContact.setLandingDate(row.getExpectedDate());
+
// on the field work, the observer went in the observation unit
// given in the row. If this unit contains only one port, we
// can suppose he went in this one
@@ -521,6 +507,11 @@
newContact.setTerrestrialLocation(allPorts.get(0));
}
}
+
+ if (row.isPhoneCall()) {
+ newContact.setObservationBeginDate(context.getCurrentDate());
+ newContact.setObservationEndDate(context.getCurrentDate());
+ }
}
if (newContact.getObsProgram() == ObsProgram.OBSVENTE) {
@@ -1035,7 +1026,7 @@
// Some DAO
WaoUserDAO waoUserDAO = WaoDAOHelper.getWaoUserDAO(transaction);
- TerrestrialLocationDAO terrestrialLocationDAO =
+ TerrestrialLocationDAOImpl terrestrialLocationDAO =
WaoDAOHelper.getTerrestrialLocationDAO(transaction);
SampleRowDAO sampleRowDAO = WaoDAOHelper.getSampleRowDAO(transaction);
BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction);
@@ -1451,6 +1442,10 @@
region = sampleRow.getTerrestrialLocation();
}
+ if (region == null) {
+ throw new IllegalStateException("row has no region attached");
+ }
+
ObsDebCodeDAO dao = WaoDAOHelper.getObsDebCodeDAO(transaction);
List<ObsDebCode> possibleObsDebCodes = dao.findAllContainsRegions(region);
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 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -54,6 +54,7 @@
import fr.ifremer.wao.entity.TerrestrialDivisionDAO;
import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.entity.TerrestrialLocationDAO;
+import fr.ifremer.wao.entity.TerrestrialLocationDAOImpl;
import fr.ifremer.wao.entity.TerrestrialLocationImpl;
import fr.ifremer.wao.io.ImportResults;
import fr.ifremer.wao.io.ImportResultsImpl;
@@ -83,7 +84,6 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Set;
/**
* ServiceReferentialImpl
@@ -394,31 +394,41 @@
@Override
protected List<TerrestrialLocation> executeGetAllTerrestrialDistricts(TopiaContext transaction, SamplingFilter filter) throws Exception {
- TerrestrialLocationDAO dao = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
- List<TerrestrialLocation> result = dao.findAllByLocationTypeOrdinal(null);
+ TerrestrialLocationDAOImpl dao =
+ WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ List<TerrestrialLocation> result =
+ dao.findAllByLocationType(LocationType.DISTRICT);
return result;
}
+ /** Find ports and auctions in a given district */
@Override
protected List<TerrestrialLocation> executeGetAllTerrestrialLocations(TopiaContext transaction,
ContactFilter filter, String districtCode) throws Exception {
- TerrestrialLocationDAO dao = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ TerrestrialLocationDAOImpl dao = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(TerrestrialLocation.PROPERTY_DISTRICT_CODE, districtCode);
+
+ properties.put(TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, LocationType.PORT.ordinal());
List<TerrestrialLocation> result = dao.findAllByProperties(properties);
- TerrestrialLocation removeDistrict = null;
- for (TerrestrialLocation locationResult : result) {
- if (locationResult.getLocationType() == null) {
- removeDistrict = locationResult;
- }
- }
- result.remove(removeDistrict);
+ properties.put(TerrestrialLocation.PROPERTY_LOCATION_TYPE_ORDINAL, LocationType.AUCTION.ordinal());
+ result.addAll(dao.findAllByProperties(properties));
return result;
}
@Override
+ protected List<TerrestrialLocation> executeGetAllRegionIfremers
+ (TopiaContext transaction) throws Exception {
+ TerrestrialLocationDAOImpl dao = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ List<TerrestrialLocation> allRegionIfremers =
+ dao.findAllByLocationType(LocationType.REGION);
+ return allRegionIfremers;
+ }
+
+ @Override
protected TerrestrialLocation executeGetTerrestrialDistrict(TopiaContext transaction, String districtCode) throws Exception {
TerrestrialLocationDAO dao = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
Map<String, Object> properties = new HashMap<String, Object>();
@@ -520,13 +530,13 @@
@Override
protected void executeImportTerrestrialDivisions(TopiaContext transaction, InputStream input) throws Exception {
- TerrestrialLocationDAO terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ TerrestrialLocationDAOImpl terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
// let's find all ports in terrestrial location reference
List<TerrestrialLocation> ports = terrestrialLocationDAO.
- findAllByLocationTypeOrdinal(LocationType.PORT.ordinal());
+ findAllByLocationType(LocationType.PORT);
List<TerrestrialLocation> regions = terrestrialLocationDAO.
- findAllByLocationTypeOrdinal(LocationType.REGION.ordinal());
+ findAllByLocationType(LocationType.REGION);
if (log.isDebugEnabled()) {
log.debug(ports.size() + " ports, " + regions.size() + " regions");
@@ -580,9 +590,10 @@
observationUnitBinder.copyExcluding(terrestrialDivision, observationUnit,
TerrestrialDivision.TOPIA_ID, TerrestrialDivision.TOPIA_VERSION, TerrestrialDivision.TOPIA_CREATE_DATE,
TerrestrialDivision.PROPERTY_CODE, TerrestrialDivision.PROPERTY_PORT);
- WaoUtils.createOrUpdate(TerrestrialDivision.class, observationUnit, dao, TerrestrialDivision.PROPERTY_CODE,
- TerrestrialDivision.PROPERTY_SKILL_ZONE_CODE, TerrestrialDivision.PROPERTY_SUB_POPULATION_CODE,
- TerrestrialDivision.PROPERTY_OBSERVATION_UNIT_CODE, TerrestrialDivision.PROPERTY_PORT);
+ WaoUtils.createOrUpdate(TerrestrialDivision.class,
+ observationUnit, dao, TerrestrialDivision.PROPERTY_CODE,
+ TerrestrialDivision.PROPERTY_REGION_IFREMER,
+ TerrestrialDivision.PROPERTY_OBSERVATION_UNIT_CODE);
}
transaction.commitTransaction();
@@ -623,8 +634,8 @@
if (observationUnit == null) {
- TerrestrialLocationDAO terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
- ports = terrestrialLocationDAO.findAllByLocationTypeOrdinal(LocationType.PORT.ordinal());
+ TerrestrialLocationDAOImpl terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ ports = terrestrialLocationDAO.findAllByLocationType(LocationType.PORT);
} else {
@@ -653,9 +664,9 @@
Import<ObsDebCode> obsDebCodeImport = null;
ImportResults result = new ImportResultsImpl(); // will be returned
- TerrestrialLocationDAO terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ TerrestrialLocationDAOImpl terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
List<TerrestrialLocation> allRegions = terrestrialLocationDAO.
- findAllByLocationTypeOrdinal(LocationType.REGION.ordinal());
+ findAllByLocationType(LocationType.REGION);
try {
ObsDebCodeDAO dao = WaoDAOHelper.getObsDebCodeDAO(transaction);
ImportModel<ObsDebCode> model = new ObsDebCodesImportModel(allRegions);
@@ -741,7 +752,7 @@
InputStream input = null;
- TerrestrialLocationDAO terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ TerrestrialLocationDAOImpl terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
ObsDebCodeDAO obsDebCodeDAO = WaoDAOHelper.getObsDebCodeDAO(transaction);
// import terrestrial locations if base is empty
@@ -752,7 +763,7 @@
// are missing so we must force re-import to create regions
if ( ! importTerrestrialLocations) {
List<TerrestrialLocation> regions = terrestrialLocationDAO.
- findAllByLocationTypeOrdinal(LocationType.REGION.ordinal());
+ findAllByLocationType(LocationType.REGION);
importTerrestrialLocations = regions.size() == 0;
}
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 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -78,7 +78,7 @@
import fr.ifremer.wao.entity.TerrestrialDivision;
import fr.ifremer.wao.entity.TerrestrialDivisionDAO;
import fr.ifremer.wao.entity.TerrestrialLocation;
-import fr.ifremer.wao.entity.TerrestrialLocationDAO;
+import fr.ifremer.wao.entity.TerrestrialLocationDAOImpl;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.entity.WaoUserDAO;
import fr.ifremer.wao.io.ImportRefusedException;
@@ -692,7 +692,7 @@
if (result.getObsProgram() == ObsProgram.OBSDEB) {
result.sizeObservers();
result.getObservationUnit();
-
+ result.getTerrestrialLocation();
if (result.getObservationType() == ObservationType.PHONE_CALL) {
result.getBoat().getBoatGroup();
}
@@ -1074,11 +1074,11 @@
BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction);
List<Boat> allActiveBoats = boatDAO.findAllByActive(true);
- TerrestrialLocationDAO terrestrialLocationDAO =
+ TerrestrialLocationDAOImpl terrestrialLocationDAO =
WaoDAOHelper.getTerrestrialLocationDAO(transaction);
List<TerrestrialLocation> allRegions = terrestrialLocationDAO.
- findAllByLocationTypeOrdinal(LocationType.REGION.ordinal());
+ findAllByLocationType(LocationType.REGION);
ImportModel<SampleRow> samplingPlanImportModel =
new SamplingPlanImportExportModel(connectedUser,
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 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-06-03 16:06:35 UTC (rev 1314)
@@ -193,6 +193,7 @@
wao.error.serviceReferential.getAllObsDebCodes=
wao.error.serviceReferential.getAllObservationUnits=
wao.error.serviceReferential.getAllPorts=
+wao.error.serviceReferential.getAllRegionIfremers=
wao.error.serviceReferential.getAllTerrestrialDistricts=
wao.error.serviceReferential.getAllTerrestrialLocations=
wao.error.serviceReferential.getCodesDCF5Contains=
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 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-06-03 16:06:35 UTC (rev 1314)
@@ -193,6 +193,7 @@
wao.error.serviceReferential.getAllObsDebCodes=
wao.error.serviceReferential.getAllObservationUnits=
wao.error.serviceReferential.getAllPorts=
+wao.error.serviceReferential.getAllRegionIfremers=
wao.error.serviceReferential.getAllTerrestrialDistricts=
wao.error.serviceReferential.getAllTerrestrialLocations=
wao.error.serviceReferential.getCodesDCF5Contains=
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceReferentialImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceReferentialImplTest.java 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceReferentialImplTest.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -123,14 +123,6 @@
}
/**
- * Test of getProfessions method, of class ServiceReferentialImpl.
- */
- //@Test
- public void testGetProfessions() throws Exception {
- System.out.println("getProfessions");
- }
-
- /**
* Test of getFishingZones method, of class ServiceReferentialImpl.
* @throws WaoException if error during import or getFishingZones
*/
@@ -165,6 +157,11 @@
try {
input = getClass().getResourceAsStream("/import/purifiedTerrestrialDivisions.csv");
service.importTerrestrialDivisions(input);
+ int nbTerrestrialDivisions = service.getAllObservationUnits().size();
+ input = getClass().getResourceAsStream("/import/purifiedTerrestrialDivisions.csv");
+ service.importTerrestrialDivisions(input);
+ assertEquals("importing the same file two times should not create extra lines",
+ nbTerrestrialDivisions, service.getAllObservationUnits().size());
} finally {
IOUtils.closeQuietly(input);
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/WaoActivationContext.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/WaoActivationContext.java 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/WaoActivationContext.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -35,14 +35,16 @@
protected static final String SAMPLE_ROW_CODE = "sampleRowCode";
protected static final String SAMPLE_ROW_ID = "sampleRowId";
protected static final String OBSERVATION_TYPE_NAME = "observationTypeName";
+ protected static final String BOAT_IMMATRICULATION = "boatImmatriculation";
- protected static final List<String> VALID_KEYS =
- Arrays.asList(SAMPLE_ROW_CODE, SAMPLE_ROW_ID,
- OBSERVATION_TYPE_NAME);
+ protected static final List<String> VALID_KEYS = Arrays.asList(
+ SAMPLE_ROW_CODE, SAMPLE_ROW_ID, OBSERVATION_TYPE_NAME,
+ BOAT_IMMATRICULATION);
protected String sampleRowCode;
protected String sampleRowId;
protected ObservationType observationType;
+ protected Integer boatImmatriculation;
public static WaoActivationContext newEmptyContext() {
WaoActivationContext newWaoActivationContext = new WaoActivationContext();
@@ -67,9 +69,40 @@
newWaoActivationContext.setSampleRowCode(context.get(SAMPLE_ROW_CODE));
newWaoActivationContext.setObservationType(context.get(OBSERVATION_TYPE_NAME));
newWaoActivationContext.setSampleRowId(context.get(SAMPLE_ROW_ID));
+ newWaoActivationContext.setBoatImmatriculation(context.get(BOAT_IMMATRICULATION));
return newWaoActivationContext;
}
+ @Override
+ public String toString() {
+ String toString = ToStringBuilder.reflectionToString(this);
+ return toString;
+ }
+
+ public String[] toStrings() {
+ Map<String, String> context = new TreeMap<String, String>();
+ if (sampleRowCode != null) {
+ context.put(SAMPLE_ROW_CODE, sampleRowCode);
+ }
+ if (sampleRowId != null) {
+ context.put(SAMPLE_ROW_ID, sampleRowId);
+ }
+ if (observationType != null) {
+ context.put(OBSERVATION_TYPE_NAME, observationType.name());
+ }
+ if (boatImmatriculation != null) {
+ context.put(BOAT_IMMATRICULATION,
+ String.valueOf(boatImmatriculation));
+ }
+ String[] strings = new String[context.size() * 2];
+ int i = 0;
+ for (Map.Entry<String, String> contextEntry : context.entrySet()) {
+ strings[i++] = contextEntry.getKey();
+ strings[i++] = contextEntry.getValue();
+ }
+ return strings;
+ }
+
protected void setObservationType(String name) {
if (name != null) {
setObservationType(ObservationType.valueOf(name));
@@ -100,29 +133,19 @@
this.observationType = observationType;
}
- @Override
- public String toString() {
- String toString = ToStringBuilder.reflectionToString(this);
- return toString;
+ public void setBoatImmatriculation(String boatImmatriculation) {
+ if (boatImmatriculation == null) {
+ this.boatImmatriculation = null;
+ } else {
+ this.boatImmatriculation = Integer.valueOf(boatImmatriculation);
+ }
}
- public String[] toStrings() {
- Map<String, String> context = new TreeMap<String, String>();
- if (sampleRowCode != null) {
- context.put(SAMPLE_ROW_CODE, sampleRowCode);
- }
- if (sampleRowId != null) {
- context.put(SAMPLE_ROW_ID, sampleRowId);
- }
- if (observationType != null) {
- context.put(OBSERVATION_TYPE_NAME, observationType.name());
- }
- String[] strings = new String[context.size() * 2];
- int i = 0;
- for (Map.Entry<String, String> contextEntry : context.entrySet()) {
- strings[i++] = contextEntry.getKey();
- strings[i++] = contextEntry.getValue();
- }
- return strings;
+ public void setBoatImmatriculation(Integer boatImmatriculation) {
+ this.boatImmatriculation = boatImmatriculation;
}
+
+ public Integer getBoatImmatriculation() {
+ return boatImmatriculation;
+ }
}
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 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -47,6 +47,7 @@
import fr.ifremer.wao.ui.data.BoatDataSource;
import fr.ifremer.wao.ui.data.ExportStreamResponse;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
+import fr.ifremer.wao.ui.data.WaoActivationContext;
import fr.ifremer.wao.ui.services.WaoManager;
import org.apache.commons.lang.BooleanUtils;
import org.apache.tapestry5.Block;
@@ -110,8 +111,13 @@
@Inject
private PropertyAccess propertyAccess;
+ private WaoActivationContext waoActivationContext;
+
void onActivate(EventContext ec) {
- sampleRowContextId = ec.get(String.class, 0);
+ waoActivationContext = WaoActivationContext.newContextFromTapestry(ec);
+ sampleRowContextId = waoActivationContext.getSampleRowCode();
+ getBoatFilter().setBoatImmatriculation(
+ waoActivationContext.getBoatImmatriculation());
}
@Property
@@ -311,6 +317,10 @@
/*************** RIGHT PANEL ****************/
public Integer getBoatSelectedImmatriculation() {
+ if (boatSelectedImmatriculation == null) {
+ boatSelectedImmatriculation =
+ waoActivationContext.getBoatImmatriculation();
+ }
return boatSelectedImmatriculation;
}
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 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -219,6 +219,15 @@
return observers;
}
+ public boolean showSecondaryObservers() {
+ boolean showSecondaryObservers = true;
+ if (contact.getSampleRow().isPhoneCall()) {
+ // when phoning, we are always single
+ showSecondaryObservers = false;
+ }
+ return showSecondaryObservers;
+ }
+
/************************ OBSERVATION REPORT ******************************/
@Component
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -264,6 +264,32 @@
return serviceContact.getSubstitutesForBoat(sampleRow.getBoat());
}
+ protected String[] getContextForBoatOrSubstitute(Boat boat) {
+ WaoActivationContext contextForBoat =
+ WaoActivationContext.newEmptyContext();
+ contextForBoat.setSampleRowCode(sampleRow.getCode());
+ contextForBoat.setBoatImmatriculation(boat.getImmatriculation());
+ return contextForBoat.toStrings();
+ }
+
+ /** Context for boats page for links on the name of a boat */
+ public String[] getContextForBoat() {
+ return getContextForBoatOrSubstitute(sampleRow.getBoat());
+ }
+
+ /** Context for boats page for links to boats page in 'actions' */
+ public String[] getContextForBoats() {
+ WaoActivationContext contextForBoats =
+ WaoActivationContext.newEmptyContext();
+ contextForBoats.setSampleRowCode(sampleRow.getCode());
+ return contextForBoats.toStrings();
+ }
+
+ /** Context for boats page for links on the name of a substitute boat */
+ public String[] getContextForSubstitute() {
+ return getContextForBoatOrSubstitute(substitute);
+ }
+
//// grid actions
public boolean canEditSampleRow() {
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 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -587,6 +587,11 @@
return boats;
}
+ public List<TerrestrialLocation> getRegionIfremers() {
+ List<TerrestrialLocation> regionIfremers =
+ serviceReferential.getAllRegionIfremers();
+ return regionIfremers;
+ }
/*************************** SAMPLE ROW ***********************************/
private String sampleRowId;
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-06-03 16:06:35 UTC (rev 1314)
@@ -165,6 +165,7 @@
if ( ! sampleRowIsRealized) {
contactFilter.setSampleRow(sampleRow);
nbContacts = serviceContact.getNbContacts(contactFilter);
+ sampleRowIsRealized = nbContacts > 0;
}
String value = (sampleRowIsRealized ? yes : no) +
Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties
===================================================================
--- trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-06-03 16:06:35 UTC (rev 1314)
@@ -140,6 +140,7 @@
wao.ui.field.SampleRow.profession=Profession
wao.ui.field.SampleRow.professionCode=Profession code
wao.ui.field.SampleRow.programName=Program
+wao.ui.field.SampleRow.regionIfremer=Region
wao.ui.field.SampleRow.samplingStrategy=Sampling strategy
wao.ui.field.SampleRow.size=Boat size
wao.ui.field.SampleRow.species=Species
Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties
===================================================================
--- trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-06-03 16:06:35 UTC (rev 1314)
@@ -8,80 +8,80 @@
SynthesisId.OBSERVATION_HOUR=
wao.ui.action.acceptContact=Valider le contact
wao.ui.action.add=Ajouter
-wao.ui.action.addNewContactFromBoat=Cr\u00e9er un nouveau contact pour ce navire et la ligne s\u00e9lectionn\u00e9e dans les filtres
-wao.ui.action.back=Revenier \u00e0 l'\u00e9cran pr\u00e9c\u00e9dent
+wao.ui.action.addNewContactFromBoat=Créer un nouveau contact pour ce navire et la ligne sélectionnée dans les filtres
+wao.ui.action.back=Revenier à l'écran précédent
wao.ui.action.cancel=Annuler
wao.ui.action.changeLocale=Changer de langue
wao.ui.action.contactAdmin=Contacter un responsable ObsMer
-wao.ui.action.create=Cr\u00e9er
-wao.ui.action.createCompany=Cr\u00e9er une soci\u00e9t\u00e9
-wao.ui.action.createUser=Cr\u00e9er un utilisateur
+wao.ui.action.create=Créer
+wao.ui.action.createCompany=Créer une société
+wao.ui.action.createUser=Créer un utilisateur
wao.ui.action.delete=Supprimer
-wao.ui.action.deleteCompany=Supprimer la soci\u00e9t\u00e9
-wao.ui.action.deleteCompany.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la soci\u00e9t\u00e9 ?
+wao.ui.action.deleteCompany=Supprimer la société
+wao.ui.action.deleteCompany.confirm=Êtes-vous sûr de vouloir supprimer la société ?
wao.ui.action.deleteContact=Supprimer le contact
-wao.ui.action.deleteContact.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement ce contact ?
+wao.ui.action.deleteContact.confirm=Êtes-vous sûr de vouloir supprimer définitivement ce contact ?
wao.ui.action.deleteNews=Supprimer la nouvelle
-wao.ui.action.deleteNews.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement cette nouvelle ?
+wao.ui.action.deleteNews.confirm=Êtes-vous sûr de vouloir supprimer définitivement cette nouvelle ?
wao.ui.action.deleteSampleRow=Supprimer la ligne du plan
-wao.ui.action.deleteSampleRow.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la ligne %s du plan ?
+wao.ui.action.deleteSampleRow.confirm=Êtes-vous sûr de vouloir supprimer la ligne %s du plan ?
wao.ui.action.deleteUser=Supprimer l'utilisateur
-wao.ui.action.deleteUser.confirm=\u00cates-vous s\u00fbr de vouloir supprimer l'utilisateur ?
+wao.ui.action.deleteUser.confirm=Êtes-vous sûr de vouloir supprimer l'utilisateur ?
wao.ui.action.edit=Modifier
wao.ui.action.enlargeView=Agrandir la vue
-wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations priv\u00e9es
+wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations privées
wao.ui.action.filter=Filtrer
wao.ui.action.hideFilters=Masquer les filtres
wao.ui.action.login=Connexion
-wao.ui.action.logout=D\u00e9connexion
-wao.ui.action.reduceView=R\u00e9duire la vue
-wao.ui.action.refresh=Rafra\u00eechir
+wao.ui.action.logout=Déconnexion
+wao.ui.action.reduceView=Réduire la vue
+wao.ui.action.refresh=Rafraîchir
wao.ui.action.refuseContact=Refuser le contact
wao.ui.action.remove=Retirer
-wao.ui.action.resetFields=Remettre le formulaire \u00e0 z\u00e9ro
+wao.ui.action.resetFields=Remettre le formulaire à zéro
wao.ui.action.revert=Annuler
wao.ui.action.runExport=Lancer l'export
wao.ui.action.runImport=Lancer l'import
wao.ui.action.runSearch=Lancer la recherche
wao.ui.action.save=Enregistrer
-wao.ui.action.showDetails=Voir les d\u00e9tails
+wao.ui.action.showDetails=Voir les détails
wao.ui.action.showFilters=Afficher les filtres
wao.ui.action.unvalidateContact=Invalider le contact
wao.ui.action.viewIndicatorsHistory=Voir l'historique des modifications des indicateurs
wao.ui.boatList=Liste de %s navires
wao.ui.boatinfo.title=Informations sur %s
-wao.ui.boats.associatedLine=Ligne(s) du plan associ\u00e9e(s) \u00e0 ce navire
-wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre soci\u00e9t\u00e9
+wao.ui.boats.associatedLine=Ligne(s) du plan associée(s) à ce navire
+wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre société
wao.ui.boats.portOfRegistry.description=Il s'agit du port d'exploitation principal du navire
wao.ui.boats.portOfRegistry.header=Port
-wao.ui.boats.selecting=Vous \u00eates en cours de s\u00e9lection d'un navire pour la ligne du plan %s
+wao.ui.boats.selecting=Vous êtes en cours de sélection d'un navire pour la ligne du plan %s
wao.ui.boats.substitutes=Substituts du navire
-wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le d\u00e9tail.
-wao.ui.cartography.title=R\u00e9partition des contacts par quartier des navires
-wao.ui.cartography.title.company=R\u00e9partition des contacts par quartier des navires pour la soci\u00e9t\u00e9 %s
+wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le détail.
+wao.ui.cartography.title=Répartition des contacts par quartier des navires
+wao.ui.cartography.title.company=Répartition des contacts par quartier des navires pour la société %s
wao.ui.chart.boardingsSince=Nombre de sollicitations depuis le %s
wao.ui.chart.numberBoats=Nb navires
wao.ui.chart.numberObservations=Nb observations
wao.ui.chart.numberOfBoatsWithBoardings=Nombre de navires avec x embarquements
-wao.ui.contact.lastContact=Derni\u00e8re observation concernant ce navire pour votre soci\u00e9t\u00e9 (tous programmes confondus)
-wao.ui.contacts.createFromBoat=Cr\u00e9er un nouveau contact pour ce navire et cette ligne du plan
-wao.ui.contacts.createFromBoat.fail=Cr\u00e9ation d'un nouveau contact impossible
-wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arriv\u00e9e \u00e0 \u00e9ch\u00e9ance, \u00eates-vous s\u00fbr de vouloir cr\u00e9er un nouveau contact ?
-wao.ui.disclaimer=Le site de \u00ab SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER \u00bb a fait l'objet d'une d\u00e9claration \u00e0 la CNIL sous le num\u00e9ro suivant \: 1414476
-wao.ui.disclaimer.boats=Les donn\u00e9es saisies dans cette page sont la propri\u00e9t\u00e9 exclusive de la soci\u00e9t\u00e9. En dehors de la soci\u00e9t\u00e9, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer.
+wao.ui.contact.lastContact=Dernière observation concernant ce navire pour votre société (tous programmes confondus)
+wao.ui.contacts.createFromBoat=Créer un nouveau contact pour ce navire et cette ligne du plan
+wao.ui.contacts.createFromBoat.fail=Création d'un nouveau contact impossible
+wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arrivée à échéance, êtes-vous sûr de vouloir créer un nouveau contact ?
+wao.ui.disclaimer=Le site de « SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER » a fait l'objet d'une déclaration à la CNIL sous le numéro suivant \: 1414476
+wao.ui.disclaimer.boats=Les données saisies dans cette page sont la propriété exclusive de la société. En dehors de la société, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer.
wao.ui.email=Adresse e-mail
wao.ui.entity.Boat=Navire
wao.ui.entity.Boats=Navires
-wao.ui.entity.Company=Soci\u00e9t\u00e9
+wao.ui.entity.Company=Société
wao.ui.entity.Contact=Contact
-wao.ui.entity.FishingZone=Zones de p\u00eache
-wao.ui.entity.SampleRow=Ligne du plan d'\u00e9chantillonnage
+wao.ui.entity.FishingZone=Zones de pêche
+wao.ui.entity.SampleRow=Ligne du plan d'échantillonnage
wao.ui.entity.TerrestrialLocation=Lieu
wao.ui.entity.fishingGearDCF=Engin code DCF
-wao.ui.entity.targetSpeciesDCF=Ensembles d'esp\u00e8ces-cible code DCF
+wao.ui.entity.targetSpeciesDCF=Ensembles d'espèces-cible code DCF
wao.ui.field.Boat.boatGroup=Strate
wao.ui.field.Boat.boatLength=Longueur
-wao.ui.field.Boat.buildYear=Ann\u00e9e de construction
+wao.ui.field.Boat.buildYear=Année de construction
wao.ui.field.Boat.districtCode=Quartier
wao.ui.field.Boat.fleet=Flotille
wao.ui.field.Boat.immatriculation=Immatriculation
@@ -89,142 +89,143 @@
wao.ui.field.Boat.portOfRegistry=Port d'attache
wao.ui.field.Boat.shipOwner=Armateur
wao.ui.field.BoatDistrict.code=Code quartier
-wao.ui.field.BoatInfos.dup=Capacit\u00e9 d'accueil du navire en personnels sp\u00e9cialis\u00e9s
+wao.ui.field.BoatInfos.dup=Capacité d'accueil du navire en personnels spécialisés
wao.ui.field.Company.active=Active
wao.ui.field.Company.name=Nom
-wao.ui.field.Contact.beginDate=D\u00e9but d'observation
+wao.ui.field.Contact.beginDate=Début d'observation
wao.ui.field.Contact.comment=Commentaire observateur
wao.ui.field.Contact.commentAdmin=Commentaire programme
wao.ui.field.Contact.commentCoordinator=Commentaire coordinateur
-wao.ui.field.Contact.completeSampling=\u00c9chantillonnage complet
-wao.ui.field.Contact.contactState=\u00c9tat du contact
+wao.ui.field.Contact.completeSampling=Échantillonnage complet
+wao.ui.field.Contact.contactState=État du contact
wao.ui.field.Contact.contactStateMotif=Motif du refus
wao.ui.field.Contact.contactStateMotifs=Motifs de refus
-wao.ui.field.Contact.creationDate=Date de cr\u00e9ation du contact
-wao.ui.field.Contact.dataInputDate=Saisie des donn\u00e9es
-wao.ui.field.Contact.dataReliability=Qualit\u00e9 des donn\u00e9es
+wao.ui.field.Contact.creationDate=Date de création du contact
+wao.ui.field.Contact.dataInputDate=Saisie des données
+wao.ui.field.Contact.dataReliability=Qualité des données
wao.ui.field.Contact.endDate=Fin d'observation
-wao.ui.field.Contact.landingDate=Date de d\u00e9barquement
-wao.ui.field.Contact.mainObserver=Observateur r\u00e9f\u00e9rent
+wao.ui.field.Contact.landingDate=Date de débarquement
+wao.ui.field.Contact.mainObserver=Observateur référent
wao.ui.field.Contact.mammalsCapture=Capture accidentelle
-wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des esp\u00e8ces captur\u00e9es
+wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des espèces capturées
wao.ui.field.Contact.mammalsObservation=Observation exceptionnelle
wao.ui.field.Contact.nbObservants=Nombre d'observateurs
-wao.ui.field.Contact.obsDebCode=M\u00e9tier
+wao.ui.field.Contact.obsDebCode=Métier
wao.ui.field.Contact.observationType=Type d'observation
-wao.ui.field.Contact.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage suivie
+wao.ui.field.Contact.samplingStrategy=Stratégie d'échantillonnage suivie
wao.ui.field.Contact.secondaryObservers=Observateurs
wao.ui.field.Contact.terrestrialLocation=Lieu d'observation
-wao.ui.field.Contact.validationCompany=Validation soci\u00e9t\u00e9
+wao.ui.field.Contact.validationCompany=Validation société
wao.ui.field.Contact.validationProgram=Validation programme
-wao.ui.field.FishingZone.facadeName=Fa\u00e7ade
+wao.ui.field.FishingZone.facadeName=Façade
wao.ui.field.FishingZone.sectorName=Zone
wao.ui.field.SampleRow.boat=Navire
wao.ui.field.SampleRow.code=Code ligne
wao.ui.field.SampleRow.comment=Commentaire
-wao.ui.field.SampleRow.company=Soci\u00e9t\u00e9
+wao.ui.field.SampleRow.company=Société
wao.ui.field.SampleRow.dCF5Code=Codes
wao.ui.field.SampleRow.day=Jour
wao.ui.field.SampleRow.dcf5Code=Code DCF Niv. 5
wao.ui.field.SampleRow.expectedDate=Date
-wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00eache
-wao.ui.field.SampleRow.libelle=Libell\u00e9
+wao.ui.field.SampleRow.fishingZones=Zone(s) de pêche
+wao.ui.field.SampleRow.libelle=Libellé
wao.ui.field.SampleRow.meshSize=Maillage
wao.ui.field.SampleRow.observationType=Type d'observation
-wao.ui.field.SampleRow.observationUnit=Unit\u00e9 d'observation
+wao.ui.field.SampleRow.observationUnit=Unité d'observation
wao.ui.field.SampleRow.observers=Observateurs
wao.ui.field.SampleRow.other=Autre
-wao.ui.field.SampleRow.periodBegin=D\u00e9but
+wao.ui.field.SampleRow.periodBegin=Début
wao.ui.field.SampleRow.periodEnd=Fin
-wao.ui.field.SampleRow.profession=M\u00e9tier
-wao.ui.field.SampleRow.professionCode=Code m\u00e9tier
+wao.ui.field.SampleRow.profession=Métier
+wao.ui.field.SampleRow.professionCode=Code métier
wao.ui.field.SampleRow.programName=Programme
-wao.ui.field.SampleRow.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage
+wao.ui.field.SampleRow.regionIfremer=Région
+wao.ui.field.SampleRow.samplingStrategy=Stratégie d'échantillonnage
wao.ui.field.SampleRow.size=Taille du navire
-wao.ui.field.SampleRow.species=Esp\u00e8ces cibles
+wao.ui.field.SampleRow.species=Espèces cibles
wao.ui.field.SampleRow.terrestrialLocation=Quartier maritime
wao.ui.field.SampleRow.terrestrialLocationInfos=Autre(s) info(s)
-wao.ui.field.TerrestrialDivision.regionIfremer=R\u00e9gion Ifremer
-wao.ui.field.TerrestrialDivision.skillZone=Zone de comp\u00e9tence
+wao.ui.field.TerrestrialDivision.regionIfremer=Région Ifremer
+wao.ui.field.TerrestrialDivision.skillZone=Zone de compétence
wao.ui.field.TerrestrialDivision.subPopulation=Sous-population
-wao.ui.field.User.firstName=Pr\u00e9nom
+wao.ui.field.User.firstName=Prénom
wao.ui.field.User.lastName=Nom
wao.ui.field.User.login=Identifiant
-wao.ui.field.UserProfile.userRole=R\u00f4le
+wao.ui.field.UserProfile.userRole=Rôle
wao.ui.field.WaoUser.login=Identifiant
wao.ui.field.WaoUser.mammalsNotifications=Recevoir les notifications de captures accidentelles
wao.ui.field.WaoUser.password=Mot de passe
wao.ui.filters.filters=Filtres de recherche
-wao.ui.filters.refresh=Rafra\u00eechir les champs du filtre
-wao.ui.forgotPassword=Mot de passe oubli\u00e9 ?
-wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont \u00e9ligibles pour cette ligne. Vous pouvez utiliser n'importe quel s\u00e9parateur pour s\u00e9parer les immatriculations (virgule, point, espace ou saut de ligne)
-wao.ui.form.SampleRow.error.missingLogComment=Vous devez pr\u00e9ciser la raison de vos modifications
-wao.ui.form.SampleRow.missingBeginDate=Date de d\u00e9but manquante pour g\u00e9n\u00e9rer le code de la ligne \!
-wao.ui.form.SampleRow.others=Autres donn\u00e9es de la ligne d'\u00e9chantillonnage
+wao.ui.filters.refresh=Rafraîchir les champs du filtre
+wao.ui.forgotPassword=Mot de passe oublié ?
+wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont éligibles pour cette ligne. Vous pouvez utiliser n'importe quel séparateur pour séparer les immatriculations (virgule, point, espace ou saut de ligne)
+wao.ui.form.SampleRow.error.missingLogComment=Vous devez préciser la raison de vos modifications
+wao.ui.form.SampleRow.missingBeginDate=Date de début manquante pour générer le code de la ligne \!
+wao.ui.form.SampleRow.others=Autres données de la ligne d'échantillonnage
wao.ui.form.SampleRow.program=Programme de rattachement et effort d'observation par mois
wao.ui.form.addComment=Ajouter un commentaire
-wao.ui.form.addRole=Ajouter ce r\u00f4le
+wao.ui.form.addRole=Ajouter ce rôle
wao.ui.form.boardingFrom=Sollicitations du navire depuis le
wao.ui.form.contactsFile=Fichier des contacts
-wao.ui.form.definePasswordManually=d\u00e9finir manuellement
+wao.ui.form.definePasswordManually=définir manuellement
wao.ui.form.editComment=Commentaire sur la modification
wao.ui.form.editionAuthor=Auteur de la modification
-wao.ui.form.estimatedTides=Voir l'effort d'observations estim\u00e9
-wao.ui.form.estimatedTides.description=L'effort d'observations estim\u00e9 \u00e9quivaut au nombre de contacts valid\u00e9s ou non par la soci\u00e9t\u00e9. Les contacts refus\u00e9s par le programme ne sont pas pris en compte.
-wao.ui.form.generatePassword=G\u00e9n\u00e9rer le mot de passe
+wao.ui.form.estimatedTides=Voir l'effort d'observations estimé
+wao.ui.form.estimatedTides.description=L'effort d'observations estimé équivaut au nombre de contacts validés ou non par la société. Les contacts refusés par le programme ne sont pas pris en compte.
+wao.ui.form.generatePassword=Générer le mot de passe
wao.ui.form.otherBoatInfos=Autres informations sur le navire
-wao.ui.form.period=P\u00e9riode
+wao.ui.form.period=Période
wao.ui.form.period.from=du
wao.ui.form.period.to=au
-wao.ui.form.periodFrom=P\u00e9riode du
-wao.ui.form.periodFromTo=P\u00e9riode du %s au %s
+wao.ui.form.periodFrom=Période du
+wao.ui.form.periodFromTo=Période du %s au %s
wao.ui.form.program=Programme
-wao.ui.form.programEvaluation=\u00c9valuation programme
+wao.ui.form.programEvaluation=Évaluation programme
wao.ui.form.readOnly=lecture seule
wao.ui.form.removeRole=retirer ce role
-wao.ui.form.repeatPassword=R\u00e9p\u00e9ter le mot de passe
-wao.ui.form.roles=R\u00f4les
-wao.ui.form.sortByTideBegin=Trier par date de d\u00e9but d'observation (du plus r\u00e9cent au plus ancien)
-wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activit\u00e9
-wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activit\u00e9 en cours. Vous pouvez continuer \u00e0 naviguer sur le site en attendant la fin du chargement.
-wao.ui.import.activityCalendarLabel=des calendriers d'activit\u00e9
-wao.ui.import.activityCalendarUserAccessesLabel=des acc\u00e8s utilisateurs aux calendriers d'activit\u00e9
-wao.ui.import.boatDistrictLabel=des coordonn\u00e9es des quartiers des navires
+wao.ui.form.repeatPassword=Répéter le mot de passe
+wao.ui.form.roles=Rôles
+wao.ui.form.sortByTideBegin=Trier par date de début d'observation (du plus récent au plus ancien)
+wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activité
+wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activité en cours. Vous pouvez continuer à naviguer sur le site en attendant la fin du chargement.
+wao.ui.import.activityCalendarLabel=des calendriers d'activité
+wao.ui.import.activityCalendarUserAccessesLabel=des accès utilisateurs aux calendriers d'activité
+wao.ui.import.boatDistrictLabel=des coordonnées des quartiers des navires
wao.ui.import.boatsLabel=des navires
wao.ui.import.description=Fichier %s %s \:
-wao.ui.import.fishingZoneLabel=des zones de p\u00eaches
+wao.ui.import.fishingZoneLabel=des zones de pêches
wao.ui.import.fullDescription=Import %s (format %s avec encodage UTF-8)
wao.ui.import.longTitle=Import/Export CSV (UTF-8)
-wao.ui.import.obsDebCodesLabel=des codes m\u00e9tiers ObsDeb
-wao.ui.import.samplingPlanLabel=du plan d'\u00e9chantillonnage
-wao.ui.import.terrestrialDivisionsLabel=du r\u00e9f\u00e9rentiel de stratification spatiale (ObsDeb)
+wao.ui.import.obsDebCodesLabel=des codes métiers ObsDeb
+wao.ui.import.samplingPlanLabel=du plan d'échantillonnage
+wao.ui.import.terrestrialDivisionsLabel=du référentiel de stratification spatiale (ObsDeb)
wao.ui.import.terrestrialLocationsLabel=des lieux terrestres
wao.ui.import.title=Import %s
wao.ui.indicator.andMore=%s et plus
wao.ui.indicator.bounds=Bornes
-wao.ui.indicator.coefficient=Pond\u00e9ration
+wao.ui.indicator.coefficient=Pondération
wao.ui.indicator.editions=Modifications
wao.ui.indicator.indicator=Indicateur
-wao.ui.indicator.legend=En jaune, la position actuelle de la soci\u00e9t\u00e9 selon cet indicateur.
+wao.ui.indicator.legend=En jaune, la position actuelle de la société selon cet indicateur.
wao.ui.indicator.levels=Niveaux
-wao.ui.indicator.useRightDecimalSymbol=Attention \u00e0 bien utiliser ',' et non '.' pour les d\u00e9cimales
+wao.ui.indicator.useRightDecimalSymbol=Attention à bien utiliser ',' et non '.' pour les décimales
wao.ui.indicators.coefficientsSum=Total coefficient
-wao.ui.indicators.title=Indicateurs qualit\u00e9s prestataires
+wao.ui.indicators.title=Indicateurs qualités prestataires
wao.ui.invalidLogin=Identifiant invalide
-wao.ui.layout.userDescription=Vous \u00eates %s de la soci\u00e9t\u00e9 %s (%s)
+wao.ui.layout.userDescription=Vous êtes %s de la société %s (%s)
wao.ui.message.chooseProfile=Choisissez dans la liste votre profil de connexion \:
-wao.ui.misc.METIER=M\u00c9TIER
-wao.ui.misc.N/A=non renseign\u00e9e
-wao.ui.misc.accepted=Accept\u00e9
-wao.ui.misc.advancedSearch=Recherche avanc\u00e9e
+wao.ui.misc.METIER=MÉTIER
+wao.ui.misc.N/A=non renseignée
+wao.ui.misc.accepted=Accepté
+wao.ui.misc.advancedSearch=Recherche avancée
wao.ui.misc.by=par
wao.ui.misc.changeOn=Modification du
wao.ui.misc.comment=Commentaire
-wao.ui.misc.commentAddedOn=Commentaire ajout\u00e9 le
+wao.ui.misc.commentAddedOn=Commentaire ajouté le
wao.ui.misc.comments=Commentaires
-wao.ui.misc.companies=Soci\u00e9t\u00e9s
-wao.ui.misc.createdOnF=Cr\u00e9\u00e9e le
-wao.ui.misc.creating=En cours de cr\u00e9ation
+wao.ui.misc.companies=Sociétés
+wao.ui.misc.createdOnF=Créée le
+wao.ui.misc.creating=En cours de création
wao.ui.misc.dayOfWeek=Jour
wao.ui.misc.export=Export
wao.ui.misc.export.longTitle=Export CSV
@@ -237,7 +238,7 @@
wao.ui.misc.logFile.description=Afficher le fichier de log de %s
wao.ui.misc.no=Non
wao.ui.misc.noComment=aucun commentaire
-wao.ui.misc.notValidated=Non valid\u00e9
+wao.ui.misc.notValidated=Non validé
wao.ui.misc.observationReport=Compte-rendu d'observation
wao.ui.misc.observations=Observations
wao.ui.misc.observer=Observateur
@@ -247,84 +248,84 @@
wao.ui.misc.other=Autre
wao.ui.misc.otherInfos=Autre information
wao.ui.misc.others=Autres
-wao.ui.misc.refused=R\u00e9fus\u00e9
+wao.ui.misc.refused=Réfusé
wao.ui.misc.since=depuis le
wao.ui.misc.total=Total
-wao.ui.misc.undefined=Non-d\u00e9fini
-wao.ui.misc.validated=Valid\u00e9
+wao.ui.misc.undefined=Non-défini
+wao.ui.misc.validated=Validé
wao.ui.misc.week=Semaine
-wao.ui.misc.year=Ann\u00e9e
+wao.ui.misc.year=Année
wao.ui.misc.yes=Oui
-wao.ui.nContactsFound=%s contacts trouv\u00e9s
+wao.ui.nContactsFound=%s contacts trouvés
wao.ui.news.content=Texte
wao.ui.news.title=Titre
wao.ui.page.Administration.title=Administration
wao.ui.page.Boats.title=Navires
wao.ui.page.Cartography.title=Cartographie
-wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises \u00e0 des personnels ext\u00e9rieurs, soyez riguoureux dans la description de la capture accidentelle
+wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises à des personnels extérieurs, soyez riguoureux dans la description de la capture accidentelle
wao.ui.page.ContactForm.title=Modification d'un contact
wao.ui.page.Contacts.title=Contacts
wao.ui.page.Index.title=Accueil
-wao.ui.page.SamplingPlan.title=Plan d'\u00e9chantillonnage
-wao.ui.page.Synthesis.title=Synth\u00e8se
+wao.ui.page.SamplingPlan.title=Plan d'échantillonnage
+wao.ui.page.Synthesis.title=Synthèse
wao.ui.page.UserProfileForm.title=Gestion du profil
-wao.ui.publishedByProgram=Publi\u00e9e par le programme
-wao.ui.publishedByYourCompany=Publi\u00e9e par la soci\u00e9t\u00e9
-wao.ui.sampleRow.creation=Cr\u00e9ation d'une ligne du plan d'\u00e9chantillonnage
+wao.ui.publishedByProgram=Publiée par le programme
+wao.ui.publishedByYourCompany=Publiée par la société
+wao.ui.sampleRow.creation=Création d'une ligne du plan d'échantillonnage
wao.ui.sampleRow.edition=Modification de la ligne %s
wao.ui.sampleRowLog.title=Historique de la ligne %s
-wao.ui.samplingPlan.Actual=R\u00e9alis\u00e9
+wao.ui.samplingPlan.Actual=Réalisé
wao.ui.samplingPlan.actions=Actions
-wao.ui.samplingPlan.actual=r\u00e9alis\u00e9
-wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'\u00e9chantillonnage
-wao.ui.samplingPlan.averageTideTime=Dur\u00e9e moyenne d'une mar\u00e9e (J.)
-wao.ui.samplingPlan.effort=Effort d'observation en nombre de mar\u00e9es
-wao.ui.samplingPlan.estimated=estim\u00e9
-wao.ui.samplingPlan.expected=planifi\u00e9
-wao.ui.samplingPlan.export=Exporter le plan d'\u00e9chantillonnage du %s au %s
-wao.ui.samplingPlan.fieldWork.see=Voir le plan d'\u00e9chantillonnage de terrain
-wao.ui.samplingPlan.fieldWork.title=Plan d'\u00e9chantillonnage de terrain
+wao.ui.samplingPlan.actual=réalisé
+wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'échantillonnage
+wao.ui.samplingPlan.averageTideTime=Durée moyenne d'une marée (J.)
+wao.ui.samplingPlan.effort=Effort d'observation en nombre de marées
+wao.ui.samplingPlan.estimated=estimé
+wao.ui.samplingPlan.expected=planifié
+wao.ui.samplingPlan.export=Exporter le plan d'échantillonnage du %s au %s
+wao.ui.samplingPlan.fieldWork.see=Voir le plan d'échantillonnage de terrain
+wao.ui.samplingPlan.fieldWork.title=Plan d'échantillonnage de terrain
wao.ui.samplingPlan.fishingZoneInfo=Zone autre(s) info(s)
wao.ui.samplingPlan.months=Mois
wao.ui.samplingPlan.nbObservants=Nb. d'observateurs
-wao.ui.samplingPlan.phoneCall.see=Voir le plan d'\u00e9chantillonnage t\u00e9l\u00e9phonique
-wao.ui.samplingPlan.phoneCall.title=Plan d'\u00e9chantillonnage t\u00e9l\u00e9phonique
-wao.ui.samplingPlan.program=Programme ou r\u00e8glement rattachement
-wao.ui.samplingPlan.sampledProfessions=M\u00e9tiers \u00e9chantillonn\u00e9s
-wao.ui.samplingPlan.showActual=Afficher l'effort d'observations r\u00e9alis\u00e9 pour les contacts valid\u00e9s seulement
-wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estim\u00e9 pour les contacts valid\u00e9s ou non par la soci\u00e9t\u00e9
-wao.ui.samplingPlan.title=Plan d'\u00e9chantillonnage
-wao.ui.synthesis.allegroReactivity.description=Ce r\u00e9sultat est une moyenne du nombre de jours entre la date de saisie des donn\u00e9es et la date de fin d'observation.
-wao.ui.synthesis.allegroReactivity.title=R\u00e9activit\u00e9 quant \u00e0 la saisie des donn\u00e9es
+wao.ui.samplingPlan.phoneCall.see=Voir le plan d'échantillonnage téléphonique
+wao.ui.samplingPlan.phoneCall.title=Plan d'échantillonnage téléphonique
+wao.ui.samplingPlan.program=Programme ou règlement rattachement
+wao.ui.samplingPlan.sampledProfessions=Métiers échantillonnés
+wao.ui.samplingPlan.showActual=Afficher l'effort d'observations réalisé pour les contacts validés seulement
+wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estimé pour les contacts validés ou non par la société
+wao.ui.samplingPlan.title=Plan d'échantillonnage
+wao.ui.synthesis.allegroReactivity.description=Ce résultat est une moyenne du nombre de jours entre la date de saisie des données et la date de fin d'observation.
+wao.ui.synthesis.allegroReactivity.title=Réactivité quant à la saisie des données
wao.ui.synthesis.boarding.boardingCount=Au total, %s observations invalides sur %s observations.
-wao.ui.synthesis.boarding.description=Ces r\u00e9sultats ne concernent que les lignes du plan d'\u00e9chantillonnage ayant une dur\u00e9e moyenne de mar\u00e9es inf\u00e9rieure ou \u00e9gale \u00e0 48h.
-wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicit\u00e9 avec %s observations (tous programmes confondus) \: %s (%s)
+wao.ui.synthesis.boarding.description=Ces résultats ne concernent que les lignes du plan d'échantillonnage ayant une durée moyenne de marées inférieure ou égale à 48h.
+wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicité avec %s observations (tous programmes confondus) \: %s (%s)
wao.ui.synthesis.boarding.title=Sollicitations des navires
-wao.ui.synthesis.complianceBoarding.description=Respect du nombre pr\u00e9vu d'observateurs pour chaque mar\u00e9e r\u00e9alis\u00e9e.
-wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqu\u00e9s
-wao.ui.synthesis.contactsStates.description=Ces r\u00e9sultats concernent l'ensemble des \u00e9tats des contacts except\u00e9 ceux qui ont \u00e9t\u00e9 refus\u00e9s par le programme.
-wao.ui.synthesis.contactsStates.title=\u00c9tats des contacts
-wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de mar\u00e9es exploitables par rapport nombre de mar\u00e9e r\u00e9alis\u00e9es.
-wao.ui.synthesis.dataReliability.title=Qualit\u00e9 de la donn\u00e9e
-wao.ui.synthesis.dataSampling.title=Donn\u00e9es des mar\u00e9es (r\u00e9alis\u00e9 / planifi\u00e9)
+wao.ui.synthesis.complianceBoarding.description=Respect du nombre prévu d'observateurs pour chaque marée réalisée.
+wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqués
+wao.ui.synthesis.contactsStates.description=Ces résultats concernent l'ensemble des états des contacts excepté ceux qui ont été refusés par le programme.
+wao.ui.synthesis.contactsStates.title=États des contacts
+wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de marées exploitables par rapport nombre de marée réalisées.
+wao.ui.synthesis.dataReliability.title=Qualité de la donnée
+wao.ui.synthesis.dataSampling.title=Données des marées (réalisé / planifié)
wao.ui.synthesis.distinctBoatsCounts.axisName=Nombre de navires distincts
-wao.ui.synthesis.distinctBoatsCounts.categoryName=Mois de l'ann\u00e9e
-wao.ui.synthesis.distinctBoatsCounts.description=Nombre de navires distincts observ\u00e9s selon le mois de l'ann\u00e9e
-wao.ui.synthesis.distinctBoatsCounts.title=Nombre de navires observ\u00e9s
-wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synth\u00e8se global
-wao.ui.synthesis.globalSynthesis.title=Synth\u00e8se globale
-wao.ui.synthesis.globalSynthesis.title.estimated=Synth\u00e8se globale (selon estimations)
-wao.ui.synthesis.log.description=Cette page pr\u00e9sente toutes les modifications effectu\u00e9es depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs.
-wao.ui.synthesis.log.empty=Aucune modification n'a \u00e9t\u00e9 apport\u00e9e \u00e0 ce jour
+wao.ui.synthesis.distinctBoatsCounts.categoryName=Mois de l'année
+wao.ui.synthesis.distinctBoatsCounts.description=Nombre de navires distincts observés selon le mois de l'année
+wao.ui.synthesis.distinctBoatsCounts.title=Nombre de navires observés
+wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synthèse global
+wao.ui.synthesis.globalSynthesis.title=Synthèse globale
+wao.ui.synthesis.globalSynthesis.title.estimated=Synthèse globale (selon estimations)
+wao.ui.synthesis.log.description=Cette page présente toutes les modifications effectuées depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs.
+wao.ui.synthesis.log.empty=Aucune modification n'a été apportée à ce jour
wao.ui.synthesis.log.entry.author=Auteur de la modification
-wao.ui.synthesis.log.entry.comment=Commentaire associ\u00e9
+wao.ui.synthesis.log.entry.comment=Commentaire associé
wao.ui.synthesis.log.entry.date=Date de la modification
-wao.ui.synthesis.log.entry.summary=Modifications effectu\u00e9es
-wao.ui.synthesis.log.title=Historique des modifications des param\u00e8tres de la synth\u00e8se globale
+wao.ui.synthesis.log.entry.summary=Modifications effectuées
+wao.ui.synthesis.log.title=Historique des modifications des paramètres de la synthèse globale
wao.ui.synthesis.observationHours.axisName=Nombre d'observations
-wao.ui.synthesis.observationHours.categoryName=Heures de la journ\u00e9e
-wao.ui.synthesis.observationHours.description=Nombre d'observations effectu\u00e9e selon l'heure d'arriv\u00e9e
-wao.ui.synthesis.observationHours.title=Distribution des p\u00e9riodes d'observation
-wao.ui.unavailableOperation=Op\u00e9ration non-disponible
+wao.ui.synthesis.observationHours.categoryName=Heures de la journée
+wao.ui.synthesis.observationHours.description=Nombre d'observations effectuée selon l'heure d'arrivée
+wao.ui.synthesis.observationHours.title=Distribution des périodes d'observation
+wao.ui.unavailableOperation=Opération non-disponible
wao.ui.userList=Liste des utilisateurs
wao.ui.validLogin=Identifiant valide
Modified: trunk/wao-ui/src/main/webapp/ContactForm.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ContactForm.tml 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/webapp/ContactForm.tml 2011-06-03 16:06:35 UTC (rev 1314)
@@ -84,14 +84,16 @@
${contact.mainObserver.fullName}
</t:if>
</div>
- <div>
- <label>${message:wao.ui.field.Contact.secondaryObservers}</label>
- <ul class="value">
- <li t:type="loop" t:source="contact.secondaryObservers" t:value="observer" t:volatile="true">
- ${observer.fullName}
- </li>
- </ul>
- </div>
+ <t:if test="showSecondaryObservers()">
+ <div>
+ <label>${message:wao.ui.field.Contact.secondaryObservers}</label>
+ <ul class="value">
+ <li t:type="loop" t:source="contact.secondaryObservers" t:value="observer" t:volatile="true">
+ ${observer.fullName}
+ </li>
+ </ul>
+ </div>
+ </t:if>
</t:block>
<t:block id="editObservers">
@@ -103,16 +105,18 @@
t:values="observers"
t:selectedValue="contact.mainObserver" />
</div>
- <div>
- <label for="secondaryObservers">${message:wao.ui.field.Contact.secondaryObservers}</label>
- <t:topiaEntitySelector t:id="secondaryObservers"
- t:multiple="true"
- t:clazzName="WaoUser"
- t:labelPropertyName="fullName"
- t:values="observers"
- t:selectedValues="contact.secondaryObservers"
- size="6"/>
- </div>
+ <t:if test="showSecondaryObservers()">
+ <div>
+ <label for="secondaryObservers">${message:wao.ui.field.Contact.secondaryObservers}</label>
+ <t:topiaEntitySelector t:id="secondaryObservers"
+ t:multiple="true"
+ t:clazzName="WaoUser"
+ t:labelPropertyName="fullName"
+ t:values="observers"
+ t:selectedValues="contact.secondaryObservers"
+ size="6"/>
+ </div>
+ </t:if>
</t:block>
<fieldset>
Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-06-03 16:06:35 UTC (rev 1314)
@@ -146,7 +146,12 @@
</p:boatHeader>
<p:boatCell>
<span t:type="ck/Tooltip" title="Infos" t:value="prop:boatDescription" t:effect="appear">
- ${sampleRow.boat.name}
+ <a t:type="pagelink"
+ t:page="boats"
+ t:context="contextForBoat"
+ title="${message:wao.ui.action.showDetails}" >
+ ${sampleRow.boat.name}
+ </a>
</span>
</p:boatCell>
@@ -156,8 +161,13 @@
</p:substitutesHeader>
<p:substitutesCell>
<t:loop source="substitutes" value="substitute">
- <span t:type="ck/Tooltip" title="Infos" t:value="prop:boatDescription" t:effect="appear">
- ${substitute.name}
+ <span t:type="ck/Tooltip" title="Infos" t:value="prop:substituteDescription" t:effect="appear">
+ <a t:type="pagelink"
+ t:page="boats"
+ t:context="contextForSubstitute"
+ title="${message:wao.ui.action.showDetails}" >
+ ${substitute.name}
+ </a>
</span>
</t:loop>
</p:substitutesCell>
@@ -194,7 +204,7 @@
<img src="${asset:context:}/img/delete2.png" alt="${message:wao.ui.action.deleteSampleRow}" />
</a>
</t:if>
- <a t:type="pagelink" t:page="boats" t:context="sampleRow.code">
+ <a t:type="pagelink" t:page="boats" t:context="contextForBoats">
<img src="${asset:context:}/img/boat.png" alt="${message:wao.ui.entity.Boats}" />
</a>
</p:actionsCell>
Modified: trunk/wao-ui/src/main/webapp/SampleRowForm.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-06-03 12:42:45 UTC (rev 1313)
+++ trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-06-03 16:06:35 UTC (rev 1314)
@@ -59,7 +59,7 @@
<div class="t-beaneditor-row">
<label for="observers">${message:wao.ui.field.SampleRow.observers}</label>
<t:topiaEntitySelector t:id="observers"
- t:multiple="true"
+ t:multiple="sampleRow.fieldWorkObservation"
t:clazzName="WaoUser"
t:labelPropertyName="fullName"
t:values="observers"
@@ -84,6 +84,14 @@
t:values="boats"
t:selectedValue="sampleRow.boat" />
</div>
+ <div class="t-beaneditor-row">
+ <label for="regionIfremer">${message:wao.ui.field.SampleRow.regionIfremer}</label>
+ <t:topiaEntitySelector t:id="regionIfremer"
+ t:clazzName="TerrestrialLocation"
+ t:labelPropertyName="description"
+ t:values="regionIfremers"
+ t:selectedValue="sampleRow.terrestrialLocation" />
+ </div>
</t:if>
<t:if test="sampleRow.fieldWorkObservation">
<div class="t-beaneditor-row">
1
0
03 Jun '11
Author: bleny
Date: 2011-06-03 12:42:45 +0000 (Fri, 03 Jun 2011)
New Revision: 1313
Log:
fix sample row form, fix boats page
Added:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/WaoActivationContext.java
trunk/wao-ui/src/test/java/fr/
trunk/wao-ui/src/test/java/fr/ifremer/
trunk/wao-ui/src/test/java/fr/ifremer/wao/
trunk/wao-ui/src/test/java/fr/ifremer/wao/ui/
trunk/wao-ui/src/test/java/fr/ifremer/wao/ui/data/
trunk/wao-ui/src/test/java/fr/ifremer/wao/ui/data/WaoActivationContextTest.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml
trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties
trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties
trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
trunk/wao-ui/src/main/webapp/SampleRowForm.tml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -244,6 +244,8 @@
} else {
// load data
boatInfos.getBoat();
+ boatInfos.getBoat().getFleet();
+ boatInfos.getBoat().getBoatGroup();
}
// load data
boatInfos.getBoat().sizeActivityCalendar();
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 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -1365,16 +1365,21 @@
if (log.isDebugEnabled()) {
StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("substitutes for boat ")
+ stringBuilder.append("boat ")
.append(boat.getName())
.append(" (length = ")
.append(boat.getBoatLength())
- .append(") are: ");
- for (Boat substitute : substitutes) {
- stringBuilder.append(substitute.getName())
- .append(" (length = ")
- .append(substitute.getBoatLength())
- .append(") ");
+ .append(") has ")
+ .append(substitutes.size())
+ .append(" substitutes.");
+ if ( ! substitutes.isEmpty()) {
+ stringBuilder.append(" Substitutes are ");
+ for (Boat substitute : substitutes) {
+ stringBuilder.append(substitute.getName())
+ .append(" (length = ")
+ .append(substitute.getBoatLength())
+ .append(") ");
+ }
}
log.debug(stringBuilder.toString());
}
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 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -377,7 +377,9 @@
BinderModelBuilder.newEmptyBuilder(SampleRow.class);
// add properties common to all programs
- sampleRowBinderModelBuilder.addSimpleProperties(SampleRow.PROPERTY_COMMENT);
+ sampleRowBinderModelBuilder.addSimpleProperties(
+ SampleRow.PROPERTY_COMMENT,
+ SampleRow.PROPERTY_COMPANY);
// plus per-program properties
if (ObsProgram.OBSDEB.equals(row.getObsProgram())) {
@@ -387,6 +389,7 @@
SampleRow.PROPERTY_OBSERVERS,
SampleRow.PROPERTY_OBSERVATION_UNIT,
SampleRow.PROPERTY_TERRESTRIAL_LOCATION,
+ SampleRow.PROPERTY_BOAT,
SampleRow.PROPERTY_BLANK_ROW);
} else {
oldRow.clearSampleMonth();
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 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -415,16 +415,20 @@
TopiaQuery query = dao.createQuery(waoUserProperty.$alias())
.addDistinct()
- .addJoin(waoUserProperty.userProfile(), userProfileProperty.$alias(), false)
- .addEquals(userProfileProperty.userRoleOrdinal(), UserRole.OBSERVER.ordinal(), UserRole.COORDINATOR.ordinal())
- .addOrder(WaoUser.PROPERTY_FIRST_NAME, WaoUser.PROPERTY_LAST_NAME);
+ .addFetch(waoUserProperty.company())
+ .addJoin(waoUserProperty.userProfile(),
+ userProfileProperty.$alias(),
+ false)
+ .addEquals(userProfileProperty.userRoleOrdinal(),
+ UserRole.OBSERVER.ordinal(),
+ UserRole.COORDINATOR.ordinal());
if (company != null) {
- query.addEquals(WaoUser.PROPERTY_COMPANY, company);
+ query.addEquals(waoUserProperty.company(), company);
}
if (activeOnly) {
- query.addEquals(WaoUser.PROPERTY_ACTIVE, Boolean.TRUE);
+ query.addEquals(waoUserProperty.active(), Boolean.TRUE);
}
if (log.isDebugEnabled()) {
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 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-06-03 12:42:45 UTC (rev 1313)
@@ -1,179 +1,179 @@
ContactPieChartConstant.OTHER=Autres
-ContactPieChartConstant.REALIZED=R\u00e9alis\u00e9s
-ContactPieChartConstant.REFUSED=Refus\u00e9s
-ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00e9finitif
+ContactPieChartConstant.REALIZED=Réalisés
+ContactPieChartConstant.REFUSED=Refusés
+ContactState.CONTACT_DEFINITELY_REFUSED=Refus définitif
ContactState.CONTACT_REFUSED=Refus
ContactState.CONTACT_START=Contact pris
-ContactState.OBSERVATION_CANCELLED=Annul\u00e9e
-ContactState.OBSERVATION_DONE=Observation r\u00e9alis\u00e9e
-ContactState.OBSERVATION_EXPECTED=Observation programm\u00e9e
-ContactState.OBSERVATION_NOT_DONE=Non observ\u00e9
-DataReliability.CORRECTION_ASKED=Correction demand\u00e9e
+ContactState.OBSERVATION_CANCELLED=Annulée
+ContactState.OBSERVATION_DONE=Observation réalisée
+ContactState.OBSERVATION_EXPECTED=Observation programmée
+ContactState.OBSERVATION_NOT_DONE=Non observé
+DataReliability.CORRECTION_ASKED=Correction demandée
DataReliability.DOUBTFUL=Douteuse
-DataReliability.NOT_PROVIDED=Non contr\u00f4l\u00e9e
+DataReliability.NOT_PROVIDED=Non contrôlée
DataReliability.NOT_RELIABLE=Non exploitable
DataReliability.RELIABLE=Exploitable
DataReliability.UNKNOWN=Inconnue
-GlobalIndicatorValue.BAD=P\u00e9nalit\u00e9 de niveau 1
+GlobalIndicatorValue.BAD=Pénalité de niveau 1
GlobalIndicatorValue.GOOD=Bonus de niveau 1
GlobalIndicatorValue.NEUTRAL=Conforme au cahier des charges
-GlobalIndicatorValue.VERY_BAD=P\u00e9nalit\u00e9 de niveau 2
+GlobalIndicatorValue.VERY_BAD=Pénalité de niveau 2
GlobalIndicatorValue.VERY_GOOD=Bonus de niveau 2
-LocationType.AUCTION=Cri\u00e9e
+LocationType.AUCTION=Criée
LocationType.DISTRICT=Quartier maritime
LocationType.PORT=Port
-LocationType.REGION=R\u00e9gion Ifremer
+LocationType.REGION=Région Ifremer
ObsProgram.OBSDEB=ObsDeb
ObsProgram.OBSMER=ObsMer
ObsProgram.OBSVENTE=ObsVente
ObservationType.FIELD_WORK_OBSERVATION=Observation de terrain
-ObservationType.FIELD_WORK_SURVEY=Enqu\u00eate de terrain
-ObservationType.PHONE_CALL=Enqu\u00eate t\u00e9l\u00e9phonique
-SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultan\u00e9 \: Toutes esp\u00e8ces commerciales
-SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1+G2
-SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1
-SamplingStrategy.SPECIFIC_STOCK=Stock sp\u00e9cifique
-SynthesisId.DISTINCT_BOATS_COUNTS=Nombres de navires distincts observ\u00e9s
-SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un m\u00eame navire conforme aux exigences
-SynthesisId.GRAPH_SAMPLING=Taux de r\u00e9alisation du plan d'\u00e9chantillonage
-SynthesisId.IND_ALLEGRO_REACTIVITY=D\u00e9lais de transmission des donn\u00e9es
-SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqu\u00e9s
-SynthesisId.IND_CONTACT_STATE=\u00c9tats des contacts
-SynthesisId.IND_DATA_RELIABILITY=Qualit\u00e9 de la donn\u00e9e
-SynthesisId.OBSERVATION_HOUR=Heures d'observation dans la journ\u00e9e
+ObservationType.FIELD_WORK_SURVEY=Enquête de terrain
+ObservationType.PHONE_CALL=Enquête téléphonique
+SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultané \: Toutes espèces commerciales
+SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultané \: espèces G1+G2
+SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultané \: espèces G1
+SamplingStrategy.SPECIFIC_STOCK=Stock spécifique
+SynthesisId.DISTINCT_BOATS_COUNTS=Nombres de navires distincts observés
+SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un même navire conforme aux exigences
+SynthesisId.GRAPH_SAMPLING=Taux de réalisation du plan d'échantillonage
+SynthesisId.IND_ALLEGRO_REACTIVITY=Délais de transmission des données
+SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqués
+SynthesisId.IND_CONTACT_STATE=États des contacts
+SynthesisId.IND_DATA_RELIABILITY=Qualité de la donnée
+SynthesisId.OBSERVATION_HOUR=Heures d'observation dans la journée
UserRole.ADMIN=Administrateur
UserRole.COORDINATOR=Coordinateur
-UserRole.GUEST=Invit\u00e9
+UserRole.GUEST=Invité
UserRole.OBSERVER=Observateur
UserRole.PROFESSIONAL=Professionnel
csv.import.error.missingMandatoryHeaders=Les champs obligatoires %s sont manquants
-csv.import.error.unableToParseValue=Erreur lors de l'interpr\u00e9tation de la valeur '%s' (colonne '%s', ligne %s)
-csv.import.error.unableToReadField=Impossible de lire la colonne '%s' \u00e0 la ligne %s
+csv.import.error.unableToParseValue=Erreur lors de l'interprétation de la valeur '%s' (colonne '%s', ligne %s)
+csv.import.error.unableToReadField=Impossible de lire la colonne '%s' à la ligne %s
csv.import.error.unableToReadLine=Impossible de lire la ligne %s
-csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entit\u00e9 '%s', ligne %s, column '%s')
+csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entité '%s', ligne %s, column '%s')
csv.import.error.unrecognizedHeaders=Les champs %s ne sont pas reconnus. Les champs possibles sont %s.
csv.import.logComment=Modification depuis import
-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écifié
+fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorquées par bateau
+fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues à main
+fr.ifremer.wao.entity.FishingGearDCF.FAR=Pièges aériens
+fr.ifremer.wao.entity.FishingGearDCF.FCN=Éperviers
+fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-spécifiés)
+fr.ifremer.wao.entity.FishingGearDCF.FIX=Pièges (non-spécifiés)
+fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pièges 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 à l'étalage (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élants (non spécifiés)
+fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis à civelles
+fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non spécifiés)
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érivants (filets dérivants)
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és (ancrés)
+fr.ifremer.wao.entity.FishingGearDCF.GT=Trémailleurs
+fr.ifremer.wao.entity.FishingGearDCF.GTN=Trémails et filets maillants combinés
+fr.ifremer.wao.entity.FishingGearDCF.GTR=Trémails
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écanisées
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écolte (non spécifiés)
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 à main et lignes avec cannes
+fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes à main et lignes à cannes
+fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non spécifiées)
+fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres dérivantes
+fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres calées ou semi-flottantes
+fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulevés (non spécifiés)
+fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulevés manœuvrées du bateau
+fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulevés portatifs
+fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulevés fixes manœuvrées du rivage
+fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de traîne
+fr.ifremer.wao.entity.FishingGearDCF.LX=Hameçons et lignes (non spécifiés)
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écifiés
+fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts à panneaux (non spécifié)
+fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond à panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts pélagiques à panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux à 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.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.PS1=Filets tournants, sennes coulissantes manœuvrées par un bateau
+fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes manœuvrées par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-bœufs (non spécifié)
+fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-bœufs de fond
+fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-bœufs pélagiques
+fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de pêche révréative
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œuvrées par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes écossaises
+fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes halées à bord
+fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non spécifiées)
+fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non spécifié)
+fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts à perche
+fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut à langoustines
+fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut à crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut pélagique (non spécifié)
+fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut à crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non spécifié)
+fr.ifremer.wao.entity.TargetSpeciesDCF.=Non spécifié
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èces catadromes
+fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustacés
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èces démersales
+fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Espèces 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élagiques
fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques
-fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00e9lagiques
-wao.business.boat.validation.immatriculation.wrongFormat=L'immatriculation du navire doit \u00eatre form\u00e9e de 6 chiffres
-wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut pr\u00e9ciser dans le commentaire administrateur pourquoi la donn\u00e9e est '%s'
-wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut pr\u00e9ciser la qualit\u00e9 de la donn\u00e9e avant de valider
+fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits pélagiques
+wao.business.boat.validation.immatriculation.wrongFormat=L'immatriculation du navire doit être formée de 6 chiffres
+wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut préciser dans le commentaire administrateur pourquoi la donnée est '%s'
+wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut préciser la qualité de la donnée avant de valider
wao.business.entity.UserProfile.description=%s sur %s%s
-wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseign\u00e9 dans WAO l'information suivante \:\n\nMar\u00e9e \: %s\nM\u00e9tier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao
+wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseigné dans WAO l'information suivante \:\n\nMarée \: %s\nMétier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao
wao.business.mammalsCapture.mail.subject=Obsmer WAO\: Information sur capture accidentelle
wao.business.other=Autre
wao.business.readOnly=(lecture seule)
-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.boat.canCreateContact=Impossible de créer un nouveau contact pour la société %1$s et le navire %2$s (%3$d)
+wao.error.boat.getNbBoarding=Impossible de récupérer le nombre d'embarquements réels depuis le %1$s
+wao.error.boatInfos.getNbBoardingForCompany=Impossible de récupérer le nombre d'embarquements réels depuis le %1$s pour la société %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écupération 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émarrage 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ées réels pour le mois de %1$s [ligne \: %2$s]
+wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire écrit par %1$s
+wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de créer ou modifier les informations liés au navire %1$d pour la société %2$s
+wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires sélectionnés
wao.error.serviceBoat.getActivityCalendarLogAccessFile=
wao.error.serviceBoat.getActivityCalendarLogFile=
wao.error.serviceBoat.getAllActiveBoats=
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écupérer 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îne d'immatriculations est incorrect \! Chaque immatriculation doit posséder 6 chiffres
+wao.error.serviceBoat.getCompanyBoatInfos=Impossible de récupérer les informations du navire immatriculé %1$d pour la société %2$s
+wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activité du navire %1$s (%2$d)
wao.error.serviceBoat.getNbBoatsByFilter=Impossible de filtrer la liste des navires
wao.error.serviceBoat.getPossibleValuesForFilter=
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.
+wao.error.serviceBoat.importActivityCalendarCsv=Problème d'import du fichier CSV des calendriers d'activité
+wao.error.serviceBoat.importBoatCsv=Problème d'import du fichier CSV. Vérifiez l'en-tête du fichier.
wao.error.serviceBoat.newBoatFilter=
wao.error.serviceCartography.exportContactMotifsStatisticsKml=
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ées des quartiers des navires. Vérifiez 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és
wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact
wao.error.serviceContact.getPossibleObsDebCodes=
wao.error.serviceContact.getPossibleValuesForFilter=
@@ -187,7 +187,7 @@
wao.error.serviceContact.updateSampleMonthTidesValue=
wao.error.serviceContact.validateContact=
wao.error.serviceNews.getNewNews=
-wao.error.serviceNews.getNews=Impossible de r\u00e9cup\u00e9rer l'ensemble des news
+wao.error.serviceNews.getNews=Impossible de récupérer l'ensemble des news
wao.error.serviceNews.saveNews=Impossible d'enregistrer la news ayant pour titre '%1$s'
wao.error.serviceReferential.getAllContactStateMotifs=
wao.error.serviceReferential.getAllObsDebCodes=
@@ -197,13 +197,13 @@
wao.error.serviceReferential.getAllTerrestrialLocations=
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.getFishingZones=Impossible de charger la liste des secteurs de pêche
+wao.error.serviceReferential.getProfessions=Impossible de charger la liste des métiers
+wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de pêche
wao.error.serviceReferential.getTerrestrialDistrict=
wao.error.serviceReferential.importContactStateMotifs=
-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.importDCFcodes=Impossible de créer le référentiel des codes DCF
+wao.error.serviceReferential.importFishingZoneCsv=Problème d'import du fichier CSV. Vérifiez l'en-tête du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de détails.
wao.error.serviceReferential.importInitialContactStateMotifs=
wao.error.serviceReferential.importObsDebCodes=
wao.error.serviceReferential.importTerrestrialDivisions=
@@ -212,73 +212,73 @@
wao.error.serviceReferential.updateAllContactStatesMotifs=
wao.error.serviceSampling.countSampleRows=
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'échantillon
+wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'échantillon \: %1$s
+wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'échantillonnage sur la période du %1$s au %2$s
wao.error.serviceSampling.exportSamplingPlanICalendar=
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écupérer un nouveau code pour une ligne d'échantillonnage
wao.error.serviceSampling.getNewSampleRowLog=
wao.error.serviceSampling.getPossibleValuesForFilter=
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.getSampleRow=Impossible de charger la ligne d'échantillon ayant pour identifiant \: %1$s
+wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'échantillon ayant pour code %1$s
+wao.error.serviceSampling.getSampleRowsByFilter=Impossible de récupérer la liste des lignes du plan d'échantillonnage
wao.error.serviceSampling.getSampleRowsForEligibility=
-wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage
+wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de récupérer la liste des lignes du plan d'échantillonnage
wao.error.serviceSampling.importSamplingPlanCsv=Erreur lors de l'import du plan
wao.error.serviceSampling.newOperation=
wao.error.serviceSampling.newSampleRow=
wao.error.serviceSampling.newSamplingFilter=
wao.error.serviceSampling.validateSampleRow=
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écupérer les données du graphique concernant les embarquements sur les navires
wao.error.serviceSynthesis.getBoatsCount=
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écupérer l'indicateur de réactivité sur les dates de saisies dans Allegro
wao.error.serviceSynthesis.getContactPieChartData=
wao.error.serviceSynthesis.getContactPieChartDataByBoatDistrict=
wao.error.serviceSynthesis.getContactStateMotifsPieChartDataByBoatDistrict=
-wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00e9cup\u00e9rer les statistiques sur les \u00e9tats des contacts
+wao.error.serviceSynthesis.getContactStateStatistics=Impossible de récupérer les statistiques sur les états 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.getDataSampling=Impossible de récupérer les données pour le graphique dynamique des efforts de marées
wao.error.serviceSynthesis.getDistinctBoatsCounts=
-wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es concernant les indicateurs pour la synth\u00e8se globale
+wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de récupérer les données concernant les indicateurs pour la synthèse 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.getNonComplianceBoardingIndicator=Impossible de récupérer l'indicateur de non respect du nombre d'observateurs embarqués
wao.error.serviceSynthesis.getObservationHours=
-wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00e0 jour les param\u00e8tres de la synth\u00e8se globale
+wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre à jour les paramètres de la synthèse globale
wao.error.serviceUser.addTokensToAllProfiles=
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éer l'administrateur par défaut
+wao.error.serviceUser.createUpdateCompany=Impossible de créer ou de mettre à jour la société
+wao.error.serviceUser.createUpdateUser=Impossible de créer ou de mettre à jour l'utilisateur
+wao.error.serviceUser.deleteCompany=Impossible de supprimer la société ou de vérifier 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écupérer la liste des sociétés
wao.error.serviceUser.getCompany=
wao.error.serviceUser.getConnectedUserByToken=
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écupérer la liste des observateurs
wao.error.serviceUser.getUserByToken=
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écupérer la liste des utilisateurs de la société %1$s
wao.export.ical.desc=avec %s
wao.export.ical.title=Observation ObsDeb
-wao.import.contact.failure.boatMissing=Il faut pr\u00e9ciser l'immatriculation du navire associ\u00e9 au contact
-wao.import.contact.failure.locationTypeMissing=Le type du lieu doit \u00eatre renseign\u00e9
-wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associ\u00e9e
+wao.import.contact.failure.boatMissing=Il faut préciser l'immatriculation du navire associé au contact
+wao.import.contact.failure.locationTypeMissing=Le type du lieu doit être renseigné
+wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associée
wao.import.contact.failure.terrestrialLocationMissing=Il manque le code du lieu
wao.import.contact.failure.wrongBoat=Il n'y a pas de navire avec l'immatriculation '%s'
wao.import.contact.failure.wrongSampleRowCode=Il n'y a pas de ligne du plan avec le code '%s'
wao.import.contact.failure.wrongTerrestrialLocation=Il n'y a pas de lieu de type '%s' ayant pour code '%s'
-wao.import.failure.wrongObsDebCode=Il n'y a pas de code m\u00e9tier ayant pour code '%s'
+wao.import.failure.wrongObsDebCode=Il n'y a pas de code métier ayant pour code '%s'
wao.import.failure.wrongUser=Il n'y a pas d'utilisateur ayant pour identifiant '%s'
-wao.validation.sampleRow.conflictOnObserver=L'observateur %s ne peut \u00eatre associ\u00e9 \u00e0 la ligne %s car il doit observer, le m\u00eame jour, pour la ligne %s
-wao.validation.sampleRow.observerNotInCompany=L'observateur %s ne fait pas parti de la soci\u00e9t\u00e9 %s
+wao.validation.sampleRow.conflictOnObserver=L'observateur %s ne peut être associé à la ligne %s car il doit observer, le même jour, pour la ligne %s
+wao.validation.sampleRow.observerNotInCompany=L'observateur %s ne fait pas parti de la société %s
Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/WaoActivationContext.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/WaoActivationContext.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/WaoActivationContext.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -0,0 +1,128 @@
+package fr.ifremer.wao.ui.data;
+
+import fr.ifremer.wao.bean.ObservationType;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.tapestry5.EventContext;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+/** Instances of this class represent the context given in a Tapestry page.
+ *
+ * The purpose of this class is to be used in onActive() event in Tapestry a
+ * tapestry page. By given the EventContext object injected by Tapestry, to
+ * an instance of this class, you will be able to understand what context is.
+ *
+ * Another use of this class is to create in instance and fill it with values
+ * in order to create a context to create a link to a page.
+ *
+ * In Tapestry, context is stored in the URL. For example, given an URL ending
+ * by
+ *
+ * <pre>
+ * sampleRowCode/2011_023/observationTypeName/PHONE_CALL
+ * </pre>
+ *
+ * This object will allow you to do getSampleRowCode() (return "2011_023") and
+ * getObservationType (will return ObservationType.PHONE_CALL).
+ *
+ */
+public class WaoActivationContext {
+
+ protected static final String SAMPLE_ROW_CODE = "sampleRowCode";
+ protected static final String SAMPLE_ROW_ID = "sampleRowId";
+ protected static final String OBSERVATION_TYPE_NAME = "observationTypeName";
+
+ protected static final List<String> VALID_KEYS =
+ Arrays.asList(SAMPLE_ROW_CODE, SAMPLE_ROW_ID,
+ OBSERVATION_TYPE_NAME);
+
+ protected String sampleRowCode;
+ protected String sampleRowId;
+ protected ObservationType observationType;
+
+ public static WaoActivationContext newEmptyContext() {
+ WaoActivationContext newWaoActivationContext = new WaoActivationContext();
+ return newWaoActivationContext;
+ }
+
+ public static WaoActivationContext newContextFromTapestry(
+ EventContext tapestryContext) {
+ WaoActivationContext newWaoActivationContext =
+ new WaoActivationContext();
+ String[] strings = tapestryContext.toStrings();
+ Map<String, String> context = new HashMap<String, String>();
+ for (int i = 0; i < strings.length;) {
+ String key = strings[i++];
+ if ( ! VALID_KEYS.contains(key) ) {
+ throw new IllegalArgumentException("'" + key + "' is not a " +
+ "valid key");
+ }
+ String value = strings[i++];
+ context.put(key, value);
+ }
+ newWaoActivationContext.setSampleRowCode(context.get(SAMPLE_ROW_CODE));
+ newWaoActivationContext.setObservationType(context.get(OBSERVATION_TYPE_NAME));
+ newWaoActivationContext.setSampleRowId(context.get(SAMPLE_ROW_ID));
+ return newWaoActivationContext;
+ }
+
+ protected void setObservationType(String name) {
+ if (name != null) {
+ setObservationType(ObservationType.valueOf(name));
+ }
+ }
+
+ public String getSampleRowCode() {
+ return sampleRowCode;
+ }
+
+ public void setSampleRowCode(String sampleRowCode) {
+ this.sampleRowCode = sampleRowCode;
+ }
+
+ public String getSampleRowId() {
+ return sampleRowId;
+ }
+
+ public void setSampleRowId(String sampleRowId) {
+ this.sampleRowId = sampleRowId;
+ }
+
+ public ObservationType getObservationType() {
+ return observationType;
+ }
+
+ public void setObservationType(ObservationType observationType) {
+ this.observationType = observationType;
+ }
+
+ @Override
+ public String toString() {
+ String toString = ToStringBuilder.reflectionToString(this);
+ return toString;
+ }
+
+ public String[] toStrings() {
+ Map<String, String> context = new TreeMap<String, String>();
+ if (sampleRowCode != null) {
+ context.put(SAMPLE_ROW_CODE, sampleRowCode);
+ }
+ if (sampleRowId != null) {
+ context.put(SAMPLE_ROW_ID, sampleRowId);
+ }
+ if (observationType != null) {
+ context.put(OBSERVATION_TYPE_NAME, observationType.name());
+ }
+ String[] strings = new String[context.size() * 2];
+ int i = 0;
+ for (Map.Entry<String, String> contextEntry : context.entrySet()) {
+ strings[i++] = contextEntry.getKey();
+ strings[i++] = contextEntry.getValue();
+ }
+ return strings;
+ }
+}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -24,6 +24,7 @@
package fr.ifremer.wao.ui.pages;
import fr.ifremer.wao.WaoBusinessException;
+import fr.ifremer.wao.WaoContext;
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ObsProgram;
@@ -40,6 +41,7 @@
import fr.ifremer.wao.ui.data.ImportEngine;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
import fr.ifremer.wao.ui.data.SampleRowDataSource;
+import fr.ifremer.wao.ui.data.WaoActivationContext;
import fr.ifremer.wao.ui.services.SampleRowModelFactory;
import fr.ifremer.wao.ui.services.WaoManager;
import org.apache.tapestry5.Block;
@@ -199,6 +201,13 @@
return observationType;
}
+ public String[] getContextForNewSampleRow() {
+ WaoActivationContext contextForNewSampleRow =
+ WaoActivationContext.newEmptyContext();
+ contextForNewSampleRow.setObservationType(getObservationType());
+ return contextForNewSampleRow.toStrings();
+ }
+
public boolean showFieldWorkSamplingPlan() {
return getObservationType() == ObservationType.FIELD_WORK_OBSERVATION;
}
@@ -271,4 +280,10 @@
serviceSampling.deleteSampleRow(sampleRow);
}
+ public String[] getContextForEditingSampleRow() {
+ WaoActivationContext waoActivationContext = WaoActivationContext.newEmptyContext();
+ waoActivationContext.setSampleRowId(sampleRow.getTopiaId());
+ return waoActivationContext.toStrings();
+ }
+
}
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 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -26,9 +26,9 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
-import fr.ifremer.wao.bean.BoatFilter;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.bean.ObservationType;
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.SamplingFilterImpl;
import fr.ifremer.wao.bean.SamplingStrategy;
@@ -54,6 +54,7 @@
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.ui.data.GenericSelectModel;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
+import fr.ifremer.wao.ui.data.WaoActivationContext;
import fr.ifremer.wao.ui.data.WaoPropertyChangeListener;
import fr.ifremer.wao.ui.services.WaoManager;
import org.apache.commons.collections.CollectionUtils;
@@ -80,7 +81,6 @@
import org.apache.tapestry5.ioc.services.PropertyAccess;
import org.apache.tapestry5.services.BeanModelSource;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.util.DateUtil;
import org.nuiton.util.PeriodDates;
import org.nuiton.util.StringUtil;
import org.slf4j.Logger;
@@ -136,14 +136,17 @@
private boolean edited;
+ private WaoActivationContext waoActivationContext;
+
void onActivate(EventContext ec) {
- if (ec.getCount() > 0) {
- sampleRowId = ec.get(String.class, 0);
- }
+ waoActivationContext = WaoActivationContext.newContextFromTapestry(ec);
+ sampleRowId = waoActivationContext.getSampleRowId();
}
- String onPassivate() {
- return sampleRowId;
+ String[] onPassivate() {
+ waoActivationContext = WaoActivationContext.newEmptyContext();
+ waoActivationContext.setSampleRowId(sampleRowId);
+ return waoActivationContext.toStrings();
}
void setupRender() throws WaoException {
@@ -557,6 +560,9 @@
/** get the format of date needed to fill the value of SampleRow#expectedDate */
public String getExpectedDateFormat() {
+ if (getSampleRow().getObservationType() == null) {
+ throw new NullPointerException();
+ }
String expectedDateFormat;
if (getSampleRow().isPhoneCall()) {
expectedDateFormat = "w/yyyy";
@@ -618,6 +624,9 @@
if (sampleRow == null) {
if (StringUtils.isEmpty(sampleRowId)) {
sampleRow = serviceSampling.newSampleRow(user);
+ if (sampleRow.getObsProgram() == ObsProgram.OBSDEB) {
+ sampleRow.setObservationType(waoActivationContext.getObservationType());
+ }
} else {
sampleRow = serviceSampling.getSampleRow(sampleRowId);
for (SampleMonth month : sampleRow.getSampleMonth()) {
@@ -641,7 +650,12 @@
if (sampleRowModel == null) {
sampleRowModel = beanModelSource.createEditModel(SampleRow.class, resources.getMessages());
if (user.isObsDeb()) {
- sampleRowModel.include(SampleRow.PROPERTY_COMMENT, SampleRow.PROPERTY_BLANK_ROW);
+ if (getSampleRow().isFieldWorkObservation()) {
+ sampleRowModel.include(SampleRow.PROPERTY_COMMENT,
+ SampleRow.PROPERTY_BLANK_ROW);
+ } else {
+ sampleRowModel.include(SampleRow.PROPERTY_COMMENT);
+ }
} else {
sampleRowModel.add(SampleRow.PROPERTY_COMPANY, null);
sampleRowModel.add("boats", null);
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -160,18 +160,15 @@
@Override
public String getValue(SampleRow sampleRow) {
- String value;
- if (sampleRow.isBlankRow()) {
- value = yes;
- } else {
+ boolean sampleRowIsRealized = sampleRow.isBlankRow();
+ int nbContacts = 0;
+ if ( ! sampleRowIsRealized) {
contactFilter.setSampleRow(sampleRow);
- int nbContacts = serviceContact.getNbContacts(contactFilter);
- if (nbContacts == 0) {
- value = no;
- } else {
- value = yes + " (" + nbContacts + ")";
- }
+ nbContacts = serviceContact.getNbContacts(contactFilter);
}
+
+ String value = (sampleRowIsRealized ? yes : no) +
+ " (" + nbContacts + ")";
return value;
}
});
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2011-06-03 12:42:45 UTC (rev 1313)
@@ -75,9 +75,11 @@
<img src="${asset:context:img/home.png}" alt="${message:wao.ui.page.Index.title}" />
</a>
<t:unless t:test="connectedUser.guest">
- <a t:type="pagelink" t:page="cartography" title="${message:wao.ui.page.Cartography.title}" target="_blank">
- <img src="${asset:context:img/cartography.png}" alt="${message:wao.ui.page.Cartography.title}" />
- </a>
+ <t:unless t:test="connectedUser.obsDeb">
+ <a t:type="pagelink" t:page="cartography" title="${message:wao.ui.page.Cartography.title}" target="_blank">
+ <img src="${asset:context:img/cartography.png}" alt="${message:wao.ui.page.Cartography.title}" />
+ </a>
+ </t:unless>
</t:unless>
<a t:type="pagelink" t:page="userProfileForm" title="${message:wao.ui.page.UserProfileForm.title}">
<img src="${asset:context:img/user.png}" alt="${message:wao.ui.page.UserProfileForm.title}" />
Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties
===================================================================
--- trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-06-03 12:42:45 UTC (rev 1313)
@@ -274,6 +274,7 @@
wao.ui.sampleRow.creation=Creation of a sample row
wao.ui.sampleRow.edition=Edtion of line %s
wao.ui.sampleRowLog.title=%s line historic
+wao.ui.samplingPlan.Actual=Actual
wao.ui.samplingPlan.actions=Actions
wao.ui.samplingPlan.actual=actual
wao.ui.samplingPlan.addSampleRow=Add a line in the sampling plan
Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties
===================================================================
--- trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-06-03 12:42:45 UTC (rev 1313)
@@ -8,80 +8,80 @@
SynthesisId.OBSERVATION_HOUR=
wao.ui.action.acceptContact=Valider le contact
wao.ui.action.add=Ajouter
-wao.ui.action.addNewContactFromBoat=Créer un nouveau contact pour ce navire et la ligne sélectionnée dans les filtres
-wao.ui.action.back=Revenier à l'écran précédent
+wao.ui.action.addNewContactFromBoat=Cr\u00e9er un nouveau contact pour ce navire et la ligne s\u00e9lectionn\u00e9e dans les filtres
+wao.ui.action.back=Revenier \u00e0 l'\u00e9cran pr\u00e9c\u00e9dent
wao.ui.action.cancel=Annuler
wao.ui.action.changeLocale=Changer de langue
wao.ui.action.contactAdmin=Contacter un responsable ObsMer
-wao.ui.action.create=Créer
-wao.ui.action.createCompany=Créer une société
-wao.ui.action.createUser=Créer un utilisateur
+wao.ui.action.create=Cr\u00e9er
+wao.ui.action.createCompany=Cr\u00e9er une soci\u00e9t\u00e9
+wao.ui.action.createUser=Cr\u00e9er un utilisateur
wao.ui.action.delete=Supprimer
-wao.ui.action.deleteCompany=Supprimer la société
-wao.ui.action.deleteCompany.confirm=Êtes-vous sûr de vouloir supprimer la société ?
+wao.ui.action.deleteCompany=Supprimer la soci\u00e9t\u00e9
+wao.ui.action.deleteCompany.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la soci\u00e9t\u00e9 ?
wao.ui.action.deleteContact=Supprimer le contact
-wao.ui.action.deleteContact.confirm=Êtes-vous sûr de vouloir supprimer définitivement ce contact ?
+wao.ui.action.deleteContact.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement ce contact ?
wao.ui.action.deleteNews=Supprimer la nouvelle
-wao.ui.action.deleteNews.confirm=Êtes-vous sûr de vouloir supprimer définitivement cette nouvelle ?
+wao.ui.action.deleteNews.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement cette nouvelle ?
wao.ui.action.deleteSampleRow=Supprimer la ligne du plan
-wao.ui.action.deleteSampleRow.confirm=Êtes-vous sûr de vouloir supprimer la ligne %s du plan ?
+wao.ui.action.deleteSampleRow.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la ligne %s du plan ?
wao.ui.action.deleteUser=Supprimer l'utilisateur
-wao.ui.action.deleteUser.confirm=Êtes-vous sûr de vouloir supprimer l'utilisateur ?
+wao.ui.action.deleteUser.confirm=\u00cates-vous s\u00fbr de vouloir supprimer l'utilisateur ?
wao.ui.action.edit=Modifier
wao.ui.action.enlargeView=Agrandir la vue
-wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations privées
+wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations priv\u00e9es
wao.ui.action.filter=Filtrer
wao.ui.action.hideFilters=Masquer les filtres
wao.ui.action.login=Connexion
-wao.ui.action.logout=Déconnexion
-wao.ui.action.reduceView=Réduire la vue
-wao.ui.action.refresh=Rafraîchir
+wao.ui.action.logout=D\u00e9connexion
+wao.ui.action.reduceView=R\u00e9duire la vue
+wao.ui.action.refresh=Rafra\u00eechir
wao.ui.action.refuseContact=Refuser le contact
wao.ui.action.remove=Retirer
-wao.ui.action.resetFields=Remettre le formulaire à zéro
+wao.ui.action.resetFields=Remettre le formulaire \u00e0 z\u00e9ro
wao.ui.action.revert=Annuler
wao.ui.action.runExport=Lancer l'export
wao.ui.action.runImport=Lancer l'import
wao.ui.action.runSearch=Lancer la recherche
wao.ui.action.save=Enregistrer
-wao.ui.action.showDetails=Voir les détails
+wao.ui.action.showDetails=Voir les d\u00e9tails
wao.ui.action.showFilters=Afficher les filtres
wao.ui.action.unvalidateContact=Invalider le contact
wao.ui.action.viewIndicatorsHistory=Voir l'historique des modifications des indicateurs
wao.ui.boatList=Liste de %s navires
wao.ui.boatinfo.title=Informations sur %s
-wao.ui.boats.associatedLine=Ligne(s) du plan associée(s) à ce navire
-wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre société
+wao.ui.boats.associatedLine=Ligne(s) du plan associ\u00e9e(s) \u00e0 ce navire
+wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre soci\u00e9t\u00e9
wao.ui.boats.portOfRegistry.description=Il s'agit du port d'exploitation principal du navire
wao.ui.boats.portOfRegistry.header=Port
-wao.ui.boats.selecting=Vous êtes en cours de sélection d'un navire pour la ligne du plan %s
+wao.ui.boats.selecting=Vous \u00eates en cours de s\u00e9lection d'un navire pour la ligne du plan %s
wao.ui.boats.substitutes=Substituts du navire
-wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le détail.
-wao.ui.cartography.title=Répartition des contacts par quartier des navires
-wao.ui.cartography.title.company=Répartition des contacts par quartier des navires pour la société %s
+wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le d\u00e9tail.
+wao.ui.cartography.title=R\u00e9partition des contacts par quartier des navires
+wao.ui.cartography.title.company=R\u00e9partition des contacts par quartier des navires pour la soci\u00e9t\u00e9 %s
wao.ui.chart.boardingsSince=Nombre de sollicitations depuis le %s
wao.ui.chart.numberBoats=Nb navires
wao.ui.chart.numberObservations=Nb observations
wao.ui.chart.numberOfBoatsWithBoardings=Nombre de navires avec x embarquements
-wao.ui.contact.lastContact=Dernière observation concernant ce navire pour votre société (tous programmes confondus)
-wao.ui.contacts.createFromBoat=Créer un nouveau contact pour ce navire et cette ligne du plan
-wao.ui.contacts.createFromBoat.fail=Création d'un nouveau contact impossible
-wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arrivée à échéance, êtes-vous sûr de vouloir créer un nouveau contact ?
-wao.ui.disclaimer=Le site de « SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER » a fait l'objet d'une déclaration à la CNIL sous le numéro suivant \: 1414476
-wao.ui.disclaimer.boats=Les données saisies dans cette page sont la propriété exclusive de la société. En dehors de la société, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer.
+wao.ui.contact.lastContact=Derni\u00e8re observation concernant ce navire pour votre soci\u00e9t\u00e9 (tous programmes confondus)
+wao.ui.contacts.createFromBoat=Cr\u00e9er un nouveau contact pour ce navire et cette ligne du plan
+wao.ui.contacts.createFromBoat.fail=Cr\u00e9ation d'un nouveau contact impossible
+wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arriv\u00e9e \u00e0 \u00e9ch\u00e9ance, \u00eates-vous s\u00fbr de vouloir cr\u00e9er un nouveau contact ?
+wao.ui.disclaimer=Le site de \u00ab SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER \u00bb a fait l'objet d'une d\u00e9claration \u00e0 la CNIL sous le num\u00e9ro suivant \: 1414476
+wao.ui.disclaimer.boats=Les donn\u00e9es saisies dans cette page sont la propri\u00e9t\u00e9 exclusive de la soci\u00e9t\u00e9. En dehors de la soci\u00e9t\u00e9, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer.
wao.ui.email=Adresse e-mail
wao.ui.entity.Boat=Navire
wao.ui.entity.Boats=Navires
-wao.ui.entity.Company=Société
+wao.ui.entity.Company=Soci\u00e9t\u00e9
wao.ui.entity.Contact=Contact
-wao.ui.entity.FishingZone=Zones de pêche
-wao.ui.entity.SampleRow=Ligne du plan d'échantillonnage
+wao.ui.entity.FishingZone=Zones de p\u00eache
+wao.ui.entity.SampleRow=Ligne du plan d'\u00e9chantillonnage
wao.ui.entity.TerrestrialLocation=Lieu
wao.ui.entity.fishingGearDCF=Engin code DCF
-wao.ui.entity.targetSpeciesDCF=Ensembles d'espèces-cible code DCF
+wao.ui.entity.targetSpeciesDCF=Ensembles d'esp\u00e8ces-cible code DCF
wao.ui.field.Boat.boatGroup=Strate
wao.ui.field.Boat.boatLength=Longueur
-wao.ui.field.Boat.buildYear=Année de construction
+wao.ui.field.Boat.buildYear=Ann\u00e9e de construction
wao.ui.field.Boat.districtCode=Quartier
wao.ui.field.Boat.fleet=Flotille
wao.ui.field.Boat.immatriculation=Immatriculation
@@ -89,142 +89,142 @@
wao.ui.field.Boat.portOfRegistry=Port d'attache
wao.ui.field.Boat.shipOwner=Armateur
wao.ui.field.BoatDistrict.code=Code quartier
-wao.ui.field.BoatInfos.dup=Capacité d'accueil du navire en personnels spécialisés
+wao.ui.field.BoatInfos.dup=Capacit\u00e9 d'accueil du navire en personnels sp\u00e9cialis\u00e9s
wao.ui.field.Company.active=Active
wao.ui.field.Company.name=Nom
-wao.ui.field.Contact.beginDate=Début d'observation
+wao.ui.field.Contact.beginDate=D\u00e9but d'observation
wao.ui.field.Contact.comment=Commentaire observateur
wao.ui.field.Contact.commentAdmin=Commentaire programme
wao.ui.field.Contact.commentCoordinator=Commentaire coordinateur
-wao.ui.field.Contact.completeSampling=Échantillonnage complet
-wao.ui.field.Contact.contactState=État du contact
+wao.ui.field.Contact.completeSampling=\u00c9chantillonnage complet
+wao.ui.field.Contact.contactState=\u00c9tat du contact
wao.ui.field.Contact.contactStateMotif=Motif du refus
wao.ui.field.Contact.contactStateMotifs=Motifs de refus
-wao.ui.field.Contact.creationDate=Date de création du contact
-wao.ui.field.Contact.dataInputDate=Saisie des données
-wao.ui.field.Contact.dataReliability=Qualité des données
+wao.ui.field.Contact.creationDate=Date de cr\u00e9ation du contact
+wao.ui.field.Contact.dataInputDate=Saisie des donn\u00e9es
+wao.ui.field.Contact.dataReliability=Qualit\u00e9 des donn\u00e9es
wao.ui.field.Contact.endDate=Fin d'observation
-wao.ui.field.Contact.landingDate=Date de débarquement
-wao.ui.field.Contact.mainObserver=Observateur référent
+wao.ui.field.Contact.landingDate=Date de d\u00e9barquement
+wao.ui.field.Contact.mainObserver=Observateur r\u00e9f\u00e9rent
wao.ui.field.Contact.mammalsCapture=Capture accidentelle
-wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des espèces capturées
+wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des esp\u00e8ces captur\u00e9es
wao.ui.field.Contact.mammalsObservation=Observation exceptionnelle
wao.ui.field.Contact.nbObservants=Nombre d'observateurs
-wao.ui.field.Contact.obsDebCode=Métier
+wao.ui.field.Contact.obsDebCode=M\u00e9tier
wao.ui.field.Contact.observationType=Type d'observation
-wao.ui.field.Contact.samplingStrategy=Stratégie d'échantillonnage suivie
+wao.ui.field.Contact.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage suivie
wao.ui.field.Contact.secondaryObservers=Observateurs
wao.ui.field.Contact.terrestrialLocation=Lieu d'observation
-wao.ui.field.Contact.validationCompany=Validation société
+wao.ui.field.Contact.validationCompany=Validation soci\u00e9t\u00e9
wao.ui.field.Contact.validationProgram=Validation programme
-wao.ui.field.FishingZone.facadeName=Façade
+wao.ui.field.FishingZone.facadeName=Fa\u00e7ade
wao.ui.field.FishingZone.sectorName=Zone
wao.ui.field.SampleRow.boat=Navire
wao.ui.field.SampleRow.code=Code ligne
wao.ui.field.SampleRow.comment=Commentaire
-wao.ui.field.SampleRow.company=Société
+wao.ui.field.SampleRow.company=Soci\u00e9t\u00e9
wao.ui.field.SampleRow.dCF5Code=Codes
wao.ui.field.SampleRow.day=Jour
wao.ui.field.SampleRow.dcf5Code=Code DCF Niv. 5
wao.ui.field.SampleRow.expectedDate=Date
-wao.ui.field.SampleRow.fishingZones=Zone(s) de pêche
-wao.ui.field.SampleRow.libelle=Libellé
+wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00eache
+wao.ui.field.SampleRow.libelle=Libell\u00e9
wao.ui.field.SampleRow.meshSize=Maillage
wao.ui.field.SampleRow.observationType=Type d'observation
-wao.ui.field.SampleRow.observationUnit=Unité d'observation
+wao.ui.field.SampleRow.observationUnit=Unit\u00e9 d'observation
wao.ui.field.SampleRow.observers=Observateurs
wao.ui.field.SampleRow.other=Autre
-wao.ui.field.SampleRow.periodBegin=Début
+wao.ui.field.SampleRow.periodBegin=D\u00e9but
wao.ui.field.SampleRow.periodEnd=Fin
-wao.ui.field.SampleRow.profession=Métier
-wao.ui.field.SampleRow.professionCode=Code métier
+wao.ui.field.SampleRow.profession=M\u00e9tier
+wao.ui.field.SampleRow.professionCode=Code m\u00e9tier
wao.ui.field.SampleRow.programName=Programme
-wao.ui.field.SampleRow.samplingStrategy=Stratégie d'échantillonnage
+wao.ui.field.SampleRow.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage
wao.ui.field.SampleRow.size=Taille du navire
-wao.ui.field.SampleRow.species=Espèces cibles
+wao.ui.field.SampleRow.species=Esp\u00e8ces cibles
wao.ui.field.SampleRow.terrestrialLocation=Quartier maritime
wao.ui.field.SampleRow.terrestrialLocationInfos=Autre(s) info(s)
-wao.ui.field.TerrestrialDivision.regionIfremer=Région Ifremer
-wao.ui.field.TerrestrialDivision.skillZone=Zone de compétence
+wao.ui.field.TerrestrialDivision.regionIfremer=R\u00e9gion Ifremer
+wao.ui.field.TerrestrialDivision.skillZone=Zone de comp\u00e9tence
wao.ui.field.TerrestrialDivision.subPopulation=Sous-population
-wao.ui.field.User.firstName=Prénom
+wao.ui.field.User.firstName=Pr\u00e9nom
wao.ui.field.User.lastName=Nom
wao.ui.field.User.login=Identifiant
-wao.ui.field.UserProfile.userRole=Rôle
+wao.ui.field.UserProfile.userRole=R\u00f4le
wao.ui.field.WaoUser.login=Identifiant
wao.ui.field.WaoUser.mammalsNotifications=Recevoir les notifications de captures accidentelles
wao.ui.field.WaoUser.password=Mot de passe
wao.ui.filters.filters=Filtres de recherche
-wao.ui.filters.refresh=Rafraîchir les champs du filtre
-wao.ui.forgotPassword=Mot de passe oublié ?
-wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont éligibles pour cette ligne. Vous pouvez utiliser n'importe quel séparateur pour séparer les immatriculations (virgule, point, espace ou saut de ligne)
-wao.ui.form.SampleRow.error.missingLogComment=Vous devez préciser la raison de vos modifications
-wao.ui.form.SampleRow.missingBeginDate=Date de début manquante pour générer le code de la ligne \!
-wao.ui.form.SampleRow.others=Autres données de la ligne d'échantillonnage
+wao.ui.filters.refresh=Rafra\u00eechir les champs du filtre
+wao.ui.forgotPassword=Mot de passe oubli\u00e9 ?
+wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont \u00e9ligibles pour cette ligne. Vous pouvez utiliser n'importe quel s\u00e9parateur pour s\u00e9parer les immatriculations (virgule, point, espace ou saut de ligne)
+wao.ui.form.SampleRow.error.missingLogComment=Vous devez pr\u00e9ciser la raison de vos modifications
+wao.ui.form.SampleRow.missingBeginDate=Date de d\u00e9but manquante pour g\u00e9n\u00e9rer le code de la ligne \!
+wao.ui.form.SampleRow.others=Autres donn\u00e9es de la ligne d'\u00e9chantillonnage
wao.ui.form.SampleRow.program=Programme de rattachement et effort d'observation par mois
wao.ui.form.addComment=Ajouter un commentaire
-wao.ui.form.addRole=Ajouter ce rôle
+wao.ui.form.addRole=Ajouter ce r\u00f4le
wao.ui.form.boardingFrom=Sollicitations du navire depuis le
wao.ui.form.contactsFile=Fichier des contacts
-wao.ui.form.definePasswordManually=définir manuellement
+wao.ui.form.definePasswordManually=d\u00e9finir manuellement
wao.ui.form.editComment=Commentaire sur la modification
wao.ui.form.editionAuthor=Auteur de la modification
-wao.ui.form.estimatedTides=Voir l'effort d'observations estimé
-wao.ui.form.estimatedTides.description=L'effort d'observations estimé équivaut au nombre de contacts validés ou non par la société. Les contacts refusés par le programme ne sont pas pris en compte.
-wao.ui.form.generatePassword=Générer le mot de passe
+wao.ui.form.estimatedTides=Voir l'effort d'observations estim\u00e9
+wao.ui.form.estimatedTides.description=L'effort d'observations estim\u00e9 \u00e9quivaut au nombre de contacts valid\u00e9s ou non par la soci\u00e9t\u00e9. Les contacts refus\u00e9s par le programme ne sont pas pris en compte.
+wao.ui.form.generatePassword=G\u00e9n\u00e9rer le mot de passe
wao.ui.form.otherBoatInfos=Autres informations sur le navire
-wao.ui.form.period=Période
+wao.ui.form.period=P\u00e9riode
wao.ui.form.period.from=du
wao.ui.form.period.to=au
-wao.ui.form.periodFrom=Période du
-wao.ui.form.periodFromTo=Période du %s au %s
+wao.ui.form.periodFrom=P\u00e9riode du
+wao.ui.form.periodFromTo=P\u00e9riode du %s au %s
wao.ui.form.program=Programme
-wao.ui.form.programEvaluation=Évaluation programme
+wao.ui.form.programEvaluation=\u00c9valuation programme
wao.ui.form.readOnly=lecture seule
wao.ui.form.removeRole=retirer ce role
-wao.ui.form.repeatPassword=Répéter le mot de passe
-wao.ui.form.roles=Rôles
-wao.ui.form.sortByTideBegin=Trier par date de début d'observation (du plus récent au plus ancien)
-wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activité
-wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activité en cours. Vous pouvez continuer à naviguer sur le site en attendant la fin du chargement.
-wao.ui.import.activityCalendarLabel=des calendriers d'activité
-wao.ui.import.activityCalendarUserAccessesLabel=des accès utilisateurs aux calendriers d'activité
-wao.ui.import.boatDistrictLabel=des coordonnées des quartiers des navires
+wao.ui.form.repeatPassword=R\u00e9p\u00e9ter le mot de passe
+wao.ui.form.roles=R\u00f4les
+wao.ui.form.sortByTideBegin=Trier par date de d\u00e9but d'observation (du plus r\u00e9cent au plus ancien)
+wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activit\u00e9
+wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activit\u00e9 en cours. Vous pouvez continuer \u00e0 naviguer sur le site en attendant la fin du chargement.
+wao.ui.import.activityCalendarLabel=des calendriers d'activit\u00e9
+wao.ui.import.activityCalendarUserAccessesLabel=des acc\u00e8s utilisateurs aux calendriers d'activit\u00e9
+wao.ui.import.boatDistrictLabel=des coordonn\u00e9es des quartiers des navires
wao.ui.import.boatsLabel=des navires
wao.ui.import.description=Fichier %s %s \:
-wao.ui.import.fishingZoneLabel=des zones de pêches
+wao.ui.import.fishingZoneLabel=des zones de p\u00eaches
wao.ui.import.fullDescription=Import %s (format %s avec encodage UTF-8)
wao.ui.import.longTitle=Import/Export CSV (UTF-8)
-wao.ui.import.obsDebCodesLabel=des codes métiers ObsDeb
-wao.ui.import.samplingPlanLabel=du plan d'échantillonnage
-wao.ui.import.terrestrialDivisionsLabel=du référentiel de stratification spatiale (ObsDeb)
+wao.ui.import.obsDebCodesLabel=des codes m\u00e9tiers ObsDeb
+wao.ui.import.samplingPlanLabel=du plan d'\u00e9chantillonnage
+wao.ui.import.terrestrialDivisionsLabel=du r\u00e9f\u00e9rentiel de stratification spatiale (ObsDeb)
wao.ui.import.terrestrialLocationsLabel=des lieux terrestres
wao.ui.import.title=Import %s
wao.ui.indicator.andMore=%s et plus
wao.ui.indicator.bounds=Bornes
-wao.ui.indicator.coefficient=Pondération
+wao.ui.indicator.coefficient=Pond\u00e9ration
wao.ui.indicator.editions=Modifications
wao.ui.indicator.indicator=Indicateur
-wao.ui.indicator.legend=En jaune, la position actuelle de la société selon cet indicateur.
+wao.ui.indicator.legend=En jaune, la position actuelle de la soci\u00e9t\u00e9 selon cet indicateur.
wao.ui.indicator.levels=Niveaux
-wao.ui.indicator.useRightDecimalSymbol=Attention à bien utiliser ',' et non '.' pour les décimales
+wao.ui.indicator.useRightDecimalSymbol=Attention \u00e0 bien utiliser ',' et non '.' pour les d\u00e9cimales
wao.ui.indicators.coefficientsSum=Total coefficient
-wao.ui.indicators.title=Indicateurs qualités prestataires
+wao.ui.indicators.title=Indicateurs qualit\u00e9s prestataires
wao.ui.invalidLogin=Identifiant invalide
-wao.ui.layout.userDescription=Vous êtes %s de la société %s (%s)
+wao.ui.layout.userDescription=Vous \u00eates %s de la soci\u00e9t\u00e9 %s (%s)
wao.ui.message.chooseProfile=Choisissez dans la liste votre profil de connexion \:
-wao.ui.misc.METIER=MÉTIER
-wao.ui.misc.N/A=non renseignée
-wao.ui.misc.accepted=Accepté
-wao.ui.misc.advancedSearch=Recherche avancée
+wao.ui.misc.METIER=M\u00c9TIER
+wao.ui.misc.N/A=non renseign\u00e9e
+wao.ui.misc.accepted=Accept\u00e9
+wao.ui.misc.advancedSearch=Recherche avanc\u00e9e
wao.ui.misc.by=par
wao.ui.misc.changeOn=Modification du
wao.ui.misc.comment=Commentaire
-wao.ui.misc.commentAddedOn=Commentaire ajouté le
+wao.ui.misc.commentAddedOn=Commentaire ajout\u00e9 le
wao.ui.misc.comments=Commentaires
-wao.ui.misc.companies=Sociétés
-wao.ui.misc.createdOnF=Créée le
-wao.ui.misc.creating=En cours de création
+wao.ui.misc.companies=Soci\u00e9t\u00e9s
+wao.ui.misc.createdOnF=Cr\u00e9\u00e9e le
+wao.ui.misc.creating=En cours de cr\u00e9ation
wao.ui.misc.dayOfWeek=Jour
wao.ui.misc.export=Export
wao.ui.misc.export.longTitle=Export CSV
@@ -237,7 +237,7 @@
wao.ui.misc.logFile.description=Afficher le fichier de log de %s
wao.ui.misc.no=Non
wao.ui.misc.noComment=aucun commentaire
-wao.ui.misc.notValidated=Non validé
+wao.ui.misc.notValidated=Non valid\u00e9
wao.ui.misc.observationReport=Compte-rendu d'observation
wao.ui.misc.observations=Observations
wao.ui.misc.observer=Observateur
@@ -247,83 +247,84 @@
wao.ui.misc.other=Autre
wao.ui.misc.otherInfos=Autre information
wao.ui.misc.others=Autres
-wao.ui.misc.refused=Réfusé
+wao.ui.misc.refused=R\u00e9fus\u00e9
wao.ui.misc.since=depuis le
wao.ui.misc.total=Total
-wao.ui.misc.undefined=Non-défini
-wao.ui.misc.validated=Validé
+wao.ui.misc.undefined=Non-d\u00e9fini
+wao.ui.misc.validated=Valid\u00e9
wao.ui.misc.week=Semaine
-wao.ui.misc.year=Année
+wao.ui.misc.year=Ann\u00e9e
wao.ui.misc.yes=Oui
-wao.ui.nContactsFound=%s contacts trouvés
+wao.ui.nContactsFound=%s contacts trouv\u00e9s
wao.ui.news.content=Texte
wao.ui.news.title=Titre
wao.ui.page.Administration.title=Administration
wao.ui.page.Boats.title=Navires
wao.ui.page.Cartography.title=Cartographie
-wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises à des personnels extérieurs, soyez riguoureux dans la description de la capture accidentelle
+wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises \u00e0 des personnels ext\u00e9rieurs, soyez riguoureux dans la description de la capture accidentelle
wao.ui.page.ContactForm.title=Modification d'un contact
wao.ui.page.Contacts.title=Contacts
wao.ui.page.Index.title=Accueil
-wao.ui.page.SamplingPlan.title=Plan d'échantillonnage
-wao.ui.page.Synthesis.title=Synthèse
+wao.ui.page.SamplingPlan.title=Plan d'\u00e9chantillonnage
+wao.ui.page.Synthesis.title=Synth\u00e8se
wao.ui.page.UserProfileForm.title=Gestion du profil
-wao.ui.publishedByProgram=Publiée par le programme
-wao.ui.publishedByYourCompany=Publiée par la société
-wao.ui.sampleRow.creation=Création d'une ligne du plan d'échantillonnage
+wao.ui.publishedByProgram=Publi\u00e9e par le programme
+wao.ui.publishedByYourCompany=Publi\u00e9e par la soci\u00e9t\u00e9
+wao.ui.sampleRow.creation=Cr\u00e9ation d'une ligne du plan d'\u00e9chantillonnage
wao.ui.sampleRow.edition=Modification de la ligne %s
wao.ui.sampleRowLog.title=Historique de la ligne %s
+wao.ui.samplingPlan.Actual=R\u00e9alis\u00e9
wao.ui.samplingPlan.actions=Actions
-wao.ui.samplingPlan.actual=réalisé
-wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'échantillonnage
-wao.ui.samplingPlan.averageTideTime=Durée moyenne d'une marée (J.)
-wao.ui.samplingPlan.effort=Effort d'observation en nombre de marées
-wao.ui.samplingPlan.estimated=estimé
-wao.ui.samplingPlan.expected=planifié
-wao.ui.samplingPlan.export=Exporter le plan d'échantillonnage du %s au %s
-wao.ui.samplingPlan.fieldWork.see=Voir le plan d'échantillonnage de terrain
-wao.ui.samplingPlan.fieldWork.title=Plan d'échantillonnage de terrain
+wao.ui.samplingPlan.actual=r\u00e9alis\u00e9
+wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'\u00e9chantillonnage
+wao.ui.samplingPlan.averageTideTime=Dur\u00e9e moyenne d'une mar\u00e9e (J.)
+wao.ui.samplingPlan.effort=Effort d'observation en nombre de mar\u00e9es
+wao.ui.samplingPlan.estimated=estim\u00e9
+wao.ui.samplingPlan.expected=planifi\u00e9
+wao.ui.samplingPlan.export=Exporter le plan d'\u00e9chantillonnage du %s au %s
+wao.ui.samplingPlan.fieldWork.see=Voir le plan d'\u00e9chantillonnage de terrain
+wao.ui.samplingPlan.fieldWork.title=Plan d'\u00e9chantillonnage de terrain
wao.ui.samplingPlan.fishingZoneInfo=Zone autre(s) info(s)
wao.ui.samplingPlan.months=Mois
wao.ui.samplingPlan.nbObservants=Nb. d'observateurs
-wao.ui.samplingPlan.phoneCall.see=Voir le plan d'échantillonnage téléphonique
-wao.ui.samplingPlan.phoneCall.title=Plan d'échantillonnage téléphonique
-wao.ui.samplingPlan.program=Programme ou règlement rattachement
-wao.ui.samplingPlan.sampledProfessions=Métiers échantillonnés
-wao.ui.samplingPlan.showActual=Afficher l'effort d'observations réalisé pour les contacts validés seulement
-wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estimé pour les contacts validés ou non par la société
-wao.ui.samplingPlan.title=Plan d'échantillonnage
-wao.ui.synthesis.allegroReactivity.description=Ce résultat est une moyenne du nombre de jours entre la date de saisie des données et la date de fin d'observation.
-wao.ui.synthesis.allegroReactivity.title=Réactivité quant à la saisie des données
+wao.ui.samplingPlan.phoneCall.see=Voir le plan d'\u00e9chantillonnage t\u00e9l\u00e9phonique
+wao.ui.samplingPlan.phoneCall.title=Plan d'\u00e9chantillonnage t\u00e9l\u00e9phonique
+wao.ui.samplingPlan.program=Programme ou r\u00e8glement rattachement
+wao.ui.samplingPlan.sampledProfessions=M\u00e9tiers \u00e9chantillonn\u00e9s
+wao.ui.samplingPlan.showActual=Afficher l'effort d'observations r\u00e9alis\u00e9 pour les contacts valid\u00e9s seulement
+wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estim\u00e9 pour les contacts valid\u00e9s ou non par la soci\u00e9t\u00e9
+wao.ui.samplingPlan.title=Plan d'\u00e9chantillonnage
+wao.ui.synthesis.allegroReactivity.description=Ce r\u00e9sultat est une moyenne du nombre de jours entre la date de saisie des donn\u00e9es et la date de fin d'observation.
+wao.ui.synthesis.allegroReactivity.title=R\u00e9activit\u00e9 quant \u00e0 la saisie des donn\u00e9es
wao.ui.synthesis.boarding.boardingCount=Au total, %s observations invalides sur %s observations.
-wao.ui.synthesis.boarding.description=Ces résultats ne concernent que les lignes du plan d'échantillonnage ayant une durée moyenne de marées inférieure ou égale à 48h.
-wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicité avec %s observations (tous programmes confondus) \: %s (%s)
+wao.ui.synthesis.boarding.description=Ces r\u00e9sultats ne concernent que les lignes du plan d'\u00e9chantillonnage ayant une dur\u00e9e moyenne de mar\u00e9es inf\u00e9rieure ou \u00e9gale \u00e0 48h.
+wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicit\u00e9 avec %s observations (tous programmes confondus) \: %s (%s)
wao.ui.synthesis.boarding.title=Sollicitations des navires
-wao.ui.synthesis.complianceBoarding.description=Respect du nombre prévu d'observateurs pour chaque marée réalisée.
-wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqués
-wao.ui.synthesis.contactsStates.description=Ces résultats concernent l'ensemble des états des contacts excepté ceux qui ont été refusés par le programme.
-wao.ui.synthesis.contactsStates.title=États des contacts
-wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de marées exploitables par rapport nombre de marée réalisées.
-wao.ui.synthesis.dataReliability.title=Qualité de la donnée
-wao.ui.synthesis.dataSampling.title=Données des marées (réalisé / planifié)
+wao.ui.synthesis.complianceBoarding.description=Respect du nombre pr\u00e9vu d'observateurs pour chaque mar\u00e9e r\u00e9alis\u00e9e.
+wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqu\u00e9s
+wao.ui.synthesis.contactsStates.description=Ces r\u00e9sultats concernent l'ensemble des \u00e9tats des contacts except\u00e9 ceux qui ont \u00e9t\u00e9 refus\u00e9s par le programme.
+wao.ui.synthesis.contactsStates.title=\u00c9tats des contacts
+wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de mar\u00e9es exploitables par rapport nombre de mar\u00e9e r\u00e9alis\u00e9es.
+wao.ui.synthesis.dataReliability.title=Qualit\u00e9 de la donn\u00e9e
+wao.ui.synthesis.dataSampling.title=Donn\u00e9es des mar\u00e9es (r\u00e9alis\u00e9 / planifi\u00e9)
wao.ui.synthesis.distinctBoatsCounts.axisName=Nombre de navires distincts
-wao.ui.synthesis.distinctBoatsCounts.categoryName=Mois de l'année
-wao.ui.synthesis.distinctBoatsCounts.description=Nombre de navires distincts observés selon le mois de l'année
-wao.ui.synthesis.distinctBoatsCounts.title=Nombre de navires observés
-wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synthèse global
-wao.ui.synthesis.globalSynthesis.title=Synthèse globale
-wao.ui.synthesis.globalSynthesis.title.estimated=Synthèse globale (selon estimations)
-wao.ui.synthesis.log.description=Cette page présente toutes les modifications effectuées depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs.
-wao.ui.synthesis.log.empty=Aucune modification n'a été apportée à ce jour
+wao.ui.synthesis.distinctBoatsCounts.categoryName=Mois de l'ann\u00e9e
+wao.ui.synthesis.distinctBoatsCounts.description=Nombre de navires distincts observ\u00e9s selon le mois de l'ann\u00e9e
+wao.ui.synthesis.distinctBoatsCounts.title=Nombre de navires observ\u00e9s
+wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synth\u00e8se global
+wao.ui.synthesis.globalSynthesis.title=Synth\u00e8se globale
+wao.ui.synthesis.globalSynthesis.title.estimated=Synth\u00e8se globale (selon estimations)
+wao.ui.synthesis.log.description=Cette page pr\u00e9sente toutes les modifications effectu\u00e9es depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs.
+wao.ui.synthesis.log.empty=Aucune modification n'a \u00e9t\u00e9 apport\u00e9e \u00e0 ce jour
wao.ui.synthesis.log.entry.author=Auteur de la modification
-wao.ui.synthesis.log.entry.comment=Commentaire associé
+wao.ui.synthesis.log.entry.comment=Commentaire associ\u00e9
wao.ui.synthesis.log.entry.date=Date de la modification
-wao.ui.synthesis.log.entry.summary=Modifications effectuées
-wao.ui.synthesis.log.title=Historique des modifications des paramètres de la synthèse globale
+wao.ui.synthesis.log.entry.summary=Modifications effectu\u00e9es
+wao.ui.synthesis.log.title=Historique des modifications des param\u00e8tres de la synth\u00e8se globale
wao.ui.synthesis.observationHours.axisName=Nombre d'observations
-wao.ui.synthesis.observationHours.categoryName=Heures de la journée
-wao.ui.synthesis.observationHours.description=Nombre d'observations effectuée selon l'heure d'arrivée
-wao.ui.synthesis.observationHours.title=Distribution des périodes d'observation
-wao.ui.unavailableOperation=Opération non-disponible
+wao.ui.synthesis.observationHours.categoryName=Heures de la journ\u00e9e
+wao.ui.synthesis.observationHours.description=Nombre d'observations effectu\u00e9e selon l'heure d'arriv\u00e9e
+wao.ui.synthesis.observationHours.title=Distribution des p\u00e9riodes d'observation
+wao.ui.unavailableOperation=Op\u00e9ration non-disponible
wao.ui.userList=Liste des utilisateurs
wao.ui.validLogin=Identifiant valide
Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-06-03 12:42:45 UTC (rev 1313)
@@ -49,7 +49,10 @@
</li>
<t:unless test="connectedUser.observer">
<li>
- <a t:type="pagelink" t:page="sampleRowForm" title="${message:wao.ui.samplingPlan.addSampleRow}">
+ <a t:type="pagelink"
+ t:page="sampleRowForm"
+ t:context="contextForNewSampleRow"
+ title="${message:wao.ui.samplingPlan.addSampleRow}">
${message:wao.ui.samplingPlan.addSampleRow}
</a>
</li>
@@ -166,7 +169,7 @@
<!-- actual -->
<p:actualHeader>
- ${message:wao.ui.samplingPlan.actual}
+ ${message:wao.ui.samplingPlan.Actual}
</p:actualHeader>
<!-- comment -->
@@ -183,7 +186,7 @@
<img src="${asset:context:}/img/clock-22px.png" alt="${format:wao.ui.sampleRowLog.title=sampleRow.code}" />
</a>
<t:if t:test="canEditSampleRow()">
- <a t:type="pagelink" t:page="sampleRowForm" t:context="sampleRow.topiaId" title="${message:wao.ui.action.edit}" >
+ <a t:type="pagelink" t:page="sampleRowForm" t:context="contextForEditingSampleRow" title="${message:wao.ui.action.edit}" >
<img src="${asset:context:}/img/edit.png" alt="${message:wao.ui.action.edit}" />
</a>
<a t:type="actionlink" t:id="deleteSampleRow" t:context="sampleRow.topiaId" title="${message:wao.ui.action.deleteSampleRow}"
Modified: trunk/wao-ui/src/main/webapp/SampleRowForm.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-06-03 11:47:20 UTC (rev 1312)
+++ trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-06-03 12:42:45 UTC (rev 1313)
@@ -76,12 +76,14 @@
t:validate="required" />
</div>
<t:if test="sampleRow.phoneCall">
- <label for="boat">${message:wao.ui.field.SampleRow.boat}</label>
- <t:topiaEntitySelector t:id="boat"
- t:clazzName="Boat"
- t:labelPropertyName="description"
- t:values="boats"
- t:selectedValue="sampleRow.boat" />
+ <div class="t-beaneditor-row">
+ <label for="boat">${message:wao.ui.field.SampleRow.boat}</label>
+ <t:topiaEntitySelector t:id="boat"
+ t:clazzName="Boat"
+ t:labelPropertyName="description"
+ t:values="boats"
+ t:selectedValue="sampleRow.boat" />
+ </div>
</t:if>
<t:if test="sampleRow.fieldWorkObservation">
<div class="t-beaneditor-row">
@@ -90,7 +92,8 @@
t:clazzName="TerrestrialDivision"
t:labelPropertyName="description"
t:values="observationUnits"
- t:selectedValue="sampleRow.observationUnit" />
+ t:selectedValue="sampleRow.observationUnit"
+ style="max-width: 400px;" />
</div>
</t:if>
</fieldset>
Added: trunk/wao-ui/src/test/java/fr/ifremer/wao/ui/data/WaoActivationContextTest.java
===================================================================
--- trunk/wao-ui/src/test/java/fr/ifremer/wao/ui/data/WaoActivationContextTest.java (rev 0)
+++ trunk/wao-ui/src/test/java/fr/ifremer/wao/ui/data/WaoActivationContextTest.java 2011-06-03 12:42:45 UTC (rev 1313)
@@ -0,0 +1,21 @@
+package fr.ifremer.wao.ui.data;
+
+import fr.ifremer.wao.bean.ObservationType;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+public class WaoActivationContextTest {
+
+ @Test
+ public void testToStrings() {
+ WaoActivationContext waoActivationContext = new WaoActivationContext();
+ waoActivationContext.setSampleRowCode("2010_023");
+ waoActivationContext.setObservationType(ObservationType.PHONE_CALL);
+ String[] strings = waoActivationContext.toStrings();
+ Assert.assertEquals("[observationTypeName, PHONE_CALL, sampleRowCode, 2010_023]",
+ Arrays.toString(strings));
+ }
+
+}
1
0
Author: bleny
Date: 2011-06-03 11:47:20 +0000 (Fri, 03 Jun 2011)
New Revision: 1312
Log:
update h2 to last minor version
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-06-03 08:14:39 UTC (rev 1311)
+++ trunk/pom.xml 2011-06-03 11:47:20 UTC (rev 1312)
@@ -208,7 +208,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.3.154</version>
+ <version>1.3.155</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
1
0
[Suiviobsmer-commits] r1311 - trunk/wao-business/src/main/resources/i18n
by bleny@users.labs.libre-entreprise.org 03 Jun '11
by bleny@users.labs.libre-entreprise.org 03 Jun '11
03 Jun '11
Author: bleny
Date: 2011-06-03 08:14:39 +0000 (Fri, 03 Jun 2011)
New Revision: 1311
Log:
add missing i18n value
Modified:
trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties
trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties
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 2011-06-01 15:38:03 UTC (rev 1310)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-06-03 08:14:39 UTC (rev 1311)
@@ -281,3 +281,4 @@
wao.import.failure.wrongObsDebCode=There is no profession code having code '%s'
wao.import.failure.wrongUser=There is no user with login '%s'
wao.validation.sampleRow.conflictOnObserver=Observer %s cannot be associated to the line %s because he has to observer, on the same day, for row %s
+wao.validation.sampleRow.observerNotInCompany=Observer %s doesn't work for company %s
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 2011-06-01 15:38:03 UTC (rev 1310)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-06-03 08:14:39 UTC (rev 1311)
@@ -1,179 +1,179 @@
ContactPieChartConstant.OTHER=Autres
-ContactPieChartConstant.REALIZED=Réalisés
-ContactPieChartConstant.REFUSED=Refusés
-ContactState.CONTACT_DEFINITELY_REFUSED=Refus définitif
+ContactPieChartConstant.REALIZED=R\u00e9alis\u00e9s
+ContactPieChartConstant.REFUSED=Refus\u00e9s
+ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00e9finitif
ContactState.CONTACT_REFUSED=Refus
ContactState.CONTACT_START=Contact pris
-ContactState.OBSERVATION_CANCELLED=Annulée
-ContactState.OBSERVATION_DONE=Observation réalisée
-ContactState.OBSERVATION_EXPECTED=Observation programmée
-ContactState.OBSERVATION_NOT_DONE=Non observé
-DataReliability.CORRECTION_ASKED=Correction demandée
+ContactState.OBSERVATION_CANCELLED=Annul\u00e9e
+ContactState.OBSERVATION_DONE=Observation r\u00e9alis\u00e9e
+ContactState.OBSERVATION_EXPECTED=Observation programm\u00e9e
+ContactState.OBSERVATION_NOT_DONE=Non observ\u00e9
+DataReliability.CORRECTION_ASKED=Correction demand\u00e9e
DataReliability.DOUBTFUL=Douteuse
-DataReliability.NOT_PROVIDED=Non contrôlée
+DataReliability.NOT_PROVIDED=Non contr\u00f4l\u00e9e
DataReliability.NOT_RELIABLE=Non exploitable
DataReliability.RELIABLE=Exploitable
DataReliability.UNKNOWN=Inconnue
-GlobalIndicatorValue.BAD=Pénalité de niveau 1
+GlobalIndicatorValue.BAD=P\u00e9nalit\u00e9 de niveau 1
GlobalIndicatorValue.GOOD=Bonus de niveau 1
GlobalIndicatorValue.NEUTRAL=Conforme au cahier des charges
-GlobalIndicatorValue.VERY_BAD=Pénalité de niveau 2
+GlobalIndicatorValue.VERY_BAD=P\u00e9nalit\u00e9 de niveau 2
GlobalIndicatorValue.VERY_GOOD=Bonus de niveau 2
-LocationType.AUCTION=Criée
+LocationType.AUCTION=Cri\u00e9e
LocationType.DISTRICT=Quartier maritime
LocationType.PORT=Port
-LocationType.REGION=Région Ifremer
+LocationType.REGION=R\u00e9gion Ifremer
ObsProgram.OBSDEB=ObsDeb
ObsProgram.OBSMER=ObsMer
ObsProgram.OBSVENTE=ObsVente
ObservationType.FIELD_WORK_OBSERVATION=Observation de terrain
-ObservationType.FIELD_WORK_SURVEY=Enquête de terrain
-ObservationType.PHONE_CALL=Enquête téléphonique
-SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultané \: Toutes espèces commerciales
-SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultané \: espèces G1+G2
-SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultané \: espèces G1
-SamplingStrategy.SPECIFIC_STOCK=Stock spécifique
-SynthesisId.DISTINCT_BOATS_COUNTS=Nombres de navires distincts observés
-SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un même navire conforme aux exigences
-SynthesisId.GRAPH_SAMPLING=Taux de réalisation du plan d'échantillonage
-SynthesisId.IND_ALLEGRO_REACTIVITY=Délais de transmission des données
-SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqués
-SynthesisId.IND_CONTACT_STATE=États des contacts
-SynthesisId.IND_DATA_RELIABILITY=Qualité de la donnée
-SynthesisId.OBSERVATION_HOUR=Heures d'observation dans la journée
+ObservationType.FIELD_WORK_SURVEY=Enqu\u00eate de terrain
+ObservationType.PHONE_CALL=Enqu\u00eate t\u00e9l\u00e9phonique
+SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultan\u00e9 \: Toutes esp\u00e8ces commerciales
+SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1+G2
+SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1
+SamplingStrategy.SPECIFIC_STOCK=Stock sp\u00e9cifique
+SynthesisId.DISTINCT_BOATS_COUNTS=Nombres de navires distincts observ\u00e9s
+SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un m\u00eame navire conforme aux exigences
+SynthesisId.GRAPH_SAMPLING=Taux de r\u00e9alisation du plan d'\u00e9chantillonage
+SynthesisId.IND_ALLEGRO_REACTIVITY=D\u00e9lais de transmission des donn\u00e9es
+SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqu\u00e9s
+SynthesisId.IND_CONTACT_STATE=\u00c9tats des contacts
+SynthesisId.IND_DATA_RELIABILITY=Qualit\u00e9 de la donn\u00e9e
+SynthesisId.OBSERVATION_HOUR=Heures d'observation dans la journ\u00e9e
UserRole.ADMIN=Administrateur
UserRole.COORDINATOR=Coordinateur
-UserRole.GUEST=Invité
+UserRole.GUEST=Invit\u00e9
UserRole.OBSERVER=Observateur
UserRole.PROFESSIONAL=Professionnel
csv.import.error.missingMandatoryHeaders=Les champs obligatoires %s sont manquants
-csv.import.error.unableToParseValue=Erreur lors de l'interprétation de la valeur '%s' (colonne '%s', ligne %s)
-csv.import.error.unableToReadField=Impossible de lire la colonne '%s' à la ligne %s
+csv.import.error.unableToParseValue=Erreur lors de l'interpr\u00e9tation de la valeur '%s' (colonne '%s', ligne %s)
+csv.import.error.unableToReadField=Impossible de lire la colonne '%s' \u00e0 la ligne %s
csv.import.error.unableToReadLine=Impossible de lire la ligne %s
-csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entité '%s', ligne %s, column '%s')
+csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entit\u00e9 '%s', ligne %s, column '%s')
csv.import.error.unrecognizedHeaders=Les champs %s ne sont pas reconnus. Les champs possibles sont %s.
csv.import.logComment=Modification depuis import
-fr.ifremer.wao.entity.FishingGearDCF.=Non spécifié
-fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorquées par bateau
-fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues à main
-fr.ifremer.wao.entity.FishingGearDCF.FAR=Pièges aériens
-fr.ifremer.wao.entity.FishingGearDCF.FCN=Éperviers
-fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-spécifiés)
-fr.ifremer.wao.entity.FishingGearDCF.FIX=Pièges (non-spécifiés)
-fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pièges 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 à l'étalage (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élants (non spécifiés)
-fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis à civelles
-fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non spécifiés)
+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érivants (filets dérivants)
+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és (ancrés)
-fr.ifremer.wao.entity.FishingGearDCF.GT=Trémailleurs
-fr.ifremer.wao.entity.FishingGearDCF.GTN=Trémails et filets maillants combinés
-fr.ifremer.wao.entity.FishingGearDCF.GTR=Trémails
+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écanisées
+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écolte (non spécifiés)
+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 à main et lignes avec cannes
-fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes à main et lignes à cannes
-fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non spécifiées)
-fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres dérivantes
-fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres calées ou semi-flottantes
-fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulevés (non spécifiés)
-fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulevés manœuvrées du bateau
-fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulevés portatifs
-fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulevés fixes manœuvrées du rivage
-fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de traîne
-fr.ifremer.wao.entity.FishingGearDCF.LX=Hameçons et lignes (non spécifiés)
+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écifiés
-fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts à panneaux (non spécifié)
-fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond à panneaux
-fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts pélagiques à panneaux
-fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux à 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œuvrées par un bateau
-fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes manœuvrées par deux bateaux
-fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-bœufs (non spécifié)
-fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-bœufs de fond
-fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-bœufs pélagiques
-fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de pêche révréative
+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.SB=Sennes de plages
fr.ifremer.wao.entity.FishingGearDCF.SDN=Sennes danoises
-fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes manœuvrées par deux bateaux
-fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes écossaises
-fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes halées à bord
-fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non spécifiées)
-fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non spécifié)
-fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts à perche
-fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut à langoustines
-fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut à crevettes
-fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut pélagique (non spécifié)
-fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut à crevettes
-fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non spécifié)
-fr.ifremer.wao.entity.TargetSpeciesDCF.=Non spécifié
+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èces catadromes
-fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustacés
+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èces démersales
-fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Espèces 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élagiques
+fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00e9lagiques
fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques
-fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits pélagiques
-wao.business.boat.validation.immatriculation.wrongFormat=L'immatriculation du navire doit être formée de 6 chiffres
-wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut préciser dans le commentaire administrateur pourquoi la donnée est '%s'
-wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut préciser la qualité de la donnée avant de valider
+fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00e9lagiques
+wao.business.boat.validation.immatriculation.wrongFormat=L'immatriculation du navire doit \u00eatre form\u00e9e de 6 chiffres
+wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut pr\u00e9ciser dans le commentaire administrateur pourquoi la donn\u00e9e est '%s'
+wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut pr\u00e9ciser la qualit\u00e9 de la donn\u00e9e avant de valider
wao.business.entity.UserProfile.description=%s sur %s%s
-wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseigné dans WAO l'information suivante \:\n\nMarée \: %s\nMétier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao
+wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseign\u00e9 dans WAO l'information suivante \:\n\nMar\u00e9e \: %s\nM\u00e9tier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao
wao.business.mammalsCapture.mail.subject=Obsmer WAO\: Information sur capture accidentelle
wao.business.other=Autre
wao.business.readOnly=(lecture seule)
-wao.error.boat.canCreateContact=Impossible de créer un nouveau contact pour la société %1$s et le navire %2$s (%3$d)
-wao.error.boat.getNbBoarding=Impossible de récupérer le nombre d'embarquements réels depuis le %1$s
-wao.error.boatInfos.getNbBoardingForCompany=Impossible de récupérer le nombre d'embarquements réels depuis le %1$s pour la société %2$s
+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écupération 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émarrage 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ées réels pour le mois de %1$s [ligne \: %2$s]
-wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire écrit par %1$s
-wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de créer ou modifier les informations liés au navire %1$d pour la société %2$s
-wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires sélectionnés
+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.getAllActiveBoats=
wao.error.serviceBoat.getBoat=Impossible de charger le navire
-wao.error.serviceBoat.getBoatNamesStartWith=Impossible de récupérer 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îne d'immatriculations est incorrect \! Chaque immatriculation doit posséder 6 chiffres
-wao.error.serviceBoat.getCompanyBoatInfos=Impossible de récupérer les informations du navire immatriculé %1$d pour la société %2$s
-wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activité 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.getPossibleValuesForFilter=
wao.error.serviceBoat.getShipOwnerNamesContains=
-wao.error.serviceBoat.importActivityCalendarCsv=Problème d'import du fichier CSV des calendriers d'activité
-wao.error.serviceBoat.importBoatCsv=Problème d'import du fichier CSV. Vérifiez l'en-tête du fichier.
+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.
wao.error.serviceBoat.newBoatFilter=
wao.error.serviceCartography.exportContactMotifsStatisticsKml=
wao.error.serviceCartography.exportContactStatisticsKml=
-wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonnées des quartiers des navires. Vérifiez 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és
+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.getPossibleObsDebCodes=
wao.error.serviceContact.getPossibleValuesForFilter=
@@ -187,7 +187,7 @@
wao.error.serviceContact.updateSampleMonthTidesValue=
wao.error.serviceContact.validateContact=
wao.error.serviceNews.getNewNews=
-wao.error.serviceNews.getNews=Impossible de récupérer 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.getAllContactStateMotifs=
wao.error.serviceReferential.getAllObsDebCodes=
@@ -197,13 +197,13 @@
wao.error.serviceReferential.getAllTerrestrialLocations=
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êche
-wao.error.serviceReferential.getProfessions=Impossible de charger la liste des métiers
-wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de pêche
+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.getTerrestrialDistrict=
wao.error.serviceReferential.importContactStateMotifs=
-wao.error.serviceReferential.importDCFcodes=Impossible de créer le référentiel des codes DCF
-wao.error.serviceReferential.importFishingZoneCsv=Problème d'import du fichier CSV. Vérifiez l'en-tête du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de détails.
+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.importInitialContactStateMotifs=
wao.error.serviceReferential.importObsDebCodes=
wao.error.serviceReferential.importTerrestrialDivisions=
@@ -212,72 +212,73 @@
wao.error.serviceReferential.updateAllContactStatesMotifs=
wao.error.serviceSampling.countSampleRows=
wao.error.serviceSampling.createSampleRowLog=
-wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'échantillon
-wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'échantillon \: %1$s
-wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'échantillonnage sur la période 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.exportSamplingPlanICalendar=
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écupérer un nouveau code pour une ligne d'échantillonnage
+wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00e9cup\u00e9rer un nouveau code pour une ligne d'\u00e9chantillonnage
wao.error.serviceSampling.getNewSampleRowLog=
wao.error.serviceSampling.getPossibleValuesForFilter=
wao.error.serviceSampling.getPrograms=Impossible de charger la liste des programmes
-wao.error.serviceSampling.getSampleRow=Impossible de charger la ligne d'échantillon ayant pour identifiant \: %1$s
-wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'échantillon ayant pour code %1$s
-wao.error.serviceSampling.getSampleRowsByFilter=Impossible de récupérer la liste des lignes du plan d'échantillonnage
+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.getSampleRowsForEligibility=
-wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de récupérer la liste des lignes du plan d'échantillonnage
+wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage
wao.error.serviceSampling.importSamplingPlanCsv=Erreur lors de l'import du plan
wao.error.serviceSampling.newOperation=
wao.error.serviceSampling.newSampleRow=
wao.error.serviceSampling.newSamplingFilter=
wao.error.serviceSampling.validateSampleRow=
wao.error.serviceSynthesis.getAllIndicatorLogs=
-wao.error.serviceSynthesis.getBoardingBoats=Impossible de récupérer les données 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.getBoatsCount=
wao.error.serviceSynthesis.getComplianceBoardingIndicator=
-wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de récupérer l'indicateur de réactivité 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.getContactStateMotifsPieChartDataByBoatDistrict=
-wao.error.serviceSynthesis.getContactStateStatistics=Impossible de récupérer les statistiques sur les états 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écupérer les données pour le graphique dynamique des efforts de marées
+wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es pour le graphique dynamique des efforts de mar\u00e9es
wao.error.serviceSynthesis.getDistinctBoatsCounts=
-wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de récupérer les données concernant les indicateurs pour la synthèse globale
+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écupérer l'indicateur de non respect du nombre d'observateurs embarqués
+wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de r\u00e9cup\u00e9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00e9s
wao.error.serviceSynthesis.getObservationHours=
-wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre à jour les paramètres de la synthèse globale
+wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00e0 jour les param\u00e8tres de la synth\u00e8se globale
wao.error.serviceUser.addTokensToAllProfiles=
wao.error.serviceUser.connect=Une erreur est survenue lors de la demande de connexion
-wao.error.serviceUser.createDefaultAdmin=Impossible de créer l'administrateur par défaut
-wao.error.serviceUser.createUpdateCompany=Impossible de créer ou de mettre à jour la société
-wao.error.serviceUser.createUpdateUser=Impossible de créer ou de mettre à jour l'utilisateur
-wao.error.serviceUser.deleteCompany=Impossible de supprimer la société ou de vérifier 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écupérer la liste des sociétés
+wao.error.serviceUser.getCompanies=Impossible de r\u00e9cup\u00e9rer la liste des soci\u00e9t\u00e9s
wao.error.serviceUser.getCompany=
wao.error.serviceUser.getConnectedUserByToken=
wao.error.serviceUser.getNewUser=Impossible d'instancier un nouvel utilisateur
-wao.error.serviceUser.getObservers=Impossible de récupérer la liste des observateurs
+wao.error.serviceUser.getObservers=Impossible de r\u00e9cup\u00e9rer la liste des observateurs
wao.error.serviceUser.getUserByToken=
wao.error.serviceUser.getUserRolesByLogin=
-wao.error.serviceUser.getUsersByCompany=Impossible de récupérer la liste des utilisateurs de la société %1$s
+wao.error.serviceUser.getUsersByCompany=Impossible de r\u00e9cup\u00e9rer la liste des utilisateurs de la soci\u00e9t\u00e9 %1$s
wao.export.ical.desc=avec %s
wao.export.ical.title=Observation ObsDeb
-wao.import.contact.failure.boatMissing=Il faut préciser l'immatriculation du navire associé au contact
-wao.import.contact.failure.locationTypeMissing=Le type du lieu doit être renseigné
-wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associée
+wao.import.contact.failure.boatMissing=Il faut pr\u00e9ciser l'immatriculation du navire associ\u00e9 au contact
+wao.import.contact.failure.locationTypeMissing=Le type du lieu doit \u00eatre renseign\u00e9
+wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associ\u00e9e
wao.import.contact.failure.terrestrialLocationMissing=Il manque le code du lieu
wao.import.contact.failure.wrongBoat=Il n'y a pas de navire avec l'immatriculation '%s'
wao.import.contact.failure.wrongSampleRowCode=Il n'y a pas de ligne du plan avec le code '%s'
wao.import.contact.failure.wrongTerrestrialLocation=Il n'y a pas de lieu de type '%s' ayant pour code '%s'
-wao.import.failure.wrongObsDebCode=Il n'y a pas de code métier ayant pour code '%s'
+wao.import.failure.wrongObsDebCode=Il n'y a pas de code m\u00e9tier ayant pour code '%s'
wao.import.failure.wrongUser=Il n'y a pas d'utilisateur ayant pour identifiant '%s'
-wao.validation.sampleRow.conflictOnObserver=L'observateur %s ne peut être associé à la ligne %s car il doit observer, le même jour, pour la ligne %s
+wao.validation.sampleRow.conflictOnObserver=L'observateur %s ne peut \u00eatre associ\u00e9 \u00e0 la ligne %s car il doit observer, le m\u00eame jour, pour la ligne %s
+wao.validation.sampleRow.observerNotInCompany=L'observateur %s ne fait pas parti de la soci\u00e9t\u00e9 %s
1
0
[Suiviobsmer-commits] r1310 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/service wao-ui/src/main/java/fr/ifremer/wao/ui/components wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 01 Jun '11
by bleny@users.labs.libre-entreprise.org 01 Jun '11
01 Jun '11
Author: bleny
Date: 2011-06-01 15:38:03 +0000 (Wed, 01 Jun 2011)
New Revision: 1310
Log:
minor fixes for ObsDeb
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.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-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/RoadMap.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
trunk/wao-ui/src/main/webapp/SampleRowForm.tml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-06-01 13:16:32 UTC (rev 1309)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-06-01 15:38:03 UTC (rev 1310)
@@ -868,6 +868,15 @@
"topiaCreateDate TIMESTAMP WITHOUT TIME ZONE NOT NULL," +
"code CHARACTER VARYING(255)," +
"name TEXT);");
+ queries.add("CREATE TABLE ObsDebCode_Regions (" +
+ "obsDebCode character varying(255) NOT NULL," +
+ "regions character varying(255) NOT NULL," +
+ "CONSTRAINT obsDebCode_fkey FOREIGN KEY (obsDebCode) " +
+ "REFERENCES ObsDebCode (topiaid) MATCH SIMPLE " +
+ "ON UPDATE NO ACTION ON DELETE NO ACTION," +
+ "CONSTRAINT regions_fkey FOREIGN KEY (regions) " +
+ "REFERENCES TerrestrialLocation (topiaid) MATCH SIMPLE " +
+ "ON UPDATE NO ACTION ON DELETE NO ACTION);");
}
@Override
@@ -951,7 +960,7 @@
+ " ADD regionIfremer CHARACTER VARYING(255);");
queries.add("ALTER TABLE TerrestrialDivision"
+ " ADD CONSTRAINT regionIfremer_fkey"
- + " FOREIGN KEY (regionIfremer_fkey) "
+ + " FOREIGN KEY (regionIfremer) "
+ " REFERENCES TerrestrialLocation(topiaId);");
// // migrate from old column to new column
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 2011-06-01 13:16:32 UTC (rev 1309)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-06-01 15:38:03 UTC (rev 1310)
@@ -745,7 +745,18 @@
ObsDebCodeDAO obsDebCodeDAO = WaoDAOHelper.getObsDebCodeDAO(transaction);
// import terrestrial locations if base is empty
- if (terrestrialLocationDAO.count() == 0) {
+ boolean importTerrestrialLocations =
+ terrestrialLocationDAO.count() == 0;
+
+ // when switching to version 3.0, referential is imported but regions
+ // are missing so we must force re-import to create regions
+ if ( ! importTerrestrialLocations) {
+ List<TerrestrialLocation> regions = terrestrialLocationDAO.
+ findAllByLocationTypeOrdinal(LocationType.REGION.ordinal());
+ importTerrestrialLocations = regions.size() == 0;
+ }
+
+ if (importTerrestrialLocations) {
try {
input = getClass().getResourceAsStream("/terrestrialLocations.csv");
executeImportTerrestrialLocations(transaction, input);
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 2011-06-01 13:16:32 UTC (rev 1309)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-06-01 15:38:03 UTC (rev 1310)
@@ -1550,6 +1550,25 @@
if (ObsProgram.OBSDEB == sampleRow.getObsProgram()) {
+ if (sampleRow.getObservationType() == null) {
+ throw new NullPointerException();
+ }
+
+ // check that all observers belong to the company affected to
+ // the sample row
+ if (sampleRow.getObservers() != null && sampleRow.getCompany() != null) {
+ for (WaoUser observer : sampleRow.getObservers()) {
+ if ( ! observer.getCompany().equals(sampleRow.getCompany())) {
+ validationResult.setSuccess(false);
+ String message = WaoUtils.
+ _("wao.validation.sampleRow.observerNotInCompany",
+ observer.getFullName(),
+ sampleRow.getCompany().getName());
+ validationResult.setMessage(message);
+ }
+ }
+ }
+
if (sampleRow.getObservers() != null && sampleRow.getExpectedDate() != null) {
// let's find a conflict, is there another sample-row
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-06-01 13:16:32 UTC (rev 1309)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-06-01 15:38:03 UTC (rev 1310)
@@ -71,9 +71,6 @@
@Persist
private SamplingFilterValues possibleValuesForFilter;
- @Persist
- private boolean initFlag;
-
@Override
protected boolean isAvailableDataForFiltersOnly() {
return false;
@@ -98,19 +95,7 @@
@Override
public void resetFilter() {
- // Don't reset period in filters
- PeriodDates period = null;
- if (initFlag) {
- SamplingFilter filter = getFilter();
- period = (filter == null ? null : filter.getPeriod());
- } else {
- initFlag = true;
- }
setFilter(serviceSampling.newSamplingFilter(getUser()));
-
- if (period != null) {
- getFilter().setPeriod(period);
- }
}
@Override
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/RoadMap.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/RoadMap.java 2011-06-01 13:16:32 UTC (rev 1309)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/RoadMap.java 2011-06-01 15:38:03 UTC (rev 1310)
@@ -33,6 +33,8 @@
StreamResponse onActivate(Object... activationContext) throws IOException {
+ // FIXME 20110601 the method is called when action link is created, leading to an exception raise, code may be moved to another method
+
String tokenId = TapestryUtil.getFirstString(activationContext);
ConnectedUser connectedUser = serviceUser.getConnectedUserByToken(tokenId);
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 2011-06-01 13:16:32 UTC (rev 1309)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-06-01 15:38:03 UTC (rev 1310)
@@ -694,7 +694,10 @@
ValidationResult validationResult = serviceSampling.validateSampleRow(getSampleRow());
- if (StringUtils.isBlank(getSampleRowLog().getComment())) {
+ boolean commentLogIsExpected = ! isCreateMode();
+ boolean commentLogIsEmpty =
+ StringUtils.isBlank(getSampleRowLog().getComment());
+ if (commentLogIsExpected && commentLogIsEmpty) {
sampleRowForm.recordError(messages.get(n_("wao.ui.form.SampleRow.error.missingLogComment")));
}
Modified: trunk/wao-ui/src/main/webapp/SampleRowForm.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-06-01 13:16:32 UTC (rev 1309)
+++ trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-06-01 15:38:03 UTC (rev 1310)
@@ -56,10 +56,8 @@
t:selectedValue="sampleRow.company" />
</div>
</t:if>
- <div class="acenter">
+ <div class="t-beaneditor-row">
<label for="observers">${message:wao.ui.field.SampleRow.observers}</label>
- </div>
- <div class="acenter">
<t:topiaEntitySelector t:id="observers"
t:multiple="true"
t:clazzName="WaoUser"
@@ -73,8 +71,9 @@
<input t:type="datefield"
t:id="expectedDate"
t:format="${expectedDateFormat}"
- class="date"
- value="sampleRow.expectedDate" />
+ t:class="date"
+ t:value="sampleRow.expectedDate"
+ t:validate="required" />
</div>
<t:if test="sampleRow.phoneCall">
<label for="boat">${message:wao.ui.field.SampleRow.boat}</label>
@@ -85,10 +84,8 @@
t:selectedValue="sampleRow.boat" />
</t:if>
<t:if test="sampleRow.fieldWorkObservation">
- <div class="acenter">
+ <div class="t-beaneditor-row">
<label for="observationUnit">${message:wao.ui.field.SampleRow.observationUnit}</label>
- </div>
- <div class="acenter">
<t:topiaEntitySelector t:id="observationUnit"
t:clazzName="TerrestrialDivision"
t:labelPropertyName="description"
1
0
[Suiviobsmer-commits] r1309 - trunk/wao-business/src/main/java/fr/ifremer/wao/service
by bleny@users.labs.libre-entreprise.org 01 Jun '11
by bleny@users.labs.libre-entreprise.org 01 Jun '11
01 Jun '11
Author: bleny
Date: 2011-06-01 13:16:32 +0000 (Wed, 01 Jun 2011)
New Revision: 1309
Log:
fix NPE
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
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 2011-06-01 09:00:02 UTC (rev 1308)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2011-06-01 13:16:32 UTC (rev 1309)
@@ -173,24 +173,23 @@
if (contact != null) {
contact.getMainObserver();
contact.sizeSecondaryObservers();
- contact.getSampleRow().sizeSampleMonth();
+ SampleRow sampleRow = contact.getSampleRow();
+ sampleRow.sizeSampleMonth();
contact.getBoat().getName();
if (contact.getObsProgram() == ObsProgram.OBSVENTE) {
// load
- contact.getSampleRow().getTerrestrialLocation();
+ sampleRow.getTerrestrialLocation();
contact.getTerrestrialLocation();
}
if (contact.getObsProgram() == ObsProgram.OBSDEB) {
// load
- TerrestrialDivision observationUnit =
- contact.getSampleRow().getObservationUnit();
- if (observationUnit != null) {
- observationUnit.getRegionIfremer().getRegionIfremerCode();
+ if (sampleRow.isPhoneCall()) {
+ sampleRow.getTerrestrialLocation();
+ } else if (sampleRow.isFieldWorkObservation()) {
+ sampleRow.getObservationUnit().getRegionIfremer();
}
- contact.getSampleRow().getTerrestrialLocation().getRegionIfremerCode();
- contact.getTerrestrialLocation();
}
}
1
0
[Suiviobsmer-commits] r1308 - in trunk/wao-business/src/main: java/fr/ifremer/wao/service resources/i18n
by bleny@users.labs.libre-entreprise.org 01 Jun '11
by bleny@users.labs.libre-entreprise.org 01 Jun '11
01 Jun '11
Author: bleny
Date: 2011-06-01 09:00:02 +0000 (Wed, 01 Jun 2011)
New Revision: 1308
Log:
rename factory method
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.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
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 2011-05-31 15:58:46 UTC (rev 1307)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2011-06-01 09:00:02 UTC (rev 1308)
@@ -444,7 +444,7 @@
}
@Override
- protected Contact executeGetNewContact(TopiaContext transaction, ConnectedUser connectedUser,
+ protected Contact executeNewContact(TopiaContext transaction, ConnectedUser connectedUser,
SampleRow row, Boat boat) throws WaoBusinessException, TopiaException, EmailException {
ObsProgram obsProgram = row.getObsProgram();
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 2011-05-31 15:58:46 UTC (rev 1307)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-06-01 09:00:02 UTC (rev 1308)
@@ -179,6 +179,7 @@
wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.getSubstitutesForBoat=
wao.error.serviceContact.importContactCsv=
+wao.error.serviceContact.newContact=
wao.error.serviceContact.newContactFilter=
wao.error.serviceContact.saveComment=
wao.error.serviceContact.saveContact=
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 2011-05-31 15:58:46 UTC (rev 1307)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-06-01 09:00:02 UTC (rev 1308)
@@ -179,6 +179,7 @@
wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.getSubstitutesForBoat=
wao.error.serviceContact.importContactCsv=Impossible d'importer les contacts
+wao.error.serviceContact.newContact=
wao.error.serviceContact.newContactFilter=
wao.error.serviceContact.saveComment=
wao.error.serviceContact.saveContact=Impossible de sauvegarder le contact
1
0
31 May '11
Author: bleny
Date: 2011-05-31 15:58:46 +0000 (Tue, 31 May 2011)
New Revision: 1307
Log:
add regionalisation for ObsDebCodes in contacts
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionParserFormatter.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionsParser.java
Removed:
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ObsDebCodesImportModel.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.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/resources/obsDebCodes.csv
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebPhoneTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ObsDebCodesImportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ObsDebCodesImportModel.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ObsDebCodesImportModel.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -2,9 +2,11 @@
import fr.ifremer.wao.entity.ObsDebCode;
import fr.ifremer.wao.entity.ObsDebCodeImpl;
+import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.io.csv2.ImportModel;
import fr.ifremer.wao.io.csv2.ImportableColumn;
import fr.ifremer.wao.io.csv2.ModelBuilder;
+import fr.ifremer.wao.io.csv2.models.operations.RegionsParser;
import java.util.Collection;
import java.util.List;
@@ -13,6 +15,12 @@
protected ModelBuilder<ObsDebCode> modelBuilder;
+ protected RegionsParser regionsParser;
+
+ public ObsDebCodesImportModel(List<TerrestrialLocation> allRegions) {
+ regionsParser = new RegionsParser(allRegions);
+ }
+
@Override
public char getSeparator() {
return ';';
@@ -32,6 +40,9 @@
modelBuilder = new ModelBuilder<ObsDebCode>();
modelBuilder.newMandatoryColumn("CODE", ObsDebCode.PROPERTY_CODE);
modelBuilder.newMandatoryColumn("NOM", ObsDebCode.PROPERTY_NAME);
+ modelBuilder.newMandatoryColumn("REGIONS_IFREMER",
+ regionsParser,
+ ObsDebCode.PROPERTY_REGIONS);
}
@Override
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -39,7 +39,7 @@
import fr.ifremer.wao.io.csv2.ValueParserFormatter;
import fr.ifremer.wao.io.csv2.models.operations.BoatParserFormatter;
import fr.ifremer.wao.io.csv2.models.operations.CompanyParserFormatter;
-import fr.ifremer.wao.io.csv2.models.operations.RegionValueParserFormatter;
+import fr.ifremer.wao.io.csv2.models.operations.RegionParserFormatter;
import fr.ifremer.wao.io.csv2.models.operations.UsersParserFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -257,7 +257,7 @@
modelBuilder.newColumnForImportExport(
"REGION_IFREMER",
SampleRow.PROPERTY_TERRESTRIAL_LOCATION,
- new RegionValueParserFormatter(allRegions));
+ new RegionParserFormatter(allRegions));
modelBuilder.newColumnForImportExport(
"OBSERVATION_DATE",
SampleRow.PROPERTY_EXPECTED_DATE,
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -31,12 +31,11 @@
import fr.ifremer.wao.io.csv2.ModelBuilder;
import fr.ifremer.wao.io.csv2.ValueParser;
import fr.ifremer.wao.io.csv2.models.operations.PortParserFormatter;
-import fr.ifremer.wao.io.csv2.models.operations.RegionValueParserFormatter;
+import fr.ifremer.wao.io.csv2.models.operations.RegionParserFormatter;
import org.apache.commons.lang.StringUtils;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
public class TerrestrialDivisionImportModel implements ImportModel<TerrestrialDivision> {
@@ -87,7 +86,7 @@
TerrestrialDivision.PROPERTY_CODE);
modelBuilder.newMandatoryColumn(
"REGION_IFREMER_COD",
- new RegionValueParserFormatter(regions),
+ new RegionParserFormatter(regions),
TerrestrialDivision.PROPERTY_REGION_IFREMER);
modelBuilder.newIgnoredColumn("REGION_IFREMER_LIB");
modelBuilder.newMandatoryColumn("ZONE_COMPETENCE_COD", TerrestrialDivision.PROPERTY_SKILL_ZONE_CODE);
Copied: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionParserFormatter.java (from rev 1305, trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.java)
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionParserFormatter.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionParserFormatter.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -0,0 +1,45 @@
+package fr.ifremer.wao.io.csv2.models.operations;
+
+import fr.ifremer.wao.WaoUtils;
+import fr.ifremer.wao.entity.TerrestrialLocation;
+import fr.ifremer.wao.io.csv2.ValueParserFormatter;
+
+import java.text.ParseException;
+import java.util.List;
+import java.util.Map;
+
+public class RegionParserFormatter implements ValueParserFormatter<TerrestrialLocation> {
+
+ protected List<TerrestrialLocation> regions;
+
+ protected Map<String, TerrestrialLocation> indexedRegions;
+
+ public RegionParserFormatter(List<TerrestrialLocation> regions) {
+ this.regions = regions;
+ }
+
+ @Override
+ public String format(TerrestrialLocation terrestrialDivision) {
+ String value = "";
+ if (terrestrialDivision.getRegionIfremerCode() != null) {
+ value = terrestrialDivision.getRegionIfremerCode();
+ }
+ return value;
+ }
+
+ @Override
+ public TerrestrialLocation parse(String regionCode) throws ParseException {
+ if (indexedRegions == null) {
+ indexedRegions = WaoUtils.projectPropertyUnique(
+ regions, TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE);
+ }
+
+ TerrestrialLocation terrestrialLocation =
+ indexedRegions.get(regionCode.trim());
+ if (terrestrialLocation == null) {
+ throw new IllegalArgumentException("Le code '" + regionCode +
+ "' n'est pas un code de région valide");
+ }
+ return terrestrialLocation;
+ }
+}
Deleted: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionValueParserFormatter.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -1,45 +0,0 @@
-package fr.ifremer.wao.io.csv2.models.operations;
-
-import fr.ifremer.wao.WaoUtils;
-import fr.ifremer.wao.entity.TerrestrialLocation;
-import fr.ifremer.wao.io.csv2.ValueParserFormatter;
-
-import java.text.ParseException;
-import java.util.List;
-import java.util.Map;
-
-public class RegionValueParserFormatter implements ValueParserFormatter<TerrestrialLocation> {
-
- protected List<TerrestrialLocation> regions;
-
- protected Map<String, TerrestrialLocation> indexedRegions;
-
- public RegionValueParserFormatter(List<TerrestrialLocation> regions) {
- this.regions = regions;
- }
-
- @Override
- public String format(TerrestrialLocation terrestrialDivision) {
- String value = "";
- if (terrestrialDivision.getRegionIfremerCode() != null) {
- value = terrestrialDivision.getRegionIfremerCode();
- }
- return value;
- }
-
- @Override
- public TerrestrialLocation parse(String regionCode) throws ParseException {
- if (indexedRegions == null) {
- indexedRegions = WaoUtils.projectPropertyUnique(
- regions, TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE);
- }
-
- TerrestrialLocation terrestrialLocation =
- indexedRegions.get(regionCode.trim());
- if (terrestrialLocation == null) {
- throw new IllegalArgumentException("Le code '" + regionCode +
- "' n'est pas un code de région valide");
- }
- return terrestrialLocation;
- }
-}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionsParser.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionsParser.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionsParser.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -0,0 +1,44 @@
+package fr.ifremer.wao.io.csv2.models.operations;
+
+import fr.ifremer.wao.WaoUtils;
+import fr.ifremer.wao.entity.TerrestrialLocation;
+import fr.ifremer.wao.io.csv2.ValueParser;
+
+import java.text.ParseException;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+public class RegionsParser implements ValueParser<List<TerrestrialLocation>> {
+
+ protected List<TerrestrialLocation> regions;
+
+ protected Map<String, TerrestrialLocation> indexedRegions;
+
+ public RegionsParser(List<TerrestrialLocation> regions) {
+ this.regions = regions;
+ }
+
+ @Override
+ public List<TerrestrialLocation> parse(String value) throws ParseException {
+ if (indexedRegions == null) {
+ indexedRegions = WaoUtils.projectPropertyUnique(
+ regions, TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE);
+ }
+
+ String[] regionCodes = value.split(",");
+ List<TerrestrialLocation> regions = new LinkedList<TerrestrialLocation>();
+ for (String regionCode : regionCodes) {
+ if ( ! regionCode.isEmpty()) {
+ TerrestrialLocation region =
+ indexedRegions.get(regionCode.trim());
+ if (region == null) {
+ throw new IllegalArgumentException("Le code '" + regionCode +
+ "' n'est pas un code de région valide");
+ }
+ regions.add(region);
+ }
+ }
+ return regions;
+ }
+}
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 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -65,6 +65,7 @@
import fr.ifremer.wao.entity.SampleMonth;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowDAO;
+import fr.ifremer.wao.entity.TerrestrialDivision;
import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.entity.TerrestrialLocationDAO;
import fr.ifremer.wao.entity.WaoUser;
@@ -183,7 +184,12 @@
if (contact.getObsProgram() == ObsProgram.OBSDEB) {
// load
- contact.getSampleRow().getObservationUnit();
+ TerrestrialDivision observationUnit =
+ contact.getSampleRow().getObservationUnit();
+ if (observationUnit != null) {
+ observationUnit.getRegionIfremer().getRegionIfremerCode();
+ }
+ contact.getSampleRow().getTerrestrialLocation().getRegionIfremerCode();
contact.getTerrestrialLocation();
}
}
@@ -1426,4 +1432,30 @@
}
}
}
+
+ @Override
+ protected List<ObsDebCode> executeGetPossibleObsDebCodes(
+ TopiaContext transaction, Contact contact)
+ throws TopiaException {
+ // Set of possible codes for this contact depends on the region
+ // the contact was done, region is given in the sampling plan
+ TerrestrialLocation region;
+ SampleRow sampleRow = contact.getSampleRow();
+ if (sampleRow.isFieldWorkObservation()) {
+ region = sampleRow.getObservationUnit().getRegionIfremer();
+ } else {
+ region = sampleRow.getTerrestrialLocation();
+ }
+
+ ObsDebCodeDAO dao = WaoDAOHelper.getObsDebCodeDAO(transaction);
+ List<ObsDebCode> possibleObsDebCodes = dao.findAllContainsRegions(region);
+
+ if (log.isDebugEnabled()) {
+ log.debug("For contact " + contact.getTopiaId() + ", region is "
+ + region.getRegionIfremerCode() +
+ " and codes for this region are " + possibleObsDebCodes);
+ }
+
+ return possibleObsDebCodes;
+ }
}
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 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -653,9 +653,12 @@
Import<ObsDebCode> obsDebCodeImport = null;
ImportResults result = new ImportResultsImpl(); // will be returned
+ TerrestrialLocationDAO terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ List<TerrestrialLocation> allRegions = terrestrialLocationDAO.
+ findAllByLocationTypeOrdinal(LocationType.REGION.ordinal());
try {
ObsDebCodeDAO dao = WaoDAOHelper.getObsDebCodeDAO(transaction);
- ImportModel<ObsDebCode> model = new ObsDebCodesImportModel();
+ ImportModel<ObsDebCode> model = new ObsDebCodesImportModel(allRegions);
obsDebCodeImport = new Import<ObsDebCode>(model, input);
// start reading the CSV file line by line
@@ -671,6 +674,7 @@
result.incNbImportedNew();
} else {
existingCode.setName(obsDebCode.getName());
+ existingCode.setRegions(obsDebCode.getRegions());
dao.update(existingCode);
}
result.incNbImported();
@@ -690,18 +694,6 @@
return result;
}
- @Override
- protected List<ObsDebCode> executeGetAllObsDebCodes(
- TopiaContext transaction, TerrestrialLocation region)
- throws Exception {
- if ( ! region.isRegion()) {
- throw new IllegalArgumentException();
- }
- ObsDebCodeDAO dao = WaoDAOHelper.getObsDebCodeDAO(transaction);
- List<ObsDebCode> allObsDebCodes = dao.findAll();
- return allObsDebCodes;
- }
-
protected void initialDCF5CodesImport(TopiaContext transaction) throws TopiaException {
FishingGearDCFDAO fishingGearDCFDAO = WaoDAOHelper.getFishingGearDCFDAO(transaction);
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 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-05-31 15:58:46 UTC (rev 1307)
@@ -175,6 +175,7 @@
wao.error.serviceContact.getContacts=
wao.error.serviceContact.getNbContacts=
wao.error.serviceContact.getNewContact=
+wao.error.serviceContact.getPossibleObsDebCodes=
wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.getSubstitutesForBoat=
wao.error.serviceContact.importContactCsv=
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 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-05-31 15:58:46 UTC (rev 1307)
@@ -175,6 +175,7 @@
wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts
wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtrés
wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact
+wao.error.serviceContact.getPossibleObsDebCodes=
wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.getSubstitutesForBoat=
wao.error.serviceContact.importContactCsv=Impossible d'importer les contacts
Modified: trunk/wao-business/src/main/resources/obsDebCodes.csv
===================================================================
--- trunk/wao-business/src/main/resources/obsDebCodes.csv 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/main/resources/obsDebCodes.csv 2011-05-31 15:58:46 UTC (rev 1307)
@@ -1,649 +1,649 @@
-CODE;NOM
-OTBELX;"Chaluts de fond à panneaux (1 Navire) à Anguilles, Civelle"
-OTBANE;"Chaluts de fond à panneaux (1 Navire) à Anchois commun"
-OTBBSS;"Chaluts de fond à panneaux (1 Navire) à Bar commun"
-OTBCPR;"Chaluts de fond à panneaux (1 Navire) à Bouquet commun"
-OTBSQU;"Chaluts de fond à panneaux (1 Navire) à Calmars, Encornets"
-OTBJAX;"Chaluts de fond à panneaux (1 Navire) à Chinchards (divers)"
-OTBIOD;"Chaluts de fond à panneaux (1 Navire) à Crabe nageur"
-OTBCSH;"Chaluts de fond à panneaux (1 Navire) à Crevette grise"
-OTBCET;"Chaluts de fond à panneaux (1 Navire) à Céteau"
-OTBSBX;"Chaluts de fond à panneaux (1 Navire) à Dorades, Sparidés"
-OTBMZZ;"Chaluts de fond à panneaux (1 Navire) à Poissons"
-OTB_GA;"Chaluts de fond à panneaux (1 Navire) à Gadidés (divers)"
-OTBGUX;"Chaluts de fond à panneaux (1 Navire) à Grondins (divers)"
-OTB_DW;"Chaluts de fond à panneaux (1 Navire) à Poissons de grands fonds"
-OTBHER;"Chaluts de fond à panneaux (1 Navire) à Hareng commun"
-OTBSAN;"Chaluts de fond à panneaux (1 Navire) à Lançons (divers)"
-OTBPOL;"Chaluts de fond à panneaux (1 Navire) à Lieu jaune"
-OTBNEP;"Chaluts de fond à panneaux (1 Navire) à Langoustine commune"
-OTBMNZ;"Chaluts de fond à panneaux (1 Navire) à Baudroies (= Lottes) (divers)"
-OTBPOK;"Chaluts de fond à panneaux (1 Navire) à Lieu noir"
-OTBMAX;"Chaluts de fond à panneaux (1 Navire) à Maquereaux (divers)"
-OTBHKX;"Chaluts de fond à panneaux (1 Navire) à Merlus (divers)"
-OTBMGR;"Chaluts de fond à panneaux (1 Navire) à Maigre"
-OTBWHG;"Chaluts de fond à panneaux (1 Navire) à Merlan"
-OTBMUL;"Chaluts de fond à panneaux (1 Navire) à Mulets (divers)"
-OTBFLX;"Chaluts de fond à panneaux (1 Navire) à Poissons plats"
-OTBRAJ;"Chaluts de fond à panneaux (1 Navire) à Raies (divers)"
-OTBMUM;"Chaluts de fond à panneaux (1 Navire) à Rougets (divers)"
-OTBIAX;"Chaluts de fond à panneaux (1 Navire) à Seiches (divers)"
-OTBSOX;"Chaluts de fond à panneaux (1 Navire) à Soles (divers)"
-OTBDGX;"Chaluts de fond à panneaux (1 Navire) à Squales (divers)"
-OTBDIA;"Chaluts de fond à panneaux (1 Navire) à Saumons, Truites, Aloses"
-OTBQSC;"Chaluts de fond à panneaux (1 Navire) à Pétoncle blanc (= Vanneau)"
-OTMANE;"Chaluts pélagiques à panneaux (1 Navire) à Anchois commun"
-OTMBSS;"Chaluts pélagiques à panneaux (1 Navire) à Bar commun"
-OTMSQU;"Chaluts pélagiques à panneaux (1 Navire) à Calmars, Encornets"
-OTMJAX;"Chaluts pélagiques à panneaux (1 Navire) à Chinchards (divers)"
-OTMSBX;"Chaluts pélagiques à panneaux (1 Navire) à Dorades, Sparidés"
-OTMMZZ;"Chaluts pélagiques à panneaux (1 Navire) à Poissons"
-OTM_GA;"Chaluts pélagiques à panneaux (1 Navire) à Gadidés (divers)"
-OTMHER;"Chaluts pélagiques à panneaux (1 Navire) à Hareng commun"
-OTMPOL;"Chaluts pélagiques à panneaux (1 Navire) à Lieu jaune"
-OTMMAX;"Chaluts pélagiques à panneaux (1 Navire) à Maquereaux (divers)"
-OTMHKX;"Chaluts pélagiques à panneaux (1 Navire) à Merlus (divers)"
-OTMWHG;"Chaluts pélagiques à panneaux (1 Navire) à Merlan"
-OTMMUL;"Chaluts pélagiques à panneaux (1 Navire) à Mulets (divers)"
-OTMPIL;"Chaluts pélagiques à panneaux (1 Navire) à Sardine commune"
-OTMDIA;"Chaluts pélagiques à panneaux (1 Navire) à Saumons, Truites, Aloses"
-OTMTUN;"Chaluts pélagiques à panneaux (1 Navire) à Thons (divers)"
-PLOCJ;"Plongée avec bouteilles à coquilles Saint Jacques"
-SDVHLT;"Plongée sous-marine à Ormeau"
-PLODI;"Plongée avec bouteilles à divers invertébrés aquatiques"
-SDVCOR;"Plongée sous-marine à Coraux"
-SDVDON;"Plongée sous-marine à Donax (= Tellines, Flions, Olives)"
-SDVSWX;"Plongée sous-marine à Algues"
-SDVMSX;"Plongée sous-marine à Moules (divers)"
-SDVECH;"Plongée sous-marine à Oursins, Echinodermes"
-PLOPA;"Plongée avec bouteilles à palourdes"
-SDVSSG;"Plongée sous-marine à Violet"
-FOOCOC;"Pêche à pied à Coque commune"
-FOOPEE;"Pêche à pied à Bigorneau"
-FOOSWX;"Pêche à pied à Algues"
-FOOMSX;"Pêche à pied à Moules (divers)"
-FOOECH;"Pêche à pied à Oursins, Echinodermes"
-PPIPA;"Pêche à pied à palourdes"
-FOOPCB;"Pêche à pied à Pouce-pied"
-FOOWOR;"Pêche à pied à Vers marins"
-PREBSS;"Charter de pêche récréative (lignes et palangres) à Bar commun"
-PREMZZ;"Charter de pêche récréative (lignes et palangres) à Poissons"
-PREMAX;"Charter de pêche récréative (lignes et palangres) à Maquereaux (divers)"
-PRM;"Promenade en Mer (Activité touristique)"
-PSANE;"Sennes tournantes coulissantes à Anchois commun"
-PSBSS;"Sennes tournantes coulissantes à Bar commun"
-PSJAX;"Sennes tournantes coulissantes à Chinchards (divers)"
-PSSBX;"Sennes tournantes coulissantes à Dorades, Sparidés"
-PSMZZ;"Sennes tournantes coulissantes à Poissons"
-PSHER;"Sennes tournantes coulissantes à Hareng commun"
-PSMAX;"Sennes tournantes coulissantes à Maquereaux (divers)"
-PSMUL;"Sennes tournantes coulissantes à Mulets (divers)"
-PSPIL;"Sennes tournantes coulissantes à Sardine commune"
-PSTUN;"Sennes tournantes coulissantes à Thons (divers)"
-PTMZZ;"Divers chaluts boeufs (2 navires) à divers poissons"
-PTBBSS;"Chaluts de fond (2 Navires) à Bar commun"
-PTBSQU;"Chaluts de fond (2 Navires) à Calmars, Encornets"
-PTBSBX;"Chaluts de fond (2 Navires) à Dorades, Sparidés"
-PTBMZZ;"Chaluts de fond (2 Navires) à Poissons"
-PTB_GA;"Chaluts de fond (2 Navires) à Gadidés (divers)"
-PTBNEP;"Chaluts de fond (2 Navires) à Langoustine commune"
-PTBMNZ;"Chaluts de fond (2 Navires) à Baudroies (= Lottes) (divers)"
-PTBHKX;"Chaluts de fond (2 Navires) à Merlus (divers)"
-PTBWHG;"Chaluts de fond (2 Navires) à Merlan"
-PTBFLX;"Chaluts de fond (2 Navires) à Poissons plats"
-PTBIAX;"Chaluts de fond (2 Navires) à Seiches (divers)"
-PTBSOX;"Chaluts de fond (2 Navires) à Soles (divers)"
-PTMANE;"Chaluts pélagiques (2 Navires) à Anchois commun"
-PTMBSS;"Chaluts pélagiques (2 Navires) à Bar commun"
-PTMSQU;"Chaluts pélagiques (2 Navires) à Calmars, Encornets"
-PTMJAX;"Chaluts pélagiques (2 Navires) à Chinchards (divers)"
-PTMSBX;"Chaluts pélagiques (2 Navires) à Dorades, Sparidés"
-PTMMZZ;"Chaluts pélagiques (2 Navires) à Poissons"
-PTMHER;"Chaluts pélagiques (2 Navires) à Hareng commun"
-PTMPOL;"Chaluts pélagiques (2 Navires) à Lieu jaune"
-PTMMAX;"Chaluts pélagiques (2 Navires) à Maquereaux (divers)"
-PTMHKX;"Chaluts pélagiques (2 Navires) à Merlus (divers)"
-PTMWHG;"Chaluts pélagiques (2 Navires) à Merlan"
-PTMMUL;"Chaluts pélagiques (2 Navires) à Mulets (divers)"
-PTMPIL;"Chaluts pélagiques (2 Navires) à Sardine commune"
-PTMTUN;"Chaluts pélagiques (2 Navires) à Thons (divers)"
-SBMZZ;"Sennes de plage à Poissons"
-HMSSWX;"Scoubidou à Algues"
-SVSAN;"Sennes halée à bord à Lançons (divers)"
-GESELX;"Tamis à Anguilles, Civelle"
-TBBSQU;"Chaluts à perche à Calmars, Encornets"
-TBBCSH;"Chaluts à perche à Crevette grise"
-TBBMZZ;"Chaluts à perche à Poissons"
-TBB_GA;"Chaluts à perche à Gadidés (divers)"
-TBBFLX;"Chaluts à perche à Poissons plats"
-TBBSCO;"Chaluts à perche à Rascasses (divers)"
-TBBIAX;"Chaluts à perche à Seiches (divers)"
-TBBSOX;"Chaluts à perche à Soles (divers)"
-TRASWX;"Transport à Algues"
-OTTSQU;"Chaluts jumeaux à Calmars, Encornets"
-OTTMZZ;"Chaluts jumeaux à Poissons"
-OTT_GA;"Chaluts jumeaux à Gadidés (divers)"
-OTT_DW;"Chaluts jumeaux à Poissons de grands fonds"
-OTTNEP;"Chaluts jumeaux à Langoustine commune"
-OTTMNZ;"Chaluts jumeaux à Baudroies (= Lottes) (divers)"
-OTTHKX;"Chaluts jumeaux à Merlus (divers)"
-OTTFLX;"Chaluts jumeaux à Poissons plats"
-OTTRAJ;"Chaluts jumeaux à Raies (divers)"
-OTTMUM;"Chaluts jumeaux à Rougets (divers)"
-OTTIAX;"Chaluts jumeaux à Seiches (divers)"
-OTTSOX;"Chaluts jumeaux à Soles (divers)"
-OTTQSC;"Chaluts jumeaux à Pétoncle blanc (= Vanneau)"
-VEN;"Vénériculture"
-LNBMZZ;"Filets soulevés manoeuvrés du bateau à Poissons"
-FY_ELX;"Capéchades, Trabaques à Anguilles, Civelle"
-OTB_EP;"Chaluts de fond à panneaux (1 Navire) à Eperlans (divers)"
-FPOLAU;"Casiers, Nasses (non spécifiés) à Lamproie marine"
-ALG;"Algoculture"
-FDVSWX;"Apnée à Algues"
-DRBCOC;"Dragues remorquées par un bateau à Coque commune"
-DRBDI;"Drague à divers invertébrés aquatiques"
-FPONU1;"Casiers, Nasses (non spécifiés) à Bernard l'ermite"
-FPOARA;"Casiers, Nasses (non spécifiés) à Crevette rouge"
-FPOMZZ;"Casiers, Nasses (non spécifiés) à Poissons"
-FPO_GI;"Casiers, Nasses (non spécifiés) à Girelles (divers)"
-FWRMZZ;"Barrages, Parcs, Bordigues à Poissons"
-FWRSBG;"Barrages, Parcs, Bordigues à Dorade royale"
-FY_MZZ;"Capéchades, Trabaques à Poissons"
-TMBMZZ;"Gangui à panneaux à Poissons"
-GNCSIL;"Filets maillants encerclants à Athérines (divers)"
-GNCMZZ;"Filets maillants encerclants à Poissons"
-GNCSBG;"Filets maillants encerclants à Dorade royale"
-GNCMUL;"Filets maillants encerclants à Mulets (divers)"
-GND_BT;"Filets maillants dérivants à Bonites (divers)"
-GNDPIL;"Filets maillants dérivants à Sardine commune"
-GNDBFT;"Filets maillants dérivants à Thon rouge"
-GNEBSS;"Filets flottants (maillants calés) à Bar commun"
-GNS_BT;"Filets maillants fixes (calés, ancrés) à Bonites (divers)"
-GNSSBG;"Filets maillants fixes (calés, ancrés) à Dorade royale"
-GNSCRW;"Filets maillants fixes (calés, ancrés) à Langoustes (divers)"
-GNSLAU;"Filets maillants fixes (calés, ancrés) à Lamproie marine"
-GNSPIL;"Filets maillants fixes (calés, ancrés) à Sardine commune"
-GNSBFT;"Filets maillants fixes (calés, ancrés) à Thon rouge"
-GTNBSS;"Trémails et filets maillants combinés à Bar commun"
-GTN_BT;"Trémails et filets maillants combinés à Bonites (divers)"
-GTNSBX;"Trémails et filets maillants combinés à Dorades, Sparidés"
-GTNMZZ;"Trémails et filets maillants combinés à Poissons"
-GTNSBG;"Trémails et filets maillants combinés à Dorade royale"
-GTNSCO;"Trémails et filets maillants combinés à Rascasses (divers)"
-GTRLOS;"Trémails à Cigales (divers)"
-GTRSBG;"Trémails à Dorade royale"
-GTRLBS;"Trémails à Homards (divers)"
-GTRMGR;"Trémails à Maigre"
-HESCPR;"Haveneaux, Épuisettes, Salabardes à Bouquet commun"
-HESCSH;"Haveneaux, Épuisettes, Salabardes à Crevette grise"
-HESPIL;"Haveneaux, Épuisettes, Salabardes à Sardine commune"
-LH_BT;"Lignes de traîne, Lignes à main à Bonites (divers)"
-LHSBR;"Lignes de traîne, Lignes à main à Pageot rose (= Dorade rose)"
-LHOCT;"Lignes de traîne, Lignes à main à Poulpes, Pieuvres, Elédones"
-LHBFT;"Lignes de traîne, Lignes à main à Thon rouge"
-LHMBSS;"Lignes mécanisées (à main ou avec canne) à Bar commun"
-LHMMZZ;"Lignes mécanisées (à main ou avec canne) à Poissons"
-LHPBSS;"Lignes manœuvrées à la main (ou avec canne) à Bar commun"
-LHPMZZ;"Lignes manœuvrées à la main (ou avec canne) à Poissons"
-LHPMAX;"Lignes manœuvrées à la main (ou avec canne) à Maquereaux (divers)"
-LHPOCT;"Lignes manœuvrées à la main (ou avec canne) à Poulpes, Pieuvres, Elédones"
-LHPJOD;"Lignes manœuvrées à la main (ou avec canne) à Saint-Pierre"
-LLDBSS;"Palangres dérivantes à Bar commun"
-LLDBRZ;"Palangres dérivantes à Castagnoles (divers)"
-LLDSWO;"Palangres dérivantes à Espadon"
-LLDBFT;"Palangres dérivantes à Thon rouge"
-LLFBSS;"Palangres calées flottantes à Bar commun"
-LLFSBG;"Palangres calées flottantes à Dorade royale"
-LLSELX;"Palangres de fond (calées) à Anguilles, Civelle"
-LLSSBR;"Palangres de fond (calées) à Pageot rose (= Dorade rose)"
-LLSSBG;"Palangres de fond (calées) à Dorade royale"
-LLSCUT;"Palangres de fond (calées) à Sabres (divers)"
-LNBMUL;"Filets soulevés manoeuvrés du bateau à Mulets (divers)"
-LNBFLX;"Filets soulevés manoeuvrés du bateau à Poissons plats"
-LNELX;"Carrelet, Filets soulevés (non spécifiées) à Anguilles, Civelle"
-LSPBSS;"Lignes calées (avec ou sans canne) à Bar commun"
-LTLBSS;"Lignes de traîne à Bar commun"
-LTL_BT;"Lignes de traîne à Bonites (divers)"
-LTLMZZ;"Lignes de traîne à Poissons"
-LTLSWO;"Lignes de traîne à Espadon"
-LTLMAX;"Lignes de traîne à Maquereaux (divers)"
-LTLBFT;"Lignes de traîne à Thon rouge"
-OTBSBG;"Chaluts de fond à panneaux (1 Navire) à Dorade royale"
-OTBOST;"Chaluts de fond à panneaux (1 Navire) à Huîtres (divers)"
-SDVMZZ;"Plongée sous-marine à Poissons"
-PLOPR;"Plongée avec bouteilles à praires"
-FOORAZ;"Pêche à pied à Couteaux (divers)"
-PPIDI;"Pêche à pied à divers invertébrés aquatiques"
-FOOOST;"Pêche à pied à Huîtres (divers)"
-FOO_SL;"Pêche à pied à Salicorne"
-PREBFT;"Charter de pêche récréative (lignes et palangres) à Thon rouge"
-PSBFT;"Sennes tournantes coulissantes à Thon rouge"
-SB_RE;"Sennes de plage à Murex, Rochers"
-SBPIL;"Sennes de plage à Sardine commune"
-SVMZZ;"Sennes halée à bord à Poissons"
-TBBCJ;"Chalut à perche à coquilles Saint Jacques"
-GNSCOD;"Filets maillants fixes (calés, ancrés) à Morue (= Cabillaud)"
-OTTCSH;"Chaluts jumeaux à Crevette grise"
-FPO_CV;"Casiers, Nasses (non spécifiés) à Crabes verts (divers)"
-FPOLIO;"Casiers, Nasses (non spécifiés) à Etrille commune"
-OTGDV;"Engins Traînants à Divers"
-OFGDV;"Engins Dormants à Divers"
-OFGDC;"Engins Dormants à Divers Coquillages"
-OFGCT;"Engins Dormants à Crevettes (divers)"
-OFGDP;"Engins Dormants à Divers Poissons"
-OFGST;"Engins Dormants à Saumon, Truite, aloses"
-OTGST;"Engins Traînants à Saumon, Truite, aloses"
-OTGCT;"Engins Traînants à Crevettes (divers)"
-LNB_EP;"Filets soulevés manoeuvrés du bateau à Eperlans (divers)"
-HMSHLZ;"Scoubidou à Himanthale"
-FOOASN;"Pêche à pied à Goëmon Robert"
-FPOIYL;"Casiers, Nasses (non spécifiés) à Bichique"
-FPODCP;"Casiers, Nasses (non spécifiés) à Crevettes (divers)"
-FPONAS;"Casiers, Nasses (non spécifiés) à Poisson Licorne"
-GNSPWT;"Filets maillants fixes (calés, ancrés) à Poissons perroquets (divers)"
-LHPSQU;"Lignes manœuvrées à la main (ou avec canne) à Calmars, Encornets"
-LHPDX;"Ligne à main (ou avec canne) à poissons démersaux"
-LHP_LP;"Lignes manœuvrées à la main (ou avec canne) à Grands pélagiques "
-LHP_SP;"Lignes manœuvrées à la main (ou avec canne) à Petits pélagiques"
-LLSDX;"Palangre de fond à poissons démersaux"
-LLSTOP;"Palangres de fond (calées) à Légine australe"
-LLSEBS;"Palangres de fond (calées) à Mochong (= Brème noire)"
-LLS_MS;"Palangres de fond (calées) à Mérous (divers)"
-LLSUSB;"Palangres de fond (calées) à Vieille commune"
-LLSSNX;"Palangres de fond (calées) à Vivaneaux (divers)"
-LNPRAQ;"Filets soulevés portatifs (Balances) à Crabe Girafe"
-LTL_LP;"Lignes de traîne à Grands pélagiques "
-LTL_SP;"Lignes de traîne à Petits pélagiques"
-LVDDOX;"Palangres verticales dérivantes à Dorades Coryphènes (divers)"
-LVD_LP;"Palangres verticales dérivantes à Grands pélagiques "
-AFP;"Affrètement commercial, plongée"
-FDVHLT;"Apnée à Ormeau"
-APNDI;"Plongée en apnée à divers invertébrés aquatiques"
-APNEC;"Plongée en apnée à éponges, coraux"
-FDVDON;"Apnée à Donax (= Tellines, Flions, Olives)"
-FDV_GC;"Apnée à Araignée, Tourteau, Homard"
-FDVMSX;"Apnée à Moules (divers)"
-FDVECH;"Apnée à Oursins, Echinodermes"
-APNPA;"Plongée en apnée à palourdes"
-FDV_RE;"Apnée à Murex, Rochers"
-FDVSSG;"Apnée à Violet"
-AQUBSS;"Aquaculture à Bar commun"
-AQUSBX;"Aquaculture à Dorades, Sparidés"
-AQUMZZ;"Aquaculture à Poissons"
-AQUSLZ;"Aquaculture à Saumons, Truites"
-FAGELX;"Balais, Fagots à Anguilles, Civelle"
-FAGCPR;"Balais, Fagots à Bouquet commun"
-CONCLX;"Conchyliculture à Autres Bivalves"
-CONPA;"Conchyliculture de palourdes"
-DEP;"Dépollution, ramassage de déchets"
-DRBGKL;"Dragues remorquées par un bateau à Amande de mer commune"
-DRBPIQ;"Dragues remorquées par un bateau à Bouquet Delta"
-DRBCJ;"Drague à coquilles Saint Jacques"
-DRBDC;"Drague à divers coquillages"
-DRBSWX;"Dragues remorquées par un bateau à Algues"
-DRBOST;"Dragues remorquées par un bateau à Huîtres (divers)"
-DRBSAN;"Dragues remorquées par un bateau à Lançons (divers)"
-DRBMSX;"Dragues remorquées par un bateau à Moules (divers)"
-DRBECH;"Dragues remorquées par un bateau à Oursins, Echinodermes"
-DRBPA;"Drague à palourdes"
-DRBPE;"Drague à pétoncles bigarrés"
-DRBFLX;"Dragues remorquées par un bateau à Poissons plats"
-DRBPR;"Drague à praires"
-DRB_RE;"Dragues remorquées par un bateau à Murex, Rochers"
-DRBMAT;"Dragues remorquées par un bateau à Mactres, Spisules"
-DRBSOX;"Dragues remorquées par un bateau à Soles (divers)"
-DRBQSC;"Dragues remorquées par un bateau à Pétoncle blanc (= Vanneau)"
-DHBMSX;"Dragues à main embarquées à Moules (divers)"
-DREPA;"Drague à main embarquée à palourdes"
-DHSDON;"Dragues à main à partir du rivage à Donax (= Tellines, Flions, Olives)"
-EXT;"Extraction d'eau ou de sédiment (sable, maerl, gravier etc.)"
-FPOELX;"Casiers, Nasses (non spécifiés) à Anguilles, Civelle"
-FPOPIQ;"Casiers, Nasses (non spécifiés) à Bouquet Delta"
-FPOCPR;"Casiers, Nasses (non spécifiés) à Bouquet commun"
-FPOWHE;"Casiers, Nasses (non spécifiés) à Buccin"
-FPOIOD;"Casiers, Nasses (non spécifiés) à Crabe nageur"
-FPOCOE;"Casiers, Nasses (non spécifiés) à Congre"
-FPO_GC;"Casiers, Nasses (non spécifiés) à Araignée, Tourteau, Homard"
-FPOLBS;"Casiers, Nasses (non spécifiés) à Homards (divers)"
-FPOCRW;"Casiers, Nasses (non spécifiés) à Langoustes (divers)"
-FPONEP;"Casiers, Nasses (non spécifiés) à Langoustine commune"
-FPOSWM;"Casiers, Nasses (non spécifiés) à Petits crustacés"
-FPOOCT;"Casiers, Nasses (non spécifiés) à Poulpes, Pieuvres, Elédones"
-FPOIAX;"Casiers, Nasses (non spécifiés) à Seiches (divers)"
-FYKELX;"Verveux, Tésures à Anguilles, Civelle"
-FYKCOE;"Verveux, Tésures à Congre"
-FYKMZZ;"Verveux, Tésures à Poissons"
-GENSBX;"Filets maillants et/ou emmêlants (non spécifiés) à Dorades, Sparidés"
-GENMZZ;"Filets maillants et/ou emmêlants (non spécifiés) à Poissons"
-GENMNZ;"Filets maillants et/ou emmêlants (non spécifiés) à Baudroies (= Lottes) (divers)"
-GNMZZ;"Filets maillants à Poissons"
-GNCBSS;"Filets maillants encerclants à Bar commun"
-GNCSBX;"Filets maillants encerclants à Dorades, Sparidés"
-GNCMAX;"Filets maillants encerclants à Maquereaux (divers)"
-GNDBSS;"Filets maillants dérivants à Bar commun"
-GNDMZZ;"Filets maillants dérivants à Poissons"
-GND_GA;"Filets maillants dérivants à Gadidés (divers)"
-GNDHER;"Filets maillants dérivants à Hareng commun"
-GNDPOL;"Filets maillants dérivants à Lieu jaune"
-GNDLAU;"Filets maillants dérivants à Lamproie marine"
-GNDMAX;"Filets maillants dérivants à Maquereaux (divers)"
-GNDHKX;"Filets maillants dérivants à Merlus (divers)"
-GNDMGR;"Filets maillants dérivants à Maigre"
-GNDWHG;"Filets maillants dérivants à Merlan"
-GNDMUL;"Filets maillants dérivants à Mulets (divers)"
-GNDMUM;"Filets maillants dérivants à Rougets (divers)"
-GNDDGX;"Filets maillants dérivants à Squales (divers)"
-GNDDIA;"Filets maillants dérivants à Saumons, Truites, Aloses"
-GNDTUN;"Filets maillants dérivants à Thons (divers)"
-GNSBSS;"Filets maillants fixes (calés, ancrés) à Bar commun"
-GNSSQU;"Filets maillants fixes (calés, ancrés) à Calmars, Encornets"
-GNSSBX;"Filets maillants fixes (calés, ancrés) à Dorades, Sparidés"
-GNSMZZ;"Filets maillants fixes (calés, ancrés) à Poissons"
-GNS_GA;"Filets maillants fixes (calés, ancrés) à Gadidés (divers)"
-GNS_GC;"Filets maillants fixes (calés, ancrés) à Araignée, Tourteau, Homard"
-GNSPOL;"Filets maillants fixes (calés, ancrés) à Lieu jaune"
-GNSMNZ;"Filets maillants fixes (calés, ancrés) à Baudroies (= Lottes) (divers)"
-GNSMAX;"Filets maillants fixes (calés, ancrés) à Maquereaux (divers)"
-GNSHKX;"Filets maillants fixes (calés, ancrés) à Merlus (divers)"
-GNSMGR;"Filets maillants fixes (calés, ancrés) à Maigre"
-GNSWHG;"Filets maillants fixes (calés, ancrés) à Merlan"
-GNSMUL;"Filets maillants fixes (calés, ancrés) à Mulets (divers)"
-GNSSWM;"Filets maillants fixes (calés, ancrés) à Petits crustacés"
-GNSFLX;"Filets maillants fixes (calés, ancrés) à Poissons plats"
-GNSRAJ;"Filets maillants fixes (calés, ancrés) à Raies (divers)"
-GNSMUM;"Filets maillants fixes (calés, ancrés) à Rougets (divers)"
-GNSIAX;"Filets maillants fixes (calés, ancrés) à Seiches (divers)"
-GNSSOX;"Filets maillants fixes (calés, ancrés) à Soles (divers)"
-GNSDGX;"Filets maillants fixes (calés, ancrés) à Squales (divers)"
-GNSDIA;"Filets maillants fixes (calés, ancrés) à Saumons, Truites, Aloses"
-GNSTUR;"Filets maillants fixes (calés, ancrés) à Turbot"
-GTRBSS;"Trémails à Bar commun"
-GTRSBX;"Trémails à Dorades, Sparidés"
-GTRMZZ;"Trémails à Poissons"
-GTR_GA;"Trémails à Gadidés (divers)"
-GTR_GC;"Trémails à Araignée, Tourteau, Homard"
-GTRCRW;"Trémails à Langoustes (divers)"
-GTRPOL;"Trémails à Lieu jaune"
-GTRMNZ;"Trémails à Baudroies (= Lottes) (divers)"
-GTRMAX;"Trémails à Maquereaux (divers)"
-GTRHKX;"Trémails à Merlus (divers)"
-GTRWHG;"Trémails à Merlan"
-GTRMUL;"Trémails à Mulets (divers)"
-GTRSWM;"Trémails à Petits crustacés"
-GTRFLX;"Trémails à Poissons plats"
-GTRRAJ;"Trémails à Raies (divers)"
-GTR_RE;"Trémails à Murex, Rochers"
-GTRMUM;"Trémails à Rougets (divers)"
-GTRSCO;"Trémails à Rascasses (divers)"
-GTRIAX;"Trémails à Seiches (divers)"
-GTRSOX;"Trémails à Soles (divers)"
-GTRDGX;"Trémails à Squales (divers)"
-GTRTUR;"Trémails à Turbot"
-HESPIQ;"Haveneaux, Épuisettes, Salabardes à Bouquet Delta"
-HESMZZ;"Haveneaux, Épuisettes, Salabardes à Poissons"
-HP_;"Hors Portefeuille (actif chez un autre observateur)"
-INA;"Inactif"
-INE;"Inexistant"
-LAANE;"Lamparo (Filets tournants sans coulisse) à Anchois commun"
-LAM;"Lamanage (navire pilote)"
-LHBSS;"Lignes de traîne, Lignes à main à Bar commun"
-LHCOE;"Lignes de traîne, Lignes à main à Congre"
-LHSBX;"Lignes de traîne, Lignes à main à Dorades, Sparidés"
-LHMZZ;"Lignes de traîne, Lignes à main à Poissons"
-LH_GA;"Lignes de traîne, Lignes à main à Gadidés (divers)"
-LHSAN;"Lignes de traîne, Lignes à main à Lançons (divers)"
-LHPOL;"Lignes de traîne, Lignes à main à Lieu jaune"
-LHMAX;"Lignes de traîne, Lignes à main à Maquereaux (divers)"
-LHMUL;"Lignes de traîne, Lignes à main à Mulets (divers)"
-LHFLX;"Lignes de traîne, Lignes à main à Poissons plats"
-LHIAX;"Lignes de traîne, Lignes à main à Seiches (divers)"
-LHTUN;"Lignes de traîne, Lignes à main à Thons (divers)"
-LLBSS;"Palangres diverses (non spécifiées) à Bar commun"
-LLCOE;"Palangres diverses (non spécifiées) à Congre"
-LLSBX;"Palangres diverses (non spécifiées) à Dorades, Sparidés"
-LLMZZ;"Palangres diverses (non spécifiées) à Poissons"
-LLMAX;"Palangres diverses (non spécifiées) à Maquereaux (divers)"
-LLRAJ;"Palangres diverses (non spécifiées) à Raies (divers)"
-LLDSBX;"Palangres dérivantes à Dorades, Sparidés"
-LLDMZZ;"Palangres dérivantes à Poissons"
-LLD_GA;"Palangres dérivantes à Gadidés (divers)"
-LLDPOL;"Palangres dérivantes à Lieu jaune"
-LLDMAX;"Palangres dérivantes à Maquereaux (divers)"
-LLDHKX;"Palangres dérivantes à Merlus (divers)"
-LLDDGX;"Palangres dérivantes à Squales (divers)"
-LLDTUN;"Palangres dérivantes à Thons (divers)"
-LLSBSS;"Palangres de fond (calées) à Bar commun"
-LLSCOE;"Palangres de fond (calées) à Congre"
-LLSSBX;"Palangres de fond (calées) à Dorades, Sparidés"
-LLSMZZ;"Palangres de fond (calées) à Poissons"
-LLS_GA;"Palangres de fond (calées) à Gadidés (divers)"
-LLSPOL;"Palangres de fond (calées) à Lieu jaune"
-LLSMAX;"Palangres de fond (calées) à Maquereaux (divers)"
-LLSHKX;"Palangres de fond (calées) à Merlus (divers)"
-LLSMGR;"Palangres de fond (calées) à Maigre"
-LLSWHG;"Palangres de fond (calées) à Merlan"
-LLSMUL;"Palangres de fond (calées) à Mulets (divers)"
-LLSFLX;"Palangres de fond (calées) à Poissons plats"
-LLSRAJ;"Palangres de fond (calées) à Raies (divers)"
-LLSMUM;"Palangres de fond (calées) à Rougets (divers)"
-LLSSOX;"Palangres de fond (calées) à Soles (divers)"
-LLSDGX;"Palangres de fond (calées) à Squales (divers)"
-LNMZZ;"Carrelet, Filets soulevés (non spécifiées) à Poissons"
-LNMUL;"Carrelet, Filets soulevés (non spécifiées) à Mulets (divers)"
-LNFLX;"Carrelet, Filets soulevés (non spécifiées) à Poissons plats"
-LVDBSS;"Palangres verticales dérivantes à Bar commun"
-LVSBSS;"Palangres verticales de fond à Bar commun"
-MYT;"Mytiliculture"
-OST;"Ostréiculture"
-OTMZZ;"Divers chaluts à panneaux à divers poissons"
-DRBVEV;"Dragues remorquées par un bateau à Praire commune"
-SDVVEV;"Plongée sous-marine à Praire commune"
-FOOKLK;"Pêche à pied à Vernis fauve"
-FPOLBA;"Casiers, Nasses (non spécifiés) à Homard américain"
-FPOLBE;"Casiers, Nasses (non spécifiés) à Homard européen"
-GTRLBE;"Trémails à Homard européen"
-FPOUPC;"Casiers, Nasses (non spécifiés) à Langoustine sculptée"
-FOOTWV;"Pêche à pied à Oursin blanc"
-DRBURC;"Dragues remorquées par un bateau à Oursin de St-P&M"
-LVDBIL;"Palangres verticales dérivantes à Marlins, Makaires"
-LVDTUN;"Palangres verticales dérivantes à Thons (divers)"
-FOOOCT;"Pêche à pied à Poulpes, Pieuvres, Elédones"
-PRE_LP;"Charter de pêche récréative (lignes et palangres) à Grands pélagiques "
-SB_SP;"Sennes de plage à Petits pélagiques"
-SBGOX;"Sennes de plage à Capucins nains (divers)"
-SBIYL;"Sennes de plage à Bichique"
-TBSDCP;"Chaluts de fond Floridien à Crevettes à Crevettes (divers)"
-FSNMZZ;"Barrières chinoises, Filets à l'étalage à Poissons"
-LHP_MS;"Lignes manœuvrées à la main (ou avec canne) à Mérous (divers)"
-GNSJOD;"Filets maillants fixes (calés, ancrés) à Saint-Pierre"
-FOOLPZ;"Pêche à pied à Patelles (divers)"
-FSNELX;"Barrières chinoises, Filets à l'étalage à Anguilles, Civelle"
-FSNSBG;"Barrières chinoises, Filets à l'étalage à Dorade royale"
-DHBWOR;"Dragues à main embarquées à Vers marins"
-SDVOST;"Plongée sous-marine à Huîtres (divers)"
-PTMBFT;"Chaluts pélagiques (2 Navires) à Thon rouge"
-GNEMUL;"Filets flottants (maillants calés) à Mulets (divers)"
-GNS_EP;"Filets maillants fixes (calés, ancrés) à Eperlans (divers)"
-FPOCRQ;"Casiers, Nasses (non spécifiés) à Crabe des neiges"
-FPOMYG;"Casiers, Nasses (non spécifiés) à Myxine"
-DRBCUX;"Dragues remorquées par un bateau à Concombres de mer (divers)"
-GNSLUM;"Filets maillants fixes (calés, ancrés) à Lompe"
-GNSSAL;"Filets maillants fixes (calés, ancrés) à Saumon de l'Atlantique"
-HESCAP;"Haveneaux, Épuisettes, Salabardes à Capelan"
-SBCAP;"Sennes de plage à Capelan"
-OTBCOD;"Chaluts de fond à panneaux (1 Navire) à Morue (= Cabillaud)"
-LHPCOD;"Lignes manœuvrées à la main (ou avec canne) à Morue (= Cabillaud)"
-OTBDCP;"Chaluts de fond à panneaux (1 Navire) à Crevettes (divers)"
-TRAMZZ;"Transport à Poissons"
-FDVMZZ;"Apnée à Poissons"
-FDVCON;"Apnée à Strombes (= Lambis) (divers)"
-FDVCRW;"Apnée à Langoustes (divers)"
-DCLGP;"DCP Lignes et Palangres à grands pélagiques"
-PS_LP;"Sennes tournantes coulissantes à Grands pélagiques "
-DRBCON;"Dragues remorquées par un bateau à Strombes (= Lambis) (divers)"
-FCNMZZ;"Eperviers à Poissons"
-FPOMUI;"Casiers, Nasses (non spécifiés) à Murènes (divers)"
-FPOSNX;"Casiers, Nasses (non spécifiés) à Vivaneaux (divers)"
-GNCHAX;"Filets maillants encerclants à Demi-becs (divers) (= Balarou)"
-GNCBIS;"Filets maillants encerclants à Sélar coulisou (= Koulirou)"
-GNCBEN;"Filets maillants encerclants à Orphies, Aiguilles"
-GNCCLP;"Filets maillants encerclants à Sardines, Sardinelles, Harengules"
-GNDHAX;"Filets maillants dérivants à Demi-becs (divers) (= Balarou)"
-GNDFLY;"Filets maillants dérivants à Poissons volants (divers)"
-GNSCGX;"Filets maillants fixes (calés, ancrés) à Carangues (divers)"
-GNSCON;"Filets maillants fixes (calés, ancrés) à Strombes (= Lambis) (divers)"
-GNSBLF;"Filets maillants fixes (calés, ancrés) à Thon à nageoires noires"
-GNSSNX;"Filets maillants fixes (calés, ancrés) à Vivaneaux (divers)"
-HESFLY;"Haveneaux, Épuisettes, Salabardes à Poissons volants (divers)"
-LHPDOX;"Lignes manœuvrées à la main (ou avec canne) à Dorades Coryphènes (divers)"
-LHPBIL;"Lignes manœuvrées à la main (ou avec canne) à Marlins, Makaires"
-LHPBEN;"Lignes manœuvrées à la main (ou avec canne) à Orphies, Aiguilles"
-LHP_DF;"Lignes manœuvrées à la main (ou avec canne) à Poissons de fond (benthiques)"
-LHPSNY;"Lignes manœuvrées à la main (ou avec canne) à Vivaneau à queue jaune"
-LHPSNX;"Lignes manœuvrées à la main (ou avec canne) à Vivaneaux (divers)"
-LLS_DF;"Palangres de fond (calées) à Poissons de fond (benthiques)"
-LLSSNY;"Palangres de fond (calées) à Vivaneau à queue jaune"
-LTF_LP;"Lignes traînantes de fond à Grands pélagiques "
-LTLKGX;"Lignes de traîne à Thazards (divers)"
-LTP_LP;"Lignes de traîne profondes à Grands pélagiques "
-LTS_LP;"Lignes de traîne de surface à Grands pélagiques "
-LX_LP;"Lignes et palangres (non spécifiées) à Grands pélagiques "
-GND_LP;"Filets maillants dérivants à Grands pélagiques "
-MILGP;"Miquelon Lignes et palangres à Grands pélagiques"
-FOORSQ;"Pêche à pied à Crabe Cirique"
-FOO_SD;"Pêche à pied à Soudons (divers)"
-PS_BT;"Sennes tournantes coulissantes à Bonites (divers)"
-PSSNY;"Sennes tournantes coulissantes à Vivaneau à queue jaune"
-SBHAX;"Sennes de plage à Demi-becs (divers) (= Balarou)"
-SB_BT;"Sennes de plage à Bonites (divers)"
-SBBIS;"Sennes de plage à Sélar coulisou (= Koulirou)"
-SBBEN;"Sennes de plage à Orphies, Aiguilles"
-SBSNY;"Sennes de plage à Vivaneau à queue jaune"
-FPOUSB;"Casiers, Nasses (non spécifiés) à Vieille commune"
-LLSCOD;"Palangres de fond (calées) à Morue (= Cabillaud)"
-FDVKUI;"Apnée à Troque des Antilles (= Burgo)"
-TRAPA;"Transport à "
-FDVOST;"Apnée à Huîtres (divers)"
-LHP_BT;"Lignes manœuvrées à la main (ou avec canne) à Bonites (divers)"
-LHPSBX;"Lignes manœuvrées à la main (ou avec canne) à Dorades, Sparidés"
-LHPSBR;"Lignes manœuvrées à la main (ou avec canne) à Pageot rose (= Dorade rose)"
-LHP_GA;"Lignes manœuvrées à la main (ou avec canne) à Gadidés (divers)"
-LHPSAN;"Lignes manœuvrées à la main (ou avec canne) à Lançons (divers)"
-LHPPOL;"Lignes manœuvrées à la main (ou avec canne) à Lieu jaune"
-LHPMUL;"Lignes manœuvrées à la main (ou avec canne) à Mulets (divers)"
-LHPFLX;"Lignes manœuvrées à la main (ou avec canne) à Poissons plats"
-LHPIAX;"Lignes manœuvrées à la main (ou avec canne) à Seiches (divers)"
-LHPTUN;"Lignes manœuvrées à la main (ou avec canne) à Thons (divers)"
-LHPBFT;"Lignes manœuvrées à la main (ou avec canne) à Thon rouge"
-LHMPOL;"Lignes mécanisées (à main ou avec canne) à Lieu jaune"
-LTLPOL;"Lignes de traîne à Lieu jaune"
-GNDSBX;"Filets maillants dérivants à Dorades, Sparidés"
-FPORSQ;"Casiers, Nasses (non spécifiés) à Crabe Cirique"
-OTTCET;"Chaluts jumeaux à Céteau"
-TBBQSC;"Chaluts à perche à Pétoncle blanc (= Vanneau)"
-SDNSQU;"Sennes danoise à Calmars, Encornets"
-SDNCOD;"Sennes danoise à Morue (= Cabillaud)"
-SDNMUM;"Sennes danoise à Rougets (divers)"
-GTRCON;"Trémails à Strombes (= Lambis) (divers)"
-HER;"Hersage de crépidules, draguage d'étoiles de mer"
-LHM_DF;"Lignes mécanisées (à main ou avec canne) à Poissons de fond (benthiques)"
-SDNMZZ;"Sennes danoise à Poissons"
-OTBJOD;"Chaluts de fond à panneaux (1 Navire) à Saint-Pierre"
-OTTCOD;"Chaluts jumeaux à Morue (= Cabillaud)"
-PSSBG;"Sennes tournantes coulissantes à Dorade royale"
-GTRCOD;"Trémails à Morue (= Cabillaud)"
-OTBSHZ;"Chaluts de fond à panneaux (1 Navire) à Aloses (divers)"
-OTMSHZ;"Chaluts pélagiques à panneaux (1 Navire) à Aloses (divers)"
-GNDSHZ;"Filets maillants dérivants à Aloses (divers)"
-GNSSHZ;"Filets maillants fixes (calés, ancrés) à Aloses (divers)"
-GNSANG;"Filets maillants fixes (calés, ancrés) à Baudroie d'Amérique"
-OTBHKS;"Chaluts de fond à panneaux (1 Navire) à Merlu argenté"
-PTBHKE;"Chaluts de fond (2 Navires) à Merlu européen"
-OTBHKE;"Chaluts de fond à panneaux (1 Navire) à Merlu européen"
-OTTHKE;"Chaluts jumeaux à Merlu européen"
-PTMHKE;"Chaluts pélagiques (2 Navires) à Merlu européen"
-OTMHKE;"Chaluts pélagiques à panneaux (1 Navire) à Merlu européen"
-GNDHKE;"Filets maillants dérivants à Merlu européen"
-GNSHKE;"Filets maillants fixes (calés, ancrés) à Merlu européen"
-LLSHKE;"Palangres de fond (calées) à Merlu européen"
-LLDHKE;"Palangres dérivantes à Merlu européen"
-GTRHKE;"Trémails à Merlu européen"
-OTBSLZ;"Chaluts de fond à panneaux (1 Navire) à Saumons, Truites"
-OTMSLZ;"Chaluts pélagiques à panneaux (1 Navire) à Saumons, Truites"
-GNDSLZ;"Filets maillants dérivants à Saumons, Truites"
-GNSSLZ;"Filets maillants fixes (calés, ancrés) à Saumons, Truites"
-PTMALB;"Chaluts pélagiques (2 Navires) à Thon germon"
-OTMALB;"Chaluts pélagiques à panneaux (1 Navire) à Thon germon"
-GNDALB;"Filets maillants dérivants à Thon germon"
-GNSALB;"Filets maillants fixes (calés, ancrés) à Thon germon"
-LHALB;"Lignes de traîne, Lignes à main à Thon germon"
-LHPALB;"Lignes manœuvrées à la main (ou avec canne) à Thon germon"
-LLDALB;"Palangres dérivantes à Thon germon"
-LVDALB;"Palangres verticales dérivantes à Thon germon"
-PSALB;"Sennes tournantes coulissantes à Thon germon"
-TBBSCE;"Chaluts à perche à Coquille St-Jacques Atlantique"
-DRBSCE;"Dragues remorquées par un bateau à Coquille St-Jacques Atlantique"
-SDVSCE;"Plongée sous-marine à Coquille St-Jacques Atlantique"
-TBBSJA;"Chaluts à perche à Coquille St-Jacques Méditerranée"
-DRBSJA;"Dragues remorquées par un bateau à Coquille St-Jacques Méditerranée"
-DRBISC;"Dragues remorquées par un bateau à Pétoncle d'Islande"
-TBBSCA;"Chaluts à perche à Pétoncle géant d'Amérique"
-DRBSCA;"Dragues remorquées par un bateau à Pétoncle géant d'Amérique"
-TBBVSC;"Chaluts à perche à Pétoncle noir"
-OTBVSC;"Chaluts de fond à panneaux (1 Navire) à Pétoncle noir"
-OTTVSC;"Chaluts jumeaux à Pétoncle noir"
-DRBVSC;"Dragues remorquées par un bateau à Pétoncle noir"
-DRBOYG;"Dragues remorquées par un bateau à Huître creuse"
-DRBOYF;"Dragues remorquées par un bateau à Huître plate"
-DHBMUS;"Dragues à main embarquées à Moule commune"
-DRBMUS;"Dragues remorquées par un bateau à Moule commune"
-FOOMUS;"Pêche à pied à Moule commune"
-DHBMSM;"Dragues à main embarquées à Moule méditerranéenne"
-DRBMSM;"Dragues remorquées par un bateau à Moule méditerranéenne"
-DRBVNR;"Dragues remorquées par un bateau à Palourde rose"
-FDVTPS;"Apnée à Palourdes japonaise et européenne"
-DHBTPS;"Dragues à main embarquées à Palourdes japonaise et européenne"
-DRBTPS;"Dragues remorquées par un bateau à Palourdes japonaise et européenne"
-FOOTPS;"Pêche à pied à Palourdes japonaise et européenne"
-SDVTPS;"Plongée sous-marine à Palourdes japonaise et européenne"
-DRBKFA;"Dragues remorquées par un bateau à Praire (= Venus) chambrière"
-FDVINV;"Apnée à Invertébrés"
-FDVCOR;"Apnée à Coraux"
-FDVOYG;"Apnée à Huîtres creuses"
-FDVOYF;"Apnée à Huîtres plates"
-FDVMUS;"Apnée à Moule commune (atlantique)"
-FDVMSM;"Apnée à Moule méditerranéenne"
-CONTPS;"Conchyliculture à Palourdes japonaise et européenne"
-DCL_LP;"Lignes et palangres sur DCP à grands pélagiques (temporaire)"
-DCP_LP;"Senne tournante coulissante sur DCP à grands pélagiques (temporaire)"
-DRB_CJ;"Dragues remorquées par un bateau à Coquille St-Jacques indéterminées"
-DRB_DC;"Dragues remorquées par un bateau à Divers coquillages"
-DRBKLK;"Dragues remorquées par un bateau à Vernis fauve"
-DRBCLX;"Dragues remorquées par un bateau à Autres bivalves"
-DRBINV;"Dragues remorquées par un bateau à Invertébrés"
-DRHMSM;"Dragues à main embarquées à Moule méditerranéenne"
-FIXCRQ;"Pièges non spécifiés à Crabe des neiges"
-LLFMZZ;"Palangres calées flottantes à Divers poissons"
-MIG_LP;"Filets maillants dérivants du large à Grands pélagiques"
-MIL_LP;"Lignes et palangres du large à Grands pélagiques"
-OFGDCP;"Autres engins fixes et autres (autres arts dormants) à Crevettes (divers)"
-OFGINV;"Autres engins fixes et autres (autres arts dormants) à Invertébrés"
-OFGMZZ;"Autres engins fixes et autres (autres arts dormants) à Poissons"
-OFG_DV;"Autres engins fixes et autres (autres arts dormants) à Divers"
-OFGDIA;"Autres engins fixes et autres (autres arts dormants) à poissons diadromes (saumon, truite, alose)"
-OTBOYG;"Chaluts de fond à panneaux (1 Navire) à Huître creuse"
-OTBOYF;"Chaluts de fond à panneaux (1 Navire) à Huître plate"
-OTGDCP;"Engins Traînants à Crevettes (divers)"
-OTG_DV;"Engins Traînants à Divers"
-OTGDIA;"Engins Traînants à poissons diadromes (saumon, truite, alose)"
-SDVINV;"Plongée sous-marine à Invertébrés"
-SDVOYF;"Plongée sous-marine à Huîtres plates"
-SDVOYG;"Plongée sous-marine à Huîtres creuses"
-SDVMSM;"Plongée sous-marine à Moule méditerranéenne"
-SDVMUS;"Plongée sous-marine à Moule commune (atlantique)"
-FOOUCC;"Pêche à pied à Crabe mantou"
-FOOINV;"Pêche à pied à Invertébrés"
-FOOOYF;"Pêche à pied à Huîtres plates"
-FOOOYG;"Pêche à pied à Huîtres creuses"
-FOOMSM;"Pêche à pied à Moule méditerranéenne"
-TBB_CJ;"Chaluts à perche à Coquille St-Jacques (divers)"
+CODE;NOM;REGIONS_IFREMER
+OTBELX;"Chaluts de fond à panneaux (1 Navire) à Anguilles, Civelle";MA,GA
+OTBANE;"Chaluts de fond à panneaux (1 Navire) à Anchois commun";MA,GA
+OTBBSS;"Chaluts de fond à panneaux (1 Navire) à Bar commun";MA,GA
+OTBCPR;"Chaluts de fond à panneaux (1 Navire) à Bouquet commun";GA
+OTBSQU;"Chaluts de fond à panneaux (1 Navire) à Calmars, Encornets";GA
+OTBJAX;"Chaluts de fond à panneaux (1 Navire) à Chinchards (divers)";MA, GA
+OTBIOD;"Chaluts de fond à panneaux (1 Navire) à Crabe nageur";GA
+OTBCSH;"Chaluts de fond à panneaux (1 Navire) à Crevette grise";MA,GA
+OTBCET;"Chaluts de fond à panneaux (1 Navire) à Céteau";MA,GA
+OTBSBX;"Chaluts de fond à panneaux (1 Navire) à Dorades, Sparidés";MA
+OTBMZZ;"Chaluts de fond à panneaux (1 Navire) à Poissons";MA,GA
+OTB_GA;"Chaluts de fond à panneaux (1 Navire) à Gadidés (divers)";
+OTBGUX;"Chaluts de fond à panneaux (1 Navire) à Grondins (divers)";MA, GA
+OTB_DW;"Chaluts de fond à panneaux (1 Navire) à Poissons de grands fonds";MA,GA
+OTBHER;"Chaluts de fond à panneaux (1 Navire) à Hareng commun";MA,GA
+OTBSAN;"Chaluts de fond à panneaux (1 Navire) à Lançons (divers)";MA,GA
+OTBPOL;"Chaluts de fond à panneaux (1 Navire) à Lieu jaune";MA,GA
+OTBNEP;"Chaluts de fond à panneaux (1 Navire) à Langoustine commune";MA
+OTBMNZ;"Chaluts de fond à panneaux (1 Navire) à Baudroies (= Lottes) (divers)";MA, GA
+OTBPOK;"Chaluts de fond à panneaux (1 Navire) à Lieu noir";GA
+OTBMAX;"Chaluts de fond à panneaux (1 Navire) à Maquereaux (divers)";MA,GA
+OTBHKX;"Chaluts de fond à panneaux (1 Navire) à Merlus (divers)";MA,GA
+OTBMGR;"Chaluts de fond à panneaux (1 Navire) à Maigre";MA,GA
+OTBWHG;"Chaluts de fond à panneaux (1 Navire) à Merlan";MA,GA
+OTBMUL;"Chaluts de fond à panneaux (1 Navire) à Mulets (divers)";
+OTBFLX;"Chaluts de fond à panneaux (1 Navire) à Poissons plats";
+OTBRAJ;"Chaluts de fond à panneaux (1 Navire) à Raies (divers)";
+OTBMUM;"Chaluts de fond à panneaux (1 Navire) à Rougets (divers)";
+OTBIAX;"Chaluts de fond à panneaux (1 Navire) à Seiches (divers)";
+OTBSOX;"Chaluts de fond à panneaux (1 Navire) à Soles (divers)";
+OTBDGX;"Chaluts de fond à panneaux (1 Navire) à Squales (divers)";
+OTBDIA;"Chaluts de fond à panneaux (1 Navire) à Saumons, Truites, Aloses";
+OTBQSC;"Chaluts de fond à panneaux (1 Navire) à Pétoncle blanc (= Vanneau)";
+OTMANE;"Chaluts pélagiques à panneaux (1 Navire) à Anchois commun";
+OTMBSS;"Chaluts pélagiques à panneaux (1 Navire) à Bar commun";
+OTMSQU;"Chaluts pélagiques à panneaux (1 Navire) à Calmars, Encornets";
+OTMJAX;"Chaluts pélagiques à panneaux (1 Navire) à Chinchards (divers)";
+OTMSBX;"Chaluts pélagiques à panneaux (1 Navire) à Dorades, Sparidés";
+OTMMZZ;"Chaluts pélagiques à panneaux (1 Navire) à Poissons";
+OTM_GA;"Chaluts pélagiques à panneaux (1 Navire) à Gadidés (divers)";
+OTMHER;"Chaluts pélagiques à panneaux (1 Navire) à Hareng commun";
+OTMPOL;"Chaluts pélagiques à panneaux (1 Navire) à Lieu jaune";
+OTMMAX;"Chaluts pélagiques à panneaux (1 Navire) à Maquereaux (divers)";
+OTMHKX;"Chaluts pélagiques à panneaux (1 Navire) à Merlus (divers)";
+OTMWHG;"Chaluts pélagiques à panneaux (1 Navire) à Merlan";
+OTMMUL;"Chaluts pélagiques à panneaux (1 Navire) à Mulets (divers)";
+OTMPIL;"Chaluts pélagiques à panneaux (1 Navire) à Sardine commune";
+OTMDIA;"Chaluts pélagiques à panneaux (1 Navire) à Saumons, Truites, Aloses";
+OTMTUN;"Chaluts pélagiques à panneaux (1 Navire) à Thons (divers)";
+PLOCJ;"Plongée avec bouteilles à coquilles Saint Jacques";
+SDVHLT;"Plongée sous-marine à Ormeau";
+PLODI;"Plongée avec bouteilles à divers invertébrés aquatiques";
+SDVCOR;"Plongée sous-marine à Coraux";
+SDVDON;"Plongée sous-marine à Donax (= Tellines, Flions, Olives)";
+SDVSWX;"Plongée sous-marine à Algues";
+SDVMSX;"Plongée sous-marine à Moules (divers)";
+SDVECH;"Plongée sous-marine à Oursins, Echinodermes";
+PLOPA;"Plongée avec bouteilles à palourdes";
+SDVSSG;"Plongée sous-marine à Violet";
+FOOCOC;"Pêche à pied à Coque commune";
+FOOPEE;"Pêche à pied à Bigorneau";
+FOOSWX;"Pêche à pied à Algues";
+FOOMSX;"Pêche à pied à Moules (divers)";
+FOOECH;"Pêche à pied à Oursins, Echinodermes";
+PPIPA;"Pêche à pied à palourdes";
+FOOPCB;"Pêche à pied à Pouce-pied";
+FOOWOR;"Pêche à pied à Vers marins";
+PREBSS;"Charter de pêche récréative (lignes et palangres) à Bar commun";
+PREMZZ;"Charter de pêche récréative (lignes et palangres) à Poissons";
+PREMAX;"Charter de pêche récréative (lignes et palangres) à Maquereaux (divers)";
+PRM;"Promenade en Mer (Activité touristique)";
+PSANE;"Sennes tournantes coulissantes à Anchois commun";
+PSBSS;"Sennes tournantes coulissantes à Bar commun";
+PSJAX;"Sennes tournantes coulissantes à Chinchards (divers)";
+PSSBX;"Sennes tournantes coulissantes à Dorades, Sparidés";
+PSMZZ;"Sennes tournantes coulissantes à Poissons";
+PSHER;"Sennes tournantes coulissantes à Hareng commun";
+PSMAX;"Sennes tournantes coulissantes à Maquereaux (divers)";
+PSMUL;"Sennes tournantes coulissantes à Mulets (divers)";
+PSPIL;"Sennes tournantes coulissantes à Sardine commune";
+PSTUN;"Sennes tournantes coulissantes à Thons (divers)";
+PTMZZ;"Divers chaluts boeufs (2 navires) à divers poissons";
+PTBBSS;"Chaluts de fond (2 Navires) à Bar commun";
+PTBSQU;"Chaluts de fond (2 Navires) à Calmars, Encornets";
+PTBSBX;"Chaluts de fond (2 Navires) à Dorades, Sparidés";
+PTBMZZ;"Chaluts de fond (2 Navires) à Poissons";
+PTB_GA;"Chaluts de fond (2 Navires) à Gadidés (divers)";
+PTBNEP;"Chaluts de fond (2 Navires) à Langoustine commune";
+PTBMNZ;"Chaluts de fond (2 Navires) à Baudroies (= Lottes) (divers)";
+PTBHKX;"Chaluts de fond (2 Navires) à Merlus (divers)";
+PTBWHG;"Chaluts de fond (2 Navires) à Merlan";
+PTBFLX;"Chaluts de fond (2 Navires) à Poissons plats";
+PTBIAX;"Chaluts de fond (2 Navires) à Seiches (divers)";
+PTBSOX;"Chaluts de fond (2 Navires) à Soles (divers)";
+PTMANE;"Chaluts pélagiques (2 Navires) à Anchois commun";
+PTMBSS;"Chaluts pélagiques (2 Navires) à Bar commun";
+PTMSQU;"Chaluts pélagiques (2 Navires) à Calmars, Encornets";
+PTMJAX;"Chaluts pélagiques (2 Navires) à Chinchards (divers)";
+PTMSBX;"Chaluts pélagiques (2 Navires) à Dorades, Sparidés";
+PTMMZZ;"Chaluts pélagiques (2 Navires) à Poissons";
+PTMHER;"Chaluts pélagiques (2 Navires) à Hareng commun";
+PTMPOL;"Chaluts pélagiques (2 Navires) à Lieu jaune";
+PTMMAX;"Chaluts pélagiques (2 Navires) à Maquereaux (divers)";
+PTMHKX;"Chaluts pélagiques (2 Navires) à Merlus (divers)";
+PTMWHG;"Chaluts pélagiques (2 Navires) à Merlan";
+PTMMUL;"Chaluts pélagiques (2 Navires) à Mulets (divers)";
+PTMPIL;"Chaluts pélagiques (2 Navires) à Sardine commune";
+PTMTUN;"Chaluts pélagiques (2 Navires) à Thons (divers)";
+SBMZZ;"Sennes de plage à Poissons";
+HMSSWX;"Scoubidou à Algues";
+SVSAN;"Sennes halée à bord à Lançons (divers)";
+GESELX;"Tamis à Anguilles, Civelle";
+TBBSQU;"Chaluts à perche à Calmars, Encornets";
+TBBCSH;"Chaluts à perche à Crevette grise";
+TBBMZZ;"Chaluts à perche à Poissons";
+TBB_GA;"Chaluts à perche à Gadidés (divers)";
+TBBFLX;"Chaluts à perche à Poissons plats";
+TBBSCO;"Chaluts à perche à Rascasses (divers)";
+TBBIAX;"Chaluts à perche à Seiches (divers)";
+TBBSOX;"Chaluts à perche à Soles (divers)";
+TRASWX;"Transport à Algues";
+OTTSQU;"Chaluts jumeaux à Calmars, Encornets";
+OTTMZZ;"Chaluts jumeaux à Poissons";
+OTT_GA;"Chaluts jumeaux à Gadidés (divers)";
+OTT_DW;"Chaluts jumeaux à Poissons de grands fonds";
+OTTNEP;"Chaluts jumeaux à Langoustine commune";
+OTTMNZ;"Chaluts jumeaux à Baudroies (= Lottes) (divers)";
+OTTHKX;"Chaluts jumeaux à Merlus (divers)";
+OTTFLX;"Chaluts jumeaux à Poissons plats";
+OTTRAJ;"Chaluts jumeaux à Raies (divers)";
+OTTMUM;"Chaluts jumeaux à Rougets (divers)";
+OTTIAX;"Chaluts jumeaux à Seiches (divers)";
+OTTSOX;"Chaluts jumeaux à Soles (divers)";
+OTTQSC;"Chaluts jumeaux à Pétoncle blanc (= Vanneau)";
+VEN;"Vénériculture";
+LNBMZZ;"Filets soulevés manoeuvrés du bateau à Poissons";
+FY_ELX;"Capéchades, Trabaques à Anguilles, Civelle";
+OTB_EP;"Chaluts de fond à panneaux (1 Navire) à Eperlans (divers)";
+FPOLAU;"Casiers, Nasses (non spécifiés) à Lamproie marine";
+ALG;"Algoculture";
+FDVSWX;"Apnée à Algues";
+DRBCOC;"Dragues remorquées par un bateau à Coque commune";
+DRBDI;"Drague à divers invertébrés aquatiques";
+FPONU1;"Casiers, Nasses (non spécifiés) à Bernard l'ermite";
+FPOARA;"Casiers, Nasses (non spécifiés) à Crevette rouge";
+FPOMZZ;"Casiers, Nasses (non spécifiés) à Poissons";
+FPO_GI;"Casiers, Nasses (non spécifiés) à Girelles (divers)";
+FWRMZZ;"Barrages, Parcs, Bordigues à Poissons";
+FWRSBG;"Barrages, Parcs, Bordigues à Dorade royale";
+FY_MZZ;"Capéchades, Trabaques à Poissons";
+TMBMZZ;"Gangui à panneaux à Poissons";
+GNCSIL;"Filets maillants encerclants à Athérines (divers)";
+GNCMZZ;"Filets maillants encerclants à Poissons";
+GNCSBG;"Filets maillants encerclants à Dorade royale";
+GNCMUL;"Filets maillants encerclants à Mulets (divers)";
+GND_BT;"Filets maillants dérivants à Bonites (divers)";
+GNDPIL;"Filets maillants dérivants à Sardine commune";
+GNDBFT;"Filets maillants dérivants à Thon rouge";
+GNEBSS;"Filets flottants (maillants calés) à Bar commun";
+GNS_BT;"Filets maillants fixes (calés, ancrés) à Bonites (divers)";
+GNSSBG;"Filets maillants fixes (calés, ancrés) à Dorade royale";
+GNSCRW;"Filets maillants fixes (calés, ancrés) à Langoustes (divers)";
+GNSLAU;"Filets maillants fixes (calés, ancrés) à Lamproie marine";
+GNSPIL;"Filets maillants fixes (calés, ancrés) à Sardine commune";
+GNSBFT;"Filets maillants fixes (calés, ancrés) à Thon rouge";
+GTNBSS;"Trémails et filets maillants combinés à Bar commun";
+GTN_BT;"Trémails et filets maillants combinés à Bonites (divers)";
+GTNSBX;"Trémails et filets maillants combinés à Dorades, Sparidés";
+GTNMZZ;"Trémails et filets maillants combinés à Poissons";
+GTNSBG;"Trémails et filets maillants combinés à Dorade royale";
+GTNSCO;"Trémails et filets maillants combinés à Rascasses (divers)";
+GTRLOS;"Trémails à Cigales (divers)";
+GTRSBG;"Trémails à Dorade royale";
+GTRLBS;"Trémails à Homards (divers)";
+GTRMGR;"Trémails à Maigre";
+HESCPR;"Haveneaux, Épuisettes, Salabardes à Bouquet commun";
+HESCSH;"Haveneaux, Épuisettes, Salabardes à Crevette grise";
+HESPIL;"Haveneaux, Épuisettes, Salabardes à Sardine commune";
+LH_BT;"Lignes de traîne, Lignes à main à Bonites (divers)";
+LHSBR;"Lignes de traîne, Lignes à main à Pageot rose (= Dorade rose)";
+LHOCT;"Lignes de traîne, Lignes à main à Poulpes, Pieuvres, Elédones";
+LHBFT;"Lignes de traîne, Lignes à main à Thon rouge";
+LHMBSS;"Lignes mécanisées (à main ou avec canne) à Bar commun";
+LHMMZZ;"Lignes mécanisées (à main ou avec canne) à Poissons";
+LHPBSS;"Lignes manœuvrées à la main (ou avec canne) à Bar commun";
+LHPMZZ;"Lignes manœuvrées à la main (ou avec canne) à Poissons";
+LHPMAX;"Lignes manœuvrées à la main (ou avec canne) à Maquereaux (divers)";
+LHPOCT;"Lignes manœuvrées à la main (ou avec canne) à Poulpes, Pieuvres, Elédones";
+LHPJOD;"Lignes manœuvrées à la main (ou avec canne) à Saint-Pierre";
+LLDBSS;"Palangres dérivantes à Bar commun";
+LLDBRZ;"Palangres dérivantes à Castagnoles (divers)";
+LLDSWO;"Palangres dérivantes à Espadon";
+LLDBFT;"Palangres dérivantes à Thon rouge";
+LLFBSS;"Palangres calées flottantes à Bar commun";
+LLFSBG;"Palangres calées flottantes à Dorade royale";
+LLSELX;"Palangres de fond (calées) à Anguilles, Civelle";
+LLSSBR;"Palangres de fond (calées) à Pageot rose (= Dorade rose)";
+LLSSBG;"Palangres de fond (calées) à Dorade royale";
+LLSCUT;"Palangres de fond (calées) à Sabres (divers)";
+LNBMUL;"Filets soulevés manoeuvrés du bateau à Mulets (divers)";
+LNBFLX;"Filets soulevés manoeuvrés du bateau à Poissons plats";
+LNELX;"Carrelet, Filets soulevés (non spécifiées) à Anguilles, Civelle";
+LSPBSS;"Lignes calées (avec ou sans canne) à Bar commun";
+LTLBSS;"Lignes de traîne à Bar commun";
+LTL_BT;"Lignes de traîne à Bonites (divers)";
+LTLMZZ;"Lignes de traîne à Poissons";
+LTLSWO;"Lignes de traîne à Espadon";
+LTLMAX;"Lignes de traîne à Maquereaux (divers)";
+LTLBFT;"Lignes de traîne à Thon rouge";
+OTBSBG;"Chaluts de fond à panneaux (1 Navire) à Dorade royale";
+OTBOST;"Chaluts de fond à panneaux (1 Navire) à Huîtres (divers)";
+SDVMZZ;"Plongée sous-marine à Poissons";
+PLOPR;"Plongée avec bouteilles à praires";
+FOORAZ;"Pêche à pied à Couteaux (divers)";
+PPIDI;"Pêche à pied à divers invertébrés aquatiques";
+FOOOST;"Pêche à pied à Huîtres (divers)";
+FOO_SL;"Pêche à pied à Salicorne";
+PREBFT;"Charter de pêche récréative (lignes et palangres) à Thon rouge";
+PSBFT;"Sennes tournantes coulissantes à Thon rouge";
+SB_RE;"Sennes de plage à Murex, Rochers";
+SBPIL;"Sennes de plage à Sardine commune";
+SVMZZ;"Sennes halée à bord à Poissons";
+TBBCJ;"Chalut à perche à coquilles Saint Jacques";
+GNSCOD;"Filets maillants fixes (calés, ancrés) à Morue (= Cabillaud)";
+OTTCSH;"Chaluts jumeaux à Crevette grise";
+FPO_CV;"Casiers, Nasses (non spécifiés) à Crabes verts (divers)";
+FPOLIO;"Casiers, Nasses (non spécifiés) à Etrille commune";
+OTGDV;"Engins Traînants à Divers";
+OFGDV;"Engins Dormants à Divers";
+OFGDC;"Engins Dormants à Divers Coquillages";
+OFGCT;"Engins Dormants à Crevettes (divers)";
+OFGDP;"Engins Dormants à Divers Poissons";
+OFGST;"Engins Dormants à Saumon, Truite, aloses";
+OTGST;"Engins Traînants à Saumon, Truite, aloses";
+OTGCT;"Engins Traînants à Crevettes (divers)";
+LNB_EP;"Filets soulevés manoeuvrés du bateau à Eperlans (divers)";
+HMSHLZ;"Scoubidou à Himanthale";
+FOOASN;"Pêche à pied à Goëmon Robert";
+FPOIYL;"Casiers, Nasses (non spécifiés) à Bichique";
+FPODCP;"Casiers, Nasses (non spécifiés) à Crevettes (divers)";
+FPONAS;"Casiers, Nasses (non spécifiés) à Poisson Licorne";
+GNSPWT;"Filets maillants fixes (calés, ancrés) à Poissons perroquets (divers)";
+LHPSQU;"Lignes manœuvrées à la main (ou avec canne) à Calmars, Encornets";
+LHPDX;"Ligne à main (ou avec canne) à poissons démersaux";
+LHP_LP;"Lignes manœuvrées à la main (ou avec canne) à Grands pélagiques ";
+LHP_SP;"Lignes manœuvrées à la main (ou avec canne) à Petits pélagiques";
+LLSDX;"Palangre de fond à poissons démersaux";
+LLSTOP;"Palangres de fond (calées) à Légine australe";
+LLSEBS;"Palangres de fond (calées) à Mochong (= Brème noire)";
+LLS_MS;"Palangres de fond (calées) à Mérous (divers)";
+LLSUSB;"Palangres de fond (calées) à Vieille commune";
+LLSSNX;"Palangres de fond (calées) à Vivaneaux (divers)";
+LNPRAQ;"Filets soulevés portatifs (Balances) à Crabe Girafe";
+LTL_LP;"Lignes de traîne à Grands pélagiques ";
+LTL_SP;"Lignes de traîne à Petits pélagiques";
+LVDDOX;"Palangres verticales dérivantes à Dorades Coryphènes (divers)";
+LVD_LP;"Palangres verticales dérivantes à Grands pélagiques ";
+AFP;"Affrètement commercial, plongée";
+FDVHLT;"Apnée à Ormeau";
+APNDI;"Plongée en apnée à divers invertébrés aquatiques";
+APNEC;"Plongée en apnée à éponges, coraux";
+FDVDON;"Apnée à Donax (= Tellines, Flions, Olives)";
+FDV_GC;"Apnée à Araignée, Tourteau, Homard";
+FDVMSX;"Apnée à Moules (divers)";
+FDVECH;"Apnée à Oursins, Echinodermes";
+APNPA;"Plongée en apnée à palourdes";
+FDV_RE;"Apnée à Murex, Rochers";
+FDVSSG;"Apnée à Violet";
+AQUBSS;"Aquaculture à Bar commun";
+AQUSBX;"Aquaculture à Dorades, Sparidés";
+AQUMZZ;"Aquaculture à Poissons";
+AQUSLZ;"Aquaculture à Saumons, Truites";
+FAGELX;"Balais, Fagots à Anguilles, Civelle";
+FAGCPR;"Balais, Fagots à Bouquet commun";
+CONCLX;"Conchyliculture à Autres Bivalves";
+CONPA;"Conchyliculture de palourdes";
+DEP;"Dépollution, ramassage de déchets";
+DRBGKL;"Dragues remorquées par un bateau à Amande de mer commune";
+DRBPIQ;"Dragues remorquées par un bateau à Bouquet Delta";
+DRBCJ;"Drague à coquilles Saint Jacques";
+DRBDC;"Drague à divers coquillages";
+DRBSWX;"Dragues remorquées par un bateau à Algues";
+DRBOST;"Dragues remorquées par un bateau à Huîtres (divers)";
+DRBSAN;"Dragues remorquées par un bateau à Lançons (divers)";
+DRBMSX;"Dragues remorquées par un bateau à Moules (divers)";
+DRBECH;"Dragues remorquées par un bateau à Oursins, Echinodermes";
+DRBPA;"Drague à palourdes";
+DRBPE;"Drague à pétoncles bigarrés";
+DRBFLX;"Dragues remorquées par un bateau à Poissons plats";
+DRBPR;"Drague à praires";
+DRB_RE;"Dragues remorquées par un bateau à Murex, Rochers";
+DRBMAT;"Dragues remorquées par un bateau à Mactres, Spisules";
+DRBSOX;"Dragues remorquées par un bateau à Soles (divers)";
+DRBQSC;"Dragues remorquées par un bateau à Pétoncle blanc (= Vanneau)";
+DHBMSX;"Dragues à main embarquées à Moules (divers)";
+DREPA;"Drague à main embarquée à palourdes";
+DHSDON;"Dragues à main à partir du rivage à Donax (= Tellines, Flions, Olives)";
+EXT;"Extraction d'eau ou de sédiment (sable, maerl, gravier etc.)";
+FPOELX;"Casiers, Nasses (non spécifiés) à Anguilles, Civelle";
+FPOPIQ;"Casiers, Nasses (non spécifiés) à Bouquet Delta";
+FPOCPR;"Casiers, Nasses (non spécifiés) à Bouquet commun";
+FPOWHE;"Casiers, Nasses (non spécifiés) à Buccin";
+FPOIOD;"Casiers, Nasses (non spécifiés) à Crabe nageur";
+FPOCOE;"Casiers, Nasses (non spécifiés) à Congre";
+FPO_GC;"Casiers, Nasses (non spécifiés) à Araignée, Tourteau, Homard";
+FPOLBS;"Casiers, Nasses (non spécifiés) à Homards (divers)";
+FPOCRW;"Casiers, Nasses (non spécifiés) à Langoustes (divers)";
+FPONEP;"Casiers, Nasses (non spécifiés) à Langoustine commune";
+FPOSWM;"Casiers, Nasses (non spécifiés) à Petits crustacés";
+FPOOCT;"Casiers, Nasses (non spécifiés) à Poulpes, Pieuvres, Elédones";
+FPOIAX;"Casiers, Nasses (non spécifiés) à Seiches (divers)";
+FYKELX;"Verveux, Tésures à Anguilles, Civelle";
+FYKCOE;"Verveux, Tésures à Congre";
+FYKMZZ;"Verveux, Tésures à Poissons";
+GENSBX;"Filets maillants et/ou emmêlants (non spécifiés) à Dorades, Sparidés";
+GENMZZ;"Filets maillants et/ou emmêlants (non spécifiés) à Poissons";
+GENMNZ;"Filets maillants et/ou emmêlants (non spécifiés) à Baudroies (= Lottes) (divers)";
+GNMZZ;"Filets maillants à Poissons";
+GNCBSS;"Filets maillants encerclants à Bar commun";
+GNCSBX;"Filets maillants encerclants à Dorades, Sparidés";
+GNCMAX;"Filets maillants encerclants à Maquereaux (divers)";
+GNDBSS;"Filets maillants dérivants à Bar commun";
+GNDMZZ;"Filets maillants dérivants à Poissons";
+GND_GA;"Filets maillants dérivants à Gadidés (divers)";
+GNDHER;"Filets maillants dérivants à Hareng commun";
+GNDPOL;"Filets maillants dérivants à Lieu jaune";
+GNDLAU;"Filets maillants dérivants à Lamproie marine";
+GNDMAX;"Filets maillants dérivants à Maquereaux (divers)";
+GNDHKX;"Filets maillants dérivants à Merlus (divers)";
+GNDMGR;"Filets maillants dérivants à Maigre";
+GNDWHG;"Filets maillants dérivants à Merlan";
+GNDMUL;"Filets maillants dérivants à Mulets (divers)";
+GNDMUM;"Filets maillants dérivants à Rougets (divers)";
+GNDDGX;"Filets maillants dérivants à Squales (divers)";
+GNDDIA;"Filets maillants dérivants à Saumons, Truites, Aloses";
+GNDTUN;"Filets maillants dérivants à Thons (divers)";
+GNSBSS;"Filets maillants fixes (calés, ancrés) à Bar commun";
+GNSSQU;"Filets maillants fixes (calés, ancrés) à Calmars, Encornets";
+GNSSBX;"Filets maillants fixes (calés, ancrés) à Dorades, Sparidés";
+GNSMZZ;"Filets maillants fixes (calés, ancrés) à Poissons";
+GNS_GA;"Filets maillants fixes (calés, ancrés) à Gadidés (divers)";
+GNS_GC;"Filets maillants fixes (calés, ancrés) à Araignée, Tourteau, Homard";
+GNSPOL;"Filets maillants fixes (calés, ancrés) à Lieu jaune";
+GNSMNZ;"Filets maillants fixes (calés, ancrés) à Baudroies (= Lottes) (divers)";
+GNSMAX;"Filets maillants fixes (calés, ancrés) à Maquereaux (divers)";
+GNSHKX;"Filets maillants fixes (calés, ancrés) à Merlus (divers)";
+GNSMGR;"Filets maillants fixes (calés, ancrés) à Maigre";
+GNSWHG;"Filets maillants fixes (calés, ancrés) à Merlan";
+GNSMUL;"Filets maillants fixes (calés, ancrés) à Mulets (divers)";
+GNSSWM;"Filets maillants fixes (calés, ancrés) à Petits crustacés";
+GNSFLX;"Filets maillants fixes (calés, ancrés) à Poissons plats";
+GNSRAJ;"Filets maillants fixes (calés, ancrés) à Raies (divers)";
+GNSMUM;"Filets maillants fixes (calés, ancrés) à Rougets (divers)";
+GNSIAX;"Filets maillants fixes (calés, ancrés) à Seiches (divers)";
+GNSSOX;"Filets maillants fixes (calés, ancrés) à Soles (divers)";
+GNSDGX;"Filets maillants fixes (calés, ancrés) à Squales (divers)";
+GNSDIA;"Filets maillants fixes (calés, ancrés) à Saumons, Truites, Aloses";
+GNSTUR;"Filets maillants fixes (calés, ancrés) à Turbot";
+GTRBSS;"Trémails à Bar commun";
+GTRSBX;"Trémails à Dorades, Sparidés";
+GTRMZZ;"Trémails à Poissons";
+GTR_GA;"Trémails à Gadidés (divers)";
+GTR_GC;"Trémails à Araignée, Tourteau, Homard";
+GTRCRW;"Trémails à Langoustes (divers)";
+GTRPOL;"Trémails à Lieu jaune";
+GTRMNZ;"Trémails à Baudroies (= Lottes) (divers)";
+GTRMAX;"Trémails à Maquereaux (divers)";
+GTRHKX;"Trémails à Merlus (divers)";
+GTRWHG;"Trémails à Merlan";
+GTRMUL;"Trémails à Mulets (divers)";
+GTRSWM;"Trémails à Petits crustacés";
+GTRFLX;"Trémails à Poissons plats";
+GTRRAJ;"Trémails à Raies (divers)";
+GTR_RE;"Trémails à Murex, Rochers";
+GTRMUM;"Trémails à Rougets (divers)";
+GTRSCO;"Trémails à Rascasses (divers)";
+GTRIAX;"Trémails à Seiches (divers)";
+GTRSOX;"Trémails à Soles (divers)";
+GTRDGX;"Trémails à Squales (divers)";
+GTRTUR;"Trémails à Turbot";
+HESPIQ;"Haveneaux, Épuisettes, Salabardes à Bouquet Delta";
+HESMZZ;"Haveneaux, Épuisettes, Salabardes à Poissons";
+HP_;"Hors Portefeuille (actif chez un autre observateur)";
+INA;"Inactif";
+INE;"Inexistant";
+LAANE;"Lamparo (Filets tournants sans coulisse) à Anchois commun";
+LAM;"Lamanage (navire pilote)";
+LHBSS;"Lignes de traîne, Lignes à main à Bar commun";
+LHCOE;"Lignes de traîne, Lignes à main à Congre";
+LHSBX;"Lignes de traîne, Lignes à main à Dorades, Sparidés";
+LHMZZ;"Lignes de traîne, Lignes à main à Poissons";
+LH_GA;"Lignes de traîne, Lignes à main à Gadidés (divers)";
+LHSAN;"Lignes de traîne, Lignes à main à Lançons (divers)";
+LHPOL;"Lignes de traîne, Lignes à main à Lieu jaune";
+LHMAX;"Lignes de traîne, Lignes à main à Maquereaux (divers)";
+LHMUL;"Lignes de traîne, Lignes à main à Mulets (divers)";
+LHFLX;"Lignes de traîne, Lignes à main à Poissons plats";
+LHIAX;"Lignes de traîne, Lignes à main à Seiches (divers)";
+LHTUN;"Lignes de traîne, Lignes à main à Thons (divers)";
+LLBSS;"Palangres diverses (non spécifiées) à Bar commun";
+LLCOE;"Palangres diverses (non spécifiées) à Congre";
+LLSBX;"Palangres diverses (non spécifiées) à Dorades, Sparidés";
+LLMZZ;"Palangres diverses (non spécifiées) à Poissons";
+LLMAX;"Palangres diverses (non spécifiées) à Maquereaux (divers)";
+LLRAJ;"Palangres diverses (non spécifiées) à Raies (divers)";
+LLDSBX;"Palangres dérivantes à Dorades, Sparidés";
+LLDMZZ;"Palangres dérivantes à Poissons";
+LLD_GA;"Palangres dérivantes à Gadidés (divers)";
+LLDPOL;"Palangres dérivantes à Lieu jaune";
+LLDMAX;"Palangres dérivantes à Maquereaux (divers)";
+LLDHKX;"Palangres dérivantes à Merlus (divers)";
+LLDDGX;"Palangres dérivantes à Squales (divers)";
+LLDTUN;"Palangres dérivantes à Thons (divers)";
+LLSBSS;"Palangres de fond (calées) à Bar commun";
+LLSCOE;"Palangres de fond (calées) à Congre";
+LLSSBX;"Palangres de fond (calées) à Dorades, Sparidés";
+LLSMZZ;"Palangres de fond (calées) à Poissons";
+LLS_GA;"Palangres de fond (calées) à Gadidés (divers)";
+LLSPOL;"Palangres de fond (calées) à Lieu jaune";
+LLSMAX;"Palangres de fond (calées) à Maquereaux (divers)";
+LLSHKX;"Palangres de fond (calées) à Merlus (divers)";
+LLSMGR;"Palangres de fond (calées) à Maigre";
+LLSWHG;"Palangres de fond (calées) à Merlan";
+LLSMUL;"Palangres de fond (calées) à Mulets (divers)";
+LLSFLX;"Palangres de fond (calées) à Poissons plats";
+LLSRAJ;"Palangres de fond (calées) à Raies (divers)";
+LLSMUM;"Palangres de fond (calées) à Rougets (divers)";
+LLSSOX;"Palangres de fond (calées) à Soles (divers)";
+LLSDGX;"Palangres de fond (calées) à Squales (divers)";
+LNMZZ;"Carrelet, Filets soulevés (non spécifiées) à Poissons";
+LNMUL;"Carrelet, Filets soulevés (non spécifiées) à Mulets (divers)";
+LNFLX;"Carrelet, Filets soulevés (non spécifiées) à Poissons plats";
+LVDBSS;"Palangres verticales dérivantes à Bar commun";
+LVSBSS;"Palangres verticales de fond à Bar commun";
+MYT;"Mytiliculture";
+OST;"Ostréiculture";
+OTMZZ;"Divers chaluts à panneaux à divers poissons";
+DRBVEV;"Dragues remorquées par un bateau à Praire commune";
+SDVVEV;"Plongée sous-marine à Praire commune";
+FOOKLK;"Pêche à pied à Vernis fauve";
+FPOLBA;"Casiers, Nasses (non spécifiés) à Homard américain";
+FPOLBE;"Casiers, Nasses (non spécifiés) à Homard européen";
+GTRLBE;"Trémails à Homard européen";
+FPOUPC;"Casiers, Nasses (non spécifiés) à Langoustine sculptée";
+FOOTWV;"Pêche à pied à Oursin blanc";
+DRBURC;"Dragues remorquées par un bateau à Oursin de St-P&M";
+LVDBIL;"Palangres verticales dérivantes à Marlins, Makaires";
+LVDTUN;"Palangres verticales dérivantes à Thons (divers)";
+FOOOCT;"Pêche à pied à Poulpes, Pieuvres, Elédones";
+PRE_LP;"Charter de pêche récréative (lignes et palangres) à Grands pélagiques ";
+SB_SP;"Sennes de plage à Petits pélagiques";
+SBGOX;"Sennes de plage à Capucins nains (divers)";
+SBIYL;"Sennes de plage à Bichique";
+TBSDCP;"Chaluts de fond Floridien à Crevettes à Crevettes (divers)";
+FSNMZZ;"Barrières chinoises, Filets à l'étalage à Poissons";
+LHP_MS;"Lignes manœuvrées à la main (ou avec canne) à Mérous (divers)";
+GNSJOD;"Filets maillants fixes (calés, ancrés) à Saint-Pierre";
+FOOLPZ;"Pêche à pied à Patelles (divers)";
+FSNELX;"Barrières chinoises, Filets à l'étalage à Anguilles, Civelle";
+FSNSBG;"Barrières chinoises, Filets à l'étalage à Dorade royale";
+DHBWOR;"Dragues à main embarquées à Vers marins";
+SDVOST;"Plongée sous-marine à Huîtres (divers)";
+PTMBFT;"Chaluts pélagiques (2 Navires) à Thon rouge";
+GNEMUL;"Filets flottants (maillants calés) à Mulets (divers)";
+GNS_EP;"Filets maillants fixes (calés, ancrés) à Eperlans (divers)";
+FPOCRQ;"Casiers, Nasses (non spécifiés) à Crabe des neiges";
+FPOMYG;"Casiers, Nasses (non spécifiés) à Myxine";
+DRBCUX;"Dragues remorquées par un bateau à Concombres de mer (divers)";
+GNSLUM;"Filets maillants fixes (calés, ancrés) à Lompe";
+GNSSAL;"Filets maillants fixes (calés, ancrés) à Saumon de l'Atlantique";
+HESCAP;"Haveneaux, Épuisettes, Salabardes à Capelan";
+SBCAP;"Sennes de plage à Capelan";
+OTBCOD;"Chaluts de fond à panneaux (1 Navire) à Morue (= Cabillaud)";
+LHPCOD;"Lignes manœuvrées à la main (ou avec canne) à Morue (= Cabillaud)";
+OTBDCP;"Chaluts de fond à panneaux (1 Navire) à Crevettes (divers)";
+TRAMZZ;"Transport à Poissons";
+FDVMZZ;"Apnée à Poissons";
+FDVCON;"Apnée à Strombes (= Lambis) (divers)";
+FDVCRW;"Apnée à Langoustes (divers)";
+DCLGP;"DCP Lignes et Palangres à grands pélagiques";
+PS_LP;"Sennes tournantes coulissantes à Grands pélagiques ";
+DRBCON;"Dragues remorquées par un bateau à Strombes (= Lambis) (divers)";
+FCNMZZ;"Eperviers à Poissons";
+FPOMUI;"Casiers, Nasses (non spécifiés) à Murènes (divers)";
+FPOSNX;"Casiers, Nasses (non spécifiés) à Vivaneaux (divers)";
+GNCHAX;"Filets maillants encerclants à Demi-becs (divers) (= Balarou)";
+GNCBIS;"Filets maillants encerclants à Sélar coulisou (= Koulirou)";
+GNCBEN;"Filets maillants encerclants à Orphies, Aiguilles";
+GNCCLP;"Filets maillants encerclants à Sardines, Sardinelles, Harengules";
+GNDHAX;"Filets maillants dérivants à Demi-becs (divers) (= Balarou)";
+GNDFLY;"Filets maillants dérivants à Poissons volants (divers)";
+GNSCGX;"Filets maillants fixes (calés, ancrés) à Carangues (divers)";
+GNSCON;"Filets maillants fixes (calés, ancrés) à Strombes (= Lambis) (divers)";
+GNSBLF;"Filets maillants fixes (calés, ancrés) à Thon à nageoires noires";
+GNSSNX;"Filets maillants fixes (calés, ancrés) à Vivaneaux (divers)";
+HESFLY;"Haveneaux, Épuisettes, Salabardes à Poissons volants (divers)";
+LHPDOX;"Lignes manœuvrées à la main (ou avec canne) à Dorades Coryphènes (divers)";
+LHPBIL;"Lignes manœuvrées à la main (ou avec canne) à Marlins, Makaires";
+LHPBEN;"Lignes manœuvrées à la main (ou avec canne) à Orphies, Aiguilles";
+LHP_DF;"Lignes manœuvrées à la main (ou avec canne) à Poissons de fond (benthiques)";
+LHPSNY;"Lignes manœuvrées à la main (ou avec canne) à Vivaneau à queue jaune";
+LHPSNX;"Lignes manœuvrées à la main (ou avec canne) à Vivaneaux (divers)";
+LLS_DF;"Palangres de fond (calées) à Poissons de fond (benthiques)";
+LLSSNY;"Palangres de fond (calées) à Vivaneau à queue jaune";
+LTF_LP;"Lignes traînantes de fond à Grands pélagiques ";
+LTLKGX;"Lignes de traîne à Thazards (divers)";
+LTP_LP;"Lignes de traîne profondes à Grands pélagiques ";
+LTS_LP;"Lignes de traîne de surface à Grands pélagiques ";
+LX_LP;"Lignes et palangres (non spécifiées) à Grands pélagiques ";
+GND_LP;"Filets maillants dérivants à Grands pélagiques ";
+MILGP;"Miquelon Lignes et palangres à Grands pélagiques";
+FOORSQ;"Pêche à pied à Crabe Cirique";
+FOO_SD;"Pêche à pied à Soudons (divers)";
+PS_BT;"Sennes tournantes coulissantes à Bonites (divers)";
+PSSNY;"Sennes tournantes coulissantes à Vivaneau à queue jaune";
+SBHAX;"Sennes de plage à Demi-becs (divers) (= Balarou)";
+SB_BT;"Sennes de plage à Bonites (divers)";
+SBBIS;"Sennes de plage à Sélar coulisou (= Koulirou)";
+SBBEN;"Sennes de plage à Orphies, Aiguilles";
+SBSNY;"Sennes de plage à Vivaneau à queue jaune";
+FPOUSB;"Casiers, Nasses (non spécifiés) à Vieille commune";
+LLSCOD;"Palangres de fond (calées) à Morue (= Cabillaud)";
+FDVKUI;"Apnée à Troque des Antilles (= Burgo)";
+TRAPA;"Transport à ";
+FDVOST;"Apnée à Huîtres (divers)";
+LHP_BT;"Lignes manœuvrées à la main (ou avec canne) à Bonites (divers)";
+LHPSBX;"Lignes manœuvrées à la main (ou avec canne) à Dorades, Sparidés";
+LHPSBR;"Lignes manœuvrées à la main (ou avec canne) à Pageot rose (= Dorade rose)";
+LHP_GA;"Lignes manœuvrées à la main (ou avec canne) à Gadidés (divers)";
+LHPSAN;"Lignes manœuvrées à la main (ou avec canne) à Lançons (divers)";
+LHPPOL;"Lignes manœuvrées à la main (ou avec canne) à Lieu jaune";
+LHPMUL;"Lignes manœuvrées à la main (ou avec canne) à Mulets (divers)";
+LHPFLX;"Lignes manœuvrées à la main (ou avec canne) à Poissons plats";
+LHPIAX;"Lignes manœuvrées à la main (ou avec canne) à Seiches (divers)";
+LHPTUN;"Lignes manœuvrées à la main (ou avec canne) à Thons (divers)";
+LHPBFT;"Lignes manœuvrées à la main (ou avec canne) à Thon rouge";
+LHMPOL;"Lignes mécanisées (à main ou avec canne) à Lieu jaune";
+LTLPOL;"Lignes de traîne à Lieu jaune";
+GNDSBX;"Filets maillants dérivants à Dorades, Sparidés";
+FPORSQ;"Casiers, Nasses (non spécifiés) à Crabe Cirique";
+OTTCET;"Chaluts jumeaux à Céteau";
+TBBQSC;"Chaluts à perche à Pétoncle blanc (= Vanneau)";
+SDNSQU;"Sennes danoise à Calmars, Encornets";
+SDNCOD;"Sennes danoise à Morue (= Cabillaud)";
+SDNMUM;"Sennes danoise à Rougets (divers)";
+GTRCON;"Trémails à Strombes (= Lambis) (divers)";
+HER;"Hersage de crépidules, draguage d'étoiles de mer";
+LHM_DF;"Lignes mécanisées (à main ou avec canne) à Poissons de fond (benthiques)";
+SDNMZZ;"Sennes danoise à Poissons";
+OTBJOD;"Chaluts de fond à panneaux (1 Navire) à Saint-Pierre";
+OTTCOD;"Chaluts jumeaux à Morue (= Cabillaud)";
+PSSBG;"Sennes tournantes coulissantes à Dorade royale";
+GTRCOD;"Trémails à Morue (= Cabillaud)";
+OTBSHZ;"Chaluts de fond à panneaux (1 Navire) à Aloses (divers)";
+OTMSHZ;"Chaluts pélagiques à panneaux (1 Navire) à Aloses (divers)";
+GNDSHZ;"Filets maillants dérivants à Aloses (divers)";
+GNSSHZ;"Filets maillants fixes (calés, ancrés) à Aloses (divers)";
+GNSANG;"Filets maillants fixes (calés, ancrés) à Baudroie d'Amérique";
+OTBHKS;"Chaluts de fond à panneaux (1 Navire) à Merlu argenté";
+PTBHKE;"Chaluts de fond (2 Navires) à Merlu européen";
+OTBHKE;"Chaluts de fond à panneaux (1 Navire) à Merlu européen";
+OTTHKE;"Chaluts jumeaux à Merlu européen";
+PTMHKE;"Chaluts pélagiques (2 Navires) à Merlu européen";
+OTMHKE;"Chaluts pélagiques à panneaux (1 Navire) à Merlu européen";
+GNDHKE;"Filets maillants dérivants à Merlu européen";
+GNSHKE;"Filets maillants fixes (calés, ancrés) à Merlu européen";
+LLSHKE;"Palangres de fond (calées) à Merlu européen";
+LLDHKE;"Palangres dérivantes à Merlu européen";
+GTRHKE;"Trémails à Merlu européen";
+OTBSLZ;"Chaluts de fond à panneaux (1 Navire) à Saumons, Truites";
+OTMSLZ;"Chaluts pélagiques à panneaux (1 Navire) à Saumons, Truites";
+GNDSLZ;"Filets maillants dérivants à Saumons, Truites";
+GNSSLZ;"Filets maillants fixes (calés, ancrés) à Saumons, Truites";
+PTMALB;"Chaluts pélagiques (2 Navires) à Thon germon";
+OTMALB;"Chaluts pélagiques à panneaux (1 Navire) à Thon germon";
+GNDALB;"Filets maillants dérivants à Thon germon";
+GNSALB;"Filets maillants fixes (calés, ancrés) à Thon germon";
+LHALB;"Lignes de traîne, Lignes à main à Thon germon";
+LHPALB;"Lignes manœuvrées à la main (ou avec canne) à Thon germon";
+LLDALB;"Palangres dérivantes à Thon germon";
+LVDALB;"Palangres verticales dérivantes à Thon germon";
+PSALB;"Sennes tournantes coulissantes à Thon germon";
+TBBSCE;"Chaluts à perche à Coquille St-Jacques Atlantique";
+DRBSCE;"Dragues remorquées par un bateau à Coquille St-Jacques Atlantique";
+SDVSCE;"Plongée sous-marine à Coquille St-Jacques Atlantique";
+TBBSJA;"Chaluts à perche à Coquille St-Jacques Méditerranée";
+DRBSJA;"Dragues remorquées par un bateau à Coquille St-Jacques Méditerranée";
+DRBISC;"Dragues remorquées par un bateau à Pétoncle d'Islande";
+TBBSCA;"Chaluts à perche à Pétoncle géant d'Amérique";
+DRBSCA;"Dragues remorquées par un bateau à Pétoncle géant d'Amérique";
+TBBVSC;"Chaluts à perche à Pétoncle noir";
+OTBVSC;"Chaluts de fond à panneaux (1 Navire) à Pétoncle noir";
+OTTVSC;"Chaluts jumeaux à Pétoncle noir";
+DRBVSC;"Dragues remorquées par un bateau à Pétoncle noir";
+DRBOYG;"Dragues remorquées par un bateau à Huître creuse";
+DRBOYF;"Dragues remorquées par un bateau à Huître plate";
+DHBMUS;"Dragues à main embarquées à Moule commune";
+DRBMUS;"Dragues remorquées par un bateau à Moule commune";
+FOOMUS;"Pêche à pied à Moule commune";
+DHBMSM;"Dragues à main embarquées à Moule méditerranéenne";
+DRBMSM;"Dragues remorquées par un bateau à Moule méditerranéenne";
+DRBVNR;"Dragues remorquées par un bateau à Palourde rose";
+FDVTPS;"Apnée à Palourdes japonaise et européenne";
+DHBTPS;"Dragues à main embarquées à Palourdes japonaise et européenne";
+DRBTPS;"Dragues remorquées par un bateau à Palourdes japonaise et européenne";
+FOOTPS;"Pêche à pied à Palourdes japonaise et européenne";
+SDVTPS;"Plongée sous-marine à Palourdes japonaise et européenne";
+DRBKFA;"Dragues remorquées par un bateau à Praire (= Venus) chambrière";
+FDVINV;"Apnée à Invertébrés";
+FDVCOR;"Apnée à Coraux";
+FDVOYG;"Apnée à Huîtres creuses";
+FDVOYF;"Apnée à Huîtres plates";
+FDVMUS;"Apnée à Moule commune (atlantique)";
+FDVMSM;"Apnée à Moule méditerranéenne";
+CONTPS;"Conchyliculture à Palourdes japonaise et européenne";
+DCL_LP;"Lignes et palangres sur DCP à grands pélagiques (temporaire)";
+DCP_LP;"Senne tournante coulissante sur DCP à grands pélagiques (temporaire)";
+DRB_CJ;"Dragues remorquées par un bateau à Coquille St-Jacques indéterminées";
+DRB_DC;"Dragues remorquées par un bateau à Divers coquillages";
+DRBKLK;"Dragues remorquées par un bateau à Vernis fauve";
+DRBCLX;"Dragues remorquées par un bateau à Autres bivalves";
+DRBINV;"Dragues remorquées par un bateau à Invertébrés";
+DRHMSM;"Dragues à main embarquées à Moule méditerranéenne";
+FIXCRQ;"Pièges non spécifiés à Crabe des neiges";
+LLFMZZ;"Palangres calées flottantes à Divers poissons";
+MIG_LP;"Filets maillants dérivants du large à Grands pélagiques";
+MIL_LP;"Lignes et palangres du large à Grands pélagiques";
+OFGDCP;"Autres engins fixes et autres (autres arts dormants) à Crevettes (divers)";
+OFGINV;"Autres engins fixes et autres (autres arts dormants) à Invertébrés";
+OFGMZZ;"Autres engins fixes et autres (autres arts dormants) à Poissons";
+OFG_DV;"Autres engins fixes et autres (autres arts dormants) à Divers";
+OFGDIA;"Autres engins fixes et autres (autres arts dormants) à poissons diadromes (saumon, truite, alose)";
+OTBOYG;"Chaluts de fond à panneaux (1 Navire) à Huître creuse";
+OTBOYF;"Chaluts de fond à panneaux (1 Navire) à Huître plate";
+OTGDCP;"Engins Traînants à Crevettes (divers)";
+OTG_DV;"Engins Traînants à Divers";
+OTGDIA;"Engins Traînants à poissons diadromes (saumon, truite, alose)";
+SDVINV;"Plongée sous-marine à Invertébrés";
+SDVOYF;"Plongée sous-marine à Huîtres plates";
+SDVOYG;"Plongée sous-marine à Huîtres creuses";
+SDVMSM;"Plongée sous-marine à Moule méditerranéenne";
+SDVMUS;"Plongée sous-marine à Moule commune (atlantique)";
+FOOUCC;"Pêche à pied à Crabe mantou";
+FOOINV;"Pêche à pied à Invertébrés";
+FOOOYF;"Pêche à pied à Huîtres plates";
+FOOOYG;"Pêche à pied à Huîtres creuses";
+FOOMSM;"Pêche à pied à Moule méditerranéenne";
+TBB_CJ;"Chaluts à perche à Coquille St-Jacques (divers)";
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -362,7 +362,7 @@
Boat boat = boatsForRow.get(fixtures.moise().getImmatriculation());
// let's create the contact
- Contact contact = serviceContact.getNewContact(fixtures.joshAsObserver(), row, boat);
+ Contact contact = serviceContact.newContact(fixtures.joshAsObserver(), row, boat);
// by default, a contact must be of type observation
Assert.assertEquals(ObservationType.FIELD_WORK_OBSERVATION, contact.getObservationType());
@@ -399,13 +399,14 @@
// now, i want to create another contact because, at the same
// day, and the same time, i've seen another boat
- contact = serviceContact.getNewContact(fixtures.joshAsObserver(), row, fixtures.samourai());
+ contact = serviceContact.newContact(fixtures.joshAsObserver(), row, fixtures.samourai());
Assert.assertNotNull("service must have pre filled field", contact.getObservationEndDate());
Assert.assertNotNull("service must have pre filled field", contact.getTerrestrialLocation());
// i've made the survey in this last contact, so i can associate an ObsDebCode
- List<ObsDebCode> allObsDebCodes = serviceReferential.getAllObsDebCodes();
- contact.setObsDebCode(allObsDebCodes.get(123));
+ List<ObsDebCode> possibleObsDebCodes =
+ serviceContact.getPossibleObsDebCodes(contact);
+ contact.setObsDebCode(possibleObsDebCodes.get(3));
serviceContact.saveContact(fixtures.joshAsObserver(), contact, false);
}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebPhoneTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebPhoneTest.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebPhoneTest.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -68,7 +68,7 @@
Boat boatToCall = sampleRow.getBoat();
// i can create a contact
- Contact firstContact = serviceContact.getNewContact(fixtures.joshAsObserver(), sampleRow, boatToCall);
+ Contact firstContact = serviceContact.newContact(fixtures.joshAsObserver(), sampleRow, boatToCall);
Assert.assertEquals("Observation type is, by default, a phone call because contact was created from phone sampling plan",
ObservationType.PHONE_CALL, firstContact.getObservationType());
@@ -89,13 +89,18 @@
Assert.assertEquals(2, substituteBoats.size());
Boat substitute = substituteBoats.iterator().next();
- Contact secondContact = serviceContact.getNewContact(fixtures.joshAsObserver(), sampleRow, substitute);
+ Contact secondContact = serviceContact.newContact(fixtures.joshAsObserver(), sampleRow, substitute);
+ secondContact = serviceContact.getContact(secondContact.getTopiaId());
secondContact.setObservationBeginDate(now);
secondContact.setObservationEndDate(DateUtils.addMinutes(now, 30));
// since the guy accepted to answer the survey, i can provide those data
- List<ObsDebCode> allObsDebCodes = serviceReferential.getAllObsDebCodes(sampleRow.getTerrestrialLocation());
- secondContact.setObsDebCode(allObsDebCodes.get(234));
+ List<ObsDebCode> possibleObsDebCodes =
+ serviceContact.getPossibleObsDebCodes(secondContact);
+ Assert.assertEquals("in the ObsDeb codes reference, there is 19 codes "
+ + "associated to region MA",
+ 19, possibleObsDebCodes.size());
+ secondContact.setObsDebCode(possibleObsDebCodes.get(12));
serviceContact.saveContact(fixtures.joshAsObserver(), secondContact, false);
}
}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -138,7 +138,7 @@
serviceSampling.createUpdateSampleRow(row, boats, new SampleRowLogImpl(), getConnectedAdmin());
ServiceContact serviceContact = manager.getServiceContact();
- Contact contact1 = serviceContact.getNewContact(connectedUser, row, boat);
+ Contact contact1 = serviceContact.newContact(connectedUser, row, boat);
contact1.setContactState(ContactState.CONTACT_START);
serviceContact.saveContact(connectedUser, contact1, false);
@@ -249,7 +249,7 @@
ServiceContact serviceContact = manager.getServiceContact();
// First contact : OK
- Contact contact1 = serviceContact.getNewContact(connectedUser, row, boat);
+ Contact contact1 = serviceContact.newContact(connectedUser, row, boat);
contact1.setContactState(ContactState.OBSERVATION_DONE);
Date begin = DateUtil.createDate(3, 5, 2010);
contact1.setObservationBeginDate(begin);
@@ -264,7 +264,7 @@
int result = boat.getNbBoarding(fromDate);
Assert.assertEquals(1, result);
- Contact contact2 = serviceContact.getNewContact(connectedUser, row, boat);
+ Contact contact2 = serviceContact.newContact(connectedUser, row, boat);
// Second contact with ValidationProgram = FALSE
contact2.setContactState(ContactState.OBSERVATION_DONE);
begin = DateUtil.createDate(3, 8, 2010);
@@ -278,7 +278,7 @@
result = boat.getNbBoarding(fromDate);
Assert.assertEquals(1, result);
- Contact contact3 = serviceContact.getNewContact(connectedUser, row, boat);
+ Contact contact3 = serviceContact.newContact(connectedUser, row, boat);
// Third contact with tideBeginDate < fromDate
contact3.setContactState(ContactState.OBSERVATION_DONE);
begin = DateUtil.createDate(3, 3, 2010);
@@ -292,7 +292,7 @@
Assert.assertEquals(1, result);
connectedUser = getConnectedUser(user2, UserRole.ADMIN, ObsProgram.OBSMER);
- Contact contact4 = serviceContact.getNewContact(connectedUser, row2, boat);
+ Contact contact4 = serviceContact.newContact(connectedUser, row2, boat);
// Fourth contact : OK with an other company
contact4.setContactState(ContactState.OBSERVATION_DONE);
begin = DateUtil.createDate(3, 5, 2010);
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -286,7 +286,7 @@
ServiceContact serviceContact = manager.getServiceContact();
// creating the contact will make the boat 174592 eligible for row
- Contact contact1 = serviceContact.getNewContact(connectedUser, row, boat);
+ Contact contact1 = serviceContact.newContact(connectedUser, row, boat);
contact1.setContactState(ContactState.CONTACT_START);
serviceContact.saveContact(connectedUser, contact1, false);
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -640,7 +640,7 @@
ConnectedUser connectedUser = getConnectedUser(observer, UserRole.OBSERVER, ObsProgram.OBSMER);
// Don't use a mock in this case
- Contact newContact = service.getNewContact(connectedUser, sampleRow, boat);
+ Contact newContact = service.newContact(connectedUser, sampleRow, boat);
newContact.setTopiaCreateDate(DateUtil.createDate(2, 3, 2010));
/** EXEC METHOD **/
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 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -694,7 +694,7 @@
// Get boat from list
boat = getBoats().get(boatImmatriculation);
//contacts.createNewContact(boat, sampleRow);
- Contact newContact = serviceContact.getNewContact(user, sampleRowContext, boat);
+ Contact newContact = serviceContact.newContact(user, sampleRowContext, boat);
contacts.setContactSelectedId(newContact.getTopiaId());
return contacts;
}
@@ -705,7 +705,7 @@
SampleRow sampleRow = elligible.getSampleRow();
// Keep it in manager
filterComponent.setSampleRow(sampleRow);
- Contact newContact = serviceContact.getNewContact(user, sampleRow, getBoatSelected());
+ Contact newContact = serviceContact.newContact(user, sampleRow, getBoatSelected());
// contacts.createNewContact(getBoatSelected(), sampleRow);
contacts.setContactSelectedId(newContact.getTopiaId());
return contacts;
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 2011-05-31 13:35:20 UTC (rev 1306)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java 2011-05-31 15:58:46 UTC (rev 1307)
@@ -269,15 +269,8 @@
}
public List<ObsDebCode> getObsDebCodes() {
- TerrestrialLocation regionIfremer;
- SampleRow sampleRow = getContact().getSampleRow();
- if (sampleRow.isPhoneCall()) {
- regionIfremer = sampleRow.getTerrestrialLocation();
- } else {
- regionIfremer = sampleRow.getObservationUnit().getRegionIfremer();
- }
- List<ObsDebCode> obsDebCodes = serviceReferential.
- getAllObsDebCodes(regionIfremer);
+ List<ObsDebCode> obsDebCodes = serviceContact.
+ getPossibleObsDebCodes(getContact());
return obsDebCodes;
}
1
0
31 May '11
Author: bleny
Date: 2011-05-31 13:35:20 +0000 (Tue, 31 May 2011)
New Revision: 1306
Log:
add regionalization of the phone call sampling plan ; refactor ObsDeb tests
Added:
trunk/wao-business/src/test/java/fr/ifremer/wao/business/
trunk/wao-business/src/test/java/fr/ifremer/wao/business/AbstractBusinessTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFixtures.java
trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebPhoneTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/AbstractServiceTest.java
Removed:
trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/WaoUtilsTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.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_fr_FR.properties
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -25,6 +25,7 @@
import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.DataReliability;
import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.bean.ObservationType;
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.UserFilter;
import fr.ifremer.wao.entity.Company;
@@ -391,7 +392,16 @@
}
if (filter.getRegionIfremer() != null) {
- query.addEquals(sampleRowProperty.observationUnitProperty().regionIfremer(), filter.getRegionIfremer());
+ String regionIfremerProperty;
+ if (filter.getExpectedObservationType() ==
+ ObservationType.FIELD_WORK_OBSERVATION) {
+ regionIfremerProperty = sampleRowProperty.
+ observationUnitProperty().
+ regionIfremer();
+ } else {
+ regionIfremerProperty = sampleRowProperty.terrestrialLocation();
+ }
+ query.addEquals(regionIfremerProperty, filter.getRegionIfremer());
}
// XXX 2011 04 12 using UserFilter#observer for both samplingfilter and
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -131,12 +131,14 @@
addCompanies(sampleRow.getCompany());
if (ObsProgram.OBSDEB.equals(obsProgram)) {
addAllObservers(sampleRow.getObservers());
- TerrestrialDivision observationUnit = sampleRow.getObservationUnit();
- if (observationUnit != null) {
+ if (sampleRow.isFieldWorkObservation()) {
+ TerrestrialDivision observationUnit = sampleRow.getObservationUnit();
addObservationUnits(observationUnit);
addSkillZone(observationUnit);
addSubPopulation(observationUnit);
addRegionIfremers(observationUnit.getRegionIfremer());
+ } else {
+ addRegionIfremers(sampleRow.getTerrestrialLocation());
}
} else {
// for both ObsMer and ObsVente
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -57,6 +57,12 @@
return isDistrict;
}
+ @Override
+ public boolean isRegion() {
+ boolean isRegion = getLocationType() == LocationType.REGION;
+ return isRegion;
+ }
+
/** Get a description of the location like « Maracaibo (Port, Venezuela) »
*
*/
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -28,6 +28,7 @@
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowImpl;
import fr.ifremer.wao.entity.TerrestrialDivision;
+import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.io.csv2.Common;
import fr.ifremer.wao.io.csv2.ExportableColumn;
@@ -38,6 +39,7 @@
import fr.ifremer.wao.io.csv2.ValueParserFormatter;
import fr.ifremer.wao.io.csv2.models.operations.BoatParserFormatter;
import fr.ifremer.wao.io.csv2.models.operations.CompanyParserFormatter;
+import fr.ifremer.wao.io.csv2.models.operations.RegionValueParserFormatter;
import fr.ifremer.wao.io.csv2.models.operations.UsersParserFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,7 +58,6 @@
private static final Logger log =
LoggerFactory.getLogger(SamplingPlanImportExportModel.class);
-
static class ObservationUnitParserFormatter implements ValueParserFormatter<TerrestrialDivision> {
/** Index Region code -> UO Code -> Terrestrial division. */
@@ -155,6 +156,8 @@
protected List<Boat> allActiveBoats;
+ protected List<TerrestrialLocation> allRegions;
+
protected ConnectedUser connectedUser;
protected ModelBuilder<SampleRow> modelBuilder;
@@ -167,12 +170,17 @@
/** Constructor used for import */
public SamplingPlanImportExportModel(ConnectedUser connectedUser,
- List<TerrestrialDivision> observationUnits, List<WaoUser> allWaoUsers, List<Company> allCompanies, List<Boat> allActiveBoats) {
+ List<TerrestrialDivision> observationUnits,
+ List<WaoUser> allWaoUsers,
+ List<Company> allCompanies,
+ List<Boat> allActiveBoats,
+ List<TerrestrialLocation> allRegions) {
this.connectedUser = connectedUser;
this.allWaoUsers = allWaoUsers;
this.observationUnits = observationUnits;
this.allCompanies = allCompanies;
this.allActiveBoats = allActiveBoats;
+ this.allRegions = allRegions;
}
/** Constructor used for export */
@@ -247,6 +255,10 @@
new Common.BooleanParserFormatter(false, false));
} else if (observationType == ObservationType.PHONE_CALL) {
modelBuilder.newColumnForImportExport(
+ "REGION_IFREMER",
+ SampleRow.PROPERTY_TERRESTRIAL_LOCATION,
+ new RegionValueParserFormatter(allRegions));
+ modelBuilder.newColumnForImportExport(
"OBSERVATION_DATE",
SampleRow.PROPERTY_EXPECTED_DATE,
Common.WEEK);
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 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -691,7 +691,12 @@
}
@Override
- protected List<ObsDebCode> executeGetAllObsDebCodes(TopiaContext transaction) throws Exception {
+ protected List<ObsDebCode> executeGetAllObsDebCodes(
+ TopiaContext transaction, TerrestrialLocation region)
+ throws Exception {
+ if ( ! region.isRegion()) {
+ throw new IllegalArgumentException();
+ }
ObsDebCodeDAO dao = WaoDAOHelper.getObsDebCodeDAO(transaction);
List<ObsDebCode> allObsDebCodes = dao.findAll();
return allObsDebCodes;
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 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -39,6 +39,7 @@
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.FacadeRow;
import fr.ifremer.wao.bean.FacadeRowImpl;
+import fr.ifremer.wao.bean.LocationType;
import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.ObservationType;
import fr.ifremer.wao.bean.SamplingFilter;
@@ -77,6 +78,7 @@
import fr.ifremer.wao.entity.TerrestrialDivision;
import fr.ifremer.wao.entity.TerrestrialDivisionDAO;
import fr.ifremer.wao.entity.TerrestrialLocation;
+import fr.ifremer.wao.entity.TerrestrialLocationDAO;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.entity.WaoUserDAO;
import fr.ifremer.wao.io.ImportRefusedException;
@@ -384,6 +386,7 @@
SampleRow.PROPERTY_GROUP_NAME,
SampleRow.PROPERTY_OBSERVERS,
SampleRow.PROPERTY_OBSERVATION_UNIT,
+ SampleRow.PROPERTY_TERRESTRIAL_LOCATION,
SampleRow.PROPERTY_BLANK_ROW);
} else {
oldRow.clearSampleMonth();
@@ -1068,8 +1071,19 @@
BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction);
List<Boat> allActiveBoats = boatDAO.findAllByActive(true);
+ TerrestrialLocationDAO terrestrialLocationDAO =
+ WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+
+ List<TerrestrialLocation> allRegions = terrestrialLocationDAO.
+ findAllByLocationTypeOrdinal(LocationType.REGION.ordinal());
+
ImportModel<SampleRow> samplingPlanImportModel =
- new SamplingPlanImportExportModel(connectedUser, observationUnits, waoUsers, allCompanies, allActiveBoats);
+ new SamplingPlanImportExportModel(connectedUser,
+ observationUnits,
+ waoUsers,
+ allCompanies,
+ allActiveBoats,
+ allRegions);
try {
Import<SampleRow> samplingPlanImport = new Import<SampleRow>(samplingPlanImportModel, input);
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 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-05-31 13:35:20 UTC (rev 1306)
@@ -1,179 +1,179 @@
ContactPieChartConstant.OTHER=Autres
-ContactPieChartConstant.REALIZED=R\u00e9alis\u00e9s
-ContactPieChartConstant.REFUSED=Refus\u00e9s
-ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00e9finitif
+ContactPieChartConstant.REALIZED=Réalisés
+ContactPieChartConstant.REFUSED=Refusés
+ContactState.CONTACT_DEFINITELY_REFUSED=Refus définitif
ContactState.CONTACT_REFUSED=Refus
ContactState.CONTACT_START=Contact pris
-ContactState.OBSERVATION_CANCELLED=Annul\u00e9e
-ContactState.OBSERVATION_DONE=Observation r\u00e9alis\u00e9e
-ContactState.OBSERVATION_EXPECTED=Observation programm\u00e9e
-ContactState.OBSERVATION_NOT_DONE=Non observ\u00e9
-DataReliability.CORRECTION_ASKED=Correction demand\u00e9e
+ContactState.OBSERVATION_CANCELLED=Annulée
+ContactState.OBSERVATION_DONE=Observation réalisée
+ContactState.OBSERVATION_EXPECTED=Observation programmée
+ContactState.OBSERVATION_NOT_DONE=Non observé
+DataReliability.CORRECTION_ASKED=Correction demandée
DataReliability.DOUBTFUL=Douteuse
-DataReliability.NOT_PROVIDED=Non contr\u00f4l\u00e9e
+DataReliability.NOT_PROVIDED=Non contrôlée
DataReliability.NOT_RELIABLE=Non exploitable
DataReliability.RELIABLE=Exploitable
DataReliability.UNKNOWN=Inconnue
-GlobalIndicatorValue.BAD=P\u00e9nalit\u00e9 de niveau 1
+GlobalIndicatorValue.BAD=Pénalité de niveau 1
GlobalIndicatorValue.GOOD=Bonus de niveau 1
GlobalIndicatorValue.NEUTRAL=Conforme au cahier des charges
-GlobalIndicatorValue.VERY_BAD=P\u00e9nalit\u00e9 de niveau 2
+GlobalIndicatorValue.VERY_BAD=Pénalité de niveau 2
GlobalIndicatorValue.VERY_GOOD=Bonus de niveau 2
-LocationType.AUCTION=Cri\u00e9e
+LocationType.AUCTION=Criée
LocationType.DISTRICT=Quartier maritime
LocationType.PORT=Port
-LocationType.REGION=R\u00e9gion Ifremer
+LocationType.REGION=Région Ifremer
ObsProgram.OBSDEB=ObsDeb
ObsProgram.OBSMER=ObsMer
ObsProgram.OBSVENTE=ObsVente
ObservationType.FIELD_WORK_OBSERVATION=Observation de terrain
-ObservationType.FIELD_WORK_SURVEY=Enqu\u00eate de terrain
-ObservationType.PHONE_CALL=Enqu\u00eate t\u00e9l\u00e9phonique
-SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultan\u00e9 \: Toutes esp\u00e8ces commerciales
-SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1+G2
-SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1
-SamplingStrategy.SPECIFIC_STOCK=Stock sp\u00e9cifique
-SynthesisId.DISTINCT_BOATS_COUNTS=Nombres de navires distincts observ\u00e9s
-SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un m\u00eame navire conforme aux exigences
-SynthesisId.GRAPH_SAMPLING=Taux de r\u00e9alisation du plan d'\u00e9chantillonage
-SynthesisId.IND_ALLEGRO_REACTIVITY=D\u00e9lais de transmission des donn\u00e9es
-SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqu\u00e9s
-SynthesisId.IND_CONTACT_STATE=\u00c9tats des contacts
-SynthesisId.IND_DATA_RELIABILITY=Qualit\u00e9 de la donn\u00e9e
-SynthesisId.OBSERVATION_HOUR=Heures d'observation dans la journ\u00e9e
+ObservationType.FIELD_WORK_SURVEY=Enquête de terrain
+ObservationType.PHONE_CALL=Enquête téléphonique
+SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultané \: Toutes espèces commerciales
+SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultané \: espèces G1+G2
+SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultané \: espèces G1
+SamplingStrategy.SPECIFIC_STOCK=Stock spécifique
+SynthesisId.DISTINCT_BOATS_COUNTS=Nombres de navires distincts observés
+SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un même navire conforme aux exigences
+SynthesisId.GRAPH_SAMPLING=Taux de réalisation du plan d'échantillonage
+SynthesisId.IND_ALLEGRO_REACTIVITY=Délais de transmission des données
+SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqués
+SynthesisId.IND_CONTACT_STATE=États des contacts
+SynthesisId.IND_DATA_RELIABILITY=Qualité de la donnée
+SynthesisId.OBSERVATION_HOUR=Heures d'observation dans la journée
UserRole.ADMIN=Administrateur
UserRole.COORDINATOR=Coordinateur
-UserRole.GUEST=Invit\u00e9
+UserRole.GUEST=Invité
UserRole.OBSERVER=Observateur
UserRole.PROFESSIONAL=Professionnel
csv.import.error.missingMandatoryHeaders=Les champs obligatoires %s sont manquants
-csv.import.error.unableToParseValue=Erreur lors de l'interpr\u00e9tation de la valeur '%s' (colonne '%s', ligne %s)
-csv.import.error.unableToReadField=Impossible de lire la colonne '%s' \u00e0 la ligne %s
+csv.import.error.unableToParseValue=Erreur lors de l'interprétation de la valeur '%s' (colonne '%s', ligne %s)
+csv.import.error.unableToReadField=Impossible de lire la colonne '%s' à la ligne %s
csv.import.error.unableToReadLine=Impossible de lire la ligne %s
-csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entit\u00e9 '%s', ligne %s, column '%s')
+csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entité '%s', ligne %s, column '%s')
csv.import.error.unrecognizedHeaders=Les champs %s ne sont pas reconnus. Les champs possibles sont %s.
csv.import.logComment=Modification depuis import
-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écifié
+fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorquées par bateau
+fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues à main
+fr.ifremer.wao.entity.FishingGearDCF.FAR=Pièges aériens
+fr.ifremer.wao.entity.FishingGearDCF.FCN=Éperviers
+fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-spécifiés)
+fr.ifremer.wao.entity.FishingGearDCF.FIX=Pièges (non-spécifiés)
+fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pièges 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 à l'étalage (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élants (non spécifiés)
+fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis à civelles
+fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non spécifiés)
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érivants (filets dérivants)
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és (ancrés)
+fr.ifremer.wao.entity.FishingGearDCF.GT=Trémailleurs
+fr.ifremer.wao.entity.FishingGearDCF.GTN=Trémails et filets maillants combinés
+fr.ifremer.wao.entity.FishingGearDCF.GTR=Trémails
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écanisées
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écolte (non spécifiés)
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 à main et lignes avec cannes
+fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes à main et lignes à cannes
+fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non spécifiées)
+fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres dérivantes
+fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres calées ou semi-flottantes
+fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulevés (non spécifiés)
+fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulevés manœuvrées du bateau
+fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulevés portatifs
+fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulevés fixes manœuvrées du rivage
+fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de traîne
+fr.ifremer.wao.entity.FishingGearDCF.LX=Hameçons et lignes (non spécifiés)
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écifiés
+fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts à panneaux (non spécifié)
+fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond à panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts pélagiques à panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux à 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.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.PS1=Filets tournants, sennes coulissantes manœuvrées par un bateau
+fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes manœuvrées par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-bœufs (non spécifié)
+fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-bœufs de fond
+fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-bœufs pélagiques
+fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de pêche révréative
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œuvrées par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes écossaises
+fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes halées à bord
+fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non spécifiées)
+fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non spécifié)
+fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts à perche
+fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut à langoustines
+fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut à crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut pélagique (non spécifié)
+fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut à crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non spécifié)
+fr.ifremer.wao.entity.TargetSpeciesDCF.=Non spécifié
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èces catadromes
+fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustacés
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èces démersales
+fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Espèces 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élagiques
fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques
-fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00e9lagiques
-wao.business.boat.validation.immatriculation.wrongFormat=L'immatriculation du navire doit \u00eatre form\u00e9e de 6 chiffres
-wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut pr\u00e9ciser dans le commentaire administrateur pourquoi la donn\u00e9e est '%s'
-wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut pr\u00e9ciser la qualit\u00e9 de la donn\u00e9e avant de valider
+fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits pélagiques
+wao.business.boat.validation.immatriculation.wrongFormat=L'immatriculation du navire doit être formée de 6 chiffres
+wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut préciser dans le commentaire administrateur pourquoi la donnée est '%s'
+wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut préciser la qualité de la donnée avant de valider
wao.business.entity.UserProfile.description=%s sur %s%s
-wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseign\u00e9 dans WAO l'information suivante \:\n\nMar\u00e9e \: %s\nM\u00e9tier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao
+wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseigné dans WAO l'information suivante \:\n\nMarée \: %s\nMétier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao
wao.business.mammalsCapture.mail.subject=Obsmer WAO\: Information sur capture accidentelle
wao.business.other=Autre
wao.business.readOnly=(lecture seule)
-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.boat.canCreateContact=Impossible de créer un nouveau contact pour la société %1$s et le navire %2$s (%3$d)
+wao.error.boat.getNbBoarding=Impossible de récupérer le nombre d'embarquements réels depuis le %1$s
+wao.error.boatInfos.getNbBoardingForCompany=Impossible de récupérer le nombre d'embarquements réels depuis le %1$s pour la société %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écupération 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émarrage 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ées réels pour le mois de %1$s [ligne \: %2$s]
+wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire écrit par %1$s
+wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de créer ou modifier les informations liés au navire %1$d pour la société %2$s
+wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires sélectionnés
wao.error.serviceBoat.getActivityCalendarLogAccessFile=
wao.error.serviceBoat.getActivityCalendarLogFile=
wao.error.serviceBoat.getAllActiveBoats=
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écupérer 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îne d'immatriculations est incorrect \! Chaque immatriculation doit posséder 6 chiffres
+wao.error.serviceBoat.getCompanyBoatInfos=Impossible de récupérer les informations du navire immatriculé %1$d pour la société %2$s
+wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activité du navire %1$s (%2$d)
wao.error.serviceBoat.getNbBoatsByFilter=Impossible de filtrer la liste des navires
wao.error.serviceBoat.getPossibleValuesForFilter=
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.
+wao.error.serviceBoat.importActivityCalendarCsv=Problème d'import du fichier CSV des calendriers d'activité
+wao.error.serviceBoat.importBoatCsv=Problème d'import du fichier CSV. Vérifiez l'en-tête du fichier.
wao.error.serviceBoat.newBoatFilter=
wao.error.serviceCartography.exportContactMotifsStatisticsKml=
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ées des quartiers des navires. Vérifiez 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és
wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact
wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.getSubstitutesForBoat=
@@ -185,7 +185,7 @@
wao.error.serviceContact.updateSampleMonthTidesValue=
wao.error.serviceContact.validateContact=
wao.error.serviceNews.getNewNews=
-wao.error.serviceNews.getNews=Impossible de r\u00e9cup\u00e9rer l'ensemble des news
+wao.error.serviceNews.getNews=Impossible de récupérer l'ensemble des news
wao.error.serviceNews.saveNews=Impossible d'enregistrer la news ayant pour titre '%1$s'
wao.error.serviceReferential.getAllContactStateMotifs=
wao.error.serviceReferential.getAllObsDebCodes=
@@ -195,13 +195,13 @@
wao.error.serviceReferential.getAllTerrestrialLocations=
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.getFishingZones=Impossible de charger la liste des secteurs de pêche
+wao.error.serviceReferential.getProfessions=Impossible de charger la liste des métiers
+wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de pêche
wao.error.serviceReferential.getTerrestrialDistrict=
wao.error.serviceReferential.importContactStateMotifs=
-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.importDCFcodes=Impossible de créer le référentiel des codes DCF
+wao.error.serviceReferential.importFishingZoneCsv=Problème d'import du fichier CSV. Vérifiez l'en-tête du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de détails.
wao.error.serviceReferential.importInitialContactStateMotifs=
wao.error.serviceReferential.importObsDebCodes=
wao.error.serviceReferential.importTerrestrialDivisions=
@@ -210,72 +210,72 @@
wao.error.serviceReferential.updateAllContactStatesMotifs=
wao.error.serviceSampling.countSampleRows=
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'échantillon
+wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'échantillon \: %1$s
+wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'échantillonnage sur la période du %1$s au %2$s
wao.error.serviceSampling.exportSamplingPlanICalendar=
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écupérer un nouveau code pour une ligne d'échantillonnage
wao.error.serviceSampling.getNewSampleRowLog=
wao.error.serviceSampling.getPossibleValuesForFilter=
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.getSampleRow=Impossible de charger la ligne d'échantillon ayant pour identifiant \: %1$s
+wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'échantillon ayant pour code %1$s
+wao.error.serviceSampling.getSampleRowsByFilter=Impossible de récupérer la liste des lignes du plan d'échantillonnage
wao.error.serviceSampling.getSampleRowsForEligibility=
-wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage
+wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de récupérer la liste des lignes du plan d'échantillonnage
wao.error.serviceSampling.importSamplingPlanCsv=Erreur lors de l'import du plan
wao.error.serviceSampling.newOperation=
wao.error.serviceSampling.newSampleRow=
wao.error.serviceSampling.newSamplingFilter=
wao.error.serviceSampling.validateSampleRow=
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écupérer les données du graphique concernant les embarquements sur les navires
wao.error.serviceSynthesis.getBoatsCount=
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écupérer l'indicateur de réactivité sur les dates de saisies dans Allegro
wao.error.serviceSynthesis.getContactPieChartData=
wao.error.serviceSynthesis.getContactPieChartDataByBoatDistrict=
wao.error.serviceSynthesis.getContactStateMotifsPieChartDataByBoatDistrict=
-wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00e9cup\u00e9rer les statistiques sur les \u00e9tats des contacts
+wao.error.serviceSynthesis.getContactStateStatistics=Impossible de récupérer les statistiques sur les états 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.getDataSampling=Impossible de récupérer les données pour le graphique dynamique des efforts de marées
wao.error.serviceSynthesis.getDistinctBoatsCounts=
-wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es concernant les indicateurs pour la synth\u00e8se globale
+wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de récupérer les données concernant les indicateurs pour la synthèse 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.getNonComplianceBoardingIndicator=Impossible de récupérer l'indicateur de non respect du nombre d'observateurs embarqués
wao.error.serviceSynthesis.getObservationHours=
-wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00e0 jour les param\u00e8tres de la synth\u00e8se globale
+wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre à jour les paramètres de la synthèse globale
wao.error.serviceUser.addTokensToAllProfiles=
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éer l'administrateur par défaut
+wao.error.serviceUser.createUpdateCompany=Impossible de créer ou de mettre à jour la société
+wao.error.serviceUser.createUpdateUser=Impossible de créer ou de mettre à jour l'utilisateur
+wao.error.serviceUser.deleteCompany=Impossible de supprimer la société ou de vérifier 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écupérer la liste des sociétés
wao.error.serviceUser.getCompany=
wao.error.serviceUser.getConnectedUserByToken=
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écupérer la liste des observateurs
wao.error.serviceUser.getUserByToken=
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écupérer la liste des utilisateurs de la société %1$s
wao.export.ical.desc=avec %s
wao.export.ical.title=Observation ObsDeb
-wao.import.contact.failure.boatMissing=Il faut pr\u00e9ciser l'immatriculation du navire associ\u00e9 au contact
-wao.import.contact.failure.locationTypeMissing=Le type du lieu doit \u00eatre renseign\u00e9
-wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associ\u00e9e
+wao.import.contact.failure.boatMissing=Il faut préciser l'immatriculation du navire associé au contact
+wao.import.contact.failure.locationTypeMissing=Le type du lieu doit être renseigné
+wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associée
wao.import.contact.failure.terrestrialLocationMissing=Il manque le code du lieu
wao.import.contact.failure.wrongBoat=Il n'y a pas de navire avec l'immatriculation '%s'
wao.import.contact.failure.wrongSampleRowCode=Il n'y a pas de ligne du plan avec le code '%s'
wao.import.contact.failure.wrongTerrestrialLocation=Il n'y a pas de lieu de type '%s' ayant pour code '%s'
-wao.import.failure.wrongObsDebCode=Il n'y a pas de code m\u00e9tier ayant pour code '%s'
+wao.import.failure.wrongObsDebCode=Il n'y a pas de code métier ayant pour code '%s'
wao.import.failure.wrongUser=Il n'y a pas d'utilisateur ayant pour identifiant '%s'
-wao.validation.sampleRow.conflictOnObserver=L'observateur %s ne peut \u00eatre associ\u00e9 \u00e0 la ligne %s car il doit observer, le m\u00eame jour, pour la ligne %s
+wao.validation.sampleRow.conflictOnObserver=L'observateur %s ne peut être associé à la ligne %s car il doit observer, le même jour, pour la ligne %s
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Deleted: trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -1,661 +0,0 @@
-/*
- * #%L
- * Wao :: Business
- * %%
- * Copyright (C) 2009 - 2010 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-package fr.ifremer.wao;
-
-import fr.ifremer.wao.bean.ConnectedUser;
-import fr.ifremer.wao.bean.ConnectedUserImpl;
-import fr.ifremer.wao.bean.ContactState;
-import fr.ifremer.wao.bean.ObsProgram;
-import fr.ifremer.wao.bean.UserRole;
-import fr.ifremer.wao.entity.Boat;
-import fr.ifremer.wao.entity.BoatDAO;
-import fr.ifremer.wao.entity.Company;
-import fr.ifremer.wao.entity.CompanyDAO;
-import fr.ifremer.wao.entity.Contact;
-import fr.ifremer.wao.entity.ContactDAO;
-import fr.ifremer.wao.entity.ContactImpl;
-import fr.ifremer.wao.entity.ElligibleBoat;
-import fr.ifremer.wao.entity.ElligibleBoatDAO;
-import fr.ifremer.wao.entity.SampleRow;
-import fr.ifremer.wao.entity.SampleRowDAO;
-import fr.ifremer.wao.entity.UserProfileImpl;
-import fr.ifremer.wao.entity.WaoUser;
-import fr.ifremer.wao.entity.WaoUserDAO;
-import fr.ifremer.wao.entity.WaoUserImpl;
-import fr.ifremer.wao.service.ServiceBoat;
-import fr.ifremer.wao.service.ServiceContact;
-import fr.ifremer.wao.service.ServiceReferential;
-import fr.ifremer.wao.service.ServiceSampling;
-import fr.ifremer.wao.service.ServiceSamplingImpl;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.util.DateUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.InputStream;
-import java.util.Date;
-import java.util.List;
-
-/**
- * AbstractServiceTest
- *
- * Created: 29 avr. 2010
- *
- * @author fdesbois
- */
-public abstract class AbstractServiceTest {
-
- private static final Logger log =
- LoggerFactory.getLogger(AbstractServiceTest.class);
-
- protected static TestManager manager;
-
- protected ServiceSamplingImpl serviceSampling;
-
- protected static final String BOAT_DEFAULT_NAME = "SPRINGFIELD";
- protected static final int BOAT_DEFAULT_IMMATRICULATION = 123456;
- protected static final String SAMPLE_ROW_DEFAULT_CODE = "2010_0001";
- protected static final String COMPANY_DEFAULT_NAME = "TARTANPION";
- protected static final String OBSERVER_DEFAULT_FIRST_NAME = "Homer";
- protected static final String OBSERVER_DEFAULT_LAST_NAME = "Simpson";
- protected static final String OBSERVER_DEFAULT_LOGIN = "homer";
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- // Create tmpdir if not exist
- String tmpdir = System.getProperty("java.io.tmpdir");
- File file = new File(tmpdir);
- if (!file.exists()) {
- boolean b = file.mkdirs();
- if (!b) {
- if (log.isWarnEnabled())
- log.warn("Could not create tmp directory : " + file);
- }
- if (log.isInfoEnabled()) {
- log.info("tmp dir : " + file + " was created");
- }
- }
- manager = new TestManager();
- }
-
- @Before
- public void setUp() throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Start manager");
- }
- manager.start();
- serviceSampling = (ServiceSamplingImpl) manager.getServiceSampling();
- }
-
- @After
- public void tearDown() throws Exception {
- manager.stop();
- }
-
- /**
- * Create a company : <br />
- * <ul>
- * <li>first name : Homer</li>
- * <li>last name : Simpson</li>
- * <li>login : homer</li>
- * <li>company : ref to TARTANPION</li>
- * <li>role : OBSERVER</li>
- * </ul>
- *
- * @return the new Company
- * @throws TopiaException
- */
- protected WaoUser createDefaultObserver() throws TopiaException {
- TopiaContext transaction = manager.getContext().beginTransaction();
- WaoUser observer = null;
- try {
- WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
- observer = userDAO.create(
- WaoUser.PROPERTY_COMPANY, findDefaultCompany(),
- WaoUser.PROPERTY_LOGIN, OBSERVER_DEFAULT_LOGIN,
- WaoUser.PROPERTY_FIRST_NAME, OBSERVER_DEFAULT_FIRST_NAME,
- WaoUser.PROPERTY_LAST_NAME, OBSERVER_DEFAULT_LAST_NAME);
- if (log.isDebugEnabled()) {
- log.debug("Create default observer : " + observer);
- }
-
- transaction.commitTransaction();
- } finally {
- transaction.closeContext();
- }
- return observer;
- }
-
- /**
- * Create a user : <br />
- * <ul>
- * <li>first name : null</li>
- * <li>last name : null</li>
- * <li>login : defined with {@code login} argument</li>
- * <li>company : defined with {@code company} argument</li>
- * <li>role : defined with {@code role} argument</li>
- * </ul>
- *
- * @param login String unique login for the new user
- * @param role UserRole of the user
- * @param company Company parent of the user
- * @return the new WaoUser
- * @throws TopiaException
- */
- protected WaoUser createUser(String login, UserRole role,
- Company company) throws TopiaException {
- TopiaContext transaction = manager.getContext().beginTransaction();
- WaoUser observer = null;
- try {
- WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
- observer = userDAO.create(
- WaoUser.PROPERTY_COMPANY, company,
- WaoUser.PROPERTY_LOGIN, login,
- WaoUser.PROPERTY_FIRST_NAME, null,
- WaoUser.PROPERTY_LAST_NAME, null);
-
- if (log.isDebugEnabled()) {
- log.debug("Create observer : " + observer);
- }
-
- transaction.commitTransaction();
- } finally {
- transaction.closeContext();
- }
- return observer;
- }
-
- /**
- * Create a company : <br />
- * <ul>
- * <li>name : TARTANPION</li>
- * </ul>
- *
- * @return the new Company
- * @throws TopiaException
- */
- protected Company createDefaultCompany() throws TopiaException {
- return createCompany(COMPANY_DEFAULT_NAME);
- }
-
- /**
- * Create a company : <br />
- * <ul>
- * <li>name : defined with {@code name} argument</li>
- * </ul>
- *
- * @param name
- * @return the new Company
- * @throws TopiaException
- */
- protected Company createCompany(String name) throws TopiaException {
- Company company = null;
- TopiaContext transaction = manager.getContext().beginTransaction();
- try {
- CompanyDAO dao = WaoDAOHelper.getCompanyDAO(transaction);
-
- company = dao.create();
- company.setName(name);
-
- transaction.commitTransaction();
- } finally {
- transaction.closeContext();
- }
-
- return company;
- }
-
- /**
- * Create a default sampleRow : <br />
- * <ul>
- * <li>code : 2010_0001</li>
- * <li>company : TARTANPION</li>
- * </ul>
- *
- * @return the new SampleRow
- * @throws TopiaException
- */
- protected SampleRow createDefaultSampleRow() throws TopiaException {
- return createSampleRow(SAMPLE_ROW_DEFAULT_CODE, findDefaultCompany());
- }
-
- /**
- * Create a default sampleRow : <br />
- * <ul>
- * <li>code : defined with {@code code} argument</li>
- * <li>company : defined with {@code company} argument</li>
- * </ul>
- *
- * @param code
- * @param company
- * @return the new SampleRow
- * @throws TopiaException
- */
- protected SampleRow createSampleRow(String code, Company company)
- throws TopiaException {
- SampleRow row = null;
- TopiaContext transaction = manager.getContext().beginTransaction();
- try {
- SampleRowDAO dao =
- WaoDAOHelper.getSampleRowDAO(transaction);
-
- row = dao.create();
- row.setCode(code);
- row.setCompany(company);
- if (log.isDebugEnabled()) {
- log.debug("Create sampleRow : " + row);
- }
-
- transaction.commitTransaction();
- } finally {
- transaction.closeContext();
- }
-
- return row;
- }
-
- /**
- * Create a default boat : <br />
- * <ul>
- * <li>immatriculation : 123456</li>
- * <li>name : SPRINGFIELD</li>
- * <li>active : true</li>
- * </ul>
- *
- * @return the new Boat
- * @throws TopiaException
- */
- protected Boat createDefaultBoat() throws TopiaException {
- return createBoat(123456, "SPRINGFIELD");
- }
-
- /**
- * Create a boat : <br />
- * <ul>
- * <li>immatriculation : defined with {@code immatriculation} argument</li>
- * <li>name : defined with {@code name} argument</li>
- * <li>active : true</li>
- * </ul>
- *
- * @param immatriculation
- * @param name
- * @return the new Boat
- * @throws TopiaException
- */
- protected Boat createBoat(int immatriculation, String name)
- throws TopiaException {
- Boat boat = null;
- TopiaContext transaction = manager.getContext().beginTransaction();
- try {
- BoatDAO dao = WaoDAOHelper.getBoatDAO(transaction);
-
- // CREATE
- boat = dao.create();
- boat.setImmatriculation(immatriculation);
- boat.setName(name);
- boat.setActive(true);
- if (log.isDebugEnabled()) {
- log.debug("Create boat : " + boat);
- }
-
- transaction.commitTransaction();
-
- } finally {
- transaction.closeContext();
- }
- return boat;
- }
-
- /**
- * Create an elligibleBoat : <br />
- * <ul>
- * <li>sampleRow : defined with {@code row} argument</li>
- * <li>boat : defined with {@code boat} argument</li>
- * <li>companyActive : true if {@code company} is true, null otherwise</li>
- * <li>globalActive : true if {@code company} is false, false otherwise</li>
- * </ul>
- *
- * @param row to set for ElligibleBoat
- * @param boat to set for ElligibleBoat
- * @param company true for companyActive, false for globalActive
- * @return the new ElligibleBoat
- * @throws TopiaException
- */
- protected ElligibleBoat createElligibleBoat(SampleRow row, Boat boat,
- boolean company) throws TopiaException {
-
- ElligibleBoat elligibleBoat = null;
- TopiaContext transaction = manager.getContext().beginTransaction();
- try {
- ElligibleBoatDAO dao =
- WaoDAOHelper.getElligibleBoatDAO(transaction);
-
- // CREATE
- elligibleBoat = dao.create();
- elligibleBoat.setBoat(boat);
- elligibleBoat.setSampleRow(row);
- if (company) {
- elligibleBoat.setCompanyActive(true);
- } else {
- elligibleBoat.setGlobalActive(true);
- }
- transaction.commitTransaction();
-
- } finally {
- transaction.closeContext();
- }
- return elligibleBoat;
- }
-
- /**
- * Create a default contact : <br />
- * <ul>
- * <li>boat : SPRINGFIELD</li>
- * <li>observer : homer</li>
- * <li>sampleRow : 2010_0001</li>
- * <li>state : CONTACT_START</li>
- * <li>companyValidation : null</li>
- * <li>programValidation : null</li>
- * </ul>
- *
- * @return the new Contact
- * @throws TopiaException
- */
- protected Contact createDefaultContact() throws TopiaException {
- TopiaContext transaction = manager.getContext().beginTransaction();
- Contact contact = null;
- try {
- ContactDAO dao = WaoDAOHelper.getContactDAO(transaction);
-
- // CREATE
- contact = dao.create();
- contact.setBoat(findDefaultBoat());
- contact.setContactState(ContactState.CONTACT_START);
- contact.setMainObserver(findDefaultObserver());
- contact.setSampleRow(findDefaultSampleRow());
- if (log.isDebugEnabled()) {
- log.debug("Create contact : " + contact);
- }
-
- transaction.commitTransaction();
-
- } finally {
- transaction.closeContext();
- }
- return contact;
- }
-
- protected Company findDefaultCompany() throws TopiaException {
- Company findCompany = findCompanyByName(BOAT_DEFAULT_NAME);
- if (findCompany == null) {
- findCompany = createDefaultCompany();
- }
- return findCompany;
- }
-
- protected Company findCompanyByName(String name) throws TopiaException {
- Company company = null;
- TopiaContext transaction = manager.getContext().beginTransaction();
- try {
- CompanyDAO dao = WaoDAOHelper.getCompanyDAO(transaction);
-
- company = dao.findByName(name);
- } finally {
- transaction.closeContext();
- }
- return company;
- }
-
- protected SampleRow findDefaultSampleRow(String... properties)
- throws TopiaException {
- SampleRow findRow = findSampleRowByCode(
- SAMPLE_ROW_DEFAULT_CODE, properties);
-
- if (findRow == null) {
- findRow = createDefaultSampleRow();
- }
- return findRow;
- }
-
- /**
- * Find a sampleRow existing using his unique {@code code}. Some
- * {@code properties} can be added to load them if the sampleRow is
- * corretly retrieve.
- *
- * @param code SampleRow unique code
- * @param properties authorized properties : ElligibleBoat
- * @return the existing SampleRow if found, null otherwise
- * @throws TopiaException
- */
- protected SampleRow findSampleRowByCode(String code, String... properties)
- throws TopiaException {
- SampleRow row = null;
- TopiaContext transaction = manager.getContext().beginTransaction();
- try {
- SampleRowDAO dao =
- WaoDAOHelper.getSampleRowDAO(transaction);
-
- row = dao.findByCode(code);
- if (row != null) {
- // Load properties
- for (String property : properties) {
- if (property.equals(SampleRow.PROPERTY_ELLIGIBLE_BOAT)) {
- row.sizeElligibleBoat();
- }
- }
- }
- } finally {
- transaction.closeContext();
- }
- return row;
- }
-
- protected Boat findDefaultBoat() throws TopiaException {
- Boat findBoat =
- findBoatByImmatriculation(BOAT_DEFAULT_IMMATRICULATION);
- if (findBoat == null) {
- findBoat = createDefaultBoat();
- }
- return findBoat;
- }
-
- protected Boat findBoatByImmatriculation(int immatriculation)
- throws TopiaException {
- Boat boat = null;
- TopiaContext transaction = manager.getContext().beginTransaction();
- try {
- BoatDAO dao =
- WaoDAOHelper.getBoatDAO(transaction);
-
- boat = dao.findByImmatriculation(immatriculation);
- } finally {
- transaction.closeContext();
- }
- return boat;
- }
-
- protected WaoUser findDefaultObserver() throws TopiaException {
- WaoUser findObserver =
- findUserByLogin(OBSERVER_DEFAULT_LOGIN);
- if (findObserver == null) {
- findObserver = createDefaultObserver();
- }
- return findObserver;
- }
-
- protected WaoUser findUserByLogin(String login)
- throws TopiaException {
- WaoUser user = null;
- TopiaContext transaction = manager.getContext().beginTransaction();
- try {
- WaoUserDAO dao =
- WaoDAOHelper.getWaoUserDAO(transaction);
-
- user = dao.findByLogin(login);
- // Load company
- if (user != null) {
- user.getCompany();
- }
- } finally {
- transaction.closeContext();
- }
- return user;
- }
-
- protected void prepareContactsData(Company company1, Company company2)
- throws WaoBusinessException, TopiaException {
-
- manager.setCurrentDate(DateUtil.createDate(5, 10, 2010));
-
- InputStream input = getClass().getResourceAsStream("/import/navires.csv");
- ServiceBoat serviceBoat = manager.getServiceBoat();
- serviceBoat.importBoatCsv(input);
- List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
- Boat boat = boats.get(0);
-
- List<Boat> boats2 = serviceBoat.getBoatsByImmatriculations("177474");
- Boat boat2 = boats2.get(0);
-
- TopiaContext transaction = manager.getContext().beginTransaction();
-
- WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
- WaoUser user = userDAO.create(WaoUser.PROPERTY_FIRST_NAME,"Jean", WaoUser.PROPERTY_LAST_NAME, "Michmuche",
- WaoUser.PROPERTY_COMPANY, company1);
- company1.addWaoUser(user);
- WaoUser user2 = userDAO.create(WaoUser.PROPERTY_FIRST_NAME,"Bill", WaoUser.PROPERTY_LAST_NAME, "Murray",
- WaoUser.PROPERTY_COMPANY, company2);
- company2.addWaoUser(user2);
-
- transaction.commitTransaction();
-
- input = getClass().getResourceAsStream("/import/zonesPeche.csv");
- ServiceReferential serviceReferential = manager.getServiceReferential();
- serviceReferential.importFishingZoneCsv(input);
-
- input = getClass().getResourceAsStream("/import/echantillonnage.csv");
- ServiceSampling serviceSampling = manager.getServiceSampling();
- serviceSampling.importSamplingPlanCsv(input, getConnectedUser(null, UserRole.ADMIN, ObsProgram.OBSMER));
-
- SampleRowDAO rowDAO = WaoDAOHelper.getSampleRowDAO(transaction);
- SampleRow row = rowDAO.findByCode("2010_0001");
- SampleRow row2 = rowDAO.findByCode("2009_0006");
-
- transaction.closeContext();
-
-
- ServiceContact serviceContact = manager.getServiceContact();
-
- ConnectedUser connectedUser = getConnectedUser(user, UserRole.ADMIN, ObsProgram.OBSMER);
-
- // Contacts for company TARTANPION
- Contact contact1 = new ContactImpl();
- contact1.setBoat(boat);
- contact1.setMainObserver(user);
- contact1.setSampleRow(row);
- contact1.setContactState(ContactState.OBSERVATION_DONE);
- Date begin = DateUtil.createDate(3, 3, 2010);
- contact1.setObservationBeginDate(begin);
- Date end = DateUtil.createDate(4, 3, 2010);
- contact1.setObservationEndDate(end);
- serviceContact.saveContact(connectedUser, contact1, false);
-
- Contact contact2 = new ContactImpl();
- contact2.setBoat(boat);
- contact2.setMainObserver(user);
- contact2.setSampleRow(row);
- contact2.setContactState(ContactState.OBSERVATION_DONE);
- begin = DateUtil.createDate(3, 10, 2010);
- contact2.setObservationBeginDate(begin);
- end = DateUtil.createDate(4, 10, 2010);
- contact2.setObservationEndDate(end);
- serviceContact.saveContact(connectedUser, contact2, false);
-
- Contact contact3 = new ContactImpl();
- contact3.setBoat(boat);
- contact3.setMainObserver(user);
- contact3.setSampleRow(row);
- contact3.setContactState(ContactState.CONTACT_REFUSED);
- begin = DateUtil.createDate(3, 5, 2010);
- end = DateUtil.createDate(4, 5, 2010);
- contact3.setObservationEndDate(end);
- contact3.setTopiaCreateDate(begin);
- serviceContact.saveContact(connectedUser, contact3, false);
-
- // Contacts for company BIS
- Contact contact4 = new ContactImpl();
- contact4.setBoat(boat2);
- contact4.setMainObserver(user2);
- contact4.setSampleRow(row2);
- contact4.setContactState(ContactState.OBSERVATION_EXPECTED);
- begin = DateUtil.createDate(3, 3, 2010);
- end = DateUtil.createDate(4, 3, 2010);
- contact4.setObservationEndDate(end);
- contact4.setTopiaCreateDate(begin);
- serviceContact.saveContact(connectedUser, contact4, false);
-
- Contact contact5 = new ContactImpl();
- contact5.setBoat(boat2);
- contact5.setMainObserver(user2);
- contact5.setSampleRow(row2);
- contact5.setContactState(ContactState.OBSERVATION_CANCELLED);
- begin = DateUtil.createDate(3, 5, 2010);
- end = DateUtil.createDate(4, 5, 2010);
- contact5.setObservationEndDate(end);
- contact5.setTopiaCreateDate(begin);
- serviceContact.saveContact(connectedUser, contact5, false);
-
- // Contact refused by program, will not be in result
- Contact contact6 = new ContactImpl();
- contact6.setBoat(boat2);
- contact6.setMainObserver(user2);
- contact6.setSampleRow(row2);
- contact6.setContactState(ContactState.OBSERVATION_CANCELLED);
- begin = DateUtil.createDate(3, 3, 2010);
- contact6.setTopiaCreateDate(begin);
- end = DateUtil.createDate(4, 3, 2010);
- contact6.setObservationEndDate(end);
- contact6.setValidationProgram(Boolean.FALSE);
- serviceContact.saveContact(connectedUser, contact6, false);
- }
-
- public ConnectedUser getConnectedUser(WaoUser user, UserRole userRole, ObsProgram obsProgram) {
- ConnectedUser connectedUser = new ConnectedUserImpl();
- if (user == null) {
- WaoUser waoUser = new WaoUserImpl();
- connectedUser.setUser(waoUser);
- } else {
- connectedUser.setUser(user);
- }
- connectedUser.setProfile(new UserProfileImpl(obsProgram, userRole, true));
- return connectedUser;
- }
-
- public ConnectedUser getConnectedAdmin() {
- return getConnectedUser(null, UserRole.ADMIN, ObsProgram.OBSMER);
- }
-
-}
Deleted: trunk/wao-business/src/test/java/fr/ifremer/wao/WaoUtilsTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/WaoUtilsTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/WaoUtilsTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -1,138 +0,0 @@
-/*
- * #%L
- * Wao :: Business
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-package fr.ifremer.wao;
-
-import fr.ifremer.wao.entity.Company;
-import fr.ifremer.wao.entity.CompanyImpl;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.Assert.assertNotNull;
-
-/**
- * WaoUtilsTest
- *
- * Created: 27 nov. 2009
- *
- * @author fdesbois <fdesbois at codelutin.com>
- */
-public class WaoUtilsTest {
-
- private static TestManager manager;
-
- private static final Logger log = LoggerFactory.getLogger(WaoUtilsTest.class);
-
- public WaoUtilsTest() {
- manager = new TestManager();
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
-
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
-
- }
-
- @Before
- public void setUp() {
- manager.start();
- }
-
- @After
- public void tearDown() {
- manager.stop();
- }
-
- /**
- * Test of getTopiaRootContext method, of class WaoUtils.
- */
- //@Test
- public void testGetTopiaRootContext() throws Exception {
- System.out.println("getTopiaRootContext");
- }
-
- /**
- * Test of loadConfiguration method, of class WaoUtils.
- */
- //@Test
- public void testLoadConfiguration() throws Exception {
- System.out.println("loadConfiguration");
- }
-
- /**
- * Test of serviceException method, of class WaoUtils.
- */
- //@Test
- public void testServiceException() throws Exception {
- System.out.println("serviceException");
- }
-
- /**
- * Test of createRandomString method, of class WaoUtils.
- */
- //@Test
- public void testCreateRandomString() {
- System.out.println("createRandomString");
- }
-
- /**
- * Test of encodeString method, of class WaoUtils.
- */
- //@Test
- public void testEncodeString() {
- System.out.println("encodeString");
- }
-
- /**
- * Test of convertId method, of class WaoUtils.
- */
- //@Test
- public void testConvertId() {
- System.out.println("convertId");
- }
-
- /**
- * Test of prepareTopiaId method, of class WaoUtils.
- */
- @Test
- public void testPrepareTopiaId() {
- log.info("prepareTopiaId");
-
- Company company = new CompanyImpl();
-
- manager.getContext().prepareTopiaId(Company.class, company);
- assertNotNull(company.getTopiaId());
- log.debug("topiaId for Company : " + company.getTopiaId());
- }
-
-}
Added: trunk/wao-business/src/test/java/fr/ifremer/wao/business/AbstractBusinessTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/business/AbstractBusinessTest.java (rev 0)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/business/AbstractBusinessTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -0,0 +1,50 @@
+package fr.ifremer.wao.business;
+
+import fr.ifremer.wao.TestManager;
+import fr.ifremer.wao.service.ServiceBoat;
+import fr.ifremer.wao.service.ServiceContact;
+import fr.ifremer.wao.service.ServiceReferential;
+import fr.ifremer.wao.service.ServiceSampling;
+import fr.ifremer.wao.service.ServiceSynthesis;
+import fr.ifremer.wao.service.ServiceUser;
+import org.junit.After;
+import org.junit.Before;
+
+/**
+ * Business tests are integration tests that check services implementation
+ * consistency among a given set of data.
+ *
+ * Any service may be involved, tests consider all services as white-boxes,
+ * ignoring DAOs, persistence, implementations of the services.
+ *
+ * In order to provide common data for the tests, fixtures are provided.
+ */
+public abstract class AbstractBusinessTest {
+
+ protected TestManager manager;
+ protected ServiceUser serviceUser;
+ protected ServiceReferential serviceReferential;
+ protected ServiceBoat serviceBoat;
+ protected ServiceSampling serviceSampling;
+ protected ServiceSynthesis serviceSynthesis;
+ protected ServiceContact serviceContact;
+
+ @Before
+ public void before() {
+ manager = new TestManager();
+ manager.start();
+
+ serviceUser = manager.getServiceUser();
+ serviceReferential = manager.getServiceReferential();
+ serviceBoat = manager.getServiceBoat();
+ serviceSampling = manager.getServiceSampling();
+ serviceContact = manager.getServiceContact();
+ serviceSynthesis = manager.getServiceSynthesis();
+ }
+
+ @After
+ public void after() {
+ manager.stop();
+ }
+
+}
Copied: trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java (from rev 1290, trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java)
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java (rev 0)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFieldWorkTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -0,0 +1,474 @@
+/*
+ * #%L
+ * Wao :: Business
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2011 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.wao.business;
+
+import fr.ifremer.wao.WaoBusinessException;
+import fr.ifremer.wao.bean.BoatFilter;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ContactFilter;
+import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.bean.ContactStateStatistics;
+import fr.ifremer.wao.bean.ObservationType;
+import fr.ifremer.wao.bean.SamplingFilter;
+import fr.ifremer.wao.bean.SamplingFilterValues;
+import fr.ifremer.wao.bean.ValidationResult;
+import fr.ifremer.wao.entity.Boat;
+import fr.ifremer.wao.entity.Contact;
+import fr.ifremer.wao.entity.ObsDebCode;
+import fr.ifremer.wao.entity.SampleRow;
+import fr.ifremer.wao.entity.TerrestrialDivision;
+import fr.ifremer.wao.entity.TerrestrialLocation;
+import fr.ifremer.wao.io.ImportResults;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.util.DateUtil;
+import org.nuiton.util.PeriodDates;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ *
+ * @author bleny
+ */
+public class ObsDebFieldWorkTest extends AbstractBusinessTest {
+
+ private static final Logger log =
+ LoggerFactory.getLogger(ObsDebFieldWorkTest.class);
+
+ protected static final String SAMPLING_PLAN_CSV =
+ "PLAN_CODE;SOCIETE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS;LIGNE_SANS_CONTACTS\n"
+ + "2011_888;Ifremer;GA;OBS1;05/01/2010;UO007;;N\n"
+ + "2011_889;Code Lutin;MA;OBS2;25/02/2010;UO087;;N\n"
+ + "2011_890;Code Lutin;GA;OBS1;13/02/2010;UO007;;N\n"
+ + "2011_891;Code Lutin;MA;OBS2;13/02/2010;UO087;;N";
+ protected static final String SAMPLING_PLAN_WITH_OBSERVERS_CSV =
+ "PLAN_CODE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS;LIGNE_SANS_CONTACTS\n"
+ + "2011_890;GA;OBS1;13/02/2010;UO007;josh;N";
+
+ protected ObsDebFixtures fixtures;
+
+ @Before
+ public void setUpFixtures() {
+ fixtures = new ObsDebFixtures(manager);
+ }
+
+ /**
+ * As an admin, i must be able to import terrestrial divisions
+ */
+ @Test
+ public void adminCanImportTerrestrialDivisions() {
+ // as an admin, i can import terrestrial divisions, i should not
+ // raise any exception
+ InputStream input = getClass().getResourceAsStream("/import/purifiedTerrestrialDivisions.csv");
+ serviceReferential.importTerrestrialDivisions(input);
+
+ // i can read what was imported
+ List<TerrestrialDivision> observationsUnits = serviceReferential.getAllObservationUnits();
+ Assert.assertEquals(243, observationsUnits.size());
+ }
+
+ /**
+ * As an admin, i must be able to import a sampling plan
+ * @throws WaoBusinessException if import fail
+ */
+ @Test
+ public void adminCanImportSamplingPlan() throws WaoBusinessException {
+ adminCanImportTerrestrialDivisions();
+
+ // First create add two companies in Wao
+ manager.setCurrentDate(2, 1, 2010);
+
+ fixtures.ifremer();
+ fixtures.codeLutin();
+
+ // Then, import the sampling plan
+ manager.setCurrentDate(3, 1, 2010);
+
+ InputStream input = IOUtils.toInputStream(SAMPLING_PLAN_CSV);
+ ImportResults importResults = serviceSampling.importSamplingPlanCsv(input, fixtures.joshAsAdministrator());
+ Assert.assertEquals(4, importResults.getNbRowsImported());
+ Assert.assertEquals(0, importResults.getNbRowsRefused());
+ }
+
+ /**
+ * As an admin, i should be able to read sampling plan
+ * @throws WaoBusinessException if a call to service fail
+ */
+ @Test
+ public void adminCanReadSamplingPlan() throws WaoBusinessException {
+
+ // given a sampling plan
+ adminCanImportSamplingPlan();
+
+ // as an administrator, i can get the sampling plan
+
+ // Since a new filter may be initialized for a period of time,
+ // we set the current date to be deterministic, at this date
+ // filter returned must be quite large to make 2 sample rows
+ // non filtered
+ manager.setCurrentDate(DateUtil.createDate(25, 1, 2010));
+
+ SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator());
+
+ if (log.isDebugEnabled()) {
+ log.debug("a new empty sampling filter is " + samplingFilter.toString());
+ }
+
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
+
+ if (log.isDebugEnabled()) {
+ log.debug(sampleRows.toString());
+ }
+ // as an admin, i can see all the sample-rows for all companies
+ Assert.assertEquals(4, sampleRows.size());
+
+ for (SampleRow sampleRow : sampleRows) {
+ // i must be able to read those values without error
+ sampleRow.getObservationUnit().getObservationUnitCode();
+ sampleRow.getExpectedDate();
+ sampleRow.getGroupName();
+ sampleRow.getCompany().getName();
+
+ // all the rows have a code
+ Assert.assertTrue(StringUtils.isNotEmpty(sampleRow.getCode()));
+ }
+ }
+
+ @Test
+ public void usersCanFilterSamplingPlan() throws WaoBusinessException {
+
+ // given a sampling plan
+ adminCanImportSamplingPlan();
+
+ // i can filter the sampling plan by getting a filter
+ SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator());
+
+ // and the possible values i can use to fill the filter
+ SamplingFilterValues samplingFilterValues = serviceSampling.getPossibleValuesForFilter(samplingFilter);
+
+ // according to the given sampling plan, there may be as many different values
+ // as different values used in the sampling plan, for example : two
+ // companies are used in the sampling plan so, 2 companies must be in
+ // the possible values
+ Assert.assertEquals(2, samplingFilterValues.getCompanies().size());
+ Assert.assertEquals(4, samplingFilterValues.getSampleRows().size());
+ Assert.assertEquals(2, samplingFilterValues.getObservationUnits().size());
+ Assert.assertEquals(0, samplingFilterValues.getObservers().size());
+
+ samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator());
+ samplingFilter.setPeriod(new PeriodDates(DateUtil.createDate(20, 2, 2010),
+ DateUtil.createDate(27, 2, 2010)));
+
+ if (log.isDebugEnabled()) {
+ log.debug("sampling filter for admin with period is " + samplingFilter.toString());
+ }
+
+ // service should have returned the line with date 25/02/2010
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
+ Assert.assertEquals(1, sampleRows.size());
+ Assert.assertEquals("2011_889", sampleRows.get(0).getCode());
+ }
+
+ /**
+ * As an admin, i should be able to read sampling plan
+ * @throws WaoBusinessException if call to service fail
+ */
+ @Test
+ public void coordinatorCanReadSamplingPlan() throws WaoBusinessException {
+
+ // given a sampling plan
+ adminCanImportSamplingPlan();
+
+ // as a coordinator, i can get the sampling plan
+ manager.setCurrentDate(DateUtil.createDate(25, 1, 2010));
+
+ SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator());
+
+ if (log.isDebugEnabled()) {
+ log.debug("a new empty sampling filter for coordinator is " + samplingFilter.toString());
+ }
+
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
+
+ if (log.isDebugEnabled()) {
+ log.debug(sampleRows.toString());
+ }
+ // as an coordinator, i can see all sample-rows only for my company
+ Assert.assertEquals(3, sampleRows.size());
+ }
+
+ @Test
+ public void coordinatorCanAddObserversViaImport() throws WaoBusinessException, IOException {
+
+ // given a sampling plan
+ adminCanImportSamplingPlan();
+
+ // as a coordinator, i can export the sampling plan
+ SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator());
+ samplingFilter.setExpectedObservationType(ObservationType.FIELD_WORK_OBSERVATION);
+ InputStream input = serviceSampling.exportSamplingPlanCsv(fixtures.joshAsCoordinator(), samplingFilter);
+
+ String csv = IOUtils.toString(input);
+
+ if (log.isDebugEnabled()) {
+ log.debug("CSV file as it was exported:\n" + csv);
+ log.debug("CSV file as it will be imported (with observers):\n" + SAMPLING_PLAN_WITH_OBSERVERS_CSV);
+ }
+
+ // i can add a column to add observers to each line
+ serviceSampling.importSamplingPlanCsv(IOUtils.toInputStream(SAMPLING_PLAN_WITH_OBSERVERS_CSV), fixtures.joshAsCoordinator());
+
+ // now getting the sampling plan and checking that observers are linked to sample rows
+ SampleRow row2011_890 = serviceSampling.getSampleRowByCode(fixtures.joshAsCoordinator(), "2011_890");
+ Assert.assertNotNull(row2011_890);
+ Assert.assertEquals(1, row2011_890.sizeObservers());
+
+ // adding an observer must add a log entry
+ Assert.assertEquals(1, row2011_890.sizeSampleRowLog());
+
+ // the text of the log entry itself
+ String logEntry = row2011_890.getSampleRowLog().get(0).getLogText();
+
+ if (log.isDebugEnabled()) {
+ log.debug("log entry after update on observers is: '" + logEntry + "'");
+ }
+
+ Assert.assertTrue("added observer is mentioned in the log", logEntry.contains(fixtures.josh().getFullName()));
+ }
+
+ /**
+ * We want to check that the coordinator is not able to create a bad sampling
+ * plan by sending a same observer on two different place the same day
+ * @throws WaoBusinessException if call to service fail
+ * @throws java.io.IOException if failure while reading CSV
+ */
+ @Test
+ public void coordinatorCannotBreakSamplingPlan() throws IOException, WaoBusinessException {
+ coordinatorCanAddObserversViaImport();
+
+ // josh cannot be affected to this row, because on the same day
+ // he is to be elsewhere
+ SampleRow row2011_891 = serviceSampling.getSampleRowByCode(fixtures.joshAsCoordinator(), "2011_891");
+ row2011_891.addObservers(fixtures.josh());
+
+ ValidationResult validationResult = serviceSampling.validateSampleRow(row2011_891);
+
+ if (log.isDebugEnabled()) {
+ log.debug("validation result is " + validationResult.toString());
+ }
+
+ Assert.assertFalse("validation must fail", validationResult.isSuccess());
+ Assert.assertTrue("message mentions sample row in conflict",
+ validationResult.getMessage().contains("2011_890"));
+ }
+
+ @Test
+ public void observerCanReadSamplingPlan() throws IOException, WaoBusinessException {
+ // first, the coordinator must add observers
+ coordinatorCanAddObserversViaImport();
+
+ // as an observer, i can get the sampling plan
+ manager.setCurrentDate(DateUtil.createDate(10, 2, 2010));
+
+ SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsObserver());
+
+ if (log.isDebugEnabled()) {
+ log.debug("a new empty sampling filter for observer is " + samplingFilter.toString());
+ }
+
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
+
+ // as an observer, i can see only the sample-rows the coordinator affected to me
+ Assert.assertEquals(1, sampleRows.size());
+ }
+
+ @Test
+ public void observerCanExportHisRoadMapAsICalendar() throws IOException, WaoBusinessException {
+ // first, the coordinator must add observers
+ coordinatorCanAddObserversViaImport();
+ manager.setCurrentDate(DateUtil.createDate(10, 2, 2010));
+
+ String joshAsObserverToken = fixtures.joshAsObserver().getToken();
+ ConnectedUser joshAsObserver = serviceUser.getConnectedUserByToken(joshAsObserverToken);
+
+ InputStream in = serviceSampling.exportSamplingPlanICalendar(joshAsObserver);
+
+ String result = IOUtils.toString(in);
+ if (log.isDebugEnabled()) {
+ log.debug("exported iCal for observer is " + result);
+ }
+
+ Assert.assertEquals(1, StringUtils.countMatches(result, "BEGIN:VEVENT"));
+ Assert.assertTrue(result.contains("DTSTART;VALUE=DATE:20100213"));
+ Assert.assertTrue(result.contains("TZID:Europe/Paris"));
+ Assert.assertTrue(result.contains("LOCATION:GA-UO007 DESHAIES_POINTE NOIRE"));
+ Assert.assertTrue(result.contains("SUMMARY:Observation ObsDeb"));
+ }
+
+ @Test
+ public void observerCanCreateContact() throws IOException, WaoBusinessException {
+ observerCanReadSamplingPlan();
+
+ // we are one day after the observation
+ manager.setCurrentDate(DateUtil.createDate(15, 2, 2010));
+
+ // the user is supposed to create a contact to tell what he
+ // has done this day, when i was supposed to observe for this row
+ SampleRow row = serviceSampling.getSampleRowByCode(fixtures.joshAsObserver(), "2011_890");
+
+ fixtures.boats(); // boats must be imported
+
+ // observer can get a list of boats given this sample row. It should give him the boats
+ // having a portOfRegistry in the observation unit of the sample-row
+ BoatFilter boatFilter = serviceBoat.newBoatFilter(fixtures.joshAsObserver());
+ boatFilter.setSampleRow(row);
+ Map<Integer, Boat> boatsForRow = serviceBoat.getBoatsByFilter(boatFilter);
+ if (log.isDebugEnabled()) {
+ log.debug("boats returned after filtering on sample row:" + boatsForRow.values());
+ }
+ Assert.assertEquals(4, boatsForRow.size());
+
+ Boat boat = boatsForRow.get(fixtures.moise().getImmatriculation());
+
+ // let's create the contact
+ Contact contact = serviceContact.getNewContact(fixtures.joshAsObserver(), row, boat);
+
+ // by default, a contact must be of type observation
+ Assert.assertEquals(ObservationType.FIELD_WORK_OBSERVATION, contact.getObservationType());
+
+ // in the observation report, i must tell where i was and when
+ List<TerrestrialLocation> ports = serviceReferential.getAllPorts(contact.getSampleRow().getObservationUnit());
+
+ if (log.isDebugEnabled()) {
+ for (TerrestrialLocation port : ports) {
+ log.debug("possible ports for this contact contains " + port.getDescription());
+ }
+ }
+
+ // i was at this port, from 9:15AM to 10:30AM
+ contact.setTerrestrialLocation(ports.get(4));
+ contact.setObservationBeginDate(DateUtil.createDate(0, 15, 9, 13, 2, 2010));
+ contact.setObservationEndDate(DateUtil.createDate(0, 30, 10, 13, 2, 2010));
+
+ // let's validate
+ ValidationResult validationResult = serviceContact.validateContact(contact);
+
+ if (log.isDebugEnabled()) {
+ log.debug("result for contact validation is " + validationResult);
+ }
+
+ Assert.assertTrue("validation must succeed", validationResult.isSuccess());
+
+ serviceContact.saveContact(fixtures.joshAsObserver(), contact, false);
+
+ contact = serviceContact.getContact(contact.getTopiaId());
+ Assert.assertNotNull("service must have save the data given by observer", contact.getTerrestrialLocation());
+ Assert.assertNotNull("service must have save the data given by observer", contact.getObservationBeginDate());
+ Assert.assertNotNull("service must have save the data given by observer", contact.getObservationEndDate());
+
+ // now, i want to create another contact because, at the same
+ // day, and the same time, i've seen another boat
+ contact = serviceContact.getNewContact(fixtures.joshAsObserver(), row, fixtures.samourai());
+ Assert.assertNotNull("service must have pre filled field", contact.getObservationEndDate());
+ Assert.assertNotNull("service must have pre filled field", contact.getTerrestrialLocation());
+
+ // i've made the survey in this last contact, so i can associate an ObsDebCode
+ List<ObsDebCode> allObsDebCodes = serviceReferential.getAllObsDebCodes();
+ contact.setObsDebCode(allObsDebCodes.get(123));
+ serviceContact.saveContact(fixtures.joshAsObserver(), contact, false);
+ }
+
+ /** Check that coordinator is able to export the contacts created in {@link #observerCanCreateContact()}
+ * @throws WaoBusinessException
+ * @throws IOException
+ */
+ @Test
+ public void coordinatorCanExportContacts() throws IOException, WaoBusinessException {
+ // first, create two contacts
+ observerCanCreateContact();
+
+ manager.setCurrentDate(DateUtil.createDate(16, 2, 2010));
+
+ ContactFilter filter = serviceContact.newContactFilter(fixtures.joshAsCoordinator());
+ InputStream in = serviceContact.exportContactCsv(filter);
+
+ String csv = IOUtils.toString(in);
+
+ if (log.isDebugEnabled()) {
+ log.debug("csv for contacts exported as coordinator is \n" + csv);
+ }
+
+ int expectedLineNumber = 1 + 2; // 1 header line + 2 contacts
+ int actualLineNumber = StringUtils.countMatches(csv, "\n");
+ Assert.assertEquals(expectedLineNumber, actualLineNumber);
+ }
+
+ /** Check that coordinator is able to export the contacts created in {@link #observerCanCreateContact()} */
+ @Test
+ public void coordinatorCanGetSynthesisResults() throws WaoBusinessException, IOException {
+ observerCanCreateContact();
+
+ // TODO 20110426 bleny consider validation company and validation program when counting
+
+ SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator());
+ Map<String, Map<String, Integer>> observationHours =
+ serviceSynthesis.getObservationHours(samplingFilter);
+
+ Assert.assertEquals(2, observationHours.get("2010").get("09").intValue());
+ Assert.assertEquals("24 values associated with '2010', one for each hour of the day",
+ 24, observationHours.get("2010").size());
+
+ samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator());
+ Map<String, Map<String, Integer>> boatsCounts =
+ serviceSynthesis.getDistinctBoatsCounts(samplingFilter);
+ Assert.assertEquals("Two distinct boats observed on February 2010",
+ 2, boatsCounts.get("2010").get("02").intValue());
+ Assert.assertEquals("12 values for must be associated to '2010', one for each month",
+ 12, boatsCounts.get("2010").size());
+
+ samplingFilter = serviceSampling.
+ newSamplingFilter(fixtures.joshAsCoordinator());
+ Collection<ContactStateStatistics> contactStateStatistics =
+ serviceSynthesis.getContactStateStatistics(samplingFilter);
+ for (ContactStateStatistics contactStateStatistic : contactStateStatistics) {
+ log.debug(contactStateStatistic.getCompanyName() + " -> " +
+ contactStateStatistic.getData());
+ }
+ ContactStateStatistics contactStateStatistic = contactStateStatistics.
+ iterator().next();
+ Assert.assertEquals("Code Lutin", contactStateStatistic.getCompanyName());
+ Assert.assertEquals(2, contactStateStatistic.getData().get
+ (ContactState.OBSERVATION_DONE).intValue());
+ }
+}
Copied: trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFixtures.java (from rev 1275, trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java)
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFixtures.java (rev 0)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebFixtures.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -0,0 +1,146 @@
+package fr.ifremer.wao.business;
+
+import fr.ifremer.wao.TestManager;
+import fr.ifremer.wao.WaoBusinessException;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.entity.Boat;
+import fr.ifremer.wao.entity.Company;
+import fr.ifremer.wao.entity.CompanyImpl;
+import fr.ifremer.wao.entity.UserProfile;
+import fr.ifremer.wao.entity.UserProfileImpl;
+import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.entity.WaoUserImpl;
+import fr.ifremer.wao.service.ServiceBoat;
+
+import java.io.InputStream;
+
+public class ObsDebFixtures {
+
+ protected TestManager manager;
+
+ protected WaoUser josh;
+ protected Company codeLutin;
+ protected Company ifremer;
+ protected Boat moise;
+ protected Boat samourai;
+
+ protected boolean boatsImported;
+
+ public ObsDebFixtures(TestManager manager) {
+ this.manager = manager;
+ }
+
+ public Company codeLutin() {
+ if (codeLutin == null) {
+ codeLutin = new CompanyImpl();
+ codeLutin.setName("Code Lutin");
+ codeLutin.setActive(true);
+ manager.getServiceUser().createUpdateCompany(codeLutin);
+ }
+ return codeLutin;
+ }
+
+ public Company ifremer() {
+ if (ifremer == null) {
+ ifremer = new CompanyImpl();
+ ifremer.setName("Ifremer");
+ ifremer.setActive(true);
+ manager.getServiceUser().createUpdateCompany(ifremer);
+ }
+ return ifremer;
+ }
+
+ public void boats() {
+ if ( ! boatsImported) {
+ ServiceBoat serviceBoat = manager.getServiceBoat();
+ InputStream input = getClass().getResourceAsStream("/import/navires.csv");
+ try {
+ serviceBoat.importBoatCsv(input);
+ } catch (WaoBusinessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ public Boat samourai() {
+ if (samourai == null) {
+ boats();
+ ServiceBoat serviceBoat = manager.getServiceBoat();
+ try {
+ samourai = serviceBoat.getBoat(174258);
+ } catch (WaoBusinessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return samourai;
+ }
+
+ public Boat moise() {
+ if (moise == null) {
+ boats();
+ ServiceBoat serviceBoat = manager.getServiceBoat();
+ try {
+ moise = serviceBoat.getBoat(273129);
+ } catch (WaoBusinessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return moise;
+ }
+
+ public WaoUser josh() {
+ if (josh == null) {
+ josh = new WaoUserImpl();
+ josh.setLogin("josh");
+ josh.setFirstName("Joshua");
+ josh.setLastName("B.");
+ josh.setPassword(manager.getContext().encodeString("mdp"));
+ josh.setActive(true);
+ josh.setCompany(codeLutin());
+ UserProfile adminProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.ADMIN, true);
+ UserProfile coordinatorProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.COORDINATOR, true);
+ UserProfile observerProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.OBSERVER, true);
+ josh.addUserProfile(adminProfile);
+ josh.addUserProfile(coordinatorProfile);
+ josh.addUserProfile(observerProfile);
+ try {
+ manager.getServiceUser().createUpdateUser(josh, false);
+ } catch (WaoBusinessException e) {
+ throw new RuntimeException(e);
+ }
+ josh.setPassword("mdp");
+ }
+ return josh;
+ }
+
+ protected ConnectedUser joshAs(UserRole userRole) {
+ // first, log in as josh
+ ConnectedUser connectedUser = null;
+ try {
+ connectedUser = manager.getServiceUser().connect(josh().getLogin(), josh().getPassword());
+ } catch (WaoBusinessException e) {
+ throw new RuntimeException(e);
+ }
+ // then choose profile
+ for (UserProfile userProfile : josh().getUserProfile()) {
+ if (userProfile.getUserRole() == userRole) {
+ connectedUser.setProfile(userProfile);
+ }
+ }
+ return connectedUser;
+ }
+
+ public ConnectedUser joshAsAdministrator() {
+ return joshAs(UserRole.ADMIN);
+ }
+
+ public ConnectedUser joshAsCoordinator() {
+ return joshAs(UserRole.COORDINATOR);
+ }
+
+ public ConnectedUser joshAsObserver() {
+ return joshAs(UserRole.OBSERVER);
+ }
+}
\ No newline at end of file
Added: trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebPhoneTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebPhoneTest.java (rev 0)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/business/ObsDebPhoneTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -0,0 +1,101 @@
+package fr.ifremer.wao.business;
+
+import fr.ifremer.wao.WaoBusinessException;
+import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.bean.ObservationType;
+import fr.ifremer.wao.entity.Boat;
+import fr.ifremer.wao.entity.Contact;
+import fr.ifremer.wao.entity.ObsDebCode;
+import fr.ifremer.wao.entity.SampleRow;
+import fr.ifremer.wao.io.ImportResults;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.time.DateUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.util.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+public class ObsDebPhoneTest extends AbstractBusinessTest {
+
+ private static final Logger log =
+ LoggerFactory.getLogger(ObsDebPhoneTest.class);
+
+ protected static final String PHONE_SAMPLING_PLAN_CSV =
+ "PLAN_CODE;REGION_IFREMER;SOCIETE;OBSERVATEUR_COD;OBSERVATION_DATE;NAVIRE_COD;OBSERVATEURS\n"
+ + "2011_901;MA;Code Lutin;OBS1;6/2010;174258;";
+
+ protected ObsDebFixtures fixtures;
+
+ @Before
+ public void setUpFixtures() {
+ fixtures = new ObsDebFixtures(manager);
+ }
+
+ @Test
+ public void adminCanImportPhoneSamplingPlan() throws WaoBusinessException {
+ manager.setCurrentDate(2, 1, 2010);
+
+ fixtures.ifremer();
+ fixtures.codeLutin();
+ fixtures.boats();
+
+ manager.setCurrentDate(3, 1, 2010);
+
+ InputStream input = IOUtils.toInputStream(PHONE_SAMPLING_PLAN_CSV);
+ ImportResults importResults = serviceSampling.importSamplingPlanCsv(input, fixtures.joshAsAdministrator());
+ Assert.assertEquals(1, importResults.getNbRowsImported());
+ Assert.assertEquals(0, importResults.getNbRowsRefused());
+ }
+
+ @Test
+ public void observerCanCreateContactForPhoneSamplingPlan() throws WaoBusinessException {
+ adminCanImportPhoneSamplingPlan();
+
+ Date now = DateUtil.createDate(0, 30, 16, 11, 2, 2010); // 11 Feb 2010 at 4:30 PM
+ manager.setCurrentDate(now);
+
+ // as observer, i can get the sample row i'm working on
+ SampleRow sampleRow = serviceSampling.getSampleRowByCode(fixtures.joshAsObserver(), "2011_901");
+
+ // the sample row tell me what boat to call
+ Boat boatToCall = sampleRow.getBoat();
+
+ // i can create a contact
+ Contact firstContact = serviceContact.getNewContact(fixtures.joshAsObserver(), sampleRow, boatToCall);
+ Assert.assertEquals("Observation type is, by default, a phone call because contact was created from phone sampling plan",
+ ObservationType.PHONE_CALL, firstContact.getObservationType());
+
+ // let's suppose the guy refused the survey
+ firstContact.setObservationBeginDate(now);
+ firstContact.setObservationEndDate(DateUtils.addMinutes(now, 5));
+ firstContact.setContactState(ContactState.CONTACT_REFUSED);
+ serviceContact.saveContact(fixtures.joshAsObserver(), firstContact, false);
+
+
+ // as observer, i can get the substitute for this boat
+ Set<Boat> substituteBoats = serviceContact.getSubstitutesForBoat(boatToCall);
+
+ if (log.isDebugEnabled()) {
+ log.debug("substitutes found for boat " + boatToCall + " are " + substituteBoats);
+ }
+
+ Assert.assertEquals(2, substituteBoats.size());
+
+ Boat substitute = substituteBoats.iterator().next();
+ Contact secondContact = serviceContact.getNewContact(fixtures.joshAsObserver(), sampleRow, substitute);
+ secondContact.setObservationBeginDate(now);
+ secondContact.setObservationEndDate(DateUtils.addMinutes(now, 30));
+
+ // since the guy accepted to answer the survey, i can provide those data
+ List<ObsDebCode> allObsDebCodes = serviceReferential.getAllObsDebCodes(sampleRow.getTerrestrialLocation());
+ secondContact.setObsDebCode(allObsDebCodes.get(234));
+ serviceContact.saveContact(fixtures.joshAsObserver(), secondContact, false);
+ }
+}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -24,7 +24,7 @@
package fr.ifremer.wao.entity;
-import fr.ifremer.wao.AbstractServiceTest;
+import fr.ifremer.wao.service.AbstractServiceTest;
import fr.ifremer.wao.TestManager;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.bean.ConnectedUser;
Copied: trunk/wao-business/src/test/java/fr/ifremer/wao/service/AbstractServiceTest.java (from rev 1275, trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java)
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/AbstractServiceTest.java (rev 0)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/AbstractServiceTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -0,0 +1,659 @@
+/*
+ * #%L
+ * Wao :: Business
+ * %%
+ * Copyright (C) 2009 - 2010 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+package fr.ifremer.wao.service;
+
+import fr.ifremer.wao.TestManager;
+import fr.ifremer.wao.WaoBusinessException;
+import fr.ifremer.wao.WaoDAOHelper;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ConnectedUserImpl;
+import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.entity.Boat;
+import fr.ifremer.wao.entity.BoatDAO;
+import fr.ifremer.wao.entity.Company;
+import fr.ifremer.wao.entity.CompanyDAO;
+import fr.ifremer.wao.entity.Contact;
+import fr.ifremer.wao.entity.ContactDAO;
+import fr.ifremer.wao.entity.ContactImpl;
+import fr.ifremer.wao.entity.ElligibleBoat;
+import fr.ifremer.wao.entity.ElligibleBoatDAO;
+import fr.ifremer.wao.entity.SampleRow;
+import fr.ifremer.wao.entity.SampleRowDAO;
+import fr.ifremer.wao.entity.UserProfileImpl;
+import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.entity.WaoUserDAO;
+import fr.ifremer.wao.entity.WaoUserImpl;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.util.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * AbstractServiceTest
+ *
+ * Created: 29 avr. 2010
+ *
+ * @author fdesbois
+ */
+public abstract class AbstractServiceTest {
+
+ private static final Logger log =
+ LoggerFactory.getLogger(AbstractServiceTest.class);
+
+ protected static TestManager manager;
+
+ protected ServiceSamplingImpl serviceSampling;
+
+ protected static final String BOAT_DEFAULT_NAME = "SPRINGFIELD";
+ protected static final int BOAT_DEFAULT_IMMATRICULATION = 123456;
+ protected static final String SAMPLE_ROW_DEFAULT_CODE = "2010_0001";
+ protected static final String COMPANY_DEFAULT_NAME = "TARTANPION";
+ protected static final String OBSERVER_DEFAULT_FIRST_NAME = "Homer";
+ protected static final String OBSERVER_DEFAULT_LAST_NAME = "Simpson";
+ protected static final String OBSERVER_DEFAULT_LOGIN = "homer";
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ // Create tmpdir if not exist
+ String tmpdir = System.getProperty("java.io.tmpdir");
+ File file = new File(tmpdir);
+ if (!file.exists()) {
+ boolean b = file.mkdirs();
+ if (!b) {
+ if (log.isWarnEnabled())
+ log.warn("Could not create tmp directory : " + file);
+ }
+ if (log.isInfoEnabled()) {
+ log.info("tmp dir : " + file + " was created");
+ }
+ }
+ manager = new TestManager();
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ if (log.isDebugEnabled()) {
+ log.debug("Start manager");
+ }
+ manager.start();
+ serviceSampling = (ServiceSamplingImpl) manager.getServiceSampling();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ manager.stop();
+ }
+
+ /**
+ * Create a company : <br />
+ * <ul>
+ * <li>first name : Homer</li>
+ * <li>last name : Simpson</li>
+ * <li>login : homer</li>
+ * <li>company : ref to TARTANPION</li>
+ * <li>role : OBSERVER</li>
+ * </ul>
+ *
+ * @return the new Company
+ * @throws TopiaException
+ */
+ protected WaoUser createDefaultObserver() throws TopiaException {
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ WaoUser observer = null;
+ try {
+ WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
+ observer = userDAO.create(
+ WaoUser.PROPERTY_COMPANY, findDefaultCompany(),
+ WaoUser.PROPERTY_LOGIN, OBSERVER_DEFAULT_LOGIN,
+ WaoUser.PROPERTY_FIRST_NAME, OBSERVER_DEFAULT_FIRST_NAME,
+ WaoUser.PROPERTY_LAST_NAME, OBSERVER_DEFAULT_LAST_NAME);
+ if (log.isDebugEnabled()) {
+ log.debug("Create default observer : " + observer);
+ }
+
+ transaction.commitTransaction();
+ } finally {
+ transaction.closeContext();
+ }
+ return observer;
+ }
+
+ /**
+ * Create a user : <br />
+ * <ul>
+ * <li>first name : null</li>
+ * <li>last name : null</li>
+ * <li>login : defined with {@code login} argument</li>
+ * <li>company : defined with {@code company} argument</li>
+ * <li>role : defined with {@code role} argument</li>
+ * </ul>
+ *
+ * @param login String unique login for the new user
+ * @param role UserRole of the user
+ * @param company Company parent of the user
+ * @return the new WaoUser
+ * @throws TopiaException
+ */
+ protected WaoUser createUser(String login, UserRole role,
+ Company company) throws TopiaException {
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ WaoUser observer = null;
+ try {
+ WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
+ observer = userDAO.create(
+ WaoUser.PROPERTY_COMPANY, company,
+ WaoUser.PROPERTY_LOGIN, login,
+ WaoUser.PROPERTY_FIRST_NAME, null,
+ WaoUser.PROPERTY_LAST_NAME, null);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Create observer : " + observer);
+ }
+
+ transaction.commitTransaction();
+ } finally {
+ transaction.closeContext();
+ }
+ return observer;
+ }
+
+ /**
+ * Create a company : <br />
+ * <ul>
+ * <li>name : TARTANPION</li>
+ * </ul>
+ *
+ * @return the new Company
+ * @throws TopiaException
+ */
+ protected Company createDefaultCompany() throws TopiaException {
+ return createCompany(COMPANY_DEFAULT_NAME);
+ }
+
+ /**
+ * Create a company : <br />
+ * <ul>
+ * <li>name : defined with {@code name} argument</li>
+ * </ul>
+ *
+ * @param name
+ * @return the new Company
+ * @throws TopiaException
+ */
+ protected Company createCompany(String name) throws TopiaException {
+ Company company = null;
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ try {
+ CompanyDAO dao = WaoDAOHelper.getCompanyDAO(transaction);
+
+ company = dao.create();
+ company.setName(name);
+
+ transaction.commitTransaction();
+ } finally {
+ transaction.closeContext();
+ }
+
+ return company;
+ }
+
+ /**
+ * Create a default sampleRow : <br />
+ * <ul>
+ * <li>code : 2010_0001</li>
+ * <li>company : TARTANPION</li>
+ * </ul>
+ *
+ * @return the new SampleRow
+ * @throws TopiaException
+ */
+ protected SampleRow createDefaultSampleRow() throws TopiaException {
+ return createSampleRow(SAMPLE_ROW_DEFAULT_CODE, findDefaultCompany());
+ }
+
+ /**
+ * Create a default sampleRow : <br />
+ * <ul>
+ * <li>code : defined with {@code code} argument</li>
+ * <li>company : defined with {@code company} argument</li>
+ * </ul>
+ *
+ * @param code
+ * @param company
+ * @return the new SampleRow
+ * @throws TopiaException
+ */
+ protected SampleRow createSampleRow(String code, Company company)
+ throws TopiaException {
+ SampleRow row = null;
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ try {
+ SampleRowDAO dao =
+ WaoDAOHelper.getSampleRowDAO(transaction);
+
+ row = dao.create();
+ row.setCode(code);
+ row.setCompany(company);
+ if (log.isDebugEnabled()) {
+ log.debug("Create sampleRow : " + row);
+ }
+
+ transaction.commitTransaction();
+ } finally {
+ transaction.closeContext();
+ }
+
+ return row;
+ }
+
+ /**
+ * Create a default boat : <br />
+ * <ul>
+ * <li>immatriculation : 123456</li>
+ * <li>name : SPRINGFIELD</li>
+ * <li>active : true</li>
+ * </ul>
+ *
+ * @return the new Boat
+ * @throws TopiaException
+ */
+ protected Boat createDefaultBoat() throws TopiaException {
+ return createBoat(123456, "SPRINGFIELD");
+ }
+
+ /**
+ * Create a boat : <br />
+ * <ul>
+ * <li>immatriculation : defined with {@code immatriculation} argument</li>
+ * <li>name : defined with {@code name} argument</li>
+ * <li>active : true</li>
+ * </ul>
+ *
+ * @param immatriculation
+ * @param name
+ * @return the new Boat
+ * @throws TopiaException
+ */
+ protected Boat createBoat(int immatriculation, String name)
+ throws TopiaException {
+ Boat boat = null;
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ try {
+ BoatDAO dao = WaoDAOHelper.getBoatDAO(transaction);
+
+ // CREATE
+ boat = dao.create();
+ boat.setImmatriculation(immatriculation);
+ boat.setName(name);
+ boat.setActive(true);
+ if (log.isDebugEnabled()) {
+ log.debug("Create boat : " + boat);
+ }
+
+ transaction.commitTransaction();
+
+ } finally {
+ transaction.closeContext();
+ }
+ return boat;
+ }
+
+ /**
+ * Create an elligibleBoat : <br />
+ * <ul>
+ * <li>sampleRow : defined with {@code row} argument</li>
+ * <li>boat : defined with {@code boat} argument</li>
+ * <li>companyActive : true if {@code company} is true, null otherwise</li>
+ * <li>globalActive : true if {@code company} is false, false otherwise</li>
+ * </ul>
+ *
+ * @param row to set for ElligibleBoat
+ * @param boat to set for ElligibleBoat
+ * @param company true for companyActive, false for globalActive
+ * @return the new ElligibleBoat
+ * @throws TopiaException
+ */
+ protected ElligibleBoat createElligibleBoat(SampleRow row, Boat boat,
+ boolean company) throws TopiaException {
+
+ ElligibleBoat elligibleBoat = null;
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ try {
+ ElligibleBoatDAO dao =
+ WaoDAOHelper.getElligibleBoatDAO(transaction);
+
+ // CREATE
+ elligibleBoat = dao.create();
+ elligibleBoat.setBoat(boat);
+ elligibleBoat.setSampleRow(row);
+ if (company) {
+ elligibleBoat.setCompanyActive(true);
+ } else {
+ elligibleBoat.setGlobalActive(true);
+ }
+ transaction.commitTransaction();
+
+ } finally {
+ transaction.closeContext();
+ }
+ return elligibleBoat;
+ }
+
+ /**
+ * Create a default contact : <br />
+ * <ul>
+ * <li>boat : SPRINGFIELD</li>
+ * <li>observer : homer</li>
+ * <li>sampleRow : 2010_0001</li>
+ * <li>state : CONTACT_START</li>
+ * <li>companyValidation : null</li>
+ * <li>programValidation : null</li>
+ * </ul>
+ *
+ * @return the new Contact
+ * @throws TopiaException
+ */
+ protected Contact createDefaultContact() throws TopiaException {
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ Contact contact = null;
+ try {
+ ContactDAO dao = WaoDAOHelper.getContactDAO(transaction);
+
+ // CREATE
+ contact = dao.create();
+ contact.setBoat(findDefaultBoat());
+ contact.setContactState(ContactState.CONTACT_START);
+ contact.setMainObserver(findDefaultObserver());
+ contact.setSampleRow(findDefaultSampleRow());
+ if (log.isDebugEnabled()) {
+ log.debug("Create contact : " + contact);
+ }
+
+ transaction.commitTransaction();
+
+ } finally {
+ transaction.closeContext();
+ }
+ return contact;
+ }
+
+ protected Company findDefaultCompany() throws TopiaException {
+ Company findCompany = findCompanyByName(BOAT_DEFAULT_NAME);
+ if (findCompany == null) {
+ findCompany = createDefaultCompany();
+ }
+ return findCompany;
+ }
+
+ protected Company findCompanyByName(String name) throws TopiaException {
+ Company company = null;
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ try {
+ CompanyDAO dao = WaoDAOHelper.getCompanyDAO(transaction);
+
+ company = dao.findByName(name);
+ } finally {
+ transaction.closeContext();
+ }
+ return company;
+ }
+
+ protected SampleRow findDefaultSampleRow(String... properties)
+ throws TopiaException {
+ SampleRow findRow = findSampleRowByCode(
+ SAMPLE_ROW_DEFAULT_CODE, properties);
+
+ if (findRow == null) {
+ findRow = createDefaultSampleRow();
+ }
+ return findRow;
+ }
+
+ /**
+ * Find a sampleRow existing using his unique {@code code}. Some
+ * {@code properties} can be added to load them if the sampleRow is
+ * corretly retrieve.
+ *
+ * @param code SampleRow unique code
+ * @param properties authorized properties : ElligibleBoat
+ * @return the existing SampleRow if found, null otherwise
+ * @throws TopiaException
+ */
+ protected SampleRow findSampleRowByCode(String code, String... properties)
+ throws TopiaException {
+ SampleRow row = null;
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ try {
+ SampleRowDAO dao =
+ WaoDAOHelper.getSampleRowDAO(transaction);
+
+ row = dao.findByCode(code);
+ if (row != null) {
+ // Load properties
+ for (String property : properties) {
+ if (property.equals(SampleRow.PROPERTY_ELLIGIBLE_BOAT)) {
+ row.sizeElligibleBoat();
+ }
+ }
+ }
+ } finally {
+ transaction.closeContext();
+ }
+ return row;
+ }
+
+ protected Boat findDefaultBoat() throws TopiaException {
+ Boat findBoat =
+ findBoatByImmatriculation(BOAT_DEFAULT_IMMATRICULATION);
+ if (findBoat == null) {
+ findBoat = createDefaultBoat();
+ }
+ return findBoat;
+ }
+
+ protected Boat findBoatByImmatriculation(int immatriculation)
+ throws TopiaException {
+ Boat boat = null;
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ try {
+ BoatDAO dao =
+ WaoDAOHelper.getBoatDAO(transaction);
+
+ boat = dao.findByImmatriculation(immatriculation);
+ } finally {
+ transaction.closeContext();
+ }
+ return boat;
+ }
+
+ protected WaoUser findDefaultObserver() throws TopiaException {
+ WaoUser findObserver =
+ findUserByLogin(OBSERVER_DEFAULT_LOGIN);
+ if (findObserver == null) {
+ findObserver = createDefaultObserver();
+ }
+ return findObserver;
+ }
+
+ protected WaoUser findUserByLogin(String login)
+ throws TopiaException {
+ WaoUser user = null;
+ TopiaContext transaction = manager.getContext().beginTransaction();
+ try {
+ WaoUserDAO dao =
+ WaoDAOHelper.getWaoUserDAO(transaction);
+
+ user = dao.findByLogin(login);
+ // Load company
+ if (user != null) {
+ user.getCompany();
+ }
+ } finally {
+ transaction.closeContext();
+ }
+ return user;
+ }
+
+ protected void prepareContactsData(Company company1, Company company2)
+ throws WaoBusinessException, TopiaException {
+
+ manager.setCurrentDate(DateUtil.createDate(5, 10, 2010));
+
+ InputStream input = getClass().getResourceAsStream("/import/navires.csv");
+ ServiceBoat serviceBoat = manager.getServiceBoat();
+ serviceBoat.importBoatCsv(input);
+ List<Boat> boats = serviceBoat.getBoatsByImmatriculations("174258");
+ Boat boat = boats.get(0);
+
+ List<Boat> boats2 = serviceBoat.getBoatsByImmatriculations("177474");
+ Boat boat2 = boats2.get(0);
+
+ TopiaContext transaction = manager.getContext().beginTransaction();
+
+ WaoUserDAO userDAO = WaoDAOHelper.getWaoUserDAO(transaction);
+ WaoUser user = userDAO.create(WaoUser.PROPERTY_FIRST_NAME,"Jean", WaoUser.PROPERTY_LAST_NAME, "Michmuche",
+ WaoUser.PROPERTY_COMPANY, company1);
+ company1.addWaoUser(user);
+ WaoUser user2 = userDAO.create(WaoUser.PROPERTY_FIRST_NAME,"Bill", WaoUser.PROPERTY_LAST_NAME, "Murray",
+ WaoUser.PROPERTY_COMPANY, company2);
+ company2.addWaoUser(user2);
+
+ transaction.commitTransaction();
+
+ input = getClass().getResourceAsStream("/import/zonesPeche.csv");
+ ServiceReferential serviceReferential = manager.getServiceReferential();
+ serviceReferential.importFishingZoneCsv(input);
+
+ input = getClass().getResourceAsStream("/import/echantillonnage.csv");
+ ServiceSampling serviceSampling = manager.getServiceSampling();
+ serviceSampling.importSamplingPlanCsv(input, getConnectedUser(null, UserRole.ADMIN, ObsProgram.OBSMER));
+
+ SampleRowDAO rowDAO = WaoDAOHelper.getSampleRowDAO(transaction);
+ SampleRow row = rowDAO.findByCode("2010_0001");
+ SampleRow row2 = rowDAO.findByCode("2009_0006");
+
+ transaction.closeContext();
+
+
+ ServiceContact serviceContact = manager.getServiceContact();
+
+ ConnectedUser connectedUser = getConnectedUser(user, UserRole.ADMIN, ObsProgram.OBSMER);
+
+ // Contacts for company TARTANPION
+ Contact contact1 = new ContactImpl();
+ contact1.setBoat(boat);
+ contact1.setMainObserver(user);
+ contact1.setSampleRow(row);
+ contact1.setContactState(ContactState.OBSERVATION_DONE);
+ Date begin = DateUtil.createDate(3, 3, 2010);
+ contact1.setObservationBeginDate(begin);
+ Date end = DateUtil.createDate(4, 3, 2010);
+ contact1.setObservationEndDate(end);
+ serviceContact.saveContact(connectedUser, contact1, false);
+
+ Contact contact2 = new ContactImpl();
+ contact2.setBoat(boat);
+ contact2.setMainObserver(user);
+ contact2.setSampleRow(row);
+ contact2.setContactState(ContactState.OBSERVATION_DONE);
+ begin = DateUtil.createDate(3, 10, 2010);
+ contact2.setObservationBeginDate(begin);
+ end = DateUtil.createDate(4, 10, 2010);
+ contact2.setObservationEndDate(end);
+ serviceContact.saveContact(connectedUser, contact2, false);
+
+ Contact contact3 = new ContactImpl();
+ contact3.setBoat(boat);
+ contact3.setMainObserver(user);
+ contact3.setSampleRow(row);
+ contact3.setContactState(ContactState.CONTACT_REFUSED);
+ begin = DateUtil.createDate(3, 5, 2010);
+ end = DateUtil.createDate(4, 5, 2010);
+ contact3.setObservationEndDate(end);
+ contact3.setTopiaCreateDate(begin);
+ serviceContact.saveContact(connectedUser, contact3, false);
+
+ // Contacts for company BIS
+ Contact contact4 = new ContactImpl();
+ contact4.setBoat(boat2);
+ contact4.setMainObserver(user2);
+ contact4.setSampleRow(row2);
+ contact4.setContactState(ContactState.OBSERVATION_EXPECTED);
+ begin = DateUtil.createDate(3, 3, 2010);
+ end = DateUtil.createDate(4, 3, 2010);
+ contact4.setObservationEndDate(end);
+ contact4.setTopiaCreateDate(begin);
+ serviceContact.saveContact(connectedUser, contact4, false);
+
+ Contact contact5 = new ContactImpl();
+ contact5.setBoat(boat2);
+ contact5.setMainObserver(user2);
+ contact5.setSampleRow(row2);
+ contact5.setContactState(ContactState.OBSERVATION_CANCELLED);
+ begin = DateUtil.createDate(3, 5, 2010);
+ end = DateUtil.createDate(4, 5, 2010);
+ contact5.setObservationEndDate(end);
+ contact5.setTopiaCreateDate(begin);
+ serviceContact.saveContact(connectedUser, contact5, false);
+
+ // Contact refused by program, will not be in result
+ Contact contact6 = new ContactImpl();
+ contact6.setBoat(boat2);
+ contact6.setMainObserver(user2);
+ contact6.setSampleRow(row2);
+ contact6.setContactState(ContactState.OBSERVATION_CANCELLED);
+ begin = DateUtil.createDate(3, 3, 2010);
+ contact6.setTopiaCreateDate(begin);
+ end = DateUtil.createDate(4, 3, 2010);
+ contact6.setObservationEndDate(end);
+ contact6.setValidationProgram(Boolean.FALSE);
+ serviceContact.saveContact(connectedUser, contact6, false);
+ }
+
+ public ConnectedUser getConnectedUser(WaoUser user, UserRole userRole, ObsProgram obsProgram) {
+ ConnectedUser connectedUser = new ConnectedUserImpl();
+ if (user == null) {
+ WaoUser waoUser = new WaoUserImpl();
+ connectedUser.setUser(waoUser);
+ } else {
+ connectedUser.setUser(user);
+ }
+ connectedUser.setProfile(new UserProfileImpl(obsProgram, userRole, true));
+ return connectedUser;
+ }
+
+ public ConnectedUser getConnectedAdmin() {
+ return getConnectedUser(null, UserRole.ADMIN, ObsProgram.OBSMER);
+ }
+
+}
Property changes on: trunk/wao-business/src/test/java/fr/ifremer/wao/service/AbstractServiceTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Deleted: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -1,145 +0,0 @@
-package fr.ifremer.wao.service;
-
-import fr.ifremer.wao.TestManager;
-import fr.ifremer.wao.WaoBusinessException;
-import fr.ifremer.wao.bean.ConnectedUser;
-import fr.ifremer.wao.bean.ObsProgram;
-import fr.ifremer.wao.bean.UserRole;
-import fr.ifremer.wao.entity.Boat;
-import fr.ifremer.wao.entity.Company;
-import fr.ifremer.wao.entity.CompanyImpl;
-import fr.ifremer.wao.entity.UserProfile;
-import fr.ifremer.wao.entity.UserProfileImpl;
-import fr.ifremer.wao.entity.WaoUser;
-import fr.ifremer.wao.entity.WaoUserImpl;
-
-import java.io.InputStream;
-
-public class ObsDebFixtures {
-
- protected TestManager manager;
-
- protected WaoUser josh;
- protected Company codeLutin;
- protected Company ifremer;
- protected Boat moise;
- protected Boat samourai;
-
- protected boolean boatsImported;
-
- public ObsDebFixtures(TestManager manager) {
- this.manager = manager;
- }
-
- public Company codeLutin() {
- if (codeLutin == null) {
- codeLutin = new CompanyImpl();
- codeLutin.setName("Code Lutin");
- codeLutin.setActive(true);
- manager.getServiceUser().createUpdateCompany(codeLutin);
- }
- return codeLutin;
- }
-
- public Company ifremer() {
- if (ifremer == null) {
- ifremer = new CompanyImpl();
- ifremer.setName("Ifremer");
- ifremer.setActive(true);
- manager.getServiceUser().createUpdateCompany(ifremer);
- }
- return ifremer;
- }
-
- public void boats() {
- if ( ! boatsImported) {
- ServiceBoat serviceBoat = manager.getServiceBoat();
- InputStream input = getClass().getResourceAsStream("/import/navires.csv");
- try {
- serviceBoat.importBoatCsv(input);
- } catch (WaoBusinessException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- public Boat samourai() {
- if (samourai == null) {
- boats();
- ServiceBoat serviceBoat = manager.getServiceBoat();
- try {
- samourai = serviceBoat.getBoat(174258);
- } catch (WaoBusinessException e) {
- throw new RuntimeException(e);
- }
- }
- return samourai;
- }
-
- public Boat moise() {
- if (moise == null) {
- boats();
- ServiceBoat serviceBoat = manager.getServiceBoat();
- try {
- moise = serviceBoat.getBoat(273129);
- } catch (WaoBusinessException e) {
- throw new RuntimeException(e);
- }
- }
- return moise;
- }
-
- public WaoUser josh() {
- if (josh == null) {
- josh = new WaoUserImpl();
- josh.setLogin("josh");
- josh.setFirstName("Joshua");
- josh.setLastName("B.");
- josh.setPassword(manager.getContext().encodeString("mdp"));
- josh.setActive(true);
- josh.setCompany(codeLutin());
- UserProfile adminProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.ADMIN, true);
- UserProfile coordinatorProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.COORDINATOR, true);
- UserProfile observerProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.OBSERVER, true);
- josh.addUserProfile(adminProfile);
- josh.addUserProfile(coordinatorProfile);
- josh.addUserProfile(observerProfile);
- try {
- manager.getServiceUser().createUpdateUser(josh, false);
- } catch (WaoBusinessException e) {
- throw new RuntimeException(e);
- }
- josh.setPassword("mdp");
- }
- return josh;
- }
-
- protected ConnectedUser joshAs(UserRole userRole) {
- // first, log in as josh
- ConnectedUser connectedUser = null;
- try {
- connectedUser = manager.getServiceUser().connect(josh().getLogin(), josh().getPassword());
- } catch (WaoBusinessException e) {
- throw new RuntimeException(e);
- }
- // then choose profile
- for (UserProfile userProfile : josh().getUserProfile()) {
- if (userProfile.getUserRole() == userRole) {
- connectedUser.setProfile(userProfile);
- }
- }
- return connectedUser;
- }
-
- public ConnectedUser joshAsAdministrator() {
- return joshAs(UserRole.ADMIN);
- }
-
- public ConnectedUser joshAsCoordinator() {
- return joshAs(UserRole.COORDINATOR);
- }
-
- public ConnectedUser joshAsObserver() {
- return joshAs(UserRole.OBSERVER);
- }
-}
\ No newline at end of file
Deleted: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -1,563 +0,0 @@
-/*
- * #%L
- * Wao :: Business
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2011 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.wao.service;
-
-import fr.ifremer.wao.TestManager;
-import fr.ifremer.wao.WaoBusinessException;
-import fr.ifremer.wao.bean.BoatFilter;
-import fr.ifremer.wao.bean.ConnectedUser;
-import fr.ifremer.wao.bean.ContactFilter;
-import fr.ifremer.wao.bean.ContactState;
-import fr.ifremer.wao.bean.ContactStateStatistics;
-import fr.ifremer.wao.bean.ObservationType;
-import fr.ifremer.wao.bean.SamplingFilter;
-import fr.ifremer.wao.bean.SamplingFilterValues;
-import fr.ifremer.wao.bean.ValidationResult;
-import fr.ifremer.wao.entity.Boat;
-import fr.ifremer.wao.entity.Contact;
-import fr.ifremer.wao.entity.ObsDebCode;
-import fr.ifremer.wao.entity.SampleRow;
-import fr.ifremer.wao.entity.TerrestrialDivision;
-import fr.ifremer.wao.entity.TerrestrialLocation;
-import fr.ifremer.wao.io.ImportResults;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DateUtils;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.nuiton.util.DateUtil;
-import org.nuiton.util.PeriodDates;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- *
- *
- * @author bleny
- */
-public class ObsDebTest {
-
- private static final Logger log = LoggerFactory.getLogger(ObsDebTest.class);
-
- protected TestManager manager;
-
- protected ServiceUser serviceUser;
- protected ServiceReferential serviceReferential;
- protected ServiceBoat serviceBoat;
- protected ServiceSampling serviceSampling;
- protected ServiceSynthesis serviceSynthesis;
-
- protected ServiceContact serviceContact;
- protected ObsDebFixtures fixtures;
-
- protected static final String SAMPLING_PLAN_CSV =
- "PLAN_CODE;SOCIETE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS;LIGNE_SANS_CONTACTS\n"
- + "2011_888;Ifremer;GA;OBS1;05/01/2010;UO007;;N\n"
- + "2011_889;Code Lutin;MA;OBS2;25/02/2010;UO087;;N\n"
- + "2011_890;Code Lutin;GA;OBS1;13/02/2010;UO007;;N\n"
- + "2011_891;Code Lutin;MA;OBS2;13/02/2010;UO087;;N";
- protected static final String SAMPLING_PLAN_WITH_OBSERVERS_CSV =
- "PLAN_CODE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS;LIGNE_SANS_CONTACTS\n"
- + "2011_890;GA;OBS1;13/02/2010;UO007;josh;N";
- protected static final String PHONE_SAMPLING_PLAN_CSV =
- "PLAN_CODE;SOCIETE;OBSERVATEUR_COD;OBSERVATION_DATE;NAVIRE_COD;OBSERVATEURS\n"
- + "2011_901;Code Lutin;OBS1;6/2010;174258;";
-
- @Before
- public void before() {
- manager = new TestManager();
- manager.start();
-
- serviceUser = manager.getServiceUser();
- serviceReferential = manager.getServiceReferential();
- serviceBoat = manager.getServiceBoat();
- serviceSampling = manager.getServiceSampling();
- serviceContact = manager.getServiceContact();
- serviceSynthesis = manager.getServiceSynthesis();
-
- fixtures = new ObsDebFixtures(manager);
- }
-
- @After
- public void stopManager() {
- manager.stop();
- manager = null;
- }
-
- /**
- * As an admin, i must be able to import terrestrial divisions
- */
- @Test
- public void adminCanImportTerrestrialDivisions() {
- // as an admin, i can import terrestrial divisions, i should not
- // raise any exception
- InputStream input = getClass().getResourceAsStream("/import/purifiedTerrestrialDivisions.csv");
- serviceReferential.importTerrestrialDivisions(input);
-
- // i can read what was imported
- List<TerrestrialDivision> observationsUnits = serviceReferential.getAllObservationUnits();
- Assert.assertEquals(243, observationsUnits.size());
- }
-
- /**
- * As an admin, i must be able to import a sampling plan
- * @throws WaoBusinessException if import fail
- */
- @Test
- public void adminCanImportSamplingPlan() throws WaoBusinessException {
- adminCanImportTerrestrialDivisions();
-
- // First create add two companies in Wao
- manager.setCurrentDate(2, 1, 2010);
-
- fixtures.ifremer();
- fixtures.codeLutin();
-
- // Then, import the sampling plan
- manager.setCurrentDate(3, 1, 2010);
-
- InputStream input = IOUtils.toInputStream(SAMPLING_PLAN_CSV);
- ImportResults importResults = serviceSampling.importSamplingPlanCsv(input, fixtures.joshAsAdministrator());
- Assert.assertEquals(4, importResults.getNbRowsImported());
- Assert.assertEquals(0, importResults.getNbRowsRefused());
- }
-
- @Test
- public void adminCanImportPhoneSamplingPlan() throws WaoBusinessException {
- manager.setCurrentDate(2, 1, 2010);
-
- fixtures.ifremer();
- fixtures.codeLutin();
- fixtures.boats();
-
- manager.setCurrentDate(3, 1, 2010);
-
- InputStream input = IOUtils.toInputStream(PHONE_SAMPLING_PLAN_CSV);
- ImportResults importResults = serviceSampling.importSamplingPlanCsv(input, fixtures.joshAsAdministrator());
- Assert.assertEquals(1, importResults.getNbRowsImported());
- Assert.assertEquals(0, importResults.getNbRowsRefused());
- }
-
- /**
- * As an admin, i should be able to read sampling plan
- * @throws WaoBusinessException if a call to service fail
- */
- @Test
- public void adminCanReadSamplingPlan() throws WaoBusinessException {
-
- // given a sampling plan
- adminCanImportSamplingPlan();
-
- // as an administrator, i can get the sampling plan
-
- // Since a new filter may be initialized for a period of time,
- // we set the current date to be deterministic, at this date
- // filter returned must be quite large to make 2 sample rows
- // non filtered
- manager.setCurrentDate(DateUtil.createDate(25, 1, 2010));
-
- SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator());
-
- if (log.isDebugEnabled()) {
- log.debug("a new empty sampling filter is " + samplingFilter.toString());
- }
-
- List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
-
- if (log.isDebugEnabled()) {
- log.debug(sampleRows.toString());
- }
- // as an admin, i can see all the sample-rows for all companies
- Assert.assertEquals(4, sampleRows.size());
-
- for (SampleRow sampleRow : sampleRows) {
- // i must be able to read those values without error
- sampleRow.getObservationUnit().getObservationUnitCode();
- sampleRow.getExpectedDate();
- sampleRow.getGroupName();
- sampleRow.getCompany().getName();
-
- // all the rows have a code
- Assert.assertTrue(StringUtils.isNotEmpty(sampleRow.getCode()));
- }
- }
-
- @Test
- public void usersCanFilterSamplingPlan() throws WaoBusinessException {
-
- // given a sampling plan
- adminCanImportSamplingPlan();
-
- // i can filter the sampling plan by getting a filter
- SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator());
-
- // and the possible values i can use to fill the filter
- SamplingFilterValues samplingFilterValues = serviceSampling.getPossibleValuesForFilter(samplingFilter);
-
- // according to the given sampling plan, there may be as many different values
- // as different values used in the sampling plan, for example : two
- // companies are used in the sampling plan so, 2 companies must be in
- // the possible values
- Assert.assertEquals(2, samplingFilterValues.getCompanies().size());
- Assert.assertEquals(4, samplingFilterValues.getSampleRows().size());
- Assert.assertEquals(2, samplingFilterValues.getObservationUnits().size());
- Assert.assertEquals(0, samplingFilterValues.getObservers().size());
-
- samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator());
- samplingFilter.setPeriod(new PeriodDates(DateUtil.createDate(20, 2, 2010),
- DateUtil.createDate(27, 2, 2010)));
-
- if (log.isDebugEnabled()) {
- log.debug("sampling filter for admin with period is " + samplingFilter.toString());
- }
-
- // service should have returned the line with date 25/02/2010
- List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
- Assert.assertEquals(1, sampleRows.size());
- Assert.assertEquals("2011_889", sampleRows.get(0).getCode());
- }
-
- /**
- * As an admin, i should be able to read sampling plan
- * @throws WaoBusinessException if call to service fail
- */
- @Test
- public void coordinatorCanReadSamplingPlan() throws WaoBusinessException {
-
- // given a sampling plan
- adminCanImportSamplingPlan();
-
- // as a coordinator, i can get the sampling plan
- manager.setCurrentDate(DateUtil.createDate(25, 1, 2010));
-
- SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator());
-
- if (log.isDebugEnabled()) {
- log.debug("a new empty sampling filter for coordinator is " + samplingFilter.toString());
- }
-
- List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
-
- if (log.isDebugEnabled()) {
- log.debug(sampleRows.toString());
- }
- // as an coordinator, i can see all sample-rows only for my company
- Assert.assertEquals(3, sampleRows.size());
- }
-
- @Test
- public void coordinatorCanAddObserversViaImport() throws WaoBusinessException, IOException {
-
- // given a sampling plan
- adminCanImportSamplingPlan();
-
- // as a coordinator, i can export the sampling plan
- SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator());
- samplingFilter.setExpectedObservationType(ObservationType.FIELD_WORK_OBSERVATION);
- InputStream input = serviceSampling.exportSamplingPlanCsv(fixtures.joshAsCoordinator(), samplingFilter);
-
- String csv = IOUtils.toString(input);
-
- if (log.isDebugEnabled()) {
- log.debug("CSV file as it was exported:\n" + csv);
- log.debug("CSV file as it will be imported (with observers):\n" + SAMPLING_PLAN_WITH_OBSERVERS_CSV);
- }
-
- // i can add a column to add observers to each line
- serviceSampling.importSamplingPlanCsv(IOUtils.toInputStream(SAMPLING_PLAN_WITH_OBSERVERS_CSV), fixtures.joshAsCoordinator());
-
- // now getting the sampling plan and checking that observers are linked to sample rows
- SampleRow row2011_890 = serviceSampling.getSampleRowByCode(fixtures.joshAsCoordinator(), "2011_890");
- Assert.assertNotNull(row2011_890);
- Assert.assertEquals(1, row2011_890.sizeObservers());
-
- // adding an observer must add a log entry
- Assert.assertEquals(1, row2011_890.sizeSampleRowLog());
-
- // the text of the log entry itself
- String logEntry = row2011_890.getSampleRowLog().get(0).getLogText();
-
- if (log.isDebugEnabled()) {
- log.debug("log entry after update on observers is: '" + logEntry + "'");
- }
-
- Assert.assertTrue("added observer is mentioned in the log", logEntry.contains(fixtures.josh().getFullName()));
- }
-
- /**
- * We want to check that the coordinator is not able to create a bad sampling
- * plan by sending a same observer on two different place the same day
- * @throws WaoBusinessException if call to service fail
- * @throws java.io.IOException if failure while reading CSV
- */
- @Test
- public void coordinatorCannotBreakSamplingPlan() throws IOException, WaoBusinessException {
- coordinatorCanAddObserversViaImport();
-
- // josh cannot be affected to this row, because on the same day
- // he is to be elsewhere
- SampleRow row2011_891 = serviceSampling.getSampleRowByCode(fixtures.joshAsCoordinator(), "2011_891");
- row2011_891.addObservers(fixtures.josh());
-
- ValidationResult validationResult = serviceSampling.validateSampleRow(row2011_891);
-
- if (log.isDebugEnabled()) {
- log.debug("validation result is " + validationResult.toString());
- }
-
- Assert.assertFalse("validation must fail", validationResult.isSuccess());
- Assert.assertTrue("message mentions sample row in conflict",
- validationResult.getMessage().contains("2011_890"));
- }
-
- @Test
- public void observerCanReadSamplingPlan() throws IOException, WaoBusinessException {
- // first, the coordinator must add observers
- coordinatorCanAddObserversViaImport();
-
- // as an observer, i can get the sampling plan
- manager.setCurrentDate(DateUtil.createDate(10, 2, 2010));
-
- SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsObserver());
-
- if (log.isDebugEnabled()) {
- log.debug("a new empty sampling filter for observer is " + samplingFilter.toString());
- }
-
- List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
-
- // as an observer, i can see only the sample-rows the coordinator affected to me
- Assert.assertEquals(1, sampleRows.size());
- }
-
- @Test
- public void observerCanExportHisRoadMapAsICalendar() throws IOException, WaoBusinessException {
- // first, the coordinator must add observers
- coordinatorCanAddObserversViaImport();
- manager.setCurrentDate(DateUtil.createDate(10, 2, 2010));
-
- String joshAsObserverToken = fixtures.joshAsObserver().getToken();
- ConnectedUser joshAsObserver = serviceUser.getConnectedUserByToken(joshAsObserverToken);
-
- InputStream in = serviceSampling.exportSamplingPlanICalendar(joshAsObserver);
-
- String result = IOUtils.toString(in);
- if (log.isDebugEnabled()) {
- log.debug("exported iCal for observer is " + result);
- }
-
- Assert.assertEquals(1, StringUtils.countMatches(result, "BEGIN:VEVENT"));
- Assert.assertTrue(result.contains("DTSTART;VALUE=DATE:20100213"));
- Assert.assertTrue(result.contains("TZID:Europe/Paris"));
- Assert.assertTrue(result.contains("LOCATION:GA-UO007 DESHAIES_POINTE NOIRE"));
- Assert.assertTrue(result.contains("SUMMARY:Observation ObsDeb"));
- }
-
- @Test
- public void observerCanCreateContact() throws IOException, WaoBusinessException {
- observerCanReadSamplingPlan();
-
- // we are one day after the observation
- manager.setCurrentDate(DateUtil.createDate(15, 2, 2010));
-
- // the user is supposed to create a contact to tell what he
- // has done this day, when i was supposed to observe for this row
- SampleRow row = serviceSampling.getSampleRowByCode(fixtures.joshAsObserver(), "2011_890");
-
- fixtures.boats(); // boats must be imported
-
- // observer can get a list of boats given this sample row. It should give him the boats
- // having a portOfRegistry in the observation unit of the sample-row
- BoatFilter boatFilter = serviceBoat.newBoatFilter(fixtures.joshAsObserver());
- boatFilter.setSampleRow(row);
- Map<Integer, Boat> boatsForRow = serviceBoat.getBoatsByFilter(boatFilter);
- if (log.isDebugEnabled()) {
- log.debug("boats returned after filtering on sample row:" + boatsForRow.values());
- }
- Assert.assertEquals(4, boatsForRow.size());
-
- Boat boat = boatsForRow.get(fixtures.moise().getImmatriculation());
-
- // let's create the contact
- Contact contact = serviceContact.getNewContact(fixtures.joshAsObserver(), row, boat);
-
- // by default, a contact must be of type observation
- Assert.assertEquals(ObservationType.FIELD_WORK_OBSERVATION, contact.getObservationType());
-
- // in the observation report, i must tell where i was and when
- List<TerrestrialLocation> ports = serviceReferential.getAllPorts(contact.getSampleRow().getObservationUnit());
-
- if (log.isDebugEnabled()) {
- for (TerrestrialLocation port : ports) {
- log.debug("possible ports for this contact contains " + port.getDescription());
- }
- }
-
- // i was at this port, from 9:15AM to 10:30AM
- contact.setTerrestrialLocation(ports.get(4));
- contact.setObservationBeginDate(DateUtil.createDate(0, 15, 9, 13, 2, 2010));
- contact.setObservationEndDate(DateUtil.createDate(0, 30, 10, 13, 2, 2010));
-
- // let's validate
- ValidationResult validationResult = serviceContact.validateContact(contact);
-
- if (log.isDebugEnabled()) {
- log.debug("result for contact validation is " + validationResult);
- }
-
- Assert.assertTrue("validation must succeed", validationResult.isSuccess());
-
- serviceContact.saveContact(fixtures.joshAsObserver(), contact, false);
-
- contact = serviceContact.getContact(contact.getTopiaId());
- Assert.assertNotNull("service must have save the data given by observer", contact.getTerrestrialLocation());
- Assert.assertNotNull("service must have save the data given by observer", contact.getObservationBeginDate());
- Assert.assertNotNull("service must have save the data given by observer", contact.getObservationEndDate());
-
- // now, i want to create another contact because, at the same
- // day, and the same time, i've seen another boat
- contact = serviceContact.getNewContact(fixtures.joshAsObserver(), row, fixtures.samourai());
- Assert.assertNotNull("service must have pre filled field", contact.getObservationEndDate());
- Assert.assertNotNull("service must have pre filled field", contact.getTerrestrialLocation());
-
- // i've made the survey in this last contact, so i can associate an ObsDebCode
- List<ObsDebCode> allObsDebCodes = serviceReferential.getAllObsDebCodes();
- contact.setObsDebCode(allObsDebCodes.get(123));
- serviceContact.saveContact(fixtures.joshAsObserver(), contact, false);
- }
-
- @Test
- public void observerCanCreateContactForPhoneSamplingPlan() throws WaoBusinessException {
- adminCanImportPhoneSamplingPlan();
-
- Date now = DateUtil.createDate(0, 30, 16, 11, 2, 2010); // 11 Feb 2010 at 4:30 PM
- manager.setCurrentDate(now);
-
- // as observer, i can get the sample row i'm working on
- SampleRow sampleRow = serviceSampling.getSampleRowByCode(fixtures.joshAsObserver(), "2011_901");
-
- // the sample row tell me what boat to call
- Boat boatToCall = sampleRow.getBoat();
-
- // i can create a contact
- Contact firstContact = serviceContact.getNewContact(fixtures.joshAsObserver(), sampleRow, boatToCall);
- Assert.assertEquals("Observation type is, by default, a phone call because contact was created from phone sampling plan",
- ObservationType.PHONE_CALL, firstContact.getObservationType());
-
- // let's suppose the guy refused the survey
- firstContact.setObservationBeginDate(now);
- firstContact.setObservationEndDate(DateUtils.addMinutes(now, 5));
- firstContact.setContactState(ContactState.CONTACT_REFUSED);
- serviceContact.saveContact(fixtures.joshAsObserver(), firstContact, false);
-
-
- // as observer, i can get the substitute for this boat
- Set<Boat> substituteBoats = serviceContact.getSubstitutesForBoat(boatToCall);
-
- if (log.isDebugEnabled()) {
- log.debug("substitutes found for boat " + boatToCall + " are " + substituteBoats);
- }
-
- Assert.assertEquals(2, substituteBoats.size());
-
- Boat substitute = substituteBoats.iterator().next();
- Contact secondContact = serviceContact.getNewContact(fixtures.joshAsObserver(), sampleRow, substitute);
- secondContact.setObservationBeginDate(now);
- secondContact.setObservationEndDate(DateUtils.addMinutes(now, 30));
- serviceContact.saveContact(fixtures.joshAsObserver(), secondContact, false);
- }
-
- /** Check that coordinator is able to export the contacts created in {@link #observerCanCreateContact()}
- * @throws WaoBusinessException
- * @throws IOException
- */
- @Test
- public void coordinatorCanExportContacts() throws IOException, WaoBusinessException {
- // first, create two contacts
- observerCanCreateContact();
-
- manager.setCurrentDate(DateUtil.createDate(16, 2, 2010));
-
- ContactFilter filter = serviceContact.newContactFilter(fixtures.joshAsCoordinator());
- InputStream in = serviceContact.exportContactCsv(filter);
-
- String csv = IOUtils.toString(in);
-
- if (log.isDebugEnabled()) {
- log.debug("csv for contacts exported as coordinator is \n" + csv);
- }
-
- int expectedLineNumber = 1 + 2; // 1 header line + 2 contacts
- int actualLineNumber = StringUtils.countMatches(csv, "\n");
- Assert.assertEquals(expectedLineNumber, actualLineNumber);
- }
-
- /** Check that coordinator is able to export the contacts created in {@link #observerCanCreateContact()} */
- @Test
- public void coordinatorCanGetSynthesisResults() throws WaoBusinessException, IOException {
- observerCanCreateContact();
-
- // TODO 20110426 bleny consider validation company and validation program when counting
-
- SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator());
- Map<String, Map<String, Integer>> observationHours =
- serviceSynthesis.getObservationHours(samplingFilter);
-
- Assert.assertEquals(2, observationHours.get("2010").get("09").intValue());
- Assert.assertEquals("24 values associated with '2010', one for each hour of the day",
- 24, observationHours.get("2010").size());
-
- samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator());
- Map<String, Map<String, Integer>> boatsCounts =
- serviceSynthesis.getDistinctBoatsCounts(samplingFilter);
- Assert.assertEquals("Two distinct boats observed on February 2010",
- 2, boatsCounts.get("2010").get("02").intValue());
- Assert.assertEquals("12 values for must be associated to '2010', one for each month",
- 12, boatsCounts.get("2010").size());
-
- samplingFilter = serviceSampling.
- newSamplingFilter(fixtures.joshAsCoordinator());
- Collection<ContactStateStatistics> contactStateStatistics =
- serviceSynthesis.getContactStateStatistics(samplingFilter);
- for (ContactStateStatistics contactStateStatistic : contactStateStatistics) {
- log.debug(contactStateStatistic.getCompanyName() + " -> " +
- contactStateStatistic.getData());
- }
- ContactStateStatistics contactStateStatistic = contactStateStatistics.
- iterator().next();
- Assert.assertEquals("Code Lutin", contactStateStatistic.getCompanyName());
- Assert.assertEquals(2, contactStateStatistic.getData().get
- (ContactState.OBSERVATION_DONE).intValue());
- }
-}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -24,7 +24,6 @@
package fr.ifremer.wao.service;
-import fr.ifremer.wao.AbstractServiceTest;
import fr.ifremer.wao.TestManager;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoDAOHelper;
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -20,7 +20,6 @@
*/
package fr.ifremer.wao.service;
-import fr.ifremer.wao.AbstractServiceTest;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.WaoException;
@@ -36,7 +35,6 @@
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
-import org.nuiton.util.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -21,7 +21,6 @@
package fr.ifremer.wao.service;
-import fr.ifremer.wao.AbstractServiceTest;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ContactFilter;
import fr.ifremer.wao.bean.ContactFilterImpl;
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -22,7 +22,6 @@
package fr.ifremer.wao.service;
import com.csvreader.CsvReader;
-import fr.ifremer.wao.AbstractServiceTest;
import fr.ifremer.wao.TestManager;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoDAOHelper;
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 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -24,7 +24,6 @@
package fr.ifremer.wao.service;
-import fr.ifremer.wao.AbstractServiceTest;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.WaoException;
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -24,7 +24,6 @@
package fr.ifremer.wao.service;
-import fr.ifremer.wao.AbstractServiceTest;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.bean.BoardingResult;
import fr.ifremer.wao.bean.ConnectedUser;
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -24,7 +24,6 @@
package fr.ifremer.wao.service;
-import fr.ifremer.wao.AbstractServiceTest;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.bean.ObsProgram;
@@ -42,7 +41,6 @@
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
-import org.nuiton.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 2011-05-30 16:17:33 UTC (rev 1305)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ContactForm.java 2011-05-31 13:35:20 UTC (rev 1306)
@@ -32,6 +32,7 @@
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.ContactStateMotif;
import fr.ifremer.wao.entity.ObsDebCode;
+import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceContact;
@@ -268,7 +269,16 @@
}
public List<ObsDebCode> getObsDebCodes() {
- return serviceReferential.getAllObsDebCodes();
+ TerrestrialLocation regionIfremer;
+ SampleRow sampleRow = getContact().getSampleRow();
+ if (sampleRow.isPhoneCall()) {
+ regionIfremer = sampleRow.getTerrestrialLocation();
+ } else {
+ regionIfremer = sampleRow.getObservationUnit().getRegionIfremer();
+ }
+ List<ObsDebCode> obsDebCodes = serviceReferential.
+ getAllObsDebCodes(regionIfremer);
+ return obsDebCodes;
}
public SelectModel getContactStateSelectModel() {
1
0