Author: bleny Date: 2014-02-26 12:06:26 +0100 (Wed, 26 Feb 2014) New Revision: 1690 Url: http://codelutin.com/projects/wao/repository/revisions/1690 Log: import CSV models and operations Added: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/RawObsDebCode.java Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/BoatGroupImportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/BoatImportExportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ContactImportExportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ContactStateMotivesImportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/FishingZoneImportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsDebSamplingPlanImportExportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerObsVenteSamplingPlanImportExportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/RawObsDebCodesImportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/TerrestrialDivisionImportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/TerrestrialLocationImportModel.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/BoatImmatriculationParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/BoatParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/CompanyParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ContactStateMotivesParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DCF5CodesParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictNamesFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictsParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/FishingZonesParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LatitudeParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LocationTypeParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LongitudeParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ObsDebCodeParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ObservedDataControlParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/PortParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/RegionParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/RegionsParser.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/SampleRowCodeParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/SampleRowParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/UserParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/UsersParserFormatter.java Property changes on: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv ___________________________________________________________________ Added: svn:mergeinfo + /branches/wao-1.5.x/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models:679-733 Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/BoatGroupImportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatGroupImportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/BoatGroupImportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,17 +21,17 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.BoatGroupImpl; import fr.ifremer.wao.entity.BoatImpl; -import fr.ifremer.wao.io.csv2.models.operations.BoatImmatriculationParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.BoatImmatriculationParserFormatter; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ImportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import org.nuiton.util.csv.ValueGetterSetter; +import org.nuiton.csv.ImportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; +import org.nuiton.csv.ValueGetterSetter; import java.util.List; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/BoatImportExportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/BoatImportExportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/BoatImportExportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,23 +21,23 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.BoatImpl; import fr.ifremer.wao.entity.FleetImpl; import fr.ifremer.wao.entity.ShipOwnerImpl; import fr.ifremer.wao.entity.TerrestrialLocation; -import fr.ifremer.wao.io.csv2.models.operations.BoatImmatriculationParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.DistrictParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.PortParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.BoatImmatriculationParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.DistrictParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.PortParserFormatter; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.Common; -import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.ImportExportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import org.nuiton.util.csv.ValueGetterSetter; +import org.nuiton.csv.Common; +import org.nuiton.csv.ExportableColumn; +import org.nuiton.csv.ImportExportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; +import org.nuiton.csv.ValueGetterSetter; import java.util.List; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ContactImportExportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ContactImportExportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ContactImportExportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,42 +21,42 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; -import fr.ifremer.wao.WaoUtils; -import fr.ifremer.wao.bean.ContactState; -import fr.ifremer.wao.bean.DataReliability; -import fr.ifremer.wao.bean.LocationType; -import fr.ifremer.wao.bean.ObsProgram; -import fr.ifremer.wao.bean.ObservationType; import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.Contact; import fr.ifremer.wao.entity.ContactImpl; +import fr.ifremer.wao.entity.ContactState; import fr.ifremer.wao.entity.ContactStateMotif; +import fr.ifremer.wao.entity.DataReliability; +import fr.ifremer.wao.entity.LocationType; import fr.ifremer.wao.entity.ObsDebCode; +import fr.ifremer.wao.entity.ObsProgram; +import fr.ifremer.wao.entity.ObservationType; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.entity.WaoUser; -import fr.ifremer.wao.io.csv2.models.operations.BoatParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.CompanyParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.ContactStateMotivesParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.LocationTypeParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.ObsDebCodeParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.ObservedDataControlParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.SampleRowParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.UserParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.UsersParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.BoatParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.CompanyParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.ContactStateMotivesParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.LocationTypeParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.ObsDebCodeParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.ObservedDataControlParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.SampleRowParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.UserParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.UsersParserFormatter; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.Common; -import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.ImportExportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import org.nuiton.util.csv.ValueFormatter; -import org.nuiton.util.csv.ValueGetter; -import org.nuiton.util.csv.ValueGetterSetter; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.Common; +import org.nuiton.csv.ExportableColumn; +import org.nuiton.csv.ImportExportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; +import org.nuiton.csv.ValueFormatter; +import org.nuiton.csv.ValueGetter; +import org.nuiton.csv.ValueGetterSetter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.HashMap; @@ -113,12 +113,12 @@ throw new RuntimeException(e); } if (locationType == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.locationTypeMissing")); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.locationTypeMissing")); } terrestrialLocation = indexedLocations.get(locationType).get(code); if (terrestrialLocation == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.wrongTerrestrialLocation", - locationType.toString(), code)); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.wrongTerrestrialLocation", + locationType.toString(), code)); } } return terrestrialLocation; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ContactStateMotivesImportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ContactStateMotivesImportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ContactStateMotivesImportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,16 +21,16 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; -import fr.ifremer.wao.WaoUtils; -import fr.ifremer.wao.bean.ContactState; +import fr.ifremer.wao.entity.ContactState; import fr.ifremer.wao.entity.ContactStateMotif; import fr.ifremer.wao.entity.ContactStateMotifImpl; -import org.nuiton.util.csv.ImportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import org.nuiton.util.csv.ValueParser; +import org.nuiton.csv.ImportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; +import org.nuiton.csv.ValueParser; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.List; @@ -67,7 +67,7 @@ @Override public String parse(String value) throws ParseException { if (value.length() != 6) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.wrongColor", value)); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.wrongColor", value)); } return value.trim(); } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/FishingZoneImportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/FishingZoneImportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/FishingZoneImportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,15 +21,15 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; import fr.ifremer.wao.entity.FishingZone; import fr.ifremer.wao.entity.FishingZoneImpl; -import fr.ifremer.wao.io.csv2.models.operations.LatitudeParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.LongitudeParserFormatter; -import org.nuiton.util.csv.ImportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; +import fr.ifremer.wao.services.service.csv.operations.LatitudeParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.LongitudeParserFormatter; +import org.nuiton.csv.ImportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; import java.util.Collection; import java.util.List; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsDebSamplingPlanImportExportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ObsDebSamplingPlanImportExportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsDebSamplingPlanImportExportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -18,32 +18,32 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; -import fr.ifremer.wao.bean.ConnectedUser; -import fr.ifremer.wao.bean.ObsProgram; -import fr.ifremer.wao.bean.ObservationType; + import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Company; +import fr.ifremer.wao.entity.ObsProgram; +import fr.ifremer.wao.entity.ObservationType; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRowImpl; import fr.ifremer.wao.entity.TerrestrialDivision; import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.entity.WaoUser; -import fr.ifremer.wao.io.csv2.models.operations.BoatParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.CompanyParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.RegionParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.SampleRowCodeParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.UsersParserFormatter; -import org.nuiton.util.csv.Common; -import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.ImportExportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import org.nuiton.util.csv.ValueGetterSetter; -import org.nuiton.util.csv.ValueParserFormatter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import fr.ifremer.wao.services.service.csv.operations.BoatParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.CompanyParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.RegionParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.SampleRowCodeParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.UsersParserFormatter; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Common; +import org.nuiton.csv.ExportableColumn; +import org.nuiton.csv.ImportExportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; +import org.nuiton.csv.ValueGetterSetter; +import org.nuiton.csv.ValueParserFormatter; import java.text.ParseException; import java.util.HashMap; @@ -56,103 +56,12 @@ */ public class ObsDebSamplingPlanImportExportModel implements ImportExportModel<SampleRow> { - private static final Logger log = - LoggerFactory.getLogger(ObsDebSamplingPlanImportExportModel.class); + private static final Log log = LogFactory.getLog(ObsDebSamplingPlanImportExportModel.class); - static class ObservationUnitParserFormatter implements ValueParserFormatter<TerrestrialDivision> { + protected static final String BOAT_HEADER_NAME = "NAVIRE_COD"; - /** Index Region code -> UO Code -> Terrestrial division. */ - protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits; + protected static final String OBSERVATION_UNIT_HEADER_NAME = "UNITE_OBSERVATION_COD"; - protected List<TerrestrialDivision> observationUnits; - - protected String currentRegionCode; - - 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.getRegionIfremer().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.isTraceEnabled()) { - for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : indexedObservationUnits.entrySet()) { - log.trace(entry.getKey()); - for (Map.Entry<String, TerrestrialDivision> unitCodesToDivision : entry.getValue().entrySet()) { - log.trace(" -> " + unitCodesToDivision.getKey() + " -> " - + unitCodesToDivision.getValue()); - } - } - } - } - - @Override - public TerrestrialDivision parse(String observationUnitCode) throws ParseException { - 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"); - } - 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) { - String observationUnitCode = ""; - if (terrestrialDivision != null) { - observationUnitCode = terrestrialDivision.getObservationUnitCode(); - } - return observationUnitCode; - } - - 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().getRegionIfremer() - .getRegionIfremerCode(); - } - return regionCode; - } - - @Override - public void set(SampleRow sampleRow, String regionCode) throws Exception { - observationUnitSetter.setCurrentRegionCode(regionCode); - } - } - protected List<TerrestrialDivision> observationUnits; protected List<WaoUser> allWaoUsers; @@ -163,24 +72,22 @@ protected List<TerrestrialLocation> allRegions; - protected ConnectedUser connectedUser; + /** Si le modèle représente un import/export pour l'admin ou pas */ + protected boolean admin; protected ModelBuilder<SampleRow> modelBuilder; - protected static final String BOAT_HEADER_NAME = "NAVIRE_COD"; - protected static final String OBSERVATION_UNIT_HEADER_NAME = "UNITE_OBSERVATION_COD"; - /** Type of observation, may be phone or work field depending of what the user is importing */ protected ObservationType observationType; /** Constructor used for import */ - public ObsDebSamplingPlanImportExportModel(ConnectedUser connectedUser, + public ObsDebSamplingPlanImportExportModel(boolean admin, List<TerrestrialDivision> observationUnits, List<WaoUser> allWaoUsers, List<Company> allCompanies, List<Boat> allActiveBoats, List<TerrestrialLocation> allRegions) { - this.connectedUser = connectedUser; + this.admin = admin; this.allWaoUsers = allWaoUsers; this.observationUnits = observationUnits; this.allCompanies = allCompanies; @@ -189,8 +96,8 @@ } /** Constructor used for export */ - public ObsDebSamplingPlanImportExportModel(ConnectedUser connectedUser, ObservationType observationType) { - this.connectedUser = connectedUser; + public ObsDebSamplingPlanImportExportModel(boolean admin, ObservationType observationType) { + this.admin = admin; this.observationType = observationType; } @@ -225,8 +132,8 @@ modelBuilder.newColumnForImportExport( "PLAN_CODE", SampleRow.PROPERTY_CODE, - new SampleRowCodeParserFormatter(connectedUser.getProfile().getObsProgram())); - if (connectedUser.isAdmin()) { + new SampleRowCodeParserFormatter(ObsProgram.OBSDEB)); + if (admin) { modelBuilder.newColumnForImportExport( "SOCIETE", SampleRow.PROPERTY_COMPANY, @@ -293,4 +200,98 @@ } return (Iterable) modelBuilder.getColumnsForExport(); } + + protected static class ObservationUnitParserFormatter implements ValueParserFormatter<TerrestrialDivision> { + + /** Index Region code -> UO Code -> Terrestrial division. */ + protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits; + + protected List<TerrestrialDivision> observationUnits; + + protected String currentRegionCode; + + 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.getRegionIfremer().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.isTraceEnabled()) { + for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : indexedObservationUnits.entrySet()) { + log.trace(entry.getKey()); + for (Map.Entry<String, TerrestrialDivision> unitCodesToDivision : entry.getValue().entrySet()) { + log.trace(" -> " + unitCodesToDivision.getKey() + " -> " + + unitCodesToDivision.getValue()); + } + } + } + } + + @Override + public TerrestrialDivision parse(String observationUnitCode) throws ParseException { + 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"); + } + 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) { + String observationUnitCode = ""; + if (terrestrialDivision != null) { + observationUnitCode = terrestrialDivision.getObservationUnitCode(); + } + return observationUnitCode; + } + + public void setCurrentRegionCode(String regionCode) { + currentRegionCode = regionCode; + } + } + + protected 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().getRegionIfremer() + .getRegionIfremerCode(); + } + return regionCode; + } + + @Override + public void set(SampleRow sampleRow, String regionCode) throws Exception { + observationUnitSetter.setCurrentRegionCode(regionCode); + } + } } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerObsVenteSamplingPlanImportExportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/ObsMerObsVenteSamplingPlanImportExportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerObsVenteSamplingPlanImportExportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,30 +21,36 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; -import fr.ifremer.wao.bean.ObsProgram; -import fr.ifremer.wao.bean.SamplingStrategy; + +import com.opensymphony.xwork2.util.logging.Logger; +import com.opensymphony.xwork2.util.logging.LoggerFactory; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.FishingZone; +import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.Profession; import fr.ifremer.wao.entity.ProfessionImpl; import fr.ifremer.wao.entity.SampleMonth; import fr.ifremer.wao.entity.SampleMonthImpl; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRowImpl; +import fr.ifremer.wao.entity.SamplingStrategy; import fr.ifremer.wao.entity.TerrestrialLocation; -import fr.ifremer.wao.io.csv2.models.operations.*; +import fr.ifremer.wao.services.service.csv.operations.CompanyParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.DCF5CodesParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.DistrictNamesFormatter; +import fr.ifremer.wao.services.service.csv.operations.DistrictsParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.FishingZonesParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.SampleRowCodeParserFormatter; +import org.nuiton.csv.Common; +import org.nuiton.csv.ExportableColumn; +import org.nuiton.csv.ImportExportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; +import org.nuiton.csv.ValueGetterSetter; +import org.nuiton.csv.ValueParserFormatter; import org.nuiton.util.PeriodDates; -import org.nuiton.util.csv.Common; -import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.ImportExportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import org.nuiton.util.csv.ValueGetterSetter; -import org.nuiton.util.csv.ValueParserFormatter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.text.ParseException; import java.text.SimpleDateFormat; Added: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/RawObsDebCode.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/RawObsDebCode.java (rev 0) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/RawObsDebCode.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -0,0 +1,46 @@ +package fr.ifremer.wao.services.service.csv; + +import fr.ifremer.wao.entity.TerrestrialLocation; + +/** + * Représente une ligne de fichier CSV du référentiel des codes ObsDeb. + */ +public class RawObsDebCode { + + public static final String PROPERTY_CODE = "code"; + + public static final String PROPERTY_LABEL = "label"; + + public static final String PROPERTY_REGION = "region"; + + protected String code; + + protected String label; + + protected TerrestrialLocation region; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public TerrestrialLocation getRegion() { + return region; + } + + public void setRegion(TerrestrialLocation region) { + this.region = region; + } + +} Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/RawObsDebCodesImportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/RawObsDebCodesImportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/RawObsDebCodesImportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,15 +21,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; -import fr.ifremer.wao.bean.RawObsDebCode; -import fr.ifremer.wao.bean.RawObsDebCodeImpl; + import fr.ifremer.wao.entity.TerrestrialLocation; -import fr.ifremer.wao.io.csv2.models.operations.RegionParserFormatter; -import org.nuiton.util.csv.ImportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; +import fr.ifremer.wao.services.service.csv.operations.RegionParserFormatter; +import org.nuiton.csv.ImportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; import java.util.List; @@ -55,7 +54,7 @@ @Override public RawObsDebCode newEmptyInstance() { - RawObsDebCode newObsDebCode = new RawObsDebCodeImpl(); + RawObsDebCode newObsDebCode = new RawObsDebCode(); return newObsDebCode; } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/TerrestrialDivisionImportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialDivisionImportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/TerrestrialDivisionImportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,18 +21,18 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; 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.operations.PortParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.RegionParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.PortParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.RegionParserFormatter; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ImportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import org.nuiton.util.csv.ValueParser; +import org.nuiton.csv.ImportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; +import org.nuiton.csv.ValueParser; import java.util.List; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/TerrestrialLocationImportModel.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/TerrestrialLocationImportModel.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/TerrestrialLocationImportModel.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -18,19 +18,20 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models; +package fr.ifremer.wao.services.service.csv; -import fr.ifremer.wao.bean.LocationType; + +import fr.ifremer.wao.entity.LocationType; import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.entity.TerrestrialLocationImpl; -import fr.ifremer.wao.io.csv2.models.operations.LatitudeParserFormatter; -import fr.ifremer.wao.io.csv2.models.operations.LongitudeParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.LatitudeParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.LongitudeParserFormatter; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ImportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import org.nuiton.util.csv.ValueParser; -import org.nuiton.util.csv.ValueSetter; +import org.nuiton.csv.ImportModel; +import org.nuiton.csv.ImportableColumn; +import org.nuiton.csv.ModelBuilder; +import org.nuiton.csv.ValueParser; +import org.nuiton.csv.ValueSetter; import java.util.List; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/BoatImmatriculationParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatImmatriculationParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/BoatImmatriculationParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,10 +21,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.regex.Matcher; @@ -43,7 +43,7 @@ public class BoatImmatriculationParserFormatter implements ValueParserFormatter<Integer> { /** Exactly 6 digits */ - Pattern pattern = Pattern.compile("\\d{6}"); + protected Pattern pattern = Pattern.compile("\\d{6}"); @Override public String format(Integer immatriculation) { @@ -60,7 +60,7 @@ public Integer parse(String imma) throws ParseException { Matcher matcher = pattern.matcher(imma); if (!matcher.find()) { - throw new IllegalArgumentException(WaoUtils._("wao.business.boat.validation.immatriculation.wrongFormat")); + throw new IllegalArgumentException(I18n.t("wao.business.boat.validation.immatriculation.wrongFormat")); } Integer immatriculation = Integer.parseInt(imma); return immatriculation; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/BoatParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/BoatParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/BoatParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,11 +21,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.Boat; -import org.nuiton.util.csv.ValueParserFormatter; +import fr.ifremer.wao.entity.Boats; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.List; @@ -37,7 +39,7 @@ protected Map<Integer, Boat> indexedBoats; public BoatParserFormatter(List<Boat> boats) { - indexedBoats = WaoUtils.projectPropertyUnique(boats, Boat.PROPERTY_IMMATRICULATION); + indexedBoats = Maps.uniqueIndex(boats, Boats.getImmatriculation()); } @Override @@ -49,12 +51,12 @@ public Boat parse(String value) throws ParseException { String trimmedValue = value.trim(); if (trimmedValue.isEmpty()) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.boatMissing")); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.boatMissing")); } Integer key = Integer.valueOf(trimmedValue); Boat boat = indexedBoats.get(key); if (boat == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.wrongBoat", value)); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.wrongBoat", value)); } return boat; } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/CompanyParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/CompanyParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/CompanyParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; +import fr.ifremer.wao.entity.Companies; import fr.ifremer.wao.entity.Company; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; import java.text.ParseException; import java.util.List; @@ -55,7 +56,7 @@ @Override public Company parse(String companyName) throws ParseException { if (indexedCompanies == null) { - indexedCompanies = WaoUtils.projectPropertyUnique(companies, Company.PROPERTY_NAME); + indexedCompanies = Maps.uniqueIndex(companies, Companies.getName()); } Company company = null; if (StringUtils.isNotBlank(companyName)) { Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ContactStateMotivesParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/ContactStateMotivesParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ContactStateMotivesParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.ContactStateMotif; +import fr.ifremer.wao.entity.ContactStateMotives; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.List; @@ -54,7 +56,7 @@ @Override public ContactStateMotif parse(String code) throws ParseException { if (indexedMotives == null) { - indexedMotives = WaoUtils.projectPropertyUnique(motives, ContactStateMotif.PROPERTY_CODE); + indexedMotives = Maps.uniqueIndex(motives, ContactStateMotives.getCode()); } ContactStateMotif contactStateMotif; if (StringUtils.isBlank(code)) { @@ -62,7 +64,7 @@ } else { contactStateMotif = indexedMotives.get(code.trim()); if (contactStateMotif == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.wrongContactStateMotifCode", code)); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.wrongContactStateMotifCode", code)); } } return contactStateMotif; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DCF5CodesParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/DCF5CodesParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DCF5CodesParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,15 +21,15 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; import fr.ifremer.wao.entity.DCF5Code; import fr.ifremer.wao.entity.DCF5CodeImpl; import fr.ifremer.wao.entity.FishingGearDCFImpl; import fr.ifremer.wao.entity.TargetSpeciesDCFImpl; import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.ValueParserFormatter; import org.nuiton.util.StringUtil; -import org.nuiton.util.csv.ValueParserFormatter; import java.text.ParseException; import java.util.LinkedList; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictNamesFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/DistrictNamesFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictNamesFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,11 +21,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; import fr.ifremer.wao.entity.TerrestrialLocation; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueFormatter; +import org.nuiton.csv.ValueFormatter; import java.util.Collection; import java.util.LinkedList; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/DistrictParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -1,4 +1,4 @@ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; /* * #%L @@ -25,9 +25,11 @@ */ -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.TerrestrialLocation; -import org.nuiton.util.csv.ValueParserFormatter; +import fr.ifremer.wao.entity.TerrestrialLocations; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.List; @@ -44,7 +46,7 @@ throw new IllegalArgumentException(); } } - indexedDistricts = WaoUtils.projectPropertyUnique(districts, TerrestrialLocation.PROPERTY_DISTRICT_CODE); + indexedDistricts = Maps.uniqueIndex(districts, TerrestrialLocations.getDistrictCode()); } } @@ -61,11 +63,11 @@ public TerrestrialLocation parse(String value) throws ParseException { String trimmedValue = value.trim(); if (trimmedValue.isEmpty()) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.districtMissing")); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.districtMissing")); } TerrestrialLocation district = indexedDistricts.get(trimmedValue); if (district == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.wrongDistrict", value)); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.wrongDistrict", value)); } return district; } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictsParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/DistrictsParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/DistrictsParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.TerrestrialLocation; +import fr.ifremer.wao.entity.TerrestrialLocations; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.Collection; @@ -45,7 +47,7 @@ throw new IllegalArgumentException(); } } - indexedDistricts = WaoUtils.projectPropertyUnique(districts, TerrestrialLocation.PROPERTY_DISTRICT_CODE); + indexedDistricts = Maps.uniqueIndex(districts, TerrestrialLocations.getDistrictCode()); } } @@ -64,14 +66,14 @@ @Override public Collection<TerrestrialLocation> parse(String value) throws ParseException { if (StringUtils.isBlank(value)) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.districtMissing")); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.districtMissing")); } String[] districtCodes = StringUtils.split(value, ','); Collection<TerrestrialLocation> districts = new LinkedList<TerrestrialLocation>(); for (String districtCode : districtCodes) { TerrestrialLocation district = indexedDistricts.get(districtCode.trim()); if (district == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.wrongDistrict", value)); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.wrongDistrict", value)); } districts.add(district); } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/FishingZonesParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/FishingZonesParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/FishingZonesParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.FishingZone; +import fr.ifremer.wao.entity.FishingZones; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.LinkedList; @@ -58,17 +60,17 @@ @Override public List<FishingZone> parse(String districtCodes) throws ParseException { if (indexedFishingZones == null) { - indexedFishingZones = WaoUtils.projectPropertyUnique(fishingZones, FishingZone.PROPERTY_DISTRICT_CODE); + indexedFishingZones = Maps.uniqueIndex(fishingZones, FishingZones.getDistrictCode()); } List<FishingZone> fishingZones = new LinkedList<FishingZone>(); if (StringUtils.isBlank(districtCodes)) { - throw new IllegalArgumentException(WaoUtils._("wao.import.sampleRow.failure.fishingZoneMissing")); + throw new IllegalArgumentException(I18n.t("wao.import.sampleRow.failure.fishingZoneMissing")); } else { String[] codes = districtCodes.split(","); for (String code : codes) { FishingZone fishingZone = indexedFishingZones.get(code.trim()); if (fishingZone == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.sampleRow.failure.wrongFishingZone", code.trim())); + throw new IllegalArgumentException(I18n.t("wao.import.sampleRow.failure.wrongFishingZone", code.trim())); } fishingZones.add(fishingZone); } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LatitudeParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/LatitudeParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LatitudeParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,11 +21,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; import org.apache.commons.lang3.Range; -import org.nuiton.util.csv.Common; +import org.nuiton.csv.Common; + public class LatitudeParserFormatter extends Common.DoubleParserFormatter { protected static final Range<Double> VALID_LATITUDES = Range.between(-90., 90.); Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LocationTypeParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/LocationTypeParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LocationTypeParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; -import fr.ifremer.wao.bean.LocationType; +import fr.ifremer.wao.entity.LocationType; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.HashMap; @@ -58,8 +58,8 @@ locationType = fromStrings.get(value.trim()); if (locationType == null) { throw new IllegalArgumentException( - WaoUtils._("wao.import.failure.wrongLocationType", - value, fromStrings.keySet())); + I18n.t("wao.import.failure.wrongLocationType", + value, fromStrings.keySet())); } } return locationType; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LongitudeParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/LongitudeParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LongitudeParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,11 +21,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; import org.apache.commons.lang3.Range; -import org.nuiton.util.csv.Common; +import org.nuiton.csv.Common; + public class LongitudeParserFormatter extends Common.DoubleParserFormatter { protected static final Range<Double> VALID_LONGITUDES = Range.between(-180., 180.); Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ObsDebCodeParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/ObsDebCodeParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ObsDebCodeParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.ObsDebCode; +import fr.ifremer.wao.entity.ObsDebCodes; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.List; @@ -54,14 +56,14 @@ @Override public ObsDebCode parse(String code) throws ParseException { if (indexedObsDebCodes == null) { - indexedObsDebCodes = WaoUtils.projectPropertyUnique(obsDebCodes, ObsDebCode.PROPERTY_CODE); + indexedObsDebCodes = Maps.uniqueIndex(obsDebCodes, ObsDebCodes.getCode()); } ObsDebCode obsDebCode = null; if (StringUtils.isNotBlank(code)) { obsDebCode = indexedObsDebCodes.get(code); if (obsDebCode == null) { throw new IllegalArgumentException - (WaoUtils._("wao.import.failure.wrongObsDebCode", code)); + (I18n.t("wao.import.failure.wrongObsDebCode", code)); } } return obsDebCode; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ObservedDataControlParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/ObservedDataControlParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ObservedDataControlParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,13 +21,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; import fr.ifremer.wao.entity.ObservedDataControl; import org.apache.commons.lang3.StringUtils; +import org.nuiton.csv.Common; +import org.nuiton.csv.ValueParserFormatter; import org.nuiton.util.StringUtil; -import org.nuiton.util.csv.Common; -import org.nuiton.util.csv.ValueParserFormatter; import java.text.ParseException; import java.util.Collections; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/PortParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/PortParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/PortParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.TerrestrialLocation; +import fr.ifremer.wao.entity.TerrestrialLocations; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; import java.util.List; import java.util.Map; @@ -36,7 +37,7 @@ /** 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}. + * {@link fr.ifremer.wao.entity.LocationType#PORT}. */ protected Map<String, TerrestrialLocation> ports; @@ -45,7 +46,7 @@ public PortParserFormatter(List<TerrestrialLocation> ports, boolean allowNullValue) { this.allowNullValue = allowNullValue; if (ports != null) { - this.ports = WaoUtils.projectPropertyUnique(ports, TerrestrialLocation.PROPERTY_CODE); + this.ports = Maps.uniqueIndex(ports, TerrestrialLocations.getCode()); } } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/RegionParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/RegionParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,11 +21,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.TerrestrialLocation; -import org.nuiton.util.csv.ValueParserFormatter; +import fr.ifremer.wao.entity.TerrestrialLocations; +import org.nuiton.csv.ValueParserFormatter; import java.text.ParseException; import java.util.List; @@ -53,8 +54,8 @@ @Override public TerrestrialLocation parse(String regionCode) throws ParseException { if (indexedRegions == null) { - indexedRegions = WaoUtils.projectPropertyUnique( - regions, TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE); + indexedRegions = Maps.uniqueIndex( + regions, TerrestrialLocations.getRegionIfremerCode()); } TerrestrialLocation terrestrialLocation = Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/RegionsParser.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/RegionsParser.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/RegionsParser.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,11 +21,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.TerrestrialLocation; -import org.nuiton.util.csv.ValueParser; +import fr.ifremer.wao.entity.TerrestrialLocations; +import org.nuiton.csv.ValueParser; import java.text.ParseException; import java.util.LinkedList; @@ -45,8 +46,8 @@ @Override public List<TerrestrialLocation> parse(String value) throws ParseException { if (indexedRegions == null) { - indexedRegions = WaoUtils.projectPropertyUnique( - regions, TerrestrialLocation.PROPERTY_REGION_IFREMER_CODE); + indexedRegions = Maps.uniqueIndex( + regions, TerrestrialLocations.getRegionIfremerCode()); } String[] regionCodes = value.split(","); Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/SampleRowCodeParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/SampleRowCodeParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/SampleRowCodeParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; import fr.ifremer.wao.WaoUtils; -import fr.ifremer.wao.bean.ObsProgram; +import fr.ifremer.wao.entity.ObsProgram; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.regex.Pattern; @@ -48,12 +49,12 @@ public String parse(String value) throws ParseException { String sampleRowCode; if (StringUtils.isBlank(value)) { - throw new IllegalArgumentException(WaoUtils._("wao.import.sampleRow.failure.missingSampleRowCode")); + throw new IllegalArgumentException(I18n.t("wao.import.sampleRow.failure.missingSampleRowCode")); } else { if (sampleRowCodePattern.matcher(value).matches()) { sampleRowCode = value; } else { - throw new IllegalArgumentException(WaoUtils._("wao.import.sampleRow.failure.wrongSampleRowCodeFormat", value.trim())); + throw new IllegalArgumentException(I18n.t("wao.import.sampleRow.failure.wrongSampleRowCodeFormat", value.trim())); } } return sampleRowCode; Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/SampleRowParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/SampleRowParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/SampleRowParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.SampleRow; +import fr.ifremer.wao.entity.SampleRows; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.List; @@ -37,7 +39,7 @@ protected Map<String, SampleRow> indexedSampleRows; public SampleRowParserFormatter(List<SampleRow> sampleRows) { - indexedSampleRows = WaoUtils.projectPropertyUnique(sampleRows, SampleRow.PROPERTY_CODE); + indexedSampleRows = Maps.uniqueIndex(sampleRows, SampleRows.getCode()); } @Override @@ -49,11 +51,11 @@ public SampleRow parse(String sampleRowCode) throws ParseException { String trimmedCode = sampleRowCode.trim(); if (StringUtils.isEmpty(trimmedCode)) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.sampleRowCodeMissing")); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.sampleRowCodeMissing")); } SampleRow sampleRow = indexedSampleRows.get(sampleRowCode); if (sampleRow == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.contact.failure.wrongSampleRowCode", sampleRowCode)); + throw new IllegalArgumentException(I18n.t("wao.import.contact.failure.wrongSampleRowCode", sampleRowCode)); } return sampleRow; } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/UserParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/UserParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/UserParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,12 +21,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.WaoUser; -import org.nuiton.util.csv.ValueParserFormatter; +import fr.ifremer.wao.entity.WaoUsers; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.List; @@ -38,7 +40,7 @@ protected Map<String, WaoUser> indexedWaoUsers; public UserParserFormatter(List<WaoUser> waoUsers) { - this.indexedWaoUsers = WaoUtils.projectPropertyUnique(waoUsers, WaoUser.PROPERTY_LOGIN); + this.indexedWaoUsers = Maps.uniqueIndex(waoUsers, WaoUsers.getLogin()); } @Override @@ -51,7 +53,7 @@ public WaoUser parse(String login) throws ParseException { WaoUser user = indexedWaoUsers.get(login.trim()); if (user == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.failure.wrongUser", login)); + throw new IllegalArgumentException(I18n.t("wao.import.failure.wrongUser", login)); } return user; } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/UsersParserFormatter.java =================================================================== --- tags/wao-3.4.1/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/operations/UsersParserFormatter.java 2014-02-25 16:41:01 UTC (rev 1687) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/UsersParserFormatter.java 2014-02-26 11:06:26 UTC (rev 1690) @@ -21,18 +21,20 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ -package fr.ifremer.wao.io.csv2.models.operations; +package fr.ifremer.wao.services.service.csv.operations; -import fr.ifremer.wao.WaoUtils; +import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; import fr.ifremer.wao.entity.WaoUser; +import fr.ifremer.wao.entity.WaoUsers; import org.apache.commons.lang3.StringUtils; -import org.nuiton.util.csv.ValueParserFormatter; +import org.nuiton.csv.ValueParserFormatter; +import org.nuiton.i18n.I18n; import java.text.ParseException; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Set; public class UsersParserFormatter implements ValueParserFormatter<List<WaoUser>> { @@ -42,12 +44,12 @@ protected Map<String, WaoUser> indexedWaoUsers; public UsersParserFormatter(List<WaoUser> waoUsers) { - this.indexedWaoUsers = WaoUtils.projectPropertyUnique(waoUsers, WaoUser.PROPERTY_LOGIN); + this.indexedWaoUsers = Maps.uniqueIndex(waoUsers, WaoUsers.getLogin()); } @Override public String format(List<WaoUser> value) { - Set<String> usersLogin = WaoUtils.<String, WaoUser> projectPropertyUnique(value, WaoUser.PROPERTY_LOGIN).keySet(); + Iterable<String> usersLogin = Iterables.transform(value, WaoUsers.getLogin()); String commaSeparatedLogins = StringUtils.join(usersLogin, ", "); return commaSeparatedLogins; } @@ -60,7 +62,7 @@ String trimmedLogin = login.trim(); WaoUser user = indexedWaoUsers.get(trimmedLogin); if (user == null) { - throw new IllegalArgumentException(WaoUtils._("wao.import.failure.wrongUser", login)); + throw new IllegalArgumentException(I18n.t("wao.import.failure.wrongUser", login)); } users.add(user); }