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 6d806d43415d0cbfda67c24b0f269ec0ae5391e8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 16:23:36 2015 +0100 add a nice precondition to be sure to use always a list of referent species while invoking the method Speciess#splitReferenceSpeciesByReferenceTaxonId --- .../tutti/persistence/TuttiPersistenceImpl.java | 2 +- .../persistence/entities/referential/Speciess.java | 18 +++++++++++++++++- .../referential/SpeciesPersistenceServiceReadTest.java | 2 +- .../fr/ifremer/tutti/service/PersistenceService.java | 4 ++-- .../service/csv/AbstractTuttiImportExportModel.java | 2 +- .../tutti/service/csv/SpeciesTechnicalParser.java | 4 ++-- .../tutti/ui/swing/action/ImportProtocolAction.java | 5 +++-- .../action/SelectSpeciesForBenthosBatchAction.java | 2 +- ...lectSpeciesForIndividualObservationBatchAction.java | 2 +- .../action/SelectSpeciesForSpeciesBatchAction.java | 2 +- .../swing/content/protocol/EditProtocolUIHandler.java | 4 ++-- 11 files changed, 32 insertions(+), 15 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index 0a96870..1dda3e4 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -817,7 +817,7 @@ public class TuttiPersistenceImpl implements TuttiPersistence { // see http://forge.codelutin.com/issues/4154 List<Species> allReferentSpecies = getAllReferentSpecies(); - Map<String, Species> map = Speciess.splitByTaxonId(allReferentSpecies); + Map<String, Species> map = Speciess.splitReferenceSpeciesByReferenceTaxonId(allReferentSpecies); if (!protocol.isSpeciesEmpty()) { Iterator<SpeciesProtocol> iterator = protocol.getSpecies().iterator(); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java index ab869e1..1b52844 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Speciess.java @@ -106,7 +106,23 @@ public class Speciess extends AbstractSpeciess { } }; - public static Map<String, Species> splitByTaxonId(Iterable<Species> list) { + /** + * Indexe une liste d'espèces référentes par la propriété {@link Species#PROPERTY_REFERENCE_TAXON_ID}. + * + * Attention de ne pas utiliser cette méthode sur une liste d'espèces non référentes, car le {@link Species#PROPERTY_REFERENCE_TAXON_ID} + * peut servir pour différentes espèces (le référent et ses synonymes). + * + * Cette méthode vérifie donc avant d'effectuer le split que toutes les espèces données sont référentes. + * + * @param list la liste des espèces référentes. + * @return la dictionnaire des espèces référentes indexées par leur code {@link Species#PROPERTY_REFERENCE_TAXON_ID}. + */ + public static Map<String, Species> splitReferenceSpeciesByReferenceTaxonId(Iterable<Species> list) { + + for (Species species : list) { + Preconditions.checkArgument(species.isReferenceTaxon(), "L'espèce " + species.getId() + " n'est pas référente."); + } + return Maps.uniqueIndex(list, GET_REFERECE_TAXON_ID); } diff --git a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java index bf2f0e8..322084f 100644 --- a/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java +++ b/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/referential/SpeciesPersistenceServiceReadTest.java @@ -57,7 +57,7 @@ public class SpeciesPersistenceServiceReadTest extends ReferentialPersistenceSer TuttiEntities.splitById(result); assertResultList(result, fixtures.refNbReferentSpecies()); - Speciess.splitByTaxonId(result); + Speciess.splitReferenceSpeciesByReferenceTaxonId(result); } @Test diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 59e208d..0b39493 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -540,7 +540,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer if (!protocol.isSpeciesEmpty()) { // split by taxonId - Map<String, Species> map = Speciess.splitByTaxonId(referentSpecies); + Map<String, Species> map = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); for (SpeciesProtocol protocolSpecy : protocol.getSpecies()) { String taxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId()); @@ -574,7 +574,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer if (!protocol.isBenthosEmpty()) { // split by taxonId - Map<String, Species> map = Speciess.splitByTaxonId(referentSpecies); + Map<String, Species> map = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); for (SpeciesProtocol protocolSpecy : protocol.getBenthos()) { String taxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java index 22a5cd3..97b22d8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/AbstractTuttiImportExportModel.java @@ -51,7 +51,7 @@ public abstract class AbstractTuttiImportExportModel<M> extends AbstractImportEx if (species == null) { species = Lists.newArrayList(); } - Map<String, Species> universe = Speciess.splitByTaxonId(species); + Map<String, Species> universe = Speciess.splitReferenceSpeciesByReferenceTaxonId(species); newMandatoryColumn(propertyName, propertyName, new ForeignKeyParserFormatter<>(Species.class, Species.PROPERTY_REFERENCE_TAXON_ID, universe)); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java index ea93f81..c54a9b0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/SpeciesTechnicalParser.java @@ -29,8 +29,8 @@ public class SpeciesTechnicalParser implements ValueParser<Species> { public Species parse(String value) throws ParseException { if (speciesByReferenceTaxonId == null) { - List<Species> gears = persistenceService.getAllReferentSpecies(); - speciesByReferenceTaxonId = Speciess.splitByTaxonId(gears); + List<Species> referentSpecies = persistenceService.getAllReferentSpecies(); + speciesByReferenceTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); } Species species = speciesByReferenceTaxonId.get(value); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java index 189adc5..c61c8be 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportProtocolAction.java @@ -44,6 +44,7 @@ import org.apache.commons.logging.LogFactory; import javax.swing.JOptionPane; import javax.swing.UIManager; import java.io.File; +import java.util.List; import java.util.Map; import java.util.Set; @@ -117,8 +118,8 @@ public class ImportProtocolAction extends AbstractChangeScreenAction { if (doAction) { - Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByTaxonId( - getDataContext().getReferentSpecies()); + List<Species> referentSpecies = getDataContext().getReferentSpecies(); + Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); // clean species doAction = cleanSpecies(allReferentSpeciesByTaxonId, protocol); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java index 8d8cab8..945c3c3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForBenthosBatchAction.java @@ -82,7 +82,7 @@ public class SelectSpeciesForBenthosBatchAction extends AbstractTuttiAction<Crea if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitReferenceSpeciesByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java index e5795d6..f692047 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForIndividualObservationBatchAction.java @@ -84,7 +84,7 @@ public class SelectSpeciesForIndividualObservationBatchAction extends AbstractTu if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitReferenceSpeciesByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java index 174b73a..faf18c2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SelectSpeciesForSpeciesBatchAction.java @@ -82,7 +82,7 @@ public class SelectSpeciesForSpeciesBatchAction extends AbstractTuttiAction<Crea if (!selectedSpecies.isReferenceTaxon()) { String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitByTaxonId(referents); + Map<String, Species> referentsById = Speciess.splitReferenceSpeciesByReferenceTaxonId(referents); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = referentsById.get(taxonId); String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index 9f4f872..d47e74d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -185,8 +185,8 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI Speciess.splitByReferenceTaxonId(allSpecies); model.setAllSpeciesByTaxonId(allSpeciesByTaxonId); - Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitByTaxonId( - getDataContext().getReferentSpecies()); + List<Species> referentSpecies = getDataContext().getReferentSpecies(); + Map<String, Species> allReferentSpeciesByTaxonId = Speciess.splitReferenceSpeciesByReferenceTaxonId(referentSpecies); model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId); List<Caracteristic> caracteristics = Lists.newArrayList(getDataContext().getCaracteristics()); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.