This is an automated email from the git hooks/post-receive script. New commit to branch feature/7603-PS-verfiEcranEstimationBancDUneCalee in repository tutti. See http://git.codelutin.com/tutti.git commit 05a295b7788aabfd66fedfe2ae1668fffc61d404 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Mar 8 11:20:20 2016 +0100 Ajouter une fonction dans le service de référentiel pour recupéré la list des espèces pour lun list et l'océan d'une marée (see #7603). --- .../table/impl/seine/SchoolEstimateUIHandler.java | 35 ++++++++++++++++ .../v1/ReferentialServiceController.java | 5 +++ .../services/service/ReferentialService.java | 4 ++ .../services/service/ReferentialServiceTopia.java | 46 ++++++++++++++++++++++ 4 files changed, 90 insertions(+) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java index b33abab..6aa4bd1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java @@ -28,12 +28,16 @@ import com.google.common.collect.Lists; import fr.ird.observe.ObserveSwingApplicationContext; 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.ReferentialReferences; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.result.SaveResultDto; +import fr.ird.observe.services.dto.seine.ObjectSchoolEstimateDto; import fr.ird.observe.services.dto.seine.SchoolEstimateDto; import fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDto; import fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDtos; +import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.services.service.seine.SchoolEstimateService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.table.ContentTableModel; @@ -46,6 +50,7 @@ import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.util.Collection; import java.util.Collections; +import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -142,6 +147,36 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineSchoo SetSeineSchoolEstimateDtos.copySetSeineSchoolEstimateDto(form.getObject(), getBean()); } + @Override + protected <D extends ReferentialDto> Iterable<ReferentialReference<D>> filterReferentialReferences(Class<D> dtoType, String propertyName, LinkedList<ReferentialReference<D>> incomingReferences) { + + Iterable<ReferentialReference<D>> result = super.filterReferentialReferences(dtoType, propertyName, incomingReferences); + + switch (propertyName) { + + case ObjectSchoolEstimateDto.PROPERTY_SPECIES: { + + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineSchoolEstimateId(); + String tripSeineId = getDataContext().getSelectedTripSeineId(); + + ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + result = referentialService.getSpeciesByListAndTrip(speciesListId, tripSeineId); + + result = ReferentialReferences.filterEnabled(result); + + 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 SchoolEstimateService getSchoolEstimateService() { return ObserveSwingApplicationContext.get().newService(SchoolEstimateService.class); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java index 6e44588..01dc814 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java @@ -102,4 +102,9 @@ public class ReferentialServiceController extends ObserveAuthenticatedServiceCon public <R extends ReferentialDto> boolean exists(Class<R> type, String id) { return service.exists(type, id); } + + @Override + public <D extends ReferentialDto> Iterable<ReferentialReference<D>> getSpeciesByListAndTrip(String speciesListId, String tripId) { + return service.getSpeciesByListAndTrip(speciesListId, tripId); + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java index fed9025..f01374c 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java @@ -90,4 +90,8 @@ public interface ReferentialService extends ObserveService { @ReadReferentialPermission @ReadDataPermission <R extends ReferentialDto> boolean exists(Class<R> type, String id); + + @ReadReferentialPermission + @ReadDataPermission + <D extends ReferentialDto> Iterable<ReferentialReference<D>> getSpeciesByListAndTrip(String speciesListId, String tripId); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java index 1304147..537178e 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java @@ -25,11 +25,17 @@ package fr.ird.observe.services.service; import com.google.common.base.Joiner; import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import fr.ird.observe.entities.EntityMap; +import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; +import fr.ird.observe.entities.referentiel.Ocean; import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.referentiel.Species2; +import fr.ird.observe.entities.referentiel.SpeciesList; +import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.binder.BinderEngine; import fr.ird.observe.services.binder.referential.ReferentialBinderSupport; @@ -37,7 +43,10 @@ import fr.ird.observe.services.dto.AbstractReferenceSet; import fr.ird.observe.services.dto.DataDto; import fr.ird.observe.services.dto.DtoMap; import fr.ird.observe.services.dto.Form; +import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.dto.constants.ReferenceStatus; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.reference.ReferenceSetDefinition; import fr.ird.observe.services.dto.reference.request.ReferenceSetRequestDefinition; import fr.ird.observe.services.dto.reference.request.ReferenceSetRequestDefinitions; @@ -45,7 +54,9 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; import fr.ird.observe.services.dto.referential.SpeciesDto; +import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.services.dto.result.SaveResultDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaDao; @@ -264,4 +275,39 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe return existsEntity(entityType, id); } + @Override + public ImmutableList<ReferentialReference<SpeciesDto>> getSpeciesByListAndTrip(String speciesListId, String tripId) { + if (log.isTraceEnabled()) { + log.trace("getSpeciesByListAndTrip(" + speciesListId + ", " + tripId + ")"); + } + + // find Ocean + Ocean ocean; + if (IdDtos.isTripSeineId(tripId)) { + TripSeine tripSeine = loadEntity(TripSeineDto.class, tripId); + ocean = tripSeine.getOcean(); + } else { + TripLongline tripLongline = loadEntity(TripLonglineDto.class, tripId); + ocean = tripLongline.getOcean(); + } + + SpeciesList speciesList = loadEntity(SpeciesListDto.class, speciesListId); + + List<Species> species2 = Species2.filterByOcean(speciesList.getSpecies(), ocean); + + ReferentialBinderSupport<Species, SpeciesDto> binder = getReferentialBinder(SpeciesDto.class); + + ReferentialLocale referentialLocale = getReferentialLocale(); + + ImmutableList.Builder<ReferentialReference<SpeciesDto>> references = ImmutableList.builder(); + for (Species species : species2) { + + ReferentialReference<SpeciesDto> reference = binder.toReferentialReference(referentialLocale, species); + references.add(reference); + + } + + return references.build(); + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.