This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 36c7b931411cb141162c143368a0dd4fa08f2c2d Author: Kevin Morin <morin@codelutin.com> Date: Tue Nov 4 12:12:57 2014 +0100 readd the unicity condition --- .../referential/ReferentialImportService.java | 32 ++++++++-------- .../referential/ReferentialImportServiceTest.java | 44 +++++++++++----------- 2 files changed, 37 insertions(+), 39 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java index ab57e9e..feca51c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportService.java @@ -201,13 +201,13 @@ public class ReferentialImportService extends AbstractTuttiService { List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllFishingVessel()); existingVessels.addAll(persistenceService.getAllScientificVessel()); -// Set<String> existingVesselInternationalRegistrationCodes = -// Sets.newHashSet(Iterables.transform(existingVessels, new Function<Vessel, String>() { -// @Override -// public String apply(Vessel input) { -// return input.getInternationalRegistrationCode(); -// } -// })); + Set<String> existingVesselInternationalRegistrationCodes = + Sets.newHashSet(Iterables.transform(existingVessels, new Function<Vessel, String>() { + @Override + public String apply(Vessel input) { + return input.getInternationalRegistrationCode(); + } + })); Map<String, Vessel> existingVesselsById = TuttiEntities.splitById(existingVessels); Set<String> existingVesselIds = new HashSet<>(existingVesselsById.keySet()); @@ -225,20 +225,20 @@ public class ReferentialImportService extends AbstractTuttiService { for (final VesselRow bean : importer) { String id = StringUtils.trimToNull(bean.getId()); -// String internationalRegistrationCode = bean.getInternationalRegistrationCode(); + String internationalRegistrationCode = bean.getInternationalRegistrationCode(); Vessel vessel = existingVesselsById.get(id); boolean delete = BooleanUtils.isTrue(bean.getToDelete()); if (id != null && existingVesselIds.add(id)) { throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.notExistingId.error", id)); -// } else if (StringUtils.isBlank(internationalRegistrationCode)) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.noInternationalRegistrationCode.error", id)); -// -// } else if (!delete && !existingVesselInternationalRegistrationCodes.add(internationalRegistrationCode) && -// (id == null || vessel != null && !vessel.getRegistrationCode().equals(internationalRegistrationCode))) { -// throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error", -// internationalRegistrationCode)); + } else if (StringUtils.isBlank(internationalRegistrationCode)) { + throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.noInternationalRegistrationCode.error", id)); + + } else if (!delete && !existingVesselInternationalRegistrationCodes.add(internationalRegistrationCode) && + (id == null || vessel != null && !vessel.getRegistrationCode().equals(internationalRegistrationCode))) { + throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.existingInternationalRegistrationCode.error", + internationalRegistrationCode)); } if (delete) { @@ -249,7 +249,7 @@ public class ReferentialImportService extends AbstractTuttiService { throw new IllegalArgumentException(t("tutti.service.referential.import.vessel.used.error", id)); } toDelete.add(id); -// existingVesselInternationalRegistrationCodes.remove(internationalRegistrationCode); + existingVesselInternationalRegistrationCodes.remove(internationalRegistrationCode); } else { if (id == null) { diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialImportServiceTest.java index 436cdb8..a8b8bab 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialImportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/referential/ReferentialImportServiceTest.java @@ -309,34 +309,32 @@ public class ReferentialImportServiceTest { Assert.assertTrue(actual.isScientificVessel()); } - //uncomment this test if there are unicity conditions // try to reimport them -// try { -// service.importTemporaryVessel(file); -// Assert.fail(); -// } catch (IllegalArgumentException | ApplicationTechnicalException e) { -// Assert.assertTrue(true); -// } + try { + service.importTemporaryVessel(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + Assert.assertTrue(true); + } // TODO test to replace a used vessel } - //uncomment this test if there are unicity conditions -// @Test -// public void importDuplicateTemporaryVessel() throws Exception { -// File file = new File(dataDirectory, "importVessel.csv"); -// -// Files.createParentDirs(file); -// -// Files.write(DUPLICATE_VESSEL_FILE_CONTENT, file, Charsets.UTF_8); -// -// try { -// service.importTemporaryVessel(file); -// Assert.fail(); -// } catch (IllegalArgumentException | ApplicationTechnicalException e) { -// // good duplicate vessel -// } -// } + @Test + public void importDuplicateTemporaryVessel() throws Exception { + File file = new File(dataDirectory, "importVessel.csv"); + + Files.createParentDirs(file); + + Files.write(DUPLICATE_VESSEL_FILE_CONTENT, file, Charsets.UTF_8); + + try { + service.importTemporaryVessel(file); + Assert.fail(); + } catch (IllegalArgumentException | ApplicationTechnicalException e) { + // good duplicate vessel + } + } @Test public void importTemporaryPerson() throws Exception { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.