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
May 2011
- 2 participants
- 63 discussions
[Suiviobsmer-commits] r1267 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/test/java/fr/ifremer/wao/service wao-business/src/test/resources/import wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 11 May '11
by bleny@users.labs.libre-entreprise.org 11 May '11
11 May '11
Author: bleny
Date: 2011-05-11 13:18:17 +0000 (Wed, 11 May 2011)
New Revision: 1267
Log:
add port of registry to boats, enabling filtering on sampleRows
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.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
trunk/wao-business/src/test/resources/import/navires.csv
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
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-09 14:49:28 UTC (rev 1266)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-05-11 13:18:17 UTC (rev 1267)
@@ -31,8 +31,10 @@
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.WaoUser;
+import net.fortuna.ical4j.model.Period;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
+import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
@@ -292,17 +294,6 @@
query.addSubQuery(WaoQueryHelper.format(
"$1 IN (?)", sampleRowProperty.$alias()), subquery);
- // XXX 20101022 bleny it seems that last call don't
- // keep params of the sub-query. Thus, the :facadeName is still
- // in the query but misses in params of the request.
- // the next line is a work-around that copy the params of the
- // subquery is the main query. It works but it seems that
- // there is a bug in addSubQuery, :facadeName should have been
- // replaced in the query and removed from params OR not replaced
- // in the query and kept in the params but NOT not replaced in
- // the query and removed from params
- query.getParams().addAll(subquery.getParams());
-
if(logger.isDebugEnabled()) {
logger.debug("sampling filter query " + query);
}
@@ -471,6 +462,12 @@
*/
public TopiaQuery applyBoatFilter(BoatFilter filter) {
+ if (filter.getObsProgram() == ObsProgram.OBSDEB) {
+ sampleRowProperty = WaoQueryHelper.newSampleRowProperty();
+ } else {
+ sampleRowProperty = elligibleBoatProperty.sampleRowProperty();
+ }
+
//boatProperty = query.getMainAlias();
Company company = filter.getCompany();
@@ -482,25 +479,41 @@
// Sampling filter
if (filter.isSamplingFiltered()) {
- // Add join for ElligibleBoat
-// elligibleBoatProperty = WaoQueryHelper.newElligibleBoatProperty();
- query.addLeftJoin(boatProperty.elligibleBoat(), elligibleBoatProperty.$alias(), false);
+ if (filter.getObsProgram() == ObsProgram.OBSDEB) {
+ if (filter.getSampleRow() != null) {
+ String observationUnitCode = filter.getSampleRow().getObservationUnit().getObservationUnitCode();
- // To be sure to have no doubloons
- query.setSelect(boatProperty.$alias()).addDistinct();
+ WaoQueryHelper.TerrestrialDivisionProperty subTerrestrialDivisionProperty =
+ WaoQueryHelper.newTerrestrialDivisionProperty("TD2");
- // Apply filter for sampling
-// sampleRowProperty = elligibleBoatProperty.sampleRowProperty();
- applySamplingFilter(filter);
+ TopiaQuery subquery = WaoQueryHelper.createQuery(subTerrestrialDivisionProperty).
+ setSelect(subTerrestrialDivisionProperty.portProperty().topiaId()).
+ addEquals(subTerrestrialDivisionProperty.observationUnitCode(), observationUnitCode);
- // Company
- if (company != null) {
- // Test only valid ElligibleBoat for that company
- query.addWhere(WaoQueryHelper.format(
- "$1 = :booleanTrue OR ($1 IS NULL AND $2 = :booleanTrue)",
- elligibleBoatProperty.companyActive(),
- elligibleBoatProperty.globalActive())
- ).addParam("booleanTrue", Boolean.TRUE);
+ if (logger.isDebugEnabled()) {
+ logger.debug("subquery to find ports given an observation unit code: " + subquery);
+ }
+
+ query.addSubQuery(WaoQueryHelper.format(
+ "$1 IN (?)", boatProperty.portOfRegistryProperty().topiaId()), subquery);
+
+ }
+ } else {
+ applySamplingFilter(filter);
+ // Add join for ElligibleBoat
+ query.addLeftJoin(boatProperty.elligibleBoat(), elligibleBoatProperty.$alias(), false);
+
+ // To be sure to have no doubloons
+ query.setSelect(boatProperty.$alias()).addDistinct();
+
+ if (company != null) {
+ // Test only valid ElligibleBoat for that company
+ query.addWhere(WaoQueryHelper.format(
+ "$1 = :booleanTrue OR ($1 IS NULL AND $2 = :booleanTrue)",
+ elligibleBoatProperty.companyActive(),
+ elligibleBoatProperty.globalActive())
+ ).addParam("booleanTrue", Boolean.TRUE);
+ }
}
}
@@ -508,6 +521,10 @@
query.addOrder(boatProperty.$property(orderBy));
}
+ if (logger.isDebugEnabled()) {
+ logger.debug("query after applying boat filter:" + query);
+ }
+
return query;
}
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-05-09 14:49:28 UTC (rev 1266)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-05-11 13:18:17 UTC (rev 1267)
@@ -146,6 +146,13 @@
Map<Integer, Boat> results = dao.findAllMappedByQuery(query,
Boat.PROPERTY_IMMATRICULATION, Integer.class);
+ if (filter.getObsProgram() == ObsProgram.OBSDEB) {
+ // force load
+ for (Boat boat : results.values()) {
+ boat.getPortOfRegistry();
+ }
+ }
+
return results;
}
@@ -447,6 +454,7 @@
existingBoat.setActive(boat.getActive());
existingBoat.setShipOwner(boat.getShipOwner());
existingBoat.setBoatDistrict(boat.getBoatDistrict());
+ existingBoat.setPortOfRegistry(boat.getPortOfRegistry());
boatDAO.update(existingBoat);
}
@@ -611,16 +619,19 @@
protected BoatFilter executeNewBoatFilter(TopiaContext transaction, ConnectedUser connectedUser) throws Exception {
BoatFilter boatFilter = new BoatFilterImpl();
- // Only rows which are not finished nearly one month
- boatFilter.setNbMonthFinishedFromToday(-1);
boatFilter.setObsProgram(connectedUser.getProfile().getObsProgram());
- // Very very important to do that at beginning
+ // Very very important to do that at beginning for security purpose
// Evo #2227 : Guest user has no default company filter
if (connectedUser.isCoordinatorOrObserver()) {
boatFilter.setCompany(connectedUser.getCompany());
}
+ // Only rows which are not finished nearly one month
+ if (connectedUser.isObsMer() || connectedUser.isObsVente()) {
+ boatFilter.setNbMonthFinishedFromToday(-1);
+ }
+
return boatFilter;
}
}
Modified: 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-09 14:49:28 UTC (rev 1266)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java 2011-05-11 13:18:17 UTC (rev 1267)
@@ -61,7 +61,7 @@
return ifremer;
}
- protected void importBoats() {
+ public void boats() {
if ( ! boatsImported) {
ServiceBoat serviceBoat = manager.getServiceBoat();
InputStream input = getClass().getResourceAsStream("/import/navires.csv");
@@ -75,7 +75,7 @@
public Boat samourai() {
if (samourai == null) {
- importBoats();
+ boats();
ServiceBoat serviceBoat = manager.getServiceBoat();
try {
samourai = serviceBoat.getBoat(174258);
@@ -88,7 +88,7 @@
public Boat moise() {
if (moise == null) {
- importBoats();
+ boats();
ServiceBoat serviceBoat = manager.getServiceBoat();
try {
moise = serviceBoat.getBoat(273129);
Modified: 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-09 14:49:28 UTC (rev 1266)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-05-11 13:18:17 UTC (rev 1267)
@@ -25,6 +25,7 @@
import fr.ifremer.wao.AbstractServiceTest;
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.ObservationType;
@@ -345,10 +346,23 @@
manager.setCurrentDate(DateUtil.createDate(15, 2, 2010));
// the user is supposed to create a contact to tell what he
- // has done this day
+ // has done this day, when i was supposed to observe for this row
SampleRow row = serviceSampling.getSampleRowByCode(fixtures.joshAsObserver(), "2011_890");
- Boat boat = serviceBoat.getBoat(fixtures.moise().getImmatriculation());
+ 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);
Modified: trunk/wao-business/src/test/resources/import/navires.csv
===================================================================
--- trunk/wao-business/src/test/resources/import/navires.csv 2011-05-09 14:49:28 UTC (rev 1266)
+++ trunk/wao-business/src/test/resources/import/navires.csv 2011-05-11 13:18:17 UTC (rev 1267)
@@ -1,7 +1,7 @@
NAVIRE_IMMATRICULATION;NAVIRE_NOM;NAVIRE_LONGUEUR;NAVIRE_ANNEE;QUARTIER_CODE;ARMATEUR_CODE;ARMATEUR_NOM;ARMATEUR_PRENOM;NAVIRE_ACTIF;PORT_CODE
-273129;MOISE;7;1992;UX;19771564;BEURRE ;JEAN CLAUDE;Y;XSN
-174258;SAMOURAI KING;9;1982;UN;19744130;MARIE ;JEAN PHILIPPE;Y;XSN
+273129;MOISE;7;1992;UX;19771564;BEURRE ;JEAN CLAUDE;Y;MP3
+174258;SAMOURAI KING;9;1982;UN;19744130;MARIE ;JEAN PHILIPPE;Y;MP6
177474;MAYFLOWERS;10;1983;UN;19784252;MOSELLE ;ALAIN RENE;N;XSN
174592;FIFITOU;8;1975;UN;18854131;POUTRE ;JEAN PIERRE;Y;XSN
-284595;A MA LOUTRE;8;1973;UN; SPR3965;BECANAUD; NA;Y;XSN
-978419;BISOUNOURS;11;2002;CI;18854131;POUTRE ;JEAN PIERRE;Y;XSN
+284595;A MA LOUTRE;8;1973;UN; SPR3965;BECANAUD; NA;Y;LP3
+978419;BISOUNOURS;11;2002;CI;18854131;POUTRE ;JEAN PIERRE;Y;MP6
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-09 14:49:28 UTC (rev 1266)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2011-05-11 13:18:17 UTC (rev 1267)
@@ -120,7 +120,9 @@
void setupRender() throws WaoException, WaoBusinessException {
- filterComponent.resetFilter();
+ // XXX bleny 20110511 resetting on page load may solve an issue when
+ // creating contact and coming back to Boats. But this may break the page
+ // filterComponent.resetFilter();
if (boatSelectedImmatriculation != null && getBoatSelected() == null) {
layout.addFatal("L'immatriculation " + boatSelectedImmatriculation +
@@ -303,7 +305,7 @@
boatSelectedImmatriculation = null;
// Suppress persistant boat informations for boat selected
companyBoatInfos = null;
- return this;
+ return boatsZone.getBody();
}
/*************** RIGHT PANEL ****************/
Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-09 14:49:28 UTC (rev 1266)
+++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-11 13:18:17 UTC (rev 1267)
@@ -151,6 +151,9 @@
<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">
+ <img src="${asset:context:}/img/boat.png" alt="${message:wao.ui.entity.Boats}" />
+ </a>
</p:actionsCell>
</div>
1
0
[Suiviobsmer-commits] r1266 - in trunk/wao-business/src: main/java/fr/ifremer/wao main/java/fr/ifremer/wao/io/csv2/models main/java/fr/ifremer/wao/io/csv2/models/operations main/java/fr/ifremer/wao/service main/resources/i18n main/xmi test/resources/import
by bleny@users.labs.libre-entreprise.org 09 May '11
by bleny@users.labs.libre-entreprise.org 09 May '11
09 May '11
Author: bleny
Date: 2011-05-09 14:49:28 +0000 (Mon, 09 May 2011)
New Revision: 1266
Log:
add portOfRegistry to boats (import/export)
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/PortParserFormatter.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.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/ServiceBoatImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.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/resources/import/navires.csv
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-09 12:08:47 UTC (rev 1265)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-09 14:49:28 UTC (rev 1266)
@@ -875,4 +875,10 @@
queries.add("ALTER TABLE SampleRow ADD blankRow BOOLEAN");
queries.add("UPDATE TABLE SampleRow SET blankRow=FALSE");
}
+
+ @Override
+ protected void addPortOfRegistryToBoats_3_0(List<String> queries) {
+ queries.add("ALTER TABLE Boat ADD portOfRegistry CHARACTER VARYING(255);");
+ queries.add("ALTER TABLE Boat ADD CONSTRAINT portOfRegistry_fkey FOREIGN KEY (portOfRegistry) REFERENCES TerrestrialLocation(topiaId);");
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-09 12:08:47 UTC (rev 1265)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-09 14:49:28 UTC (rev 1266)
@@ -145,6 +145,8 @@
protected abstract void addObsDebToSampleRows_3_0(List<String> queries);
+ protected abstract void addPortOfRegistryToBoats_3_0(List<String> queries);
+
protected static final Version[] VERSIONS = new Version[] {
VersionUtil.valueOf("1.0"),
VersionUtil.valueOf("1.1"),
@@ -509,6 +511,8 @@
addObsDebToSampleRows_3_0(queries);
+ addPortOfRegistryToBoats_3_0(queries);
+
String[] strings = queries.toArray(new String[queries.size()]);
executeSQL(tx, showSql, showProgression, strings);
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java 2011-05-09 12:08:47 UTC (rev 1265)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java 2011-05-09 14:49:28 UTC (rev 1266)
@@ -5,6 +5,7 @@
import fr.ifremer.wao.entity.BoatDistrictImpl;
import fr.ifremer.wao.entity.BoatImpl;
import fr.ifremer.wao.entity.ShipOwnerImpl;
+import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.io.csv2.Common;
import fr.ifremer.wao.io.csv2.ExportableColumn;
import fr.ifremer.wao.io.csv2.ImportExportModel;
@@ -12,6 +13,7 @@
import fr.ifremer.wao.io.csv2.ModelBuilder;
import fr.ifremer.wao.io.csv2.ValueGetterSetter;
import fr.ifremer.wao.io.csv2.ValueParserFormatter;
+import fr.ifremer.wao.io.csv2.models.operations.PortParserFormatter;
import java.text.ParseException;
import java.util.Collection;
@@ -27,7 +29,20 @@
protected ModelBuilder<Boat> modelBuilder;
+ protected List<TerrestrialLocation> ports;
+
+ /** Constructor for export */
public BoatImportExportModel() {
+ buildModel();
+ }
+
+ /** Constructor for import */
+ public BoatImportExportModel(List<TerrestrialLocation> ports) {
+ this.ports = ports;
+ buildModel();
+ }
+
+ protected void buildModel() {
modelBuilder = new ModelBuilder<Boat>();
modelBuilder.newColumnForImportExport("NAVIRE_IMMATRICULATION", Boat.PROPERTY_IMMATRICULATION, new ValueParserFormatter<Integer>() {
Pattern pattern = Pattern.compile("\\d{6}");
@@ -40,7 +55,7 @@
@Override
public Integer parse(String imma) throws ParseException {
Matcher matcher = pattern.matcher(imma);
- if ( ! matcher.find()) {
+ if (!matcher.find()) {
throw new IllegalArgumentException(WaoUtils._("wao.business.boat.validation.immatriculation.wrongFormat"));
}
Integer immatriculation = Integer.parseInt(imma);
@@ -99,6 +114,12 @@
boat.getBoatDistrict().setCode(districtCode);
}
});
+
+ // port of registry
+ modelBuilder.newColumnForImportExport("PORT_CODE",
+ Boat.PROPERTY_PORT_OF_REGISTRY,
+ new PortParserFormatter(ports, true));
+
}
@Override
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-09 12:08:47 UTC (rev 1265)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java 2011-05-09 14:49:28 UTC (rev 1266)
@@ -30,27 +30,23 @@
import fr.ifremer.wao.io.csv2.ImportableColumn;
import fr.ifremer.wao.io.csv2.ModelBuilder;
import fr.ifremer.wao.io.csv2.ValueParser;
+import fr.ifremer.wao.io.csv2.models.operations.PortParserFormatter;
import org.apache.commons.lang.StringUtils;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Set;
public class TerrestrialDivisionImportModel implements ImportModel<TerrestrialDivision> {
- /** Existing ports
- * key should be an terrestrial location id {@link fr.ifremer.wao.entity.TerrestrialLocation#getCode()}
- * and all the values must have {@link fr.ifremer.wao.entity.TerrestrialLocation#getLocationType()} at
- * {@link fr.ifremer.wao.bean.LocationType#PORT}.
- */
- protected Map<String, TerrestrialLocation> ports;
/** all valid {@link fr.ifremer.wao.entity.TerrestrialLocation#getRegionIfremerCode()} values.
* for validation purpose only */
protected Set<String> regionCodes;
- public TerrestrialDivisionImportModel(Map<String, TerrestrialLocation> ports, Set<String> regionCodes) {
+ protected List<TerrestrialLocation> ports;
+
+ public TerrestrialDivisionImportModel(List<TerrestrialLocation> ports, Set<String> regionCodes) {
this.ports = ports;
this.regionCodes = regionCodes;
}
@@ -110,16 +106,7 @@
modelBuilder.newMandatoryColumn(
"LIEU_OBSERVATION_COD",
// the value given is a code of a port, let's find and associate
- new ValueParser<TerrestrialLocation>() {
- @Override
- public TerrestrialLocation parse(String locationCode) {
- TerrestrialLocation port = ports.get(locationCode);
- if (port == null) {
- throw new IllegalArgumentException("Le code '" + locationCode + "' n'est pas un code de lieu valide");
- }
- return port;
- }
- },
+ new PortParserFormatter(ports, false),
TerrestrialDivision.PROPERTY_PORT);
modelBuilder.newIgnoredColumn("LIEU_OBSERVATION_LIB");
modelBuilder.newIgnoredColumn("DATE_DEBUT");
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/PortParserFormatter.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/PortParserFormatter.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/PortParserFormatter.java 2011-05-09 14:49:28 UTC (rev 1266)
@@ -0,0 +1,63 @@
+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 fr.ifremer.wao.io.csv2.ValueParserFormatter;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* Created by IntelliJ IDEA.
+* User: brendan
+* Date: 09/05/11
+* Time: 14:53
+* To change this template use File | Settings | File Templates.
+*/
+public class PortParserFormatter implements ValueParserFormatter<TerrestrialLocation> {
+
+ /** Existing ports
+ * key should be an terrestrial location id {@link fr.ifremer.wao.entity.TerrestrialLocation#getCode()}
+ * and all the values must have {@link fr.ifremer.wao.entity.TerrestrialLocation#getLocationType()} at
+ * {@link fr.ifremer.wao.bean.LocationType#PORT}.
+ */
+ protected Map<String, TerrestrialLocation> ports;
+
+ protected boolean allowNullValue;
+
+ public PortParserFormatter(List<TerrestrialLocation> ports, boolean allowNullValue) {
+ this.allowNullValue = allowNullValue;
+ if (ports != null) {
+ this.ports = WaoUtils.projectPropertyUnique(ports, TerrestrialLocation.PROPERTY_CODE);
+ }
+ }
+
+ @Override
+ public TerrestrialLocation parse(String locationCode) {
+ TerrestrialLocation port;
+ if (StringUtils.isBlank(locationCode)) {
+ if (allowNullValue) {
+ port = null;
+ } else {
+ throw new IllegalArgumentException("Il faut préciser un port");
+ }
+ } else {
+ port = ports.get(locationCode);
+ if (port == null) {
+ throw new IllegalArgumentException("Le code '" + locationCode + "' n'est pas un code de lieu valide");
+ }
+ }
+ return port;
+ }
+
+ @Override
+ public String format(TerrestrialLocation port) {
+ String code = "";
+ if (port != null) {
+ code = port.getCode();
+ }
+ return code;
+ }
+}
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-05-09 12:08:47 UTC (rev 1265)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-05-09 14:49:28 UTC (rev 1266)
@@ -24,8 +24,6 @@
package fr.ifremer.wao.service;
-import com.csvreader.CsvReader;
-import com.csvreader.CsvWriter;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoBusinessException.Type;
import fr.ifremer.wao.WaoContext;
@@ -34,6 +32,7 @@
import fr.ifremer.wao.WaoProperty;
import fr.ifremer.wao.WaoQueryBuilder;
import fr.ifremer.wao.WaoQueryHelper;
+import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.bean.BoatFilter;
import fr.ifremer.wao.bean.BoatFilterImpl;
import fr.ifremer.wao.bean.BoatFilterValues;
@@ -41,6 +40,7 @@
import fr.ifremer.wao.bean.CompanyBoatInfos;
import fr.ifremer.wao.bean.CompanyBoatInfosImpl;
import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.LocationType;
import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.entity.ActivityCalendar;
import fr.ifremer.wao.entity.ActivityCalendarDAO;
@@ -62,12 +62,10 @@
import fr.ifremer.wao.entity.SampleRow;
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.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.csv2.Export;
import fr.ifremer.wao.io.csv2.Import;
import fr.ifremer.wao.io.csv2.models.BoatImportExportModel;
@@ -82,11 +80,9 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -374,49 +370,67 @@
}
/**
- * Import boats from a CSV file. Warning, must be UTF-8 encoding.
- * Use of CsvReader to manage InputStream and create or update boats.
- * Header file must be : NAVS_COD, CARN_NOM, CARN_LONGUEUR_HT, CARN_ANNEE,
- * QUARTIER_IMMA, PER_COD, PER_NOM,PER_PRENOM.
- * Existing boats (with same immatriculation) are updated.
+ * Import boats from CSV file, given data will be merged with data already
+ * in the DB. All shipowner or district code mentioned will be added to
+ * the database on the fly
*
- *
* @param transaction current transaction
- * @param input Stream corresponding to Csv file
- * @return an array with two int : the first corresponding to total number
- * of boats imported and the second corresponding only to new boats added.
- * @throws TopiaException
- * @throws IOException
- * @throws WaoBusinessException
- * @see com.csvreader.CsvReader
+ * @param input stream of the CSV file, see documentation for required headers
+ * file may be encoded using UTF-8 encoding and ';' as column
+ * separator
+ * @return an import result giving counts of number of rows
+ * @throws TopiaException if fail at retrieving/writing data in the DB
+ * @throws IOException if fail at reading CSV file
*/
@Override
public ImportResults executeImportBoatCsv(TopiaContext transaction,
- InputStream input)
- throws TopiaException, IOException, WaoBusinessException {
+ InputStream input) throws TopiaException, IOException {
- BoatImportExportModel model = new BoatImportExportModel();
+ // Before importing, we need to retrieve all ports that may be mentioned
+ // in the CSV file
+ TerrestrialLocationDAO terrestrialLocationDAO = WaoDAOHelper.getTerrestrialLocationDAO(transaction);
+ List<TerrestrialLocation> ports = terrestrialLocationDAO.findAllByLocationTypeOrdinal(LocationType.PORT.ordinal());
+
+ // Building the model, providing ports
+ BoatImportExportModel model = new BoatImportExportModel(ports);
Import<Boat> boatImport = new Import<Boat>(model, input);
+
+ // Getting some DAOs
BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction);
ShipOwnerDAO shipOwnerDAO = WaoDAOHelper.getShipOwnerDAO(transaction);
BoatDistrictDAO boatDistrictDAO = WaoDAOHelper.getBoatDistrictDAO(transaction);
+ // load data that will be linked to the boat
+ Map<String, ShipOwner> shipOwners = WaoUtils.projectPropertyUnique(shipOwnerDAO.findAll(), ShipOwner.PROPERTY_CODE);
+ Map<String, BoatDistrict> districts = WaoUtils.projectPropertyUnique(boatDistrictDAO.findAll(), BoatDistrict.PROPERTY_CODE);
+
+ // init the counts to be returned
ImportResults importResults = new ImportResultsImpl();
+
+ // now iterating over the lines of the CSV
Iterator<Boat> it = boatImport.startImport();
while (it.hasNext()) {
Boat boat = it.next();
+ // first each boat read, merge with data already in database or add
+ // all new boats encountered. New district codes or shipowners may be
+ // added on the fly too.
+
// first, find and reuse existing ship owner
- ShipOwner shipOwner = shipOwnerDAO.findByCode(boat.getShipOwner().getCode());
+ String shipOwnerCode = boat.getShipOwner().getCode();
+ ShipOwner shipOwner = shipOwners.get(shipOwnerCode);
if (shipOwner == null) {
shipOwner = shipOwnerDAO.create(boat.getShipOwner());
+ shipOwners.put(shipOwnerCode, shipOwner);
}
boat.setShipOwner(shipOwner);
// secondly, find and reuse boat district
- BoatDistrict district = boatDistrictDAO.findByCode(boat.getBoatDistrict().getCode());
+ String districtCode = boat.getBoatDistrict().getCode();
+ BoatDistrict district = districts.get(districtCode);
if (district == null) {
- district = boatDistrictDAO.create(BoatDistrict.PROPERTY_CODE, boat.getBoatDistrict().getCode());
+ district = boatDistrictDAO.create(BoatDistrict.PROPERTY_CODE, districtCode);
+ districts.put(districtCode, district);
}
boat.setBoatDistrict(district);
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-09 12:08:47 UTC (rev 1265)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-05-09 14:49:28 UTC (rev 1266)
@@ -571,16 +571,15 @@
List<TerrestrialLocation> ports = terrestrialLocationDAO.findAllByLocationTypeOrdinal(LocationType.PORT.ordinal());
// from that, deduce a map terrestrial location code -> entity and the set of region codes
- Map<String, TerrestrialLocation> codeToPorts = WaoUtils.projectPropertyUnique(ports, TerrestrialLocation.PROPERTY_CODE);
Set<String> regionCodes = WaoUtils.projectProperty(String.class, ports, TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE).keySet();
if (log.isDebugEnabled()) {
- log.debug(codeToPorts.size() + " ports, " + regionCodes.size() + " regions");
+ log.debug(ports.size() + " ports, " + regionCodes.size() + " regions");
log.debug("regionCodes = " + regionCodes);
}
// the import itself
- ImportModel<TerrestrialDivision> importModel = new TerrestrialDivisionImportModel(codeToPorts, regionCodes);
+ ImportModel<TerrestrialDivision> importModel = new TerrestrialDivisionImportModel(ports, regionCodes);
Import<TerrestrialDivision> terrestrialDivisionImport = new Import<TerrestrialDivision>(importModel, input);
TerrestrialDivisionDAO dao = WaoDAOHelper.getTerrestrialDivisionDAO(transaction);
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-09 12:08:47 UTC (rev 1265)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-05-09 14:49:28 UTC (rev 1266)
@@ -1,175 +1,175 @@
ContactPieChartConstant.OTHER=Autres
-ContactPieChartConstant.REALIZED=R\u00e9alis\u00e9s
-ContactPieChartConstant.REFUSED=Refus\u00e9s
-ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00e9finitif
+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\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\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\u00f4l\u00e9e
+DataReliability.NOT_PROVIDED=Non contr\u00F4l\u00E9e
DataReliability.NOT_RELIABLE=Non exploitable
DataReliability.RELIABLE=Exploitable
DataReliability.UNKNOWN=Inconnue
-GlobalIndicatorValue.BAD=P\u00e9nalit\u00e9 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\u00e9nalit\u00e9 de niveau 2
+GlobalIndicatorValue.VERY_BAD=P\u00E9nalit\u00E9 de niveau 2
GlobalIndicatorValue.VERY_GOOD=Bonus de niveau 2
-LocationType.AUCTION=Cri\u00e9e
+LocationType.AUCTION=Cri\u00E9e
LocationType.PORT=Port
ObsProgram.OBSDEB=ObsDeb
ObsProgram.OBSMER=ObsMer
ObsProgram.OBSVENTE=ObsVente
ObservationType.FIELD_WORK_OBSERVATION=Observation de terrain
-ObservationType.FIELD_WORK_SURVEY=Enqu\u00eate de terrain
-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\u00EAte de terrain
+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\u00e9
+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\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\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\u00e9 '%s', ligne %s)
+csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entit\u00E9 '%s', ligne %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\u00E9cifi\u00E9
+fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorqu\u00E9es par bateau
+fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues \u00E0 main
+fr.ifremer.wao.entity.FishingGearDCF.FAR=Pi\u00E8ges a\u00E9riens
+fr.ifremer.wao.entity.FishingGearDCF.FCN=\u00C9perviers
+fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.FIX=Pi\u00E8ges (non-sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pi\u00E8ges fixes non couverts
fr.ifremer.wao.entity.FishingGearDCF.FPO=Nasses (casiers)
-fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00e0 l'\u00e9talage (diables)
+fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00E0 l'\u00E9talage (diables)
fr.ifremer.wao.entity.FishingGearDCF.FWR=Barrages, parcs, bordigues, etc.
fr.ifremer.wao.entity.FishingGearDCF.FYK=Verveux
-fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00e9lants (non sp\u00e9cifi\u00e9s)
-fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00e0 civelles
-fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00E9lants (non sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00E0 civelles
+fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00E9cifi\u00E9s)
fr.ifremer.wao.entity.FishingGearDCF.GNC=Filets maillants encerclants
-fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00e9rivants (filets d\u00e9rivants)
+fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00E9rivants (filets d\u00E9rivants)
fr.ifremer.wao.entity.FishingGearDCF.GNF=Filets maillants fixes (sur perches)
-fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00e9s (ancr\u00e9s)
-fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00e9mailleurs
-fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00e9mails et filets maillants combin\u00e9s
-fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00e9mails
+fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00E9s (ancr\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00E9mailleurs
+fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00E9mails et filets maillants combin\u00E9s
+fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00E9mails
fr.ifremer.wao.entity.FishingGearDCF.HAR=Harpons
-fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00e9canis\u00e9es
+fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00E9canis\u00E9es
fr.ifremer.wao.entity.FishingGearDCF.HMP=Pompes
-fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00e9colte (non sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00E9colte (non sp\u00E9cifi\u00E9s)
fr.ifremer.wao.entity.FishingGearDCF.LA=Filets tournants sans coulisse (filet lamparo)
-fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00e0 main et lignes avec cannes
-fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00e0 main et lignes \u00e0 cannes
-fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00e9cifi\u00e9es)
-fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00e9rivantes
-fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00e9es ou semi-flottantes
-fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00e9s (non sp\u00e9cifi\u00e9s)
-fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00e9s man\u0153uvr\u00e9es du bateau
-fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00e9s portatifs
-fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00e9s fixes man\u0153uvr\u00e9es du rivage
-fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00eene
-fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00e7ons et lignes (non sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00E0 main et lignes avec cannes
+fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00E0 main et lignes \u00E0 cannes
+fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00E9cifi\u00E9es)
+fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00E9rivantes
+fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00E9es ou semi-flottantes
+fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00E9s (non sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00E9s man\u0153uvr\u00E9es du bateau
+fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00E9s portatifs
+fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00E9s fixes man\u0153uvr\u00E9es du rivage
+fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00EEne
+fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00E7ons et lignes (non sp\u00E9cifi\u00E9s)
fr.ifremer.wao.entity.FishingGearDCF.MIS=Divers
-fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00e9cifi\u00e9s
-fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00e0 panneaux (non sp\u00e9cifi\u00e9)
-fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00e0 panneaux
-fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00e9lagiques \u00e0 panneaux
-fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00e0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00E9cifi\u00E9s
+fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00E0 panneaux (non sp\u00E9cifi\u00E9)
+fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00E0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00E9lagiques \u00E0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00E0 panneaux
fr.ifremer.wao.entity.FishingGearDCF.PS=Filets tournants avec coulisse (sennes coulissantes)
-fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par un bateau
-fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par deux bateaux
-fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00E9es par un bateau
+fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00E9es par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00E9cifi\u00E9)
fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-b\u0153ufs de fond
-fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00e9lagiques
-fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00eache r\u00e9vr\u00e9ative
+fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00E9lagiques
+fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00EAche r\u00E9vr\u00E9ative
fr.ifremer.wao.entity.FishingGearDCF.SB=Sennes de plages
fr.ifremer.wao.entity.FishingGearDCF.SDN=Sennes danoises
-fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00e9es par deux bateaux
-fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00e9cossaises
-fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00e9es \u00e0 bord
-fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00e9cifi\u00e9es)
-fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00e9cifi\u00e9)
-fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00e0 perche
-fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00e0 langoustines
-fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00e0 crevettes
-fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00e9lagique (non sp\u00e9cifi\u00e9)
-fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00e0 crevettes
-fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00e9cifi\u00e9)
-fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00e9cifi\u00e9
+fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00E9es par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00E9cossaises
+fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00E9es \u00E0 bord
+fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00E9cifi\u00E9es)
+fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00E9cifi\u00E9)
+fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00E0 perche
+fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00E0 langoustines
+fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00E0 crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00E9lagique (non sp\u00E9cifi\u00E9)
+fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00E0 crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00E9cifi\u00E9)
+fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00E9cifi\u00E9
fr.ifremer.wao.entity.TargetSpeciesDCF.ALG=Algues
-fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00e8ces catadromes
-fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00e9s
+fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00E8ces catadromes
+fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00E9s
fr.ifremer.wao.entity.TargetSpeciesDCF.CSJ=Coquilles Saint-Jacques
-fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00e8ces d\u00e9mersales
-fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00e8ces d'eaux profondes
+fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00E8ces d\u00E9mersales
+fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00E8ces d'eaux profondes
fr.ifremer.wao.entity.TargetSpeciesDCF.FIN=Poisson plats
-fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00e9lagiques
+fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00E9lagiques
fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques
-fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00e9lagiques
-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\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\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\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\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\u00E9er un nouveau contact pour la soci\u00E9t\u00E9 %1$s et le navire %2$s (%3$d)
+wao.error.boat.getNbBoarding=Impossible de r\u00E9cup\u00E9rer le nombre d'embarquements r\u00E9els depuis le %1$s
+wao.error.boatInfos.getNbBoardingForCompany=Impossible de r\u00E9cup\u00E9rer le nombre d'embarquements r\u00E9els depuis le %1$s pour la soci\u00E9t\u00E9 %2$s
wao.error.context.close=Une erreur est survenue pendant la fermeture du contexte principale de ToPIA
wao.error.context.encodeString=
-wao.error.context.getRootContext=Une erreur est survenue pour la r\u00e9cup\u00e9ration du contexte principale de ToPIA
+wao.error.context.getRootContext=Une erreur est survenue pour la r\u00E9cup\u00E9ration du contexte principale de ToPIA
wao.error.context.parse=Une erreur est survenue pendant le chargement de la configuration du fichier %1$s
wao.error.context.rollback=Une erreur est survenue pendant l'annulation de la transaction courante
-wao.error.context.start=Une erreur est survenue pendant le d\u00e9marrage de l'application
+wao.error.context.start=Une erreur est survenue pendant le d\u00E9marrage de l'application
wao.error.context.stop=Une erreur est survenue pendant la fermeture de l'application
-wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00e9es r\u00e9els pour le mois de %1$s [ligne \: %2$s]
-wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00e9crit par %1$s
-wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00e9er ou modifier les informations li\u00e9s au navire %1$d pour la soci\u00e9t\u00e9 %2$s
-wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00e9lectionn\u00e9s
+wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00E9es r\u00E9els pour le mois de %1$s [ligne \: %2$s]
+wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00E9crit par %1$s
+wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00E9er ou modifier les informations li\u00E9s au navire %1$d pour la soci\u00E9t\u00E9 %2$s
+wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00E9lectionn\u00E9s
wao.error.serviceBoat.getActivityCalendarLogAccessFile=
wao.error.serviceBoat.getActivityCalendarLogFile=
wao.error.serviceBoat.getBoat=Impossible de charger le navire
-wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00e9cup\u00e9rer les navires avec un nom commencant par '%1$s'
+wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00E9cup\u00E9rer les navires avec un nom commencant par '%1$s'
wao.error.serviceBoat.getBoatsByFilter=Impossible de filtrer la liste des navires
-wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00eene d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00e9der 6 chiffres
-wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00e9cup\u00e9rer les informations du navire immatricul\u00e9 %1$d pour la soci\u00e9t\u00e9 %2$s
-wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00e9 du navire %1$s (%2$d)
+wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00EEne d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00E9der 6 chiffres
+wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00E9cup\u00E9rer les informations du navire immatricul\u00E9 %1$d pour la soci\u00E9t\u00E9 %2$s
+wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00E9 du navire %1$s (%2$d)
wao.error.serviceBoat.getNbBoatsByFilter=Impossible de filtrer la liste des navires
wao.error.serviceBoat.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 \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00e9tails.
+wao.error.serviceBoat.importActivityCalendarCsv=Probl\u00E8me d'import du fichier CSV des calendriers d'activit\u00E9
+wao.error.serviceBoat.importBoatCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier.
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\u00E9es des quartiers des navires. V\u00E9rifiez la documentation pour le bon format du fichier Kml.
wao.error.serviceChart.getContactPieChartData=
wao.error.serviceChart.getContactPieChartUrl=
wao.error.serviceContact.exportContactCsv=Impossible d'exporter les contacts
wao.error.serviceContact.getContact=Impossible de trouver le contact
wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts
-wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00e9s
+wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00E9s
wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact
wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.importContactCsv=Impossible d'importer les contacts
@@ -180,7 +180,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\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.getAllObservationUnits=
@@ -189,83 +189,83 @@
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\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\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\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.importTerrestrialDivisions=
wao.error.serviceReferential.importTerrestrialLocations=
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'\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\u00e9cup\u00e9rer un nouveau code pour une ligne d'\u00e9chantillonnage
+wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00E9cup\u00E9rer un nouveau code pour une ligne d'\u00E9chantillonnage
wao.error.serviceSampling.getNewSampleRowLog=
wao.error.serviceSampling.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'\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\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage
+wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00E9cup\u00E9rer la liste des lignes du plan d'\u00E9chantillonnage
wao.error.serviceSampling.importSamplingPlanCsv=Erreur lors de l'import du plan
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\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\u00e9cup\u00e9rer l'indicateur de r\u00e9activit\u00e9 sur les dates de saisies dans Allegro
+wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de r\u00E9cup\u00E9rer l'indicateur de r\u00E9activit\u00E9 sur les dates de saisies dans Allegro
wao.error.serviceSynthesis.getContactPieChartData=
wao.error.serviceSynthesis.getContactPieChartDataByBoatDistrict=
wao.error.serviceSynthesis.getContactStateMotifsPieChartDataByBoatDistrict=
-wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00e9cup\u00e9rer les statistiques sur les \u00e9tats des contacts
+wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00E9cup\u00E9rer les statistiques sur les \u00E9tats des contacts
wao.error.serviceSynthesis.getDataReliability=
-wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es pour le graphique dynamique des efforts de mar\u00e9es
+wao.error.serviceSynthesis.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\u00e9cup\u00e9rer les donn\u00e9es concernant les indicateurs pour la synth\u00e8se 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\u00e9cup\u00e9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00e9s
+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 \u00e0 jour les param\u00e8tres de la synth\u00e8se 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\u00e9er l'administrateur par d\u00e9faut
-wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00e9er ou de mettre \u00e0 jour la soci\u00e9t\u00e9
-wao.error.serviceUser.createUpdateUser=Impossible de cr\u00e9er ou de mettre \u00e0 jour l'utilisateur
-wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00e9t\u00e9 ou de v\u00e9rifier les contraintes de suppression
+wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00E9er l'administrateur par d\u00E9faut
+wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00E9er ou de mettre \u00E0 jour la soci\u00E9t\u00E9
+wao.error.serviceUser.createUpdateUser=Impossible de cr\u00E9er ou de mettre \u00E0 jour l'utilisateur
+wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00E9t\u00E9 ou de v\u00E9rifier les contraintes de suppression
wao.error.serviceUser.deleteUser=Impossible de supprimer l'utilisateur
wao.error.serviceUser.existLogin=
wao.error.serviceUser.forgetPassword=Impossible d'envoyer le mail d'oubli de mot de passe
-wao.error.serviceUser.getCompanies=Impossible de r\u00e9cup\u00e9rer la liste des soci\u00e9t\u00e9s
+wao.error.serviceUser.getCompanies=Impossible de r\u00E9cup\u00E9rer la liste des soci\u00E9t\u00E9s
wao.error.serviceUser.getCompany=
wao.error.serviceUser.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\u00E9cup\u00E9rer 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\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\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\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.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 \u00EAtre associ\u00E9 \u00E0 la ligne %s car il doit observer, le m\u00EAme jour, pour la ligne %s
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/resources/import/navires.csv
===================================================================
--- trunk/wao-business/src/test/resources/import/navires.csv 2011-05-09 12:08:47 UTC (rev 1265)
+++ trunk/wao-business/src/test/resources/import/navires.csv 2011-05-09 14:49:28 UTC (rev 1266)
@@ -1,7 +1,7 @@
-NAVIRE_IMMATRICULATION;NAVIRE_NOM;NAVIRE_LONGUEUR;NAVIRE_ANNEE;QUARTIER_CODE;ARMATEUR_CODE;ARMATEUR_NOM;ARMATEUR_PRENOM;NAVIRE_ACTIF
-273129;MOISE;7;1992;UX;19771564;BEURRE ;JEAN CLAUDE;Y
-174258;SAMOURAI KING;9;1982;UN;19744130;MARIE ;JEAN PHILIPPE;Y
-177474;MAYFLOWERS;10;1983;UN;19784252;MOSELLE ;ALAIN RENE;N
-174592;FIFITOU;8;1975;UN;18854131;POUTRE ;JEAN PIERRE;Y
-284595;A MA LOUTRE;8;1973;UN; SPR3965;BECANAUD; NA;Y
-978419;BISOUNOURS;11;2002;CI;18854131;POUTRE ;JEAN PIERRE;Y
+NAVIRE_IMMATRICULATION;NAVIRE_NOM;NAVIRE_LONGUEUR;NAVIRE_ANNEE;QUARTIER_CODE;ARMATEUR_CODE;ARMATEUR_NOM;ARMATEUR_PRENOM;NAVIRE_ACTIF;PORT_CODE
+273129;MOISE;7;1992;UX;19771564;BEURRE ;JEAN CLAUDE;Y;XSN
+174258;SAMOURAI KING;9;1982;UN;19744130;MARIE ;JEAN PHILIPPE;Y;XSN
+177474;MAYFLOWERS;10;1983;UN;19784252;MOSELLE ;ALAIN RENE;N;XSN
+174592;FIFITOU;8;1975;UN;18854131;POUTRE ;JEAN PIERRE;Y;XSN
+284595;A MA LOUTRE;8;1973;UN; SPR3965;BECANAUD; NA;Y;XSN
+978419;BISOUNOURS;11;2002;CI;18854131;POUTRE ;JEAN PIERRE;Y;XSN
1
0
[Suiviobsmer-commits] r1265 - trunk/wao-business/src/main/xmi
by bleny@users.labs.libre-entreprise.org 09 May '11
by bleny@users.labs.libre-entreprise.org 09 May '11
09 May '11
Author: bleny
Date: 2011-05-09 12:08:47 +0000 (Mon, 09 May 2011)
New Revision: 1265
Log:
diagram style
Modified:
trunk/wao-business/src/main/xmi/wao.zargo
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r1264 - in trunk: wao-business/src/main/java/fr/ifremer/wao/io wao-business/src/main/java/fr/ifremer/wao/io/csv2 wao-business/src/main/java/fr/ifremer/wao/io/csv2/models 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-business/src/test/resources/import wao-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 09 May '11
by bleny@users.labs.libre-entreprise.org 09 May '11
09 May '11
Author: bleny
Date: 2011-05-09 10:33:08 +0000 (Mon, 09 May 2011)
New Revision: 1264
Log:
switch boat import-export to using new import-export engine
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportExportModel.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/io/ImportResultsImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.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/ServiceBoatImplTest.java
trunk/wao-business/src/test/resources/import/navires.csv
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/ImportResultsImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/ImportResultsImpl.java 2011-05-06 13:38:07 UTC (rev 1263)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/ImportResultsImpl.java 2011-05-09 10:33:08 UTC (rev 1264)
@@ -44,6 +44,7 @@
@Override
public List<String> getErrors() {
+ List<String> errors = super.getErrors();
if (errors == null) {
errors = new ArrayList<String>();
}
@@ -52,12 +53,22 @@
@Override
public void incNbRefused() {
- nbRowsRefused++;
+ int nbRowsRefused = getNbRowsRefused();
+ nbRowsRefused += 1;
+ setNbRowsRefused(nbRowsRefused);
}
@Override
public void incNbImported() {
- nbRowsImported++;
+ int nbRowsImported = getNbRowsImported();
+ nbRowsImported += 1;
+ setNbRowsImported(nbRowsImported);
}
+ @Override
+ public void incNbImportedNew() {
+ int nbRowsImportedNew = getNbRowsImportedNew();
+ nbRowsImportedNew += 1;
+ setNbRowsImportedNew(nbRowsImportedNew);
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java 2011-05-06 13:38:07 UTC (rev 1263)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java 2011-05-09 10:33:08 UTC (rev 1264)
@@ -211,4 +211,25 @@
}
}
+ public static class IntegerParserFormatter implements ValueParserFormatter<Integer> {
+ @Override
+ public String format(Integer value) {
+ String str = "";
+ if (value != null) {
+ str = String.valueOf(value);
+ }
+ return str;
+ }
+
+ @Override
+ public Integer parse(String value) throws ParseException {
+ Integer integer = null;
+ if (StringUtils.isNotBlank(value)) {
+ integer = Integer.valueOf(value);
+ }
+ return integer;
+ }
+ }
+
+ public static ValueParserFormatter<Integer> INTEGER = new IntegerParserFormatter();
}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportExportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportExportModel.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportExportModel.java 2011-05-09 10:33:08 UTC (rev 1264)
@@ -0,0 +1,6 @@
+package fr.ifremer.wao.io.csv2;
+
+/**
+ *
+ */
+public interface ImportExportModel<E> extends ImportModel<E>, ExportModel<E> {}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java 2011-05-09 10:33:08 UTC (rev 1264)
@@ -0,0 +1,131 @@
+package fr.ifremer.wao.io.csv2.models;
+
+import fr.ifremer.wao.WaoUtils;
+import fr.ifremer.wao.entity.Boat;
+import fr.ifremer.wao.entity.BoatDistrictImpl;
+import fr.ifremer.wao.entity.BoatImpl;
+import fr.ifremer.wao.entity.ShipOwnerImpl;
+import fr.ifremer.wao.io.csv2.Common;
+import fr.ifremer.wao.io.csv2.ExportableColumn;
+import fr.ifremer.wao.io.csv2.ImportExportModel;
+import fr.ifremer.wao.io.csv2.ImportableColumn;
+import fr.ifremer.wao.io.csv2.ModelBuilder;
+import fr.ifremer.wao.io.csv2.ValueGetterSetter;
+import fr.ifremer.wao.io.csv2.ValueParserFormatter;
+
+import java.text.ParseException;
+import java.util.Collection;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ *
+ *
+ */
+public class BoatImportExportModel implements ImportExportModel<Boat> {
+
+ protected ModelBuilder<Boat> modelBuilder;
+
+ public BoatImportExportModel() {
+ modelBuilder = new ModelBuilder<Boat>();
+ modelBuilder.newColumnForImportExport("NAVIRE_IMMATRICULATION", Boat.PROPERTY_IMMATRICULATION, new ValueParserFormatter<Integer>() {
+ Pattern pattern = Pattern.compile("\\d{6}");
+
+ @Override
+ public String format(Integer immatriculation) {
+ return String.valueOf(immatriculation);
+ }
+
+ @Override
+ public Integer parse(String imma) throws ParseException {
+ Matcher matcher = pattern.matcher(imma);
+ if ( ! matcher.find()) {
+ throw new IllegalArgumentException(WaoUtils._("wao.business.boat.validation.immatriculation.wrongFormat"));
+ }
+ Integer immatriculation = Integer.parseInt(imma);
+ return immatriculation;
+ }
+ });
+ modelBuilder.newColumnForImportExport("NAVIRE_NOM", Boat.PROPERTY_NAME);
+ modelBuilder.newColumnForImportExport("NAVIRE_LONGUEUR", Boat.PROPERTY_BOAT_LENGTH, Common.INTEGER);
+ modelBuilder.newColumnForImportExport("NAVIRE_ANNEE", Boat.PROPERTY_BUILD_YEAR, Common.INTEGER);
+ modelBuilder.newColumnForImportExport("NAVIRE_ACTIF", Boat.PROPERTY_ACTIVE, Common.BOOLEAN);
+
+ // ship owner
+ modelBuilder.newColumnForImportExport("ARMATEUR_CODE", new ValueGetterSetter<Boat, String>() {
+ @Override
+ public String get(Boat boat) throws Exception {
+ return boat.getShipOwner().getCode();
+ }
+
+ @Override
+ public void set(Boat boat, String code) throws Exception {
+ boat.getShipOwner().setCode(code);
+ }
+ });
+ modelBuilder.newColumnForImportExport("ARMATEUR_NOM", new ValueGetterSetter<Boat, String>() {
+ @Override
+ public String get(Boat boat) throws Exception {
+ return boat.getShipOwner().getLastName();
+ }
+
+ @Override
+ public void set(Boat boat, String lastName) throws Exception {
+ boat.getShipOwner().setLastName(lastName);
+ }
+ });
+ modelBuilder.newColumnForImportExport("ARMATEUR_PRENOM", new ValueGetterSetter<Boat, String>() {
+ @Override
+ public String get(Boat boat) throws Exception {
+ return boat.getShipOwner().getFirstName();
+ }
+
+ @Override
+ public void set(Boat boat, String firstName) throws Exception {
+ boat.getShipOwner().setFirstName(firstName);
+ }
+ });
+
+ // boat district
+ modelBuilder.newColumnForImportExport("QUARTIER_CODE", new ValueGetterSetter<Boat, String>() {
+ @Override
+ public String get(Boat boat) throws Exception {
+ return boat.getBoatDistrict().getCode();
+ }
+
+ @Override
+ public void set(Boat boat, String districtCode) throws Exception {
+ boat.getBoatDistrict().setCode(districtCode);
+ }
+ });
+ }
+
+ @Override
+ public char getSeparator() {
+ return ';';
+ }
+
+ @Override
+ public void pushCsvHeaderNames(List<String> headerNames) {
+ // nothing to do
+ }
+
+ @Override
+ public Boat newEmptyInstance() {
+ Boat emptyInstance = new BoatImpl();
+ emptyInstance.setShipOwner(new ShipOwnerImpl());
+ emptyInstance.setBoatDistrict(new BoatDistrictImpl());
+ return emptyInstance;
+ }
+
+ @Override
+ public Collection<ImportableColumn> getColumnsForImport() {
+ return modelBuilder.getColumnsForImport();
+ }
+
+ @Override
+ public Collection<ExportableColumn> getColumnsForExport() {
+ return modelBuilder.getColumnsForExport();
+ }
+}
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-05-06 13:38:07 UTC (rev 1263)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-05-09 10:33:08 UTC (rev 1264)
@@ -62,10 +62,15 @@
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.ShipOwner;
import fr.ifremer.wao.entity.ShipOwnerDAO;
+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.csv2.Export;
+import fr.ifremer.wao.io.csv2.Import;
+import fr.ifremer.wao.io.csv2.models.BoatImportExportModel;
import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
@@ -83,6 +88,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
@@ -374,6 +380,7 @@
* QUARTIER_IMMA, PER_COD, PER_NOM,PER_PRENOM.
* Existing boats (with same immatriculation) are updated.
*
+ *
* @param transaction current transaction
* @param input Stream corresponding to Csv file
* @return an array with two int : the first corresponding to total number
@@ -384,224 +391,82 @@
* @see com.csvreader.CsvReader
*/
@Override
- public int[] executeImportBoatCsv(TopiaContext transaction,
- InputStream input)
+ public ImportResults executeImportBoatCsv(TopiaContext transaction,
+ InputStream input)
throws TopiaException, IOException, WaoBusinessException {
- int[] result = new int[]{0,0};
- CsvReader reader = new CsvReader(input, context.getCsvCharset());
- reader.readHeaders();
-
- ImportHelper.checkKeyHeader(reader, BOAT.NAVS_COD);
-
- long tic;
-
+ BoatImportExportModel model = new BoatImportExportModel();
+ Import<Boat> boatImport = new Import<Boat>(model, input);
BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction);
ShipOwnerDAO shipOwnerDAO = WaoDAOHelper.getShipOwnerDAO(transaction);
- BoatDistrictDAO districtDAO = WaoDAOHelper.getBoatDistrictDAO(transaction);
+ BoatDistrictDAO boatDistrictDAO = WaoDAOHelper.getBoatDistrictDAO(transaction);
- Map<String, ShipOwner> availableShipOwners = new HashMap<String, ShipOwner>();
+ ImportResults importResults = new ImportResultsImpl();
+ Iterator<Boat> it = boatImport.startImport();
+ while (it.hasNext()) {
+ Boat boat = it.next();
- Map<String, BoatDistrict> availableDistricts = new HashMap<String, BoatDistrict>();
-
- tic = System.currentTimeMillis();
- Pattern pattern = Pattern.compile("\\d{6}");
- while(reader.readRecord()) {
- result[0]++;
-
- if (logger.isTraceEnabled()) {
- logger.trace(" " + Arrays.asList(reader.getValues()));
+ // first, find and reuse existing ship owner
+ ShipOwner shipOwner = shipOwnerDAO.findByCode(boat.getShipOwner().getCode());
+ if (shipOwner == null) {
+ shipOwner = shipOwnerDAO.create(boat.getShipOwner());
}
+ boat.setShipOwner(shipOwner);
- String imma = ImportHelper.read(reader, BOAT.NAVS_COD);
- Matcher matcher = pattern.matcher(imma);
- if (!matcher.find()) {
- throw new WaoBusinessException(Type.SYNTAX,
- ServiceBoat.class,
- "L'immatriculation ne comporte pas 6 chiffres");
- }
-
- int immatriculation = Integer.parseInt(imma);
-
- String boatName =
- ImportHelper.read(reader, BOAT.CARN_NOM);
- int boatLength =
- ImportHelper.readInt(reader, BOAT.CARN_LONGUEUR_HT);
- int buildYear =
- ImportHelper.readInt(reader, BOAT.CARN_ANNEE);
- String districtCode =
- ImportHelper.read(reader, BOAT.QUARTIER_IMMA);
- String shipOwnerCode =
- ImportHelper.read(reader, BOAT.PER_COD);
- String shipOwnerLastName =
- ImportHelper.read(reader, BOAT.PER_NOM);
- String shipOwnerFirstName =
- ImportHelper.read(reader, BOAT.PER_PRENOM);
-
- String activeStr = ImportHelper.read(reader, BOAT.NAVS_ACTIVE);
- boolean active = !activeStr.equals(BOAT.getBoatInactiveCode());
-
- if (logger.isTraceEnabled()) {
- logger.trace("Active : " + active + " (" + activeStr + ")");
- }
-
- // Find existing boat with immatriculation
- Boat boat = boatDAO.findByImmatriculation(immatriculation);
-
- if (boat == null) {
- boat = boatDAO.create(
- Boat.PROPERTY_IMMATRICULATION, immatriculation);
- result[1]++;
- }
- boat.setName(boatName);
- boat.setBuildYear(buildYear);
- boat.setBoatLength(boatLength);
- boat.setActive(active);
-
- BoatDistrict district = availableDistricts.get(districtCode);
-
- if (logger.isDebugEnabled()) {
- logger.debug("District code : " + districtCode +
- " _ district found : " + district);
- }
-
+ // secondly, find and reuse boat district
+ BoatDistrict district = boatDistrictDAO.findByCode(boat.getBoatDistrict().getCode());
if (district == null) {
- district = districtDAO.findByCode(districtCode);
- if (district == null) {
- district = districtDAO.create(BoatDistrict.PROPERTY_CODE, districtCode);
- }
- availableDistricts.put(districtCode, district);
+ district = boatDistrictDAO.create(BoatDistrict.PROPERTY_CODE, boat.getBoatDistrict().getCode());
}
-
boat.setBoatDistrict(district);
- // Find existing shipOwner with code
- ShipOwner shipOwner = availableShipOwners.get(shipOwnerCode);
-
- // If not available, select it from database
- if (shipOwner == null) {
- shipOwner = shipOwnerDAO.findByCode(shipOwnerCode);
- // If not exist yet, create it
- if (shipOwner == null) {
- shipOwner = shipOwnerDAO.create(ShipOwner.PROPERTY_CODE, shipOwnerCode);
- }
- availableShipOwners.put(shipOwnerCode, shipOwner);
+ // now boat object is ready
+ Boat existingBoat = boatDAO.findByImmatriculation(boat.getImmatriculation());
+ if (existingBoat == null) {
+ existingBoat = boatDAO.create(boat);
+ importResults.incNbImportedNew();
+ } else {
+ // copy new values in found entity and save changes
+ existingBoat.setName(boat.getName());
+ existingBoat.setBoatLength(boat.getBoatLength());
+ existingBoat.setBuildYear(boat.getBuildYear());
+ existingBoat.setActive(boat.getActive());
+ existingBoat.setShipOwner(boat.getShipOwner());
+ existingBoat.setBoatDistrict(boat.getBoatDistrict());
+ boatDAO.update(existingBoat);
}
- shipOwner.setFirstName(shipOwnerFirstName);
- shipOwner.setLastName(shipOwnerLastName);
- boat.setShipOwner(shipOwner);
-
- if (result[0] % 1000 == 0) {
- availableShipOwners.clear();
-
- transaction.commitTransaction();
- tic = ImportHelper.logTimeAndMemory(
- logger, tic, "navires ligne " + result[0]);
- }
+ importResults.incNbImported();
}
- // For the last rows
transaction.commitTransaction();
-
- return result;
+ return importResults;
}
@Override
public InputStream executeExportBoatCsv(TopiaContext transaction,
BoatFilter filter) throws Exception {
- InputStream result = null;
- CsvWriter writer = null;
- try {
- File file = File.createTempFile("wao-boats-", ".csv");
- file.deleteOnExit();
- FileOutputStream output = new FileOutputStream(file);
- writer = new CsvWriter(output, ',', context.getCsvCharset());
+ // Get boats from database filtered by filter in argument
+ BoatDAO dao = WaoDAOHelper.getBoatDAO(transaction);
- ExportHelper<BOAT> export =
- new ExportHelper<BOAT>(writer, BOAT.getTotalHeaders()) {
- @Override
- public String getHeaderValue(int index) throws IOException {
- return WaoCsvHeader.getHeaderForBoatCsv(index);
- }
+ WaoQueryBuilder builder = context.newQueryBuilder();
+ builder.initializeForBoat();
- @Override
- public void record(BOAT header, String value) {
- record(header.forBoatCsv(), value);
- }
- };
+ TopiaQuery query = builder.applyBoatFilter(filter);
- export.writeHeaders();
+ // Reset limit : no pagination needed for results
+ query.resetLimit();
- // Get boats from database filterd by filter in argument
- BoatDAO dao = WaoDAOHelper.getBoatDAO(transaction);
-
- WaoQueryBuilder builder = context.newQueryBuilder();
- builder.initializeForBoat();
-
- TopiaQuery query = builder.applyBoatFilter(filter);
-
- // Reset limit : no pagination needed for results
- query.resetLimit();
-
- if (logger.isDebugEnabled()) {
- logger.debug("Exec query : " + query);
- }
- List<Boat> boats = dao.findAllByQuery(query);
-
- for (Boat boat : boats) {
- export.newRecord();
-
- if (logger.isTraceEnabled()) {
- logger.trace("add boat : " + boat.getName() + " (" +
- boat.getImmatriculation() + ")");
- }
-
- export.record(BOAT.NAVS_COD,
- String.valueOf(boat.getImmatriculation()));
- export.record(BOAT.CARN_NOM, boat.getName());
- export.record(BOAT.CARN_LONGUEUR_HT,
- String.valueOf(boat.getBoatLength()));
- export.record(BOAT.CARN_ANNEE,
- String.valueOf(boat.getBuildYear()));
- export.record(BOAT.QUARTIER_IMMA, boat.getDistrictCode());
- export.record(BOAT.NAVS_ACTIVE,
- (!boat.getActive() ? BOAT.getBoatInactiveCode() : ""));
-
-
- if (filter.getCompany() != null) {
- BoatInfos boatInfos =
- boat.getCompanyBoatInfos(filter.getCompany());
-
- if (boatInfos != null) {
- export.record(BOAT.CONT_PRENOM,
- boatInfos.getContactFirstName());
- export.record(BOAT.CONT_NOM,
- boatInfos.getContactLastName());
- export.record(BOAT.CONT_EMAIL,
- boatInfos.getContactEmail());
- export.record(BOAT.CONT_TEL,
- boatInfos.getContactPhoneNumber());
- export.record(BOAT.NAVS_DUP,
- String.valueOf(boatInfos.getDup()));
- export.record(BOAT.NAVS_COMMENT,
- boatInfos.getComment());
- }
- }
-
- export.writeRecord();
- }
- result = new FileInputStream(file);
-
- } catch (Exception eee) {
- throw eee;
- } finally {
- if (writer != null) {
- writer.close();
- }
+ if (logger.isDebugEnabled()) {
+ logger.debug("Exec query : " + query);
}
- return result;
+ List<Boat> boats = dao.findAllByQuery(query);
+
+ BoatImportExportModel model = new BoatImportExportModel();
+ Export<Boat> export = new Export<Boat>(model, boats);
+ InputStream inputStream = export.startExport();
+ return inputStream;
}
@Override
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-06 13:38:07 UTC (rev 1263)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_en_GB.properties 2011-05-09 10:33:08 UTC (rev 1264)
@@ -124,6 +124,7 @@
fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Tall pelagic
fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Molluscs
fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Small pelagic
+wao.business.boat.validation.immatriculation.wrongFormat=The boat registry number must be composed of 6 digits
wao.business.contact.validation.commentAdminNecessaryForDataReliability=You must precise in admin comment why data reliability is '%s'
wao.business.contact.validation.dataReliabilityMissingForValidation=You must provide data reliability before validating
wao.business.entity.UserProfile.description=%s on %s%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-05-06 13:38:07 UTC (rev 1263)
+++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-05-09 10:33:08 UTC (rev 1264)
@@ -1,174 +1,175 @@
ContactPieChartConstant.OTHER=Autres
-ContactPieChartConstant.REALIZED=R\u00E9alis\u00E9s
-ContactPieChartConstant.REFUSED=Refus\u00E9s
-ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00E9finitif
+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\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\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\u00F4l\u00E9e
+DataReliability.NOT_PROVIDED=Non contr\u00f4l\u00e9e
DataReliability.NOT_RELIABLE=Non exploitable
DataReliability.RELIABLE=Exploitable
DataReliability.UNKNOWN=Inconnue
-GlobalIndicatorValue.BAD=P\u00E9nalit\u00E9 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\u00E9nalit\u00E9 de niveau 2
+GlobalIndicatorValue.VERY_BAD=P\u00e9nalit\u00e9 de niveau 2
GlobalIndicatorValue.VERY_GOOD=Bonus de niveau 2
-LocationType.AUCTION=Cri\u00E9e
+LocationType.AUCTION=Cri\u00e9e
LocationType.PORT=Port
ObsProgram.OBSDEB=ObsDeb
ObsProgram.OBSMER=ObsMer
ObsProgram.OBSVENTE=ObsVente
ObservationType.FIELD_WORK_OBSERVATION=Observation de terrain
-ObservationType.FIELD_WORK_SURVEY=Enqu\u00EAte de terrain
-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\u00eate de terrain
+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\u00E9
+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\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\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\u00E9 '%s', ligne %s)
+csv.import.error.unableToSetValue=Impossible d'enregistrer la valeur '%s' (entit\u00e9 '%s', ligne %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\u00e9cifi\u00e9
+fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorqu\u00e9es par bateau
+fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues \u00e0 main
+fr.ifremer.wao.entity.FishingGearDCF.FAR=Pi\u00e8ges a\u00e9riens
+fr.ifremer.wao.entity.FishingGearDCF.FCN=\u00c9perviers
+fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.FIX=Pi\u00e8ges (non-sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pi\u00e8ges fixes non couverts
fr.ifremer.wao.entity.FishingGearDCF.FPO=Nasses (casiers)
-fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00E0 l'\u00E9talage (diables)
+fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00e0 l'\u00e9talage (diables)
fr.ifremer.wao.entity.FishingGearDCF.FWR=Barrages, parcs, bordigues, etc.
fr.ifremer.wao.entity.FishingGearDCF.FYK=Verveux
-fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00E9lants (non sp\u00E9cifi\u00E9s)
-fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00E0 civelles
-fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00e9lants (non sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00e0 civelles
+fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00e9cifi\u00e9s)
fr.ifremer.wao.entity.FishingGearDCF.GNC=Filets maillants encerclants
-fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00E9rivants (filets d\u00E9rivants)
+fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00e9rivants (filets d\u00e9rivants)
fr.ifremer.wao.entity.FishingGearDCF.GNF=Filets maillants fixes (sur perches)
-fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00E9s (ancr\u00E9s)
-fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00E9mailleurs
-fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00E9mails et filets maillants combin\u00E9s
-fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00E9mails
+fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00e9s (ancr\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00e9mailleurs
+fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00e9mails et filets maillants combin\u00e9s
+fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00e9mails
fr.ifremer.wao.entity.FishingGearDCF.HAR=Harpons
-fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00E9canis\u00E9es
+fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00e9canis\u00e9es
fr.ifremer.wao.entity.FishingGearDCF.HMP=Pompes
-fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00E9colte (non sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00e9colte (non sp\u00e9cifi\u00e9s)
fr.ifremer.wao.entity.FishingGearDCF.LA=Filets tournants sans coulisse (filet lamparo)
-fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00E0 main et lignes avec cannes
-fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00E0 main et lignes \u00E0 cannes
-fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00E9cifi\u00E9es)
-fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00E9rivantes
-fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00E9es ou semi-flottantes
-fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00E9s (non sp\u00E9cifi\u00E9s)
-fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00E9s man\u0153uvr\u00E9es du bateau
-fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00E9s portatifs
-fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00E9s fixes man\u0153uvr\u00E9es du rivage
-fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00EEne
-fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00E7ons et lignes (non sp\u00E9cifi\u00E9s)
+fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00e0 main et lignes avec cannes
+fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00e0 main et lignes \u00e0 cannes
+fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00e9cifi\u00e9es)
+fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00e9rivantes
+fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00e9es ou semi-flottantes
+fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00e9s (non sp\u00e9cifi\u00e9s)
+fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00e9s man\u0153uvr\u00e9es du bateau
+fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00e9s portatifs
+fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00e9s fixes man\u0153uvr\u00e9es du rivage
+fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00eene
+fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00e7ons et lignes (non sp\u00e9cifi\u00e9s)
fr.ifremer.wao.entity.FishingGearDCF.MIS=Divers
-fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00E9cifi\u00E9s
-fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00E0 panneaux (non sp\u00E9cifi\u00E9)
-fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00E0 panneaux
-fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00E9lagiques \u00E0 panneaux
-fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00E0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00e9cifi\u00e9s
+fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00e0 panneaux (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00e0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00e9lagiques \u00e0 panneaux
+fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00e0 panneaux
fr.ifremer.wao.entity.FishingGearDCF.PS=Filets tournants avec coulisse (sennes coulissantes)
-fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00E9es par un bateau
-fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00E9es par deux bateaux
-fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00E9cifi\u00E9)
+fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par un bateau
+fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00e9cifi\u00e9)
fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-b\u0153ufs de fond
-fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00E9lagiques
-fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00EAche r\u00E9vr\u00E9ative
+fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00e9lagiques
+fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00eache r\u00e9vr\u00e9ative
fr.ifremer.wao.entity.FishingGearDCF.SB=Sennes de plages
fr.ifremer.wao.entity.FishingGearDCF.SDN=Sennes danoises
-fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00E9es par deux bateaux
-fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00E9cossaises
-fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00E9es \u00E0 bord
-fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00E9cifi\u00E9es)
-fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00E9cifi\u00E9)
-fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00E0 perche
-fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00E0 langoustines
-fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00E0 crevettes
-fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00E9lagique (non sp\u00E9cifi\u00E9)
-fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00E0 crevettes
-fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00E9cifi\u00E9)
-fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00E9cifi\u00E9
+fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00e9es par deux bateaux
+fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00e9cossaises
+fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00e9es \u00e0 bord
+fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00e9cifi\u00e9es)
+fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00e0 perche
+fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00e0 langoustines
+fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00e0 crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00e9lagique (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00e0 crevettes
+fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00e9cifi\u00e9)
+fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00e9cifi\u00e9
fr.ifremer.wao.entity.TargetSpeciesDCF.ALG=Algues
-fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00E8ces catadromes
-fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00E9s
+fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00e8ces catadromes
+fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00e9s
fr.ifremer.wao.entity.TargetSpeciesDCF.CSJ=Coquilles Saint-Jacques
-fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00E8ces d\u00E9mersales
-fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00E8ces d'eaux profondes
+fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00e8ces d\u00e9mersales
+fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00e8ces d'eaux profondes
fr.ifremer.wao.entity.TargetSpeciesDCF.FIN=Poisson plats
-fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00E9lagiques
+fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00e9lagiques
fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques
-fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00E9lagiques
-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\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\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\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\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\u00e9er un nouveau contact pour la soci\u00e9t\u00e9 %1$s et le navire %2$s (%3$d)
+wao.error.boat.getNbBoarding=Impossible de r\u00e9cup\u00e9rer le nombre d'embarquements r\u00e9els depuis le %1$s
+wao.error.boatInfos.getNbBoardingForCompany=Impossible de r\u00e9cup\u00e9rer le nombre d'embarquements r\u00e9els depuis le %1$s pour la soci\u00e9t\u00e9 %2$s
wao.error.context.close=Une erreur est survenue pendant la fermeture du contexte principale de ToPIA
wao.error.context.encodeString=
-wao.error.context.getRootContext=Une erreur est survenue pour la r\u00E9cup\u00E9ration du contexte principale de ToPIA
+wao.error.context.getRootContext=Une erreur est survenue pour la r\u00e9cup\u00e9ration du contexte principale de ToPIA
wao.error.context.parse=Une erreur est survenue pendant le chargement de la configuration du fichier %1$s
wao.error.context.rollback=Une erreur est survenue pendant l'annulation de la transaction courante
-wao.error.context.start=Une erreur est survenue pendant le d\u00E9marrage de l'application
+wao.error.context.start=Une erreur est survenue pendant le d\u00e9marrage de l'application
wao.error.context.stop=Une erreur est survenue pendant la fermeture de l'application
-wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00E9es r\u00E9els pour le mois de %1$s [ligne \: %2$s]
-wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00E9crit par %1$s
-wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00E9er ou modifier les informations li\u00E9s au navire %1$d pour la soci\u00E9t\u00E9 %2$s
-wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00E9lectionn\u00E9s
+wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00e9es r\u00e9els pour le mois de %1$s [ligne \: %2$s]
+wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00e9crit par %1$s
+wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00e9er ou modifier les informations li\u00e9s au navire %1$d pour la soci\u00e9t\u00e9 %2$s
+wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00e9lectionn\u00e9s
wao.error.serviceBoat.getActivityCalendarLogAccessFile=
wao.error.serviceBoat.getActivityCalendarLogFile=
wao.error.serviceBoat.getBoat=Impossible de charger le navire
-wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00E9cup\u00E9rer les navires avec un nom commencant par '%1$s'
+wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00e9cup\u00e9rer les navires avec un nom commencant par '%1$s'
wao.error.serviceBoat.getBoatsByFilter=Impossible de filtrer la liste des navires
-wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00EEne d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00E9der 6 chiffres
-wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00E9cup\u00E9rer les informations du navire immatricul\u00E9 %1$d pour la soci\u00E9t\u00E9 %2$s
-wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00E9 du navire %1$s (%2$d)
+wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00eene d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00e9der 6 chiffres
+wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00e9cup\u00e9rer les informations du navire immatricul\u00e9 %1$d pour la soci\u00e9t\u00e9 %2$s
+wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00e9 du navire %1$s (%2$d)
wao.error.serviceBoat.getNbBoatsByFilter=Impossible de filtrer la liste des navires
wao.error.serviceBoat.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 \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00E9tails.
+wao.error.serviceBoat.importActivityCalendarCsv=Probl\u00e8me d'import du fichier CSV des calendriers d'activit\u00e9
+wao.error.serviceBoat.importBoatCsv=Probl\u00e8me d'import du fichier CSV. V\u00e9rifiez l'en-t\u00eate du fichier \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00e9tails.
wao.error.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\u00e9es des quartiers des navires. V\u00e9rifiez la documentation pour le bon format du fichier Kml.
wao.error.serviceChart.getContactPieChartData=
wao.error.serviceChart.getContactPieChartUrl=
wao.error.serviceContact.exportContactCsv=Impossible d'exporter les contacts
wao.error.serviceContact.getContact=Impossible de trouver le contact
wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts
-wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00E9s
+wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00e9s
wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact
wao.error.serviceContact.getPossibleValuesForFilter=
wao.error.serviceContact.importContactCsv=Impossible d'importer les contacts
@@ -179,7 +180,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\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.getAllObservationUnits=
@@ -188,83 +189,83 @@
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\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\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\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.importTerrestrialDivisions=
wao.error.serviceReferential.importTerrestrialLocations=
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'\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\u00E9cup\u00E9rer un nouveau code pour une ligne d'\u00E9chantillonnage
+wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00e9cup\u00e9rer un nouveau code pour une ligne d'\u00e9chantillonnage
wao.error.serviceSampling.getNewSampleRowLog=
wao.error.serviceSampling.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'\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\u00E9cup\u00E9rer la liste des lignes du plan d'\u00E9chantillonnage
+wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage
wao.error.serviceSampling.importSamplingPlanCsv=Erreur lors de l'import du plan
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\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\u00E9cup\u00E9rer l'indicateur de r\u00E9activit\u00E9 sur les dates de saisies dans Allegro
+wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de r\u00e9cup\u00e9rer l'indicateur de r\u00e9activit\u00e9 sur les dates de saisies dans Allegro
wao.error.serviceSynthesis.getContactPieChartData=
wao.error.serviceSynthesis.getContactPieChartDataByBoatDistrict=
wao.error.serviceSynthesis.getContactStateMotifsPieChartDataByBoatDistrict=
-wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00E9cup\u00E9rer les statistiques sur les \u00E9tats des contacts
+wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00e9cup\u00e9rer les statistiques sur les \u00e9tats des contacts
wao.error.serviceSynthesis.getDataReliability=
-wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es pour le graphique dynamique des efforts de mar\u00E9es
+wao.error.serviceSynthesis.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\u00E9cup\u00E9rer les donn\u00E9es concernant les indicateurs pour la synth\u00E8se 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\u00E9cup\u00E9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00E9s
+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 \u00E0 jour les param\u00E8tres de la synth\u00E8se 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\u00E9er l'administrateur par d\u00E9faut
-wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00E9er ou de mettre \u00E0 jour la soci\u00E9t\u00E9
-wao.error.serviceUser.createUpdateUser=Impossible de cr\u00E9er ou de mettre \u00E0 jour l'utilisateur
-wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00E9t\u00E9 ou de v\u00E9rifier les contraintes de suppression
+wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00e9er l'administrateur par d\u00e9faut
+wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00e9er ou de mettre \u00e0 jour la soci\u00e9t\u00e9
+wao.error.serviceUser.createUpdateUser=Impossible de cr\u00e9er ou de mettre \u00e0 jour l'utilisateur
+wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00e9t\u00e9 ou de v\u00e9rifier les contraintes de suppression
wao.error.serviceUser.deleteUser=Impossible de supprimer l'utilisateur
wao.error.serviceUser.existLogin=
wao.error.serviceUser.forgetPassword=Impossible d'envoyer le mail d'oubli de mot de passe
-wao.error.serviceUser.getCompanies=Impossible de r\u00E9cup\u00E9rer la liste des soci\u00E9t\u00E9s
+wao.error.serviceUser.getCompanies=Impossible de r\u00e9cup\u00e9rer la liste des soci\u00e9t\u00e9s
wao.error.serviceUser.getCompany=
wao.error.serviceUser.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\u00e9cup\u00e9rer 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\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\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\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.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 \u00eatre associ\u00e9 \u00e0 la ligne %s car il doit observer, le m\u00eame jour, pour la ligne %s
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
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-06 13:38:07 UTC (rev 1263)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2011-05-09 10:33:08 UTC (rev 1264)
@@ -54,8 +54,8 @@
import fr.ifremer.wao.entity.UserProfileImpl;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.entity.WaoUserImpl;
+import fr.ifremer.wao.io.ImportResults;
import org.junit.After;
-import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -86,18 +86,11 @@
private ServiceBoat service;
- public ServiceBoatImplTest() {
- }
-
@BeforeClass
public static void setUpClass() throws Exception {
manager = new TestManager();
}
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
@Before
public void setUp() throws Exception {
manager.start();
@@ -358,10 +351,10 @@
log.info("importBoatCsv");
InputStream input = getClass().getResourceAsStream("/import/navires.csv");
- int[] nbBoats = service.importBoatCsv(input);
- Assert.assertEquals(6, nbBoats[0]);
+ ImportResults importResults = service.importBoatCsv(input);
+ Assert.assertEquals(6, importResults.getNbRowsImported());
// new boats added
- Assert.assertEquals(6, nbBoats[1]);
+ Assert.assertEquals(6, importResults.getNbRowsImportedNew());
// Check boat 174592 is active &nd boat 177474 is inactive
List<Boat> results = service.getBoatsByImmatriculations("174592 177474");
Modified: trunk/wao-business/src/test/resources/import/navires.csv
===================================================================
--- trunk/wao-business/src/test/resources/import/navires.csv 2011-05-06 13:38:07 UTC (rev 1263)
+++ trunk/wao-business/src/test/resources/import/navires.csv 2011-05-09 10:33:08 UTC (rev 1264)
@@ -1,7 +1,7 @@
-NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE
-273129,MOISE,7,1992,UX,19771564,BEURRE ,JEAN CLAUDE,A
-174258,SAMOURAI KING,9,1982,UN,19744130,MARIE ,JEAN PHILIPPE,A
-177474,MAYFLOWERS,10,1983,UN,19784252,MOSELLE ,ALAIN RENE,I
-174592,FIFITOU,8,1975,UN,18854131,POUTRE ,JEAN PIERRE,A
-284595,A MA LOUTRE,8,1973,UN, SPR3965,BECANAUD, NA,A
-978419,BISOUNOURS,11,2002,CI,18854131,POUTRE ,JEAN PIERRE,A
+NAVIRE_IMMATRICULATION;NAVIRE_NOM;NAVIRE_LONGUEUR;NAVIRE_ANNEE;QUARTIER_CODE;ARMATEUR_CODE;ARMATEUR_NOM;ARMATEUR_PRENOM;NAVIRE_ACTIF
+273129;MOISE;7;1992;UX;19771564;BEURRE ;JEAN CLAUDE;Y
+174258;SAMOURAI KING;9;1982;UN;19744130;MARIE ;JEAN PHILIPPE;Y
+177474;MAYFLOWERS;10;1983;UN;19784252;MOSELLE ;ALAIN RENE;N
+174592;FIFITOU;8;1975;UN;18854131;POUTRE ;JEAN PIERRE;Y
+284595;A MA LOUTRE;8;1973;UN; SPR3965;BECANAUD; NA;Y
+978419;BISOUNOURS;11;2002;CI;18854131;POUTRE ;JEAN PIERRE;Y
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2011-05-06 13:38:07 UTC (rev 1263)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2011-05-09 10:33:08 UTC (rev 1264)
@@ -222,10 +222,7 @@
@Override
public ImportResults execute(InputStream input)
throws WaoException, WaoBusinessException {
- int[] result = serviceBoat.importBoatCsv(input);
- ImportResults results = new ImportResultsImpl();
- results.setNbRowsImported(result[0]);
- results.setNbRowsImportedNew(result[1]);
+ ImportResults results = serviceBoat.importBoatCsv(input);
return results;
}
};
1
0
[Suiviobsmer-commits] r1263 - in trunk/wao-ui/src/main: java/fr/ifremer/wao/ui/pages webapp
by bleny@users.labs.libre-entreprise.org 06 May '11
by bleny@users.labs.libre-entreprise.org 06 May '11
06 May '11
Author: bleny
Date: 2011-05-06 13:38:07 +0000 (Fri, 06 May 2011)
New Revision: 1263
Log:
add delete button
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java
trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
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-05-06 12:29:32 UTC (rev 1262)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-05-06 13:38:07 UTC (rev 1263)
@@ -140,12 +140,13 @@
/********* GRID ********/
- private GridDataSource sampleRows;
+ @Persist
+ private SampleRowDataSource sampleRows;
@Property
private SampleRow sampleRow;
- public GridDataSource getSampleRows() {
+ public SampleRowDataSource getSampleRows() {
if (sampleRows == null) {
sampleRows = new SampleRowDataSource(samplingFilter.getFilter(), serviceSampling);
}
@@ -171,6 +172,12 @@
return canEditSampleRow;
}
+ @Log
+ public void onActionFromDeleteSampleRow(String sampleRowId) throws WaoBusinessException {
+ SampleRow sampleRow = getSampleRows().get(sampleRowId);
+ serviceSampling.deleteSampleRow(sampleRow);
+ }
+
/********** IMPORT / EXPORT *********/
public Block onSuccessFromImportForm() {
Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-06 12:29:32 UTC (rev 1262)
+++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-06 13:38:07 UTC (rev 1263)
@@ -146,10 +146,10 @@
<a t:type="pagelink" t:page="sampleRowForm" t:context="sampleRow.topiaId" 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="rowIndex" title="${message:wao.ui.action.deleteSampleRow}"
- t:mixins="nuiton/confirm" t:message="${format:wao.ui.action.deleteSampleRow.confirm=row.code}">
- <img src="${asset:context:}/img/delete2.png" alt="${message:wao.ui.action.deleteSampleRow}" />
- </a-->
+ <a t:type="actionlink" t:id="deleteSampleRow" t:context="sampleRow.topiaId" title="${message:wao.ui.action.deleteSampleRow}"
+ t:mixins="nuiton/confirm" t:message="${format:wao.ui.action.deleteSampleRow.confirm=sampleRow.code}">
+ <img src="${asset:context:}/img/delete2.png" alt="${message:wao.ui.action.deleteSampleRow}" />
+ </a>
</t:if>
</p:actionsCell>
</div>
1
0
[Suiviobsmer-commits] r1262 - trunk/wao-business/src/test/java/fr/ifremer/wao/service
by bleny@users.labs.libre-entreprise.org 06 May '11
by bleny@users.labs.libre-entreprise.org 06 May '11
06 May '11
Author: bleny
Date: 2011-05-06 12:29:32 +0000 (Fri, 06 May 2011)
New Revision: 1262
Log:
fix tests ; add 'LIGNE_SANS_CONTACTS' in CSV files
Modified:
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java
Modified: 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-06 09:53:34 UTC (rev 1261)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java 2011-05-06 12:29:32 UTC (rev 1262)
@@ -28,14 +28,14 @@
protected boolean boatsImported;
protected static final String CSV_CONTENT =
- "PLAN_CODE;SOCIETE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS\n"
- + "2011_888;Ifremer;GA;OBS1;05/01/2010;UO007;\n"
- + "2011_889;Code Lutin;MA;OBS2;25/02/2010;UO087;\n"
- + "2011_890;Code Lutin;GA;OBS1;13/02/2010;UO007;\n"
- + "2011_891;Code Lutin;MA;OBS2;13/02/2010;UO087;";
+ "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 CSV_WITH_OBSERVERS_CONTENT =
- "PLAN_CODE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS\n"
- + "2011_890;GA;OBS1;13/02/2010;UO007;josh";
+ "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";
public ObsDebFixtures(TestManager manager) {
this.manager = manager;
1
0
[Suiviobsmer-commits] r1261 - in trunk: wao-business/src/main/java/fr/ifremer/wao/service wao-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 06 May '11
by bleny@users.labs.libre-entreprise.org 06 May '11
06 May '11
Author: bleny
Date: 2011-05-06 09:53:34 +0000 (Fri, 06 May 2011)
New Revision: 1261
Log:
fix a bug : print error messages in ObsDeb sampling plan when importing wrong file
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java
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-05-05 15:09:06 UTC (rev 1260)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-05-06 09:53:34 UTC (rev 1261)
@@ -370,8 +370,8 @@
/**
* Import boats from a CSV file. Warning, must be UTF-8 encoding.
* Use of CsvReader to manage InputStream and create or update boats.
- * Header file must be : NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,
- * QUARTIER_IMMA,PER_COD, PER_NOM,PER_PRENOM.
+ * Header file must be : NAVS_COD, CARN_NOM, CARN_LONGUEUR_HT, CARN_ANNEE,
+ * QUARTIER_IMMA, PER_COD, PER_NOM,PER_PRENOM.
* Existing boats (with same immatriculation) are updated.
*
* @param transaction current transaction
@@ -481,13 +481,10 @@
// If not available, select it from database
if (shipOwner == null) {
shipOwner = shipOwnerDAO.findByCode(shipOwnerCode);
-
// If not exist yet, create it
if (shipOwner == null) {
- shipOwner = shipOwnerDAO.create(
- ShipOwner.PROPERTY_CODE, shipOwnerCode);
+ shipOwner = shipOwnerDAO.create(ShipOwner.PROPERTY_CODE, shipOwnerCode);
}
-
availableShipOwners.put(shipOwnerCode, shipOwner);
}
shipOwner.setFirstName(shipOwnerFirstName);
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-05 15:09:06 UTC (rev 1260)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-05-06 09:53:34 UTC (rev 1261)
@@ -901,6 +901,10 @@
List<Object> errorArgs, ConnectedUser user, SamplingFilter filter)
throws Exception {
+ // ignore pagination when exporting
+ filter.setStartIndex(null);
+ filter.setEndIndex(null);
+
SampleRowDAO dao = WaoDAOHelper.getSampleRowDAO(transaction);
WaoQueryBuilder builder = context.newQueryBuilder();
WaoQueryHelper.SampleRowProperty sampleRowProperty =
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-05-05 15:09:06 UTC (rev 1260)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-05-06 09:53:34 UTC (rev 1261)
@@ -31,12 +31,15 @@
import fr.ifremer.wao.io.ImportResults;
import fr.ifremer.wao.service.ServiceContact;
import fr.ifremer.wao.service.ServiceSampling;
+import fr.ifremer.wao.ui.components.Layout;
import fr.ifremer.wao.ui.components.SamplingFilterComponent;
+import fr.ifremer.wao.ui.data.ErrorReport;
import fr.ifremer.wao.ui.data.ExportStreamResponse;
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.services.SampleRowModelFactory;
+import org.apache.tapestry5.Block;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.annotations.InjectComponent;
@@ -65,6 +68,9 @@
@Inject
private Logger log;
+ @InjectComponent
+ private Layout layout;
+
@Inject
private BeanModelSource beanModelSource;
@@ -167,12 +173,15 @@
/********** IMPORT / EXPORT *********/
+ public Block onSuccessFromImportForm() {
+ showImport = false;
+ return importZone.getBody();
+ }
+
public ImportEngine getSamplingPlanImportEngine() {
return new ImportEngine() {
@Override
- public ImportResults execute(InputStream input)
- throws WaoException, WaoBusinessException {
- // FIXME 20110505 bleny when an error occur, nothing is show in the UI
+ public ImportResults execute(InputStream input) throws WaoBusinessException {
ImportResults results = serviceSampling.importSamplingPlanCsv(input, connectedUser);
return results;
}
@@ -193,4 +202,14 @@
}
};
}
+
+ @Log
+ void onImported(ErrorReport report) {
+ for (String info : report.getInfos()) {
+ layout.addInfo(info);
+ }
+ for (String error : report.getErrors()) {
+ layout.addError(error);
+ }
+ }
}
1
0
[Suiviobsmer-commits] r1260 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/entity wao-business/src/main/java/fr/ifremer/wao/io/csv2/models wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi 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/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 05 May '11
by bleny@users.labs.libre-entreprise.org 05 May '11
05 May '11
Author: bleny
Date: 2011-05-05 15:09:06 +0000 (Thu, 05 May 2011)
New Revision: 1260
Log:
add possibility to mark row as blank ; show what is realizes in sampling plan
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.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/ServiceSamplingImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
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/pages/SampleRowForm_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/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-05 15:09:06 UTC (rev 1260)
@@ -869,4 +869,10 @@
protected void addTokensToUserProfiles_3_0(List<String> queries) {
queries.add("ALTER TABLE UserProfile ADD token CHARACTER VARYING(50);");
}
+
+ @Override
+ protected void addObsDebToSampleRows_3_0(List<String> queries) {
+ queries.add("ALTER TABLE SampleRow ADD blankRow BOOLEAN");
+ queries.add("UPDATE TABLE SampleRow SET blankRow=FALSE");
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-05 15:09:06 UTC (rev 1260)
@@ -143,6 +143,8 @@
protected abstract void addTokensToUserProfiles_3_0(List<String> queries);
+ protected abstract void addObsDebToSampleRows_3_0(List<String> queries);
+
protected static final Version[] VERSIONS = new Version[] {
VersionUtil.valueOf("1.0"),
VersionUtil.valueOf("1.1"),
@@ -505,6 +507,8 @@
addTokensToUserProfiles_3_0(queries);
+ addObsDebToSampleRows_3_0(queries);
+
String[] strings = queries.toArray(new String[queries.size()]);
executeSQL(tx, showSql, showProgression, strings);
}
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-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java 2011-05-05 15:09:06 UTC (rev 1260)
@@ -26,6 +26,7 @@
import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.bean.ObsProgram;
+import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.nuiton.util.DateUtil;
@@ -470,6 +471,16 @@
}
}
+ private void compareBlankRows() {
+ if (oldRow == null || oldRow.isBlankRow() != newRow.isBlankRow()) {
+ if (newRow.isBlankRow()) {
+ addChange("La ligne devient réalisée sans contacts");
+ } else {
+ addChange("La ligne devient n'est plus réalisée sans contacts");
+ }
+ }
+ }
+
/** Compare a sample row before and after its modifications and generate
* a differences summary and save it by setting log text.
*/
@@ -517,6 +528,7 @@
compareDays();
compareObservationUnits();
compareObservers();
+ compareBlankRows();
}
compareCompanies();
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-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-05 15:09:06 UTC (rev 1260)
@@ -236,6 +236,7 @@
modelBuilder.newColumnForImportExport("REGION_IFREMER_COD", regionCodeGetterSetter);
modelBuilder.newColumnForImportExport("UNITE_OBSERVATION_COD", SampleRow.PROPERTY_OBSERVATION_UNIT, observationUnitParser);
modelBuilder.newColumnForImportExport("OBSERVATEURS", SampleRow.PROPERTY_OBSERVERS, new UsersParserFormatter(allWaoUsers));
+ modelBuilder.newColumnForImportExport("LIGNE_SANS_CONTACTS", SampleRow.PROPERTY_BLANK_ROW, Common.BOOLEAN);
}
@Override
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-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-05-05 15:09:06 UTC (rev 1260)
@@ -388,7 +388,8 @@
SampleRow.PROPERTY_DAY,
SampleRow.PROPERTY_GROUP_NAME,
SampleRow.PROPERTY_OBSERVERS,
- SampleRow.PROPERTY_OBSERVATION_UNIT);
+ SampleRow.PROPERTY_OBSERVATION_UNIT,
+ SampleRow.PROPERTY_BLANK_ROW);
} else {
oldRow.clearSampleMonth();
oldRow.addAllSampleMonth(row.getSampleMonth());
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
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-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-05-05 15:09:06 UTC (rev 1260)
@@ -29,6 +29,7 @@
import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.io.ImportResults;
+import fr.ifremer.wao.service.ServiceContact;
import fr.ifremer.wao.service.ServiceSampling;
import fr.ifremer.wao.ui.components.SamplingFilterComponent;
import fr.ifremer.wao.ui.data.ExportStreamResponse;
@@ -46,6 +47,7 @@
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.grid.GridDataSource;
+import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.BeanModelSource;
import org.slf4j.Logger;
@@ -72,6 +74,12 @@
@Inject
private ServiceSampling serviceSampling;
+ @Inject
+ private ServiceContact serviceContact;
+
+ @Inject
+ private Messages messages;
+
private DateFormat dateFormat;
public DateFormat getDateFormat() {
@@ -142,7 +150,9 @@
public BeanModel<SampleRow> getObsdebSamplingPlanModel() {
if (obsdebSamplingPlanModel == null) {
- SampleRowModelFactory sampleRowModelFactory = new SampleRowModelFactory(beanModelSource, resources, connectedUser);
+ SampleRowModelFactory sampleRowModelFactory =
+ new SampleRowModelFactory(beanModelSource, resources, connectedUser,
+ messages, serviceContact);
obsdebSamplingPlanModel = sampleRowModelFactory.newModel();
}
return obsdebSamplingPlanModel;
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-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-05-05 15:09:06 UTC (rev 1260)
@@ -623,15 +623,18 @@
if (sampleRowModel == null) {
sampleRowModel = beanModelSource.createEditModel(SampleRow.class, resources.getMessages());
if (user.isObsDeb()) {
- sampleRowModel.include("comment");
+ sampleRowModel.include(SampleRow.PROPERTY_COMMENT, SampleRow.PROPERTY_BLANK_ROW);
} else {
- sampleRowModel.add("company", null);
+ sampleRowModel.add(SampleRow.PROPERTY_COMPANY, null);
sampleRowModel.add("boats", null);
if (user.getProfile().getObsProgram() == ObsProgram.OBSMER) {
- sampleRowModel.include("code", "company", "nbObservants", "averageTideTime", "boats", "comment");
+ sampleRowModel.include(SampleRow.PROPERTY_CODE, SampleRow.PROPERTY_COMPANY,
+ SampleRow.PROPERTY_NB_OBSERVANTS, SampleRow.PROPERTY_AVERAGE_TIDE_TIME, "boats",
+ SampleRow.PROPERTY_COMMENT);
}
if (user.getProfile().getObsProgram() == ObsProgram.OBSVENTE) {
- sampleRowModel.include("code", "company", "boats", "comment");
+ sampleRowModel.include(SampleRow.PROPERTY_CODE, SampleRow.PROPERTY_COMPANY, "boats",
+ SampleRow.PROPERTY_COMMENT);
sampleRowModel.add("samplingStrategy");
}
}
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-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-05-05 15:09:06 UTC (rev 1260)
@@ -25,14 +25,18 @@
import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ContactFilter;
+import fr.ifremer.wao.bean.ContactFilterImpl;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.service.ServiceContact;
import org.apache.commons.collections.CollectionUtils;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.PropertyConduit;
import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.services.BeanModelSource;
import org.nuiton.util.StringUtil;
@@ -60,12 +64,20 @@
protected ConnectedUser connectedUser;
+ protected Messages messages;
+
protected BeanModel<SampleRow> model;
- public SampleRowModelFactory(BeanModelSource beanModelSource, ComponentResources resources, ConnectedUser connectedUser) {
+ protected ServiceContact serviceContact;
+
+ public SampleRowModelFactory(BeanModelSource beanModelSource, ComponentResources resources,
+ ConnectedUser connectedUser, Messages messages,
+ ServiceContact serviceContact) {
this.beanModelSource = beanModelSource;
this.resources = resources;
this.connectedUser = connectedUser;
+ this.messages = messages;
+ this.serviceContact = serviceContact;
}
/** add a property in the model and make it not sortable
@@ -149,6 +161,29 @@
});
}
add(SampleRow.PROPERTY_OBSERVATION_UNIT);
+ add("actual", new SampleRowReaderPropertyConduit() {
+
+ protected String yes = messages.get("wao.ui.misc.yes");
+ protected String no = messages.get("wao.ui.misc.no");
+ protected ContactFilter contactFilter = new ContactFilterImpl();
+
+ @Override
+ public String getValue(SampleRow sampleRow) {
+ String value;
+ if (sampleRow.isBlankRow()) {
+ value = yes;
+ } else {
+ contactFilter.setSampleRow(sampleRow);
+ int nbContacts = serviceContact.getNbContacts(contactFilter);
+ if (nbContacts == 0) {
+ value = no;
+ } else {
+ value = yes + " (" + nbContacts + ")";
+ }
+ }
+ return value;
+ }
+ });
add(SampleRow.PROPERTY_COMMENT);
add(SampleRow.PROPERTY_OBSERVERS, new SampleRowReaderPropertyConduit() {
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SampleRowForm_fr.properties
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SampleRowForm_fr.properties 2011-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SampleRowForm_fr.properties 2011-05-05 15:09:06 UTC (rev 1260)
@@ -47,6 +47,7 @@
averageTideTime-label: Dur\u00e9e moyenne d'une mar\u00e9e
comment-label: Commentaire sur la ligne
samplingStrategy-label: Stat\u00e9gie d'\u00e9chantillonnage
+blankRow-label: Journ\u00e9e r\u00e9alis\u00e9e (sans contacts)
# FORM
errors-banner: La ligne n'a pas \u00e9t\u00e9 sauvegard\u00e9 \u00e0 cause des erreurs suivantes :
Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-05 15:09:06 UTC (rev 1260)
@@ -124,6 +124,11 @@
${message:wao.ui.field.SampleRow.observers}
</p:observersHeader>
+ <!-- observers -->
+ <p:actualHeader>
+ ${message:wao.ui.samplingPlan.actual}
+ </p:actualHeader>
+
<!-- comment -->
<p:commentHeader>
${message:wao.ui.field.SampleRow.comment}
Modified: trunk/wao-ui/src/main/webapp/SampleRowForm.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-05-05 13:39:39 UTC (rev 1259)
+++ trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-05-05 15:09:06 UTC (rev 1260)
@@ -269,6 +269,10 @@
<t:label t:for="samplingStrategy" />
<input t:type="select" t:id="samplingStrategy" value="sampleRow.samplingStrategy" t:validate="required" />
</p:samplingStrategy>
+ <p:blankRow>
+ <t:label t:for="blankRow" />
+ <input t:type="checkbox" t:id="blankRow" value="sampleRow.blankRow" />
+ </p:blankRow>
</t:beaneditor>
</div>
</fieldset>
1
0
[Suiviobsmer-commits] r1259 - trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 05 May '11
by bleny@users.labs.libre-entreprise.org 05 May '11
05 May '11
Author: bleny
Date: 2011-05-05 13:39:39 +0000 (Thu, 05 May 2011)
New Revision: 1259
Log:
add fixme
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java
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-05-05 12:08:15 UTC (rev 1258)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-05-05 13:39:39 UTC (rev 1259)
@@ -162,6 +162,7 @@
@Override
public ImportResults execute(InputStream input)
throws WaoException, WaoBusinessException {
+ // FIXME 20110505 bleny when an error occur, nothing is show in the UI
ImportResults results = serviceSampling.importSamplingPlanCsv(input, connectedUser);
return results;
}
1
0
[Suiviobsmer-commits] r1258 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/xmi wao-ui wao-ui/src/main/java/fr/ifremer/wao/ui/components wao-ui/src/main/resources/fr/ifremer/wao/ui/components wao-ui/src/main/resources/i18n
by bleny@users.labs.libre-entreprise.org 05 May '11
by bleny@users.labs.libre-entreprise.org 05 May '11
05 May '11
Author: bleny
Date: 2011-05-05 12:08:15 +0000 (Thu, 05 May 2011)
New Revision: 1258
Log:
add filters for the different level of terrestrial division in sampling filter
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/xmi/wao.zargo
trunk/wao-ui/pom.xml
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.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
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-04 09:39:53 UTC (rev 1257)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2011-05-05 12:08:15 UTC (rev 1258)
@@ -393,6 +393,18 @@
query.addEquals(sampleRowProperty.observationUnit(), filter.getObservationUnit());
}
+ if (filter.getSkillZoneCode() != null) {
+ query.addEquals(sampleRowProperty.observationUnitProperty().skillZoneCode(), filter.getSkillZoneCode());
+ }
+
+ if (filter.getSubPopulationCode() != null) {
+ query.addEquals(sampleRowProperty.observationUnitProperty().subPopulationCode(), filter.getSubPopulationCode());
+ }
+
+ if (filter.getRegionIfremerCode() != null) {
+ query.addEquals(sampleRowProperty.observationUnitProperty().regionIfremerCode(), filter.getRegionIfremerCode());
+ }
+
// XXX 2011 04 12 using UserFilter#observer for both samplingfilter and
// contact filter may lead to buggy filters (observers filters in contacts / obsdeb
// sampling plan)
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-04 09:39:53 UTC (rev 1257)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-05-05 12:08:15 UTC (rev 1258)
@@ -31,10 +31,13 @@
import fr.ifremer.wao.entity.TerrestrialDivision;
import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.entity.WaoUser;
+import org.apache.commons.collections.OrderedMap;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
public class SamplingFilterValuesImpl extends SamplingFilterValues {
@@ -379,13 +382,45 @@
return new ArrayList<E>(collection);
}
+ protected void addSkillZone(TerrestrialDivision observationUnit) {
+ Map<String,String> skillZones = getSkillZones();
+ if (skillZones == null) {
+ skillZones = new TreeMap<String, String>();
+ setSkillZones(skillZones);
+ }
+ skillZones.put(observationUnit.getSkillZoneCode(), observationUnit.getSkillZoneCode() + " - " +
+ observationUnit.getSkillZoneName());
+ }
+ protected void addSubPopulation(TerrestrialDivision observationUnit) {
+ Map<String,String> subPopulation = getSubPopulations();
+ if (subPopulation == null) {
+ subPopulation = new TreeMap<String, String>();
+ setSubPopulations(subPopulation);
+ }
+ subPopulation.put(observationUnit.getSubPopulationCode(), observationUnit.getSubPopulationCode() + " - " +
+ observationUnit.getSubPopulationName());
+ }
+
+ protected void addRegionIfremer(TerrestrialDivision observationUnit) {
+ Map<String, String> regionIfremers = getRegionIfremers();
+ if (regionIfremers == null) {
+ regionIfremers = new TreeMap<String, String>();
+ setRegionIfremers(regionIfremers);
+ }
+ regionIfremers.put(observationUnit.getRegionIfremerCode(), observationUnit.getRegionIfremerCode());
+ }
+
protected void fillSampleRow(SampleRow sampleRow) {
ObsProgram obsProgram = sampleRow.getObsProgram();
addCompanies(sampleRow.getCompany());
if (ObsProgram.OBSDEB.equals(obsProgram)) {
addAllObservers(sampleRow.getObservers());
- addObservationUnits(sampleRow.getObservationUnit());
+ TerrestrialDivision observationUnit = sampleRow.getObservationUnit();
+ addObservationUnits(observationUnit);
+ addSkillZone(observationUnit);
+ addSubPopulation(observationUnit);
+ addRegionIfremer(observationUnit);
} else {
// for both ObsMer and ObsVente
addFacadeNames(sampleRow.getFacade());
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-ui/pom.xml
===================================================================
--- trunk/wao-ui/pom.xml 2011-05-04 09:39:53 UTC (rev 1257)
+++ trunk/wao-ui/pom.xml 2011-05-05 12:08:15 UTC (rev 1258)
@@ -183,7 +183,6 @@
<entries>
<entry>
<basedir>${basedir}/src/main/resources/fr/ifremer/wao/ui</basedir>
- <basedir>${basedir}/src/main/java/fr/ifremer/wao/ui</basedir>
<specificGoal>parserTapestry</specificGoal>
</entry>
</entries>
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-05-04 09:39:53 UTC (rev 1257)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-05-05 12:08:15 UTC (rev 1258)
@@ -26,10 +26,18 @@
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.SamplingFilterValues;
import fr.ifremer.wao.service.ServiceSampling;
+import org.apache.tapestry5.OptionModel;
+import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.internal.OptionModelImpl;
+import org.apache.tapestry5.internal.SelectModelImpl;
import org.nuiton.util.PeriodDates;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
/**
* @author sletellier <letellier at codelutin.com>
*/
@@ -136,4 +144,52 @@
}
return format;
}
+
+ private SelectModel skillZoneSelectModel;
+
+ public SelectModel getSkillZoneSelectModel() {
+ if (skillZoneSelectModel == null) {
+ List<OptionModel> options = new ArrayList<OptionModel>();
+ Map<String, String> skillZones = getPossibleValuesForFilter().getSkillZones();
+ if (skillZones != null) {
+ for (Map.Entry<String, String> skillZone : skillZones.entrySet()) {
+ options.add(new OptionModelImpl(skillZone.getValue(), skillZone.getKey()));
+ }
+ }
+ skillZoneSelectModel = new SelectModelImpl(null, options);
+ }
+ return skillZoneSelectModel;
+ }
+
+ private SelectModel subPopulationSelectModel;
+
+ public SelectModel getSubPopulationSelectModel() {
+ if (subPopulationSelectModel == null) {
+ List<OptionModel> options = new ArrayList<OptionModel>();
+ Map<String, String> subPopulations = getPossibleValuesForFilter().getSubPopulations();
+ if (subPopulations != null) {
+ for (Map.Entry<String, String> skillZone : subPopulations.entrySet()) {
+ options.add(new OptionModelImpl(skillZone.getValue(), skillZone.getKey()));
+ }
+ }
+ subPopulationSelectModel = new SelectModelImpl(null, options);
+ }
+ return subPopulationSelectModel;
+ }
+
+ private SelectModel regionIfremerSelectModel;
+
+ public SelectModel getRegionIfremerSelectModel() {
+ if (regionIfremerSelectModel == null) {
+ List<OptionModel> options = new ArrayList<OptionModel>();
+ Map<String, String> regionIfremers = getPossibleValuesForFilter().getRegionIfremers();
+ if (regionIfremers != null) {
+ for (Map.Entry<String, String> skillZone : regionIfremers.entrySet()) {
+ options.add(new OptionModelImpl(skillZone.getValue(), skillZone.getKey()));
+ }
+ }
+ regionIfremerSelectModel = new SelectModelImpl(null, options);
+ }
+ return regionIfremerSelectModel;
+ }
}
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-05-04 09:39:53 UTC (rev 1257)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-05-05 12:08:15 UTC (rev 1258)
@@ -73,6 +73,22 @@
</div>
<t:if test="user.obsDeb">
<!-- filter fields only for obsdeb-->
+ <label for="regionIfremer">${message:wao.ui.field.TerrestrialDivision.regionIfremer}</label>
+ <t:select t:id="regionIfremer"
+ t:model="regionIfremerSelectModel"
+ t:value="filter.regionIfremerCode" />
+ <t:if test="filter.regionIfremerCode">
+ <label for="skillZone">${message:wao.ui.field.TerrestrialDivision.skillZone}</label>
+ <t:select t:id="skillZone"
+ t:model="skillZoneSelectModel"
+ t:value="filter.skillZoneCode" />
+ <t:if test="filter.skillZoneCode">
+ <label for="subPopulation">${message:wao.ui.field.TerrestrialDivision.subPopulation}</label>
+ <t:select t:id="subPopulation"
+ t:model="subPopulationSelectModel"
+ t:value="filter.subPopulationCode" />
+ </t:if>
+ </t:if>
<label for="observationUnit">${message:wao.ui.field.SampleRow.observationUnit}</label>
<t:topiaEntitySelector t:id="observationUnit"
t:clazzName="TerrestrialDivision"
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-05-04 09:39:53 UTC (rev 1257)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-05-05 12:08:15 UTC (rev 1258)
@@ -134,6 +134,8 @@
wao.ui.field.SampleRow.species=Species
wao.ui.field.SampleRow.terrestrialLocation=Maritime district
wao.ui.field.SampleRow.terrestrialLocationInfos=Terrestrial Location Infos
+wao.ui.field.TerrestrialDivision.regionIfremer=Ifremer region
+wao.ui.field.TerrestrialDivision.skillZone=Skill zone
wao.ui.field.TerrestrialDivision.subPopulation=Sub-population
wao.ui.field.User.firstName=First name
wao.ui.field.User.lastName=Last name
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-05-04 09:39:53 UTC (rev 1257)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-05-05 12:08:15 UTC (rev 1258)
@@ -133,6 +133,8 @@
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\u00E9gion Ifremer
+wao.ui.field.TerrestrialDivision.skillZone=Zone de comp\u00E9tence
wao.ui.field.TerrestrialDivision.subPopulation=Sous-population
wao.ui.field.User.firstName=Pr\u00E9nom
wao.ui.field.User.lastName=Nom
1
0