This is an automated email from the git hooks/post-receive script. New change to branch feature/7603-PS-verfiEcranEstimationBancDUneCalee in repository tutti. See http://git.codelutin.com/tutti.git at 05a295b 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). This branch includes the following new commits: new 9f6d85d Ajout du filtre sure les espèces de thons (see #7601). new 09b7b34 Ajout de trace dans les appels des services (see #7603). new 05a295b 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). The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: 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). commit 09b7b34970be0049732894adb9af4324aaf787a8 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Mar 8 11:17:44 2016 +0100 Ajout de trace dans les appels des services (see #7603). commit 9f6d85d18aa427d9f7633038a7ed28df75f212ed Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Mon Mar 7 17:39:14 2016 +0100 Ajout du filtre sure les espèces de thons (see #7601). -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 9f6d85d18aa427d9f7633038a7ed28df75f212ed Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Mon Mar 7 17:39:14 2016 +0100 Ajout du filtre sure les espèces de thons (see #7601). --- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 40 ++++++++++++++++++++++ .../dto/referential/ReferentialReferences.java | 39 ++++++++++++++++++++- 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java index 1604deb..874d093 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java @@ -21,14 +21,21 @@ */ package fr.ird.observe.ui.content.table.impl.seine; +import com.google.common.collect.Iterables; +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.referential.SpeciesListDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.FloatingObjectSchoolEstimateDto; import fr.ird.observe.services.dto.seine.FloatingObjectSchoolEstimateDtos; import fr.ird.observe.services.dto.seine.ObjectSchoolEstimateDto; +import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.services.service.seine.ObjectSchoolEstimateService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.table.ContentTableUIHandler; @@ -37,6 +44,8 @@ import org.apache.commons.logging.LogFactory; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; +import java.util.LinkedList; +import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -104,6 +113,37 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin FloatingObjectSchoolEstimateDtos.copyFloatingObjectSchoolEstimateDto(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().getSpeciesListSeineObjectSchoolEstimateId(); + + ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + Form<SpeciesListDto> speciesListDtoForm = referentialService.loadForm(SpeciesListDto.class, speciesListId); + SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); + + List<String> species = Lists.newArrayList(Iterables.transform(speciesListDto.getSpecies(), ReferentialReferences.getIdFunction())); + + result = ReferentialReferences.filterContains(result, species); + + 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 ObjectSchoolEstimateService getObjectSchoolEstimateService() { return ObserveSwingApplicationContext.get().newService(ObjectSchoolEstimateService.class); } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReferences.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReferences.java index 0e3491f..03ff70b 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReferences.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReferences.java @@ -1,5 +1,6 @@ package fr.ird.observe.services.dto.referential; +import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -13,6 +14,14 @@ import java.util.List; */ public class ReferentialReferences { + protected static final Function<ReferentialReference, String> ID_FUNCTION = new Function<ReferentialReference, String>() { + + @Override + public String apply(ReferentialReference input) { + return input.getId(); + } + }; + protected static final Predicate<ReferentialReference> IS_ENABLE_PREDICATE = new Predicate<ReferentialReference>() { @Override @@ -21,10 +30,38 @@ public class ReferentialReferences { } }; - public static <D extends ReferentialDto> List<ReferentialReference<D>> filterEnabled(List<ReferentialReference<D>> references) { + public static <D extends ReferentialDto> List<ReferentialReference<D>> filterEnabled(Iterable<ReferentialReference<D>> references) { List<ReferentialReference<D>> result = Lists.newArrayList(Iterables.filter(references, IS_ENABLE_PREDICATE)); + + return result; + + } + + public static <D extends ReferentialDto> List<ReferentialReference<D>> filterContains(Iterable<ReferentialReference<D>> references, List<String> containsIds) { + + List<ReferentialReference<D>> result = Lists.newArrayList(Iterables.filter(references, new ContainsPredicate(containsIds))); + return result; } + + public static Function<ReferentialReference, String> getIdFunction() { + return ID_FUNCTION; + + } + + protected static final class ContainsPredicate implements Predicate<ReferentialReference> { + + protected List<String> containsIds; + + public ContainsPredicate(List<String> containsIds) { + this.containsIds = containsIds; + } + + @Override + public boolean apply(ReferentialReference input) { + return containsIds.contains(input.getId()); + } + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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 09b7b34970be0049732894adb9af4324aaf787a8 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Mar 8 11:17:44 2016 +0100 Ajout de trace dans les appels des services (see #7603). --- .../service/seine/SchoolEstimateServiceTopia.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateServiceTopia.java index 65adbeb..87a6d64 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/SchoolEstimateServiceTopia.java @@ -22,36 +22,35 @@ package fr.ird.observe.services.service.seine; * #L% */ -import fr.ird.observe.entities.referentiel.Ocean; import fr.ird.observe.entities.seine.SchoolEstimate; import fr.ird.observe.entities.seine.SetSeine; -import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.reference.request.ReferenceSetRequestDefinitions; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.SetSeineSchoolEstimateDto; -import fr.ird.observe.services.dto.seine.TripSeineDto; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ public class SchoolEstimateServiceTopia extends ObserveServiceTopia implements SchoolEstimateService { + private static final Log log = LogFactory.getLog(SchoolEstimateServiceTopia.class); + @Override public Form<SetSeineSchoolEstimateDto> loadForm(String setSeineId, String tripSeineId) { + if (log.isTraceEnabled()) { + log.trace("loadForm(" + setSeineId + ", " + tripSeineId + ")"); + } SetSeine setSeine = loadEntity(SetSeineSchoolEstimateDto.class, setSeineId); - TripSeine tripSeine = loadEntity(TripSeineDto.class, tripSeineId); - - Ocean ocean = tripSeine.getOcean(); - Form<SetSeineSchoolEstimateDto> form = dataEntityToForm( SetSeineSchoolEstimateDto.class, setSeine, ReferenceSetRequestDefinitions.SET_SEINE_SCHOOL_ESTIMATE_FORM - //ImmutableMap.<String, Object>of(Species.PROPERTY_OCEAN, ocean), //FIXME context ); return form; @@ -59,6 +58,9 @@ public class SchoolEstimateServiceTopia extends ObserveServiceTopia implements S @Override public SaveResultDto save(SetSeineSchoolEstimateDto dto) { + if (log.isTraceEnabled()) { + log.trace("save(" + dto.getId() + ")"); + } SetSeine entity = loadOrCreateEntityAndCheckLastUpdate(dto); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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>.
participants (1)
-
codelutin.com scm