Author: echatellier Date: 2014-07-18 10:05:58 +0200 (Fri, 18 Jul 2014) New Revision: 415 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/415 Log: Ajout de l'encodage requis pour le fichier Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-input.jsp Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-07-18 07:56:13 UTC (rev 414) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-07-18 08:05:58 UTC (rev 415) @@ -58,16 +58,6 @@ private static final Log log = LogFactory.getLog(FaxToMailConfiguration.class); - /*private static FaxToMailConfiguration instance; - - public static FaxToMailConfiguration getInstance() { - return instance; - } - - public static void setInstance(FaxToMailConfiguration instance) { - FaxToMailConfiguration.instance = instance; - }*/ - protected final String[] optionKeyToNotSave; protected File configFile; @@ -219,6 +209,10 @@ return jpaParameters; } + public String getImportFileEncoding() { + return applicationConfig.getOption(FaxToMailConfigurationOption.IMPORT_FILE_ENCODING.getKey()); + } + public String getSmtpHost() { return applicationConfig.getOption(FaxToMailConfigurationOption.SMTP_HOST.getKey()); } Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-07-18 07:56:13 UTC (rev 414) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-07-18 08:05:58 UTC (rev 415) @@ -24,10 +24,12 @@ * #L% */ +import org.apache.commons.io.Charsets; import org.nuiton.config.ConfigOptionDef; import org.nuiton.util.Version; import javax.swing.*; + import java.awt.*; import java.io.File; import java.net.URL; @@ -92,6 +94,11 @@ "Chemin vers le fichier de configuration des journaux", null, String.class), + IMPORT_FILE_ENCODING( + "faxtomail.import.file.encoding", + "Encodage des fichiers des fichiers d'import", + Charsets.UTF_8.toString(), String.class), + LDAP_MOCK( "faxtomail.ldap.mock", "Utilisation d'un service ldap mock", "false", Boolean.class), Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 2014-07-18 07:56:13 UTC (rev 414) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 2014-07-18 08:05:58 UTC (rev 415) @@ -25,6 +25,8 @@ */ import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -116,7 +118,7 @@ Binder<Client, Client> clientBinder = BinderFactory.newBinder(Client.class); Import<Client> importer = null; try { - importer = Import.newImport(clientImportModel, inputStream); + importer = Import.newImport(clientImportModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding())); for (Client client : importer) { Client current = dao.forCodeEquals(client.getCode()).addEquals(Client.PROPERTY_BRAND, client.getBrand()).findAnyOrNull(); @@ -138,7 +140,7 @@ } getPersistenceContext().commit(); - } catch (ImportRuntimeException e) { + } catch (ImportRuntimeException|UnsupportedEncodingException e) { String message; if (e.getCause() != null) { message = e.getCause().getMessage(); @@ -146,7 +148,6 @@ message = e.getMessage(); } throw new ApplicationTechnicalException(message, e); - } finally { IOUtils.closeQuietly(importer); IOUtils.closeQuietly(inputStream); @@ -159,12 +160,12 @@ EmailAccountTopiaDao dao = getPersistenceContext().getEmailAccountDao(); EmailAccountImportModel emailAccountImportModel = new EmailAccountImportModel(';'); - try (Import<EmailAccount> importer = Import.newImport(emailAccountImportModel, inputStream)) { + try (Import<EmailAccount> importer = Import.newImport(emailAccountImportModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding()))) { for (EmailAccount emailAccount : importer) { result.add(dao.create(emailAccount)); } getPersistenceContext().commit(); - } catch (ImportRuntimeException e) { + } catch (ImportRuntimeException|UnsupportedEncodingException e) { String message; if (e.getCause() != null) { message = e.getCause().getMessage(); @@ -184,13 +185,13 @@ MailFilterTopiaDao dao = getPersistenceContext().getMailFilterDao(); EmailFilterImportModel emailFilterImportModel = new EmailFilterImportModel(';', foldersByName); - try (Import<MailFilter> importer = Import.newImport(emailFilterImportModel, inputStream)) { + try (Import<MailFilter> importer = Import.newImport(emailFilterImportModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding()))) { for (MailFilter emailFilter : importer) { result.add(dao.create(emailFilter)); } getPersistenceContext().commit(); - } catch (ImportRuntimeException e) { + } catch (ImportRuntimeException|UnsupportedEncodingException e) { String message; if (e.getCause() != null) { message = e.getCause().getMessage(); @@ -211,7 +212,7 @@ EtatAttenteTopiaDao etatAttenteTopiaDao = getPersistenceContext().getEtatAttenteDao(); EtatAttenteImportModel importModel = new EtatAttenteImportModel(';'); - try (Import<EtatAttente> importer = Import.newImport(importModel, inputStream)) { + try (Import<EtatAttente> importer = Import.newImport(importModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding()))) { for (EtatAttente etatAttente : importer) { EtatAttente currentEtatAttente = etatAttenteTopiaDao.forLabelEquals(etatAttente.getLabel()).findAnyOrNull(); @@ -224,7 +225,7 @@ } getPersistenceContext().commit(); - } catch (ImportRuntimeException e) { + } catch (ImportRuntimeException|UnsupportedEncodingException e) { String message; if (e.getCause() != null) { message = e.getCause().getMessage(); @@ -245,7 +246,7 @@ PriorityTopiaDao priorityTopiaDao = getPersistenceContext().getPriorityDao(); PriorityImportModel importModel = new PriorityImportModel(';'); - try (Import<Priority> importer = Import.newImport(importModel, inputStream)) { + try (Import<Priority> importer = Import.newImport(importModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding()))) { for (Priority priority : importer) { Priority currentPriority = priorityTopiaDao.forLabelEquals(priority.getLabel()).findAnyOrNull(); @@ -258,7 +259,7 @@ } getPersistenceContext().commit(); - } catch (ImportRuntimeException e) { + } catch (ImportRuntimeException|UnsupportedEncodingException e) { String message; if (e.getCause() != null) { message = e.getCause().getMessage(); @@ -279,7 +280,7 @@ RangeTopiaDao rangeTopiaDao = getPersistenceContext().getRangeDao(); RangeImportModel importModel = new RangeImportModel(';'); - try (Import<Range> importer = Import.newImport(importModel, inputStream)) { + try (Import<Range> importer = Import.newImport(importModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding()))) { for (Range range : importer) { Range currentRange = rangeTopiaDao.forLabelEquals(range.getLabel()).findAnyOrNull(); @@ -292,7 +293,7 @@ } getPersistenceContext().commit(); - } catch (ImportRuntimeException e) { + } catch (ImportRuntimeException|UnsupportedEncodingException e) { String message; if (e.getCause() != null) { message = e.getCause().getMessage(); @@ -312,7 +313,7 @@ DemandTypeTopiaDao demandTypeTopiaDao = getPersistenceContext().getDemandTypeDao(); DemandTypeImportModel importModel = new DemandTypeImportModel(';'); - try (Import<DemandType> importer = Import.newImport(importModel, inputStream)) { + try (Import<DemandType> importer = Import.newImport(importModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding()))) { for (DemandType demandType : importer) { DemandType currentDemandType = demandTypeTopiaDao.forLabelEquals(demandType.getLabel()).findAnyOrNull(); @@ -325,7 +326,7 @@ } getPersistenceContext().commit(); - } catch (ImportRuntimeException e) { + } catch (ImportRuntimeException|UnsupportedEncodingException e) { String message; if (e.getCause() != null) { message = e.getCause().getMessage(); Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-input.jsp =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-input.jsp 2014-07-18 07:56:13 UTC (rev 414) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-input.jsp 2014-07-18 08:05:58 UTC (rev 415) @@ -44,7 +44,8 @@ <div class="form-group"> <label for="clientField" class="control-label">Fichier client :</label> <input type="file" id="clientField" name="clientFile" class="form-control"> - <p class="help-block">Format du fichier csv : <code>Id_Correspondance;Societe;Nom;Caracteristique1;Caracteristique2;Caracteristique3;Numero_Fax;Adresse_Mail;Code_Client</code></p> + <p class="help-block">Format du fichier csv : <code>Id_Correspondance;Societe;Nom;Caracteristique1;Caracteristique2;Caracteristique3;Numero_Fax;Adresse_Mail;Code_Client</code><br /> + Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p> </div> <button type="submit" class="btn btn-primary navbar-btn">Valider</button> <hr /> @@ -52,7 +53,8 @@ <div class="form-group"> <label for="etatAttenteField" class="control-label">Fichier état d'attente :</label> <input type="file" id="etatAttenteField" name="etatAttenteFile" class="form-control"> - <p class="help-block">Format du fichier csv : <code>etatattente</code></p> + <p class="help-block">Format du fichier csv : <code>etatattente</code><br /> + Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p> </div> <button type="submit" class="btn btn-primary navbar-btn">Valider</button> <hr /> @@ -60,7 +62,8 @@ <div class="form-group"> <label for="demandTypeField" class="control-label">Fichier types de demande :</label> <input type="file" id="demandTypeField" name="demandTypeFile" class="form-control"> - <p class="help-block">Format du fichier csv : <code>demandetype</code></p> + <p class="help-block">Format du fichier csv : <code>demandetype</code><br /> + Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p> </div> <button type="submit" class="btn btn-primary navbar-btn">Valider</button> <hr /> @@ -68,7 +71,8 @@ <div class="form-group"> <label for="rangeField" class="control-label">Fichier gamme :</label> <input type="file" id="rangeField" name="rangeFile" class="form-control"> - <p class="help-block">Format du fichier csv : <code>gamme</code></p> + <p class="help-block">Format du fichier csv : <code>gamme</code><br /> + Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p> </div> <button type="submit" class="btn btn-primary navbar-btn">Valider</button> <hr /> @@ -76,7 +80,8 @@ <div class="form-group"> <label for="priorityField" class="control-label">Fichier priorite :</label> <input type="file" id="priorityField" name="priorityFile" class="form-control"> - <p class="help-block">Format du fichier csv : <code>priorite</code></p> + <p class="help-block">Format du fichier csv : <code>priorite</code><br /> + Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p> </div> <button type="submit" class="btn btn-primary navbar-btn">Valider</button>