This is an automated email from the git hooks/post-receive script. New commit to branch feature/7458-topiaServices in repository observe. See http://git.codelutin.com/observe.git commit f70ed0da0cf7bee38af63712d7efbf2b3e8e6154 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Aug 27 08:56:53 2015 +0200 implantation NonTargetSampleService (refs #7458). --- .../service/seine/NonTargetSampleService.java | 4 +- .../service/seine/NonTargetSampleServiceTopia.java | 122 +++++++++++++++++++++ 2 files changed, 125 insertions(+), 1 deletion(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleService.java index eebe81b..a4a7299 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleService.java @@ -9,11 +9,13 @@ import fr.ird.observe.services.spi.Write; */ public interface NonTargetSampleService { + boolean canUseNonTargetSample(String setSeineId); + FormDto<NonTargetSampleDto> loadToRead(String setSeineId); FormDto<NonTargetSampleDto> loadToEdit(String setSeineId); @Write - String save(FormDto<NonTargetSampleDto> form); + String save(String setSeineId, FormDto<NonTargetSampleDto> form); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleServiceTopia.java new file mode 100644 index 0000000..d8adea5 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetSampleServiceTopia.java @@ -0,0 +1,122 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.seine.NonTargetCatch; +import fr.ird.observe.entities.seine.NonTargetSample; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.referential.SpeciesDto; +import fr.ird.observe.services.dto.seine.NonTargetSampleDto; +import fr.ird.observe.services.dto.seine.SetSeineDto; + +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class NonTargetSampleServiceTopia extends ObserveServiceTopia implements NonTargetSampleService { + + @Override + public boolean canUseNonTargetSample(String setSeineId) { + + SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); + + return setSeine.canUseNonTargetSample(); + } + + protected NonTargetSample getNonTargetSample(SetSeine setSeine) { + + NonTargetSample nonTargetSample; + + if (setSeine.isNonTargetSampleEmpty()) { + + nonTargetSample = newEntity(NonTargetSample.class); + + } else { + + nonTargetSample = Iterables.get(setSeine.getNonTargetSample(), 0); + } + + return nonTargetSample; + + + } + + @Override + public FormDto<NonTargetSampleDto> loadToRead(String setSeineId) { + + SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); + + NonTargetSample nonTargetSample = getNonTargetSample(setSeine); + + FormDto<NonTargetSampleDto> form = entityToReadFormDto(NonTargetSampleDto.class, NonTargetSample.class, nonTargetSample); + + return form; + } + + @Override + public FormDto<NonTargetSampleDto> loadToEdit(String setSeineId) { + + SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); + + NonTargetSample nonTargetSample = getNonTargetSample(setSeine); + + FormDto<NonTargetSampleDto> form = entityToReadFormDto(NonTargetSampleDto.class, NonTargetSample.class, nonTargetSample); + + // on filtre la list des espéces cibles + Set<Species> speciesSet = Sets.newLinkedHashSet(); + + // on recupere la liste des espèces thon cible + Collection<NonTargetCatch> nonTargetCatches = setSeine.getNonTargetCatch(); + + // on filtre sur les espèces montées sur le pont et rejetées + if (nonTargetCatches != null) { + + for (NonTargetCatch nonTargetCatch : nonTargetCatches) { + + speciesSet.add(nonTargetCatch.getSpecies()); + } + + } + + LinkedHashSet<ReferenceDto> speciesRefs = Sets.newLinkedHashSet(); + + for (Species species : speciesSet ) { + speciesRefs.add(entityToReferenceDto(SpeciesDto.class, species)); + } + + ReferenceSetDto<SpeciesDto> speciesRreferenceSetDto = form.getReferenceSetDto(SpeciesDto.class); + speciesRreferenceSetDto.setReference(speciesRefs); + + return form; + } + + @Override + public String save(String setSeineId, FormDto<NonTargetSampleDto> form) { + + SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); + + NonTargetSampleDto nonTargetSampleDto = form.getForm(); + + NonTargetSample nonTargetSample = dtoToEntity(NonTargetSampleDto.class, NonTargetSample.class, nonTargetSampleDto); + + nonTargetSample = saveEntity(NonTargetSample.class, nonTargetSample); + + if (nonTargetSampleDto.isNotPersisted()) { + + setSeine.addNonTargetSample(nonTargetSample); + + saveEntity(SetSeine.class, setSeine); + + } + + return setSeine.getTopiaId(); + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.