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>.