Author: kmorin Date: 2013-05-16 17:38:53 +0200 (Thu, 16 May 2013) New Revision: 952 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/952 Log: fixes #2430 [REF TEMPORAIRE] erreur sur import navire temporaire Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialImportExportService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialImportExportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialImportExportService.java 2013-05-16 14:19:51 UTC (rev 951) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialImportExportService.java 2013-05-16 15:38:53 UTC (rev 952) @@ -26,10 +26,11 @@ import com.google.common.base.Charsets; import com.google.common.base.Function; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; +import com.google.common.base.Optional; +import com.google.common.base.Predicate; +import com.google.common.collect.*; import com.google.common.io.Files; +import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.TuttiTechnicalException; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; import fr.ifremer.tutti.persistence.entities.referential.Gear; @@ -40,6 +41,7 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.csv.Export; @@ -49,8 +51,7 @@ import java.io.File; import java.io.IOException; import java.io.Reader; -import java.util.List; -import java.util.Set; +import java.util.*; import static org.nuiton.i18n.I18n._; @@ -122,31 +123,35 @@ log.info("Will import vessels from file: " + file); } - // get all vessel names - Set<String> existingVesselName = Sets.newHashSet(Iterables.transform(persistenceService.getAllFishingVessel(), new Function<Vessel, String>() { - @Override - public String apply(Vessel input) { - return input.getName(); - } - })); + // get all vessels + List<Vessel> existingVessels = Lists.newArrayList(persistenceService.getAllFishingVessel()); + existingVessels.addAll(persistenceService.getAllScientificVessel()); - existingVesselName.addAll(Lists.transform(persistenceService.getAllScientificVessel(), new Function<Vessel, String>() { - @Override - public String apply(Vessel input) { - return input.getName(); - } - })); - List<Vessel> toImport = Lists.newArrayList(); Reader reader = Files.newReader(file, Charsets.UTF_8); - VesselModel csvModel = new VesselModel(getCsvSeparator(), existingVesselName); + VesselModel csvModel = new VesselModel(getCsvSeparator()); try { Import<Vessel> importer = Import.newImport(csvModel, reader); try { - for (Vessel bean : importer) { + for (final Vessel bean : importer) { + Optional<Vessel> found = Iterables.tryFind(existingVessels, new Predicate<Vessel>() { + @Override + public boolean apply(Vessel input) { + String name1 = input.getName(); + String name2 = bean.getName(); + String code1 = input.getInternationalRegistrationCode(); + String code2 = bean.getInternationalRegistrationCode(); + boolean result = StringUtils.equals(name1, name2) && StringUtils.equals(code1, code2); + return result; + } + }); + if (found.isPresent()) { + throw new TuttiTechnicalException(_("tutti.service.referential.import.vessels.existingValue.error", + bean.getName(), bean.getInternationalRegistrationCode())); + } toImport.add(bean); } importer.close(); @@ -309,7 +314,7 @@ v.setScientificVessel(true); toExport.add(v); - VesselModel csvModel = new VesselModel(getCsvSeparator(), null); + VesselModel csvModel = new VesselModel(getCsvSeparator()); BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8); try { Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java 2013-05-16 14:19:51 UTC (rev 951) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/VesselModel.java 2013-05-16 15:38:53 UTC (rev 952) @@ -39,12 +39,12 @@ */ public class VesselModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<Vessel> { - public VesselModel(char separator, Set<String> existingVesselName) { + public VesselModel(char separator) { super(separator); // import definition - newNotExistingValueColumn(Vessel.PROPERTY_NAME, existingVesselName); + newMandatoryColumn(Vessel.PROPERTY_NAME); newMandatoryColumn(Vessel.PROPERTY_INTERNATIONAL_REGISTRATION_CODE); newMandatoryColumn(Vessel.PROPERTY_SCIENTIFIC_VESSEL, Common.PRIMITIVE_BOOLEAN); Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-16 14:19:51 UTC (rev 951) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-16 15:38:53 UTC (rev 952) @@ -171,6 +171,7 @@ tutti.service.referential.import.persons.error= tutti.service.referential.import.species.error= tutti.service.referential.import.vessels.error= +tutti.service.referential.import.vessels.existingValue.error= tutti.service.sumatra.export.error= tutti.service.validateCruise.exportResult.error= tutti.service.validateCruise.operations.progress= Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-16 14:19:51 UTC (rev 951) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-16 15:38:53 UTC (rev 952) @@ -141,6 +141,7 @@ tutti.service.referential.import.persons.error=Erreur lors de l'import des personnes du fichier %s tutti.service.referential.import.species.error=Erreur lors de l'import des espèces du fichier %s tutti.service.referential.import.vessels.error=Erreur lors de l'import des navires du fichier %s +tutti.service.referential.import.vessels.existingValue.error=Un navire avec le nom %1s et l'immatriculation %2s existe déjà dans le référentiel tutti.service.sumatra.export.error=Erreur lors de l'export Sumatra dans le fichier %s tutti.service.validateCruise.exportResult.error=Erreur lors de l'export des résultats de validation de la campagne dans le fichier %s tutti.service.validateCruise.operations.progress=Vérification du trait %s