Author: bleny Date: 2011-02-28 10:32:35 +0000 (Mon, 28 Feb 2011) New Revision: 1045 Log: refactor csv Import for terrestrial divisions Added: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ 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/TerrestrialDivisionImportModel.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialLocationImportModel.java Removed: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/SamplingPlanImportModel.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/TerrestrialLocationImportModel.java 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/ImportableColumn.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumnImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueSetter.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java Added: 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 (rev 0) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Common.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -0,0 +1,30 @@ +package fr.ifremer.wao.io.csv2; + +import org.apache.commons.beanutils.BeanUtils; + +public class Common { + + public static class StringValueParser implements ValueParser<String> { + @Override + public String parse(String value) { + return value; + } + } + + public static final ValueParser<String> STRING_VALUE_PARSER = new StringValueParser(); + + public static class BeanProperty<E, T> implements ValueSetter<E, T> { + + protected String propertyName; + + BeanProperty(String propertyName) { + this.propertyName = propertyName; + } + + @Override + public void set(E bean, T value) throws Exception { + BeanUtils.setProperty(bean, propertyName, 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-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/Import.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -220,7 +220,7 @@ protected void readFirstLine() { try { - boolean emptyFile = ! reader.readRecord(); + boolean emptyFile = ! reader.readRecord(); if (emptyFile) { throw new IllegalArgumentException("CSV file has no line"); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumn.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumn.java 2011-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumn.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -29,5 +29,5 @@ T parseValue(String value); - void setValue(E object, T value); + void setValue(E object, T value) throws Exception; } Modified: 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-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ImportableColumnImpl.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -20,6 +20,8 @@ */ package fr.ifremer.wao.io.csv2; +import org.apache.commons.beanutils.BeanUtils; + public class ImportableColumnImpl<E, T> implements ImportableColumn<E, T> { protected String headerName; @@ -32,19 +34,42 @@ protected ValueSetter<E, T> valueSetter; + protected ImportableColumnImpl() {} + /** a new <strong>ignored</strong> header */ - public ImportableColumnImpl(String headerName) { - this.headerName = headerName; - ignored = true; + 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 ImportableColumnImpl(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter) { + 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; @@ -70,7 +95,7 @@ } @Override - public void setValue(E object, T value) { + public void setValue(E object, T value) throws Exception { if ( ! isIgnored()) { if (valueSetter == null) { throw new UnsupportedOperationException("no setter provided"); Deleted: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/SamplingPlanImportModel.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/SamplingPlanImportModel.java 2011-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/SamplingPlanImportModel.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -1,63 +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 fr.ifremer.wao.bean.ObsProgram; -import fr.ifremer.wao.entity.SampleRow; -import fr.ifremer.wao.entity.SampleRowImpl; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -public class SamplingPlanImportModel implements ImportModel<SampleRow> { - - protected ObsProgram obsProgram; - - public SamplingPlanImportModel(ObsProgram obsProgram) { - this.obsProgram = obsProgram; - } - - @Override - public void pushCsvHeaderNames(List<String> headerNames) { - // discover months - } - - @Override - public SampleRow newEmptyInstance() { - SampleRow newSampleRow = new SampleRowImpl(); - newSampleRow.setObsProgram(obsProgram); - return newSampleRow; - } - - @Override - public Collection<ImportableColumn> getAllColumns() { - - if (obsProgram == ObsProgram.OBSMER) { - // add obsMer-only field - } - if (obsProgram == ObsProgram.OBSVENTE) { - // add obsVente-only field - } - - throw new UnsupportedOperationException("not yet implemented"); - } -} Deleted: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/TerrestrialLocationImportModel.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/TerrestrialLocationImportModel.java 2011-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/TerrestrialLocationImportModel.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -1,208 +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 fr.ifremer.wao.bean.LocationType; -import fr.ifremer.wao.entity.TerrestrialLocation; -import fr.ifremer.wao.entity.TerrestrialLocationImpl; -import org.apache.commons.lang.StringUtils; - -import java.util.ArrayList; -import java.util.List; - -public class TerrestrialLocationImportModel implements ImportModel<TerrestrialLocation> { - - protected List<ImportableColumn> allHeaders; - - @Override - public void pushCsvHeaderNames(List<String> headerNames) { - // nothing to do - } - - @Override - public TerrestrialLocation newEmptyInstance() { - return new TerrestrialLocationImpl(); - } - - static class StringValueParser implements ValueParser<String> { - @Override - public String parse(String value) { - return value; - } - } - - protected StringValueParser stringValueParser = new StringValueParser(); - - protected String getCode(String value) { - String code = null; - if (StringUtils.isNotBlank(value)) { - int firstSpaceIndex = value.indexOf(" "); - code = value.substring(0, firstSpaceIndex); - } - return code; - } - - protected String getName(String value) { - String name = null; - if (StringUtils.isNotBlank(value)) { - int firstSpaceIndex = value.indexOf(" "); - name = value.substring(firstSpaceIndex + 1, value.length()); - } - return name; - } - - public TerrestrialLocationImportModel() { - - allHeaders = new ArrayList<ImportableColumn>(); - - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, LocationType>("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"); - } - }, - new ValueSetter<TerrestrialLocation, LocationType>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, LocationType value) { - terrestrialLocation.setLocationType(value); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("TLIEU_LIB")); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("LIEU_COD", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setCode(value); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("LIEU_LIB", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setName(value); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Port", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setPortCode(getCode(value)); - terrestrialLocation.setPortName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Quartier maritime", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setDistrictCode(getCode(value)); - terrestrialLocation.setDistrictName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Département INSEE", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setDepartmentCode(getCode(value)); - terrestrialLocation.setDepartmentName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Sous-région IFREMER", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setSubRegionIfremerCode(getCode(value)); - terrestrialLocation.setSubRegionIfremerName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Région Ifremer", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setRegionIfremerCode(getCode(value)); - terrestrialLocation.setRegionIfremerName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Région INSEE", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setRegionCode(getCode(value)); - terrestrialLocation.setRegionName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Façade maritime", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setSeaboardCode(getCode(value)); - terrestrialLocation.setSeaboardName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Type de Région", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setRegionTypeCode(getCode(value)); - terrestrialLocation.setRegionTypeName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("Littoral FAO", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setCoastFAOCode(getCode(value)); - terrestrialLocation.setCoastFAOName(getName(value)); - } - } - )); - allHeaders.add(new ImportableColumnImpl<TerrestrialLocation, String>("PAYS", stringValueParser, - new ValueSetter<TerrestrialLocation, String>() { - @Override - public void set(TerrestrialLocation terrestrialLocation, String value) { - terrestrialLocation.setCountryCode(getCode(value)); - terrestrialLocation.setCountryName(getName(value)); - } - } - )); - } - - @Override - public List<ImportableColumn> getAllColumns() { - return allHeaders; - } -} Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueSetter.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueSetter.java 2011-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/ValueSetter.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -22,6 +22,6 @@ public interface ValueSetter<E, T> { - void set(E object, T value); + void set(E object, T value) throws Exception; } Copied: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java (from rev 1044, trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/SamplingPlanImportModel.java) =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java (rev 0) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportModel.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -0,0 +1,64 @@ +/* + * #%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.io.csv2.ImportModel; +import fr.ifremer.wao.io.csv2.ImportableColumn; + +import java.util.Collection; +import java.util.List; + +public class SamplingPlanImportModel implements ImportModel<SampleRow> { + + protected ObsProgram obsProgram; + + public SamplingPlanImportModel(ObsProgram obsProgram) { + this.obsProgram = obsProgram; + } + + @Override + public void pushCsvHeaderNames(List<String> headerNames) { + // discover months + } + + @Override + public SampleRow newEmptyInstance() { + SampleRow newSampleRow = new SampleRowImpl(); + newSampleRow.setObsProgram(obsProgram); + return newSampleRow; + } + + @Override + public Collection<ImportableColumn> getAllColumns() { + + if (obsProgram == ObsProgram.OBSMER) { + // add obsMer-only field + } + if (obsProgram == ObsProgram.OBSVENTE) { + // add obsVente-only field + } + + throw new UnsupportedOperationException("not yet implemented"); + } +} Added: 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 (rev 0) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -0,0 +1,91 @@ +package fr.ifremer.wao.io.csv2.models; + +import fr.ifremer.wao.entity.TerrestrialDivision; +import fr.ifremer.wao.entity.TerrestrialDivisionImpl; +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.ValueParser; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class TerrestrialDivisionImportModel implements ImportModel<TerrestrialDivision> { + + /** Existing ports + * key should be an terrestrial location id {@link fr.ifremer.wao.entity.TerrestrialLocation#getCode()} + * and all the values must have {@link fr.ifremer.wao.entity.TerrestrialLocation#getLocationType()} at + * {@link fr.ifremer.wao.bean.LocationType#PORT}. + */ + protected Map<String, TerrestrialLocation> ports; + + /** all valid {@link fr.ifremer.wao.entity.TerrestrialLocation#getRegionIfremerCode()} values. + * for validation purpose only */ + protected Set<String> regionCodes; + + public TerrestrialDivisionImportModel(Map<String, TerrestrialLocation> ports, Set<String> regionCodes) { + this.ports = ports; + this.regionCodes = regionCodes; + } + + @Override + public void pushCsvHeaderNames(List<String> headerNames) { + // nothing to do + } + + @Override + public TerrestrialDivision newEmptyInstance() { + return new TerrestrialDivisionImpl(); + } + + @Override + public Collection<ImportableColumn> getAllColumns() { + List<ImportableColumn> columns = new ArrayList<ImportableColumn>(); + + columns.add(ImportableColumnImpl.newMandatoryColumn("ID_STRATE", TerrestrialDivision.PROPERTY_CODE)); + // add validation while parsing + columns.add(ImportableColumnImpl.newMandatoryColumn( + "REGION_IFREMER_COD", + // just validate the region code + new ValueParser<String>() { + @Override + public String parse(String 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( + "LIEU_OBSERVATION_COD", + // the value given is a code of a port, let's find and associate + new ValueParser<TerrestrialLocation>() { + @Override + public TerrestrialLocation parse(String locationCode) { + TerrestrialLocation port = ports.get(locationCode); + if (port == null) { + throw new IllegalArgumentException("Le code '" + locationCode + "' n'est pas un code de lieu valide"); + } + return port; + } + }, + TerrestrialDivision.PROPERTY_PORT)); + columns.add(ImportableColumnImpl.newIgnoredColumn("LIEU_OBSERVATION_LIB")); + columns.add(ImportableColumnImpl.newIgnoredColumn("DATE_DEBUT")); + columns.add(ImportableColumnImpl.newIgnoredColumn("DATE_FIN")); + + return columns; + } +} Copied: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialLocationImportModel.java (from rev 1044, trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/TerrestrialLocationImportModel.java) =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialLocationImportModel.java (rev 0) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialLocationImportModel.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -0,0 +1,191 @@ +/* + * #%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.LocationType; +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.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 java.util.ArrayList; +import java.util.List; + +public class TerrestrialLocationImportModel implements ImportModel<TerrestrialLocation> { + + protected List<ImportableColumn> allHeaders; + + @Override + public void pushCsvHeaderNames(List<String> headerNames) { + // nothing to do + } + + @Override + public TerrestrialLocation newEmptyInstance() { + return new TerrestrialLocationImpl(); + } + + protected String getCode(String value) { + String code = null; + if (StringUtils.isNotBlank(value)) { + int firstSpaceIndex = value.indexOf(" "); + code = value.substring(0, firstSpaceIndex); + } + return code; + } + + protected String getName(String value) { + String name = null; + if (StringUtils.isNotBlank(value)) { + int firstSpaceIndex = value.indexOf(" "); + name = value.substring(firstSpaceIndex + 1, value.length()); + } + return name; + } + + public TerrestrialLocationImportModel() { + + allHeaders = new ArrayList<ImportableColumn>(); + + 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; + } + 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); + } + } + )); + 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)); + } + } + )); + 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)); + } + } + )); + 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)); + } + } + )); + 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)); + } + } + )); + 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", + new ValueSetter<TerrestrialLocation, String>() { + @Override + public void set(TerrestrialLocation terrestrialLocation, String value) { + terrestrialLocation.setRegionCode(getCode(value)); + terrestrialLocation.setRegionName(getName(value)); + } + } + )); + allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Façade maritime", + new ValueSetter<TerrestrialLocation, String>() { + @Override + public void set(TerrestrialLocation terrestrialLocation, String value) { + terrestrialLocation.setSeaboardCode(getCode(value)); + terrestrialLocation.setSeaboardName(getName(value)); + } + } + )); + allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Type de Région", + new ValueSetter<TerrestrialLocation, String>() { + @Override + public void set(TerrestrialLocation terrestrialLocation, String value) { + terrestrialLocation.setRegionTypeCode(getCode(value)); + terrestrialLocation.setRegionTypeName(getName(value)); + } + } + )); + allHeaders.add(ImportableColumnImpl.newMandatoryColumn("Littoral FAO", + new ValueSetter<TerrestrialLocation, String>() { + @Override + public void set(TerrestrialLocation terrestrialLocation, String value) { + terrestrialLocation.setCoastFAOCode(getCode(value)); + 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)); + } + } + )); + } + + @Override + public List<ImportableColumn> getAllColumns() { + return allHeaders; + } +} 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-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -48,15 +48,11 @@ import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.entity.TerrestrialLocationDAO; import fr.ifremer.wao.entity.TerrestrialLocationImpl; -import fr.ifremer.wao.entity.TranslatableEntity; -import fr.ifremer.wao.entity.Translation; -import fr.ifremer.wao.entity.TranslationDAO; import fr.ifremer.wao.io.csv.ImportHelper; import fr.ifremer.wao.io.csv.WaoCsvHeader.FISHING_ZONE; import fr.ifremer.wao.io.csv2.Import; import fr.ifremer.wao.io.csv2.ImportModel; -import fr.ifremer.wao.io.csv2.TerrestrialLocationImportModel; -import org.apache.commons.lang.LocaleUtils; +import fr.ifremer.wao.io.csv2.models.TerrestrialLocationImportModel; import org.apache.commons.lang.StringUtils; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; @@ -68,7 +64,6 @@ import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; Modified: trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties =================================================================== --- trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/main/resources/i18n/wao-business_fr_FR.properties 2011-02-28 10:32:35 UTC (rev 1045) @@ -1,159 +1,159 @@ ContactPieChartConstant.OTHER=Autres -ContactPieChartConstant.REALIZED=R\u00e9alis\u00e9s -ContactPieChartConstant.REFUSED=Refus\u00e9s -ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00e9finitif +ContactPieChartConstant.REALIZED=R\u00E9alis\u00E9s +ContactPieChartConstant.REFUSED=Refus\u00E9s +ContactState.CONTACT_DEFINITELY_REFUSED=Refus d\u00E9finitif ContactState.CONTACT_REFUSED=Refus ContactState.CONTACT_START=Contact pris -ContactState.OBSERVATION_CANCELLED=Annul\u00e9e -ContactState.OBSERVATION_DONE=Observation r\u00e9alis\u00e9e -ContactState.OBSERVATION_EXPECTED=Observation programm\u00e9e -DataReliability.CORRECTION_ASKED=Correction demand\u00e9e +ContactState.OBSERVATION_CANCELLED=Annul\u00E9e +ContactState.OBSERVATION_DONE=Observation r\u00E9alis\u00E9e +ContactState.OBSERVATION_EXPECTED=Observation programm\u00E9e +DataReliability.CORRECTION_ASKED=Correction demand\u00E9e DataReliability.DOUBTFUL=Douteuse -DataReliability.NOT_PROVIDED=Non contr\u00f4l\u00e9e +DataReliability.NOT_PROVIDED=Non contr\u00F4l\u00E9e DataReliability.NOT_RELIABLE=Non exploitable DataReliability.RELIABLE=Exploitable DataReliability.UNKNOWN=Inconnue -GlobalIndicatorValue.BAD=P\u00e9nalit\u00e9 de niveau 1 +GlobalIndicatorValue.BAD=P\u00E9nalit\u00E9 de niveau 1 GlobalIndicatorValue.GOOD=Bonus de niveau 1 GlobalIndicatorValue.NEUTRAL=Conforme au cahier des charges -GlobalIndicatorValue.VERY_BAD=P\u00e9nalit\u00e9 de niveau 2 +GlobalIndicatorValue.VERY_BAD=P\u00E9nalit\u00E9 de niveau 2 GlobalIndicatorValue.VERY_GOOD=Bonus de niveau 2 -LocationType.AUCTION=Cri\u00e9e +LocationType.AUCTION=Cri\u00E9e LocationType.PORT=Port ObsProgram.OBSMER=ObsMer ObsProgram.OBSVENTE=ObsVente -SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultan\u00e9 \: Toutes esp\u00e8ces commerciales -SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1+G2 -SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultan\u00e9 \: esp\u00e8ces G1 -SamplingStrategy.SPECIFIC_STOCK=Stock sp\u00e9cifique -SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un m\u00eame navire conforme aux exigences -SynthesisId.GRAPH_SAMPLING=Taux de r\u00e9alisation du plan d'\u00e9chantillonage -SynthesisId.IND_ALLEGRO_REACTIVITY=D\u00e9lais de transmission des donn\u00e9es -SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqu\u00e9s -SynthesisId.IND_CONTACT_STATE=\u00c9tats des contacts -SynthesisId.IND_DATA_RELIABILITY=Qualit\u00e9 de la donn\u00e9e +SamplingStrategy.SIMULTANEOUS_ALL_SPECIES=Simultan\u00E9 \: Toutes esp\u00E8ces commerciales +SamplingStrategy.SIMULTANEOUS_G1_G2_SPECIES=Simultan\u00E9 \: esp\u00E8ces G1+G2 +SamplingStrategy.SIMULTANEOUS_G1_SPECIES=Simultan\u00E9 \: esp\u00E8ces G1 +SamplingStrategy.SPECIFIC_STOCK=Stock sp\u00E9cifique +SynthesisId.GRAPH_BOARDING=Taux d'embarquement sur un m\u00EAme navire conforme aux exigences +SynthesisId.GRAPH_SAMPLING=Taux de r\u00E9alisation du plan d'\u00E9chantillonage +SynthesisId.IND_ALLEGRO_REACTIVITY=D\u00E9lais de transmission des donn\u00E9es +SynthesisId.IND_COMPLIANCE_BOARDING=Respect du nombre d'observateurs embarqu\u00E9s +SynthesisId.IND_CONTACT_STATE=\u00C9tats des contacts +SynthesisId.IND_DATA_RELIABILITY=Qualit\u00E9 de la donn\u00E9e UserRole.ADMIN=Administrateur UserRole.COORDINATOR=Coordinateur -UserRole.GUEST=Invit\u00e9 +UserRole.GUEST=Invit\u00E9 UserRole.OBSERVER=Observateur UserRole.PROFESSIONAL=Professionnel -fr.ifremer.wao.entity.FishingGearDCF.=Non sp\u00e9cifi\u00e9 -fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorqu\u00e9es par bateau -fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues \u00e0 main -fr.ifremer.wao.entity.FishingGearDCF.FAR=Pi\u00e8ges a\u00e9riens -fr.ifremer.wao.entity.FishingGearDCF.FCN=\u00c9perviers -fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-sp\u00e9cifi\u00e9s) -fr.ifremer.wao.entity.FishingGearDCF.FIX=Pi\u00e8ges (non-sp\u00e9cifi\u00e9s) -fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pi\u00e8ges fixes non couverts +fr.ifremer.wao.entity.FishingGearDCF.=Non sp\u00E9cifi\u00E9 +fr.ifremer.wao.entity.FishingGearDCF.DRB=Dragues remorqu\u00E9es par bateau +fr.ifremer.wao.entity.FishingGearDCF.DRH=Dragues \u00E0 main +fr.ifremer.wao.entity.FishingGearDCF.FAR=Pi\u00E8ges a\u00E9riens +fr.ifremer.wao.entity.FishingGearDCF.FCN=\u00C9perviers +fr.ifremer.wao.entity.FishingGearDCF.FG=Autres engins retombants (non-sp\u00E9cifi\u00E9s) +fr.ifremer.wao.entity.FishingGearDCF.FIX=Pi\u00E8ges (non-sp\u00E9cifi\u00E9s) +fr.ifremer.wao.entity.FishingGearDCF.FPN=Filets-pi\u00E8ges fixes non couverts fr.ifremer.wao.entity.FishingGearDCF.FPO=Nasses (casiers) -fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00e0 l'\u00e9talage (diables) +fr.ifremer.wao.entity.FishingGearDCF.FSN=Filets \u00E0 l'\u00E9talage (diables) fr.ifremer.wao.entity.FishingGearDCF.FWR=Barrages, parcs, bordigues, etc. fr.ifremer.wao.entity.FishingGearDCF.FYK=Verveux -fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00e9lants (non sp\u00e9cifi\u00e9s) -fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00e0 civelles -fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00e9cifi\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.GEN=Filets maillants et filets emm\u00E9lants (non sp\u00E9cifi\u00E9s) +fr.ifremer.wao.entity.FishingGearDCF.GES=Tamis \u00E0 civelles +fr.ifremer.wao.entity.FishingGearDCF.GN=Filets maillants (non sp\u00E9cifi\u00E9s) fr.ifremer.wao.entity.FishingGearDCF.GNC=Filets maillants encerclants -fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00e9rivants (filets d\u00e9rivants) +fr.ifremer.wao.entity.FishingGearDCF.GND=Filets maillants d\u00E9rivants (filets d\u00E9rivants) fr.ifremer.wao.entity.FishingGearDCF.GNF=Filets maillants fixes (sur perches) -fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00e9s (ancr\u00e9s) -fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00e9mailleurs -fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00e9mails et filets maillants combin\u00e9s -fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00e9mails +fr.ifremer.wao.entity.FishingGearDCF.GNS=Filets maillants cal\u00E9s (ancr\u00E9s) +fr.ifremer.wao.entity.FishingGearDCF.GT=Tr\u00E9mailleurs +fr.ifremer.wao.entity.FishingGearDCF.GTN=Tr\u00E9mails et filets maillants combin\u00E9s +fr.ifremer.wao.entity.FishingGearDCF.GTR=Tr\u00E9mails fr.ifremer.wao.entity.FishingGearDCF.HAR=Harpons -fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00e9canis\u00e9es +fr.ifremer.wao.entity.FishingGearDCF.HMD=Dragues m\u00E9canis\u00E9es fr.ifremer.wao.entity.FishingGearDCF.HMP=Pompes -fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00e9colte (non sp\u00e9cifi\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.HMX=Engins de r\u00E9colte (non sp\u00E9cifi\u00E9s) fr.ifremer.wao.entity.FishingGearDCF.LA=Filets tournants sans coulisse (filet lamparo) -fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00e0 main et lignes avec cannes -fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00e0 main et lignes \u00e0 cannes -fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00e9cifi\u00e9es) -fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00e9rivantes -fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00e9es ou semi-flottantes -fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00e9s (non sp\u00e9cifi\u00e9s) -fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00e9s man\u0153uvr\u00e9es du bateau -fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00e9s portatifs -fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00e9s fixes man\u0153uvr\u00e9es du rivage -fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00eene -fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00e7ons et lignes (non sp\u00e9cifi\u00e9s) +fr.ifremer.wao.entity.FishingGearDCF.LHM=Lignes \u00E0 main et lignes avec cannes +fr.ifremer.wao.entity.FishingGearDCF.LHP=Lignes \u00E0 main et lignes \u00E0 cannes +fr.ifremer.wao.entity.FishingGearDCF.LL=Palangres (non sp\u00E9cifi\u00E9es) +fr.ifremer.wao.entity.FishingGearDCF.LLD=Palangres d\u00E9rivantes +fr.ifremer.wao.entity.FishingGearDCF.LLS=Palangres cal\u00E9es ou semi-flottantes +fr.ifremer.wao.entity.FishingGearDCF.LN=Filets soulev\u00E9s (non sp\u00E9cifi\u00E9s) +fr.ifremer.wao.entity.FishingGearDCF.LNB=Filets soulev\u00E9s man\u0153uvr\u00E9es du bateau +fr.ifremer.wao.entity.FishingGearDCF.LNP=Filets soulev\u00E9s portatifs +fr.ifremer.wao.entity.FishingGearDCF.LNS=Filets soulev\u00E9s fixes man\u0153uvr\u00E9es du rivage +fr.ifremer.wao.entity.FishingGearDCF.LTL=lignes de tra\u00EEne +fr.ifremer.wao.entity.FishingGearDCF.LX=Hame\u00E7ons et lignes (non sp\u00E9cifi\u00E9s) fr.ifremer.wao.entity.FishingGearDCF.MIS=Divers -fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00e9cifi\u00e9s -fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00e0 panneaux (non sp\u00e9cifi\u00e9) -fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00e0 panneaux -fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00e9lagiques \u00e0 panneaux -fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00e0 panneaux +fr.ifremer.wao.entity.FishingGearDCF.NK=Engins inconnus ou non sp\u00E9cifi\u00E9s +fr.ifremer.wao.entity.FishingGearDCF.OT=Chaluts \u00E0 panneaux (non sp\u00E9cifi\u00E9) +fr.ifremer.wao.entity.FishingGearDCF.OTB=Chalut de fond \u00E0 panneaux +fr.ifremer.wao.entity.FishingGearDCF.OTM=Chaluts p\u00E9lagiques \u00E0 panneaux +fr.ifremer.wao.entity.FishingGearDCF.OTT=Chaluts jumeaux \u00E0 panneaux fr.ifremer.wao.entity.FishingGearDCF.PS=Filets tournants avec coulisse (sennes coulissantes) -fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par un bateau -fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00e9es par deux bateaux -fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00e9cifi\u00e9) +fr.ifremer.wao.entity.FishingGearDCF.PS1=Filets tournants, sennes coulissantes man\u0153uvr\u00E9es par un bateau +fr.ifremer.wao.entity.FishingGearDCF.PS2=Filets tournants, sennes coulissantes man\u0153uvr\u00E9es par deux bateaux +fr.ifremer.wao.entity.FishingGearDCF.PT=Chalut-b\u0153ufs (non sp\u00E9cifi\u00E9) fr.ifremer.wao.entity.FishingGearDCF.PTB=Chalut-b\u0153ufs de fond -fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00e9lagiques -fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00eache r\u00e9vr\u00e9ative +fr.ifremer.wao.entity.FishingGearDCF.PTM=Chalut-b\u0153ufs p\u00E9lagiques +fr.ifremer.wao.entity.FishingGearDCF.RG=Engins de p\u00EAche r\u00E9vr\u00E9ative fr.ifremer.wao.entity.FishingGearDCF.SB=Sennes de plages fr.ifremer.wao.entity.FishingGearDCF.SDN=Sennes danoises -fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00e9es par deux bateaux -fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00e9cossaises -fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00e9es \u00e0 bord -fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00e9cifi\u00e9es) -fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00e9cifi\u00e9) -fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00e0 perche -fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00e0 langoustines -fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00e0 crevettes -fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00e9lagique (non sp\u00e9cifi\u00e9) -fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00e0 crevettes -fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00e9cifi\u00e9) -fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00e9cifi\u00e9 +fr.ifremer.wao.entity.FishingGearDCF.SPR=Sennes man\u0153uvr\u00E9es par deux bateaux +fr.ifremer.wao.entity.FishingGearDCF.SSC=Sennes \u00E9cossaises +fr.ifremer.wao.entity.FishingGearDCF.SV=Sennes hal\u00E9es \u00E0 bord +fr.ifremer.wao.entity.FishingGearDCF.SW=Sennes (non sp\u00E9cifi\u00E9es) +fr.ifremer.wao.entity.FishingGearDCF.TB=Chalut de fond (non sp\u00E9cifi\u00E9) +fr.ifremer.wao.entity.FishingGearDCF.TBB=Chaluts \u00E0 perche +fr.ifremer.wao.entity.FishingGearDCF.TBN=Chalut \u00E0 langoustines +fr.ifremer.wao.entity.FishingGearDCF.TBS=Chalut \u00E0 crevettes +fr.ifremer.wao.entity.FishingGearDCF.TM=Chalut p\u00E9lagique (non sp\u00E9cifi\u00E9) +fr.ifremer.wao.entity.FishingGearDCF.TMS=Chalut \u00E0 crevettes +fr.ifremer.wao.entity.FishingGearDCF.TX=Autre chalut (non sp\u00E9cifi\u00E9) +fr.ifremer.wao.entity.TargetSpeciesDCF.=Non sp\u00E9cifi\u00E9 fr.ifremer.wao.entity.TargetSpeciesDCF.ALG=Algues -fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00e8ces catadromes -fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00e9s +fr.ifremer.wao.entity.TargetSpeciesDCF.CAT=Esp\u00E8ces catadromes +fr.ifremer.wao.entity.TargetSpeciesDCF.CRU=Crustac\u00E9s fr.ifremer.wao.entity.TargetSpeciesDCF.CSJ=Coquilles Saint-Jacques -fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00e8ces d\u00e9mersales -fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00e8ces d'eaux profondes +fr.ifremer.wao.entity.TargetSpeciesDCF.DEF=Esp\u00E8ces d\u00E9mersales +fr.ifremer.wao.entity.TargetSpeciesDCF.DWS=Esp\u00E8ces d'eaux profondes fr.ifremer.wao.entity.TargetSpeciesDCF.FIN=Poisson plats -fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00e9lagiques +fr.ifremer.wao.entity.TargetSpeciesDCF.LPF=Grands p\u00E9lagiques fr.ifremer.wao.entity.TargetSpeciesDCF.MOL=Mollusques -fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00e9lagiques -wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut pr\u00e9ciser dans le commentaire administrateur pourquoi la donn\u00e9e est '%s' -wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut pr\u00e9ciser la qualit\u00e9 de la donn\u00e9e avant de valider +fr.ifremer.wao.entity.TargetSpeciesDCF.SPF=Petits p\u00E9lagiques +wao.business.contact.validation.commentAdminNecessaryForDataReliability=Il faut pr\u00E9ciser dans le commentaire administrateur pourquoi la donn\u00E9e est '%s' +wao.business.contact.validation.dataReliabilityMissingForValidation=Il faut pr\u00E9ciser la qualit\u00E9 de la donn\u00E9e avant de valider wao.business.entity.UserProfile.description=%s sur %s%s -wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseign\u00e9 dans WAO l'information suivante \:\n\nMar\u00e9e \: %s\nM\u00e9tier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao +wao.business.mammalsCapture.mail.message=Bonjour,\n\nUn observateur du programme Obsmer a renseign\u00E9 dans WAO l'information suivante \:\n\nMar\u00E9e \: %s\nM\u00E9tier \: %s\n\nCapture accidentelle \:\n%s\n\nCordialement,\n\nLe programme Obsmer\nhttp\://www.ifremer.fr/wao wao.business.mammalsCapture.mail.subject=Obsmer WAO\: Information sur capture accidentelle wao.business.other=Autre wao.business.readOnly=(lecture seule) -wao.error.boat.canCreateContact=Impossible de cr\u00e9er un nouveau contact pour la soci\u00e9t\u00e9 %1$s et le navire %2$s (%3$d) -wao.error.boat.getNbBoarding=Impossible de r\u00e9cup\u00e9rer le nombre d'embarquements r\u00e9els depuis le %1$s -wao.error.boatInfos.getNbBoardingForCompany=Impossible de r\u00e9cup\u00e9rer le nombre d'embarquements r\u00e9els depuis le %1$s pour la soci\u00e9t\u00e9 %2$s +wao.error.boat.canCreateContact=Impossible de cr\u00E9er un nouveau contact pour la soci\u00E9t\u00E9 %1$s et le navire %2$s (%3$d) +wao.error.boat.getNbBoarding=Impossible de r\u00E9cup\u00E9rer le nombre d'embarquements r\u00E9els depuis le %1$s +wao.error.boatInfos.getNbBoardingForCompany=Impossible de r\u00E9cup\u00E9rer le nombre d'embarquements r\u00E9els depuis le %1$s pour la soci\u00E9t\u00E9 %2$s wao.error.context.close=Une erreur est survenue pendant la fermeture du contexte principale de ToPIA wao.error.context.encodeString= -wao.error.context.getRootContext=Une erreur est survenue pour la r\u00e9cup\u00e9ration du contexte principale de ToPIA +wao.error.context.getRootContext=Une erreur est survenue pour la r\u00E9cup\u00E9ration du contexte principale de ToPIA wao.error.context.parse=Une erreur est survenue pendant le chargement de la configuration du fichier %1$s wao.error.context.rollback=Une erreur est survenue pendant l'annulation de la transaction courante -wao.error.context.start=Une erreur est survenue pendant le d\u00e9marrage de l'application +wao.error.context.start=Une erreur est survenue pendant le d\u00E9marrage de l'application wao.error.context.stop=Une erreur est survenue pendant la fermeture de l'application -wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00e9es r\u00e9els pour le mois de %1$s [ligne \: %2$s] -wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00e9crit par %1$s -wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00e9er ou modifier les informations li\u00e9s au navire %1$d pour la soci\u00e9t\u00e9 %2$s -wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00e9lectionn\u00e9s +wao.error.sampleMonth.addRealTideTime=Impossible d'enregistrer le nombre de mar\u00E9es r\u00E9els pour le mois de %1$s [ligne \: %2$s] +wao.error.sampleRow.saveSampleRowLog=Impossible d'enregistrer le commentaire \u00E9crit par %1$s +wao.error.serviceBoat.createUpdateCompanyBoatInfos=Impossible de cr\u00E9er ou modifier les informations li\u00E9s au navire %1$d pour la soci\u00E9t\u00E9 %2$s +wao.error.serviceBoat.exportBoatCsv=Impossible d'exporter les navires s\u00E9lectionn\u00E9s wao.error.serviceBoat.getActivityCalendarLogAccessFile= wao.error.serviceBoat.getActivityCalendarLogFile= wao.error.serviceBoat.getBoat=Impossible de charger le navire -wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00e9cup\u00e9rer les navires avec un nom commencant par '%1$s' +wao.error.serviceBoat.getBoatNamesStartWith=Impossible de r\u00E9cup\u00E9rer les navires avec un nom commencant par '%1$s' wao.error.serviceBoat.getBoatsByFilter=Impossible de filtrer la liste des navires -wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00eene d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00e9der 6 chiffres -wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00e9cup\u00e9rer les informations du navire immatricul\u00e9 %1$d pour la soci\u00e9t\u00e9 %2$s -wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00e9 du navire %1$s (%2$d) +wao.error.serviceBoat.getBoatsByImmatriculations=La cha\u00EEne d'immatriculations est incorrect \! Chaque immatriculation doit poss\u00E9der 6 chiffres +wao.error.serviceBoat.getCompanyBoatInfos=Impossible de r\u00E9cup\u00E9rer les informations du navire immatricul\u00E9 %1$d pour la soci\u00E9t\u00E9 %2$s +wao.error.serviceBoat.getLastActivityCalendar=Impossible de charger le dernier calendrier d'activit\u00E9 du navire %1$s (%2$d) wao.error.serviceBoat.getNbBoatsByFilter=Impossible de filtrer la liste des navires wao.error.serviceBoat.getShipOwnerNamesContains= -wao.error.serviceBoat.importActivityCalendarCsv=Probl\u00e8me d'import du fichier CSV des calendriers d'activit\u00e9 -wao.error.serviceBoat.importBoatCsv=Probl\u00e8me d'import du fichier CSV. V\u00e9rifiez l'en-t\u00eate du fichier \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00e9tails. +wao.error.serviceBoat.importActivityCalendarCsv=Probl\u00E8me d'import du fichier CSV des calendriers d'activit\u00E9 +wao.error.serviceBoat.importBoatCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00E9tails. wao.error.serviceCartography.exportContactMotifsStatisticsKml= wao.error.serviceCartography.exportContactStatisticsKml= -wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonn\u00e9es des quartiers des navires. V\u00e9rifiez la documentation pour le bon format du fichier Kml. +wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonn\u00E9es des quartiers des navires. V\u00E9rifiez la documentation pour le bon format du fichier Kml. wao.error.serviceChart.getContactPieChartData= wao.error.serviceChart.getContactPieChartUrl= wao.error.serviceContact.exportContactCsv=Impossible d'exporter les contacts wao.error.serviceContact.getContact=Impossible de trouver le contact wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts -wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00e9s +wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00E9s wao.error.serviceContact.getNewContact=Impossible d'instancier un nouveau contact wao.error.serviceContact.importContactCsv=Impossible d'importer les contacts wao.error.serviceContact.saveComment= @@ -162,65 +162,65 @@ wao.error.serviceContact.updateSampleMonthTidesValue= wao.error.serviceContact.validateContact= wao.error.serviceNews.getNewNews= -wao.error.serviceNews.getNews=Impossible de r\u00e9cup\u00e9rer l'ensemble des news +wao.error.serviceNews.getNews=Impossible de r\u00E9cup\u00E9rer l'ensemble des news wao.error.serviceNews.saveNews=Impossible d'enregistrer la news ayant pour titre '%1$s' wao.error.serviceReferential.getAllContactStateMotifs= wao.error.serviceReferential.getAllTerrestrialDistricts= wao.error.serviceReferential.getAllTerrestrialLocations= wao.error.serviceReferential.getCodesDCF5Contains= wao.error.serviceReferential.getFacades=Impossible de charger la liste des facades -wao.error.serviceReferential.getFishingZones=Impossible de charger la liste des secteurs de p\u00eache -wao.error.serviceReferential.getProfessions=Impossible de charger la liste des m\u00e9tiers -wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00eache +wao.error.serviceReferential.getFishingZones=Impossible de charger la liste des secteurs de p\u00EAche +wao.error.serviceReferential.getProfessions=Impossible de charger la liste des m\u00E9tiers +wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00EAche wao.error.serviceReferential.getTerrestrialDistrict= wao.error.serviceReferential.importContactStateMotifs= -wao.error.serviceReferential.importDCFcodes=Impossible de cr\u00e9er le r\u00e9f\u00e9rentiel des codes DCF -wao.error.serviceReferential.importFishingZoneCsv=Probl\u00e8me d'import du fichier CSV. V\u00e9rifiez l'en-t\u00eate du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00e9tails. +wao.error.serviceReferential.importDCFcodes=Impossible de cr\u00E9er le r\u00E9f\u00E9rentiel des codes DCF +wao.error.serviceReferential.importFishingZoneCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00E9tails. wao.error.serviceReferential.importInitialContactStateMotifs= wao.error.serviceReferential.importTerrestrialLocations= wao.error.serviceReferential.updateAllContactStatesMotifs= wao.error.serviceSampling.createSampleRowLog= -wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00e9chantillon -wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'\u00e9chantillon \: %1$s -wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'\u00e9chantillonnage sur la p\u00e9riode du %1$s au %2$s +wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00E9chantillon +wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'\u00E9chantillon \: %1$s +wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'\u00E9chantillonnage sur la p\u00E9riode du %1$s au %2$s wao.error.serviceSampling.getDCFGears= wao.error.serviceSampling.getDCFSpecies= wao.error.serviceSampling.getNewProfession= wao.error.serviceSampling.getNewSampleMonth= wao.error.serviceSampling.getNewSampleRow= -wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00e9cup\u00e9rer un nouveau code pour une ligne d'\u00e9chantillonnage +wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00E9cup\u00E9rer un nouveau code pour une ligne d'\u00E9chantillonnage wao.error.serviceSampling.getNewSampleRowLog= wao.error.serviceSampling.getPrograms=Impossible de charger la liste des programmes -wao.error.serviceSampling.getSampleRow=Impossible de charger la ligne d'\u00e9chantillon ayant pour identifiant \: %1$s -wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'\u00e9chantillon ayant pour code %1$s -wao.error.serviceSampling.getSampleRowsByFilter=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage -wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00e9cup\u00e9rer la liste des lignes du plan d'\u00e9chantillonnage -wao.error.serviceSampling.importSamplingPlanCsv=Erreur \u00e0 la ligne %1$d [CODE \= %2$s] +wao.error.serviceSampling.getSampleRow=Impossible de charger la ligne d'\u00E9chantillon ayant pour identifiant \: %1$s +wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'\u00E9chantillon ayant pour code %1$s +wao.error.serviceSampling.getSampleRowsByFilter=Impossible de r\u00E9cup\u00E9rer la liste des lignes du plan d'\u00E9chantillonnage +wao.error.serviceSampling.getSampleRowsOrderedByFishingZone=Impossible de r\u00E9cup\u00E9rer la liste des lignes du plan d'\u00E9chantillonnage +wao.error.serviceSampling.importSamplingPlanCsv=Erreur \u00E0 la ligne %1$d [CODE \= %2$s] wao.error.serviceSynthesis.getAllIndicatorLogs= -wao.error.serviceSynthesis.getBoardingBoats=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es du graphique concernant les embarquements sur les navires +wao.error.serviceSynthesis.getBoardingBoats=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es du graphique concernant les embarquements sur les navires wao.error.serviceSynthesis.getComplianceBoardingIndicator= -wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de r\u00e9cup\u00e9rer l'indicateur de r\u00e9activit\u00e9 sur les dates de saisies dans Allegro +wao.error.serviceSynthesis.getContactDataInputDateReactivity=Impossible de r\u00E9cup\u00E9rer l'indicateur de r\u00E9activit\u00E9 sur les dates de saisies dans Allegro wao.error.serviceSynthesis.getContactPieChartData= wao.error.serviceSynthesis.getContactPieChartDataByBoatDistrict= wao.error.serviceSynthesis.getContactStateMotifsPieChartDataByBoatDistrict= -wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00e9cup\u00e9rer les statistiques sur les \u00e9tats des contacts +wao.error.serviceSynthesis.getContactStateStatistics=Impossible de r\u00E9cup\u00E9rer les statistiques sur les \u00E9tats des contacts wao.error.serviceSynthesis.getDataReliability= -wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es pour le graphique dynamique des efforts de mar\u00e9es -wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de r\u00e9cup\u00e9rer les donn\u00e9es concernant les indicateurs pour la synth\u00e8se globale +wao.error.serviceSynthesis.getDataSampling=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es pour le graphique dynamique des efforts de mar\u00E9es +wao.error.serviceSynthesis.getGlobalSynthesisParameters=Impossible de r\u00E9cup\u00E9rer les donn\u00E9es concernant les indicateurs pour la synth\u00E8se globale wao.error.serviceSynthesis.getGlobalSynthesisResult= -wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de r\u00e9cup\u00e9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00e9s -wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00e0 jour les param\u00e8tres de la synth\u00e8se globale +wao.error.serviceSynthesis.getNonComplianceBoardingIndicator=Impossible de r\u00E9cup\u00E9rer l'indicateur de non respect du nombre d'observateurs embarqu\u00E9s +wao.error.serviceSynthesis.updateGlobalSynthesisParameters=Impossible de mettre \u00E0 jour les param\u00E8tres de la synth\u00E8se globale wao.error.serviceUser.connect=Une erreur est survenue lors de la demande de connexion -wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00e9er l'administrateur par d\u00e9faut -wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00e9er ou de mettre \u00e0 jour la soci\u00e9t\u00e9 -wao.error.serviceUser.createUpdateUser=Impossible de cr\u00e9er ou de mettre \u00e0 jour l'utilisateur -wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00e9t\u00e9 ou de v\u00e9rifier les contraintes de suppression +wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00E9er l'administrateur par d\u00E9faut +wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00E9er ou de mettre \u00E0 jour la soci\u00E9t\u00E9 +wao.error.serviceUser.createUpdateUser=Impossible de cr\u00E9er ou de mettre \u00E0 jour l'utilisateur +wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00E9t\u00E9 ou de v\u00E9rifier les contraintes de suppression wao.error.serviceUser.deleteUser=Impossible de supprimer l'utilisateur wao.error.serviceUser.existLogin= wao.error.serviceUser.forgetPassword=Impossible d'envoyer le mail d'oubli de mot de passe -wao.error.serviceUser.getCompanies=Impossible de r\u00e9cup\u00e9rer la liste des soci\u00e9t\u00e9s +wao.error.serviceUser.getCompanies=Impossible de r\u00E9cup\u00E9rer la liste des soci\u00E9t\u00E9s wao.error.serviceUser.getCompany= wao.error.serviceUser.getNewUser=Impossible d'instancier un nouvel utilisateur -wao.error.serviceUser.getObservers=Impossible de r\u00e9cup\u00e9rer la liste des observateurs +wao.error.serviceUser.getObservers=Impossible de r\u00E9cup\u00E9rer la liste des observateurs wao.error.serviceUser.getUserRolesByLogin= -wao.error.serviceUser.getUsersByCompany=Impossible de r\u00e9cup\u00e9rer la liste des utilisateurs de la soci\u00e9t\u00e9 %1$s +wao.error.serviceUser.getUsersByCompany=Impossible de r\u00E9cup\u00E9rer la liste des utilisateurs de la soci\u00E9t\u00E9 %1$s 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-02-24 13:10:51 UTC (rev 1044) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/io/csv2/ImportTest.java 2011-02-28 10:32:35 UTC (rev 1045) @@ -24,6 +24,8 @@ import fr.ifremer.wao.bean.ValidationResult; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.TerrestrialLocation; +import fr.ifremer.wao.io.csv2.models.SamplingPlanImportModel; +import fr.ifremer.wao.io.csv2.models.TerrestrialLocationImportModel; import org.apache.commons.io.IOUtils; import org.junit.Assert; import org.junit.Ignore;