Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- 2352 discussions
[Suiviobsmer-commits] r1063 - in trunk: 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-business/src/test/java/fr/ifremer/wao/io/csv2 wao-ui/src/main/resources/i18n
by bleny@users.labs.libre-entreprise.org 15 Mar '11
by bleny@users.labs.libre-entreprise.org 15 Mar '11
15 Mar '11
Author: bleny
Date: 2011-03-15 15:40:11 +0000 (Tue, 15 Mar 2011)
New Revision: 1063
Log:
add observers to sampling plan in model
Modified:
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-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java
trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties
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-03-14 17:19:34 UTC (rev 1062)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-03-15 15:40:11 UTC (rev 1063)
@@ -20,10 +20,13 @@
*/
package fr.ifremer.wao.io.csv2.models;
+import fr.ifremer.wao.WaoUtils;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowImpl;
import fr.ifremer.wao.entity.TerrestrialDivision;
+import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.io.csv2.Common;
import fr.ifremer.wao.io.csv2.ExportModel;
import fr.ifremer.wao.io.csv2.ExportableColumn;
@@ -32,14 +35,17 @@
import fr.ifremer.wao.io.csv2.ModelBuilder;
import fr.ifremer.wao.io.csv2.ValueGetterSetter;
import fr.ifremer.wao.io.csv2.ValueParserFormatter;
+import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.ParseException;
import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
*
@@ -51,17 +57,44 @@
static class ObservationUnitParserFormatter implements ValueParserFormatter<TerrestrialDivision> {
- protected Map<String, Map<String, TerrestrialDivision>> observationUnits;
+ protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits;
+ protected List<TerrestrialDivision> observationUnits;
+
protected String currentRegionCode;
- ObservationUnitParserFormatter(Map<String, Map<String, TerrestrialDivision>> observationUnits) {
+ ObservationUnitParserFormatter(List<TerrestrialDivision> observationUnits) {
this.observationUnits = observationUnits;
}
+ protected void indexObservationUnits(List<TerrestrialDivision> observationUnits) {
+ indexedObservationUnits = new HashMap<String, Map<String, TerrestrialDivision>>();
+ for (TerrestrialDivision terrestrialDivision : observationUnits) {
+ String regionCode = terrestrialDivision.getRegionIfremerCode();
+ Map<String, TerrestrialDivision> unitCodesToDivision = indexedObservationUnits.get(regionCode);
+ if (unitCodesToDivision == null) {
+ unitCodesToDivision = new HashMap<String, TerrestrialDivision>();
+ }
+ unitCodesToDivision.put(terrestrialDivision.getObservationUnitCode(), terrestrialDivision);
+ indexedObservationUnits.put(regionCode, unitCodesToDivision);
+ }
+
+ if (log.isDebugEnabled()) {
+ for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : indexedObservationUnits.entrySet()) {
+ log.debug(entry.getKey());
+ for (Map.Entry<String, TerrestrialDivision> unitCodesToDivision : entry.getValue().entrySet()) {
+ log.debug(" -> " + unitCodesToDivision.getKey() + " -> " + unitCodesToDivision.getValue());
+ }
+ }
+ }
+ }
+
@Override
public TerrestrialDivision parse(String observationUnitCode) throws ParseException {
- Map<String, TerrestrialDivision> uos = observationUnits.get(currentRegionCode);
+ if (indexedObservationUnits == null) {
+ indexObservationUnits(observationUnits);
+ }
+ Map<String, TerrestrialDivision> uos = indexedObservationUnits.get(currentRegionCode);
if (uos == null) {
throw new IllegalArgumentException("Le code de région '" + currentRegionCode
+ "' n'est pas un code valide");
@@ -109,19 +142,55 @@
}
}
- /** region ifremer code -> UO code -> TerrestrialDivision */
- protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits;
+ static class UsersParserFormatter implements ValueParserFormatter<List<WaoUser>> {
+ protected static final String SEPARATOR = ",";
+
+ /** all waoUsers in the database when import was started, indexed by logins */
+ protected Map<String, WaoUser> allWaoUsers;
+
+ @Override
+ public String format(List<WaoUser> value) {
+ Set<String> usersLogin = WaoUtils.<String, WaoUser> projectPropertyUnique(value, WaoUser.PROPERTY_LOGIN).keySet();
+ String commaSeparatedLogins = StringUtils.join(usersLogin, ", ");
+ return commaSeparatedLogins;
+ }
+
+ @Override
+ public List<WaoUser> parse(String value) throws ParseException {
+ String[] logins = StringUtils.split(value, SEPARATOR);
+ List<WaoUser> users = new LinkedList<WaoUser>();
+ for (String login : logins) {
+ String trimmedLogin = login.trim();
+ WaoUser user = allWaoUsers.get(trimmedLogin);
+ if (user == null) {
+ throw new IllegalArgumentException("il n'y a pas d'utilisateur avec l'identifiant '" + login + "'");
+ }
+ users.add(user);
+ }
+ return users;
+ }
+ }
+
+ protected List<TerrestrialDivision> observationUnits;
+
+ protected List<WaoUser> allWaoUsers;
+
+ protected ConnectedUser connectedUser;
+
protected ModelBuilder<SampleRow> modelBuilder;
- /** Constructor used for export */
- public SamplingPlanImportExportModel() {
+ /** Constructor used for import */
+ public SamplingPlanImportExportModel(ConnectedUser connectedUser,
+ List<TerrestrialDivision> observationUnits, List<WaoUser> allWaoUsers) {
+ this.connectedUser = connectedUser;
+ this.allWaoUsers = allWaoUsers;
+ this.observationUnits = observationUnits;
buildModel();
}
- /** Constructor used for import */
- public SamplingPlanImportExportModel(List<TerrestrialDivision> observationUnits) {
- indexObservationUnits(observationUnits);
+ /** Constructor used for export */
+ public SamplingPlanImportExportModel() {
buildModel();
}
@@ -142,37 +211,18 @@
return newSampleRow;
}
- protected void indexObservationUnits(List<TerrestrialDivision> observationUnits) {
- indexedObservationUnits = new HashMap<String, Map<String, TerrestrialDivision>>();
- for (TerrestrialDivision terrestrialDivision : observationUnits) {
- String regionCode = terrestrialDivision.getRegionIfremerCode();
- Map<String, TerrestrialDivision> unitCodesToDivision = indexedObservationUnits.get(regionCode);
- if (unitCodesToDivision == null) {
- unitCodesToDivision = new HashMap<String, TerrestrialDivision>();
- }
- unitCodesToDivision.put(terrestrialDivision.getObservationUnitCode(), terrestrialDivision);
- indexedObservationUnits.put(regionCode, unitCodesToDivision);
- }
-
- if (log.isDebugEnabled()) {
- for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : indexedObservationUnits.entrySet()) {
- log.debug(entry.getKey());
- for (Map.Entry<String, TerrestrialDivision> unitCodesToDivision : entry.getValue().entrySet()) {
- log.debug(" -> " + unitCodesToDivision.getKey() + " -> " + unitCodesToDivision.getValue());
- }
- }
- }
- }
-
protected void buildModel() {
modelBuilder = new ModelBuilder<SampleRow>();
modelBuilder.newColumnForImportExport("PLAN_CODE", SampleRow.PROPERTY_CODE);
modelBuilder.newColumnForImportExport("OBSERVATEUR_COD", SampleRow.PROPERTY_GROUP_NAME);
modelBuilder.newColumnForImportExport("OBSERVATION_DATE", SampleRow.PROPERTY_DAY, Common.DAY);
- ObservationUnitParserFormatter observationUnitParser = new ObservationUnitParserFormatter(indexedObservationUnits);
+ ObservationUnitParserFormatter observationUnitParser = new ObservationUnitParserFormatter(observationUnits);
ValueGetterSetter<SampleRow, String> regionCodeGetterSetter = new RegionCodeSetter(observationUnitParser);
modelBuilder.newColumnForImportExport("REGION_IFREMER_COD", regionCodeGetterSetter);
modelBuilder.newColumnForImportExport("UNITE_OBSERVATION_COD", SampleRow.PROPERTY_OBSERVATION_UNIT, observationUnitParser);
+// if (connectedUser.isCoordinator()) {
+// modelBuilder.newColumnForImportExport("OBSERVATEURS", SampleRow.PROPERTY_OBSERVERS, new UsersParserFormatter());
+// }
}
@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-03-14 17:19:34 UTC (rev 1062)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-15 15:40:11 UTC (rev 1063)
@@ -70,6 +70,7 @@
import fr.ifremer.wao.entity.TerrestrialDivisionDAO;
import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.entity.WaoUserDAO;
import fr.ifremer.wao.io.ImportRefusedException;
import fr.ifremer.wao.io.ImportResults;
import fr.ifremer.wao.io.ImportResultsImpl;
@@ -80,6 +81,7 @@
import fr.ifremer.wao.io.csv2.Export;
import fr.ifremer.wao.io.csv2.ExportModel;
import fr.ifremer.wao.io.csv2.Import;
+import fr.ifremer.wao.io.csv2.ImportModel;
import fr.ifremer.wao.io.csv2.models.SamplingPlanImportExportModel;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
@@ -318,7 +320,9 @@
Binder<SampleRow, SampleRow> sampleRowBinder = BinderFactory.newBinder(SampleRow.class);
sampleRowBinder.copyExcluding(row, oldRow, SampleRow.TOPIA_ID, SampleRow.TOPIA_VERSION, SampleRow.TOPIA_CREATE_DATE,
// old logs (whole historic) is kept by not erasing this property
- SampleRow.PROPERTY_SAMPLE_ROW_LOG);
+ SampleRow.PROPERTY_SAMPLE_ROW_LOG,
+ // FIXME bleny 20110315 should not be excluded
+ SampleRow.PROPERTY_OBSERVERS);
if (rowLog.getTopiaId() == null) {
context.prepareTopiaId(SampleRowLog.class, rowLog);
@@ -1050,15 +1054,19 @@
ImportResults result = new ImportResultsImpl();
if (ObsProgram.OBSDEB.equals(obsProgram)) {
+
TerrestrialDivisionDAO terrestrialDivisionDAO = WaoDAOHelper.getTerrestrialDivisionDAO(transaction);
-
List<TerrestrialDivision> observationUnits = terrestrialDivisionDAO.findAllByPort(null);
+ WaoUserDAO waoUserDAO = WaoDAOHelper.getWaoUserDAO(transaction);
+ List<WaoUser> waoUsers = waoUserDAO.findAllByActive(true);
+
if (observationUnits.isEmpty()) {
throw new IllegalStateException("Le référentiel de stratification n'a pas été importé");
}
- SamplingPlanImportExportModel samplingPlanImportModel = new SamplingPlanImportExportModel(observationUnits);
+ ImportModel<SampleRow> samplingPlanImportModel =
+ new SamplingPlanImportExportModel(connectedUser, observationUnits, waoUsers);
try {
Import<SampleRow> samplingPlanImport = new Import<SampleRow>(samplingPlanImportModel, input);
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java 2011-03-14 17:19:34 UTC (rev 1062)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java 2011-03-15 15:40:11 UTC (rev 1063)
@@ -29,6 +29,7 @@
import fr.ifremer.wao.io.csv2.models.TerrestrialLocationImportModel;
import org.apache.commons.io.IOUtils;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,6 +82,7 @@
}
@Test
+ @Ignore("not yet implemented")
public void testImportSamplingPlan() throws IOException {
TerrestrialDivision uo07 = new TerrestrialDivisionImpl();
@@ -94,7 +96,7 @@
terrestrialDivisions.add(uo07);
terrestrialDivisions.add(uo87);
- ImportModel<SampleRow> model = new SamplingPlanImportExportModel(terrestrialDivisions);
+ ImportModel<SampleRow> model = new SamplingPlanImportExportModel(null, terrestrialDivisions, null);
InputStream input = null;
try {
input = getClass().getResourceAsStream("/import/samplingPlan-obsdeb.csv");
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-03-14 17:19:34 UTC (rev 1062)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-03-15 15:40:11 UTC (rev 1063)
@@ -1,202 +1,202 @@
wao.ui.action.acceptContact=Valider le contact
wao.ui.action.add=Ajouter
-wao.ui.action.addNewContactFromBoat=Cr\u00e9er un nouveau contact pour ce navire et la ligne s\u00e9lectionn\u00e9e dans les filtres
-wao.ui.action.back=Revenier \u00e0 l'\u00e9cran pr\u00e9c\u00e9dent
+wao.ui.action.addNewContactFromBoat=Cr\u00E9er un nouveau contact pour ce navire et la ligne s\u00E9lectionn\u00E9e dans les filtres
+wao.ui.action.back=Revenier \u00E0 l'\u00E9cran pr\u00E9c\u00E9dent
wao.ui.action.cancel=Annuler
wao.ui.action.changeLocale=Changer de langue
wao.ui.action.contactAdmin=Contacter un responsable ObsMer
-wao.ui.action.create=Cr\u00e9er
-wao.ui.action.createCompany=Cr\u00e9er une soci\u00e9t\u00e9
-wao.ui.action.createUser=Cr\u00e9er un utilisateur
+wao.ui.action.create=Cr\u00E9er
+wao.ui.action.createCompany=Cr\u00E9er une soci\u00E9t\u00E9
+wao.ui.action.createUser=Cr\u00E9er un utilisateur
wao.ui.action.delete=Supprimer
-wao.ui.action.deleteCompany=Supprimer la soci\u00e9t\u00e9
-wao.ui.action.deleteCompany.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la soci\u00e9t\u00e9 ?
+wao.ui.action.deleteCompany=Supprimer la soci\u00E9t\u00E9
+wao.ui.action.deleteCompany.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer la soci\u00E9t\u00E9 ?
wao.ui.action.deleteContact=Supprimer le contact
-wao.ui.action.deleteContact.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement ce contact ?
+wao.ui.action.deleteContact.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer d\u00E9finitivement ce contact ?
wao.ui.action.deleteNews=Supprimer la nouvelle
-wao.ui.action.deleteNews.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement cette nouvelle ?
+wao.ui.action.deleteNews.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer d\u00E9finitivement cette nouvelle ?
wao.ui.action.deleteSampleRow=Supprimer la ligne du plan
-wao.ui.action.deleteSampleRow.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la ligne %s du plan ?
+wao.ui.action.deleteSampleRow.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer la ligne %s du plan ?
wao.ui.action.deleteUser=Supprimer l'utilisateur
-wao.ui.action.deleteUser.confirm=\u00cates-vous s\u00fbr de vouloir supprimer l'utilisateur ?
+wao.ui.action.deleteUser.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer l'utilisateur ?
wao.ui.action.edit=Modifier
wao.ui.action.enlargeView=Agrandir la vue
-wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations priv\u00e9es
+wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations priv\u00E9es
wao.ui.action.filter=Filtrer
wao.ui.action.hideFilters=Masquer les filtres
wao.ui.action.login=Connexion
-wao.ui.action.logout=D\u00e9connexion
-wao.ui.action.reduceView=R\u00e9duire la vue
-wao.ui.action.refresh=Rafra\u00eechir
+wao.ui.action.logout=D\u00E9connexion
+wao.ui.action.reduceView=R\u00E9duire la vue
+wao.ui.action.refresh=Rafra\u00EEchir
wao.ui.action.refuseContact=Refuser le contact
wao.ui.action.remove=Retirer
-wao.ui.action.resetFields=Remettre le formulaire \u00e0 z\u00e9ro
+wao.ui.action.resetFields=Remettre le formulaire \u00E0 z\u00E9ro
wao.ui.action.revert=Annuler
wao.ui.action.runExport=Lancer l'export
wao.ui.action.runImport=Lancer l'import
wao.ui.action.runSearch=Lancer la recherche
wao.ui.action.save=Enregistrer
-wao.ui.action.showDetails=Voir les d\u00e9tails
+wao.ui.action.showDetails=Voir les d\u00E9tails
wao.ui.action.showFilters=Afficher les filtres
wao.ui.action.unvalidateContact=Invalider le contact
wao.ui.action.viewIndicatorsHistory=Voir l'historique des modifications des indicateurs
wao.ui.boatList=Liste de %s navires
wao.ui.boatinfo.title=Informations sur %s
-wao.ui.boats.associatedLine=Ligne(s) du plan associ\u00e9e(s) \u00e0 ce navire
-wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre soci\u00e9t\u00e9
-wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le d\u00e9tail.
-wao.ui.cartography.title=R\u00e9partition des contacts par quartier des navires
-wao.ui.cartography.title.company=R\u00e9partition des contacts par quartier des navires pour la soci\u00e9t\u00e9 %s
+wao.ui.boats.associatedLine=Ligne(s) du plan associ\u00E9e(s) \u00E0 ce navire
+wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre soci\u00E9t\u00E9
+wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le d\u00E9tail.
+wao.ui.cartography.title=R\u00E9partition des contacts par quartier des navires
+wao.ui.cartography.title.company=R\u00E9partition des contacts par quartier des navires pour la soci\u00E9t\u00E9 %s
wao.ui.chart.boardingsSince=Nombre de sollicitations depuis le %s
wao.ui.chart.numberBoats=Nb navires
wao.ui.chart.numberObservations=Nb observations
wao.ui.chart.numberOfBoatsWithBoardings=Nombre de navires avec x embarquements
-wao.ui.contact.lastContact=Derni\u00e8re observation concernant ce navire pour votre soci\u00e9t\u00e9 (tous programmes confondus)
-wao.ui.contacts.createFromBoat=Cr\u00e9er un nouveau contact pour ce navire et cette ligne du plan
-wao.ui.contacts.createFromBoat.fail=Cr\u00e9ation d'un nouveau contact impossible
-wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arriv\u00e9e \u00e0 \u00e9ch\u00e9ance, \u00eates-vous s\u00fbr de vouloir cr\u00e9er un nouveau contact ?
-wao.ui.disclaimer=Le site de \u00ab SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER \u00bb a fait l'objet d'une d\u00e9claration \u00e0 la CNIL sous le num\u00e9ro suivant \: 1414476
-wao.ui.disclaimer.boats=Les donn\u00e9es saisies dans cette page sont la propri\u00e9t\u00e9 exclusive de la soci\u00e9t\u00e9. En dehors de la soci\u00e9t\u00e9, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer.
+wao.ui.contact.lastContact=Derni\u00E8re observation concernant ce navire pour votre soci\u00E9t\u00E9 (tous programmes confondus)
+wao.ui.contacts.createFromBoat=Cr\u00E9er un nouveau contact pour ce navire et cette ligne du plan
+wao.ui.contacts.createFromBoat.fail=Cr\u00E9ation d'un nouveau contact impossible
+wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arriv\u00E9e \u00E0 \u00E9ch\u00E9ance, \u00EAtes-vous s\u00FBr de vouloir cr\u00E9er un nouveau contact ?
+wao.ui.disclaimer=Le site de \u00AB SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER \u00BB a fait l'objet d'une d\u00E9claration \u00E0 la CNIL sous le num\u00E9ro suivant \: 1414476
+wao.ui.disclaimer.boats=Les donn\u00E9es saisies dans cette page sont la propri\u00E9t\u00E9 exclusive de la soci\u00E9t\u00E9. En dehors de la soci\u00E9t\u00E9, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer.
wao.ui.email=Adresse e-mail
wao.ui.entity.Boat=Navire
wao.ui.entity.Boats=Navires
-wao.ui.entity.Company=Soci\u00e9t\u00e9
+wao.ui.entity.Company=Soci\u00E9t\u00E9
wao.ui.entity.Contact=Contact
-wao.ui.entity.FishingZone=Zones de p\u00eache
-wao.ui.entity.SampleRow=Ligne du plan d'\u00e9chantillonnage
+wao.ui.entity.FishingZone=Zones de p\u00EAche
+wao.ui.entity.SampleRow=Ligne du plan d'\u00E9chantillonnage
wao.ui.entity.TerrestrialLocation=Lieu
wao.ui.entity.fishingGearDCF=Engin code DCF
-wao.ui.entity.targetSpeciesDCF=Ensembles d'esp\u00e8ces-cible code DCF
+wao.ui.entity.targetSpeciesDCF=Ensembles d'esp\u00E8ces-cible code DCF
wao.ui.field.Boat.boatLength=Longueur
-wao.ui.field.Boat.buildYear=Ann\u00e9e de construction
+wao.ui.field.Boat.buildYear=Ann\u00E9e de construction
wao.ui.field.Boat.districtCode=Quartier
wao.ui.field.Boat.immatriculation=Immatriculation
wao.ui.field.Boat.name=Nom
wao.ui.field.Boat.shipOwner=Armateur
wao.ui.field.BoatDistrict.code=Code quartier
-wao.ui.field.BoatInfos.dup=Capacit\u00e9 d'accueil du navire en personnels sp\u00e9cialis\u00e9s
+wao.ui.field.BoatInfos.dup=Capacit\u00E9 d'accueil du navire en personnels sp\u00E9cialis\u00E9s
wao.ui.field.Company.active=Active
wao.ui.field.Company.name=Nom
-wao.ui.field.Contact.beginDate=D\u00e9but d'observation
+wao.ui.field.Contact.beginDate=D\u00E9but d'observation
wao.ui.field.Contact.comment=Commentaire observateur
wao.ui.field.Contact.commentAdmin=Commentaire programme
wao.ui.field.Contact.commentCoordinator=Commentaire coordinateur
-wao.ui.field.Contact.completeSampling=\u00c9chantillonnage complet
-wao.ui.field.Contact.contactState=\u00c9tat du contact
+wao.ui.field.Contact.completeSampling=\u00C9chantillonnage complet
+wao.ui.field.Contact.contactState=\u00C9tat du contact
wao.ui.field.Contact.contactStateMotif=Motif du refus
wao.ui.field.Contact.contactStateMotifs=Motifs de refus
-wao.ui.field.Contact.creationDate=Date de cr\u00e9ation du contact
-wao.ui.field.Contact.dataInputDate=Saisie des donn\u00e9es dans Allegro
-wao.ui.field.Contact.dataReliability=Qualit\u00e9 des donn\u00e9es
+wao.ui.field.Contact.creationDate=Date de cr\u00E9ation du contact
+wao.ui.field.Contact.dataInputDate=Saisie des donn\u00E9es dans Allegro
+wao.ui.field.Contact.dataReliability=Qualit\u00E9 des donn\u00E9es
wao.ui.field.Contact.endDate=Fin d'observation
-wao.ui.field.Contact.mainObserver=Observateur r\u00e9f\u00e9rent
+wao.ui.field.Contact.mainObserver=Observateur r\u00E9f\u00E9rent
wao.ui.field.Contact.mammalsCapture=Capture accidentelle
-wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des esp\u00e8ces captur\u00e9es
+wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des esp\u00E8ces captur\u00E9es
wao.ui.field.Contact.mammalsObservation=Observation exceptionnelle
wao.ui.field.Contact.nbObservants=Nombre d'observateurs
-wao.ui.field.Contact.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage suivie
+wao.ui.field.Contact.samplingStrategy=Strat\u00E9gie d'\u00E9chantillonnage suivie
wao.ui.field.Contact.secondaryObservers=Observateurs
wao.ui.field.Contact.terrestrialLocation=Lieu d'observation
-wao.ui.field.Contact.validationCompany=Validation soci\u00e9t\u00e9
+wao.ui.field.Contact.validationCompany=Validation soci\u00E9t\u00E9
wao.ui.field.Contact.validationProgram=Validation programme
-wao.ui.field.FishingZone.facadeName=Fa\u00e7ade
+wao.ui.field.FishingZone.facadeName=Fa\u00E7ade
wao.ui.field.FishingZone.sectorName=Zone
wao.ui.field.SampleRow.code=Code ligne
wao.ui.field.SampleRow.comment=Commentaire
wao.ui.field.SampleRow.dCF5Code=Codes
wao.ui.field.SampleRow.day=Jour
wao.ui.field.SampleRow.dcf5Code=Code DCF Niv. 5
-wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00eache
-wao.ui.field.SampleRow.libelle=Libell\u00e9
+wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00EAche
+wao.ui.field.SampleRow.libelle=Libell\u00E9
wao.ui.field.SampleRow.meshSize=Maillage
-wao.ui.field.SampleRow.observationUnit=Unit\u00e9 d'observation
+wao.ui.field.SampleRow.observationUnit=Unit\u00E9 d'observation
wao.ui.field.SampleRow.other=Autre
-wao.ui.field.SampleRow.periodBegin=D\u00e9but
+wao.ui.field.SampleRow.periodBegin=D\u00E9but
wao.ui.field.SampleRow.periodEnd=Fin
-wao.ui.field.SampleRow.profession=M\u00e9tier
-wao.ui.field.SampleRow.professionCode=Code m\u00e9tier
+wao.ui.field.SampleRow.profession=M\u00E9tier
+wao.ui.field.SampleRow.professionCode=Code m\u00E9tier
wao.ui.field.SampleRow.programName=Programme
-wao.ui.field.SampleRow.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage
+wao.ui.field.SampleRow.samplingStrategy=Strat\u00E9gie d'\u00E9chantillonnage
wao.ui.field.SampleRow.size=Taille du navire
-wao.ui.field.SampleRow.species=Esp\u00e8ces cibles
+wao.ui.field.SampleRow.species=Esp\u00E8ces cibles
wao.ui.field.SampleRow.terrestrialLocation=Quartier maritime
wao.ui.field.SampleRow.terrestrialLocationInfos=Autre(s) info(s)
-wao.ui.field.User.firstName=Pr\u00e9nom
+wao.ui.field.User.firstName=Pr\u00E9nom
wao.ui.field.User.lastName=Nom
wao.ui.field.User.login=Identifiant
-wao.ui.field.UserProfile.userRole=R\u00f4le
+wao.ui.field.UserProfile.userRole=R\u00F4le
wao.ui.field.WaoUser.login=Identifiant
wao.ui.field.WaoUser.mammalsNotifications=Recevoir les notifications de captures accidentelles
wao.ui.field.WaoUser.password=Mot de passe
wao.ui.filters.filters=Filtres de recherche
-wao.ui.filters.refresh=Rafra\u00eechir les champs du filtre
-wao.ui.forgotPassword=Mot de passe oubli\u00e9 ?
-wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont \u00e9ligibles pour cette ligne. Vous pouvez utiliser n'importe quel s\u00e9parateur pour s\u00e9parer les immatriculations (virgule, point, espace ou saut de ligne)
-wao.ui.form.SampleRow.missingBeginDate=Date de d\u00e9but manquante pour g\u00e9n\u00e9rer le code de la ligne \!
-wao.ui.form.SampleRow.others=Autres donn\u00e9es de la ligne d'\u00e9chantillonnage
+wao.ui.filters.refresh=Rafra\u00EEchir les champs du filtre
+wao.ui.forgotPassword=Mot de passe oubli\u00E9 ?
+wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont \u00E9ligibles pour cette ligne. Vous pouvez utiliser n'importe quel s\u00E9parateur pour s\u00E9parer les immatriculations (virgule, point, espace ou saut de ligne)
+wao.ui.form.SampleRow.missingBeginDate=Date de d\u00E9but manquante pour g\u00E9n\u00E9rer le code de la ligne \!
+wao.ui.form.SampleRow.others=Autres donn\u00E9es de la ligne d'\u00E9chantillonnage
wao.ui.form.SampleRow.program=Programme de rattachement et effort d'observation par mois
wao.ui.form.addComment=Ajouter un commentaire
-wao.ui.form.addRole=Ajouter ce r\u00f4le
+wao.ui.form.addRole=Ajouter ce r\u00F4le
wao.ui.form.boardingFrom=Sollicitations du navire depuis le
wao.ui.form.contactsFile=Fichier des contacts
-wao.ui.form.definePasswordManually=d\u00e9finir manuellement
+wao.ui.form.definePasswordManually=d\u00E9finir manuellement
wao.ui.form.editComment=Commentaire sur la modification
wao.ui.form.editionAuthor=Auteur de la modification
-wao.ui.form.estimatedTides=Voir l'effort d'observations estim\u00e9
-wao.ui.form.estimatedTides.description=L'effort d'observations estim\u00e9 \u00e9quivaut au nombre de contacts valid\u00e9s ou non par la soci\u00e9t\u00e9. Les contacts refus\u00e9s par le programme ne sont pas pris en compte.
-wao.ui.form.generatePassword=G\u00e9n\u00e9rer le mot de passe
+wao.ui.form.estimatedTides=Voir l'effort d'observations estim\u00E9
+wao.ui.form.estimatedTides.description=L'effort d'observations estim\u00E9 \u00E9quivaut au nombre de contacts valid\u00E9s ou non par la soci\u00E9t\u00E9. Les contacts refus\u00E9s par le programme ne sont pas pris en compte.
+wao.ui.form.generatePassword=G\u00E9n\u00E9rer le mot de passe
wao.ui.form.otherBoatInfos=Autres informations sur le navire
-wao.ui.form.period=P\u00e9riode
+wao.ui.form.period=P\u00E9riode
wao.ui.form.period.from=du
wao.ui.form.period.to=au
-wao.ui.form.periodFrom=P\u00e9riode du
-wao.ui.form.periodFromTo=P\u00e9riode du %s au %s
+wao.ui.form.periodFrom=P\u00E9riode du
+wao.ui.form.periodFromTo=P\u00E9riode du %s au %s
wao.ui.form.program=Programme
-wao.ui.form.programEvaluation=\u00c9valuation programme
+wao.ui.form.programEvaluation=\u00C9valuation programme
wao.ui.form.readOnly=lecture seule
wao.ui.form.removeRole=retirer ce role
-wao.ui.form.repeatPassword=R\u00e9p\u00e9ter le mot de passe
-wao.ui.form.roles=R\u00f4les
-wao.ui.form.sortByTideBegin=Trier par date de d\u00e9but d'observation (du plus r\u00e9cent au plus ancien)
-wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activit\u00e9
-wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activit\u00e9 en cours. Vous pouvez continuer \u00e0 naviguer sur le site en attendant la fin du chargement.
-wao.ui.import.activityCalendarLabel=des calendriers d'activit\u00e9
-wao.ui.import.activityCalendarUserAccessesLabel=des acc\u00e8s utilisateurs aux calendriers d'activit\u00e9
-wao.ui.import.boatDistrictLabel=des coordonn\u00e9es des quartiers des navires
+wao.ui.form.repeatPassword=R\u00E9p\u00E9ter le mot de passe
+wao.ui.form.roles=R\u00F4les
+wao.ui.form.sortByTideBegin=Trier par date de d\u00E9but d'observation (du plus r\u00E9cent au plus ancien)
+wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activit\u00E9
+wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activit\u00E9 en cours. Vous pouvez continuer \u00E0 naviguer sur le site en attendant la fin du chargement.
+wao.ui.import.activityCalendarLabel=des calendriers d'activit\u00E9
+wao.ui.import.activityCalendarUserAccessesLabel=des acc\u00E8s utilisateurs aux calendriers d'activit\u00E9
+wao.ui.import.boatDistrictLabel=des coordonn\u00E9es des quartiers des navires
wao.ui.import.boatsLabel=des navires
wao.ui.import.description=Fichier %s %s \:
-wao.ui.import.fishingZoneLabel=des zones de p\u00eaches
+wao.ui.import.fishingZoneLabel=des zones de p\u00EAches
wao.ui.import.fullDescription=Import %s (format %s avec encodage UTF-8)
wao.ui.import.longTitle=Import/Export CSV (UTF-8)
-wao.ui.import.samplingPlanLabel=du plan d'\u00e9chantillonnage
-wao.ui.import.terrestrialDivisionsLabel=du r\u00e9f\u00e9rentiel de stratification spatiale (ObsDeb)
+wao.ui.import.samplingPlanLabel=du plan d'\u00E9chantillonnage
+wao.ui.import.terrestrialDivisionsLabel=du r\u00E9f\u00E9rentiel de stratification spatiale (ObsDeb)
wao.ui.import.terrestrialLocationsLabel=des lieux terrestres
wao.ui.import.title=Import %s
wao.ui.indicator.andMore=%s et plus
wao.ui.indicator.bounds=Bornes
-wao.ui.indicator.coefficient=Pond\u00e9ration
+wao.ui.indicator.coefficient=Pond\u00E9ration
wao.ui.indicator.editions=Modifications
wao.ui.indicator.indicator=Indicateur
-wao.ui.indicator.legend=En jaune, la position actuelle de la soci\u00e9t\u00e9 selon cet indicateur.
+wao.ui.indicator.legend=En jaune, la position actuelle de la soci\u00E9t\u00E9 selon cet indicateur.
wao.ui.indicator.levels=Niveaux
-wao.ui.indicator.useRightDecimalSymbol=Attention \u00e0 bien utiliser ',' et non '.' pour les d\u00e9cimales
+wao.ui.indicator.useRightDecimalSymbol=Attention \u00E0 bien utiliser ',' et non '.' pour les d\u00E9cimales
wao.ui.indicators.coefficientsSum=Total coefficient
-wao.ui.indicators.title=Indicateurs qualit\u00e9s prestataires
+wao.ui.indicators.title=Indicateurs qualit\u00E9s prestataires
wao.ui.invalidLogin=Identifiant invalide
-wao.ui.layout.userDescription=Vous \u00eates %s de la soci\u00e9t\u00e9 %s (%s)
+wao.ui.layout.userDescription=Vous \u00EAtes %s de la soci\u00E9t\u00E9 %s (%s)
wao.ui.message.chooseProfile=Choisissez dans la liste votre profil de connexion \:
-wao.ui.misc.METIER=M\u00c9TIER
-wao.ui.misc.N/A=non renseign\u00e9e
-wao.ui.misc.accepted=Accept\u00e9
-wao.ui.misc.advancedSearch=Recherche avanc\u00e9e
+wao.ui.misc.METIER=M\u00C9TIER
+wao.ui.misc.N/A=non renseign\u00E9e
+wao.ui.misc.accepted=Accept\u00E9
+wao.ui.misc.advancedSearch=Recherche avanc\u00E9e
wao.ui.misc.by=par
wao.ui.misc.changeOn=Modification du
wao.ui.misc.comment=Commentaire
-wao.ui.misc.commentAddedOn=Commentaire ajout\u00e9 le
+wao.ui.misc.commentAddedOn=Commentaire ajout\u00E9 le
wao.ui.misc.comments=Commentaires
-wao.ui.misc.companies=Soci\u00e9t\u00e9s
-wao.ui.misc.createdOnF=Cr\u00e9\u00e9e le
-wao.ui.misc.creating=En cours de cr\u00e9ation
+wao.ui.misc.companies=Soci\u00E9t\u00E9s
+wao.ui.misc.createdOnF=Cr\u00E9\u00E9e le
+wao.ui.misc.creating=En cours de cr\u00E9ation
wao.ui.misc.export=Export
wao.ui.misc.export.longTitle=Export CSV
wao.ui.misc.import-export=Import/export
@@ -206,7 +206,7 @@
wao.ui.misc.logFile.description=Afficher le fichier de log de %s
wao.ui.misc.no=Non
wao.ui.misc.noComment=aucun commentaire
-wao.ui.misc.notValidated=Non valid\u00e9
+wao.ui.misc.notValidated=Non valid\u00E9
wao.ui.misc.observationReport=Compte-rendu d'observation
wao.ui.misc.observations=Observations
wao.ui.misc.observer=Observateur
@@ -216,69 +216,69 @@
wao.ui.misc.other=Autre
wao.ui.misc.otherInfos=Autre information
wao.ui.misc.others=Autres
-wao.ui.misc.refused=R\u00e9fus\u00e9
+wao.ui.misc.refused=R\u00E9fus\u00E9
wao.ui.misc.since=depuis le
wao.ui.misc.total=Total
-wao.ui.misc.undefined=Non-d\u00e9fini
-wao.ui.misc.validated=Valid\u00e9
+wao.ui.misc.undefined=Non-d\u00E9fini
+wao.ui.misc.validated=Valid\u00E9
wao.ui.misc.yes=Oui
-wao.ui.nContactsFound=%s contacts trouv\u00e9s
+wao.ui.nContactsFound=%s contacts trouv\u00E9s
wao.ui.news.content=Texte
wao.ui.news.title=Titre
wao.ui.page.Administration.title=Administration
wao.ui.page.Boats.title=Navires
wao.ui.page.Cartography.title=Cartographie
-wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises \u00e0 des personnels ext\u00e9rieurs, soyez riguoureux dans la description de la capture accidentelle
+wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises \u00E0 des personnels ext\u00E9rieurs, soyez riguoureux dans la description de la capture accidentelle
wao.ui.page.ContactForm.title=Modification d'un contact
wao.ui.page.Contacts.title=Contacts
wao.ui.page.Index.title=Accueil
-wao.ui.page.SamplingPlan.title=Plan d'\u00e9chantillonnage
-wao.ui.page.Synthesis.title=Synth\u00e8se
+wao.ui.page.SamplingPlan.title=Plan d'\u00E9chantillonnage
+wao.ui.page.Synthesis.title=Synth\u00E8se
wao.ui.page.UserProfileForm.title=Gestion du profil
-wao.ui.publishedByProgram=Publi\u00e9e par le programme
-wao.ui.publishedByYourCompany=Publi\u00e9e par la soci\u00e9t\u00e9
-wao.ui.sampleRow.creation=Cr\u00e9ation d'une ligne du plan d'\u00e9chantillonnage
+wao.ui.publishedByProgram=Publi\u00E9e par le programme
+wao.ui.publishedByYourCompany=Publi\u00E9e par la soci\u00E9t\u00E9
+wao.ui.sampleRow.creation=Cr\u00E9ation d'une ligne du plan d'\u00E9chantillonnage
wao.ui.sampleRow.edition=Modification de la ligne %s
wao.ui.sampleRowLog.title=Historique de la ligne %s
wao.ui.samplingPlan.actions=Actions
-wao.ui.samplingPlan.actual=r\u00e9alis\u00e9
-wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'\u00e9chantillonnage
-wao.ui.samplingPlan.averageTideTime=Dur\u00e9e moyenne d'une mar\u00e9e (J.)
-wao.ui.samplingPlan.effort=Effort d'observation en nombre de mar\u00e9es
-wao.ui.samplingPlan.estimated=estim\u00e9
-wao.ui.samplingPlan.expected=planifi\u00e9
-wao.ui.samplingPlan.export=Exporter le plan d'\u00e9chantillonnage du %s au %s
+wao.ui.samplingPlan.actual=r\u00E9alis\u00E9
+wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'\u00E9chantillonnage
+wao.ui.samplingPlan.averageTideTime=Dur\u00E9e moyenne d'une mar\u00E9e (J.)
+wao.ui.samplingPlan.effort=Effort d'observation en nombre de mar\u00E9es
+wao.ui.samplingPlan.estimated=estim\u00E9
+wao.ui.samplingPlan.expected=planifi\u00E9
+wao.ui.samplingPlan.export=Exporter le plan d'\u00E9chantillonnage du %s au %s
wao.ui.samplingPlan.fishingZoneInfo=Zone autre(s) info(s)
wao.ui.samplingPlan.months=Mois
wao.ui.samplingPlan.nbObservants=Nb. d'observateurs
-wao.ui.samplingPlan.program=Programme ou r\u00e8glement rattachement
-wao.ui.samplingPlan.sampledProfessions=M\u00e9tiers \u00e9chantillonn\u00e9s
-wao.ui.samplingPlan.showActual=Afficher l'effort d'observations r\u00e9alis\u00e9 pour les contacts valid\u00e9s seulement
-wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estim\u00e9 pour les contacts valid\u00e9s ou non par la soci\u00e9t\u00e9
-wao.ui.samplingPlan.title=Plan d'\u00e9chantillonnage
-wao.ui.synthesis.allegroReactivity.description=Ce r\u00e9sultat est une moyenne du nombre de jours entre la date de saisie des donn\u00e9es et la date de fin d'observation.
-wao.ui.synthesis.allegroReactivity.title=R\u00e9activit\u00e9 quant \u00e0 la saisie des donn\u00e9es
+wao.ui.samplingPlan.program=Programme ou r\u00E8glement rattachement
+wao.ui.samplingPlan.sampledProfessions=M\u00E9tiers \u00E9chantillonn\u00E9s
+wao.ui.samplingPlan.showActual=Afficher l'effort d'observations r\u00E9alis\u00E9 pour les contacts valid\u00E9s seulement
+wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estim\u00E9 pour les contacts valid\u00E9s ou non par la soci\u00E9t\u00E9
+wao.ui.samplingPlan.title=Plan d'\u00E9chantillonnage
+wao.ui.synthesis.allegroReactivity.description=Ce r\u00E9sultat est une moyenne du nombre de jours entre la date de saisie des donn\u00E9es et la date de fin d'observation.
+wao.ui.synthesis.allegroReactivity.title=R\u00E9activit\u00E9 quant \u00E0 la saisie des donn\u00E9es
wao.ui.synthesis.boarding.boardingCount=Au total, %s observations invalides sur %s observations.
-wao.ui.synthesis.boarding.description=Ces r\u00e9sultats ne concernent que les lignes du plan d'\u00e9chantillonnage ayant une dur\u00e9e moyenne de mar\u00e9es inf\u00e9rieure ou \u00e9gale \u00e0 48h.
-wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicit\u00e9 avec %s observations (tous programmes confondus) \: %s (%s)
+wao.ui.synthesis.boarding.description=Ces r\u00E9sultats ne concernent que les lignes du plan d'\u00E9chantillonnage ayant une dur\u00E9e moyenne de mar\u00E9es inf\u00E9rieure ou \u00E9gale \u00E0 48h.
+wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicit\u00E9 avec %s observations (tous programmes confondus) \: %s (%s)
wao.ui.synthesis.boarding.title=Sollicitations des navires
-wao.ui.synthesis.complianceBoarding.description=Respect du nombre pr\u00e9vu d'observateurs pour chaque mar\u00e9e r\u00e9alis\u00e9e.
-wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqu\u00e9s
-wao.ui.synthesis.contactsStates.description=Ces r\u00e9sultats concernent l'ensemble des \u00e9tats des contacts except\u00e9 ceux qui ont \u00e9t\u00e9 refus\u00e9s par le programme.
-wao.ui.synthesis.contactsStates.title=\u00c9tats des contacts
-wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de mar\u00e9es exploitables par rapport nombre de mar\u00e9e r\u00e9alis\u00e9es.
-wao.ui.synthesis.dataReliability.title=Qualit\u00e9 de la donn\u00e9e
-wao.ui.synthesis.dataSampling.title=Donn\u00e9es des mar\u00e9es (r\u00e9alis\u00e9 / planifi\u00e9)
-wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synth\u00e8se global
-wao.ui.synthesis.globalSynthesis.title=Synth\u00e8se globale
-wao.ui.synthesis.globalSynthesis.title.estimated=Synth\u00e8se globale (selon estimations)
-wao.ui.synthesis.log.description=Cette page pr\u00e9sente toutes les modifications effectu\u00e9es depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs.
-wao.ui.synthesis.log.empty=Aucune modification n'a \u00e9t\u00e9 apport\u00e9e \u00e0 ce jour
+wao.ui.synthesis.complianceBoarding.description=Respect du nombre pr\u00E9vu d'observateurs pour chaque mar\u00E9e r\u00E9alis\u00E9e.
+wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqu\u00E9s
+wao.ui.synthesis.contactsStates.description=Ces r\u00E9sultats concernent l'ensemble des \u00E9tats des contacts except\u00E9 ceux qui ont \u00E9t\u00E9 refus\u00E9s par le programme.
+wao.ui.synthesis.contactsStates.title=\u00C9tats des contacts
+wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de mar\u00E9es exploitables par rapport nombre de mar\u00E9e r\u00E9alis\u00E9es.
+wao.ui.synthesis.dataReliability.title=Qualit\u00E9 de la donn\u00E9e
+wao.ui.synthesis.dataSampling.title=Donn\u00E9es des mar\u00E9es (r\u00E9alis\u00E9 / planifi\u00E9)
+wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synth\u00E8se global
+wao.ui.synthesis.globalSynthesis.title=Synth\u00E8se globale
+wao.ui.synthesis.globalSynthesis.title.estimated=Synth\u00E8se globale (selon estimations)
+wao.ui.synthesis.log.description=Cette page pr\u00E9sente toutes les modifications effectu\u00E9es depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs.
+wao.ui.synthesis.log.empty=Aucune modification n'a \u00E9t\u00E9 apport\u00E9e \u00E0 ce jour
wao.ui.synthesis.log.entry.author=Auteur de la modification
-wao.ui.synthesis.log.entry.comment=Commentaire associ\u00e9
+wao.ui.synthesis.log.entry.comment=Commentaire associ\u00E9
wao.ui.synthesis.log.entry.date=Date de la modification
-wao.ui.synthesis.log.entry.summary=Modifications effectu\u00e9es
-wao.ui.synthesis.log.title=Historique des modifications des param\u00e8tres de la synth\u00e8se globale
-wao.ui.unavailableOperation=Op\u00e9ration non-disponible
+wao.ui.synthesis.log.entry.summary=Modifications effectu\u00E9es
+wao.ui.synthesis.log.title=Historique des modifications des param\u00E8tres de la synth\u00E8se globale
+wao.ui.unavailableOperation=Op\u00E9ration non-disponible
wao.ui.userList=Liste des utilisateurs
wao.ui.validLogin=Identifiant valide
1
0
[Suiviobsmer-commits] r1062 - in trunk/wao-ui/src/main: java/fr/ifremer/wao/ui/pages resources/i18n
by bleny@users.labs.libre-entreprise.org 14 Mar '11
by bleny@users.labs.libre-entreprise.org 14 Mar '11
14 Mar '11
Author: bleny
Date: 2011-03-14 17:19:34 +0000 (Mon, 14 Mar 2011)
New Revision: 1062
Log:
fix missing i18n value
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java
trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties
trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2011-03-14 13:48:04 UTC (rev 1061)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2011-03-14 17:19:34 UTC (rev 1062)
@@ -327,7 +327,7 @@
data.put(realText, res.get(1));
String title = manager.getDataSamplingTitle(getFilter());
return ChartUtils.createCategoryChart(title, messages.get(n_("wao.ui.chart.numberObservations")),
- messages.get("wao.ui.samplingPlan.months"), getDataSamplingChartType(), data);
+ messages.get(n_("wao.ui.samplingPlan.months")), getDataSamplingChartType(), data);
}
public ChartType getDataSamplingChartType() {
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-03-14 13:48:04 UTC (rev 1061)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-03-14 17:19:34 UTC (rev 1062)
@@ -249,6 +249,7 @@
wao.ui.samplingPlan.expected=expected
wao.ui.samplingPlan.export=Export the sampling plan from %s to %s
wao.ui.samplingPlan.fishingZoneInfo=Fishing Zone others infos
+wao.ui.samplingPlan.months=Months
wao.ui.samplingPlan.nbObservants=Nb. observers
wao.ui.samplingPlan.program=program
wao.ui.samplingPlan.sampledProfessions=Sampled professions
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-03-14 13:48:04 UTC (rev 1061)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-03-14 17:19:34 UTC (rev 1062)
@@ -1,202 +1,202 @@
wao.ui.action.acceptContact=Valider le contact
wao.ui.action.add=Ajouter
-wao.ui.action.addNewContactFromBoat=Cr\u00E9er un nouveau contact pour ce navire et la ligne s\u00E9lectionn\u00E9e dans les filtres
-wao.ui.action.back=Revenier \u00E0 l'\u00E9cran pr\u00E9c\u00E9dent
+wao.ui.action.addNewContactFromBoat=Cr\u00e9er un nouveau contact pour ce navire et la ligne s\u00e9lectionn\u00e9e dans les filtres
+wao.ui.action.back=Revenier \u00e0 l'\u00e9cran pr\u00e9c\u00e9dent
wao.ui.action.cancel=Annuler
wao.ui.action.changeLocale=Changer de langue
wao.ui.action.contactAdmin=Contacter un responsable ObsMer
-wao.ui.action.create=Cr\u00E9er
-wao.ui.action.createCompany=Cr\u00E9er une soci\u00E9t\u00E9
-wao.ui.action.createUser=Cr\u00E9er un utilisateur
+wao.ui.action.create=Cr\u00e9er
+wao.ui.action.createCompany=Cr\u00e9er une soci\u00e9t\u00e9
+wao.ui.action.createUser=Cr\u00e9er un utilisateur
wao.ui.action.delete=Supprimer
-wao.ui.action.deleteCompany=Supprimer la soci\u00E9t\u00E9
-wao.ui.action.deleteCompany.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer la soci\u00E9t\u00E9 ?
+wao.ui.action.deleteCompany=Supprimer la soci\u00e9t\u00e9
+wao.ui.action.deleteCompany.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la soci\u00e9t\u00e9 ?
wao.ui.action.deleteContact=Supprimer le contact
-wao.ui.action.deleteContact.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer d\u00E9finitivement ce contact ?
+wao.ui.action.deleteContact.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement ce contact ?
wao.ui.action.deleteNews=Supprimer la nouvelle
-wao.ui.action.deleteNews.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer d\u00E9finitivement cette nouvelle ?
+wao.ui.action.deleteNews.confirm=\u00cates-vous s\u00fbr de vouloir supprimer d\u00e9finitivement cette nouvelle ?
wao.ui.action.deleteSampleRow=Supprimer la ligne du plan
-wao.ui.action.deleteSampleRow.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer la ligne %s du plan ?
+wao.ui.action.deleteSampleRow.confirm=\u00cates-vous s\u00fbr de vouloir supprimer la ligne %s du plan ?
wao.ui.action.deleteUser=Supprimer l'utilisateur
-wao.ui.action.deleteUser.confirm=\u00CAtes-vous s\u00FBr de vouloir supprimer l'utilisateur ?
+wao.ui.action.deleteUser.confirm=\u00cates-vous s\u00fbr de vouloir supprimer l'utilisateur ?
wao.ui.action.edit=Modifier
wao.ui.action.enlargeView=Agrandir la vue
-wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations priv\u00E9es
+wao.ui.action.exportBoats=Exporter les $s navires avec leurs informations priv\u00e9es
wao.ui.action.filter=Filtrer
wao.ui.action.hideFilters=Masquer les filtres
wao.ui.action.login=Connexion
-wao.ui.action.logout=D\u00E9connexion
-wao.ui.action.reduceView=R\u00E9duire la vue
-wao.ui.action.refresh=Rafra\u00EEchir
+wao.ui.action.logout=D\u00e9connexion
+wao.ui.action.reduceView=R\u00e9duire la vue
+wao.ui.action.refresh=Rafra\u00eechir
wao.ui.action.refuseContact=Refuser le contact
wao.ui.action.remove=Retirer
-wao.ui.action.resetFields=Remettre le formulaire \u00E0 z\u00E9ro
+wao.ui.action.resetFields=Remettre le formulaire \u00e0 z\u00e9ro
wao.ui.action.revert=Annuler
wao.ui.action.runExport=Lancer l'export
wao.ui.action.runImport=Lancer l'import
wao.ui.action.runSearch=Lancer la recherche
wao.ui.action.save=Enregistrer
-wao.ui.action.showDetails=Voir les d\u00E9tails
+wao.ui.action.showDetails=Voir les d\u00e9tails
wao.ui.action.showFilters=Afficher les filtres
wao.ui.action.unvalidateContact=Invalider le contact
wao.ui.action.viewIndicatorsHistory=Voir l'historique des modifications des indicateurs
wao.ui.boatList=Liste de %s navires
wao.ui.boatinfo.title=Informations sur %s
-wao.ui.boats.associatedLine=Ligne(s) du plan associ\u00E9e(s) \u00E0 ce navire
-wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre soci\u00E9t\u00E9
-wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le d\u00E9tail.
-wao.ui.cartography.title=R\u00E9partition des contacts par quartier des navires
-wao.ui.cartography.title.company=R\u00E9partition des contacts par quartier des navires pour la soci\u00E9t\u00E9 %s
+wao.ui.boats.associatedLine=Ligne(s) du plan associ\u00e9e(s) \u00e0 ce navire
+wao.ui.boats.nbObservations=%s observation(s) dont %s avec votre soci\u00e9t\u00e9
+wao.ui.cartography.help=Cliquez sur les graphiques pour avoir le d\u00e9tail.
+wao.ui.cartography.title=R\u00e9partition des contacts par quartier des navires
+wao.ui.cartography.title.company=R\u00e9partition des contacts par quartier des navires pour la soci\u00e9t\u00e9 %s
wao.ui.chart.boardingsSince=Nombre de sollicitations depuis le %s
wao.ui.chart.numberBoats=Nb navires
wao.ui.chart.numberObservations=Nb observations
wao.ui.chart.numberOfBoatsWithBoardings=Nombre de navires avec x embarquements
-wao.ui.contact.lastContact=Derni\u00E8re observation concernant ce navire pour votre soci\u00E9t\u00E9 (tous programmes confondus)
-wao.ui.contacts.createFromBoat=Cr\u00E9er un nouveau contact pour ce navire et cette ligne du plan
-wao.ui.contacts.createFromBoat.fail=Cr\u00E9ation d'un nouveau contact impossible
-wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arriv\u00E9e \u00E0 \u00E9ch\u00E9ance, \u00EAtes-vous s\u00FBr de vouloir cr\u00E9er un nouveau contact ?
-wao.ui.disclaimer=Le site de \u00AB SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER \u00BB a fait l'objet d'une d\u00E9claration \u00E0 la CNIL sous le num\u00E9ro suivant \: 1414476
-wao.ui.disclaimer.boats=Les donn\u00E9es saisies dans cette page sont la propri\u00E9t\u00E9 exclusive de la soci\u00E9t\u00E9. En dehors de la soci\u00E9t\u00E9, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer.
+wao.ui.contact.lastContact=Derni\u00e8re observation concernant ce navire pour votre soci\u00e9t\u00e9 (tous programmes confondus)
+wao.ui.contacts.createFromBoat=Cr\u00e9er un nouveau contact pour ce navire et cette ligne du plan
+wao.ui.contacts.createFromBoat.fail=Cr\u00e9ation d'un nouveau contact impossible
+wao.ui.contacts.createFromBoat.warn=Attention \: cette ligne du plan est arriv\u00e9e \u00e0 \u00e9ch\u00e9ance, \u00eates-vous s\u00fbr de vouloir cr\u00e9er un nouveau contact ?
+wao.ui.disclaimer=Le site de \u00ab SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER \u00bb a fait l'objet d'une d\u00e9claration \u00e0 la CNIL sous le num\u00e9ro suivant \: 1414476
+wao.ui.disclaimer.boats=Les donn\u00e9es saisies dans cette page sont la propri\u00e9t\u00e9 exclusive de la soci\u00e9t\u00e9. En dehors de la soci\u00e9t\u00e9, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer.
wao.ui.email=Adresse e-mail
wao.ui.entity.Boat=Navire
wao.ui.entity.Boats=Navires
-wao.ui.entity.Company=Soci\u00E9t\u00E9
+wao.ui.entity.Company=Soci\u00e9t\u00e9
wao.ui.entity.Contact=Contact
-wao.ui.entity.FishingZone=Zones de p\u00EAche
-wao.ui.entity.SampleRow=Ligne du plan d'\u00E9chantillonnage
+wao.ui.entity.FishingZone=Zones de p\u00eache
+wao.ui.entity.SampleRow=Ligne du plan d'\u00e9chantillonnage
wao.ui.entity.TerrestrialLocation=Lieu
wao.ui.entity.fishingGearDCF=Engin code DCF
-wao.ui.entity.targetSpeciesDCF=Ensembles d'esp\u00E8ces-cible code DCF
+wao.ui.entity.targetSpeciesDCF=Ensembles d'esp\u00e8ces-cible code DCF
wao.ui.field.Boat.boatLength=Longueur
-wao.ui.field.Boat.buildYear=Ann\u00E9e de construction
+wao.ui.field.Boat.buildYear=Ann\u00e9e de construction
wao.ui.field.Boat.districtCode=Quartier
wao.ui.field.Boat.immatriculation=Immatriculation
wao.ui.field.Boat.name=Nom
wao.ui.field.Boat.shipOwner=Armateur
wao.ui.field.BoatDistrict.code=Code quartier
-wao.ui.field.BoatInfos.dup=Capacit\u00E9 d'accueil du navire en personnels sp\u00E9cialis\u00E9s
+wao.ui.field.BoatInfos.dup=Capacit\u00e9 d'accueil du navire en personnels sp\u00e9cialis\u00e9s
wao.ui.field.Company.active=Active
wao.ui.field.Company.name=Nom
-wao.ui.field.Contact.beginDate=D\u00E9but d'observation
+wao.ui.field.Contact.beginDate=D\u00e9but d'observation
wao.ui.field.Contact.comment=Commentaire observateur
wao.ui.field.Contact.commentAdmin=Commentaire programme
wao.ui.field.Contact.commentCoordinator=Commentaire coordinateur
-wao.ui.field.Contact.completeSampling=\u00C9chantillonnage complet
-wao.ui.field.Contact.contactState=\u00C9tat du contact
+wao.ui.field.Contact.completeSampling=\u00c9chantillonnage complet
+wao.ui.field.Contact.contactState=\u00c9tat du contact
wao.ui.field.Contact.contactStateMotif=Motif du refus
wao.ui.field.Contact.contactStateMotifs=Motifs de refus
-wao.ui.field.Contact.creationDate=Date de cr\u00E9ation du contact
-wao.ui.field.Contact.dataInputDate=Saisie des donn\u00E9es dans Allegro
-wao.ui.field.Contact.dataReliability=Qualit\u00E9 des donn\u00E9es
+wao.ui.field.Contact.creationDate=Date de cr\u00e9ation du contact
+wao.ui.field.Contact.dataInputDate=Saisie des donn\u00e9es dans Allegro
+wao.ui.field.Contact.dataReliability=Qualit\u00e9 des donn\u00e9es
wao.ui.field.Contact.endDate=Fin d'observation
-wao.ui.field.Contact.mainObserver=Observateur r\u00E9f\u00E9rent
+wao.ui.field.Contact.mainObserver=Observateur r\u00e9f\u00e9rent
wao.ui.field.Contact.mammalsCapture=Capture accidentelle
-wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des esp\u00E8ces captur\u00E9es
+wao.ui.field.Contact.mammalsInfo=Noms scientifiques et nombres d'individus des esp\u00e8ces captur\u00e9es
wao.ui.field.Contact.mammalsObservation=Observation exceptionnelle
wao.ui.field.Contact.nbObservants=Nombre d'observateurs
-wao.ui.field.Contact.samplingStrategy=Strat\u00E9gie d'\u00E9chantillonnage suivie
+wao.ui.field.Contact.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage suivie
wao.ui.field.Contact.secondaryObservers=Observateurs
wao.ui.field.Contact.terrestrialLocation=Lieu d'observation
-wao.ui.field.Contact.validationCompany=Validation soci\u00E9t\u00E9
+wao.ui.field.Contact.validationCompany=Validation soci\u00e9t\u00e9
wao.ui.field.Contact.validationProgram=Validation programme
-wao.ui.field.FishingZone.facadeName=Fa\u00E7ade
+wao.ui.field.FishingZone.facadeName=Fa\u00e7ade
wao.ui.field.FishingZone.sectorName=Zone
wao.ui.field.SampleRow.code=Code ligne
wao.ui.field.SampleRow.comment=Commentaire
wao.ui.field.SampleRow.dCF5Code=Codes
wao.ui.field.SampleRow.day=Jour
wao.ui.field.SampleRow.dcf5Code=Code DCF Niv. 5
-wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00EAche
-wao.ui.field.SampleRow.libelle=Libell\u00E9
+wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00eache
+wao.ui.field.SampleRow.libelle=Libell\u00e9
wao.ui.field.SampleRow.meshSize=Maillage
-wao.ui.field.SampleRow.observationUnit=Unit\u00E9 d'observation
+wao.ui.field.SampleRow.observationUnit=Unit\u00e9 d'observation
wao.ui.field.SampleRow.other=Autre
-wao.ui.field.SampleRow.periodBegin=D\u00E9but
+wao.ui.field.SampleRow.periodBegin=D\u00e9but
wao.ui.field.SampleRow.periodEnd=Fin
-wao.ui.field.SampleRow.profession=M\u00E9tier
-wao.ui.field.SampleRow.professionCode=Code m\u00E9tier
+wao.ui.field.SampleRow.profession=M\u00e9tier
+wao.ui.field.SampleRow.professionCode=Code m\u00e9tier
wao.ui.field.SampleRow.programName=Programme
-wao.ui.field.SampleRow.samplingStrategy=Strat\u00E9gie d'\u00E9chantillonnage
+wao.ui.field.SampleRow.samplingStrategy=Strat\u00e9gie d'\u00e9chantillonnage
wao.ui.field.SampleRow.size=Taille du navire
-wao.ui.field.SampleRow.species=Esp\u00E8ces cibles
+wao.ui.field.SampleRow.species=Esp\u00e8ces cibles
wao.ui.field.SampleRow.terrestrialLocation=Quartier maritime
wao.ui.field.SampleRow.terrestrialLocationInfos=Autre(s) info(s)
-wao.ui.field.User.firstName=Pr\u00E9nom
+wao.ui.field.User.firstName=Pr\u00e9nom
wao.ui.field.User.lastName=Nom
wao.ui.field.User.login=Identifiant
-wao.ui.field.UserProfile.userRole=R\u00F4le
+wao.ui.field.UserProfile.userRole=R\u00f4le
wao.ui.field.WaoUser.login=Identifiant
wao.ui.field.WaoUser.mammalsNotifications=Recevoir les notifications de captures accidentelles
wao.ui.field.WaoUser.password=Mot de passe
wao.ui.filters.filters=Filtres de recherche
-wao.ui.filters.refresh=Rafra\u00EEchir les champs du filtre
-wao.ui.forgotPassword=Mot de passe oubli\u00E9 ?
-wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont \u00E9ligibles pour cette ligne. Vous pouvez utiliser n'importe quel s\u00E9parateur pour s\u00E9parer les immatriculations (virgule, point, espace ou saut de ligne)
-wao.ui.form.SampleRow.missingBeginDate=Date de d\u00E9but manquante pour g\u00E9n\u00E9rer le code de la ligne \!
-wao.ui.form.SampleRow.others=Autres donn\u00E9es de la ligne d'\u00E9chantillonnage
+wao.ui.filters.refresh=Rafra\u00eechir les champs du filtre
+wao.ui.forgotPassword=Mot de passe oubli\u00e9 ?
+wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont \u00e9ligibles pour cette ligne. Vous pouvez utiliser n'importe quel s\u00e9parateur pour s\u00e9parer les immatriculations (virgule, point, espace ou saut de ligne)
+wao.ui.form.SampleRow.missingBeginDate=Date de d\u00e9but manquante pour g\u00e9n\u00e9rer le code de la ligne \!
+wao.ui.form.SampleRow.others=Autres donn\u00e9es de la ligne d'\u00e9chantillonnage
wao.ui.form.SampleRow.program=Programme de rattachement et effort d'observation par mois
wao.ui.form.addComment=Ajouter un commentaire
-wao.ui.form.addRole=Ajouter ce r\u00F4le
+wao.ui.form.addRole=Ajouter ce r\u00f4le
wao.ui.form.boardingFrom=Sollicitations du navire depuis le
wao.ui.form.contactsFile=Fichier des contacts
-wao.ui.form.definePasswordManually=d\u00E9finir manuellement
+wao.ui.form.definePasswordManually=d\u00e9finir manuellement
wao.ui.form.editComment=Commentaire sur la modification
wao.ui.form.editionAuthor=Auteur de la modification
-wao.ui.form.estimatedTides=Voir l'effort d'observations estim\u00E9
-wao.ui.form.estimatedTides.description=L'effort d'observations estim\u00E9 \u00E9quivaut au nombre de contacts valid\u00E9s ou non par la soci\u00E9t\u00E9. Les contacts refus\u00E9s par le programme ne sont pas pris en compte.
-wao.ui.form.generatePassword=G\u00E9n\u00E9rer le mot de passe
+wao.ui.form.estimatedTides=Voir l'effort d'observations estim\u00e9
+wao.ui.form.estimatedTides.description=L'effort d'observations estim\u00e9 \u00e9quivaut au nombre de contacts valid\u00e9s ou non par la soci\u00e9t\u00e9. Les contacts refus\u00e9s par le programme ne sont pas pris en compte.
+wao.ui.form.generatePassword=G\u00e9n\u00e9rer le mot de passe
wao.ui.form.otherBoatInfos=Autres informations sur le navire
-wao.ui.form.period=P\u00E9riode
+wao.ui.form.period=P\u00e9riode
wao.ui.form.period.from=du
wao.ui.form.period.to=au
-wao.ui.form.periodFrom=P\u00E9riode du
-wao.ui.form.periodFromTo=P\u00E9riode du %s au %s
+wao.ui.form.periodFrom=P\u00e9riode du
+wao.ui.form.periodFromTo=P\u00e9riode du %s au %s
wao.ui.form.program=Programme
-wao.ui.form.programEvaluation=\u00C9valuation programme
+wao.ui.form.programEvaluation=\u00c9valuation programme
wao.ui.form.readOnly=lecture seule
wao.ui.form.removeRole=retirer ce role
-wao.ui.form.repeatPassword=R\u00E9p\u00E9ter le mot de passe
-wao.ui.form.roles=R\u00F4les
-wao.ui.form.sortByTideBegin=Trier par date de d\u00E9but d'observation (du plus r\u00E9cent au plus ancien)
-wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activit\u00E9
-wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activit\u00E9 en cours. Vous pouvez continuer \u00E0 naviguer sur le site en attendant la fin du chargement.
-wao.ui.import.activityCalendarLabel=des calendriers d'activit\u00E9
-wao.ui.import.activityCalendarUserAccessesLabel=des acc\u00E8s utilisateurs aux calendriers d'activit\u00E9
-wao.ui.import.boatDistrictLabel=des coordonn\u00E9es des quartiers des navires
+wao.ui.form.repeatPassword=R\u00e9p\u00e9ter le mot de passe
+wao.ui.form.roles=R\u00f4les
+wao.ui.form.sortByTideBegin=Trier par date de d\u00e9but d'observation (du plus r\u00e9cent au plus ancien)
+wao.ui.import.activityCalendarImportLabel=de l'import des calendriers d'activit\u00e9
+wao.ui.import.activityCalendarImportRunning=Import des calendriers d'activit\u00e9 en cours. Vous pouvez continuer \u00e0 naviguer sur le site en attendant la fin du chargement.
+wao.ui.import.activityCalendarLabel=des calendriers d'activit\u00e9
+wao.ui.import.activityCalendarUserAccessesLabel=des acc\u00e8s utilisateurs aux calendriers d'activit\u00e9
+wao.ui.import.boatDistrictLabel=des coordonn\u00e9es des quartiers des navires
wao.ui.import.boatsLabel=des navires
wao.ui.import.description=Fichier %s %s \:
-wao.ui.import.fishingZoneLabel=des zones de p\u00EAches
+wao.ui.import.fishingZoneLabel=des zones de p\u00eaches
wao.ui.import.fullDescription=Import %s (format %s avec encodage UTF-8)
wao.ui.import.longTitle=Import/Export CSV (UTF-8)
-wao.ui.import.samplingPlanLabel=du plan d'\u00E9chantillonnage
-wao.ui.import.terrestrialDivisionsLabel=du r\u00E9f\u00E9rentiel de stratification spatiale (ObsDeb)
+wao.ui.import.samplingPlanLabel=du plan d'\u00e9chantillonnage
+wao.ui.import.terrestrialDivisionsLabel=du r\u00e9f\u00e9rentiel de stratification spatiale (ObsDeb)
wao.ui.import.terrestrialLocationsLabel=des lieux terrestres
wao.ui.import.title=Import %s
wao.ui.indicator.andMore=%s et plus
wao.ui.indicator.bounds=Bornes
-wao.ui.indicator.coefficient=Pond\u00E9ration
+wao.ui.indicator.coefficient=Pond\u00e9ration
wao.ui.indicator.editions=Modifications
wao.ui.indicator.indicator=Indicateur
-wao.ui.indicator.legend=En jaune, la position actuelle de la soci\u00E9t\u00E9 selon cet indicateur.
+wao.ui.indicator.legend=En jaune, la position actuelle de la soci\u00e9t\u00e9 selon cet indicateur.
wao.ui.indicator.levels=Niveaux
-wao.ui.indicator.useRightDecimalSymbol=Attention \u00E0 bien utiliser ',' et non '.' pour les d\u00E9cimales
+wao.ui.indicator.useRightDecimalSymbol=Attention \u00e0 bien utiliser ',' et non '.' pour les d\u00e9cimales
wao.ui.indicators.coefficientsSum=Total coefficient
-wao.ui.indicators.title=Indicateurs qualit\u00E9s prestataires
+wao.ui.indicators.title=Indicateurs qualit\u00e9s prestataires
wao.ui.invalidLogin=Identifiant invalide
-wao.ui.layout.userDescription=Vous \u00EAtes %s de la soci\u00E9t\u00E9 %s (%s)
+wao.ui.layout.userDescription=Vous \u00eates %s de la soci\u00e9t\u00e9 %s (%s)
wao.ui.message.chooseProfile=Choisissez dans la liste votre profil de connexion \:
-wao.ui.misc.METIER=M\u00C9TIER
-wao.ui.misc.N/A=non renseign\u00E9e
-wao.ui.misc.accepted=Accept\u00E9
-wao.ui.misc.advancedSearch=Recherche avanc\u00E9e
+wao.ui.misc.METIER=M\u00c9TIER
+wao.ui.misc.N/A=non renseign\u00e9e
+wao.ui.misc.accepted=Accept\u00e9
+wao.ui.misc.advancedSearch=Recherche avanc\u00e9e
wao.ui.misc.by=par
wao.ui.misc.changeOn=Modification du
wao.ui.misc.comment=Commentaire
-wao.ui.misc.commentAddedOn=Commentaire ajout\u00E9 le
+wao.ui.misc.commentAddedOn=Commentaire ajout\u00e9 le
wao.ui.misc.comments=Commentaires
-wao.ui.misc.companies=Soci\u00E9t\u00E9s
-wao.ui.misc.createdOnF=Cr\u00E9\u00E9e le
-wao.ui.misc.creating=En cours de cr\u00E9ation
+wao.ui.misc.companies=Soci\u00e9t\u00e9s
+wao.ui.misc.createdOnF=Cr\u00e9\u00e9e le
+wao.ui.misc.creating=En cours de cr\u00e9ation
wao.ui.misc.export=Export
wao.ui.misc.export.longTitle=Export CSV
wao.ui.misc.import-export=Import/export
@@ -206,7 +206,7 @@
wao.ui.misc.logFile.description=Afficher le fichier de log de %s
wao.ui.misc.no=Non
wao.ui.misc.noComment=aucun commentaire
-wao.ui.misc.notValidated=Non valid\u00E9
+wao.ui.misc.notValidated=Non valid\u00e9
wao.ui.misc.observationReport=Compte-rendu d'observation
wao.ui.misc.observations=Observations
wao.ui.misc.observer=Observateur
@@ -216,68 +216,69 @@
wao.ui.misc.other=Autre
wao.ui.misc.otherInfos=Autre information
wao.ui.misc.others=Autres
-wao.ui.misc.refused=R\u00E9fus\u00E9
+wao.ui.misc.refused=R\u00e9fus\u00e9
wao.ui.misc.since=depuis le
wao.ui.misc.total=Total
-wao.ui.misc.undefined=Non-d\u00E9fini
-wao.ui.misc.validated=Valid\u00E9
+wao.ui.misc.undefined=Non-d\u00e9fini
+wao.ui.misc.validated=Valid\u00e9
wao.ui.misc.yes=Oui
-wao.ui.nContactsFound=%s contacts trouv\u00E9s
+wao.ui.nContactsFound=%s contacts trouv\u00e9s
wao.ui.news.content=Texte
wao.ui.news.title=Titre
wao.ui.page.Administration.title=Administration
wao.ui.page.Boats.title=Navires
wao.ui.page.Cartography.title=Cartographie
-wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises \u00E0 des personnels ext\u00E9rieurs, soyez riguoureux dans la description de la capture accidentelle
+wao.ui.page.ContactForm.mammalsInfo.disclaimer=Attention, toutes les informations saisies seront transmises \u00e0 des personnels ext\u00e9rieurs, soyez riguoureux dans la description de la capture accidentelle
wao.ui.page.ContactForm.title=Modification d'un contact
wao.ui.page.Contacts.title=Contacts
wao.ui.page.Index.title=Accueil
-wao.ui.page.SamplingPlan.title=Plan d'\u00E9chantillonnage
-wao.ui.page.Synthesis.title=Synth\u00E8se
+wao.ui.page.SamplingPlan.title=Plan d'\u00e9chantillonnage
+wao.ui.page.Synthesis.title=Synth\u00e8se
wao.ui.page.UserProfileForm.title=Gestion du profil
-wao.ui.publishedByProgram=Publi\u00E9e par le programme
-wao.ui.publishedByYourCompany=Publi\u00E9e par la soci\u00E9t\u00E9
-wao.ui.sampleRow.creation=Cr\u00E9ation d'une ligne du plan d'\u00E9chantillonnage
+wao.ui.publishedByProgram=Publi\u00e9e par le programme
+wao.ui.publishedByYourCompany=Publi\u00e9e par la soci\u00e9t\u00e9
+wao.ui.sampleRow.creation=Cr\u00e9ation d'une ligne du plan d'\u00e9chantillonnage
wao.ui.sampleRow.edition=Modification de la ligne %s
wao.ui.sampleRowLog.title=Historique de la ligne %s
wao.ui.samplingPlan.actions=Actions
-wao.ui.samplingPlan.actual=r\u00E9alis\u00E9
-wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'\u00E9chantillonnage
-wao.ui.samplingPlan.averageTideTime=Dur\u00E9e moyenne d'une mar\u00E9e (J.)
-wao.ui.samplingPlan.effort=Effort d'observation en nombre de mar\u00E9es
-wao.ui.samplingPlan.estimated=estim\u00E9
-wao.ui.samplingPlan.expected=planifi\u00E9
-wao.ui.samplingPlan.export=Exporter le plan d'\u00E9chantillonnage du %s au %s
+wao.ui.samplingPlan.actual=r\u00e9alis\u00e9
+wao.ui.samplingPlan.addSampleRow=Ajouter une ligne au plan d'\u00e9chantillonnage
+wao.ui.samplingPlan.averageTideTime=Dur\u00e9e moyenne d'une mar\u00e9e (J.)
+wao.ui.samplingPlan.effort=Effort d'observation en nombre de mar\u00e9es
+wao.ui.samplingPlan.estimated=estim\u00e9
+wao.ui.samplingPlan.expected=planifi\u00e9
+wao.ui.samplingPlan.export=Exporter le plan d'\u00e9chantillonnage du %s au %s
wao.ui.samplingPlan.fishingZoneInfo=Zone autre(s) info(s)
+wao.ui.samplingPlan.months=Mois
wao.ui.samplingPlan.nbObservants=Nb. d'observateurs
-wao.ui.samplingPlan.program=Programme ou r\u00E8glement rattachement
-wao.ui.samplingPlan.sampledProfessions=M\u00E9tiers \u00E9chantillonn\u00E9s
-wao.ui.samplingPlan.showActual=Afficher l'effort d'observations r\u00E9alis\u00E9 pour les contacts valid\u00E9s seulement
-wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estim\u00E9 pour les contacts valid\u00E9s ou non par la soci\u00E9t\u00E9
-wao.ui.samplingPlan.title=Plan d'\u00E9chantillonnage
-wao.ui.synthesis.allegroReactivity.description=Ce r\u00E9sultat est une moyenne du nombre de jours entre la date de saisie des donn\u00E9es et la date de fin d'observation.
-wao.ui.synthesis.allegroReactivity.title=R\u00E9activit\u00E9 quant \u00E0 la saisie des donn\u00E9es
+wao.ui.samplingPlan.program=Programme ou r\u00e8glement rattachement
+wao.ui.samplingPlan.sampledProfessions=M\u00e9tiers \u00e9chantillonn\u00e9s
+wao.ui.samplingPlan.showActual=Afficher l'effort d'observations r\u00e9alis\u00e9 pour les contacts valid\u00e9s seulement
+wao.ui.samplingPlan.showExpected=Afficher l'effort d'observations estim\u00e9 pour les contacts valid\u00e9s ou non par la soci\u00e9t\u00e9
+wao.ui.samplingPlan.title=Plan d'\u00e9chantillonnage
+wao.ui.synthesis.allegroReactivity.description=Ce r\u00e9sultat est une moyenne du nombre de jours entre la date de saisie des donn\u00e9es et la date de fin d'observation.
+wao.ui.synthesis.allegroReactivity.title=R\u00e9activit\u00e9 quant \u00e0 la saisie des donn\u00e9es
wao.ui.synthesis.boarding.boardingCount=Au total, %s observations invalides sur %s observations.
-wao.ui.synthesis.boarding.description=Ces r\u00E9sultats ne concernent que les lignes du plan d'\u00E9chantillonnage ayant une dur\u00E9e moyenne de mar\u00E9es inf\u00E9rieure ou \u00E9gale \u00E0 48h.
-wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicit\u00E9 avec %s observations (tous programmes confondus) \: %s (%s)
+wao.ui.synthesis.boarding.description=Ces r\u00e9sultats ne concernent que les lignes du plan d'\u00e9chantillonnage ayant une dur\u00e9e moyenne de mar\u00e9es inf\u00e9rieure ou \u00e9gale \u00e0 48h.
+wao.ui.synthesis.boarding.mostUsedBoat=Navire le plus sollicit\u00e9 avec %s observations (tous programmes confondus) \: %s (%s)
wao.ui.synthesis.boarding.title=Sollicitations des navires
-wao.ui.synthesis.complianceBoarding.description=Respect du nombre pr\u00E9vu d'observateurs pour chaque mar\u00E9e r\u00E9alis\u00E9e.
-wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqu\u00E9s
-wao.ui.synthesis.contactsStates.description=Ces r\u00E9sultats concernent l'ensemble des \u00E9tats des contacts except\u00E9 ceux qui ont \u00E9t\u00E9 refus\u00E9s par le programme.
-wao.ui.synthesis.contactsStates.title=\u00C9tats des contacts
-wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de mar\u00E9es exploitables par rapport nombre de mar\u00E9e r\u00E9alis\u00E9es.
-wao.ui.synthesis.dataReliability.title=Qualit\u00E9 de la donn\u00E9e
-wao.ui.synthesis.dataSampling.title=Donn\u00E9es des mar\u00E9es (r\u00E9alis\u00E9 / planifi\u00E9)
-wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synth\u00E8se global
-wao.ui.synthesis.globalSynthesis.title=Synth\u00E8se globale
-wao.ui.synthesis.globalSynthesis.title.estimated=Synth\u00E8se globale (selon estimations)
-wao.ui.synthesis.log.description=Cette page pr\u00E9sente toutes les modifications effectu\u00E9es depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs.
-wao.ui.synthesis.log.empty=Aucune modification n'a \u00E9t\u00E9 apport\u00E9e \u00E0 ce jour
+wao.ui.synthesis.complianceBoarding.description=Respect du nombre pr\u00e9vu d'observateurs pour chaque mar\u00e9e r\u00e9alis\u00e9e.
+wao.ui.synthesis.complianceBoarding.title=Respect du nombre d'observateurs embarqu\u00e9s
+wao.ui.synthesis.contactsStates.description=Ces r\u00e9sultats concernent l'ensemble des \u00e9tats des contacts except\u00e9 ceux qui ont \u00e9t\u00e9 refus\u00e9s par le programme.
+wao.ui.synthesis.contactsStates.title=\u00c9tats des contacts
+wao.ui.synthesis.dataReliability.description=Pourcentage du nombre de mar\u00e9es exploitables par rapport nombre de mar\u00e9e r\u00e9alis\u00e9es.
+wao.ui.synthesis.dataReliability.title=Qualit\u00e9 de la donn\u00e9e
+wao.ui.synthesis.dataSampling.title=Donn\u00e9es des mar\u00e9es (r\u00e9alis\u00e9 / planifi\u00e9)
+wao.ui.synthesis.globalSynthesis.globalResult=Bilan de la synth\u00e8se global
+wao.ui.synthesis.globalSynthesis.title=Synth\u00e8se globale
+wao.ui.synthesis.globalSynthesis.title.estimated=Synth\u00e8se globale (selon estimations)
+wao.ui.synthesis.log.description=Cette page pr\u00e9sente toutes les modifications effectu\u00e9es depuis l'origine qui portent sur les bornes de chaque niveaux ainsi que les coefficients de chaque indicateurs.
+wao.ui.synthesis.log.empty=Aucune modification n'a \u00e9t\u00e9 apport\u00e9e \u00e0 ce jour
wao.ui.synthesis.log.entry.author=Auteur de la modification
-wao.ui.synthesis.log.entry.comment=Commentaire associ\u00E9
+wao.ui.synthesis.log.entry.comment=Commentaire associ\u00e9
wao.ui.synthesis.log.entry.date=Date de la modification
-wao.ui.synthesis.log.entry.summary=Modifications effectu\u00E9es
-wao.ui.synthesis.log.title=Historique des modifications des param\u00E8tres de la synth\u00E8se globale
-wao.ui.unavailableOperation=Op\u00E9ration non-disponible
+wao.ui.synthesis.log.entry.summary=Modifications effectu\u00e9es
+wao.ui.synthesis.log.title=Historique des modifications des param\u00e8tres de la synth\u00e8se globale
+wao.ui.unavailableOperation=Op\u00e9ration non-disponible
wao.ui.userList=Liste des utilisateurs
wao.ui.validLogin=Identifiant valide
1
0
[Suiviobsmer-commits] r1061 - trunk/wao-business/src/main/java/fr/ifremer/wao/service
by bleny@users.labs.libre-entreprise.org 14 Mar '11
by bleny@users.labs.libre-entreprise.org 14 Mar '11
14 Mar '11
Author: bleny
Date: 2011-03-14 13:48:04 +0000 (Mon, 14 Mar 2011)
New Revision: 1061
Log:
refuse obsdeb sampling plan import for lines not associated with a terrestrial location
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
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-03-12 14:20:10 UTC (rev 1060)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-14 13:48:04 UTC (rev 1061)
@@ -1290,9 +1290,12 @@
ServiceReferential serviceReferential = context.getServiceFactory().getServiceReferential();
if (StringUtils.isBlank(districtCode)) {
String districtName = ImportHelper.read(reader, SAMPLING.PLAN_LIEU_NOM);
- if (districtName != null && districtName.equals("Autre")) {
+ if ("Autre".equals(districtName)) {
+ // line is associated with a place out of france (with no districtCode)
TerrestrialLocation district = serviceReferential.getTerrestrialDistrict(null);
sampleRow.setTerrestrialLocation(district);
+ } else {
+ throw new WaoBusinessException("La ligne " + sampleRow.getCode() + " doit être associée à un lieu terrestre");
}
} else {
TerrestrialLocation district = serviceReferential.getTerrestrialDistrict(districtCode);
1
0
12 Mar '11
Author: tchemit
Date: 2011-03-12 14:20:10 +0000 (Sat, 12 Mar 2011)
New Revision: 1060
Log:
Update mavenpom4labs to 2.5.2.
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-03-11 17:30:31 UTC (rev 1059)
+++ trunk/pom.xml 2011-03-12 14:20:10 UTC (rev 1060)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4labs</artifactId>
- <version>2.5.2-SNAPSHOT</version>
+ <version>2.5.2</version>
</parent>
<groupId>fr.ifremer</groupId>
1
0
11 Mar '11
Author: bleny
Date: 2011-03-11 17:30:31 +0000 (Fri, 11 Mar 2011)
New Revision: 1059
Log:
refactor import engine ; add export capability + tests ; use it for obsdeb sampling plan export
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Column.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Export.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ExportModel.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ExportableColumn.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableExportableColumn.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ModelBuilder.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueFormatter.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueGetter.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueGetterSetter.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueParserFormatter.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java
trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ExportTest.java
Removed:
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumnImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ExportHelper.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Import.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportModel.java
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/TerrestrialLocationImportModel.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/IndicatorLevels.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/AbstractMappedGridDataSource.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ContactModelFactory.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java
trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.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-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -98,7 +98,7 @@
@Override
protected void createBoatInfosNewColumns_1_2a(List<String> queries) {
- // Evo #2060 : add new columns in BoatInfos (contactSiret,
+ // Evo #2060 : add new columnsForImport in BoatInfos (contactSiret,
// contactAddress1, contactAddress2, contactCity, contactPostalCode)
queries.add("ALTER TABLE BoatInfos ADD contactAddress1 TEXT;");
queries.add("ALTER TABLE BoatInfos ADD contactAddress2 TEXT;");
@@ -448,7 +448,7 @@
return request;
}
- /** Add a columns to Contact. */
+ /** Add a columnsForImport to Contact. */
@Override
protected void addDataReliability_1_6(List<String> queries) {
queries.add(String.format("ALTER TABLE Contact ADD dataReliabilityOrdinal SMALLINT NOT NULL DEFAULT %s;",
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ExportHelper.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ExportHelper.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv/ExportHelper.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -45,7 +45,7 @@
* <pre>
* - Instanciate {@link #ExportHelper(CsvWriter, int) }
* (with abstract method implementations if needed).
- * - Call {@link #writeHeaders() } method to prepare columns and write
+ * - Call {@link #writeHeaders() } method to prepare columnsForImport and write
* first row in the resulting file.
* - In the loop data, first use {@link #newRecord() } to prepare the current
* record.
@@ -68,7 +68,7 @@
/** Current record to write **/
protected String[] record;
- /** Number of columns/headers in resulting export **/
+ /** Number of columnsForImport/headers in resulting export **/
protected int nbHeaders;
/**
@@ -76,7 +76,7 @@
* write data in it.
*
* @param writer the CsvWriter used for record data
- * @param nbHeaders number of columns in the resulting file
+ * @param nbHeaders number of columnsForImport in the resulting file
* @throws IOException
*/
public ExportHelper(CsvWriter writer, int nbHeaders) throws IOException {
Copied: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Column.java (from rev 1052, trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumnImpl.java)
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Column.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Column.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,123 @@
+/*
+ * #%L
+ * Wao :: Business
+ * %%
+ * Copyright (C) 2009 - 2011 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.wao.io.csv2;
+
+import java.text.ParseException;
+
+public class Column<E, T> implements ImportableExportableColumn<E, T> {
+
+ protected String headerName;
+
+ protected boolean mandatory = true;
+
+ protected boolean ignored;
+
+ protected ValueParser<T> valueParser;
+
+ protected ValueFormatter<T> valueFormatter;
+
+ protected ValueGetter<E, T> valueGetter;
+
+ protected ValueSetter<E, T> valueSetter;
+
+ public Column(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter, boolean ignored) {
+ this.headerName = headerName;
+ this.valueParser = valueParser;
+ this.valueSetter = valueSetter;
+ this.ignored = ignored;
+ }
+
+ public Column(String headerName, ValueGetter<E, T> valueGetter, ValueFormatter<T> valueFormatter) {
+ this.headerName = headerName;
+ this.valueGetter = valueGetter;
+ this.valueFormatter = valueFormatter;
+ }
+
+ public Column(String headerName, ValueGetterSetter<E, T> valueGetterSetter, ValueParserFormatter<T> valueParserFormatter) {
+ this.headerName = headerName;
+ this.valueGetter = valueGetterSetter;
+ this.valueFormatter = valueParserFormatter;
+ this.valueSetter = valueGetterSetter;
+ this.valueParser = valueParserFormatter;
+ }
+
+ @Override
+ public String getHeaderName() {
+ return headerName;
+ }
+
+ @Override
+ public boolean isMandatory() {
+ return mandatory;
+ }
+
+ @Override
+ public boolean isIgnored() {
+ return ignored;
+ }
+
+ @Override
+ public String formatValue(T value) {
+ if (valueFormatter == null) {
+ throw new UnsupportedOperationException("no formatter provided for " + this);
+ } else {
+ return valueFormatter.format(value);
+ }
+ }
+
+ @Override
+ public T parseValue(String value) throws ParseException {
+ if (valueParser == null) {
+ throw new UnsupportedOperationException("no parser provided for " + this);
+ } else {
+ return valueParser.parse(value);
+ }
+ }
+
+ @Override
+ public T getValue(E object) throws Exception {
+ if (valueGetter == null) {
+ throw new UnsupportedOperationException("no getter provided for " + this);
+ } else {
+ return valueGetter.get(object);
+ }
+ }
+
+ @Override
+ public void setValue(E object, T value) throws Exception {
+ if ( ! isIgnored()) {
+ if (valueSetter == null) {
+ throw new UnsupportedOperationException("no setter provided");
+ } else {
+ valueSetter.set(object, value);
+ }
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "headerName='" + headerName + '\'' +
+ ", mandatory=" + mandatory +
+ ", ignored=" + ignored +
+ '}';
+ }
+}
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-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -1,7 +1,9 @@
package fr.ifremer.wao.io.csv2;
import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.beanutils.PropertyUtils;
+import java.lang.reflect.InvocationTargetException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -9,16 +11,21 @@
public class Common {
- public static class StringValueParser implements ValueParser<String> {
+ public static class StringValueParser implements ValueParserFormatter<String> {
@Override
public String parse(String value) {
return value;
}
+
+ @Override
+ public String format(String value) {
+ return value == null ? "" : value;
+ }
}
- public static final ValueParser<String> STRING_VALUE_PARSER = new StringValueParser();
+ public static final ValueParserFormatter<String> STRING = new StringValueParser();
- public static class BeanProperty<E, T> implements ValueSetter<E, T> {
+ public static class BeanProperty<E, T> implements ValueGetterSetter<E, T> {
protected String propertyName;
@@ -30,13 +37,19 @@
public void set(E bean, T value) throws Exception {
BeanUtils.setProperty(bean, propertyName, value);
}
+
+ @Override
+ public T get(E object) throws Exception {
+ T value = (T) PropertyUtils.getProperty(object, propertyName);
+ return value;
+ }
}
- public static class DateValueParser implements ValueParser<Date> {
+ public static class DateValue implements ValueParserFormatter<Date> {
protected DateFormat dateFormat;
- public DateValueParser(String dateFormatPattern) {
+ public DateValue(String dateFormatPattern) {
this.dateFormat = new SimpleDateFormat(dateFormatPattern);
}
@@ -44,8 +57,13 @@
public Date parse(String value) throws ParseException {
return dateFormat.parse(value);
}
+
+ @Override
+ public String format(Date value) {
+ return dateFormat.format(value);
+ }
}
- public static final ValueParser<Date> DAY_PARSER = new DateValueParser("dd/MM/yyyy");
+ public static final ValueParserFormatter<Date> DAY = new DateValue("dd/MM/yyyy");
}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Export.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Export.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Export.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,53 @@
+package fr.ifremer.wao.io.csv2;
+
+import org.apache.commons.io.IOUtils;
+import org.nuiton.util.StringUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+public class Export<E> {
+
+ private static final Logger log = LoggerFactory.getLogger(Export.class);
+
+ protected ExportModel<E> model;
+
+ protected Collection<E> data;
+
+ public Export(ExportModel<E> exportModel, Collection<E> data) {
+ this.model = exportModel;
+ this.data = data;
+ }
+
+ public InputStream startExport() throws Exception {
+ String separator = String.valueOf(model.getSeparator());
+ StringBuilder csv = new StringBuilder();
+
+ // add headers
+ List<String> headerNames = new LinkedList<String>();
+ for (ExportableColumn column : model.getColumnsForExport()) {
+ headerNames.add(column.getHeaderName());
+ }
+ String headersLine = StringUtil.join(headerNames, separator, true);
+ csv.append(headersLine).append("\n");
+
+ if (log.isDebugEnabled()) {
+ log.debug("headers for export are '" + headersLine + "'");
+ log.debug("will export " + data.size() + " lines");
+ }
+
+ for (E object : data) {
+ for (ExportableColumn column : model.getColumnsForExport()) {
+ Object value = column.getValue(object);
+ String formattedValue = column.formatValue(value);
+ csv.append(formattedValue).append(separator);
+ }
+ csv.append("\n");
+ }
+ return IOUtils.toInputStream(csv);
+ }
+}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ExportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ExportModel.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ExportModel.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,11 @@
+package fr.ifremer.wao.io.csv2;
+
+import java.util.Collection;
+
+public interface ExportModel<E> {
+
+ char getSeparator();
+
+ Collection<ExportableColumn> getColumnsForExport();
+
+}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ExportableColumn.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ExportableColumn.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ExportableColumn.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,11 @@
+package fr.ifremer.wao.io.csv2;
+
+public interface ExportableColumn<E, T> {
+
+ String getHeaderName();
+
+ T getValue(E object) throws Exception;
+
+ String formatValue(T value);
+
+}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Import.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Import.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Import.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -51,7 +51,7 @@
protected List<ImportableColumn> getNonIgnoredHeaders() {
List<ImportableColumn> nonIgnoredHeaders = new ArrayList<ImportableColumn>();
- for (ImportableColumn field : model.getAllColumns()) {
+ for (ImportableColumn field : model.getColumnsForImport()) {
if ( ! field.isIgnored()) {
nonIgnoredHeaders.add(field);
}
@@ -61,7 +61,7 @@
protected List<ImportableColumn> getAllMandatoryHeaders() {
List<ImportableColumn> allMandatoryHeaders = new ArrayList<ImportableColumn>();
- for (ImportableColumn field : model.getAllColumns()) {
+ for (ImportableColumn field : model.getColumnsForImport()) {
if (field.isMandatory()) {
allMandatoryHeaders.add(field);
}
@@ -75,10 +75,10 @@
}
this.model = model;
validateModel();
- this.reader = new CsvReader(inputStream, ';', Charset.forName("UTF-8"));
+ this.reader = new CsvReader(inputStream, model.getSeparator(), Charset.forName("UTF-8"));
reader.setTrimWhitespace(true);
if (log.isTraceEnabled()) {
- log.trace("all headers are " + model.getAllColumns());
+ log.trace("all headers are " + model.getColumnsForImport());
log.trace("all non-ignored headers are " + getNonIgnoredHeaders());
log.trace("all mandatory headers are " + getAllMandatoryHeaders());
}
@@ -86,11 +86,11 @@
protected boolean validateModel() {
Set<String> headerNames = new HashSet<String>();
- for (ImportableColumn importableColumn : model.getAllColumns()) {
+ for (ImportableColumn importableColumn : model.getColumnsForImport()) {
String headerName = importableColumn.getHeaderName();
boolean alreadyUsed = ! headerNames.add(headerName);
if (alreadyUsed) {
- throw new IllegalArgumentException("model contains multiple columns named '" + headerName + "'");
+ throw new IllegalArgumentException("model contains multiple columnsForImport named '" + headerName + "'");
}
}
return true;
@@ -119,7 +119,7 @@
csvHeaders.add(header);
}
- for(ImportableColumn field : model.getAllColumns()) {
+ for(ImportableColumn field : model.getColumnsForImport()) {
csvHeaders.remove(field.getHeaderName());
}
@@ -128,7 +128,7 @@
String validationMessage = String.format(
"Les champs %s ne sont pas reconnus. Les champs possibles sont %s",
StringUtil.join(csvHeaders, ", " ,true),
- StringUtil.join(model.getAllColumns(), ", " ,true));
+ StringUtil.join(model.getColumnsForImport(), ", " ,true));
csvValidationResult.setMessage(validationMessage);
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportModel.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportModel.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -25,9 +25,11 @@
public interface ImportModel<E> {
+ char getSeparator();
+
void pushCsvHeaderNames(List<String> headerNames);
E newEmptyInstance();
- Collection<ImportableColumn> getAllColumns();
+ Collection<ImportableColumn> getColumnsForImport();
}
Deleted: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumnImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumnImpl.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumnImpl.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -1,118 +0,0 @@
-/*
- * #%L
- * Wao :: Business
- * %%
- * Copyright (C) 2009 - 2011 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.wao.io.csv2;
-
-import org.apache.commons.beanutils.BeanUtils;
-
-import java.text.ParseException;
-
-public class ImportableColumnImpl<E, T> implements ImportableColumn<E, T> {
-
- protected String headerName;
-
- protected boolean mandatory = true;
-
- protected boolean ignored;
-
- protected ValueParser<T> valueParser;
-
- protected ValueSetter<E, T> valueSetter;
-
- protected ImportableColumnImpl() {}
-
- /** a new <strong>ignored</strong> header */
- public static <E,T> ImportableColumnImpl<E, T> newIgnoredColumn(String headerName) {
- ImportableColumnImpl<E, T> newColumn = new ImportableColumnImpl();
- newColumn.headerName = headerName;
- newColumn.ignored = true;
- return newColumn;
- }
-
- /** a new <strong>mandatory</strong> header */
- public static <E> ImportableColumnImpl<E, String> newMandatoryColumn(String headerName, String propertyName) {
- return newMandatoryColumn(headerName, Common.STRING_VALUE_PARSER, propertyName);
- }
-
- public static <E, T> ImportableColumnImpl<E, T> newMandatoryColumn(String headerName, ValueParser<T> valueParser, String propertyName) {
- return newMandatoryColumn(headerName, valueParser, new Common.BeanProperty<E, T>(propertyName));
- }
-
- public static <E> ImportableColumnImpl<E, String> newMandatoryColumn(String headerName, ValueSetter<E, String> valueSetter) {
- return newMandatoryColumn(headerName, Common.STRING_VALUE_PARSER, valueSetter);
- }
-
- public static <E,T> ImportableColumnImpl<E, T> newMandatoryColumn(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter) {
- ImportableColumnImpl<E, T> newColumn = new ImportableColumnImpl(headerName, valueParser, valueSetter, false);
- return newColumn;
- }
-
- public ImportableColumnImpl(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter, boolean ignored) {
- this.headerName = headerName;
- this.valueParser = valueParser;
- this.valueSetter = valueSetter;
- this.ignored = ignored;
- }
-
-
- @Override
- public String getHeaderName() {
- return headerName;
- }
-
- @Override
- public boolean isMandatory() {
- return mandatory;
- }
-
- @Override
- public boolean isIgnored() {
- return ignored;
- }
-
- @Override
- public T parseValue(String value) throws ParseException {
- if (valueParser == null) {
- throw new UnsupportedOperationException("no parser provided for " + this);
- } else {
- return valueParser.parse(value);
- }
- }
-
- @Override
- public void setValue(E object, T value) throws Exception {
- if ( ! isIgnored()) {
- if (valueSetter == null) {
- throw new UnsupportedOperationException("no setter provided");
- } else {
- valueSetter.set(object, value);
- }
- }
- }
-
- @Override
- public String toString() {
- return "ImportableColumnImpl{" +
- "headerName='" + headerName + '\'' +
- ", mandatory=" + mandatory +
- ", ignored=" + ignored +
- '}';
- }
-}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableExportableColumn.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableExportableColumn.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableExportableColumn.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,4 @@
+package fr.ifremer.wao.io.csv2;
+
+public interface ImportableExportableColumn<E, T> extends ImportableColumn<E, T>, ExportableColumn<E, T> {
+}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ModelBuilder.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ModelBuilder.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ModelBuilder.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,82 @@
+package fr.ifremer.wao.io.csv2;
+
+import java.util.Collection;
+import java.util.LinkedList;
+
+public class ModelBuilder<E> {
+
+ protected Collection<ImportableColumn> columnsForImport = new LinkedList<ImportableColumn>();
+
+ protected Collection<ExportableColumn> columnsForExport = new LinkedList<ExportableColumn>();
+
+ /** a new <strong>ignored</strong> header */
+ public <E,T> ImportableColumn<E, T> newIgnoredColumn(String headerName) {
+ Column<E, T> newColumn = new Column(headerName, null, null, true);
+ columnsForImport.add(newColumn);
+ return newColumn;
+ }
+
+ /** a new <strong>mandatory</strong> header */
+ public ImportableColumn<E, String> newMandatoryColumn(String headerName, String propertyName) {
+ return newMandatoryColumn(headerName, Common.STRING, propertyName);
+ }
+
+ public <T> ImportableColumn<E, T> newMandatoryColumn(String headerName, ValueParser<T> valueParser, String propertyName) {
+ return newMandatoryColumn(headerName, valueParser, new Common.BeanProperty<E, T>(propertyName));
+ }
+
+ public ImportableColumn<E, String> newMandatoryColumn(String headerName, ValueSetter<E, String> valueSetter) {
+ return newMandatoryColumn(headerName, Common.STRING, valueSetter);
+ }
+
+ public <T> ImportableColumn<E, T> newMandatoryColumn(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter) {
+ Column<E, T> newColumn = new Column(headerName, valueParser, valueSetter, false);
+ columnsForImport.add(newColumn);
+ return newColumn;
+ }
+
+ public ExportableColumn<E, String> newColumnForExport(String headerName, String propertyName) {
+ return newColumnForExport(headerName, propertyName, Common.STRING);
+ }
+
+ public ExportableColumn<E, String> newColumnForExport(String headerName, ValueGetter<E, String> valueGetter) {
+ return newColumnForExport(headerName, valueGetter, Common.STRING);
+ }
+
+ public <T> ExportableColumn<E, T> newColumnForExport(String headerName, String propertyName, ValueFormatter<T> valueFormatter) {
+ return newColumnForExport(headerName, new Common.BeanProperty<E, T>(propertyName), valueFormatter);
+ }
+
+ public <T> ExportableColumn<E, T> newColumnForExport(String headerName, ValueGetter<E, T> valueGetter, ValueFormatter<T> valueFormatter) {
+ ExportableColumn<E, T> newColumn = new Column(headerName, valueGetter, valueFormatter);
+ columnsForExport.add(newColumn);
+ return newColumn;
+ }
+
+ public ImportableExportableColumn<E, String> newColumnForImportExport(String headerName, String propertyName) {
+ return newColumnForImportExport(headerName, propertyName, Common.STRING);
+ }
+
+ public ImportableExportableColumn<E, String> newColumnForImportExport(String headerName, ValueGetterSetter<E, String> valueGetterSetter) {
+ return newColumnForImportExport(headerName, valueGetterSetter, Common.STRING);
+ }
+
+ public <T> ImportableExportableColumn<E, T> newColumnForImportExport(String headerName, String propertyName, ValueParserFormatter<T> valueParserFormatter) {
+ return newColumnForImportExport(headerName, new Common.BeanProperty<E, T>(propertyName), valueParserFormatter);
+ }
+
+ public <T> ImportableExportableColumn<E, T> newColumnForImportExport(String headerName, ValueGetterSetter<E, T> valueGetterSetter, ValueParserFormatter<T> valueParserFormatter) {
+ ImportableExportableColumn<E, T> newColumn = new Column(headerName, valueGetterSetter, valueParserFormatter);
+ columnsForImport.add(newColumn);
+ columnsForExport.add(newColumn);
+ return newColumn;
+ }
+
+ public Collection<ImportableColumn> getColumnsForImport() {
+ return columnsForImport;
+ }
+
+ public Collection<ExportableColumn> getColumnsForExport() {
+ return columnsForExport;
+ }
+}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueFormatter.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueFormatter.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueFormatter.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,7 @@
+package fr.ifremer.wao.io.csv2;
+
+public interface ValueFormatter<T> {
+
+ String format(T value);
+
+}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueGetter.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueGetter.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueGetter.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,7 @@
+package fr.ifremer.wao.io.csv2;
+
+public interface ValueGetter<E, T> {
+
+ T get(E object) throws Exception;
+
+}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueGetterSetter.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueGetterSetter.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueGetterSetter.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,4 @@
+package fr.ifremer.wao.io.csv2;
+
+public interface ValueGetterSetter<E, T> extends ValueGetter<E, T>, ValueSetter<E, T> {
+}
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueParserFormatter.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueParserFormatter.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueParserFormatter.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,4 @@
+package fr.ifremer.wao.io.csv2;
+
+public interface ValueParserFormatter<T> extends ValueParser<T>, ValueFormatter<T> {
+}
Copied: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java (from rev 1056, trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java)
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,189 @@
+/*
+ * #%L
+ * Wao :: Business
+ * %%
+ * Copyright (C) 2009 - 2011 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package fr.ifremer.wao.io.csv2.models;
+
+import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.entity.SampleRow;
+import fr.ifremer.wao.entity.SampleRowImpl;
+import fr.ifremer.wao.entity.TerrestrialDivision;
+import fr.ifremer.wao.io.csv2.Common;
+import fr.ifremer.wao.io.csv2.ExportModel;
+import fr.ifremer.wao.io.csv2.ExportableColumn;
+import fr.ifremer.wao.io.csv2.ImportModel;
+import fr.ifremer.wao.io.csv2.ImportableColumn;
+import fr.ifremer.wao.io.csv2.ModelBuilder;
+import fr.ifremer.wao.io.csv2.ValueGetterSetter;
+import fr.ifremer.wao.io.csv2.ValueParserFormatter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.ParseException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ */
+public class SamplingPlanImportExportModel implements ImportModel<SampleRow>, ExportModel<SampleRow> {
+
+ private static final Logger log =
+ LoggerFactory.getLogger(SamplingPlanImportExportModel.class);
+
+ static class ObservationUnitParserFormatter implements ValueParserFormatter<TerrestrialDivision> {
+
+ protected Map<String, Map<String, TerrestrialDivision>> observationUnits;
+
+ protected String currentRegionCode;
+
+ ObservationUnitParserFormatter(Map<String, Map<String, TerrestrialDivision>> observationUnits) {
+ this.observationUnits = observationUnits;
+ }
+
+ @Override
+ public TerrestrialDivision parse(String observationUnitCode) throws ParseException {
+ Map<String, TerrestrialDivision> uos = observationUnits.get(currentRegionCode);
+ if (uos == null) {
+ throw new IllegalArgumentException("Le code de région '" + currentRegionCode
+ + "' n'est pas un code valide");
+ }
+ TerrestrialDivision observationUnit = uos.get(observationUnitCode);
+ if (observationUnit == null) {
+ throw new IllegalArgumentException("Il n'y a pas d'unité '" + observationUnitCode
+ + "' dans la région '" + currentRegionCode + "'");
+ }
+ return observationUnit;
+ }
+
+ @Override
+ public String format(TerrestrialDivision terrestrialDivision) {
+ return terrestrialDivision.getObservationUnitCode();
+ }
+
+ public void setCurrentRegionCode(String regionCode) {
+ currentRegionCode = regionCode;
+ }
+ }
+
+ static class RegionCodeSetter implements ValueGetterSetter<SampleRow, String> {
+
+ protected ObservationUnitParserFormatter observationUnitSetter;
+
+ RegionCodeSetter(ObservationUnitParserFormatter observationUnitSetter) {
+ this.observationUnitSetter = observationUnitSetter;
+ }
+
+ @Override
+ public String get(SampleRow sampleRow) throws Exception {
+ String regionCode;
+ if (sampleRow.getObservationUnit() == null) {
+ regionCode = "";
+ } else {
+ regionCode = sampleRow.getObservationUnit().getRegionIfremerCode();
+ }
+ return regionCode;
+ }
+
+ @Override
+ public void set(SampleRow sampleRow, String regionCode) throws Exception {
+ observationUnitSetter.setCurrentRegionCode(regionCode);
+ }
+ }
+
+ /** region ifremer code -> UO code -> TerrestrialDivision */
+ protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits;
+
+ protected ModelBuilder<SampleRow> modelBuilder;
+
+ /** Constructor used for export */
+ public SamplingPlanImportExportModel() {
+ buildModel();
+ }
+
+ /** Constructor used for import */
+ public SamplingPlanImportExportModel(List<TerrestrialDivision> observationUnits) {
+ indexObservationUnits(observationUnits);
+ buildModel();
+ }
+
+ @Override
+ public void pushCsvHeaderNames(List<String> headerNames) {
+ // nothing to do
+ }
+
+ @Override
+ public char getSeparator() {
+ return ';';
+ }
+
+ @Override
+ public SampleRow newEmptyInstance() {
+ SampleRow newSampleRow = new SampleRowImpl();
+ newSampleRow.setObsProgram(ObsProgram.OBSDEB);
+ return newSampleRow;
+ }
+
+ protected void indexObservationUnits(List<TerrestrialDivision> observationUnits) {
+ indexedObservationUnits = new HashMap<String, Map<String, TerrestrialDivision>>();
+ for (TerrestrialDivision terrestrialDivision : observationUnits) {
+ String regionCode = terrestrialDivision.getRegionIfremerCode();
+ Map<String, TerrestrialDivision> unitCodesToDivision = indexedObservationUnits.get(regionCode);
+ if (unitCodesToDivision == null) {
+ unitCodesToDivision = new HashMap<String, TerrestrialDivision>();
+ }
+ unitCodesToDivision.put(terrestrialDivision.getObservationUnitCode(), terrestrialDivision);
+ indexedObservationUnits.put(regionCode, unitCodesToDivision);
+ }
+
+ if (log.isDebugEnabled()) {
+ for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : indexedObservationUnits.entrySet()) {
+ log.debug(entry.getKey());
+ for (Map.Entry<String, TerrestrialDivision> unitCodesToDivision : entry.getValue().entrySet()) {
+ log.debug(" -> " + unitCodesToDivision.getKey() + " -> " + unitCodesToDivision.getValue());
+ }
+ }
+ }
+ }
+
+ protected void buildModel() {
+ modelBuilder = new ModelBuilder<SampleRow>();
+ modelBuilder.newColumnForImportExport("PLAN_CODE", SampleRow.PROPERTY_CODE);
+ modelBuilder.newColumnForImportExport("OBSERVATEUR_COD", SampleRow.PROPERTY_GROUP_NAME);
+ modelBuilder.newColumnForImportExport("OBSERVATION_DATE", SampleRow.PROPERTY_DAY, Common.DAY);
+ ObservationUnitParserFormatter observationUnitParser = new ObservationUnitParserFormatter(indexedObservationUnits);
+ ValueGetterSetter<SampleRow, String> regionCodeGetterSetter = new RegionCodeSetter(observationUnitParser);
+ modelBuilder.newColumnForImportExport("REGION_IFREMER_COD", regionCodeGetterSetter);
+ modelBuilder.newColumnForImportExport("UNITE_OBSERVATION_COD", SampleRow.PROPERTY_OBSERVATION_UNIT, observationUnitParser);
+ }
+
+ @Override
+ public Collection<ImportableColumn> getColumnsForImport() {
+ Collection<ImportableColumn> columns = modelBuilder.getColumnsForImport();
+ return columns;
+ }
+
+ @Override
+ public Collection<ExportableColumn> getColumnsForExport() {
+ Collection<ExportableColumn> columns = modelBuilder.getColumnsForExport();
+ return columns;
+ }
+}
Deleted: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -1,157 +0,0 @@
-/*
- * #%L
- * Wao :: Business
- * %%
- * Copyright (C) 2009 - 2011 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package fr.ifremer.wao.io.csv2.models;
-
-import fr.ifremer.wao.bean.ObsProgram;
-import fr.ifremer.wao.entity.SampleRow;
-import fr.ifremer.wao.entity.SampleRowImpl;
-import fr.ifremer.wao.entity.TerrestrialDivision;
-import fr.ifremer.wao.io.csv2.Common;
-import fr.ifremer.wao.io.csv2.ImportModel;
-import fr.ifremer.wao.io.csv2.ImportableColumn;
-import fr.ifremer.wao.io.csv2.ImportableColumnImpl;
-import fr.ifremer.wao.io.csv2.ValueParser;
-import fr.ifremer.wao.io.csv2.ValueSetter;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.text.ParseException;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- *
- */
-public class SamplingPlanImportModel implements ImportModel<SampleRow> {
-
-
- private static final Logger log =
- LoggerFactory.getLogger(SamplingPlanImportModel.class);
-
- static class ObservationUnitParser implements ValueParser<TerrestrialDivision> {
-
- protected Map<String, Map<String, TerrestrialDivision>> observationUnits;
-
- protected String currentRegionCode;
-
- ObservationUnitParser(Map<String, Map<String, TerrestrialDivision>> observationUnits) {
- this.observationUnits = observationUnits;
- }
-
- @Override
- public TerrestrialDivision parse(String observationUnitCode) throws ParseException {
- Map<String, TerrestrialDivision> uos = observationUnits.get(currentRegionCode);
- if (uos == null) {
- throw new IllegalArgumentException("Le code de région '" + currentRegionCode + "' n'est pas un code valide");
- }
- TerrestrialDivision observationUnit = uos.get(observationUnitCode);
- if (observationUnit == null) {
- throw new IllegalArgumentException("Il n'y a pas d'unité '" + observationUnitCode + "' dans cette région");
- }
- return observationUnit;
- }
-
- public void setCurrentRegionCode(String regionCode) {
- currentRegionCode = regionCode;
- }
- }
-
- static class RegionCodeSetter implements ValueSetter<SampleRow, String> {
-
- protected ObservationUnitParser observationUnitSetter;
-
- RegionCodeSetter(ObservationUnitParser observationUnitSetter) {
- this.observationUnitSetter = observationUnitSetter;
- }
-
- @Override
- public void set(SampleRow sampleRow, String regionCode) throws Exception {
- observationUnitSetter.setCurrentRegionCode(regionCode);
- }
- }
-
- /** region ifremer code -> UO code -> TerrestrialDivision */
- protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits;
-
- public SamplingPlanImportModel(List<TerrestrialDivision> observationUnits) {
-
- indexedObservationUnits = new HashMap<String, Map<String, TerrestrialDivision>>();
- for (TerrestrialDivision terrestrialDivision : observationUnits) {
- String regionCode = terrestrialDivision.getRegionIfremerCode();
- Map<String, TerrestrialDivision> unitCodesToDivision = indexedObservationUnits.get(regionCode);
- if (unitCodesToDivision == null) {
- unitCodesToDivision = new HashMap<String, TerrestrialDivision>();
- }
- unitCodesToDivision.put(terrestrialDivision.getObservationUnitCode(), terrestrialDivision);
- indexedObservationUnits.put(regionCode, unitCodesToDivision);
- }
-
- if (log.isDebugEnabled()) {
- for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : indexedObservationUnits.entrySet()) {
- log.debug(entry.getKey());
- for (Map.Entry<String, TerrestrialDivision> unitCodesToDivision : entry.getValue().entrySet()) {
- log.debug(" -> " + unitCodesToDivision.getKey() + " -> " + unitCodesToDivision.getValue());
- }
- }
- }
- }
-
- @Override
- public void pushCsvHeaderNames(List<String> headerNames) {
- // nothing to do
- }
-
- @Override
- public SampleRow newEmptyInstance() {
- SampleRow newSampleRow = new SampleRowImpl();
- newSampleRow.setObsProgram(ObsProgram.OBSDEB);
- return newSampleRow;
- }
-
- @Override
- public Collection<ImportableColumn> getAllColumns() {
- List<ImportableColumn> columns = new LinkedList<ImportableColumn>();
- columns.add(ImportableColumnImpl.newMandatoryColumn(
- "PLAN_CODE",
- new ValueParser<String>() {
- /** null if string is empty */
- @Override
- public String parse(String code) {
- if (StringUtils.isEmpty(code)) {
- code = null;
- }
- return code;
- }
- },
- SampleRow.PROPERTY_CODE));
- columns.add(ImportableColumnImpl.newMandatoryColumn("OBSERVATEUR_COD", SampleRow.PROPERTY_GROUP_NAME));
- columns.add(ImportableColumnImpl.newMandatoryColumn("OBSERVATION_DATE", Common.DAY_PARSER, SampleRow.PROPERTY_DAY));
- ObservationUnitParser observationUnitParser = new ObservationUnitParser(indexedObservationUnits);
- ValueSetter<SampleRow, String> regionCodeSetter = new RegionCodeSetter(observationUnitParser);
- columns.add(ImportableColumnImpl.<SampleRow> newMandatoryColumn("REGION_IFREMER_COD", regionCodeSetter));
- columns.add(ImportableColumnImpl.newMandatoryColumn("UNITE_OBSERVATION_COD", observationUnitParser, SampleRow.PROPERTY_OBSERVATION_UNIT));
- return columns;
- }
-}
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-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -5,12 +5,10 @@
import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.io.csv2.ImportModel;
import fr.ifremer.wao.io.csv2.ImportableColumn;
-import fr.ifremer.wao.io.csv2.ImportableColumnImpl;
+import fr.ifremer.wao.io.csv2.ModelBuilder;
import fr.ifremer.wao.io.csv2.ValueParser;
import org.apache.commons.lang.StringUtils;
-import org.nuiton.util.StringUtil;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -35,6 +33,11 @@
}
@Override
+ public char getSeparator() {
+ return ';';
+ }
+
+ @Override
public void pushCsvHeaderNames(List<String> headerNames) {
// nothing to do
}
@@ -45,10 +48,10 @@
}
@Override
- public Collection<ImportableColumn> getAllColumns() {
- List<ImportableColumn> columns = new ArrayList<ImportableColumn>();
+ public Collection<ImportableColumn> getColumnsForImport() {
+ ModelBuilder<TerrestrialDivision> modelBuilder = new ModelBuilder<TerrestrialDivision>();
- columns.add(ImportableColumnImpl.newMandatoryColumn(
+ modelBuilder.newMandatoryColumn(
"ID_STRATE",
new ValueParser<String>() {
/** null if string is empty */
@@ -60,28 +63,28 @@
return code;
}
},
- TerrestrialDivision.PROPERTY_CODE));
- columns.add(ImportableColumnImpl.newMandatoryColumn(
+ TerrestrialDivision.PROPERTY_CODE);
+ modelBuilder.newMandatoryColumn(
"REGION_IFREMER_COD",
new ValueParser<String>() {
/** validate region code */
@Override
public String parse(String regionCode) {
- if ( ! regionCodes.contains(regionCode)) {
+ if (!regionCodes.contains(regionCode)) {
throw new IllegalArgumentException("Le code '" + regionCode + "' n'est pas un code de région valide");
}
return regionCode;
}
},
- TerrestrialDivision.PROPERTY_REGION_IFREMER_CODE));
- columns.add(ImportableColumnImpl.newIgnoredColumn("REGION_IFREMER_LIB"));
- columns.add(ImportableColumnImpl.newMandatoryColumn("ZONE_COMPETENCE_COD", TerrestrialDivision.PROPERTY_SKILL_ZONE_CODE));
- columns.add(ImportableColumnImpl.newMandatoryColumn("ZONE_COMPETENCE_LIB", TerrestrialDivision.PROPERTY_SKILL_ZONE_NAME));
- columns.add(ImportableColumnImpl.newMandatoryColumn("SOUS_POPULATION_COD", TerrestrialDivision.PROPERTY_SUB_POPULATION_CODE));
- columns.add(ImportableColumnImpl.newMandatoryColumn("SOUS_POPULATION_LIB", TerrestrialDivision.PROPERTY_SUB_POPULATION_NAME));
- columns.add(ImportableColumnImpl.newMandatoryColumn("UNITE_OBSERVATION_COD", TerrestrialDivision.PROPERTY_OBSERVATION_UNIT_CODE));
- columns.add(ImportableColumnImpl.newMandatoryColumn("UNITE_OBSERVATION_LIB", TerrestrialDivision.PROPERTY_OBSERVATION_UNIT_NAME));
- columns.add(ImportableColumnImpl.newMandatoryColumn(
+ TerrestrialDivision.PROPERTY_REGION_IFREMER_CODE);
+ modelBuilder.newIgnoredColumn("REGION_IFREMER_LIB");
+ modelBuilder.newMandatoryColumn("ZONE_COMPETENCE_COD", TerrestrialDivision.PROPERTY_SKILL_ZONE_CODE);
+ modelBuilder.newMandatoryColumn("ZONE_COMPETENCE_LIB", TerrestrialDivision.PROPERTY_SKILL_ZONE_NAME);
+ modelBuilder.newMandatoryColumn("SOUS_POPULATION_COD", TerrestrialDivision.PROPERTY_SUB_POPULATION_CODE);
+ modelBuilder.newMandatoryColumn("SOUS_POPULATION_LIB", TerrestrialDivision.PROPERTY_SUB_POPULATION_NAME);
+ modelBuilder.newMandatoryColumn("UNITE_OBSERVATION_COD", TerrestrialDivision.PROPERTY_OBSERVATION_UNIT_CODE);
+ modelBuilder.newMandatoryColumn("UNITE_OBSERVATION_LIB", TerrestrialDivision.PROPERTY_OBSERVATION_UNIT_NAME);
+ modelBuilder.newMandatoryColumn(
"LIEU_OBSERVATION_COD",
// the value given is a code of a port, let's find and associate
new ValueParser<TerrestrialLocation>() {
@@ -94,11 +97,11 @@
return port;
}
},
- TerrestrialDivision.PROPERTY_PORT));
- columns.add(ImportableColumnImpl.newIgnoredColumn("LIEU_OBSERVATION_LIB"));
- columns.add(ImportableColumnImpl.newIgnoredColumn("DATE_DEBUT"));
- columns.add(ImportableColumnImpl.newIgnoredColumn("DATE_FIN"));
+ TerrestrialDivision.PROPERTY_PORT);
+ modelBuilder.newIgnoredColumn("LIEU_OBSERVATION_LIB");
+ modelBuilder.newIgnoredColumn("DATE_DEBUT");
+ modelBuilder.newIgnoredColumn("DATE_FIN");
- return columns;
+ return modelBuilder.getColumnsForImport();
}
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialLocationImportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialLocationImportModel.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialLocationImportModel.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -21,22 +21,27 @@
package fr.ifremer.wao.io.csv2.models;
import fr.ifremer.wao.bean.LocationType;
+import fr.ifremer.wao.entity.TerrestrialDivision;
import fr.ifremer.wao.entity.TerrestrialLocation;
import fr.ifremer.wao.entity.TerrestrialLocationImpl;
-import fr.ifremer.wao.io.csv2.Common;
+import fr.ifremer.wao.io.csv2.Column;
import fr.ifremer.wao.io.csv2.ImportModel;
import fr.ifremer.wao.io.csv2.ImportableColumn;
-import fr.ifremer.wao.io.csv2.ImportableColumnImpl;
+import fr.ifremer.wao.io.csv2.ModelBuilder;
import fr.ifremer.wao.io.csv2.ValueParser;
import fr.ifremer.wao.io.csv2.ValueSetter;
import org.apache.commons.lang.StringUtils;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
public class TerrestrialLocationImportModel implements ImportModel<TerrestrialLocation> {
- protected List<ImportableColumn> allHeaders;
+ @Override
+ public char getSeparator() {
+ return ';';
+ }
@Override
public void pushCsvHeaderNames(List<String> headerNames) {
@@ -66,78 +71,79 @@
return name;
}
- public TerrestrialLocationImportModel() {
+ @Override
+ public Collection<ImportableColumn> getColumnsForImport() {
- allHeaders = new ArrayList<ImportableColumn>();
+ ModelBuilder<TerrestrialLocation> modelBuilder = new ModelBuilder<TerrestrialLocation>();
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("TLIEU_COD",
- new ValueParser<LocationType>() {
- @Override
- public LocationType parse(String value) {
- if ("6".equals(value)) {
- return LocationType.PORT;
- } else if ("7".equals(value)) {
- return LocationType.AUCTION;
+ modelBuilder.newMandatoryColumn("TLIEU_COD",
+ new ValueParser<LocationType>() {
+ @Override
+ public LocationType parse(String value) {
+ if ("6".equals(value)) {
+ return LocationType.PORT;
+ } else if ("7".equals(value)) {
+ return LocationType.AUCTION;
+ }
+ throw new IllegalArgumentException(value + " is not a good location code");
}
- throw new IllegalArgumentException(value + " is not a good location code");
+ },
+ new ValueSetter<TerrestrialLocation, LocationType>() {
+ @Override
+ public void set(TerrestrialLocation terrestrialLocation, LocationType value) {
+ terrestrialLocation.setLocationType(value);
+ }
}
- },
- new ValueSetter<TerrestrialLocation, LocationType>() {
- @Override
- public void set(TerrestrialLocation terrestrialLocation, LocationType value) {
- terrestrialLocation.setLocationType(value);
+ );
+ modelBuilder.newIgnoredColumn("TLIEU_LIB");
+ modelBuilder.newMandatoryColumn("LIEU_COD", TerrestrialLocation.PROPERTY_CODE);
+ modelBuilder.newMandatoryColumn("LIEU_LIB", TerrestrialLocation.PROPERTY_NAME);
+ modelBuilder.newMandatoryColumn("Port",
+ new ValueSetter<TerrestrialLocation, String>() {
+ @Override
+ public void set(TerrestrialLocation terrestrialLocation, String value) {
+ terrestrialLocation.setPortCode(getCode(value));
+ terrestrialLocation.setPortName(getName(value));
+ }
}
- }
- ));
- allHeaders.add(ImportableColumnImpl.newIgnoredColumn("TLIEU_LIB"));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("LIEU_COD", TerrestrialLocation.PROPERTY_CODE));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("LIEU_LIB", TerrestrialLocation.PROPERTY_NAME));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Port",
- new ValueSetter<TerrestrialLocation, String>() {
- @Override
- public void set(TerrestrialLocation terrestrialLocation, String value) {
- terrestrialLocation.setPortCode(getCode(value));
- terrestrialLocation.setPortName(getName(value));
+ );
+ modelBuilder.newMandatoryColumn("Quartier maritime",
+ new ValueSetter<TerrestrialLocation, String>() {
+ @Override
+ public void set(TerrestrialLocation terrestrialLocation, String value) {
+ terrestrialLocation.setDistrictCode(getCode(value));
+ terrestrialLocation.setDistrictName(getName(value));
+ }
}
- }
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Quartier maritime",
- new ValueSetter<TerrestrialLocation, String>() {
- @Override
- public void set(TerrestrialLocation terrestrialLocation, String value) {
- terrestrialLocation.setDistrictCode(getCode(value));
- terrestrialLocation.setDistrictName(getName(value));
+ );
+ modelBuilder.newMandatoryColumn("Département INSEE",
+ new ValueSetter<TerrestrialLocation, String>() {
+ @Override
+ public void set(TerrestrialLocation terrestrialLocation, String value) {
+ terrestrialLocation.setDepartmentCode(getCode(value));
+ terrestrialLocation.setDepartmentName(getName(value));
+ }
}
- }
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Département INSEE",
- new ValueSetter<TerrestrialLocation, String>() {
- @Override
- public void set(TerrestrialLocation terrestrialLocation, String value) {
- terrestrialLocation.setDepartmentCode(getCode(value));
- terrestrialLocation.setDepartmentName(getName(value));
+ );
+ modelBuilder.newMandatoryColumn("Sous-région IFREMER",
+ new ValueSetter<TerrestrialLocation, String>() {
+ @Override
+ public void set(TerrestrialLocation terrestrialLocation, String value) {
+ terrestrialLocation.setSubRegionIfremerCode(getCode(value));
+ terrestrialLocation.setSubRegionIfremerName(getName(value));
+ }
}
- }
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Sous-région IFREMER",
- new ValueSetter<TerrestrialLocation, String>() {
- @Override
- public void set(TerrestrialLocation terrestrialLocation, String value) {
- terrestrialLocation.setSubRegionIfremerCode(getCode(value));
- terrestrialLocation.setSubRegionIfremerName(getName(value));
+ );
+ modelBuilder.newMandatoryColumn("Région Ifremer",
+ new ValueSetter<TerrestrialLocation, String>() {
+ @Override
+ public void set(TerrestrialLocation terrestrialLocation, String value) {
+ terrestrialLocation.setRegionIfremerCode(getCode(value));
+ terrestrialLocation.setRegionIfremerName(getName(value));
+ }
}
- }
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Région Ifremer",
- new ValueSetter<TerrestrialLocation, String>() {
- @Override
- public void set(TerrestrialLocation terrestrialLocation, String value) {
- terrestrialLocation.setRegionIfremerCode(getCode(value));
- terrestrialLocation.setRegionIfremerName(getName(value));
- }
- }
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Région INSEE",
+ );
+ modelBuilder.newMandatoryColumn("Région INSEE",
new ValueSetter<TerrestrialLocation, String>() {
@Override
public void set(TerrestrialLocation terrestrialLocation, String value) {
@@ -145,8 +151,8 @@
terrestrialLocation.setRegionName(getName(value));
}
}
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Façade maritime",
+ );
+ modelBuilder.newMandatoryColumn("Façade maritime",
new ValueSetter<TerrestrialLocation, String>() {
@Override
public void set(TerrestrialLocation terrestrialLocation, String value) {
@@ -154,8 +160,8 @@
terrestrialLocation.setSeaboardName(getName(value));
}
}
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Type de Région",
+ );
+ modelBuilder.newMandatoryColumn("Type de Région",
new ValueSetter<TerrestrialLocation, String>() {
@Override
public void set(TerrestrialLocation terrestrialLocation, String value) {
@@ -163,8 +169,8 @@
terrestrialLocation.setRegionTypeName(getName(value));
}
}
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Littoral FAO",
+ );
+ modelBuilder.newMandatoryColumn("Littoral FAO",
new ValueSetter<TerrestrialLocation, String>() {
@Override
public void set(TerrestrialLocation terrestrialLocation, String value) {
@@ -172,20 +178,16 @@
terrestrialLocation.setCoastFAOName(getName(value));
}
}
- ));
- allHeaders.add(ImportableColumnImpl.newMandatoryColumn("PAYS",
- new ValueSetter<TerrestrialLocation, String>() {
- @Override
- public void set(TerrestrialLocation terrestrialLocation, String value) {
- terrestrialLocation.setCountryCode(getCode(value));
- terrestrialLocation.setCountryName(getName(value));
+ );
+ modelBuilder.newMandatoryColumn("PAYS",
+ new ValueSetter<TerrestrialLocation, String>() {
+ @Override
+ public void set(TerrestrialLocation terrestrialLocation, String value) {
+ terrestrialLocation.setCountryCode(getCode(value));
+ terrestrialLocation.setCountryName(getName(value));
+ }
}
- }
- ));
+ );
+ return modelBuilder.getColumnsForImport();
}
-
- @Override
- public List<ImportableColumn> getAllColumns() {
- return allHeaders;
- }
}
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-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -77,8 +77,10 @@
import fr.ifremer.wao.io.csv.SamplingExport;
import fr.ifremer.wao.io.csv.WaoCsvHeader.FISHING_ZONE;
import fr.ifremer.wao.io.csv.WaoCsvHeader.SAMPLING;
+import fr.ifremer.wao.io.csv2.Export;
+import fr.ifremer.wao.io.csv2.ExportModel;
import fr.ifremer.wao.io.csv2.Import;
-import fr.ifremer.wao.io.csv2.models.SamplingPlanImportModel;
+import fr.ifremer.wao.io.csv2.models.SamplingPlanImportExportModel;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
@@ -915,146 +917,128 @@
}
}
-// /**
-// * Prepare the Binder for Profession copy. This method is called in
-// * service constructor. The copy from two Profession will be available
-// * anywhere using BinderProvider.get(Profession.class).copy(source, dest);
-// *
-// * @see org.nuiton.util.beans.Binder
-// * @see org.nuiton.util.beans.BinderProvider
-// */
-// protected void prepareBinderForProfession() {
-// BinderBuilder builder = new BinderBuilder();
-// builder.createBinderModel(Profession.class).addSimpleProperties(
-// Profession.CODE_DCF5,
-// Profession.LIBELLE,
-// Profession.MESH_SIZE,
-// Profession.OTHER,
-// Profession.SIZE,
-// Profession.SPECIES);
-// BinderProvider.registerBinder(builder);
-// }
-
@Override
public InputStream executeExportSamplingPlanCsv(TopiaContext transaction,
List<Object> errorArgs, ConnectedUser user, SamplingFilter filter)
throws Exception {
- CsvWriter writer = null;
- try {
- DateFormat dateFormat = SAMPLING.getDateFormat();
-// errorArgs.add(dateFormat.format(period.getFromDate()));
-// errorArgs.add(dateFormat.format(period.getThruDate()));
+ SampleRowDAO dao = WaoDAOHelper.getSampleRowDAO(transaction);
+ WaoQueryBuilder builder = context.newQueryBuilder();
+ WaoQueryHelper.SampleRowProperty sampleRowProperty =
+ builder.initializeForSampleRow(false);
- File file = File.createTempFile("wao-samplingPlan-", ".csv");
- file.deleteOnExit();
+ TopiaQuery query = builder.applySamplingFilter(filter).
+ addOrder(sampleRowProperty.code());
- FileOutputStream output = new FileOutputStream(file);
- writer = new CsvWriter(output, ',', context.getCsvCharset());
+ List<SampleRow> rows = dao.findAllByQuery(query);
- PeriodDates period = filter.getPeriod();
- period.setPattern(SAMPLING.defaultDatePattern());
- List<String> monthHeaders = period.getFormatedMonths();
+ InputStream csv;
- SamplingExport export =
- new SamplingExport(writer, user, monthHeaders);
+ if (ObsProgram.OBSDEB.equals(filter.getObsProgram())) {
- export.writeHeaders();
+ ExportModel<SampleRow> exportModel = new SamplingPlanImportExportModel();
+ Export<SampleRow> export = new Export(exportModel, rows);
+ csv = export.startExport();
- // Get sampleRows from database filtered
- SampleRowDAO dao = WaoDAOHelper.getSampleRowDAO(transaction);
-// String sampleRowAlias = "S";
-// String sampleRowCodeProperty =
-// TopiaQuery.getProperty(sampleRowAlias, SampleRow.CODE);
-// TopiaQuery query = dao.createQuery(sampleRowAlias);
-// filter.prepareQueryForSampling(query, sampleRowAlias);
-//
-// query.addOrder(sampleRowCodeProperty);
+ } else {
- WaoQueryBuilder builder = context.newQueryBuilder();
- WaoQueryHelper.SampleRowProperty sampleRowProperty =
- builder.initializeForSampleRow(false);
+ CsvWriter writer = null;
+ try {
- TopiaQuery query = builder.applySamplingFilter(filter).
- addOrder(sampleRowProperty.code());
+ DateFormat dateFormat = SAMPLING.getDateFormat();
- List<SampleRow> rows = dao.findAllByQuery(query);
+ File file = File.createTempFile("wao-samplingPlan-", ".csv");
+ file.deleteOnExit();
- NumberFormat numberFormat = SAMPLING.getNumberFormat();
+ FileOutputStream output = new FileOutputStream(file);
+ writer = new CsvWriter(output, ',', context.getCsvCharset());
- for (SampleRow row : rows) {
- export.newRecord();
+ PeriodDates period = filter.getPeriod();
+ period.setPattern(SAMPLING.defaultDatePattern());
+ List<String> monthHeaders = period.getFormatedMonths();
- if (log.isDebugEnabled()) {
- log.debug("add sampleRow : " + row.getCode());
- }
-
- export.record(SAMPLING.PLAN_CODE, row.getCode());
- Company company = row.getCompany();
+ SamplingExport export =
+ new SamplingExport(writer, user, monthHeaders);
- // Evo #2227 : Guest users don't have access to companyName
- if (company != null && !user.isGuest()) {
- export.record(SAMPLING.SOCIETE_NOM, company.getName());
- }
+ export.writeHeaders();
- // Profession can't be null
- Profession profession = row.getProfession();
+ NumberFormat numberFormat = SAMPLING.getNumberFormat();
- // export.record(SAMPLING.METIER_CODE_DCF5, profession.getCodeDCF5());
- export.record(SAMPLING.METIER_CODE_DCF5, StringUtil.join(row.getDCF5Code(), " et ", true));
+ for (SampleRow row : rows) {
+ export.newRecord();
- export.record(SAMPLING.METIER_MAILLAGE, profession.getMeshSize());
- export.record(SAMPLING.METIER_TAILLE, profession.getSize());
- export.record(SAMPLING.METIER_AUTRE, profession.getOther());
- export.record(SAMPLING.METIER_LIBELLE, profession.getLibelle());
- export.record(SAMPLING.METIER_ESPECES, profession.getSpecies());
+ if (log.isDebugEnabled()) {
+ log.debug("add sampleRow : " + row.getCode());
+ }
- export.record(SAMPLING.PROGRAMME_CODE, row.getProgramName());
- export.record(SAMPLING.PROGRAMME_DEBUT, dateFormat.format(row.getPeriodBegin()));
- export.record(SAMPLING.PROGRAMME_FIN, dateFormat.format(row.getPeriodEnd()));
+ export.record(SAMPLING.PLAN_CODE, row.getCode());
+ Company company = row.getCompany();
- export.record(FISHING_ZONE.PECHE_FACADE, row.getFacade());
- export.record(FISHING_ZONE.PECHE_ZONE, row.getSectors());
- export.record(SAMPLING.PECHE_AUTRE, row.getFishingZonesInfos());
+ // Evo #2227 : Guest users don't have access to companyName
+ if (company != null && !user.isGuest()) {
+ export.record(SAMPLING.SOCIETE_NOM, company.getName());
+ }
- String divisions = "";
- String separator = FISHING_ZONE.getDistrictCodeSeparator();
- for (FishingZone zone : row.getFishingZone()) {
- divisions += separator + zone.getDistrictCode();
- }
+ // Profession can't be null
+ Profession profession = row.getProfession();
- // There is at least one district in row, so no problem with substring
- export.record(FISHING_ZONE.PECHE_DIVISION, divisions.substring(separator.length()));
+ // export.record(SAMPLING.METIER_CODE_DCF5, profession.getCodeDCF5());
+ export.record(SAMPLING.METIER_CODE_DCF5, StringUtil.join(row.getDCF5Code(), " et ", true));
- export.record(SAMPLING.PLAN_NB_OBSERV, numberFormat.format(row.getNbObservants()));
- export.record(SAMPLING.PLAN_DUREE_MOY, numberFormat.format(row.getAverageTideTime()));
- if (row.getComment() != null) {
- export.record(SAMPLING.PLAN_COMMENT, String.valueOf(row.getComment()));
- }
- export.record(SAMPLING.PLAN_STRATEGIE, row.getSamplingStrategy().name());
- if (row.getTerrestrialLocation() != null) {
- if (row.getTerrestrialLocation().getDistrictCode() != null) {
- export.record(SAMPLING.PLAN_LIEU_CODE, row.getTerrestrialLocation().getDistrictCode());
- String districtName = row.getTerrestrialLocation().getDistrictName();
- export.record(SAMPLING.PLAN_LIEU_NOM, districtName == null ? "Autre" : districtName);
+ export.record(SAMPLING.METIER_MAILLAGE, profession.getMeshSize());
+ export.record(SAMPLING.METIER_TAILLE, profession.getSize());
+ export.record(SAMPLING.METIER_AUTRE, profession.getOther());
+ export.record(SAMPLING.METIER_LIBELLE, profession.getLibelle());
+ export.record(SAMPLING.METIER_ESPECES, profession.getSpecies());
+
+ export.record(SAMPLING.PROGRAMME_CODE, row.getProgramName());
+ export.record(SAMPLING.PROGRAMME_DEBUT, dateFormat.format(row.getPeriodBegin()));
+ export.record(SAMPLING.PROGRAMME_FIN, dateFormat.format(row.getPeriodEnd()));
+
+ export.record(FISHING_ZONE.PECHE_FACADE, row.getFacade());
+ export.record(FISHING_ZONE.PECHE_ZONE, row.getSectors());
+ export.record(SAMPLING.PECHE_AUTRE, row.getFishingZonesInfos());
+
+ String divisions = "";
+ String separator = FISHING_ZONE.getDistrictCodeSeparator();
+ for (FishingZone zone : row.getFishingZone()) {
+ divisions += separator + zone.getDistrictCode();
}
+
+ // There is at least one district in row, so no problem with substring
+ export.record(FISHING_ZONE.PECHE_DIVISION, divisions.substring(separator.length()));
+
+ export.record(SAMPLING.PLAN_NB_OBSERV, numberFormat.format(row.getNbObservants()));
+ export.record(SAMPLING.PLAN_DUREE_MOY, numberFormat.format(row.getAverageTideTime()));
+ if (row.getComment() != null) {
+ export.record(SAMPLING.PLAN_COMMENT, String.valueOf(row.getComment()));
+ }
+ export.record(SAMPLING.PLAN_STRATEGIE, row.getSamplingStrategy().name());
+ if (row.getTerrestrialLocation() != null) {
+ if (row.getTerrestrialLocation().getDistrictCode() != null) {
+ export.record(SAMPLING.PLAN_LIEU_CODE, row.getTerrestrialLocation().getDistrictCode());
+ String districtName = row.getTerrestrialLocation().getDistrictName();
+ export.record(SAMPLING.PLAN_LIEU_NOM, districtName == null ? "Autre" : districtName);
+ }
+ }
+
+ export.recordMonths(row);
+
+ export.writeRecord();
}
- export.recordMonths(row);
+ csv = new FileInputStream(file);
- export.writeRecord();
+ } catch (Exception eee) {
+ throw eee;
+ } finally {
+ if (writer != null) {
+ writer.close();
+ }
}
-
- return new FileInputStream(file);
-
- } catch (Exception eee) {
- throw eee;
- } finally {
- if (writer != null) {
- writer.close();
- }
}
-
+
+ return csv;
}
@Override
@@ -1074,7 +1058,7 @@
throw new IllegalStateException("Le référentiel de stratification n'a pas été importé");
}
- SamplingPlanImportModel samplingPlanImportModel = new SamplingPlanImportModel(observationUnits);
+ SamplingPlanImportExportModel samplingPlanImportModel = new SamplingPlanImportExportModel(observationUnits);
try {
Import<SampleRow> samplingPlanImport = new Import<SampleRow>(samplingPlanImportModel, input);
@@ -1256,7 +1240,7 @@
* Update a SampleRow from CSV File from importSamplingPlanCsv method.
* Program must be set to get beginDate and endDate for getting correct months.
* SampleMonth will be created corresponding to program period.
- * Careful : fixed columns set to 16 and months columns start to 13.
+ * Careful : fixed columnsForImport set to 16 and months columnsForImport start to 13.
* The case of importing a previously exported file is Ok (the default
* values is check from SAMPLING header).
* Updatable fields : fishingZoneInfos, nbObservants, averageTideTime,
@@ -1337,13 +1321,13 @@
- // 16 fixed columns : 13 before months and 4 after
+ // 16 fixed columnsForImport : 13 before months and 4 after
int nbFixedColumns = 17;
// Months begin at 14th column
int firstMonthColumnId = 13;
int nbTotalColumns = reader.getColumnCount();
- // Case for importing CSV after exporting from appli : more columns
+ // Case for importing CSV after exporting from appli : more columnsForImport
// are exported.
// Check if the previous column (12) is the lastHeader
// defined in SAMPLING
Added: trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ExportTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ExportTest.java (rev 0)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ExportTest.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -0,0 +1,85 @@
+package fr.ifremer.wao.io.csv2;
+
+import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.entity.SampleRow;
+import fr.ifremer.wao.entity.SampleRowImpl;
+import fr.ifremer.wao.entity.TerrestrialDivision;
+import fr.ifremer.wao.entity.TerrestrialDivisionImpl;
+import fr.ifremer.wao.io.csv2.models.SamplingPlanImportExportModel;
+import org.apache.commons.io.IOUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.util.DateUtil;
+import org.nuiton.util.StringUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.LinkedList;
+
+public class ExportTest {
+
+ private static final Logger log = LoggerFactory.getLogger(ExportTest.class);
+
+ protected Collection<SampleRow> sampleRows;
+
+ @Before
+ public void fillSampleRows() {
+ TerrestrialDivision observationUnit = new TerrestrialDivisionImpl();
+ observationUnit.setObservationUnitCode("UO10");
+ observationUnit.setRegionIfremerCode("MA");
+ observationUnit.setObservationUnitName("Côte est");
+
+ SampleRow row1 = new SampleRowImpl();
+ row1.setObsProgram(ObsProgram.OBSDEB);
+ row1.setCode("1");
+ row1.setDay(DateUtil.createDate(11, 3, 2011));
+ row1.setGroupName("OBS1");
+ row1.setObservationUnit(observationUnit);
+
+ SampleRow row2 = new SampleRowImpl();
+ row2.setObsProgram(ObsProgram.OBSDEB);
+ row2.setCode("2");
+ row2.setDay(DateUtil.createDate(12, 3, 2011));
+ row2.setGroupName("OBS2");
+ row2.setObservationUnit(observationUnit);
+
+ sampleRows = new LinkedList<SampleRow>();
+ sampleRows.add(row1);
+ sampleRows.add(row2);
+ }
+
+ @Test
+ public void testExport() throws Exception {
+ ExportModel<SampleRow> exportModel = new SamplingPlanImportExportModel();
+ Export<SampleRow> export = new Export(exportModel, sampleRows);
+ InputStream input = null;
+
+ try {
+ input = export.startExport();
+
+ String csv = IOUtils.toString(input);
+
+ if (log.isDebugEnabled()) {
+ log.debug("csv file is : \n" + csv);
+ }
+
+ // check the no line is missing
+ String[] lines = StringUtil.split(csv, "\n");
+ int expectedLineNumber = sampleRows.size() + 1; // +1 for header line
+ int actualLineNumber = lines.length;
+ Assert.assertEquals(expectedLineNumber, actualLineNumber);
+
+ // check that each lines has 5 columns
+ for (String line : lines) {
+ String[] columns = StringUtil.split(line, ";");
+ Assert.assertEquals(5, columns.length);
+ }
+ } finally {
+ IOUtils.closeQuietly(input);
+ }
+ }
+
+}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -20,17 +20,15 @@
*/
package fr.ifremer.wao.io.csv2;
-import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.ValidationResult;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.TerrestrialDivision;
import fr.ifremer.wao.entity.TerrestrialDivisionImpl;
import fr.ifremer.wao.entity.TerrestrialLocation;
-import fr.ifremer.wao.io.csv2.models.SamplingPlanImportModel;
+import fr.ifremer.wao.io.csv2.models.SamplingPlanImportExportModel;
import fr.ifremer.wao.io.csv2.models.TerrestrialLocationImportModel;
import org.apache.commons.io.IOUtils;
import org.junit.Assert;
-import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -96,7 +94,7 @@
terrestrialDivisions.add(uo07);
terrestrialDivisions.add(uo87);
- ImportModel<SampleRow> model = new SamplingPlanImportModel(terrestrialDivisions);
+ ImportModel<SampleRow> model = new SamplingPlanImportExportModel(terrestrialDivisions);
InputStream input = null;
try {
input = getClass().getResourceAsStream("/import/samplingPlan-obsdeb.csv");
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/IndicatorLevels.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/IndicatorLevels.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/IndicatorLevels.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -31,7 +31,7 @@
import java.util.List;
/**
- * Render a table with levels as columns and two lines : level number and
+ * Render a table with levels as columnsForImport and two lines : level number and
* lower + upper bound values. The table has a header with indicator name
* and coefficient
*
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/AbstractMappedGridDataSource.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/AbstractMappedGridDataSource.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/AbstractMappedGridDataSource.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -85,7 +85,7 @@
mapResults = execute(startIndex, endIndex, getSortConstraint(sortConstraints));
listResults = new ArrayList<E>(mapResults.values());
- // FIXME manage sort columns in execute ???? seems obvious --> needed for Contacts, done for Boats
+ // FIXME manage sort columnsForImport in execute ???? seems obvious --> needed for Contacts, done for Boats
//sortResults(sortConstraints);
} catch (WaoException eee) {
throw new TapestryException("", eee);
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-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -1,16 +1,19 @@
package fr.ifremer.wao.ui.pages;
+import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.SamplingFilterImpl;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.service.ServiceSampling;
+import fr.ifremer.wao.ui.data.ExportStreamResponse;
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.ComponentResources;
+import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.beaneditor.BeanModel;
@@ -18,6 +21,9 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.BeanModelSource;
+import java.io.IOException;
+import java.io.InputStream;
+
@RequiresAuthentication(allowedPrograms = {ObsProgram.OBSDEB})
public class ObsDebSamplingPlan {
@@ -69,4 +75,21 @@
}
return obsdebSamplingPlanModel;
}
+
+ /********** ACTIONS *********/
+
+ StreamResponse onActionFromExportSamplingPlan() {
+ return new ExportStreamResponse("wao-echantillonnage-obsdeb") {
+ @Override
+ public InputStream getStream() throws IOException {
+ InputStream csv = null;
+ try {
+ csv = serviceSampling.exportSamplingPlanCsv(connectedUser, getSamplingFilter());
+ } catch (WaoException eee) {
+ throw new IOException(eee);
+ }
+ return csv;
+ }
+ };
+ }
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ContactModelFactory.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ContactModelFactory.java 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ContactModelFactory.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -74,7 +74,7 @@
/** add ALL properties to the bean model. */
protected void initModel() {
- // order is meaningful, properties will be displayed in columns from left to right
+ // order is meaningful, properties will be displayed in columnsForImport from left to right
addNonSortableProperty(TopiaEntity.TOPIA_CREATE_DATE, null);
addNonSortableProperty(Contact.PROPERTY_MAIN_OBSERVER, getUserPropertyConduit());
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-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-03-11 17:30:31 UTC (rev 1059)
@@ -15,7 +15,7 @@
* Used to generate a bean model for the grid used in sampling plan showed
* on page {@link fr.ifremer.wao.ui.pages.ObsDebSamplingPlan}.
*
- * This factory will generate a model showing the columns that the user
+ * This factory will generate a model showing the columnsForImport that the user
* has the right to see.
*
* @author bleny
Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-03-10 15:48:59 UTC (rev 1058)
+++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-03-11 17:30:31 UTC (rev 1059)
@@ -1,7 +1,14 @@
<t:layout t:pageTitle="${message:wao.ui.page.SamplingPlan.title}" t:contentId="wao-obsdebsamplingplan"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
- <h1>${message:wao.ui.samplingPlan.title}</h1>
+ <h1 class="fleft">${message:wao.ui.samplingPlan.title}</h1>
+ <div class="fleft actions-top">
+ <span>
+ <a t:type="actionlink" t:id="exportSamplingPlan"> <!-- title="${format:wao.ui.samplingPlan.export=dateFormat.format(period.fromDate),dateFormat.format(period.thruDate)}" -->
+ <img src="${asset:context:}/img/file-export-22px.png" alt="${message:wao.ui.action.runExport}" />
+ </a>
+ </span>
+ </div>
<div t:type="grid" t:source="sampleRows" t:row="sampleRow" t:model="obsdebSamplingPlanModel" t:rowsPerPage="50">
<!-- code -->
1
0
[Suiviobsmer-commits] r1058 - in trunk: wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/entity wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi wao-business/src/test/java/fr/ifremer/wao/service wao-business/src/test/resources wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 10 Mar '11
by bleny@users.labs.libre-entreprise.org 10 Mar '11
10 Mar '11
Author: bleny
Date: 2011-03-10 15:48:59 +0000 (Thu, 10 Mar 2011)
New Revision: 1058
Log:
ObsVente : cutting sampling plan on fishing zones, like ObsMer
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/FacadeRowImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java
trunk/wao-business/src/test/resources/log4j.properties
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
trunk/wao-ui/src/main/webapp/SamplingPlan.tml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/FacadeRowImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/FacadeRowImpl.java 2011-03-10 11:06:23 UTC (rev 1057)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/FacadeRowImpl.java 2011-03-10 15:48:59 UTC (rev 1058)
@@ -50,17 +50,8 @@
@Override
public void addRow(SampleRow row) {
- String facade = null;
- String sectors = null;
- if (row.getObsProgram() == ObsProgram.OBSMER) {
- facade = row.getFacade();
- sectors = row.getSectors();
- } else if (row.getObsProgram() == ObsProgram.OBSVENTE) {
- facade = row.getTerrestrialLocation().getCoastFAOName();
- sectors = row.getTerrestrialLocation().getCountryName();
- } else {
- throw new IllegalArgumentException("obsProgram " + row.getObsProgram());
- }
+ String facade = row.getFacade();
+ String sectors = row.getSectors();
// Prepare sectors Map
Map<String, List<SampleRow>> sectorMap = getData().get(facade);
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-03-10 11:06:23 UTC (rev 1057)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialLocationImpl.java 2011-03-10 15:48:59 UTC (rev 1058)
@@ -22,7 +22,6 @@
import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.bean.LocationType;
-import org.apache.commons.lang.ObjectUtils;
import static org.nuiton.i18n.I18n.n_;
@@ -53,18 +52,10 @@
@Override
public boolean isDistrict() {
- boolean isDistrict = getLocationType() == null
- && getDistrictCode() != null;
+ boolean isDistrict = getLocationType() == null;
return isDistrict;
}
- @Override
- public boolean isRegion() {
- boolean isRegion = getLocationType() == null
- && getDistrictCode() == null;
- return isRegion;
- }
-
/** Get a description of the location like « Maracaibo (Port, Venezuela) »
*
*/
@@ -75,6 +66,8 @@
} else {
description.append(getName()).append(" (")
.append(getLocationType()).append(", ");
+ // add the port name only if it's different of the name
+ // because most of the time it's redundant
if (getPortName() != null && ! getPortName().equals(getName())) {
description.append(getPortName()).append(", ");
}
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-03-10 11:06:23 UTC (rev 1057)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-03-10 15:48:59 UTC (rev 1058)
@@ -384,6 +384,7 @@
district.setSeaboardName(null);
district.setCoastFAOCode(null);
district.setCoastFAOName(null);
+ district.setDistrictCode(null);
}
// now, we have the 'district' object we want to have in the
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-03-10 11:06:23 UTC (rev 1057)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-10 15:48:59 UTC (rev 1058)
@@ -294,6 +294,16 @@
dao.create(row);
} else {
+ // check that code is not already used in another program
+ if ( ! row.getObsProgram().equals(oldRow.getObsProgram())) {
+ if (log.isDebugEnabled()) {
+ log.error("Unable to save sample row. Code " + row.getCode() +
+ " is already used in program " + oldRow.getObsProgram());
+ }
+ throw new IllegalArgumentException("code " + row.getCode() +
+ " is already used in program " + oldRow.getObsProgram());
+ }
+
// it's the modification of a row, we must compute the
// difference between before and after add this to the
// sample row historic
@@ -561,14 +571,11 @@
WaoQueryHelper.FishingZoneProperty fishingZoneProperty =
builder.getFishingZoneProperty();
-
// Depending on the program, the sampling plan is not organised
// the same way. In Obsmer, lines are cut by Facade, sector
// In ObsVente, it's by terrestrial location
- if (filter.getObsProgram() == ObsProgram.OBSMER) {
-
- query.setSelect(sampleRowProperty.$alias(),
+ query.setSelect(sampleRowProperty.$alias(),
fishingZoneProperty.facadeName(),
fishingZoneProperty.sectorName(),
fishingZoneProperty.districtCode()).
@@ -579,23 +586,12 @@
fishingZoneProperty.sectorName(),
fishingZoneProperty.districtCode(),
sampleRowProperty.code());
- } else if (filter.getObsProgram() == ObsProgram.OBSVENTE) {
+
+ if (filter.getObsProgram() == ObsProgram.OBSVENTE) {
WaoQueryHelper.TerrestrialLocationProperty terrestrialLocationProperty =
WaoQueryHelper.newTerrestrialLocationProperty();
- query.setSelect(sampleRowProperty.$alias(),
- terrestrialLocationProperty.coastFAOName(),
- terrestrialLocationProperty.countryName()).
- // we still need to join to fishing zone for filters
- addLeftJoin(sampleRowProperty.fishingZone(), fishingZoneProperty.$alias(), false).
- addLeftJoin(sampleRowProperty.terrestrialLocation(), terrestrialLocationProperty.$alias(), false).
- addLeftJoin(sampleRowProperty.dCF5Code(), dcf5CodeProperty.$alias(), false).
- // Order By terrestrial location
- addOrder(terrestrialLocationProperty.coastFAOName(),
- terrestrialLocationProperty.countryName(),
- sampleRowProperty.code());
- } else {
- throw new IllegalArgumentException("obsProgram " + filter.getObsProgram());
+ query.addLeftJoin(sampleRowProperty.terrestrialLocation(), terrestrialLocationProperty.$alias(), false);
}
if (log.isDebugEnabled()) {
@@ -607,7 +603,11 @@
List<SampleRow> results = dao.findAllByQuery(query);
for (SampleRow row : results) {
- row.sizeSampleRowLog(); // force load
+ // force load
+ row.sizeSampleRowLog();
+ if (row.getObsProgram().equals(ObsProgram.OBSVENTE)) {
+ row.getTerrestrialLocation();
+ }
// use FacadeRow to complete ordering using maps
result.addRow(row);
@@ -1130,7 +1130,7 @@
String code = ImportHelper.readSampleRowCode(reader); //reader.get(SAMPLING.PLAN_CODE.name()).trim();
if (StringUtils.isEmpty(code)) {
- continue;
+ code = executeGetNewSampleRowCode(transaction, context.getCurrentDate());
}
errorArgs.set(0, currRow);
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2011-03-10 11:06:23 UTC (rev 1057)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2011-03-10 15:48:59 UTC (rev 1058)
@@ -700,10 +700,15 @@
filter.setObsProgram(ObsProgram.OBSDEB);
List<SampleRow> samplingPlan = serviceSampling.getSampleRowsByFilter(filter);
for (SampleRow sampleRow : samplingPlan) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("sample row has code " + sampleRow.getCode());
+ }
+
Assert.assertNotNull("all sample rows must have a code", sampleRow.getCode());
Assert.assertNotNull("all sample rows must have a day", sampleRow.getDay());
Assert.assertNotNull("all sample rows must have a location", sampleRow.getObservationUnit());
- Assert.assertNotNull("all sample rows must be attached to a port", sampleRow.getObservationUnit().getPort());
+ Assert.assertNotNull("all sample rows must be attached to a port", sampleRow.getObservationUnit().isObservationUnit());
}
Assert.assertEquals("there is two line to import", 2, samplingPlan.size());
Modified: trunk/wao-business/src/test/resources/log4j.properties
===================================================================
--- trunk/wao-business/src/test/resources/log4j.properties 2011-03-10 11:06:23 UTC (rev 1057)
+++ trunk/wao-business/src/test/resources/log4j.properties 2011-03-10 15:48:59 UTC (rev 1058)
@@ -31,6 +31,6 @@
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%p] %c{2} %m%n
-log4j.logger.fr.ifremer.wao=INFO
+log4j.logger.fr.ifremer.wao=DEBUG
log4j.logger.org.nuiton.util=INFO
log4j.logger.org.nuiton.util.beans.BinderProvider=ERROR
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2011-03-10 11:06:23 UTC (rev 1057)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2011-03-10 15:48:59 UTC (rev 1058)
@@ -326,18 +326,9 @@
@Log
public boolean isFacadeChanged() {
boolean facadeChanged = false;
- if (row.getObsProgram().equals(ObsProgram.OBSMER)) {
- if (!row.getFacade().equals(currentFacadeName)) {
- currentFacadeName = row.getFacade();
- facadeChanged = true;
- }
- } else if (row.getObsProgram().equals(ObsProgram.OBSVENTE)) {
- if (!row.getTerrestrialLocation().getCoastFAOName().equals(currentFacadeName)) {
- currentFacadeName = row.getTerrestrialLocation().getCoastFAOName();
- facadeChanged = true;
- }
- } else {
- throw new IllegalArgumentException("obsProgram " + row.getObsProgram());
+ if (!row.getFacade().equals(currentFacadeName)) {
+ currentFacadeName = row.getFacade();
+ facadeChanged = true;
}
if (facadeChanged) {
@@ -352,18 +343,9 @@
@Log
public boolean isSectorChanged() {
boolean sectorChanged = false;
- if (row.getObsProgram().equals(ObsProgram.OBSMER)) {
- if (!row.getSectors().equals(currentSectorName)) {
- currentSectorName = row.getSectors();
- sectorChanged = true;
- }
- } else if (row.getObsProgram().equals(ObsProgram.OBSVENTE)) {
- if (!row.getTerrestrialLocation().getCountryName().equals(currentSectorName)) {
- currentSectorName = row.getTerrestrialLocation().getCountryName();
- sectorChanged = true;
- }
- } else {
- throw new IllegalArgumentException("obsProgram " + row.getObsProgram());
+ if (!row.getSectors().equals(currentSectorName)) {
+ currentSectorName = row.getSectors();
+ sectorChanged = true;
}
return sectorChanged;
}
Modified: trunk/wao-ui/src/main/webapp/SamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2011-03-10 11:06:23 UTC (rev 1057)
+++ trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2011-03-10 15:48:59 UTC (rev 1058)
@@ -243,9 +243,11 @@
<td>${row.fishingZonesInfos}</td>
<t:if test="user.obsVente">
<td>
- <span t:type="ck/Tooltip" title="Infos" t:value="${row.terrestrialLocation.description}" t:effect="appear">
- ${row.terrestrialLocation.districtName}
- </span>
+ <t:if test="row.terrestrialLocation">
+ <span t:type="ck/Tooltip" title="Infos" t:value="${row.terrestrialLocation.description}" t:effect="appear">
+ ${row.terrestrialLocation.districtName}
+ </span>
+ </t:if>
</td>
<td>
${row.terrestrialLocationInfos}
@@ -273,9 +275,11 @@
</td>
<t:if test="user.obsVente">
<td>
- <span t:type="ck/Tooltip" title="Infos" t:value="${row.terrestrialLocation.description}" t:effect="appear">
- ${row.terrestrialLocation.districtName}
- </span>
+ <t:if test="row.terrestrialLocation">
+ <span t:type="ck/Tooltip" title="Infos" t:value="${row.terrestrialLocation.description}" t:effect="appear">
+ ${row.terrestrialLocation.districtName}
+ </span>
+ </t:if>
</td>
<td>
${row.terrestrialLocationInfos}
1
0
[Suiviobsmer-commits] r1057 - in trunk: wao-business/src/main/java/fr/ifremer/wao/entity 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 10 Mar '11
by bleny@users.labs.libre-entreprise.org 10 Mar '11
10 Mar '11
Author: bleny
Date: 2011-03-10 11:06:23 +0000 (Thu, 10 Mar 2011)
New Revision: 1057
Log:
fix minor issues
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.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/entity/SampleRowImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java 2011-03-09 14:24:18 UTC (rev 1056)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java 2011-03-10 11:06:23 UTC (rev 1057)
@@ -399,15 +399,17 @@
@Override
public String getProfessionDescriptionWithoutDCF5() {
String code = "";
- if (!StringUtils.isEmpty(getProfession().getMeshSize())) {
- code += " " + getProfession().getMeshSize();
+ if (getProfession() != null) {
+ if (!StringUtils.isEmpty(getProfession().getMeshSize())) {
+ code += " " + getProfession().getMeshSize();
+ }
+ if (!StringUtils.isEmpty(getProfession().getSize())) {
+ code += " " + getProfession().getSize();
+ }
+ if (!StringUtils.isEmpty(getProfession().getOther())) {
+ code += " " + getProfession().getOther();
+ }
}
- if (!StringUtils.isEmpty(getProfession().getSize())) {
- code += " " + getProfession().getSize();
- }
- if (!StringUtils.isEmpty(getProfession().getOther())) {
- code += " " + getProfession().getOther();
- }
return code;
}
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-03-09 14:24:18 UTC (rev 1056)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-10 11:06:23 UTC (rev 1057)
@@ -147,10 +147,6 @@
context.closeTransaction(transaction);
}
-// public ServiceSamplingImpl() {
-// prepareBinderForProfession();
-// }
-
/** given a collection of DCFCode (mixing some taken from DB and some
* other insciated), return the same collection but assure that all elements
* are now in the database.
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-03-09 14:24:18 UTC (rev 1056)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-03-10 11:06:23 UTC (rev 1057)
@@ -7,6 +7,7 @@
import fr.ifremer.wao.bean.SamplingFilterImpl;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.service.ServiceSampling;
+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.ComponentResources;
@@ -17,6 +18,7 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.BeanModelSource;
+ at RequiresAuthentication(allowedPrograms = {ObsProgram.OBSDEB})
public class ObsDebSamplingPlan {
/********* Tapestry stuffs **********/
1
0
[Suiviobsmer-commits] r1056 - in trunk/wao-business/src/main: java/fr/ifremer/wao java/fr/ifremer/wao/entity java/fr/ifremer/wao/io/csv2/models java/fr/ifremer/wao/service xmi
by bleny@users.labs.libre-entreprise.org 09 Mar '11
by bleny@users.labs.libre-entreprise.org 09 Mar '11
09 Mar '11
Author: bleny
Date: 2011-03-09 14:24:18 +0000 (Wed, 09 Mar 2011)
New Revision: 1056
Log:
add UO when importing terrestrial divisions ; update sampling plan import
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-03-08 16:18:29 UTC (rev 1055)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-03-09 14:24:18 UTC (rev 1056)
@@ -806,7 +806,7 @@
"observationUnitCode CHARACTER VARYING(255)," +
"observationUnitName CHARACTER VARYING(255)," +
"regionIfremerCode CHARACTER VARYING(255)," +
- "port CHARACTER VARYING(255) NOT NULL," +
+ "port CHARACTER VARYING(255)," +
"CONSTRAINT port_fkey FOREIGN KEY (port) " +
"REFERENCES TerrestrialLocation (topiaid));");
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java 2011-03-08 16:18:29 UTC (rev 1055)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java 2011-03-09 14:24:18 UTC (rev 1056)
@@ -1,11 +1,21 @@
package fr.ifremer.wao.entity;
-public class TerrestrialDivisionImpl extends TerrestrialDivisionAbstract {
+public class TerrestrialDivisionImpl extends TerrestrialDivisionAbstract {
@Override
+ public boolean isObservationUnit() {
+ return getCode() == null && getPort() == null;
+ }
+
+ @Override
public String toString() {
- String toString = getObservationUnitCode() + " - " + getObservationUnitName();
- toString += "||" + getPort().getPortName();
+ String toString;
+ if (isObservationUnit()) {
+ toString = getRegionIfremerCode() + "-" + getObservationUnitCode()
+ + " " + getObservationUnitName();
+ } else {
+ toString = getPort().getPortName();
+ }
return toString;
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java 2011-03-08 16:18:29 UTC (rev 1055)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java 2011-03-09 14:24:18 UTC (rev 1056)
@@ -93,23 +93,23 @@
}
/** region ifremer code -> UO code -> TerrestrialDivision */
- protected Map<String, Map<String, TerrestrialDivision>> observationUnits;
+ protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits;
- public SamplingPlanImportModel(List<TerrestrialDivision> terrestrialDivisions) {
+ public SamplingPlanImportModel(List<TerrestrialDivision> observationUnits) {
- observationUnits = new HashMap<String, Map<String, TerrestrialDivision>>();
- for (TerrestrialDivision terrestrialDivision : terrestrialDivisions) {
+ indexedObservationUnits = new HashMap<String, Map<String, TerrestrialDivision>>();
+ for (TerrestrialDivision terrestrialDivision : observationUnits) {
String regionCode = terrestrialDivision.getRegionIfremerCode();
- Map<String, TerrestrialDivision> unitCodesToDivision = observationUnits.get(regionCode);
+ Map<String, TerrestrialDivision> unitCodesToDivision = indexedObservationUnits.get(regionCode);
if (unitCodesToDivision == null) {
unitCodesToDivision = new HashMap<String, TerrestrialDivision>();
}
unitCodesToDivision.put(terrestrialDivision.getObservationUnitCode(), terrestrialDivision);
- observationUnits.put(regionCode, unitCodesToDivision);
+ indexedObservationUnits.put(regionCode, unitCodesToDivision);
}
if (log.isDebugEnabled()) {
- for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : observationUnits.entrySet()) {
+ for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : indexedObservationUnits.entrySet()) {
log.debug(entry.getKey());
for (Map.Entry<String, TerrestrialDivision> unitCodesToDivision : entry.getValue().entrySet()) {
log.debug(" -> " + unitCodesToDivision.getKey() + " -> " + unitCodesToDivision.getValue());
@@ -148,7 +148,7 @@
SampleRow.PROPERTY_CODE));
columns.add(ImportableColumnImpl.newMandatoryColumn("OBSERVATEUR_COD", SampleRow.PROPERTY_GROUP_NAME));
columns.add(ImportableColumnImpl.newMandatoryColumn("OBSERVATION_DATE", Common.DAY_PARSER, SampleRow.PROPERTY_DAY));
- ObservationUnitParser observationUnitParser = new ObservationUnitParser(observationUnits);
+ ObservationUnitParser observationUnitParser = new ObservationUnitParser(indexedObservationUnits);
ValueSetter<SampleRow, String> regionCodeSetter = new RegionCodeSetter(observationUnitParser);
columns.add(ImportableColumnImpl.<SampleRow> newMandatoryColumn("REGION_IFREMER_COD", regionCodeSetter));
columns.add(ImportableColumnImpl.newMandatoryColumn("UNITE_OBSERVATION_COD", observationUnitParser, SampleRow.PROPERTY_OBSERVATION_UNIT));
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-03-08 16:18:29 UTC (rev 1055)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-03-09 14:24:18 UTC (rev 1056)
@@ -25,6 +25,7 @@
package fr.ifremer.wao.service;
import com.csvreader.CsvReader;
+import fr.ifremer.wao.WaoBinderHelper;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoContext;
import fr.ifremer.wao.WaoDAOHelper;
@@ -614,7 +615,23 @@
try {
Iterator<TerrestrialDivision> terrestrialDivisionIterator = terrestrialDivisionImport.startImport();
- WaoUtils.createOrUpdate(TerrestrialDivision.class, terrestrialDivisionIterator, dao, TerrestrialDivision.PROPERTY_CODE);
+ Binder<TerrestrialDivision, TerrestrialDivision> observationUnitBinder = BinderFactory.newBinder(TerrestrialDivision.class);
+
+ while (terrestrialDivisionIterator.hasNext()) {
+ TerrestrialDivision terrestrialDivision = terrestrialDivisionIterator.next();
+ WaoUtils.createOrUpdate(TerrestrialDivision.class, terrestrialDivision, dao, TerrestrialDivision.PROPERTY_CODE);
+
+ // now add an observation unit
+ TerrestrialDivision observationUnit = dao.newInstance();
+ observationUnitBinder.copyExcluding(terrestrialDivision, observationUnit,
+ TerrestrialDivision.TOPIA_ID, TerrestrialDivision.TOPIA_VERSION, TerrestrialDivision.TOPIA_CREATE_DATE,
+ TerrestrialDivision.PROPERTY_CODE, TerrestrialDivision.PROPERTY_PORT);
+ WaoUtils.createOrUpdate(TerrestrialDivision.class, observationUnit, dao, TerrestrialDivision.PROPERTY_CODE,
+ TerrestrialDivision.PROPERTY_SKILL_ZONE_CODE, TerrestrialDivision.PROPERTY_SUB_POPULATION_CODE,
+ TerrestrialDivision.PROPERTY_OBSERVATION_UNIT_CODE, TerrestrialDivision.PROPERTY_PORT);
+ }
+
+ transaction.commitTransaction();
} catch (Exception e) {
transaction.rollbackTransaction();
throw e;
@@ -622,5 +639,9 @@
terrestrialDivisionImport.stopImport();
}
+ if (log.isDebugEnabled()) {
+ log.debug(dao.count() + " terrestrial divisions in database");
+ }
+
}
}
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-03-08 16:18:29 UTC (rev 1055)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-09 14:24:18 UTC (rev 1056)
@@ -79,6 +79,7 @@
import fr.ifremer.wao.io.csv.WaoCsvHeader.SAMPLING;
import fr.ifremer.wao.io.csv2.Import;
import fr.ifremer.wao.io.csv2.models.SamplingPlanImportModel;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.mail.EmailException;
@@ -259,7 +260,31 @@
SampleRow oldRow = null;
if (row.getCode() == null) {
- String code = executeGetNewSampleRowCode(transaction, context.getCurrentDate());
+ // all rows must have a unique code, the code has a year as prefix
+ // like '2011_' so we must know on which year the row is active
+
+ // the date from which year will be extracted (whatever the day of the year)
+ Date year;
+
+ if (ObsProgram.OBSDEB.equals(row.getObsProgram())) {
+ // this line has a precise day, let's take the
+ // year of this day
+ year = row.getDay();
+ } else {
+ if (CollectionUtils.isEmpty(row.getSampleMonth())) {
+ // if the row has no sample months, we can't know
+ // we take current year by default
+ year = context.getCurrentDate();
+ } else {
+ // if the row has sample months, take the first month
+ year = row.getSampleMonth().get(0).getPeriodDate();
+ }
+ }
+
+ // now we have the year for prefix, let's get the whole new
+ // code (suffix depends on already used codes)
+ String code = executeGetNewSampleRowCode(transaction, year);
+
row.setCode(code);
} else {
oldRow = getSampleRowByCode(null, row.getCode());
@@ -272,16 +297,28 @@
}
dao.create(row);
} else {
+
+ // it's the modification of a row, we must compute the
+ // difference between before and after add this to the
+ // sample row historic
+
+ // first, compute the difference
rowLog.setLogText(oldRow, row);
+ // update the row by copying the new data in the old entity
+ // taking care to not remove any sample row log entries
Binder<SampleRow, SampleRow> sampleRowBinder = BinderFactory.newBinder(SampleRow.class);
sampleRowBinder.copyExcluding(row, oldRow, SampleRow.TOPIA_ID, SampleRow.TOPIA_VERSION, SampleRow.TOPIA_CREATE_DATE,
- SampleRow.PROPERTY_SAMPLE_ROW_LOG);
+ // old logs (whole historic) is kept by not erasing this property
+ SampleRow.PROPERTY_SAMPLE_ROW_LOG);
if (rowLog.getTopiaId() == null) {
context.prepareTopiaId(SampleRowLog.class, rowLog);
}
+
+ // attach the new log entry to the updated row
row.addSampleRowLog(rowLog);
+
dao.update(oldRow);
}
@@ -1034,13 +1071,14 @@
ImportResults result = new ImportResultsImpl();
if (ObsProgram.OBSDEB.equals(obsProgram)) {
TerrestrialDivisionDAO terrestrialDivisionDAO = WaoDAOHelper.getTerrestrialDivisionDAO(transaction);
- List<TerrestrialDivision> terrestrialDivisions = terrestrialDivisionDAO.findAll();
- if (terrestrialDivisions.isEmpty()) {
+ List<TerrestrialDivision> observationUnits = terrestrialDivisionDAO.findAllByPort(null);
+
+ if (observationUnits.isEmpty()) {
throw new IllegalStateException("Le référentiel de stratification n'a pas été importé");
}
- SamplingPlanImportModel samplingPlanImportModel = new SamplingPlanImportModel(terrestrialDivisions);
+ SamplingPlanImportModel samplingPlanImportModel = new SamplingPlanImportModel(observationUnits);
try {
Import<SampleRow> samplingPlanImport = new Import<SampleRow>(samplingPlanImportModel, input);
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r1055 - 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/service wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/java/fr/ifremer/wao/ui/services wao-ui/src/main/resources/i18n wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 08 Mar '11
by bleny@users.labs.libre-entreprise.org 08 Mar '11
08 Mar '11
Author: bleny
Date: 2011-03-08 16:18:29 +0000 (Tue, 08 Mar 2011)
New Revision: 1055
Log:
better sampling plan layout in UI
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoUtils.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
trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties
trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties
trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoUtils.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoUtils.java 2011-03-07 17:15:10 UTC (rev 1054)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoUtils.java 2011-03-08 16:18:29 UTC (rev 1055)
@@ -24,8 +24,6 @@
package fr.ifremer.wao;
-import fr.ifremer.wao.entity.TerrestrialDivision;
-import fr.ifremer.wao.entity.TerrestrialDivisionDAO;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.mail.EmailException;
import org.nuiton.topia.TopiaContext;
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/TerrestrialDivisionImpl.java 2011-03-08 16:18:29 UTC (rev 1055)
@@ -0,0 +1,12 @@
+package fr.ifremer.wao.entity;
+
+public class TerrestrialDivisionImpl extends TerrestrialDivisionAbstract {
+
+ @Override
+ public String toString() {
+ String toString = getObservationUnitCode() + " - " + getObservationUnitName();
+ toString += "||" + getPort().getPortName();
+ return toString;
+ }
+
+}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-07 17:15:10 UTC (rev 1054)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-03-08 16:18:29 UTC (rev 1055)
@@ -1043,24 +1043,24 @@
SamplingPlanImportModel samplingPlanImportModel = new SamplingPlanImportModel(terrestrialDivisions);
try {
- // SampleRowDAO dao = WaoDAOHelper.getSampleRowDAO(transaction);
Import<SampleRow> samplingPlanImport = new Import<SampleRow>(samplingPlanImportModel, input);
Iterator<SampleRow> it = samplingPlanImport.startImport();
while (it.hasNext()) {
- SampleRow sampleRow = it.next();
- sampleRow.clearSampleMonth();
+ SampleRow sampleRow = null;
+ try {
+ sampleRow = it.next();
+ sampleRow.clearSampleMonth();
- SampleRowLog sampleRowLog = executeGetNewSampleRowLog(sampleRow, connectedUser);
-
- try {
- // WaoUtils.createOrUpdate(SampleRow.class, sampleRow, dao, SampleRow.PROPERTY_OBS_PROGRAM_ORDINAL, SampleRow.PROPERTY_CODE);
+ SampleRowLog sampleRowLog = executeGetNewSampleRowLog(sampleRow, connectedUser);
executeCreateUpdateSampleRow(transaction, sampleRow, new ArrayList<Boat>(), sampleRowLog);
} catch (Exception e) {
errorArgs.add(-1);
- errorArgs.add(sampleRow.getCode());
+ errorArgs.add(sampleRow == null ? "" : sampleRow.getCode());
//errorArgs.add(e.getMessage());
+ transaction.rollbackTransaction();
throw new ImportRefusedException(e.getMessage(), -1, "field", e);
}
+
}
transaction.commitTransaction();
} finally {
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-03-07 17:15:10 UTC (rev 1054)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-03-08 16:18:29 UTC (rev 1055)
@@ -1,14 +1,17 @@
package fr.ifremer.wao.ui.pages;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.bean.SamplingFilterImpl;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.service.ServiceSampling;
import fr.ifremer.wao.ui.data.SampleRowDataSource;
+import fr.ifremer.wao.ui.services.SampleRowModelFactory;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.grid.GridDataSource;
import org.apache.tapestry5.ioc.annotations.Inject;
@@ -27,7 +30,12 @@
@Inject
private ServiceSampling serviceSampling;
+ /********* Session ************/
+ @SessionState
+ @Property
+ private ConnectedUser connectedUser;
+
/********* FILTERS ********/
public SamplingFilter getSamplingFilter() {
@@ -54,9 +62,8 @@
public BeanModel<SampleRow> getObsdebSamplingPlanModel() {
if (obsdebSamplingPlanModel == null) {
- obsdebSamplingPlanModel = beanModelSource.createDisplayModel(SampleRow.class, resources.getMessages());
- obsdebSamplingPlanModel.include(SampleRow.PROPERTY_CODE, SampleRow.PROPERTY_DAY, SampleRow.PROPERTY_COMMENT);
- obsdebSamplingPlanModel.add(SampleRow.PROPERTY_OBSERVATION_UNIT);
+ SampleRowModelFactory sampleRowModelFactory = new SampleRowModelFactory(beanModelSource, resources, connectedUser);
+ obsdebSamplingPlanModel = sampleRowModelFactory.newModel();
}
return obsdebSamplingPlanModel;
}
Added: 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 (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-03-08 16:18:29 UTC (rev 1055)
@@ -0,0 +1,105 @@
+package fr.ifremer.wao.ui.services;
+
+import fr.ifremer.wao.WaoUtils;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.entity.Contact;
+import fr.ifremer.wao.entity.SampleRow;
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.PropertyConduit;
+import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.services.BeanModelSource;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * Used to generate a bean model for the grid used in sampling plan showed
+ * on page {@link fr.ifremer.wao.ui.pages.ObsDebSamplingPlan}.
+ *
+ * This factory will generate a model showing the columns that the user
+ * has the right to see.
+ *
+ * @author bleny
+ */
+public class SampleRowModelFactory {
+
+ protected BeanModelSource beanModelSource;
+
+ protected ComponentResources resources;
+
+ protected ConnectedUser connectedUser;
+
+ protected BeanModel<SampleRow> model;
+
+ public SampleRowModelFactory(BeanModelSource beanModelSource, ComponentResources resources, ConnectedUser connectedUser) {
+ this.beanModelSource = beanModelSource;
+ this.resources = resources;
+ this.connectedUser = connectedUser;
+ }
+
+ /** add a property in the model and make it not sortable
+ * @param property the name of the property to add
+ * @param conduit a PropertyConduit to get the String representation of the
+ * value of the property, may be null if toString can be used */
+ protected void add(String property, PropertyConduit conduit) {
+ model.add(property, conduit);
+ model.get(property).sortable(false);
+ }
+
+ protected void add(String property) {
+ model.add(property);
+ model.get(property).sortable(false);
+ }
+
+ protected void initModel() {
+ add(SampleRow.PROPERTY_CODE);
+ add(SampleRow.PROPERTY_DAY, new SampleRowReaderPropertyConduit() {
+
+ @Override
+ public String getValue(SampleRow sampleRow) {
+ return WaoUtils.formatDate(sampleRow.getDay());
+ }
+ });
+ add(SampleRow.PROPERTY_OBSERVATION_UNIT);
+ add(SampleRow.PROPERTY_COMMENT);
+ add("actions", null);
+ }
+
+
+ /** put in common some implementation of PropertyConduit interface. */
+ protected static abstract class SampleRowReaderPropertyConduit implements PropertyConduit {
+
+ public abstract String getValue(SampleRow sampleRow);
+
+ @Override
+ public String get(Object instance) {
+ // cast and delegate
+ SampleRow sampleRow = (SampleRow) instance;
+ return getValue(sampleRow);
+ }
+
+ /** all value returned are string */
+ @Override
+ public Class getPropertyType() {
+ return String.class;
+ }
+
+ /** should never be called */
+ @Override
+ public void set(Object instance, Object value) {
+ throw new UnsupportedOperationException();
+ }
+
+ /** should never be called */
+ @Override
+ public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public BeanModel<SampleRow> newModel() {
+ model = beanModelSource.createDisplayModel(SampleRow.class, resources.getMessages());
+ model.include(); // empty the model to include only what we want
+ initModel();
+ return model;
+ }
+}
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-03-07 17:15:10 UTC (rev 1054)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-03-08 16:18:29 UTC (rev 1055)
@@ -102,11 +102,14 @@
wao.ui.field.FishingZone.facadeName=Facade
wao.ui.field.FishingZone.sectorName=Sector
wao.ui.field.SampleRow.code=Line code
+wao.ui.field.SampleRow.comment=Comment
wao.ui.field.SampleRow.dCF5Code=
+wao.ui.field.SampleRow.day=Day
wao.ui.field.SampleRow.dcf5Code=DCF5 code
wao.ui.field.SampleRow.fishingZones=Fishing zone(s)
wao.ui.field.SampleRow.libelle=Labels
wao.ui.field.SampleRow.meshSize=Mesh size
+wao.ui.field.SampleRow.observationUnit=Observation unit
wao.ui.field.SampleRow.other=Other
wao.ui.field.SampleRow.periodBegin=Begin
wao.ui.field.SampleRow.periodEnd=End
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-03-07 17:15:10 UTC (rev 1054)
+++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-03-08 16:18:29 UTC (rev 1055)
@@ -102,11 +102,14 @@
wao.ui.field.FishingZone.facadeName=Fa\u00E7ade
wao.ui.field.FishingZone.sectorName=Zone
wao.ui.field.SampleRow.code=Code ligne
+wao.ui.field.SampleRow.comment=Commentaire
wao.ui.field.SampleRow.dCF5Code=Codes
+wao.ui.field.SampleRow.day=Jour
wao.ui.field.SampleRow.dcf5Code=Code DCF Niv. 5
wao.ui.field.SampleRow.fishingZones=Zone(s) de p\u00EAche
wao.ui.field.SampleRow.libelle=Libell\u00E9
wao.ui.field.SampleRow.meshSize=Maillage
+wao.ui.field.SampleRow.observationUnit=Unit\u00E9 d'observation
wao.ui.field.SampleRow.other=Autre
wao.ui.field.SampleRow.periodBegin=D\u00E9but
wao.ui.field.SampleRow.periodEnd=Fin
Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-03-07 17:15:10 UTC (rev 1054)
+++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-03-08 16:18:29 UTC (rev 1055)
@@ -1,8 +1,36 @@
<t:layout t:pageTitle="${message:wao.ui.page.SamplingPlan.title}" t:contentId="wao-obsdebsamplingplan"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
- <div t:type="grid" t:source="sampleRows" t:row="sampleRow" t:model="obsdebSamplingPlanModel" t:rowsPerPage="20">
+ <h1>${message:wao.ui.samplingPlan.title}</h1>
- </div>
+ <div t:type="grid" t:source="sampleRows" t:row="sampleRow" t:model="obsdebSamplingPlanModel" t:rowsPerPage="50">
+ <!-- code -->
+ <p:codeHeader>
+ ${message:wao.ui.field.SampleRow.code}
+ </p:codeHeader>
+ <!-- day -->
+ <p:dayHeader>
+ ${message:wao.ui.field.SampleRow.day}
+ </p:dayHeader>
+
+ <!-- observation unit -->
+ <p:observationUnitHeader>
+ ${message:wao.ui.field.SampleRow.observationUnit}
+ </p:observationUnitHeader>
+
+ <!-- comment -->
+ <p:commentHeader>
+ ${message:wao.ui.field.SampleRow.comment}
+ </p:commentHeader>
+
+ <!-- actions -->
+ <p:actionsHeader>
+ ${message:wao.ui.samplingPlan.actions}
+ </p:actionsHeader>
+ <p:actionsCell>
+ pas d'actions
+ </p:actionsCell>
+ </div>
+
</t:layout>
\ No newline at end of file
1
0
[Suiviobsmer-commits] r1054 - trunk/wao-business/src/test/resources/import
by bleny@users.labs.libre-entreprise.org 07 Mar '11
by bleny@users.labs.libre-entreprise.org 07 Mar '11
07 Mar '11
Author: bleny
Date: 2011-03-07 17:15:10 +0000 (Mon, 07 Mar 2011)
New Revision: 1054
Log:
add forgotten file
Added:
trunk/wao-business/src/test/resources/import/purifiedTerrestrialDivisions.csv
Added: trunk/wao-business/src/test/resources/import/purifiedTerrestrialDivisions.csv
===================================================================
--- trunk/wao-business/src/test/resources/import/purifiedTerrestrialDivisions.csv (rev 0)
+++ trunk/wao-business/src/test/resources/import/purifiedTerrestrialDivisions.csv 2011-03-07 17:15:10 UTC (rev 1054)
@@ -0,0 +1,414 @@
+"ID_STRATE";"REGION_IFREMER_COD";"REGION_IFREMER_LIB";"ZONE_COMPETENCE_COD";"ZONE_COMPETENCE_LIB";"SOUS_POPULATION_COD";"SOUS_POPULATION_LIB";"UNITE_OBSERVATION_COD";"UNITE_OBSERVATION_LIB";"LIEU_OBSERVATION_COD";"LIEU_OBSERVATION_LIB";"DATE_DEBUT";"DATE_FIN"
+278;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO207";"SM-Anse Dufour";"OF3";"SM-Anse Dufour";01/01/2009 00:00:00,000000000;""
+279;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO223";"PR-Anse Céron";"SF1";"PR-Anse Céron";01/01/2009 00:00:00,000000000;""
+280;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO224";"PR-Anse Belleville";"SF2";"PR-Anse Belleville";01/01/2009 00:00:00,000000000;""
+281;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO226";"PR-Bourg du Prêcheur";"SF4";"PR-Bourg du Prêcheur";01/01/2009 00:00:00,000000000;""
+282;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO227";"PR-Pointe Lamare";"SF5";"PR-Pointe Lamare";01/01/2009 00:00:00,000000000;""
+283;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO229";"PR-Charmeuse";"SF7";"PR-Charmeuse";01/01/2009 00:00:00,000000000;""
+284;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO234";"SP-Sainte Philomène";"TF1";"SP-Sainte Philomène";01/01/2009 00:00:00,000000000;""
+285;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO235";"SP-Fond Corre";"TF2";"SP-Fond Corre";01/01/2009 00:00:00,000000000;""
+286;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO236";"SP-La Galère";"TF3";"SP-La Galère";01/01/2009 00:00:00,000000000;""
+287;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO249";"BF-Fond Capot";"VF1";"BF-Fond Capot";01/01/2009 00:00:00,000000000;""
+288;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO251";"BF-Fond Boucher";"VF3";"BF-Fond Boucher";01/01/2009 00:00:00,000000000;""
+289;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO256";"CP-Fond Bourlet";"WF2";"CP-Fond Bourlet";01/01/2009 00:00:00,000000000;""
+290;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO258";"SH-Fond Bernier";"XF1";"SH-Fond Bernier";01/01/2009 00:00:00,000000000;""
+291;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO260";"SH-Anse Madame";"XF3";"SH-Anse Madame";01/01/2009 00:00:00,000000000;""
+292;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO261";"SH-Schoelcher (Bourg)";"XF4";"SH-Schoelcher (Bourg)";01/01/2009 00:00:00,000000000;""
+293;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO262";"SH-Anse Gouraud";"XF5";"SH-Anse Gouraud";01/01/2009 00:00:00,000000000;""
+294;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO263";"Fort-de-France";"XFF";"Fort-de-France";01/01/2009 00:00:00,000000000;""
+295;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP01";"Mer Prud. St-Cyprien + Etangs Capellans et Canet";"UO001";"Cerbère, Banyuls-sur-mer, Port-Vendres";"KPV";"Cerbère";01/01/2009 00:00:00,000000000;""
+296;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP01";"Mer Prud. St-Cyprien + Etangs Capellans et Canet";"UO001";"Cerbère, Banyuls-sur-mer, Port-Vendres";"APV";"Banyuls-sur-Mer";01/01/2009 00:00:00,000000000;""
+297;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP01";"Mer Prud. St-Cyprien + Etangs Capellans et Canet";"UO001";"Cerbère, Banyuls-sur-mer, Port-Vendres";"XPV";"Port-Vendres";01/01/2009 00:00:00,000000000;""
+298;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP01";"Mer Prud. St-Cyprien + Etangs Capellans et Canet";"UO002";"Collioure, Argelès-sur-Mer, le Racou";"LPV";"Collioure";01/01/2009 00:00:00,000000000;""
+299;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP01";"Mer Prud. St-Cyprien + Etangs Capellans et Canet";"UO002";"Collioure, Argelès-sur-Mer, le Racou";"BPV";"Argelès-sur-Mer, Le Racou";01/01/2009 00:00:00,000000000;""
+300;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP01";"Mer Prud. St-Cyprien + Etangs Capellans et Canet";"UO003";"Saint-Cyprien, Canet-en-Roussillon";"CPV";"Saint-Cyprien";01/01/2009 00:00:00,000000000;""
+301;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP01";"Mer Prud. St-Cyprien + Etangs Capellans et Canet";"UO003";"Saint-Cyprien, Canet-en-Roussillon";"DPV";"Canet-en-Roussillon";01/01/2009 00:00:00,000000000;""
+302;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP02";"Mer Prud. St Laurent-Salanque et Leucate + Etang Salse-Leucate";"UO004";"Port St Ange, Port Leucate";"FPV";"Port-Leucate";01/01/2009 00:00:00,000000000;""
+303;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP02";"Mer Prud. St Laurent-Salanque et Leucate + Etang Salse-Leucate";"UO004";"Port St Ange, Port Leucate";"MPV";"Port St Ange";01/01/2009 00:00:00,000000000;""
+304;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP02";"Mer Prud. St Laurent-Salanque et Leucate + Etang Salse-Leucate";"UO005";"Etang de Salse-Leucate, Port bacarés - Port Fitou, Grau de Leucate";"EPV";"Etang de Salse-Leucate, Port Barcarès";01/01/2009 00:00:00,000000000;""
+305;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP02";"Mer Prud. St Laurent-Salanque et Leucate + Etang Salse-Leucate";"UO005";"Etang de Salse-Leucate, Port bacarés - Port Fitou, Grau de Leucate";"NPV";"Grau de Leucate";01/01/2009 00:00:00,000000000;""
+306;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP02";"Mer Prud. St Laurent-Salanque et Leucate + Etang Salse-Leucate";"UO005";"Etang de Salse-Leucate, Port bacarés - Port Fitou, Grau de Leucate";"OPV";"Etang de Salse-Leucate, Port-Fitou";01/01/2009 00:00:00,000000000;""
+309;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP03";"Mer Prud. Port-la-Nouvelle et Gruissan et Etangs";"UO007";"Etang de Bages-Sigean, Port-la-Nouvelle - Bages - Peyriac de mer";"QPV";"Etang de Bages-Sigean, Bages";01/01/2009 00:00:00,000000000;""
+310;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP03";"Mer Prud. Port-la-Nouvelle et Gruissan et Etangs";"UO007";"Etang de Bages-Sigean, Port-la-Nouvelle - Bages - Peyriac de mer";"IPV";"Etang de Bages-Sigean, Peyriac de mer";01/01/2009 00:00:00,000000000;""
+311;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP03";"Mer Prud. Port-la-Nouvelle et Gruissan et Etangs";"UO008";"Gruissan, Etangs Ayrolle, Campignol, Grazel";"JPV";"Etang de l'Ayrolle";01/01/2009 00:00:00,000000000;""
+314;"LR";"Languedoc-Roussillon";"ZC01";"Quartier maritme de Port-Vendres";"SP04";"Mer Prud. Port-la-Nouvelle et Gruissan et Etangs";"UO010";"Les Cabanes de Fleury";"PPV";"Les Cabanes de Fleury";01/01/2009 00:00:00,000000000;""
+315;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP05";"Mer Prud. Valras et Agde";"UO011";"Valras-Plage";"AST";"Valras-Plage";01/01/2009 00:00:00,000000000;""
+316;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP05";"Mer Prud. Valras et Agde";"UO012";"Grau d'Agde";"BST";"Grau d'Agde";01/01/2009 00:00:00,000000000;""
+317;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP05";"Mer Prud. Valras et Agde";"UO013";"Cap d'Agde";"CST";"Cap d'Agde";01/01/2009 00:00:00,000000000;""
+318;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP05";"Mer Prud. Valras et Agde";"UO014";"Marseillan-plage";"LST";"Marseillan-plage";01/01/2009 00:00:00,000000000;""
+319;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP06";"Sète môle et étang";"UO015";"Etang de Thau, Pte Courte, Barrou, Zup";"QST";"Etang de Thau, Pte Courte, Barrou, Zup";01/01/2009 00:00:00,000000000;""
+320;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP06";"Sète môle et étang";"UO016";"Sète, tous les ports";"PST";"Sète-Mole et canaux";01/01/2009 00:00:00,000000000;""
+321;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP06";"Sète môle et étang";"UO016";"Sète, tous les ports";"XST";"Sète, tous les ports";01/01/2009 00:00:00,000000000;""
+322;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP07";"Prud. Palavas mer et étangs";"UO017";"Frontignan (mer)";"EST";"Frontignan";01/01/2009 00:00:00,000000000;""
+323;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP07";"Prud. Palavas mer et étangs";"UO018";"Etangs frontignanais et palavasiens";"NST";"Etang d'Ingril, Les Aresquiers";01/01/2009 00:00:00,000000000;""
+324;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP07";"Prud. Palavas mer et étangs";"UO018";"Etangs frontignanais et palavasiens";"IST";"Etangs de Vic, Moures, Arnel, Prévost, P. Blanches";01/01/2009 00:00:00,000000000;""
+325;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP07";"Prud. Palavas mer et étangs";"UO018";"Etangs frontignanais et palavasiens";"SST";"Etang de Pérols, Port de Carême";01/01/2009 00:00:00,000000000;""
+326;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP07";"Prud. Palavas mer et étangs";"UO019";"Palavas-les-Flots, Carnon-Plage";"FST";"Palavas-les-Flots";01/01/2009 00:00:00,000000000;""
+327;"LR";"Languedoc-Roussillon";"ZC02";"Sète, partie mer de l'hérault";"SP07";"Prud. Palavas mer et étangs";"UO019";"Palavas-les-Flots, Carnon-Plage";"OST";"Carnon-Plage";01/01/2009 00:00:00,000000000;""
+328;"LR";"Languedoc-Roussillon";"ZC03";"Sète, étangs de Thau et de Mauguio - port du Grau du roi";"SP08";"Prud. Etang de Thau";"UO020";"Etang de Thau, Marseillan";"DST";"Etang de Thau, Marseillan";01/01/2009 00:00:00,000000000;""
+329;"LR";"Languedoc-Roussillon";"ZC03";"Sète, Etangs de Thau et de Mauguio - port du Grau du roi";"SP08";"Prud. Etang de Thau";"UO021";"Etang de Thau, Mèze, le Mourre Blanc";"JST";"Etang de Thau, Mèze, le Mourre Blanc";01/01/2009 00:00:00,000000000;""
+330;"LR";"Languedoc-Roussillon";"ZC03";"Sète, Etangs de Thau et de Mauguio - port du Grau du roi";"SP08";"Prud. Etang de Thau";"UO022";"Etang de Thau, Bouzigues+Loupian - Balaruc";"KST";"Etang de Thau, Bouzigues";01/01/2009 00:00:00,000000000;""
+331;"LR";"Languedoc-Roussillon";"ZC03";"Sète, Etangs de Thau et de Mauguio - port du Grau du roi";"SP08";"Prud. Etang de Thau";"UO022";"Etang de Thau, Bouzigues+Loupian - Balaruc";"MST";"Etang de Thau, Balaruc";01/01/2009 00:00:00,000000000;""
+332;"LR";"Languedoc-Roussillon";"ZC03";"Sète, Etangs de Thau et de Mauguio - port du Grau du roi";"SP09";"Prud. Du Grau du Roi (mer et étang) et Etang de Mauguio";"UO023";"Le-Grau-du-Roi";"GST";"Le-Grau-du-Roi";01/01/2009 00:00:00,000000000;""
+333;"LR";"Languedoc-Roussillon";"ZC03";"Sète, Etangs de Thau et de Mauguio - port du Grau du roi";"SP09";"Prud. Du Grau du Roi (mer et étang) et Etang de Mauguio";"UO024";"Etang de Mauguio (Cabanes de Mauguio et Lunel) et du Gard";"HST";"Etang Mauguio, Cabanes de Mauguio, Lunel, Pérols";01/01/2009 00:00:00,000000000;""
+334;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest,de Port-Saint-Louis-du-Rhône à Méjean";"SP01";"Cabanes de Beauduc";"UO001";"Cabanes de Beauduc";"HMT";"Cabanes de Beauduc";01/01/2009 00:00:00,000000000;""
+335;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP02";"Port-Saint-Louis-du-Rhône";"UO002";"Port-Saint-Louis-du-Rhône";"BMT";"Port-Saint-Louis-du-Rhône";01/01/2009 00:00:00,000000000;""
+336;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP02";"Port-Saint-Louis-du-Rhône";"UO003";"Les Salins de Giraud";"IMT";"Les Salins de Giraud";01/01/2009 00:00:00,000000000;""
+337;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP02";"Port-Saint-Louis-du-Rhône";"UO004";"Port de Carteau";"JMT";"Port de Carteau";01/01/2009 00:00:00,000000000;""
+338;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP03";"Port-de-Bouc";"UO005";"Port-de-Bouc, anse Aubran";"CMT";"Port-de-Bouc, Anse Aubran";01/01/2009 00:00:00,000000000;""
+339;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP03";"Port-de-Bouc";"UO006";"Fos sur Mer, port St Gervais";"KMT";"Fos sur Mer, port St Gervais";01/01/2009 00:00:00,000000000;""
+340;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP04";"Etang de Berre";"UO007";"Etang de Berre, Saint-Chamas";"DMT";"Etang de Berre, Saint-Chamas";01/01/2009 00:00:00,000000000;""
+341;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP04";"Etang de Berre";"UO007";"Etang de Berre, Saint-Chamas";"EMT";"Ensemble de l'Etang de Berre";01/01/2009 00:00:00,000000000;""
+342;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP04";"Etang de Berre";"UO008";"Etang de Berre, Marignane";"FMT";"Etang de Berre, Marignane";01/01/2009 00:00:00,000000000;""
+343;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP04";"Etang de Berre";"UO009";"Etang de Berre, Istre - hres Claires";"LMT";"Etang de Berre, Istres -les heures Claires";01/01/2009 00:00:00,000000000;""
+344;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP04";"Etang de Berre";"UO010";"Etang de Berre, Berre - port passet";"MMT";"Etang de Berre, Berre - Port de passet";01/01/2009 00:00:00,000000000;""
+345;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP04";"Etang de Berre";"UO011";"Etang de Berre, La Mède";"NMT";"Etang de Berre, La Mède";01/01/2009 00:00:00,000000000;""
+346;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP05";"Martigues";"UO012";"Martigues";"XMT";"Martigues";01/01/2009 00:00:00,000000000;""
+347;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP05";"Martigues";"UO012";"Martigues";"OMT";"Port de Ponteau";01/01/2009 00:00:00,000000000;""
+348;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP06";"De Sausset-les-Pins à Méjean";"UO013";"Sausset-les-Pins";"AMA";"Sausset-les-Pins";01/01/2009 00:00:00,000000000;""
+349;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP06";"De Sausset-les-Pins à Méjean";"UO014";"Carry-le-Rouet";"BMA";"Carry-le-Rouet";01/01/2009 00:00:00,000000000;""
+350;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP06";"De Sausset-les-Pins à Méjean";"UO015";"La Redonne, Méjean";"EMA";"La Redonne, Méjean";01/01/2009 00:00:00,000000000;""
+351;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP07";"Sainte-Maries-de-la-Mer";"UO016";"Sainte-Maries-de-la-Mer";"AMT";"Saintes-Maries-de-la-Mer, Port Cardian";01/01/2009 00:00:00,000000000;""
+352;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP08";"Carro";"UO017";"Carro";"QMT";"Carro";01/01/2009 00:00:00,000000000;""
+353;"PA";"Provence-Alpes-Côte d'Azur";"ZC04";"PACA-ouest, de Port-Saint-Louis-du-Rhône à Méjean";"SP08";"Carro";"UO018";"Anse des Laurons";"PMT";"Anse des laurons";01/01/2009 00:00:00,000000000;""
+354;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP09";"Marseille";"UO019";"L'Estaque";"FMA";"L'Estaque";01/01/2009 00:00:00,000000000;""
+355;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP09";"Marseille";"UO020";"Vieux Port de Marseille-Port de Frioul (ile de)-Vallon des Auffes";"HMA";"Vieux Port de Marseille";01/01/2009 00:00:00,000000000;""
+356;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP09";"Marseille";"UO020";"Vieux Port de Marseille-Port de Frioul (ile de)-Vallon des Auffes";"IMA";"Vallon des Auffes";01/01/2009 00:00:00,000000000;""
+357;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP09";"Marseille";"UO020";"Vieux Port de Marseille-Port de Frioul (ile de)-Vallon des Auffes";"XMA";"Marseille";01/01/2009 00:00:00,000000000;""
+358;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP09";"Marseille";"UO021";"Saumaty";"GMA";"Saumaty";01/01/2009 00:00:00,000000000;""
+359;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP09";"Marseille";"UO022";"Port des Goudes - Callanques de Callelongue";"KMA";"Port des Goudes";01/01/2009 00:00:00,000000000;""
+360;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP09";"Marseille";"UO023";"La Madrague de Montredon - Pointe Rouge";"JMA";"La Madrague de Montredon";01/01/2009 00:00:00,000000000;""
+361;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP10";"Cassis";"UO024";"Calanque de Sormiou - Port de Morgiou";"LMA";"Calanque de Sormiou";01/01/2009 00:00:00,000000000;""
+362;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP10";"Cassis";"UO024";"Calanque de Sormiou - Port de Morgiou";"MMA";"Port de Morgiou";01/01/2009 00:00:00,000000000;""
+363;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP10";"Cassis";"UO025";"Calanque de Port-Miou";"NMA";"Calanque de Port-Miou";01/01/2009 00:00:00,000000000;""
+364;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP10";"Cassis";"UO026";"Cassis";"CMA";"Cassis";01/01/2009 00:00:00,000000000;""
+365;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP11";"La Ciotat";"UO027";"La Ciotat";"DMA";"La Ciotat";01/01/2009 00:00:00,000000000;""
+366;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP12";"St Cyr sur mer - Bandol";"UO028";"St Cyr sur mer, La Madrague";"QTL";"St Cyr sur mer, la Madrague";01/01/2009 00:00:00,000000000;""
+367;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP12";"St Cyr sur mer - Bandol";"UO029";"Bandol";"ATL";"Bandol";01/01/2009 00:00:00,000000000;""
+368;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP13";"De St Elme à La Seyne-sur-Mer";"UO030";"St Elme";"LTL";"St Elme";01/01/2009 00:00:00,000000000;""
+369;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP13";"De St Elme à La Seyne-sur-Mer";"UO031";"St Mandrier sur mer";"STL";"St Mandrier sur mer";01/01/2009 00:00:00,000000000;""
+370;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP13";"De St Elme à La Seyne-sur-Mer";"UO032";"La Seyne-sur-mer";"DTL";"La Seyne-sur-Mer";01/01/2009 00:00:00,000000000;""
+371;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP14";"Toulon";"UO033";"Port St Louis du Mourillon";"TTL";"Port St Louis du Mourillon";01/01/2009 00:00:00,000000000;""
+372;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP14";"Toulon";"UO034";"Toulon";"XTL";"Toulon";01/01/2009 00:00:00,000000000;""
+373;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP14";"Toulon";"UO035";"Port des Oursinières";"VTL";"Port des Oursinières";01/01/2009 00:00:00,000000000;""
+374;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP15";"Hyères";"UO036";"Carqueiranne, les salettes";"ETL";"Carqueiranne, les salettes";01/01/2009 00:00:00,000000000;""
+375;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP15";"Hyères";"UO037";"Hyères, Ayguade-St Pierre sur mer - La Capte";"GTL";"Hyères, St Pierre sur mer";01/01/2009 00:00:00,000000000;""
+376;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP15";"Hyères";"UO038";"La Londe des Maures, Miramar";"5TL";"La Londe des Maures, Miramar";01/01/2009 00:00:00,000000000;""
+377;"PA";"Provence-Alpes-Côte d'Azur";"ZC05";"PACA-centre, de Marseille à Hyères";"SP15";"Hyères";"UO039";"Salins d'Hyères, Pothuau";"4TL";"Salins d'Hyères, Pothuau";01/01/2009 00:00:00,000000000;""
+378;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP16";"Sanary-sur-Mer - Le Brusc";"UO040";"Sanary-sur-Mer";"BTL";"Sanary-sur-Mer";01/01/2009 00:00:00,000000000;""
+379;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP16";"Sanary-sur-Mer - Le Brusc";"UO041";"Le Brusc - Port de la Coudoulière";"RTL";"Port de la Coudoulière";01/01/2009 00:00:00,000000000;""
+380;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP16";"Sanary-sur-Mer - Le Brusc";"UO041";"Le Brusc - Port de la Coudoulière";"CTL";"Le Brusc (Six-Fours-les-Plages)";01/01/2009 00:00:00,000000000;""
+381;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP17";"De Giens à Port-Cros";"UO042";"Giens, la Madrague";"ZTL";"Giens, la Madrague";01/01/2009 00:00:00,000000000;""
+382;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP17";"De Giens à Port-Cros";"UO043";"Giens, Port du Niel, de la tour fondue";"FTL";"Giens, Ports du Niel, de la Tour Fondue";01/01/2009 00:00:00,000000000;""
+383;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP17";"De Giens à Port-Cros";"UO044";"Port de Porquerolles (ile)";"2TL";"Port de Porquerolles (Ile de)";01/01/2009 00:00:00,000000000;""
+384;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP17";"De Giens à Port-Cros";"UO045";"Port-Cros (ile)";"6TL";"Port-Cros (Ile de)";01/01/2009 00:00:00,000000000;""
+385;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP18";"Le Lavandou";"UO046";"Le Lavandou - Port de Bormes les Mimosas";"MTL";"Port de Bormes les Mimosas, La Favière";01/01/2009 00:00:00,000000000;""
+386;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP18";"Le Lavandou";"UO046";"Le Lavandou - Port de Bormes les Mimosas";"HTL";"Le Lavandou";01/01/2009 00:00:00,000000000;""
+387;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP19";"Cavalaire sur Mer";"UO047";"Cavalaire sur Mer - Ramatuelle";"KTL";"Cavalaire sur Mer";01/01/2009 00:00:00,000000000;""
+388;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP20";"St-Tropez - Ste Maxime";"UO048";"Saint-Tropez, vieux port";"ITL";"Saint-Tropez, vieux port";01/01/2009 00:00:00,000000000;""
+389;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP20";"St-Tropez - Ste Maxime";"UO049";"Marines de Cogolin et Port Grimaud";"8TL";"Les Marines de Cogolin et Port Grimaud";01/01/2009 00:00:00,000000000;""
+390;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP20";"St-Tropez - Ste Maxime";"UO050";"Ste Maxime à St Aygulf";"NTL";"Ste Maxime";01/01/2009 00:00:00,000000000;""
+391;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP20";"St-Tropez - Ste Maxime";"UO050";"Ste Maxime à St Aygulf";"AT1";"Les Issambres, Port Ferréol";01/01/2009 00:00:00,000000000;""
+392;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP21";"Fréjus, St Raphaël";"UO051";"Fréjus";"PTL";"Fréjus";01/01/2009 00:00:00,000000000;""
+393;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP21";"Fréjus, St Raphaël";"UO052";"St-Raphaël";"JTL";"Saint-Raphaël, vieux port";01/01/2009 00:00:00,000000000;""
+394;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP21";"Fréjus, St Raphaël";"UO052";"St-Raphaël";"AT2";"Boulouris, le Toukan";01/01/2009 00:00:00,000000000;""
+395;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP21";"Fréjus, St Raphaël";"UO052";"St-Raphaël";"AT3";"Drammont, la Poussai";01/01/2009 00:00:00,000000000;""
+396;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP21";"Fréjus, St Raphaël";"UO052";"St-Raphaël";"AT4";"Agay";01/01/2009 00:00:00,000000000;""
+397;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP22";"Cannes";"UO053";"La Figueirette";"JNI";"La Figueirette";01/01/2009 00:00:00,000000000;""
+398;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP22";"Cannes";"UO054";"Théoule - La Galère";"SNI";"La Galère";01/01/2009 00:00:00,000000000;""
+399;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP22";"Cannes";"UO054";"Théoule - La Galère";"GNI";"Théoule";01/01/2009 00:00:00,000000000;""
+400;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP22";"Cannes";"UO055";"La Rague";"HNI";"La Rague";01/01/2009 00:00:00,000000000;""
+401;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP22";"Cannes";"UO056";"La Napoule";"INI";"La Napoule";01/01/2009 00:00:00,000000000;""
+402;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP22";"Cannes";"UO057";"Cannes, vieux port";"ANI";"Cannes, vieux port";01/01/2009 00:00:00,000000000;""
+403;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP22";"Cannes";"UO058";"Cannes, Nourée rouge";"KNI";"Cannes, Nourée Rouge";01/01/2009 00:00:00,000000000;""
+404;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP23";"Antibes";"UO059";"Golfe Juan - Juan les pins";"BNI";"Golfe Juan (Vallauris)";01/01/2009 00:00:00,000000000;""
+405;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP23";"Antibes";"UO060";"Port de Crouton - antibes";"PNI";"Port de Crouton";01/01/2009 00:00:00,000000000;""
+406;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP23";"Antibes";"UO061";"Port de Salis - antibes";"QNI";"Port de Salis";01/01/2009 00:00:00,000000000;""
+407;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP23";"Antibes";"UO062";"Port Vauban - antibes";"RNI";"Port Vauban";01/01/2009 00:00:00,000000000;""
+408;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP24";"Nice";"UO063";"Villeneuve Loubet";"1NI";"Villeneuve Loubet";01/01/2009 00:00:00,000000000;""
+409;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP24";"Nice";"UO064";"Cros de Cagnes - St Laurent du Var";"2NI";"Cros de Cagnes";01/01/2009 00:00:00,000000000;""
+410;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP24";"Nice";"UO065";"Nice";"XNI";"Nice";01/01/2009 00:00:00,000000000;""
+411;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP25";"De Villefranche à Baulieu";"UO066";"Villefranche, tous les ports";"VNI";"Villefranche, Port de la Darse";01/01/2009 00:00:00,000000000;""
+412;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP25";"De Villefranche à Baulieu";"UO066";"Villefranche, tous les ports";"3NI";"Villefranche, Port de la Santé";01/01/2009 00:00:00,000000000;""
+413;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP25";"De Villefranche à Baulieu";"UO066";"Villefranche, tous les ports";"DNI";"Villefranche-sur-Mer, tous les ports";01/01/2009 00:00:00,000000000;""
+414;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP25";"De Villefranche à Baulieu";"UO067";"St Jean Cap Ferrat";"UNI";"St Jean Cap Ferrat";01/01/2009 00:00:00,000000000;""
+415;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP25";"De Villefranche à Baulieu";"UO068";"Baulieu - Cap d'Ail";"TNI";"Baulieu";01/01/2009 00:00:00,000000000;""
+416;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP26";"Monaco - Menton";"UO069";"Monaco";"5NI";"Monaco, autres ports";01/01/2009 00:00:00,000000000;""
+417;"PA";"Provence-Alpes-Côte d'Azur";"ZC06";"PACA-est, de Sanary à Menton";"SP26";"Monaco - Menton";"UO070";"Menton, vieux port, Garavan";"ENI";"Menton, vieux port, Garavan";01/01/2009 00:00:00,000000000;""
+1;"RU";"Réunion";"ZC01";"Secteur Est";"SP01";"Côte Est";"UO001";"La Possession_Le Port";"ARU";"La Possession";01/01/2009 00:00:00,000000000;""
+2;"RU";"Réunion";"ZC01";"Secteur Est";"SP01";"Côte Est";"UO001";"La Possession_Le Port";"XRU";"Le Port";01/01/2009 00:00:00,000000000;""
+3;"RU";"Réunion";"ZC01";"Secteur Est";"SP01";"Côte Est";"UO002";"Saint Paul";"BRU";"Saint Paul";01/01/2009 00:00:00,000000000;""
+4;"RU";"Réunion";"ZC01";"Secteur Est";"SP01";"Côte Est";"UO003";"Saint Gilles";"CRU";"Saint Gilles";01/01/2009 00:00:00,000000000;""
+5;"RU";"Réunion";"ZC01";"Secteur Est";"SP01";"Côte Est";"UO004";"Saint André";"LRU";"Saint André";01/01/2009 00:00:00,000000000;""
+6;"RU";"Réunion";"ZC01";"Secteur Est";"SP01";"Côte Est";"UO005";"Sainte Marie_Saint Denis";"MRU";"Sainte Marie";01/01/2009 00:00:00,000000000;""
+7;"RU";"Réunion";"ZC01";"Secteur Est";"SP01";"Côte Est";"UO005";"Sainte Marie_Saint Denis";"NRU";"Saint Denis";01/01/2009 00:00:00,000000000;""
+8;"RU";"Réunion";"ZC01";"Secteur Est";"SP01";"Côte Est";"UO006";"Saint Benoît";"KRU";"Saint Benoît";01/01/2009 00:00:00,000000000;""
+9;"RU";"Réunion";"ZC02";"Secteur Ouest";"SP02";"Côte Ouest";"UO007";"Saint Leu";"DRU";"Saint Leu";01/01/2009 00:00:00,000000000;""
+10;"RU";"Réunion";"ZC02";"Secteur Ouest";"SP02";"Côte Ouest";"UO008";"Etang salé";"ERU";"Etang salé";01/01/2009 00:00:00,000000000;""
+11;"RU";"Réunion";"ZC02";"Secteur Ouest";"SP02";"Côte Ouest";"UO009";"Saint Pierre";"FRU";"Saint Pierre";01/01/2009 00:00:00,000000000;""
+12;"RU";"Réunion";"ZC02";"Secteur Ouest";"SP02";"Côte Ouest";"UO010";"Langevin";"GRU";"Langevin";01/01/2009 00:00:00,000000000;""
+13;"RU";"Réunion";"ZC02";"Secteur Ouest";"SP02";"Côte Ouest";"UO011";"Saint Philippe";"HRU";"Saint Philippe";01/01/2009 00:00:00,000000000;""
+14;"RU";"Réunion";"ZC02";"Secteur Ouest";"SP02";"Côte Ouest";"UO012";"Anse des cascades_Sainte Rose";"IRU";"Anse des cascades";01/01/2009 00:00:00,000000000;""
+15;"RU";"Réunion";"ZC02";"Secteur Ouest";"SP02";"Côte Ouest";"UO012";"Anse des cascades_Sainte Rose";"JRU";"Sainte Rose";01/01/2009 00:00:00,000000000;""
+16;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO001";"POINTE A PITRE";"AP1";"PP-Lauricisque";01/01/2009 00:00:00,000000000;""
+17;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO001";"POINTE A PITRE";"AP2";"PP-Bergevin";01/01/2009 00:00:00,000000000;""
+18;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO001";"POINTE A PITRE";"AP3";"PP-LaDarse";01/01/2009 00:00:00,000000000;""
+19;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO001";"POINTE A PITRE";"AP4";"PP-Carenage";01/01/2009 00:00:00,000000000;""
+20;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO001";"POINTE A PITRE";"AP5";"PP-Marina Pointe-A Pitre";01/01/2009 00:00:00,000000000;""
+21;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO001";"POINTE A PITRE";"XPP";"PP-Pointe-à-Pitre";01/01/2009 00:00:00,000000000;""
+22;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO002";"LE GOSIER";"BP1";"GO- La grande baie (Le Gosier)";01/01/2009 00:00:00,000000000;""
+23;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO002";"LE GOSIER";"BP2";"GO-Le Gosier Bourg";01/01/2009 00:00:00,000000000;""
+24;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO002";"LE GOSIER";"BP3";"GO-Anse du Mont";01/01/2009 00:00:00,000000000;""
+25;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO002";"LE GOSIER";"BP4";"GO-Petit Havre";01/01/2009 00:00:00,000000000;""
+26;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO002";"LE GOSIER";"BP5";"GO-Anse canot";01/01/2009 00:00:00,000000000;""
+27;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"CP1";"SA-FF Sainte Anne (Bourg)";01/01/2009 00:00:00,000000000;""
+28;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"CP2";"SA-Sainte Anne plage municipale";01/01/2009 00:00:00,000000000;""
+29;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"CP3";"SA-Castaing";01/01/2009 00:00:00,000000000;""
+30;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"CP4";"SA-Plage de bois Jolan";01/01/2009 00:00:00,000000000;""
+31;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"CP5";"SA-Les Galbas";01/01/2009 00:00:00,000000000;""
+32;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"DP1";"FR-Anse à la barque";01/01/2009 00:00:00,000000000;""
+33;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"DP2";"FR-Saint François (Bourg)";01/01/2009 00:00:00,000000000;""
+34;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"DP3";"FR- Entre port de pêche et plaisance";01/01/2009 00:00:00,000000000;""
+35;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"DP4";"FR-Marina de St François";01/01/2009 00:00:00,000000000;""
+36;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"DP5";"FR-Anse du mancenillier";01/01/2009 00:00:00,000000000;""
+37;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO003";"ST FRANCOIS_SAINTE ANNE";"DP6";"FR-Anse kahouane";01/01/2009 00:00:00,000000000;""
+38;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO004";"LE MOULE";"EP1";"MO-L'autre bord";01/01/2009 00:00:00,000000000;""
+39;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO004";"LE MOULE";"EP2";"MO-Rivière d'Audoin";01/01/2009 00:00:00,000000000;""
+40;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO004";"LE MOULE";"EP3";"MO-Le moule";01/01/2009 00:00:00,000000000;""
+41;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO004";"LE MOULE";"EP4";"MO-Baie du nord ouest";01/01/2009 00:00:00,000000000;""
+42;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO005";"ANSE BERTRAND_PORT LOUIS_PETIT CANAL_MORNE A L'EAU";"FP1";"AB-Anse Bertrand";01/01/2009 00:00:00,000000000;""
+43;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO005";"ANSE BERTRAND_PORT LOUIS_PETIT CANAL_MORNE A L'EAU";"FP2";"PL-Port Louis";01/01/2009 00:00:00,000000000;""
+44;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO005";"ANSE BERTRAND_PORT LOUIS_PETIT CANAL_MORNE A L'EAU";"GP1";"PC-Petit canal - la Darse";01/01/2009 00:00:00,000000000;""
+45;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO005";"ANSE BERTRAND_PORT LOUIS_PETIT CANAL_MORNE A L'EAU";"HP1";"MN-Canal des Rotours";01/01/2009 00:00:00,000000000;""
+46;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO005";"ANSE BERTRAND_PORT LOUIS_PETIT CANAL_MORNE A L'EAU";"HP2";"MN-(Vieux bourg ) Morne à l'eau";01/01/2009 00:00:00,000000000;""
+47;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO005";"ANSE BERTRAND_PORT LOUIS_PETIT CANAL_MORNE A L'EAU";"HP3";"MN-Anse Babin";01/01/2009 00:00:00,000000000;""
+48;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO005";"ANSE BERTRAND_PORT LOUIS_PETIT CANAL_MORNE A L'EAU";"HP4";"MN-Canal Perrin";01/01/2009 00:00:00,000000000;""
+49;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO011";"LA DESIRADE";"3P1";"DE-Anse des Galets";01/01/2009 00:00:00,000000000;""
+50;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO011";"LA DESIRADE";"3P2";"DE-Les Sables";01/01/2009 00:00:00,000000000;""
+51;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO011";"LA DESIRADE";"3P3";"DE-Beausejour";01/01/2009 00:00:00,000000000;""
+52;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO011";"LA DESIRADE";"3P4";"DE-Desert";01/01/2009 00:00:00,000000000;""
+53;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO011";"LA DESIRADE";"3P5";"DE-Le Souffleur";01/01/2009 00:00:00,000000000;""
+54;"GA";"Guadeloupe";"ZC01";"Nord Guadeloupe";"SP01";"Grande Terre et dépendances";"UO011";"LA DESIRADE";"3P6";"DE-Baie Mahault";01/01/2009 00:00:00,000000000;""
+55;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"IP1";"BM-Gabarre cote la jaille";01/01/2009 00:00:00,000000000;""
+56;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"IP2";"BM-Baie Mahault (débarcadère)";01/01/2009 00:00:00,000000000;""
+57;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"IP3";"BM-Baie Mahault (face ANPE)";01/01/2009 00:00:00,000000000;""
+58;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"IP4";"BM-Baie Dupuy";01/01/2009 00:00:00,000000000;""
+59;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"IP5";"BM-Moudong";01/01/2009 00:00:00,000000000;""
+60;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"IP6";"BM-Anse de la Chapelle";01/01/2009 00:00:00,000000000;""
+61;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"JP1";"LM-Blachon";01/01/2009 00:00:00,000000000;""
+62;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"KP1";"SR-Morne rouge";01/01/2009 00:00:00,000000000;""
+63;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"KP2";"SR-Viard";01/01/2009 00:00:00,000000000;""
+64;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"KP3";"SR-Sainte Rose (bourg)";01/01/2009 00:00:00,000000000;""
+65;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"KP4";"SR-Madame";01/01/2009 00:00:00,000000000;""
+66;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"KP5";"SR-Vinty";01/01/2009 00:00:00,000000000;""
+67;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO006";"BAIE-MAHAULT_LAMENTIN_SAINTE ROSE";"KP6";"SR-Clugny";01/01/2009 00:00:00,000000000;""
+68;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"LP1";"DH-Anse Rifflet";01/01/2009 00:00:00,000000000;""
+69;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"LP2";"DH-Grande anse de Deshaies";01/01/2009 00:00:00,000000000;""
+70;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"LP3";"DH-Deshaies (bourg)";01/01/2009 00:00:00,000000000;""
+71;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"LP4";"DH-Anse Ferry";01/01/2009 00:00:00,000000000;""
+72;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"MP1";"PN-Petite Anse (Pointe noire)";01/01/2009 00:00:00,000000000;""
+73;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"MP2";"PN- Baille Argent (Pointe noire)";01/01/2009 00:00:00,000000000;""
+74;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"MP3";"PN-Anse Marigo";01/01/2009 00:00:00,000000000;""
+75;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"MP4";"PN-Pointe noire (Bourg)";01/01/2009 00:00:00,000000000;""
+76;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"MP5";"PN-Anse Guyonneau";01/01/2009 00:00:00,000000000;""
+77;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO007";"DESHAIES_POINTE NOIRE";"MP6";"PN-Plage caraïbe";01/01/2009 00:00:00,000000000;""
+78;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP1";"BO-Anse Colas Mahault";01/01/2009 00:00:00,000000000;""
+79;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP2";"BO-Malendure";01/01/2009 00:00:00,000000000;""
+80;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP3";"BO-Anse à Galets";01/01/2009 00:00:00,000000000;""
+81;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP4";"BO-Pigeon section la lise";01/01/2009 00:00:00,000000000;""
+82;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP5";"BO-Pigeon section fromager";01/01/2009 00:00:00,000000000;""
+83;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP6";"BO-Pigeon section coton";01/01/2009 00:00:00,000000000;""
+84;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP7";"BO-Anse à sable";01/01/2009 00:00:00,000000000;""
+85;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP8";"BO-Bouillante station thermale-Anse Marsolle";01/01/2009 00:00:00,000000000;""
+86;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NP9";"BO-Anse de Bouillante";01/01/2009 00:00:00,000000000;""
+87;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NPA";"BO-Pointe de l¿Ermitage";01/01/2009 00:00:00,000000000;""
+88;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NPB";"BO-Anse à Cardonnet";01/01/2009 00:00:00,000000000;""
+89;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NPC";"BO-Anse à Thomas";01/01/2009 00:00:00,000000000;""
+90;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NPD";"BO-Anse du Dépôt";01/01/2009 00:00:00,000000000;""
+91;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NPE";"BO-Grande anse Duche";01/01/2009 00:00:00,000000000;""
+92;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NPF";"BO-Trois Tortues";01/01/2009 00:00:00,000000000;""
+93;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"NPG";"BO-Anse à la Barque (Bouillante)";01/01/2009 00:00:00,000000000;""
+94;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"OP1";"VH-Anse à la Barque";01/01/2009 00:00:00,000000000;""
+95;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"OP2";"VH-Marigot";01/01/2009 00:00:00,000000000;""
+96;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"OP3";"VH-Vieux Habitants (Bourg)";01/01/2009 00:00:00,000000000;""
+97;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO008";"BOUILLANTE_VIEUX HABITANTS";"OP4";"VH-Anse du val de l'orge";01/01/2009 00:00:00,000000000;""
+98;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"PP1";"BA-La Madeleine";01/01/2009 00:00:00,000000000;""
+99;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"PP2";"BA-Baillif Quai (Bourg)";01/01/2009 00:00:00,000000000;""
+100;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"PP3";"BA-Tour du père Labat";01/01/2009 00:00:00,000000000;""
+101;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"QP1";"BT-Rivière des pères";01/01/2009 00:00:00,000000000;""
+102;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"QP2";"BT-Basse terre (quai saintois)";01/01/2009 00:00:00,000000000;""
+103;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"RP1";"GY-Face IRPM";01/01/2009 00:00:00,000000000;""
+104;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"RP2";"GY-Marina de Rivière Sens";01/01/2009 00:00:00,000000000;""
+105;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"SP1";"VF-Pointe Mazarin";01/01/2009 00:00:00,000000000;""
+106;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"SP2";"VF-Anse Dupuy";01/01/2009 00:00:00,000000000;""
+107;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"SP3";"VF-Vieux fort";01/01/2009 00:00:00,000000000;""
+108;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"SP4";"VF-Pointe à Launay";01/01/2009 00:00:00,000000000;""
+109;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"TP1";"TR-Plage de la grande anse";01/01/2009 00:00:00,000000000;""
+110;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO009";"BAILLIF_BASSE TERRE_GOURBEYRE_VIEUX FORT_TROIS RIVIERES";"TP2";"TR-Bord de mer (Trois Rivières)";01/01/2009 00:00:00,000000000;""
+111;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"UP1";"CB-Anse salé";01/01/2009 00:00:00,000000000;""
+112;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"UP2";"CB-Anse du Bananier";01/01/2009 00:00:00,000000000;""
+113;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"UP3";"CB-Anse Saint Sauveur";01/01/2009 00:00:00,000000000;""
+114;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"UP4";"CB-Capesterre Belle Eau (Bourg)";01/01/2009 00:00:00,000000000;""
+115;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"UP5";"CB-Plage de roseau";01/01/2009 00:00:00,000000000;""
+116;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"UP6";"CB-Sainte Marie";01/01/2009 00:00:00,000000000;""
+117;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"UP7";"CB-Four à chaux";01/01/2009 00:00:00,000000000;""
+118;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"VP1";"GY-Sainte claire";01/01/2009 00:00:00,000000000;""
+119;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"VP2";"GY-Goyave (Bourg)";01/01/2009 00:00:00,000000000;""
+120;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"VP3";"GY-Sarcelle";01/01/2009 00:00:00,000000000;""
+121;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO010";"CAPESTERRE BELLE EAU_GOYAVE_PETIT BOURG";"WP1";"PB- Petit bourg - la Vinaigrerie";01/01/2009 00:00:00,000000000;""
+122;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"ZP1";"GB-Folle Anse";01/01/2009 00:00:00,000000000;""
+123;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"ZP2";"GB-Grand bourg de Marie Galante";01/01/2009 00:00:00,000000000;""
+124;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"ZP3";"GB-Plage de Murat";01/01/2009 00:00:00,000000000;""
+125;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"ZP4";"GB-Les Basses";01/01/2009 00:00:00,000000000;""
+126;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"1P1";"CP-Capesterre de Marie-Galante";01/01/2009 00:00:00,000000000;""
+127;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"2P1";"SL-Route du Vieux fort";01/01/2009 00:00:00,000000000;""
+128;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"2P2";"SL-Anse canot";01/01/2009 00:00:00,000000000;""
+129;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"2P3";"SL-Saint louis de Marie Galante";01/01/2009 00:00:00,000000000;""
+130;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO012";"GRAND BOURG_CAPESTERRE_ST LOUIS";"2P4";"SL-Plage du Bourg";01/01/2009 00:00:00,000000000;""
+131;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"XP1";"TH-Terre de Haut (Bourg)";01/01/2009 00:00:00,000000000;""
+132;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"XP2";"TH-Petite anse";01/01/2009 00:00:00,000000000;""
+133;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"XP3";"TH-Anse Fond cure";01/01/2009 00:00:00,000000000;""
+134;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"XP4";"TH-Anse Morel";01/01/2009 00:00:00,000000000;""
+135;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"XP5";"TH-Plage de Marigot";01/01/2009 00:00:00,000000000;""
+136;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"XP6";"TH-Anse Mire";01/01/2009 00:00:00,000000000;""
+137;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"YP1";"TB-Grande Anse";01/01/2009 00:00:00,000000000;""
+138;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"YP2";"TB-Anse a dos";01/01/2009 00:00:00,000000000;""
+139;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"YP3";"TB-Petite anse";01/01/2009 00:00:00,000000000;""
+140;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"YP4";"TB-Grande baie";01/01/2009 00:00:00,000000000;""
+141;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO013";"TERRE DE HAUT_TERRE DE BAS";"YP5";"TB-Anse des Muriers";01/01/2009 00:00:00,000000000;""
+142;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"4P1";"BH-Gustavia";01/01/2009 00:00:00,000000000;""
+143;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"4P2";"BH-Anse du grand cul de sac";01/01/2009 00:00:00,000000000;""
+144;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"4P3";"BH-Anse de Marigot";01/01/2009 00:00:00,000000000;""
+145;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"4P4";"BH-Anse de Lorient";01/01/2009 00:00:00,000000000;""
+146;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"4P5";"BH-Corosol";01/01/2009 00:00:00,000000000;""
+147;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"4P6";"BH-Baie de St Jean";01/01/2009 00:00:00,000000000;""
+148;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"5P1";"SM-Marigot (Marina Royale)";01/01/2009 00:00:00,000000000;""
+149;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"5P2";"SM-Sandy Ground";01/01/2009 00:00:00,000000000;""
+150;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"5P3";"SM-Quartier d¿Orléans";01/01/2009 00:00:00,000000000;""
+151;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"5P4";"SM-Baie Orientale";01/01/2009 00:00:00,000000000;""
+152;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"5P5";"SM-Cul de sac";01/01/2009 00:00:00,000000000;""
+153;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"5P6";"SM-Grand Case";01/01/2009 00:00:00,000000000;""
+154;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"5P7";"SM-St James";01/01/2009 00:00:00,000000000;""
+155;"GA";"Guadeloupe";"ZC02";"Sud Guadeloupe";"SP02";"Basse Terre et dépendances";"UO014";"SAINT BARTHELEMY_SAINT MARTIN";"5P8";"SM-Anse Marcel";01/01/2009 00:00:00,000000000;""
+156;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO026";"FF-Pointe des Nègres";"AF1";"FF-Pointe des Nègres";01/01/2009 00:00:00,000000000;""
+157;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO027";"FF-Canal Levassor, FF-Texaco, FF-Bas Lycée, SH-Fond Lahaye";"AF2";"FF-Texaco";01/01/2009 00:00:00,000000000;""
+159;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO027";"FF-Canal Levassor, FF-Texaco, FF-Bas Lycée, SH-Fond Lahaye";"AFA";"FF-Canal Levassor";01/01/2009 00:00:00,000000000;""
+160;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO027";"FF-Canal Levassor, FF-Texaco, FF-Bas Lycée, SH-Fond Lahaye";"XF2";"SH-Fond Lahaye";01/01/2009 00:00:00,000000000;""
+161;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO028";"DC-Canal Ducos, SL-Trois Rivières";"CF1";"DC-Canal Ducos";01/01/2009 00:00:00,000000000;""
+162;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO028";"DC-Canal Ducos, SL-Trois Rivières";"GF1";"SL-Trois Rivières";01/01/2009 00:00:00,000000000;""
+163;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO029";"FF-Canal Moreau";"AF4";"FF-Canal Moreau";01/01/2009 00:00:00,000000000;""
+164;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO030";"FF-Canal Alaric";"AF5";"FF-Canal Alaric";01/01/2009 00:00:00,000000000;""
+165;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO031";"FF-Volga Plage";"AF6";"FF-Volga Plage";01/01/2009 00:00:00,000000000;""
+166;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO032";"FF-Coco l'Echelle";"AF7";"FF-Coco l'Echelle";01/01/2009 00:00:00,000000000;""
+167;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO033";"FF-Etang Mancini";"AF8";"FF-Etang Mancini";01/01/2009 00:00:00,000000000;""
+168;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO034";"FF-Pointe des Grives";"AF9";"FF-Pointe des Grives";01/01/2009 00:00:00,000000000;""
+169;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO035";"AA-Anses d'Arlets (Bourg), AA-Grande Anse, AA-Petite Anse";"EF3";"AA-Grande Anse";01/01/2009 00:00:00,000000000;""
+170;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO035";"AA-Anses d'Arlets (Bourg), AA-Grande Anse, AA-Petite Anse";"EF4";"AA-Anses d'Arlets (Bourg)";01/01/2009 00:00:00,000000000;""
+171;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO035";"AA-Anses d'Arlets (Bourg), AA-Grande Anse, AA-Petite Anse";"EF5";"AA-Petite Anse";01/01/2009 00:00:00,000000000;""
+172;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO041";"LM-Californie";"BF1";"LM-Californie";01/01/2009 00:00:00,000000000;""
+173;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO042";"LM-Lamentin (Bourg)";"BF2";"LM-Lamentin (Bourg)";01/01/2009 00:00:00,000000000;""
+174;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO043";"LM-Morne Cabrit";"BF3";"LM-Morne Cabrit";01/01/2009 00:00:00,000000000;""
+175;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO044";"LM-Calebassier";"BF4";"LM-Calebassier";01/01/2009 00:00:00,000000000;""
+176;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO050";"DI-Taupinière, DI-La Cherry";"FF3";"DI-La Cherry";01/01/2009 00:00:00,000000000;""
+177;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO050";"DI-Taupinière, DI-La Cherry";"FF5";"DI-Taupinière";01/01/2009 00:00:00,000000000;""
+178;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO056";"TI-Magasin Zéline";"DF1";"TI-Magasin Zéline";01/01/2009 00:00:00,000000000;""
+179;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO057";"TI-Bord de Mer (Trois Ilets)";"DF2";"TI-Bord de Mer (Trois Ilets)";01/01/2009 00:00:00,000000000;""
+180;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO058";"TI-Pointe Galy";"DF3";"TI-Pointe Galy";01/01/2009 00:00:00,000000000;""
+181;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO059";"TI-Anse Mitan";"DF4";"TI-Anse Mitan";01/01/2009 00:00:00,000000000;""
+182;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO060";"TI-Anse Marette";"DF5";"TI-Anse Marette";01/01/2009 00:00:00,000000000;""
+183;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO061";"TI-Anse à l'Ane";"DF6";"TI-Anse à l'Ane";01/01/2009 00:00:00,000000000;""
+184;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO068";"AA-Anse Noire";"EF1";"AA-Anse Noire";01/01/2009 00:00:00,000000000;""
+185;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO069";"AA-Anse Dufour";"EF2";"AA-Anse Dufour";01/01/2009 00:00:00,000000000;""
+186;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO070";"RP-Poirier,SL-Sainte Luce (Bourg)";"GF3";"SL-Sainte Luce (Bourg)";01/01/2009 00:00:00,000000000;""
+187;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO070";"RP-Poirier,SL-Sainte Luce (Bourg)";"HF2";"RP-Poirier";01/01/2009 00:00:00,000000000;""
+188;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO071";"SA -Ste Anne (bourg), MR-Le Marin (bourg)";"IF2";"MR-Le Marin (bourg)";01/01/2009 00:00:00,000000000;""
+189;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO071";"SA -Ste Anne (bourg), MR-Le Marin (bourg)";"JF1";"SA -Ste Anne (bourg)";01/01/2009 00:00:00,000000000;""
+190;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO072";"SA-Cap Chevalier";"JF4";"SA-Cap Chevalier";01/01/2009 00:00:00,000000000;""
+191;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO077";"DI-Anse Cafard";"FF1";"DI-Anse Cafard";01/01/2009 00:00:00,000000000;""
+192;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO078";"DI-Diamant (Bourg)";"FF2";"DI-Diamant (Bourg)";01/01/2009 00:00:00,000000000;""
+193;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO079";"VC-Port du Vauclin";"KF4";"VC-Port du Vauclin";01/01/2009 00:00:00,000000000;""
+194;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO080";"DI-Marigot (Diamant)";"FF4";"DI-Marigot (Diamant)";01/01/2009 00:00:00,000000000;""
+195;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO081";"FR-Le François (bourg) - La jetée, FR-Le Simon, FR-Dostaly";"LF3";"FR-Le Simon";01/01/2009 00:00:00,000000000;""
+196;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO081";"FR-Le François (bourg) - La jetée, FR-Le Simon, FR-Dostaly";"LF4";"FR-Dostaly";01/01/2009 00:00:00,000000000;""
+197;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO081";"FR-Le François (bourg) - La jetée, FR-Le Simon, FR-Dostaly";"LFA";"FR-Le François (bourg) - La jetée";01/01/2009 00:00:00,000000000;""
+198;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO082";"DI-Pointe Giraud";"FF6";"DI-Pointe Giraud";01/01/2009 00:00:00,000000000;""
+199;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO085";"RB-Le Robert (bourg), RB-Pointe Fort";"MFC";"RB-Le Robert (bourg)";01/01/2009 00:00:00,000000000;""
+200;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO085";"RB-Le Robert (bourg), RB-Pointe Fort";"MFE";"RB-Pointe Fort";01/01/2009 00:00:00,000000000;""
+201;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO086";"SL-Corps de Garde";"GF2";"SL-Corps de Garde";01/01/2009 00:00:00,000000000;""
+202;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO087";"TR-Anse Cosmy, TR-La Crique, TR-Tartane";"NF5";"TR-Tartane";01/01/2009 00:00:00,000000000;""
+203;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO087";"TR-Anse Cosmy, TR-La Crique, TR-Tartane";"NF9";"TR-La Crique";01/01/2009 00:00:00,000000000;""
+204;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO087";"TR-Anse Cosmy, TR-La Crique, TR-Tartane";"NFA";"TR-Anse Cosmy";01/01/2009 00:00:00,000000000;""
+158;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO027";"FF-Canal Levassor, FF-Texaco, FF-Bas Lycée, SH-Fond Lahaye";"AF3";"FF-Bas Lycée";01/01/2009 00:00:00,000000000;""
+205;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO089";"RP-Rivière Pilote (Bourg)";"HF1";"RP-Rivière Pilote (Bourg)";01/01/2009 00:00:00,000000000;""
+206;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO090";"SM-Sainte Marie (Bourg), MG-Le Marigot";"OF4";"SM-Sainte Marie (Bourg)";01/01/2009 00:00:00,000000000;""
+207;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO090";"SM-Sainte Marie (Bourg), MG-Le Marigot";"PF1";"MG-Le Marigot";01/01/2009 00:00:00,000000000;""
+208;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO091";"RP-Anse Figuier";"HF3";"RP-Anse Figuier";01/01/2009 00:00:00,000000000;""
+209;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO096";"MR-La Duprey";"IF1";"MR-La Duprey";01/01/2009 00:00:00,000000000;""
+210;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO097";"GR-Grand rivière, BP-Basse Pointe";"QF1";"BP-Basse Pointe";01/01/2009 00:00:00,000000000;""
+211;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO097";"GR-Grand rivière, BP-Basse Pointe";"RF1";"GR-Grand rivière";01/01/2009 00:00:00,000000000;""
+212;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO098";"MR-Canal O'Neil";"IF3";"MR-Canal O'Neil";01/01/2009 00:00:00,000000000;""
+213;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO099";"MR-Cul de Sac Ferré (cap Marin)";"IF4";"MR-Cul de Sac Ferré (cap Marin)";01/01/2009 00:00:00,000000000;""
+214;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO106";"PR-Cimetière, PR-Les Abymes, SP-Bourg de Saint Pierre";"SF3";"PR-Les Abymes";01/01/2009 00:00:00,000000000;""
+215;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO106";"PR-Cimetière, PR-Les Abymes, SP-Bourg de Saint Pierre";"SF6";"PR-Cimetière";01/01/2009 00:00:00,000000000;""
+216;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO106";"PR-Cimetière, PR-Les Abymes, SP-Bourg de Saint Pierre";"TF4";"SP-Bourg de Saint Pierre";01/01/2009 00:00:00,000000000;""
+217;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO107";"SA -Anse Tonnoir";"JF2";"SA -Anse Tonnoir";01/01/2009 00:00:00,000000000;""
+218;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO108";"SA-Les Salines";"JF3";"SA-Les Salines";01/01/2009 00:00:00,000000000;""
+219;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO109";"CB-Carbet Nord, CB-Carbet Sud, BF-Bourg de Bellefontaine, CP-Bourg de Case Pilote";"UF1";"CB-Carbet Sud";01/01/2009 00:00:00,000000000;""
+220;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO109";"CB-Carbet Nord, CB-Carbet Sud, BF-Bourg de Bellefontaine, CP-Bourg de Case Pilote";"UF2";"CB-Carbet Nord";01/01/2009 00:00:00,000000000;""
+221;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO109";"CB-Carbet Nord, CB-Carbet Sud, BF-Bourg de Bellefontaine, CP-Bourg de Case Pilote";"VF2";"BF-Bourg de Bellefontaine";01/01/2009 00:00:00,000000000;""
+222;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO109";"CB-Carbet Nord, CB-Carbet Sud, BF-Bourg de Bellefontaine, CP-Bourg de Case Pilote";"WF1";"CP-Bourg de Case Pilote";01/01/2009 00:00:00,000000000;""
+223;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO110";"SA-Anse au Bois";"JF5";"SA-Anse au Bois";01/01/2009 00:00:00,000000000;""
+224;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO112";"VC-Paquemar";"KF1";"VC-Paquemar";01/01/2009 00:00:00,000000000;""
+225;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO113";"VC-Massy-Massy";"KF2";"VC-Massy-Massy";01/01/2009 00:00:00,000000000;""
+226;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO114";"VC-Pointe Faula";"KF3";"VC-Pointe Faula";01/01/2009 00:00:00,000000000;""
+227;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO116";"VC-Marché du Vauclin";"KF5";"VC-Marché du Vauclin";01/01/2009 00:00:00,000000000;""
+228;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO117";"VC-Château Paille";"KF6";"VC-Château Paille";01/01/2009 00:00:00,000000000;""
+229;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO118";"VC-Pointe Faraudière";"KF7";"VC-Pointe Faraudière";01/01/2009 00:00:00,000000000;""
+230;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO119";"VC-Baie des Mulets (sud)";"KF8";"VC-Baie des Mulets (sud)";01/01/2009 00:00:00,000000000;""
+231;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO120";"VC-Baie des Mulets (nord)";"KF9";"VC-Baie des Mulets (nord)";01/01/2009 00:00:00,000000000;""
+232;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO121";"VC-Pointe des Sables";"KFA";"VC-Pointe des Sables";01/01/2009 00:00:00,000000000;""
+233;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO122";"VC-Pointe Jacob (La Plaine)";"KFB";"VC-Pointe Jacob (La Plaine)";01/01/2009 00:00:00,000000000;""
+234;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO129";"FR-Cap Est";"LF1";"FR-Cap Est";01/01/2009 00:00:00,000000000;""
+235;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO130";"FR-Pointe Cerisier";"LF2";"FR-Pointe Cerisier";01/01/2009 00:00:00,000000000;""
+236;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO133";"FR-Frégate sud (Frégate)";"LF5";"FR-Frégate sud (Frégate)";01/01/2009 00:00:00,000000000;""
+237;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO134";"FR-Frégate nord (Monerot)";"LF6";"FR-Frégate nord (Monerot)";01/01/2009 00:00:00,000000000;""
+238;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO135";"FR-Ilets du François";"LF7";"FR-Ilets du François";01/01/2009 00:00:00,000000000;""
+239;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO136";"FR-Presqu'île";"LF8";"FR-Presqu'île";01/01/2009 00:00:00,000000000;""
+240;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO137";"FR-Club nautique";"LF9";"FR-Club nautique";01/01/2009 00:00:00,000000000;""
+241;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO139";"FR-Pointe Degras (sud)";"LFB";"FR-Pointe Degras (sud)";01/01/2009 00:00:00,000000000;""
+242;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO140";"FR-Pointe Degras (nord)";"LFC";"FR-Pointe Degras (nord)";01/01/2009 00:00:00,000000000;""
+243;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO141";"FR-Baie Thalémon";"LFD";"FR-Baie Thalémon";01/01/2009 00:00:00,000000000;""
+244;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO142";"FR-Pointe Thalémon (sud)";"LFE";"FR-Pointe Thalémon (sud)";01/01/2009 00:00:00,000000000;""
+245;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO143";"FR-Pointe Thalémon (nord)";"LFF";"FR-Pointe Thalémon (nord)";01/01/2009 00:00:00,000000000;""
+246;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO144";"FR-Grande Case";"LFG";"FR-Grande Case";01/01/2009 00:00:00,000000000;""
+247;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO145";"FR-Mansarde Rancée 2";"LFH";"FR-Mansarde Rancée 2";01/01/2009 00:00:00,000000000;""
+248;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO146";"FR-Mansarde Rancée 3";"LFI";"FR-Mansarde Rancée 3";01/01/2009 00:00:00,000000000;""
+249;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO147";"FR-Pointe La Rose (ouest)";"LFJ";"FR-Pointe La Rose (ouest)";01/01/2009 00:00:00,000000000;""
+250;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO152";"RB-Pointe La Rose (est)";"MF1";"RB-Pointe La Rose (est)";01/01/2009 00:00:00,000000000;""
+251;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO153";"RB-Pointe La Rose (nord)";"MF2";"RB-Pointe La Rose (nord)";01/01/2009 00:00:00,000000000;""
+252;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO154";"RB-Sable Blanc (est)";"MF3";"RB-Sable Blanc (est)";01/01/2009 00:00:00,000000000;""
+253;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO155";"RB-Sable Blanc (ouest)";"MF4";"RB-Sable Blanc (ouest)";01/01/2009 00:00:00,000000000;""
+254;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO156";"RB-Pointe Hyacinthe (est)";"MF5";"RB-Pointe Hyacinthe (est)";01/01/2009 00:00:00,000000000;""
+255;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO157";"RB-Pointe Hyacinthe (nord)";"MF6";"RB-Pointe Hyacinthe (nord)";01/01/2009 00:00:00,000000000;""
+256;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO158";"RB-Pointe Hyacinthe (ouest)";"MF7";"RB-Pointe Hyacinthe (ouest)";01/01/2009 00:00:00,000000000;""
+257;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO159";"RB-Pointe Royale";"MF8";"RB-Pointe Royale";01/01/2009 00:00:00,000000000;""
+258;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO160";"RB-Pont Dore";"MF9";"RB-Pont Dore";01/01/2009 00:00:00,000000000;""
+259;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO161";"RB-Four à Chaux";"MFA";"RB-Four à Chaux";01/01/2009 00:00:00,000000000;""
+260;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO162";"RB-Pontalery";"MFB";"RB-Pontalery";01/01/2009 00:00:00,000000000;""
+261;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO164";"RB-Pointe Lynch";"MFD";"RB-Pointe Lynch";01/01/2009 00:00:00,000000000;""
+262;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO166";"RB-Pointe l'Ecurie (est)";"MFF";"RB-Pointe l'Ecurie (est)";01/01/2009 00:00:00,000000000;""
+263;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO167";"RB-Pointe l'Ecurie (sud)";"MFG";"RB-Pointe l'Ecurie (sud)";01/01/2009 00:00:00,000000000;""
+264;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO168";"RB-Pointe Rouge (sud)";"MFH";"RB-Pointe Rouge (sud)";01/01/2009 00:00:00,000000000;""
+265;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO169";"RB-Pointe Rouge (nord)";"MFI";"RB-Pointe Rouge (nord)";01/01/2009 00:00:00,000000000;""
+266;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO170";"RB-Baie de Cayol";"MFJ";"RB-Baie de Cayol";01/01/2009 00:00:00,000000000;""
+267;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO171";"RB-Petit Galion-Pointe Jean Claude";"MFK";"RB-Petit Galion-Pointe Jean Claude";01/01/2009 00:00:00,000000000;""
+268;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO172";"RB-Ilets du Robert";"MFL";"RB-Ilets du Robert";01/01/2009 00:00:00,000000000;""
+269;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO179";"TR-Galion (Quartier Bac)";"NF1";"TR-Galion (Quartier Bac)";01/01/2009 00:00:00,000000000;""
+270;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO180";"TR-Anse Dijon";"NF2";"TR-Anse Dijon";01/01/2009 00:00:00,000000000;""
+271;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO181";"TR-Anse Belune";"NF3";"TR-Anse Belune";01/01/2009 00:00:00,000000000;""
+272;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO182";"TR-Spoutourne";"NF4";"TR-Spoutourne";01/01/2009 00:00:00,000000000;""
+273;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO184";"TR-Ecole maritime (Autre Bord)";"NF6";"TR-Ecole maritime (Autre Bord)";01/01/2009 00:00:00,000000000;""
+274;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO185";"TR-Les Raisiniers";"NF7";"TR-Les Raisiniers";01/01/2009 00:00:00,000000000;""
+275;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO186";"TR-Petit Brésil";"NF8";"TR-Petit Brésil";01/01/2009 00:00:00,000000000;""
+276;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO205";"SM-Luciole";"OF1";"SM-Luciole";01/01/2009 00:00:00,000000000;""
+277;"MA";"Martinique";"ZC01";"Martinique";"SP01";"Martinique";"UO206";"SM-Derrière Morne";"OF2";"SM-Derrière Morne";01/01/2009 00:00:00,000000000;""
1
0