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 220d58cfa1d06c9ee84cf5d92a416ad8cb7fe8dc Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Feb 9 15:29:31 2015 +0100 add at last an objet to load nicely all code of a species --- .../java/fr/ifremer/tutti/service/SpeciesMap.java | 123 +++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/SpeciesMap.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/SpeciesMap.java new file mode 100644 index 0000000..886a03d --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/SpeciesMap.java @@ -0,0 +1,123 @@ +package fr.ifremer.tutti.service; + +import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch; +import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Species; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 2/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class SpeciesMap { + + public static SpeciesMap create(TuttiDataContext dataContext, PersistenceService persistenceService) { + + boolean protocolFilled = dataContext.isProtocolFilled(); + + Map<Integer, SpeciesProtocol> speciesProtocolMap; + Map<Integer, SpeciesProtocol> benthosProtocolMap; + + if (protocolFilled) { + + speciesProtocolMap = persistenceService.toSpeciesProtocolMap(); + benthosProtocolMap = persistenceService.toBenthosProtocolMap(); + + } else { + + speciesProtocolMap = new HashMap<>(); + benthosProtocolMap = new HashMap<>(); + } + + SpeciesMap speciesMap = new SpeciesMap(persistenceService, speciesProtocolMap, benthosProtocolMap); + return speciesMap; + + } + + protected final Map<Integer, SpeciesProtocol> speciesProtocolMap; + + protected final Map<Integer, SpeciesProtocol> benthosProtocolMap; + + protected final Map<Integer, Species> speciesByReferenceTaxonId = new TreeMap<>(); + + protected final PersistenceService persistenceService; + + public <A extends SpeciesAbleBatch> void loadSpecies(List<A> speciesAbleBatches) { + + for (A speciesAbleBatch : speciesAbleBatches) { + loadSpecies(speciesAbleBatch.getSpecies()); + } + + } + + public <A extends SpeciesAbleBatch> void loadBenthos(List<A> speciesAbleBatches) { + + for (A speciesAbleBatch : speciesAbleBatches) { + loadBenthos(speciesAbleBatch.getSpecies()); + } + + } + + public void loadSpecies(Species species) { + + load(species, speciesProtocolMap); + + } + + public void loadBenthos(Species species) { + + load(species, benthosProtocolMap); + + } + + protected SpeciesMap(PersistenceService persistenceService, + Map<Integer, SpeciesProtocol> speciesProtocolMap, + Map<Integer, SpeciesProtocol> benthosProtocolMap) { + + this.speciesProtocolMap = speciesProtocolMap; + this.benthosProtocolMap = benthosProtocolMap; + this.persistenceService = persistenceService; + + } + + protected void load(Species species, Map<Integer, SpeciesProtocol> protocolMap) { + + Integer referenceTaxonId = species.getReferenceTaxonId(); + + Species speciesLoaded = speciesByReferenceTaxonId.get(referenceTaxonId); + + if (speciesLoaded == null) { + + Species speciesWithVerncularCode = + persistenceService.getSpeciesByReferenceTaxonIdWithVernacularCode(referenceTaxonId); + + species.setVernacularCode(speciesWithVerncularCode.getVernacularCode()); + + if (protocolMap.containsKey(species.getReferenceTaxonId())) { + + SpeciesProtocol speciesProtocol = protocolMap.get(species.getReferenceTaxonId()); + String surveyCode = speciesProtocol.getSpeciesSurveyCode(); + species.setSurveyCode(surveyCode); + + } + + speciesByReferenceTaxonId.put(species.getReferenceTaxonId(), species); + + } else { + + species.setVernacularCode(speciesLoaded.getVernacularCode()); + species.setSurveyCode(speciesLoaded.getSurveyCode()); + + } + + + } + + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.