Author: echatellier Date: 2014-07-17 10:26:39 +0200 (Thu, 17 Jul 2014) New Revision: 404 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/404 Log: Modification de l'import pour supporter les mises ?\195?\160 jour Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 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-17 08:26:07 UTC (rev 403) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 2014-07-17 08:26:39 UTC (rev 404) @@ -43,6 +43,7 @@ import org.nuiton.util.beans.BinderFactory; import com.franciaflex.faxtomail.persistence.entities.Client; +import com.franciaflex.faxtomail.persistence.entities.ClientImpl; import com.franciaflex.faxtomail.persistence.entities.ClientTopiaDao; import com.franciaflex.faxtomail.persistence.entities.DemandType; import com.franciaflex.faxtomail.persistence.entities.DemandTypeImpl; @@ -112,17 +113,30 @@ ClientTopiaDao dao = getPersistenceContext().getClientDao(); ClientImportModel clientImportModel = new ClientImportModel(';'); + Binder<Client, Client> clientBinder = BinderFactory.newBinder(Client.class); + Import<Client> importer = null; try { - Import<Client> importer = Import.newImport(clientImportModel, inputStream); - try { - for (Client client : importer) { - result.add(dao.create(client)); + importer = Import.newImport(clientImportModel, inputStream); + for (Client client : importer) { + + Client current = dao.forCodeEquals(client.getCode()).addEquals(Client.PROPERTY_BRAND, client.getBrand()).findAnyOrNull(); + if (current == null) { + current = new ClientImpl(); } - getPersistenceContext().commit(); - } finally { - IOUtils.closeQuietly(importer); + clientBinder.copyExcluding(client, current, + Client.PROPERTY_TOPIA_ID, + Client.PROPERTY_TOPIA_CREATE_DATE, + Client.PROPERTY_TOPIA_VERSION); + + if (client.isPersisted()) { + current = dao.update(current); + } else { + current = dao.create(current); + } + result.add(current); } + getPersistenceContext().commit(); } catch (ImportRuntimeException e) { String message; @@ -134,6 +148,7 @@ throw new ApplicationTechnicalException(message, e); } finally { + IOUtils.closeQuietly(importer); IOUtils.closeQuietly(inputStream); } return result;