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 fd13aac97032f7bf91379cc919c20a4323e2c551 Author: Kevin Morin <morin@codelutin.com> Date: Thu Sep 25 14:13:19 2014 +0200 fixes #5854 [IMPORT PROTOCOL] Ajouter un contrôle à l'import des espèces ou du benthos --- .../protocol/ProtocolImportExportService.java | 97 +++++++++++++++++----- .../swing/action/ImportProtocolBenthosAction.java | 24 +++++- .../swing/action/ImportProtocolSpeciesAction.java | 24 +++++- .../resources/i18n/tutti-ui-swing_en_GB.properties | 8 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 4 + 5 files changed, 128 insertions(+), 29 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java index 24e3b5a..5f7a4c9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java @@ -54,6 +54,7 @@ import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.Reader; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -224,7 +225,7 @@ public class ProtocolImportExportService extends AbstractTuttiService { } } - public void importProtocolSpecies(File file, + public List<Species> importProtocolSpecies(File file, TuttiProtocol protocol, Map<String, Caracteristic> caracteristicMap, Map<String, Species> speciesMap) { @@ -234,6 +235,8 @@ public class ProtocolImportExportService extends AbstractTuttiService { "] species from file: " + file); } + List<Species> result = new ArrayList<>(); + Map<Integer, SpeciesProtocol> ids = Maps.newLinkedHashMap(); if (!protocol.isSpeciesEmpty()) { @@ -245,6 +248,18 @@ public class ProtocolImportExportService extends AbstractTuttiService { } } + + Map<Integer, SpeciesProtocol> benthosIds = Maps.newLinkedHashMap(); + + if (!protocol.isBenthosEmpty()) { + + // get existing species (will be not be imported) + + for (SpeciesProtocol speciesProtocol : protocol.getBenthos()) { + benthosIds.put(speciesProtocol.getSpeciesReferenceTaxonId(), speciesProtocol); + } + } + SpeciesRowModel csvModel = new SpeciesRowModel(getCsvSeparator(), caracteristicMap, speciesMap); @@ -266,17 +281,24 @@ public class ProtocolImportExportService extends AbstractTuttiService { Species species = bean.getSpecies(); Integer id = species.getReferenceTaxonId(); - SpeciesProtocol sp = ids.get(id); - if (sp == null) { + SpeciesProtocol sp = benthosIds.get(id); + if (sp != null) { + result.add(species); - // create a new species protocol - sp = SpeciesProtocols.newSpeciesProtocol(); - } - binder.copy(bean, sp); - sp.setMandatorySampleCategoryId(Lists.newArrayList( - bean.getMandatorySampleCategoryId())); + } else { + + sp = ids.get(id); + if (sp == null) { - ids.put(id, sp); + // create a new species protocol + sp = SpeciesProtocols.newSpeciesProtocol(); + } + binder.copy(bean, sp); + sp.setMandatorySampleCategoryId(Lists.newArrayList( + bean.getMandatorySampleCategoryId())); + + ids.put(id, sp); + } } importer.close(); } finally { @@ -295,18 +317,30 @@ public class ProtocolImportExportService extends AbstractTuttiService { List<SpeciesProtocol> values = Lists.newArrayList(ids.values()); protocol.setSpecies(values); + + return result; } - public void importProtocolBenthos(File file, - TuttiProtocol protocol, - Map<String, Caracteristic> caracteristicMap, - Map<String, Species> speciesMap) { + /** + * + * @param file + * @param protocol + * @param caracteristicMap + * @param speciesMap + * @return The list of the species not imported because they are already in the species + */ + public List<Species> importProtocolBenthos(File file, + TuttiProtocol protocol, + Map<String, Caracteristic> caracteristicMap, + Map<String, Species> speciesMap) { if (log.isInfoEnabled()) { log.info("Will import protocol [" + protocol.getName() + "] species from file: " + file); } + List<Species> result = new ArrayList<>(); + Map<Integer, SpeciesProtocol> ids = Maps.newLinkedHashMap(); if (!protocol.isBenthosEmpty()) { @@ -317,6 +351,18 @@ public class ProtocolImportExportService extends AbstractTuttiService { ids.put(speciesProtocol.getSpeciesReferenceTaxonId(), speciesProtocol); } } + + Map<Integer, SpeciesProtocol> speciesIds = Maps.newLinkedHashMap(); + + if (!protocol.isSpeciesEmpty()) { + + // get existing species (will be not be imported) + + for (SpeciesProtocol speciesProtocol : protocol.getSpecies()) { + speciesIds.put(speciesProtocol.getSpeciesReferenceTaxonId(), speciesProtocol); + } + } + SpeciesRowModel csvModel = new SpeciesRowModel(getCsvSeparator(), caracteristicMap, speciesMap); @@ -338,15 +384,22 @@ public class ProtocolImportExportService extends AbstractTuttiService { Species species = bean.getSpecies(); Integer id = species.getReferenceTaxonId(); - SpeciesProtocol sp = ids.get(id); - if (sp == null) { + SpeciesProtocol sp = speciesIds.get(id); + if (sp != null) { + result.add(species); - // create a new species protocol - sp = SpeciesProtocols.newSpeciesProtocol(); - } - binder.copy(bean, sp); + } else { + + sp = ids.get(id); + if (sp == null) { - ids.put(id, sp); + // create a new species protocol + sp = SpeciesProtocols.newSpeciesProtocol(); + } + binder.copy(bean, sp); + + ids.put(id, sp); + } } importer.close(); } finally { @@ -363,6 +416,8 @@ public class ProtocolImportExportService extends AbstractTuttiService { List<SpeciesProtocol> values = Lists.newArrayList(ids.values()); protocol.setBenthos(values); + + return result; } public void exportProtocolSpecies(File file, diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolBenthosAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolBenthosAction.java index 47b569e..377c076 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolBenthosAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolBenthosAction.java @@ -25,6 +25,8 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; @@ -97,10 +99,11 @@ public class ImportProtocolBenthosAction extends AbstractTuttiAction<EditProtoco ProtocolImportExportService service = getContext().getTuttiProtocolImportExportService(); - service.importProtocolBenthos(file, - protocol, - model.getAllCaracteristic(), - model.getAllReferentSpeciesByTaxonId()); + List<Species> notImportedBenthos = + service.importProtocolBenthos(file, + protocol, + model.getAllCaracteristic(), + model.getAllReferentSpeciesByTaxonId()); // build rows from imported+merged protocol // (will also remove all synonyms of species referent used) @@ -142,5 +145,18 @@ public class ImportProtocolBenthosAction extends AbstractTuttiAction<EditProtoco file, nbSynonym); } sendMessage(message); + + if (!notImportedBenthos.isEmpty()) { + StringBuilder sb = new StringBuilder(); + for (Species sp : notImportedBenthos) { + sb.append("<li>" + decorate(sp, DecoratorService.FROM_PROTOCOL) + "</li>"); + } + displayWarningMessage( + t("tutti.editProtocol.action.importProtocolBenthos.speciesInSpecies.title"), + "<html><body>" + + t("tutti.editProtocol.action.importProtocolBenthos.speciesInSpecies", sb.toString()) + + "</body></html>" + ); + } } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolSpeciesAction.java index cd173ae..718d459 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolSpeciesAction.java @@ -25,6 +25,8 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; @@ -97,10 +99,11 @@ public class ImportProtocolSpeciesAction extends AbstractTuttiAction<EditProtoco ProtocolImportExportService service = getContext().getTuttiProtocolImportExportService(); - service.importProtocolSpecies(file, - protocol, - model.getAllCaracteristic(), - model.getAllReferentSpeciesByTaxonId()); + List<Species> notImportedSpecies = + service.importProtocolSpecies(file, + protocol, + model.getAllCaracteristic(), + model.getAllReferentSpeciesByTaxonId()); // build rows from imported+merged protocol // (will also remove all synonyms of species referent used) @@ -142,5 +145,18 @@ public class ImportProtocolSpeciesAction extends AbstractTuttiAction<EditProtoco file, nbSynonym); } sendMessage(message); + + if (!notImportedSpecies.isEmpty()) { + StringBuilder sb = new StringBuilder(); + for (Species sp : notImportedSpecies) { + sb.append("<li>" + decorate(sp, DecoratorService.FROM_PROTOCOL) + "</li>"); + } + displayWarningMessage( + t("tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos.title"), + "<html><body>" + + t("tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos", sb.toString()) + + "</body></html>" + ); + } } } diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 9be01fb..87c1c6a 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -878,15 +878,23 @@ tutti.editProtocol.action.exportProtocolSpecies.tip= tutti.editProtocol.action.exportPupitri= tutti.editProtocol.action.exportPupitri.mnemonic= tutti.editProtocol.action.exportPupitri.tip= +tutti.editProtocol.action.importBenthos.speciesInSpecies= +tutti.editProtocol.action.importBenthos.speciesInSpecies.title= tutti.editProtocol.action.importProtocolBenthos= tutti.editProtocol.action.importProtocolBenthos.mnemonic= +tutti.editProtocol.action.importProtocolBenthos.speciesInSpecies= +tutti.editProtocol.action.importProtocolBenthos.speciesInSpecies.title= tutti.editProtocol.action.importProtocolBenthos.tip= tutti.editProtocol.action.importProtocolCaracteristic= tutti.editProtocol.action.importProtocolCaracteristic.mnemonic= tutti.editProtocol.action.importProtocolCaracteristic.tip= tutti.editProtocol.action.importProtocolSpecies= tutti.editProtocol.action.importProtocolSpecies.mnemonic= +tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos= +tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos.title= tutti.editProtocol.action.importProtocolSpecies.tip= +tutti.editProtocol.action.importSpecies.speciesInBenthos= +tutti.editProtocol.action.importSpecies.speciesInBenthos.title= tutti.editProtocol.action.removeBenthosProtocol= tutti.editProtocol.action.removeBenthosProtocol.mnemonic= tutti.editProtocol.action.removeBenthosProtocol.tip= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index f1809a5..ca8f7a5 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -867,12 +867,16 @@ tutti.editProtocol.action.exportPupitri.mnemonic=p tutti.editProtocol.action.exportPupitri.tip=Exporter les espèces au format Pupitri tutti.editProtocol.action.importProtocolBenthos=Importer les benthos tutti.editProtocol.action.importProtocolBenthos.mnemonic=i +tutti.editProtocol.action.importProtocolBenthos.speciesInSpecies=Les espèces suivantes n'ont pas été importées car elles sont déjà présentes dans les espèces \:<ul>%s</ul> +tutti.editProtocol.action.importProtocolBenthos.speciesInSpecies.title=Espèces non importées tutti.editProtocol.action.importProtocolBenthos.tip=Importer les benthos dans le protocole tutti.editProtocol.action.importProtocolCaracteristic=Importer les caractéristiques tutti.editProtocol.action.importProtocolCaracteristic.mnemonic=i tutti.editProtocol.action.importProtocolCaracteristic.tip=Importer les caractéristiques dans le protocole tutti.editProtocol.action.importProtocolSpecies=Importer les espèces tutti.editProtocol.action.importProtocolSpecies.mnemonic=é +tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos=Les espèces suivantes n'ont pas été importées car elles sont déjà présentes dans le benthos \:<ul>%s</ul> +tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos.title=Espèces non importées tutti.editProtocol.action.importProtocolSpecies.tip=Importer les espèces dans le protocole tutti.editProtocol.action.removeBenthosProtocol=Supprimer les benthos tutti.editProtocol.action.removeBenthosProtocol.mnemonic=S -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.