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 f22fe9958c352e5c3335fafba6a099cffe74fc34 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 17:36:43 2015 +0100 translate taxon ids in protocol if required --- .../entities/protocol/TuttiProtocols.java | 25 ++++++++++ .../genericformat/GenericFormatImportService.java | 53 ++++++++++------------ 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java index 8bace77..fdc4deb 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java @@ -146,6 +146,31 @@ public class TuttiProtocols extends AbstractTuttiProtocols { return result; } + public static void translateReferenceTaxonIds(TuttiProtocol result, Map<String, String> idTranslationMap) { + + List<SpeciesProtocol> species = result.getSpecies(); + translateReferenceTaxonIds(species, idTranslationMap); + + List<SpeciesProtocol> benthos = result.getBenthos(); + translateReferenceTaxonIds(benthos, idTranslationMap); + + } + + protected static void translateReferenceTaxonIds(List<SpeciesProtocol> species, Map<String, String> idTranslationMap) { + + for (SpeciesProtocol speciesProtocol : species) { + Integer speciesReferenceTaxonId = speciesProtocol.getSpeciesReferenceTaxonId(); + String id = String.valueOf(speciesReferenceTaxonId); + if (idTranslationMap.containsKey(id)) { + + String newId = idTranslationMap.get(id); + Integer newSpeciesReferenceTaxonId = Integer.valueOf(newId); + speciesProtocol.setSpeciesReferenceTaxonId(newSpeciesReferenceTaxonId); + + } + } + } + protected static TuttiProtocol migrateProtocol(File file) { try { //try to load a v2 diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index fc6a253..d9be17f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -22,6 +22,7 @@ import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualO import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForMarineLitter; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForOperation; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForParameter; +import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSurvey; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; @@ -50,6 +51,7 @@ import fr.ifremer.tutti.service.referential.csv.VesselRow; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.ImportRow; +import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -58,6 +60,7 @@ import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n.t; @@ -171,7 +174,6 @@ public class GenericFormatImportService extends AbstractTuttiService { importIndividualObservations(importContext, progressionModel); importAccidentalCatches(importContext, progressionModel); - return result; } catch (IOException e) { @@ -183,10 +185,22 @@ public class GenericFormatImportService extends AbstractTuttiService { protected void checkSampleCategoryModel(GenericFormatImportContext importContext, ProgressionModel progressionModel) { progressionModel.increments(t("tutti.genericFormat.import.sampleCategoryModel")); - Iterable<ImportRow<SampleCategoryRow>> rows = importContext.loadSampleCategories(); + try (CsvConsumerForSampleCategory consumer = importContext.loadSampleCategories()) { + + int nbCategories = 0; + for (ImportRow<SampleCategoryRow> row : consumer) { + consumer.checkRow(row, importContext); + nbCategories++; + } + + if (nbCategories != importContext.getImportRequest().getSampleCategoryModel().getNbSampling()) { - for (ImportRow<SampleCategoryRow> row : rows) { + throw new ImportRuntimeException(t("tutti.genericFormat.import.sampleCategoryModel.error.missingCategories")); + } + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close sampleCategoryModel.csv file", e); } } @@ -299,34 +313,16 @@ public class GenericFormatImportService extends AbstractTuttiService { TuttiProtocol tuttiProtocol = protocolImportExportService.importProtocol(archive.getProtocolPath().toFile()); - if (persistenceService.isProtocolExist(tuttiProtocol.getId())) { - - // already known, do not reimport - if (log.isWarnEnabled()) { - log.warn("Already known protocol with id" + tuttiProtocol.getId() + " do not reimport it"); - } - - progressionModel.increments(t("tutti.genericFormat.reuse.protocol", tuttiProtocol.getName())); - - tuttiProtocol = persistenceService.getProtocol(tuttiProtocol.getId()); - - } else { - - List<String> allProtocolNames = persistenceService.getAllProtocolNames(); - - if (allProtocolNames.contains(tuttiProtocol.getName())) { + Map<String, String> idTranslationMap = importContext.getImportResult().getImportedSpecies().getIdTranslationMap(); + TuttiProtocols.translateReferenceTaxonIds(tuttiProtocol, idTranslationMap); - String newName = TuttiProtocols.getFirstAvailableName(tuttiProtocol.getName(), allProtocolNames); - tuttiProtocol.setName(newName); + String newName = persistenceService.getFirstAvailableName(tuttiProtocol.getName()); + tuttiProtocol.setName(newName); - } - - progressionModel.increments(t("tutti.genericFormat.import.protocol", tuttiProtocol.getName())); + progressionModel.increments(t("tutti.genericFormat.import.protocol", tuttiProtocol.getName())); - tuttiProtocol = persistenceService.createProtocol(tuttiProtocol); - persistenceService.setProtocol(tuttiProtocol); - - } + tuttiProtocol = persistenceService.createProtocol(tuttiProtocol); + persistenceService.setProtocol(tuttiProtocol); importContext.getImportResult().setProtocol(tuttiProtocol); @@ -454,5 +450,4 @@ public class GenericFormatImportService extends AbstractTuttiService { } - } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.