Author: tchemit Date: 2014-03-04 09:24:07 +0100 (Tue, 04 Mar 2014) New Revision: 971 Url: http://forge.codelutin.com/projects/echobase/repository/revisions/971 Log: utilisation du float converter recopie depuis celui de l'ird Added: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/converter/ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/converter/FloatConverter.java Modified: trunk/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties trunk/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties Added: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/converter/FloatConverter.java =================================================================== --- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/converter/FloatConverter.java (rev 0) +++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/converter/FloatConverter.java 2014-03-04 08:24:07 UTC (rev 971) @@ -0,0 +1,87 @@ +package fr.ifremer.echobase.converter; + +/* + * #%L + * EchoBase :: Domain + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2014 Ifremer, Codelutin + * %% + * 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% + */ + +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.Converter; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/3/14. + * <p/> + * A float converter which is not dependant on user locale to obtain the locale + * {@code dot} representation. + * <p/> + * It can transform {@code 0.2} and also {@code 0,2}. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 2.6 + */ +public class FloatConverter implements Converter { + + @Override + public <T> T convert(Class<T> aClass, Object value) { + if (value == null) { + throw new ConversionException( + t("echobase.error.convertor.noValue", this)); + } + if (isEnabled(aClass)) { + T result; + if (isEnabled(value.getClass())) { + result = (T) value; + return result; + } + if (value instanceof String) { + result = (T) valueOf((String) value); + return result; + } + } + throw new ConversionException( + t("echobase.error.no.convertor", aClass.getName(), value)); + } + + protected Float valueOf(String value) { + try { + if (value.contains(",")) { + value = value.replaceAll(",", "."); + } + Float result; + result = Float.valueOf(value); + return result; + } catch (NumberFormatException e) { + throw new ConversionException( + t("echobase.error.float.convertor", value, this, e.getMessage())); + } + } + + + protected boolean isEnabled(Class<?> aClass) { + return Float.class.equals(aClass); + } + + public Class<?> getType() { + return Float.class; + } +} Property changes on: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/converter/FloatConverter.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties =================================================================== --- trunk/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties 2014-03-04 08:21:49 UTC (rev 970) +++ trunk/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties 2014-03-04 08:24:07 UTC (rev 971) @@ -38,3 +38,6 @@ echobase.config.version.description=Application version echobase.config.war.location.description=Location of the war used to create embedded applications echobase.configuration.description=EchoBase configuration +echobase.error.convertor.noValue=Can not convert a null value +echobase.error.float.convertor=a problem occurs while converting value '%s' with float convertor %s for reason %s +echobase.error.no.convertor=Can not convert a float from type %s (value to convert\: %s) Modified: trunk/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties =================================================================== --- trunk/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties 2014-03-04 08:21:49 UTC (rev 970) +++ trunk/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties 2014-03-04 08:24:07 UTC (rev 971) @@ -38,3 +38,6 @@ echobase.config.version.description=Version de l'application echobase.config.war.location.description=Chemin d'accèss au war embarqué à utiliser pour créer des applications embarquées echobase.configuration.description=Configuration d'EchoBase +echobase.error.convertor.noValue=Impossible de conertir une valeur nulle +echobase.error.float.convertor=Un problème est apparu lors de la convertion en float de '%s' avec le convertisseur %s pour la raison suivante \: %s +echobase.error.no.convertor=Impossible de convertir un float à partir de ce type %s (valeur à convertir %s) Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2014-03-04 08:21:49 UTC (rev 970) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2014-03-04 08:24:07 UTC (rev 971) @@ -29,6 +29,7 @@ import com.google.common.io.Files; import com.opensymphony.xwork2.ActionContext; import fr.ifremer.echobase.config.EchoBaseConfiguration; +import fr.ifremer.echobase.converter.FloatConverter; import fr.ifremer.echobase.entities.DriverType; import fr.ifremer.echobase.entities.EchoBaseInternalPersistenceContext; import fr.ifremer.echobase.entities.EchoBaseInternalTopiaApplicationContext; @@ -44,7 +45,6 @@ import fr.ifremer.echobase.services.service.UserService; import fr.ifremer.echobase.services.service.embeddedapplication.EmbeddedApplicationService; import fr.ifremer.echobase.services.service.workingDb.WorkingDbConfigurationService; -import fr.ird.converter.FloatConverter; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.Converter; import org.apache.commons.collections4.CollectionUtils; Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2014-03-04 08:21:49 UTC (rev 970) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2014-03-04 08:24:07 UTC (rev 971) @@ -14,7 +14,6 @@ echobase.action.delete=Delete echobase.action.delete.selectedImport=Delete selected imports echobase.action.deleteConfiguration=Delete -echobase.action.display=Display spatial data echobase.action.downloadEmbeddedApplicationFile=Download the portable database echobase.action.downloadExportDbFile=Download database export file echobase.action.downloadExportMapFile=Download voyage maps export file @@ -66,21 +65,14 @@ echobase.common.cellRegionAssociationFile= echobase.common.cellRegionResultFile= echobase.common.cellRegionsFile= -echobase.common.cellType=Cell type echobase.common.dataCentre=Data center echobase.common.dataCentreEmail=Data center email -echobase.common.dataMetadata=Data Metadata -echobase.common.dataMetadata.forEsduDataLayer=Data Metadata for Esdu - Data layer -echobase.common.dataMetadata.forEsduResultLayer=Data Metadata for Esdu - Result layer -echobase.common.dataMetadata.forMapDataLayer=Data Metadata for Map - Data layer -echobase.common.dataMetadata.forMapResultLayer=Data Metadata for Map - Result layer echobase.common.dataProcessing=DataProcessing echobase.common.dataProcessingNotes=Data processing notes echobase.common.datum=Datum echobase.common.description=Description echobase.common.digitThreshold=Digitization threshold echobase.common.distributionStatement=Distribution statement -echobase.common.echotype=Echotype echobase.common.echotypeFile= echobase.common.email=E-mail echobase.common.entityId=ID @@ -143,17 +135,11 @@ echobase.common.processingTemplate=Data processing template echobase.common.project=Project echobase.common.resultLabel=Results label -echobase.common.showCellEsduDataLayer=Show Cell Esdu data layer -echobase.common.showCellEsduResultLayer=Show Cell Esdu result layer -echobase.common.showCellMapDataLayer=Show Cell map data layer -echobase.common.showCellMapResultLayer=Show Cell map result layer -echobase.common.showOperationLayer=Show operation layer echobase.common.soundSpeedCalculationsER60=Sound speed calculations method (ER60 instrument) echobase.common.soundSpeedCalculationsME70=Sound speed calculation method (ME70 instrument) echobase.common.sounderConstant=Sounder constant (if relevant) echobase.common.source=Source echobase.common.spatialAware=Is database spatial aware ? -echobase.common.species=Species echobase.common.startEndDate=Start - End date echobase.common.startEndPort=Start - End port echobase.common.subSampleFile= @@ -173,7 +159,6 @@ echobase.confirm.delete.query=Delete query echobase.confirm.delete.selected.importData=Delete selected imports echobase.confirm.delete.workingDbConfiguration=Delete working database configuration -echobase.error.bad.password=Invalid password echobase.error.email.already.used=The user name already exists echobase.error.export.description.requiredstring=Export description required echobase.error.export.name.requiredstring=Export name required @@ -230,7 +215,6 @@ echobase.error.importDb.input.required=Le fichier d'import est obligatoire echobase.error.importFile.required=Fichier d'import obligatoire echobase.error.invalid.sql=Invalid query\: %s -echobase.error.login.unknown=Unkwown user echobase.error.login.wrongLogin=Le login est déjà utilisé echobase.error.mission.name.already.exist=The mission name already exists echobase.error.no.embeddedApplication.configurationFound=Portable database configuration not found @@ -243,9 +227,6 @@ echobase.error.query.name.already.exists=Query name already exists echobase.error.required.email=E-mail address required echobase.error.required.password=Password is required -echobase.error.showData.dataMetadataIdForLayer.required= -echobase.error.showData.noLayer.selected= -echobase.error.showData.voyage.required= echobase.error.warlocation.notFound=Database .war file not found at location %s echobase.error.workingDbConfiguration.couldNotConnect=Could not connect to database (%s) echobase.error.workingDbConfiguration.createOnlyOnPostgresql=Database creation is only possible for *Postgresql* type @@ -278,7 +259,6 @@ echobase.info.new.sqlQuery.inprogress=Query creation in progress echobase.info.new.workingDbConfiguration.inprogress=New working database configuration in progress echobase.info.no.sqlQuery.saved=No saved SQL query -echobase.info.no.sqlQuery.selected=No SQL query selected echobase.info.no.table.selected=No table selected echobase.info.no.voyagee.found=No survey selected echobase.info.no.workingDb.selected=No working database selected @@ -341,7 +321,6 @@ echobase.legend.embeddedApplication.configuration=Portable database configuration echobase.legend.exportDb.configuration.files=Export configuration echobase.legend.exportDb.resume=Resume of database export -echobase.legend.exportMap.configuration.files=Export configuration echobase.legend.exportMap.resume=Resume of voyage maps export echobase.legend.importData.configuration.selectImportType=Type of import selection echobase.legend.importData.configure=Import configuration Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2014-03-04 08:21:49 UTC (rev 970) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2014-03-04 08:24:07 UTC (rev 971) @@ -14,7 +14,6 @@ echobase.action.delete=Suppression echobase.action.delete.selectedImport=Supprimer les imports sélectionnés echobase.action.deleteConfiguration=Supprimer -echobase.action.display=Afficher les données echobase.action.downloadEmbeddedApplicationFile=Télécharger l'application embarquée echobase.action.downloadExportDbFile=Télécharger le fichier d'export de la base complète echobase.action.downloadExportMapFile=Télécharger le fichier d'export des cartes d'une campagne @@ -66,21 +65,14 @@ echobase.common.cellRegionAssociationFile= echobase.common.cellRegionResultFile= echobase.common.cellRegionsFile= -echobase.common.cellType=Type de cellule echobase.common.dataCentre=Centre de données echobase.common.dataCentreEmail=Courriel du centre de données -echobase.common.dataMetadata=Type de donnée -echobase.common.dataMetadata.forEsduDataLayer=Méta data à utiliser pour la couche Esdu - Data -echobase.common.dataMetadata.forEsduResultLayer=Méta data à utiliser pour la couche Esdu - Result -echobase.common.dataMetadata.forMapDataLayer=Méta data à utiliser pour la couche Map - Data -echobase.common.dataMetadata.forMapResultLayer=Méta data à utiliser pour la couche Map - Result echobase.common.dataProcessing=DataProcessing echobase.common.dataProcessingNotes=Notes sur le pré-traitement des données echobase.common.datum=Référenciel echobase.common.description=Description echobase.common.digitThreshold=Seuil de numérisation echobase.common.distributionStatement=Conditions de diffusion des données -echobase.common.echotype=Échotype echobase.common.echotypeFile= echobase.common.email=Courriel echobase.common.entityId=Identifiant de l'entité @@ -143,17 +135,11 @@ echobase.common.processingTemplate=Intitulé de la méthode de pré-traitement des données echobase.common.project=Projet echobase.common.resultLabel=Intitulé des résultats -echobase.common.showCellEsduDataLayer=Voir la couche Esdu - Data -echobase.common.showCellEsduResultLayer=Voir la couche Esdu - Result -echobase.common.showCellMapDataLayer=Voir la couche Map - Data -echobase.common.showCellMapResultLayer=Voir la couche Map - Result -echobase.common.showOperationLayer=Voir la couche Operation echobase.common.soundSpeedCalculationsER60=Méthode de calcul de la célérité du son (ER60) echobase.common.soundSpeedCalculationsME70=Méthode de calcul de la célérité du son (ME70) echobase.common.sounderConstant=Constante sondeur (si besoin) echobase.common.source=Source echobase.common.spatialAware=Base spatialisée ? -echobase.common.species=Espèce echobase.common.startEndDate=Date de début - fin echobase.common.startEndPort=Port de départ - arrivé echobase.common.subSampleFile= @@ -173,7 +159,6 @@ echobase.confirm.delete.query=Confirmer la suppression de la requête echobase.confirm.delete.selected.importData=Confirmer la suppression des imports sélectionnés echobase.confirm.delete.workingDbConfiguration=Confirmer la suppression de la configuration suivante -echobase.error.bad.password=Mot de passe incorrect echobase.error.email.already.used=Nom d'utilisateur déjà utilisé echobase.error.export.description.requiredstring=La description de l'export est obligatoire echobase.error.export.name.requiredstring=Le nom de l'export est obligatoire @@ -230,7 +215,6 @@ echobase.error.importDb.input.required=Le fichier d'import est obligatoire echobase.error.importFile.required=Fichier d'import obligatoire echobase.error.invalid.sql=Requête non valide \: %s -echobase.error.login.unknown=Utilisateur inconnu echobase.error.login.wrongLogin=Le login est déjà utilisé echobase.error.mission.name.already.exist=Nom de mission déjà utilisé echobase.error.no.embeddedApplication.configurationFound=Configuration de création d'application embarquée non trouvée @@ -243,12 +227,6 @@ echobase.error.query.name.already.exists=Nom de requête déjà utilisé echobase.error.required.email=Courriel obligatoire echobase.error.required.password=Le mot de passe est obligatoire -echobase.error.showData.cellType.required=La sélection d'un type de cellule est obligatoire -echobase.error.showData.dataMetadata.required=La sélection d'un type de donnée est obligatoire -echobase.error.showData.dataMetadataIdForLayer.required=Il faut sélectionner la méta-donnée à utiliser sur la couche -echobase.error.showData.echoTypeOrSpecies.required=La sélection d'un echotype ou (et) d'une espèces est obligatoire -echobase.error.showData.noLayer.selected=Aucune couche de présentation sélectionnée -echobase.error.showData.voyage.required=La sélection d'une campagne est obligatoire echobase.error.warlocation.notFound=L'application n'a pas été trouvée à l'emplacement suivant %s echobase.error.workingDbConfiguration.couldNotConnect=Impossible de se connecter (%s) echobase.error.workingDbConfiguration.createOnlyOnPostgresql=La création d'une base n'est possible que pour le type *Postgresql* @@ -281,7 +259,6 @@ echobase.info.new.sqlQuery.inprogress=Nouvelle requête en cours de création echobase.info.new.workingDbConfiguration.inprogress=Nouvelle configuration de base de travail en cours de création echobase.info.no.sqlQuery.saved=Aucune requête d'export SQL enregistrée -echobase.info.no.sqlQuery.selected=Aucune requête d'export SQL sélectionnée echobase.info.no.table.selected=Aucune table sélectionnée echobase.info.no.voyagee.found=Aucune campagne à exporter echobase.info.no.workingDb.selected=Aucune base de travail sélectionnée @@ -344,7 +321,6 @@ echobase.legend.embeddedApplication.configuration=Configuration de l'application embarquée echobase.legend.exportDb.configuration.files=Configuration de l'export echobase.legend.exportDb.resume=Résumé de l'export de base -echobase.legend.exportMap.configuration.files=Configuration de l'export echobase.legend.exportMap.resume=Résumé de l'export des cartes d'une campagne echobase.legend.importData.configuration.selectImportType=Sélection du type d'import echobase.legend.importData.configure=Configurer l'import