Author: tchemit Date: 2014-04-08 18:23:14 +0200 (Tue, 08 Apr 2014) New Revision: 1866 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1866 Log: improve import I18nAble parserFormatter Removed: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LocalizedToStringParserFormatter.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ObservedDataControlParserFormatter.java Modified: 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/ObsMerContactImportExportModel.java Modified: 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/ContactImportExportModel.java 2014-04-08 12:03:05 UTC (rev 1865) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ContactImportExportModel.java 2014-04-08 16:23:14 UTC (rev 1866) @@ -34,16 +34,16 @@ import fr.ifremer.wao.entity.ObsDebCode; import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.ObservationType; +import fr.ifremer.wao.entity.ObservedDataControl; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.entity.WaoUser; 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.LocalizedToStringParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.I18nAbleParserFormatter; 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; @@ -60,6 +60,7 @@ import org.nuiton.i18n.I18n; import java.text.ParseException; +import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -213,7 +214,7 @@ }, new CompanyParserFormatter(locale, null) ); - modelBuilder.newColumnForImportExport("CONTACT_ETAT", "contactState", new LocalizedToStringParserFormatter<>(locale, ContactState.getAllowedStates(obsProgram))); + modelBuilder.newColumnForImportExport("CONTACT_ETAT", "contactState", new I18nAbleParserFormatter<>(locale, ContactState.getAllowedStates(obsProgram))); modelBuilder.newColumnForImportExport("CONTACT_DEBUT_OBSERVATION", Contact.PROPERTY_OBSERVATION_BEGIN_DATE, Common.DAY_TIME); modelBuilder.newColumnForImportExport("CONTACT_FIN_OBSERVATION", Contact.PROPERTY_OBSERVATION_END_DATE, Common.DAY_TIME); modelBuilder.newColumnForImportExport("CONTACT_SAISIE_DONNEES", Contact.PROPERTY_DATA_INPUT_DATE, Common.DAY); @@ -236,7 +237,7 @@ if (obsProgram == ObsProgram.OBSMER) { modelBuilder.newColumnForImportExport("CONTACT_QUALITE_DONNEE", "dataReliability", - new LocalizedToStringParserFormatter<>(locale, DataReliability.values())); + new I18nAbleParserFormatter<>(locale, DataReliability.values())); modelBuilder.newColumnForImportExport("CONTACT_OBSERVATION_MAMMIFERE", Contact.PROPERTY_MAMMALS_OBSERVATION, Common.BOOLEAN); modelBuilder.newColumnForImportExport("CONTACT_CAPTURE_ACCIDENTELLE", Contact.PROPERTY_MAMMALS_CAPTURE, Common.BOOLEAN); modelBuilder.newIgnoredColumn("CONTACT_CAPTURE_ACCIDENTELLE_DETAILS"); @@ -254,7 +255,13 @@ } }); modelBuilder.newColumnForImportExport("CONTACT_TRANSMISSION_RESTITUTION", Contact.PROPERTY_RESTITUTION, Common.DAY); - modelBuilder.newColumnForImportExport("CONTACT_DONNEES_ALLEGRO_VALIDEES", Contact.PROPERTY_OBSERVED_DATA_CONTROL, new ObservedDataControlParserFormatter(locale)); + + List<ObservedDataControl> observedDataControlsValues = new LinkedList<>(); + Collections.addAll(observedDataControlsValues, ObservedDataControl.values()); + observedDataControlsValues.add(null); + I18nAbleParserFormatter<ObservedDataControl> valueParserFormatter = new I18nAbleParserFormatter<>(locale, observedDataControlsValues); + valueParserFormatter.setAcceptNullValues(true); + modelBuilder.newColumnForImportExport("CONTACT_DONNEES_ALLEGRO_VALIDEES", Contact.PROPERTY_OBSERVED_DATA_CONTROL, valueParserFormatter); } else { // FIXME 20110606 bleny contact.getTerrestrialLocation() may be null, export will fail @@ -305,7 +312,7 @@ if (obsProgram == ObsProgram.OBSDEB) { modelBuilder.newColumnForImportExport("CONTACT_DATE_DEBARQUEMENT", Contact.PROPERTY_LANDING_DATE, Common.DAY_TIME); - modelBuilder.newColumnForImportExport("CONTACT_TYPE_OBSERVATION", "observationType", new LocalizedToStringParserFormatter<>(locale, ObservationType.values())); + modelBuilder.newColumnForImportExport("CONTACT_TYPE_OBSERVATION", "observationType", new I18nAbleParserFormatter<>(locale, ObservationType.values())); modelBuilder.newColumnForImportExport("CONTACT_METIER", Contact.PROPERTY_OBS_DEB_CODE, new ObsDebCodeParserFormatter(locale, obsDebCodes)); } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerContactImportExportModel.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerContactImportExportModel.java 2014-04-08 12:03:05 UTC (rev 1865) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsMerContactImportExportModel.java 2014-04-08 16:23:14 UTC (rev 1866) @@ -32,13 +32,13 @@ import fr.ifremer.wao.entity.ContactStateMotif; import fr.ifremer.wao.entity.DataReliability; import fr.ifremer.wao.entity.ObsProgram; +import fr.ifremer.wao.entity.ObservedDataControl; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.WaoUser; 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.LocalizedToStringParserFormatter; -import fr.ifremer.wao.services.service.csv.operations.ObservedDataControlParserFormatter; +import fr.ifremer.wao.services.service.csv.operations.I18nAbleParserFormatter; 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; @@ -51,6 +51,7 @@ import org.nuiton.csv.ValueFormatter; import org.nuiton.csv.ValueGetter; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Locale; @@ -154,7 +155,7 @@ }, new CompanyParserFormatter(locale, null) ); - modelBuilder.newColumnForImportExport("CONTACT_ETAT", "contactState", new LocalizedToStringParserFormatter<>(locale, ContactState.getAllowedStates(obsProgram))); + modelBuilder.newColumnForImportExport("CONTACT_ETAT", "contactState", new I18nAbleParserFormatter<>(locale, ContactState.getAllowedStates(obsProgram))); modelBuilder.newColumnForImportExport("CONTACT_DEBUT_OBSERVATION", Contact.PROPERTY_OBSERVATION_BEGIN_DATE, Common.DAY_TIME); modelBuilder.newColumnForImportExport("CONTACT_FIN_OBSERVATION", Contact.PROPERTY_OBSERVATION_END_DATE, Common.DAY_TIME); modelBuilder.newColumnForImportExport("CONTACT_SAISIE_DONNEES", Contact.PROPERTY_DATA_INPUT_DATE, Common.DAY); @@ -180,7 +181,7 @@ } modelBuilder.newColumnForImportExport("CONTACT_QUALITE_DONNEE", "dataReliability", - new LocalizedToStringParserFormatter<>(locale, DataReliability.values())); + new I18nAbleParserFormatter<>(locale, DataReliability.values())); modelBuilder.newColumnForImportExport("CONTACT_OBSERVATION_MAMMIFERE", Contact.PROPERTY_MAMMALS_OBSERVATION, Common.BOOLEAN); modelBuilder.newColumnForImportExport("CONTACT_CAPTURE_ACCIDENTELLE", Contact.PROPERTY_MAMMALS_CAPTURE, Common.BOOLEAN); modelBuilder.newIgnoredColumn("CONTACT_CAPTURE_ACCIDENTELLE_DETAILS"); @@ -200,8 +201,14 @@ } }); modelBuilder.newColumnForImportExport("CONTACT_TRANSMISSION_RESTITUTION", Contact.PROPERTY_RESTITUTION, Common.DAY); - modelBuilder.newColumnForImportExport("CONTACT_DONNEES_ALLEGRO_VALIDEES", Contact.PROPERTY_OBSERVED_DATA_CONTROL, new ObservedDataControlParserFormatter(locale)); + List<ObservedDataControl> observedDataControlsValues = new LinkedList<>(); + Collections.addAll(observedDataControlsValues, ObservedDataControl.values()); + observedDataControlsValues.add(null); + I18nAbleParserFormatter<ObservedDataControl> valueParserFormatter = new I18nAbleParserFormatter<>(locale, observedDataControlsValues); + valueParserFormatter.setAcceptNullValues(true); + modelBuilder.newColumnForImportExport("CONTACT_DONNEES_ALLEGRO_VALIDEES", Contact.PROPERTY_OBSERVED_DATA_CONTROL, valueParserFormatter); + return modelBuilder; } Deleted: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LocalizedToStringParserFormatter.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LocalizedToStringParserFormatter.java 2014-04-08 12:03:05 UTC (rev 1865) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/LocalizedToStringParserFormatter.java 2014-04-08 16:23:14 UTC (rev 1866) @@ -1,72 +0,0 @@ -package fr.ifremer.wao.services.service.csv.operations; - -import com.google.common.collect.Sets; -import org.nuiton.csv.ValueParserFormatter; -import org.nuiton.util.StringUtil; - -import java.text.ParseException; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -import static org.nuiton.i18n.I18n.l; - -/** - * Created on 4/8/14. - * - * @author Tony Chemit <chemit@codelutin.com> - * @since 4.0 - */ -public class LocalizedToStringParserFormatter<E> implements ValueParserFormatter<E> { - - protected Map<E, String> toStrings = new HashMap<>(); - - protected Map<String, E> fromString = new HashMap<>(); - - protected Locale locale; - - @SafeVarargs - public LocalizedToStringParserFormatter(Locale locale, E... values) { - this(locale, Sets.newHashSet(values), null); - } - - public LocalizedToStringParserFormatter(Locale locale, - Iterable<E> values) { - this(locale, values, null); - } - - public LocalizedToStringParserFormatter(Locale locale, - Iterable<E> values, - StringUtil.ToString<E> toString) { - this.locale = locale; - for (E value : values) { - String valueToString; - if (toString == null) { - valueToString = value.toString(); - } else { - valueToString = toString.toString(value); - } - toStrings.put(value, valueToString); - fromString.put(valueToString, value); - } - } - - @Override - public String format(E value) { - String valueAsString = toStrings.get(value); - if (valueAsString == null) { - throw new IllegalArgumentException(); - } - return valueAsString; - } - - @Override - public E parse(String valueAsString) throws ParseException { - E value = fromString.get(valueAsString); - if (value == null) { - String message = l(locale, "wao.import.failure.wrongValue", valueAsString, fromString.keySet().toString()); - throw new IllegalArgumentException(message); - } - return value; - } -} Deleted: 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/ObservedDataControlParserFormatter.java 2014-04-08 12:03:05 UTC (rev 1865) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/operations/ObservedDataControlParserFormatter.java 2014-04-08 16:23:14 UTC (rev 1866) @@ -1,82 +0,0 @@ -/* - * #%L - * Wao :: Business - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 2012 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.services.service.csv.operations; - -import fr.ifremer.wao.entity.ObservedDataControl; -import org.apache.commons.lang3.StringUtils; -import org.nuiton.csv.ValueParserFormatter; -import org.nuiton.util.StringUtil; - -import java.text.ParseException; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; - -/** - * Basé sur un ToStringParserFormatter (comme toutes les énums) mais il faut - * gérer le cas null. - */ -public class ObservedDataControlParserFormatter implements ValueParserFormatter<ObservedDataControl> { - - // FIXME brendan 01/04/14 what the f... - - protected ValueParserFormatter<ObservedDataControl> nonNullObservedDataControlParserFormatter; - - public ObservedDataControlParserFormatter(Locale locale) { - List<ObservedDataControl> observedDataControlsValues = new LinkedList<>(); - Collections.addAll(observedDataControlsValues, ObservedDataControl.values()); - observedDataControlsValues.add(null); - StringUtil.ToString<ObservedDataControl> nullableObservedDataControlToString = new StringUtil.ToString<ObservedDataControl>() { - @Override - public String toString(ObservedDataControl observedDataControl) { - String toString = ""; - if (observedDataControl != null) { - toString = observedDataControl.toString(); - } - return toString; - } - }; - nonNullObservedDataControlParserFormatter = new LocalizedToStringParserFormatter<>(locale, observedDataControlsValues, nullableObservedDataControlToString); - } - - @Override - public String format(ObservedDataControl observedDataControl) { - String value = ""; - if (observedDataControl != null) { - value = nonNullObservedDataControlParserFormatter.format(observedDataControl); - } - return value; - } - - @Override - public ObservedDataControl parse(String value) throws ParseException { - ObservedDataControl observedDataControl = null; - if (StringUtils.isNotBlank(value)) { - observedDataControl = nonNullObservedDataControlParserFormatter.parse(value); - } - return observedDataControl; - - } -}