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 b2ea656db75a1c727e0368d12fb36d3c4ace17a8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 18 08:44:18 2015 +0200 refs #6990 on conserve la map de translation des referenceTaxonId pour les taxons temporaires importes --- .../genericformat/GenericFormatContextSupport.java | 10 ++-- .../genericformat/GenericFormatExportContext.java | 2 +- .../GenericFormatReferentialImportResult.java | 4 +- ...enericFormatReferentialSpeciesImportResult.java | 53 ++++++++++++++++++++++ .../ImportReferentialSpeciesAction.java | 10 +++- .../consumer/CsvConsumerForTemporarySpecies.java | 4 +- 6 files changed, 71 insertions(+), 12 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java index ed2493b..63fb3e8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatContextSupport.java @@ -41,7 +41,6 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.model.CruiseDataModel; @@ -113,7 +112,7 @@ public abstract class GenericFormatContextSupport implements Closeable, Iterable private final GenericFormatReferentialImportResult<Person, Integer> referentialTemporaryPersonFileResult; - private final GenericFormatReferentialImportResult<Species, Integer> referentialTemporarySpeciesFileResult; + private final GenericFormatReferentialSpeciesImportResult referentialTemporarySpeciesFileResult; private final GenericFormatReferentialImportResult<Vessel, String> referentialTemporaryVesselFileResult; @@ -174,8 +173,9 @@ public abstract class GenericFormatContextSupport implements Closeable, Iterable this.referentialTemporaryGearFileResult = createReferentialFileResult(archive.getTemporaryReferentialGearsPath()); this.referentialTemporaryPersonFileResult = createReferentialFileResult(archive.getTemporaryReferentialPersonsPath()); - this.referentialTemporarySpeciesFileResult = createReferentialFileResult(archive.getTemporaryReferentialSpeciesPath()); this.referentialTemporaryVesselFileResult = createReferentialFileResult(archive.getTemporaryReferentialVesselsPath()); + File file = archive.getTemporaryReferentialSpeciesPath().toFile(); + this.referentialTemporarySpeciesFileResult = new GenericFormatReferentialSpeciesImportResult(file.getName(), file.exists()); this.protocolFileResult = createFileResult(archive.getProtocolPath(), false); this.surveyFileResult = createFileResult(archive.getSurveyPath(), true); @@ -240,7 +240,7 @@ public abstract class GenericFormatContextSupport implements Closeable, Iterable return referentialTemporaryPersonFileResult; } - public GenericFormatReferentialImportResult<Species, Integer> getReferentialTemporarySpeciesFileResult() { + public GenericFormatReferentialSpeciesImportResult getReferentialTemporarySpeciesFileResult() { return referentialTemporarySpeciesFileResult; } @@ -460,7 +460,7 @@ public abstract class GenericFormatContextSupport implements Closeable, Iterable public CsvConsumerForTemporarySpecies loadTemporarySpecies(boolean failFast) { referentialTemporarySpeciesFileResult.setImported(true); referentialTemporarySpeciesFileResult.setLinesCount(importRequest.getArchive().getTemporaryReferentialSpeciesLineCount()); - CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(importRequest.getArchive().getTemporaryReferentialSpeciesPath(), importRequest.getCsvSeparator(), failFast); + CsvConsumerForTemporarySpecies consumer = new CsvConsumerForTemporarySpecies(importRequest.getArchive().getTemporaryReferentialSpeciesPath(), importRequest.getCsvSeparator(), true, failFast); return consumer; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java index 1db7b3e..c608748 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java @@ -181,7 +181,7 @@ public class GenericFormatExportContext implements Closeable, Iterable<GenericFo this.producerForTemporaryGear = new CsvProducerForTemporaryGear(archive.getTemporaryReferentialGearsPath(), csvSeparator); this.producerForTemporaryPerson = new CsvProducerForTemporaryPerson(archive.getTemporaryReferentialPersonsPath(), csvSeparator); - this.producerForTemporarySpecies = new CsvProducerForTemporarySpecies(archive.getTemporaryReferentialSpeciesPath(), csvSeparator); + this.producerForTemporarySpecies = new CsvProducerForTemporarySpecies(archive.getTemporaryReferentialSpeciesPath(), csvSeparator, true); this.producerForTemporaryVessel = new CsvProducerForTemporaryVessel(archive.getTemporaryReferentialVesselsPath(), csvSeparator); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java index d7f86f2..3ca3317 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -48,9 +48,9 @@ public class GenericFormatReferentialImportResult<E extends TuttiReferentialEnti private static final long serialVersionUID = 1L; - private Map<String, E> entitiesAdded; + protected Map<String, E> entitiesAdded; - private Map<String, E> entitiesLinked; + protected Map<String, E> entitiesLinked; private Map<String, String> idTranslationMap; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialSpeciesImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialSpeciesImportResult.java new file mode 100644 index 0000000..fb32101 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialSpeciesImportResult.java @@ -0,0 +1,53 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.entities.referential.Species; + +import java.util.Collections; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 4/17/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0-RC3 + */ +public class GenericFormatReferentialSpeciesImportResult extends GenericFormatReferentialImportResult<Species, Integer> { + + private static final long serialVersionUID = 1L; + + private Map<Integer, Integer> referenceTaxonIdTranslationMap; + + public GenericFormatReferentialSpeciesImportResult(String filename, boolean found) { + super(filename, found); + this.referenceTaxonIdTranslationMap = new TreeMap<>(); + } + + public Map<Integer, Integer> getReferenceTaxonIdTranslationMap() { + return referenceTaxonIdTranslationMap; + } + + public void flushReferenceTaxonIds(Map<Integer, Integer> referenceTaxonIdById) { + + Map<Integer, Integer> referenceTaxonIdMap = new TreeMap<>(); + + for (Map.Entry<Integer, Integer> entry : referenceTaxonIdById.entrySet()) { + Integer oldId = entry.getKey(); + String originalId = String.valueOf(oldId); + Species species = entitiesAdded.get(originalId); + if (species == null) { + species = entitiesLinked.get(originalId); + } + Integer newReferenceTaxonId = species.getReferenceTaxonId(); + + Integer oldReferenceTaxonId = entry.getValue(); + + referenceTaxonIdMap.put(oldReferenceTaxonId, newReferenceTaxonId); + + } + + referenceTaxonIdTranslationMap = Collections.unmodifiableMap(referenceTaxonIdMap); + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialSpeciesAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialSpeciesAction.java index 0de96d8..2a57367 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialSpeciesAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportReferentialSpeciesAction.java @@ -26,7 +26,7 @@ package fr.ifremer.tutti.service.genericformat.importactions; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; -import fr.ifremer.tutti.service.genericformat.GenericFormatReferentialImportResult; +import fr.ifremer.tutti.service.genericformat.GenericFormatReferentialSpeciesImportResult; import fr.ifremer.tutti.service.genericformat.GenericformatImportPersistenceHelper; import fr.ifremer.tutti.service.referential.ReferentialImportRequest; import fr.ifremer.tutti.service.referential.ReferentialImportResult; @@ -39,6 +39,8 @@ import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.IOException; +import java.util.Map; +import java.util.TreeMap; import static org.nuiton.i18n.I18n.t; @@ -86,10 +88,13 @@ public class ImportReferentialSpeciesAction extends ImportActionSupport { ReferentialImportRequest<Species, Integer> referentialImportRequest = persistenceHelper.createSpeciesImportRequest(); - GenericFormatReferentialImportResult<Species, Integer> importFileResult = importContext.getReferentialTemporarySpeciesFileResult(); + Map<Integer, Integer> referenceTaxonIdById = new TreeMap<>(); + + GenericFormatReferentialSpeciesImportResult importFileResult = importContext.getReferentialTemporarySpeciesFileResult(); try (CsvConsumerForTemporarySpecies consumer = importContext.loadTemporarySpecies(false)) { for (ImportRow<SpeciesRow> row : consumer) { consumer.checkRowForGenericFormatImport(row, referentialImportRequest); + referenceTaxonIdById.put(row.getBean().getIdAsInt(), row.getBean().getReferenceTaxonId()); } importFileResult.flushErrors(consumer); @@ -106,6 +111,7 @@ public class ImportReferentialSpeciesAction extends ImportActionSupport { ReferentialImportResult<Species> referentialImportResult = persistenceHelper.importSpecies(referentialImportRequest); importFileResult.flushResult(referentialImportRequest, referentialImportResult); + importFileResult.flushReferenceTaxonIds(referenceTaxonIdById); if (log.isInfoEnabled()) { log.info("Temporary species import result: " + importFileResult.getReport()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java index 29b9ee8..d40605e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/consumer/CsvConsumerForTemporarySpecies.java @@ -54,8 +54,8 @@ public class CsvConsumerForTemporarySpecies extends CsvComsumer<SpeciesRow, Spec /** Logger. */ private static final Log log = LogFactory.getLog(CsvConsumerForTemporarySpecies.class); - public CsvConsumerForTemporarySpecies(Path file, char separator, boolean reportError) { - super(file, SpeciesModel.forImport(separator), reportError); + public CsvConsumerForTemporarySpecies(Path file, char separator, boolean addReferenceTaxonId, boolean reportError) { + super(file, SpeciesModel.forImport(separator, addReferenceTaxonId), reportError); } public void checkRow(ImportRow<SpeciesRow> row, -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.