This is an automated email from the git hooks/post-receive script. New commit to branch feature/7608-PS-VerifEcranEchantillonsFaunesAccesoire in repository tutti. See http://git.codelutin.com/tutti.git commit de27f17437dc97e8d4ce591c32de4ac4499a8005 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Mar 9 15:42:49 2016 +0100 Ajout de trace dans les appels des services Ajouter un fonction pour récupéré la liste des espèces échantillonables (see #7608). --- .../table/impl/seine/NonTargetSampleUIHandler.java | 27 +++++++++ .../v1/seine/NonTargetSampleServiceController.java | 9 +++ .../service/seine/NonTargetSampleService.java | 7 +++ .../service/seine/NonTargetSampleServiceTopia.java | 66 +++++++++++++--------- 4 files changed, 83 insertions(+), 26 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java index b5cfb35..ae767b6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java @@ -26,6 +26,7 @@ import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.services.dto.Form; +import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.SexDto; import fr.ird.observe.services.dto.referential.SpeciesDto; @@ -48,6 +49,8 @@ import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Collection; +import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -310,6 +313,30 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam NonTargetSampleDtos.copyNonTargetSampleDto(form.getObject(), getBean()); } + @Override + protected <D extends ReferentialDto> Collection<ReferentialReference<D>> filterReferentialReferences(Class<D> dtoType, String propertyName, LinkedList<ReferentialReference<D>> incomingReferences) { + + Collection<ReferentialReference<D>> result = super.filterReferentialReferences(dtoType, propertyName, incomingReferences); + + switch (propertyName) { + + case NonTargetLengthDto.PROPERTY_SPECIES: { + + result = (Collection) getNonTargetSampleService().getSampleSpecies(getSelectedParentId()); + + if (log.isDebugEnabled()) { + log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); + } + } + + break; + + } + + return result; + + } + protected NonTargetSampleService getNonTargetSampleService() { return ObserveSwingApplicationContext.get().newService(NonTargetSampleService.class); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/NonTargetSampleServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/NonTargetSampleServiceController.java index 3eb55e5..c7f4041 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/NonTargetSampleServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/NonTargetSampleServiceController.java @@ -24,10 +24,14 @@ package fr.ird.observe.application.web.controller.v1.seine; import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; import fr.ird.observe.services.dto.Form; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.NonTargetSampleDto; import fr.ird.observe.services.service.seine.NonTargetSampleService; +import java.util.Collection; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -48,6 +52,11 @@ public class NonTargetSampleServiceController extends ObserveAuthenticatedServic } @Override + public Collection<ReferentialReference<SpeciesDto>> getSampleSpecies(String setSeineId) { + return service.getSampleSpecies(setSeineId); + } + + @Override public SaveResultDto save(String setSeineId, NonTargetSampleDto dto) { return service.save(setSeineId, dto); } 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 f16ee01..a96bd0c 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 @@ -24,6 +24,8 @@ package fr.ird.observe.services.service.seine; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.Form; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.NonTargetSampleDto; import fr.ird.observe.services.spi.PostRequest; @@ -31,6 +33,8 @@ import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; +import java.util.Collection; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -42,6 +46,9 @@ public interface NonTargetSampleService extends ObserveService { @ReadDataPermission Form<NonTargetSampleDto> loadForm(String setSeineId); + @ReadDataPermission + Collection<ReferentialReference<SpeciesDto>> getSampleSpecies(String setSeineId); + @Write @WriteDataPermission @PostRequest 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 index c93f36e..b56412b 100644 --- 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 @@ -23,28 +23,39 @@ 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.referentiel.ObserveReferentialEntity; 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.binder.referential.ReferentialBinderSupport; import fr.ird.observe.services.dto.Form; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.reference.request.ReferenceSetRequestDefinitions; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.NonTargetSampleDto; import fr.ird.observe.services.dto.seine.SetSeineDto; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import java.util.Collection; -import java.util.Set; +import java.util.List; +import java.util.stream.Collectors; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ public class NonTargetSampleServiceTopia extends ObserveServiceTopia implements NonTargetSampleService { + private static final Log log = LogFactory.getLog(NonTargetSampleServiceTopia.class); + @Override public boolean canUseNonTargetSample(String setSeineId) { + if (log.isTraceEnabled()) { + log.trace("canUseNonTargetSample(" + setSeineId + ")"); + } SetSeine setSeine = loadEntity(SetSeineDto.class, setSeineId); @@ -71,6 +82,9 @@ public class NonTargetSampleServiceTopia extends ObserveServiceTopia implements @Override public Form<NonTargetSampleDto> loadForm(String setSeineId) { + if (log.isTraceEnabled()) { + log.trace("loadForm(" + setSeineId + ")"); + } SetSeine setSeine = loadEntity(SetSeineDto.class, setSeineId); @@ -79,45 +93,45 @@ public class NonTargetSampleServiceTopia extends ObserveServiceTopia implements Form<NonTargetSampleDto> form = dataEntityToForm( NonTargetSampleDto.class, nonTargetSample, - ReferenceSetRequestDefinitions.SET_SEINE_NON_TARGET_CATCH_FORM); + ReferenceSetRequestDefinitions.NON_TARGET_SAMPLE_FORM); - // on filtre la liste des espéces cibles - Set<Species> speciesSet = Sets.newLinkedHashSet(); + return form; + } - // on recupere la liste des espèces thon cible - Collection<NonTargetCatch> nonTargetCatches = setSeine.getNonTargetCatch(); + @Override + public Collection<ReferentialReference<SpeciesDto>> getSampleSpecies(String setSeineId) { + if (log.isTraceEnabled()) { + log.trace("getSampleSpecies(" + setSeineId + ")"); + } - // on filtre sur les espèces montées sur le pont et rejetées - if (nonTargetCatches != null) { + SetSeine setSeine = loadEntity(SetSeineDto.class, setSeineId); - for (NonTargetCatch nonTargetCatch : nonTargetCatches) { + ReferentialBinderSupport<ObserveReferentialEntity, SpeciesDto> speciesBinder = getReferentialBinder(SpeciesDto.class); - speciesSet.add(nonTargetCatch.getSpecies()); - } + ReferentialLocale referentialLocale = getReferentialLocale(); - } - //FIXME request -// LinkedHashSet<ReferenceDto<SpeciesDto>> speciesRefs = Sets.newLinkedHashSet(); -// -// for (Species species : speciesSet) { -// speciesRefs.add(entityToReferenceDto(SpeciesDto.class, species)); -// } -// -// ReferenceSetDto<SpeciesDto> speciesRreferenceSetDto = form.getReferenceSetDto(SpeciesDto.class); -// speciesRreferenceSetDto.setReference(speciesRefs); + // on recupere la liste des espèces thon cible + List<ReferentialReference<SpeciesDto>> species = setSeine.getNonTargetCatch().stream() + .map(NonTargetCatch::getSpecies) + .distinct() + .map(s -> speciesBinder.toReferentialReference(referentialLocale, s)) + .collect(Collectors.toList()); - return form; + return species; } @Override public SaveResultDto save(String setSeineId, NonTargetSampleDto dto) { + if (log.isTraceEnabled()) { + log.trace("save(" + setSeineId + ", " + dto.getId() + ")"); + } SetSeine setSeine = loadEntity(SetSeineDto.class, setSeineId); - checkLastUpdateDate(setSeine, dto); - NonTargetSample entity = loadOrCreateEntityFromDataDto(dto); + checkLastUpdateDate(entity, dto); + copyDataDtoToEntity(dto, entity); if (dto.isNotPersisted()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.