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 a6999c4b522b4b7562410d91819eb3ffd4ef4e43 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Aug 26 17:44:26 2015 +0200 implantation TargetSampleService + test (refs #7458). --- .../service/seine/TargetSampleService.java | 4 +- .../service/seine/TargetSampleServiceTopia.java | 131 +++++++++++++++++++++ .../seine/TargetSampleServiceTopiaTest.java | 70 +++++++++++ 3 files changed, 204 insertions(+), 1 deletion(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java index 51a1f90..9163606 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/TargetSampleService.java @@ -10,11 +10,13 @@ import fr.ird.observe.services.spi.Write; */ public interface TargetSampleService extends ObserveService { + boolean canUseTargetSample(String setSeineId, boolean discarded); + FormDto<TargetSampleDto> loadToRead(String setSeineId, boolean discarded); FormDto<TargetSampleDto> loadToEdit(String setSeineId, boolean discarded); @Write - String save(FormDto<TargetSampleDto> form); + String save(String setSeineId, FormDto<TargetSampleDto> form); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopia.java new file mode 100644 index 0000000..6a1305d --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopia.java @@ -0,0 +1,131 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.collect.Sets; +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.entities.seine.TargetCatch; +import fr.ird.observe.entities.seine.TargetSample; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.IdDto; +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.SetSeineDto; +import fr.ird.observe.services.dto.seine.TargetSampleDto; + +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class TargetSampleServiceTopia extends ObserveServiceTopia implements TargetSampleService { + + @Override + public boolean canUseTargetSample(String setSeineId, boolean discarded) { + + SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); + + return setSeine.canUseTargetSample(discarded); + } + + protected TargetSample getTargetSample(SetSeine setSeine, boolean discarded) { + + TargetSample targetSample = setSeine.getTargetSample(discarded); + + if (targetSample == null) { + targetSample = newEntity(TargetSample.class); + targetSample.setDiscarded(discarded); + } + + return targetSample; + + + } + + @Override + public FormDto<TargetSampleDto> loadToRead(String setSeineId, boolean discarded) { + + SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); + + TargetSample targetSample = getTargetSample(setSeine, discarded); + + FormDto<TargetSampleDto> form = entityToReadFormDto(TargetSampleDto.class, TargetSample.class, targetSample); + + return form; + } + + @Override + public FormDto<TargetSampleDto> loadToEdit(String setSeineId, boolean discarded) { + + SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); + + TargetSample targetSample = getTargetSample(setSeine, discarded); + + FormDto<TargetSampleDto> form = entityToEditFormDto( + TargetSampleDto.class, + TargetSample.class, + targetSample, + Sets.<Class<? extends IdDto>>newHashSet(SpeciesDto.class)); + + // on filtre la list des espéces cibles + Set<Species> speciesSet = Sets.newLinkedHashSet(); + + // on recupere la liste des espèces thon cible + Collection<TargetCatch> targetCatches = setSeine.getTargetCatch(); + + // on filtre sur les espèces montées sur le pont et rejetées + if (targetCatches != null) { + + for (TargetCatch targetCatch : targetCatches) { + + // si echantillon rejeté : on ne conserve que les espèces rejectées montées sur le pont + // sinon les espèce cible + if (discarded && targetCatch.isDiscarded() && targetCatch.getBroughtOnDeck() + || + !discarded && !targetCatch.isDiscarded()) { + + speciesSet.add(targetCatch.getWeightCategory().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<TargetSampleDto> form) { + + SetSeine setSeine = loadEntity(SetSeineDto.class, SetSeine.class, setSeineId); + + TargetSampleDto targetSampleDto = form.getForm(); + + TargetSample targetSample = dtoToEntity(TargetSampleDto.class, TargetSample.class, targetSampleDto); + + targetSample = saveEntity(TargetSample.class, targetSample); + + if (targetSampleDto.isNotPersisted()) { + + setSeine.addTargetSample(targetSample); + + saveEntity(SetSeine.class, setSeine); + + } + + return setSeine.getTopiaId(); + } +} diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopiaTest.java new file mode 100644 index 0000000..d55dbe2 --- /dev/null +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/seine/TargetSampleServiceTopiaTest.java @@ -0,0 +1,70 @@ +package fr.ird.observe.services.service.seine; + +import com.google.common.collect.ImmutableSet; +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.TargetSampleDto; +import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Set; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class TargetSampleServiceTopiaTest extends AbstractServiceTopiaTest { + + public static String SET_SEINE_ID = "fr.ird.observe.entities.seine.SetSeine#1359573677233#0.016313003525718517"; + + protected TargetSampleService service; + + @Override + public Set<String> getTestNamesChangeDataBase() { + return ImmutableSet.of(); + } + + @Override + public String getScriptName() { + return "dataForTestSeine"; + } + + @Override + public void setUp() throws Exception { + super.setUp(); + + service = newService(TargetSampleService.class); + + } + + @Test + public void canUseTargetSampleTest() { + + Assert.assertTrue(service.canUseTargetSample(SET_SEINE_ID, false)); + Assert.assertFalse(service.canUseTargetSample(SET_SEINE_ID, true)); + + } + + @Test + public void loadForEditTest() { + + FormDto<TargetSampleDto> formDto = service.loadToEdit(SET_SEINE_ID, false); + + Assert.assertNotNull(formDto); + + TargetSampleDto targetSampleDto = formDto.getForm(); + + Assert.assertNotNull(targetSampleDto); + Assert.assertFalse(targetSampleDto.getDiscarded()); + Assert.assertTrue(targetSampleDto.isTargetLengthEmpty()); + + ReferenceSetDto<SpeciesDto> speciesDtoReferenceSetDto = formDto.getReferenceSetDto(SpeciesDto.class); + Assert.assertEquals(1, speciesDtoReferenceSetDto.sizeReference()); + ReferenceDto referenceDto = speciesDtoReferenceSetDto.getReference(0); + Assert.assertEquals("fr.ird.observe.entities.referentiel.Species#1239832685474#0.8943253454598569", referenceDto.getId()); + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.