[Git][ultreiaio/ird-observe][develop] Improve ui handler filtering referential sets API
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 1cff663a by Tony CHEMIT at 2017-08-08T13:50:16+02:00 Improve ui handler filtering referential sets API - - - - - 15 changed files: - client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/open/impl/longline/TripLonglineUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/open/impl/seine/TripSeineUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/CatchLonglineUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/EncounterUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/TdrUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetCatchReleaseUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetCatchUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetSampleUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/SchoolEstimateUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetCatchUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetSampleUIHandler.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java @@ -103,9 +103,11 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.TreeMap; import java.util.Vector; import javax.swing.AbstractButton; import javax.swing.ActionMap; @@ -162,6 +164,18 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U /** l'interface graphique que le controleur utilise */ protected U ui; + private final Map<String, ReferentialReferencesFilter> referentialsFilters = new TreeMap<>(); + + protected interface ReferentialReferencesFilter<D extends ReferentialDto> { + + List<ReferentialReference<D>> filter(List<ReferentialReference<D>> incomingReferences); + + } + + protected void addReferentialFilter(String propertyName, ReferentialReferencesFilter filter) { + referentialsFilters.put(propertyName, filter); + } + public void beforeInit(U ui) { this.ui = ui; prefix = "[" + ui.getClass().getSimpleName() + "] "; @@ -673,6 +687,13 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U // by default always remove obsolete references List<ReferentialReference<D>> referentialReferences = ReferentialReferences.filterEnabled(incomingReferences); log.debug(String.format("Filter referential references (type %s - property %s), without diabled size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); + + //noinspection unchecked + ReferentialReferencesFilter<D> referentialReferencesFilter = referentialsFilters.get(propertyName); + if (referentialReferencesFilter!=null) { + return referentialReferencesFilter.filter(referentialReferences); + } + return referentialReferences; } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/open/impl/longline/TripLonglineUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/open/impl/longline/TripLonglineUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/open/impl/longline/TripLonglineUIHandler.java @@ -35,13 +35,13 @@ import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.longline.TripLonglineHelper; import fr.ird.observe.services.dto.reference.ReferentialReference; +import fr.ird.observe.services.dto.reference.ReferentialReferences; +import fr.ird.observe.services.dto.referential.PersonDto; import fr.ird.observe.services.dto.referential.PersonHelper; -import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.VesselDto; import fr.ird.observe.services.dto.referential.VesselHelper; import fr.ird.observe.services.dto.result.SaveResultDto; -import java.util.Collection; import java.util.Date; -import java.util.LinkedList; import java.util.List; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; @@ -69,6 +69,23 @@ class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLonglineDto, Tr TripLonglineUIHandler() { super(DataContextType.Program, DataContextType.TripLongline, n("observe.content.tripLongline.message.not.open")); + addReferentialFilter(TripLonglineDto.PROPERTY_CAPTAIN, (ReferentialReferencesFilter<PersonDto>) incomingReferences -> { + List<ReferentialReference<PersonDto>> result = PersonHelper.filterCaptainReferences(incomingReferences); + return ReferentialReferences.filterEnabled(result); + }); + addReferentialFilter(TripLonglineDto.PROPERTY_OBSERVER, (ReferentialReferencesFilter<PersonDto>) incomingReferences -> { + List<ReferentialReference<PersonDto>> result = PersonHelper.filterObserverReferences(incomingReferences); + return ReferentialReferences.filterEnabled(result); + }); + addReferentialFilter(TripLonglineDto.PROPERTY_DATA_ENTRY_OPERATOR, (ReferentialReferencesFilter<PersonDto>) incomingReferences -> { + List<ReferentialReference<PersonDto>> result = PersonHelper.filterDataEntryOperatorReferences(incomingReferences); + return ReferentialReferences.filterEnabled(result); + }); + addReferentialFilter(TripLonglineDto.PROPERTY_VESSEL, (ReferentialReferencesFilter<VesselDto>) incomingReferences -> { + ClientConfig config = ObserveSwingApplicationContext.get().getConfig(); + List<ReferentialReference<VesselDto>> result = VesselHelper.filterVesselReferencesByVesselTypeIds(incomingReferences, config.getLonglineVesselTypeIds()); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -315,50 +332,4 @@ class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLonglineDto, Tr return !create && getOpenDataManager().canOpenTripLongline(); } - - @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 TripLonglineDto.PROPERTY_CAPTAIN: { - result = (List) PersonHelper.filterCaptainReferences((List) result); - if (log.isDebugEnabled()) { - log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); - } - } - break; - - case TripLonglineDto.PROPERTY_OBSERVER: { - result = (List) PersonHelper.filterObserverReferences((List) result); - if (log.isDebugEnabled()) { - log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); - } - } - break; - - case TripLonglineDto.PROPERTY_DATA_ENTRY_OPERATOR: { - result = (List) PersonHelper.filterDataEntryOperatorReferences((List) result); - if (log.isDebugEnabled()) { - log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); - } - } - break; - - case TripLonglineDto.PROPERTY_VESSEL: { - ClientConfig config = ObserveSwingApplicationContext.get().getConfig(); - result = (List) VesselHelper.filterVesselReferencesByVesselTypeIds((List) result, config.getLonglineVesselTypeIds()); - 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; - } - } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/open/impl/seine/TripSeineUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/open/impl/seine/TripSeineUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/open/impl/seine/TripSeineUIHandler.java @@ -32,15 +32,15 @@ import fr.ird.observe.client.ui.util.tripMap.TripMapUI; import fr.ird.observe.services.dto.TripMapDto; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; +import fr.ird.observe.services.dto.reference.ReferentialReferences; +import fr.ird.observe.services.dto.referential.PersonDto; import fr.ird.observe.services.dto.referential.PersonHelper; -import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.VesselDto; import fr.ird.observe.services.dto.referential.VesselHelper; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.services.dto.seine.TripSeineHelper; -import java.util.Collection; import java.util.Date; -import java.util.LinkedList; import java.util.List; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; @@ -66,6 +66,23 @@ class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeineDto, TripSein TripSeineUIHandler() { super(DataContextType.Program, DataContextType.TripSeine, n("observe.content.tripSeine.message.not.open")); + addReferentialFilter(TripSeineDto.PROPERTY_CAPTAIN, (ReferentialReferencesFilter<PersonDto>) incomingReferences -> { + List<ReferentialReference<PersonDto>> result = PersonHelper.filterCaptainReferences(incomingReferences); + return ReferentialReferences.filterEnabled(result); + }); + addReferentialFilter(TripSeineDto.PROPERTY_OBSERVER, (ReferentialReferencesFilter<PersonDto>) incomingReferences -> { + List<ReferentialReference<PersonDto>> result = PersonHelper.filterObserverReferences(incomingReferences); + return ReferentialReferences.filterEnabled(result); + }); + addReferentialFilter(TripSeineDto.PROPERTY_DATA_ENTRY_OPERATOR, (ReferentialReferencesFilter<PersonDto>) incomingReferences -> { + List<ReferentialReference<PersonDto>> result = PersonHelper.filterDataEntryOperatorReferences(incomingReferences); + return ReferentialReferences.filterEnabled(result); + }); + addReferentialFilter(TripSeineDto.PROPERTY_VESSEL, (ReferentialReferencesFilter<VesselDto>) incomingReferences -> { + ClientConfig config = ObserveSwingApplicationContext.get().getConfig(); + List<ReferentialReference<VesselDto>> result = VesselHelper.filterVesselReferencesByVesselTypeIds(incomingReferences, config.getLonglineVesselTypeIds()); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -309,49 +326,4 @@ class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeineDto, TripSein return !create && getOpenDataManager().canOpenTripSeine(); } - @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 TripSeineDto.PROPERTY_CAPTAIN: { - result = (List) PersonHelper.filterCaptainReferences((List) result); - if (log.isDebugEnabled()) { - log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); - } - } - break; - - case TripSeineDto.PROPERTY_OBSERVER: { - result = (List) PersonHelper.filterObserverReferences((List) result); - if (log.isDebugEnabled()) { - log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); - } - } - break; - - case TripSeineDto.PROPERTY_DATA_ENTRY_OPERATOR: { - result = (List) PersonHelper.filterDataEntryOperatorReferences((List) result); - if (log.isDebugEnabled()) { - log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); - } - } - break; - - case TripSeineDto.PROPERTY_VESSEL: { - ClientConfig config = ObserveSwingApplicationContext.get().getConfig(); - result = (List) VesselHelper.filterVesselReferencesByVesselTypeIds((List) result, config.getSeineVesselTypeIds()); - 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; - } - } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/CatchLonglineUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/CatchLonglineUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/CatchLonglineUIHandler.java @@ -52,7 +52,6 @@ import fr.ird.observe.services.dto.longline.WeightMeasureDto; import fr.ird.observe.services.dto.reference.DataReference; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.WeightMeasureTypeDto; @@ -62,11 +61,9 @@ import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.service.data.longline.TripLonglineService; import java.beans.PropertyChangeListener; import java.util.Calendar; -import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashSet; -import java.util.LinkedList; import java.util.List; import java.util.Set; import javax.swing.JComponent; @@ -132,7 +129,21 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat branchlineChanged = evt -> onBranchlineChanged((DataReference<BranchlineDto>) evt.getNewValue()); weightTableModelModified = evt -> onWeightTableModelModified((Boolean) evt.getNewValue()); sizeTableModelModified = evt -> onSizeTableModelModified((Boolean) evt.getNewValue()); - depredatedChanged = evt -> onDepretadedChanged((Boolean) evt.getNewValue(), (CatchLonglineDto) evt.getSource()); + depredatedChanged = evt -> onDepredatedChanged((Boolean) evt.getNewValue(), (CatchLonglineDto) evt.getSource()); + + addReferentialFilter(CatchLonglineDto.PROPERTY_SPECIES_CATCH, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineCatchId(); + String tripLonglineId = getDataContext().getSelectedTripLonglineId(); + List<ReferentialReference<SpeciesDto>> result = getTripLonglineService().getSpeciesByListAndTrip(tripLonglineId, speciesListId); + return ReferentialReferences.filterEnabled(result); + }); + + addReferentialFilter(CatchLonglineDto.PROPERTY_PREDATOR, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineDepredatorId(); + String tripLonglineId = getDataContext().getSelectedTripLonglineId(); + List<ReferentialReference<SpeciesDto>> result = getTripLonglineService().getSpeciesByListAndTrip(tripLonglineId, speciesListId); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -462,7 +473,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat } //FIXME Voir si pas besoin aussi de relancer les binding (catchFateChanged, branchlineChanged) ? - onDepretadedChanged(bean.getDepredated(), bean); + onDepredatedChanged(bean.getDepredated(), bean); } @@ -654,43 +665,6 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat } @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 CatchLonglineDto.PROPERTY_SPECIES_CATCH: - case CatchLonglineDto.PROPERTY_PREDATOR: { - String speciesListId; - - if (CatchLonglineDto.PROPERTY_SPECIES_CATCH.equals(propertyName)) { - speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineCatchId(); - } else { - speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineDepredatorId(); - } - - String tripLonglineId = getDataContext().getSelectedTripLonglineId(); - - TripLonglineService tripLonglineService = getTripLonglineService(); - result = (List) tripLonglineService.getSpeciesByListAndTrip(tripLonglineId, speciesListId); - - 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; - - } - - @Override protected void closeSafeUI() { if (log.isInfoEnabled()) { @@ -831,7 +805,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat } - private void onDepretadedChanged(Boolean newValue, CatchLonglineDto tableEditBean) { + private void onDepredatedChanged(Boolean newValue, CatchLonglineDto tableEditBean) { CatchLonglineUI ui = getUi(); ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/EncounterUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/EncounterUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/EncounterUIHandler.java @@ -32,14 +32,12 @@ import fr.ird.observe.services.dto.longline.ActivityLonglineEncounterHelper; import fr.ird.observe.services.dto.longline.EncounterDto; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.services.dto.referential.longline.EncounterTypeDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.service.referential.ReferentialService; -import java.util.Collection; -import java.util.LinkedList; +import java.util.List; import java.util.Set; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; @@ -63,6 +61,16 @@ public class EncounterUIHandler extends ContentTableUIHandler<ActivityLonglineEn EncounterUIHandler() { super(DataContextType.ActivityLongline); + addReferentialFilter(EncounterDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineEncounterId(); + Form<SpeciesListDto> speciesListDtoForm = getReferentialService().loadForm(SpeciesListDto.class, speciesListId); + SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); + + Set<String> speciesIds = speciesListDto.getSpeciesIds(); + + List<ReferentialReference<SpeciesDto>> result = ReferentialReferences.filterContains(incomingReferences, speciesIds); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -117,37 +125,4 @@ public class EncounterUIHandler extends ContentTableUIHandler<ActivityLonglineEn ActivityLonglineEncounterHelper.copyActivityLonglineEncounterDto(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 EncounterDto.PROPERTY_SPECIES: { - - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineEncounterId(); - - ReferentialService referentialService = getReferentialService(); - - Form<SpeciesListDto> speciesListDtoForm = referentialService.loadForm(SpeciesListDto.class, speciesListId); - SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); - - Set<String> speciesIds = speciesListDto.getSpeciesIds(); - - result = ReferentialReferences.filterContains(result, speciesIds); - - 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; - - } - } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/TdrUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/TdrUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/longline/TdrUIHandler.java @@ -37,18 +37,15 @@ import fr.ird.observe.services.dto.longline.SetLonglineTdrHelper; import fr.ird.observe.services.dto.longline.TdrDto; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.longline.SensorBrandDto; import fr.ird.observe.services.dto.result.SaveResultDto; -import fr.ird.observe.services.service.data.longline.TripLonglineService; import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.Collection; import java.util.Date; import java.util.HashSet; -import java.util.LinkedList; import java.util.List; import java.util.Set; import javax.swing.JComponent; @@ -104,6 +101,12 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineTdrDto, TdrDt Boolean newValue = (Boolean) evt.getNewValue(); onToogleTimeEditorSliderChanged(newValue); }; + addReferentialFilter(TdrDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineCatchId(); + String tripLonglineId = getDataContext().getSelectedTripLonglineId(); + List<ReferentialReference<SpeciesDto>> result = getTripLonglineService().getSpeciesByListAndTrip(tripLonglineId, speciesListId); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -447,36 +450,6 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineTdrDto, TdrDt } @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 TdrDto.PROPERTY_SPECIES: { - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineCatchId(); - - String tripLonglineId = getDataContext().getSelectedTripLonglineId(); - - TripLonglineService tripLonglineService = getTripLonglineService(); - result = (List) tripLonglineService.getSpeciesByListAndTrip(tripLonglineId, speciesListId); - - 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; - - } - - @Override protected void loadEditBean(String beanId) { Form<SetLonglineTdrDto> form = getTdrService().loadForm(beanId); ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetCatchReleaseUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetCatchReleaseUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetCatchReleaseUIHandler.java @@ -29,7 +29,7 @@ import fr.ird.observe.client.ui.util.table.AutotSelectRowAndShowPopupActionSuppo import fr.ird.observe.common.constants.seine.NonTargetCatchReleaseStatus; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; -import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; import fr.ird.observe.services.dto.referential.SexDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.SpeciesGroupDto; @@ -40,7 +40,6 @@ import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchReleaseDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchReleaseHelper; import java.beans.PropertyChangeListener; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.LinkedList; @@ -89,6 +88,11 @@ public class NonTargetCatchReleaseUIHandler extends ContentTableUIHandler<SetSei Boolean newValue = (Boolean) evt.getNewValue(); onToggleTimeEditorSliderChanged(newValue); }; + addReferentialFilter(NonTargetCatchReleaseDto.PROPERTY_SPECIES, incomingReferences -> { + ReferentialReferenceSet<SpeciesDto> sampleSpecies = getNonTargetCatchReleaseService().getSampleSpecies(getSelectedParentId()); + return new LinkedList<>(sampleSpecies.getReferences()); +// return ReferentialReferences.filterEnabled(result); + }); } private void updateSpecies(ReferentialReference species) { @@ -254,29 +258,6 @@ public class NonTargetCatchReleaseUIHandler extends ContentTableUIHandler<SetSei loadReferentialReferenceSetsInModel(form); getModel().setForm(form); SetSeineNonTargetCatchReleaseHelper.copySetSeineNonTargetCatchReleaseDto(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 NonTargetCatchReleaseDto.PROPERTY_SPECIES: { - - result = (Collection) getNonTargetCatchReleaseService().getSampleSpecies(getSelectedParentId()).getReferences(); - - 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; } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetCatchUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetCatchUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetCatchUIHandler.java @@ -33,7 +33,6 @@ import fr.ird.observe.services.decoration.decorators.ReferentialReferenceDecorat import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto; import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; @@ -42,11 +41,8 @@ import fr.ird.observe.services.dto.seine.NonTargetCatchDto; import fr.ird.observe.services.dto.seine.NonTargetCatchHelper; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchDto; import fr.ird.observe.services.dto.seine.SetSeineNonTargetCatchHelper; -import fr.ird.observe.services.service.data.seine.TripSeineService; import java.beans.PropertyChangeListener; import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedList; import java.util.List; import java.util.Set; import javax.swing.JComponent; @@ -374,36 +370,16 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineNonTa loadReferentialReferenceSetsInModel(form); getModel().setForm(form); SetSeineNonTargetCatchHelper.copySetSeineNonTargetCatchDto(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 NonTargetCatchDto.PROPERTY_SPECIES: { - - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineNonTargetCatchId(); - String tripSeineId = getDataContext().getSelectedTripSeineId(); + addReferentialFilter(NonTargetCatchDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { - TripSeineService tripSeineService = getTripSeineService(); - result = (List) tripSeineService.getSpeciesByListAndTrip(tripSeineId, speciesListId); + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineNonTargetCatchId(); + String tripLonglineId = getDataContext().getSelectedTripLonglineId(); - result = ReferentialReferences.filterEnabled(result); + List<ReferentialReference<SpeciesDto>> result = getTripSeineService().getSpeciesByListAndTrip(tripLonglineId, speciesListId); - 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; + return ReferentialReferences.filterEnabled(result); + }); } boolean showReasonForDiscard(ReferentialReference<SpeciesFateDto> speciesFate) { ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetSampleUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetSampleUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/NonTargetSampleUIHandler.java @@ -29,7 +29,7 @@ import fr.ird.observe.client.ui.content.ContentMode; import fr.ird.observe.client.ui.content.table.ContentTableModel; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; -import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; import fr.ird.observe.services.dto.referential.SexDto; import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.SpeciesDto; @@ -64,6 +64,19 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS /** Logger */ private static final Log log = LogFactory.getLog(NonTargetSampleUIHandler.class); + NonTargetSampleUIHandler() { + addReferentialFilter(NonTargetLengthDto.PROPERTY_SPECIES, incomingReferences -> { + ReferentialReferenceSet<SpeciesDto> sampleSpecies = getNonTargetSampleService().getSampleSpecies(getSelectedParentId()); + return new LinkedList<>(sampleSpecies.getReferences()); +// return ReferentialReferences.filterEnabled(result); + }); + addReferentialFilter(NonTargetLengthDto.PROPERTY_SPECIES_FATE, incomingReferences -> { + Collection<ReferentialReference<SpeciesFateDto>> speciesFate = getModel().getForm().getObject().getSpeciesFate(); + return new LinkedList<>(speciesFate); +// return ReferentialReferences.filterEnabled(result); + }); + } + @Override public void resetIsWeightComputed() { getTableEditBean().setIsWeightComputed(false); @@ -314,42 +327,6 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS updateUiWithReferenceSetsFromModel(); NonTargetSampleHelper.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()).getReferences(); - - if (log.isDebugEnabled()) { - log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); - } - } - - break; - - case NonTargetLengthDto.PROPERTY_SPECIES_FATE: { - - // on conserve uniquement les devenir utilisés dans les captures - Collection<ReferentialReference<SpeciesFateDto>> speciesFate = getModel().getForm().getObject().getSpeciesFate(); - result = (Collection) speciesFate; - - 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; } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java @@ -28,7 +28,6 @@ import fr.ird.observe.client.ui.content.table.ContentTableUIHandler; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.services.dto.referential.seine.SpeciesStatusDto; @@ -37,9 +36,7 @@ import fr.ird.observe.services.dto.seine.FloatingObjectObservedSpeciesDto; import fr.ird.observe.services.dto.seine.FloatingObjectObservedSpeciesHelper; import fr.ird.observe.services.dto.seine.ObjectObservedSpeciesDto; import fr.ird.observe.services.dto.seine.ObjectSchoolEstimateDto; -import fr.ird.observe.services.service.referential.ReferentialService; -import java.util.Collection; -import java.util.LinkedList; +import java.util.List; import java.util.Set; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; @@ -61,6 +58,17 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati ObjectObservedSpeciesUIHandler() { super(DataContextType.SetSeine); + addReferentialFilter(ObjectSchoolEstimateDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineObjectObservedSpeciesId(); + Form<SpeciesListDto> speciesListDtoForm = getReferentialService().loadForm(SpeciesListDto.class, speciesListId); + SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); + + Set<String> speciesIds = speciesListDto.getSpeciesIds(); + + List<ReferentialReference<SpeciesDto>> result = ReferentialReferences.filterContains(incomingReferences, speciesIds); + return ReferentialReferences.filterEnabled(result); + }); + } @Override @@ -110,36 +118,4 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati getModel().setForm(form); FloatingObjectObservedSpeciesHelper.copyFloatingObjectObservedSpeciesDto(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 ObjectSchoolEstimateDto.PROPERTY_SPECIES: { - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineObjectObservedSpeciesId(); - - ReferentialService referentialService = getReferentialService(); - Form<SpeciesListDto> speciesListDtoForm = referentialService.loadForm(SpeciesListDto.class, speciesListId); - SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); - - Set<String> speciesIds = speciesListDto.getSpeciesIds(); - - result = ReferentialReferences.filterContains(result, speciesIds); - - 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; - - } - } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java @@ -28,16 +28,13 @@ import fr.ird.observe.client.ui.content.table.ContentTableUIHandler; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; 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.FloatingObjectSchoolEstimateHelper; import fr.ird.observe.services.dto.seine.ObjectSchoolEstimateDto; -import fr.ird.observe.services.service.referential.ReferentialService; -import java.util.Collection; -import java.util.LinkedList; +import java.util.List; import java.util.Set; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; @@ -60,6 +57,16 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin ObjectSchoolEstimateUIHandler() { super(DataContextType.SetSeine); + addReferentialFilter(ObjectSchoolEstimateDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineObjectSchoolEstimateId(); + Form<SpeciesListDto> speciesListDtoForm = getReferentialService().loadForm(SpeciesListDto.class, speciesListId); + SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); + + Set<String> speciesIds = speciesListDto.getSpeciesIds(); + + List<ReferentialReference<SpeciesDto>> result = ReferentialReferences.filterContains(incomingReferences, speciesIds); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -107,34 +114,4 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin FloatingObjectSchoolEstimateHelper.copyFloatingObjectSchoolEstimateDto(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 ObjectSchoolEstimateDto.PROPERTY_SPECIES: { - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineObjectSchoolEstimateId(); - - ReferentialService referentialService = getReferentialService(); - Form<SpeciesListDto> speciesListDtoForm = referentialService.loadForm(SpeciesListDto.class, speciesListId); - SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); - - Set<String> speciesIds = speciesListDto.getSpeciesIds(); - result = ReferentialReferences.filterContains(result, speciesIds); - - 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; - - } - } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/SchoolEstimateUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/SchoolEstimateUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/SchoolEstimateUIHandler.java @@ -29,25 +29,18 @@ import fr.ird.observe.client.ui.content.table.ContentTableUIHandler; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; 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.SetSeineSchoolEstimateHelper; -import fr.ird.observe.services.service.data.seine.TripSeineService; -import java.util.Collection; import java.util.Collections; -import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.runtime.spi.UIHandler; @@ -59,11 +52,15 @@ import static org.nuiton.i18n.I18n.n; */ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineSchoolEstimateDto, SchoolEstimateDto, SchoolEstimateUI> implements UIHandler<SchoolEstimateUI> { - /** Logger */ - private static final Log log = LogFactory.getLog(SchoolEstimateUIHandler.class); - SchoolEstimateUIHandler() { super(DataContextType.SetSeine); + addReferentialFilter(SchoolEstimateDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineSchoolEstimateId(); + + String tripSeineId = getDataContext().getSelectedTripSeineId(); + List<ReferentialReference<SpeciesDto>> result = getTripSeineService().getSpeciesByListAndTrip(tripSeineId, speciesListId); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -138,34 +135,4 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineSchoo SetSeineSchoolEstimateHelper.copySetSeineSchoolEstimateDto(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 ObjectSchoolEstimateDto.PROPERTY_SPECIES: { - - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineSchoolEstimateId(); - String tripSeineId = getDataContext().getSelectedTripSeineId(); - - TripSeineService tripSeineService = getTripSeineService(); - result = (List) tripSeineService.getSpeciesByListAndTrip(tripSeineId, speciesListId); - - 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; - - } - } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetCatchUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetCatchUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetCatchUIHandler.java @@ -31,20 +31,15 @@ import fr.ird.observe.client.ui.content.table.ContentTableUIHandler; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.seine.WeightCategoryDto; import fr.ird.observe.services.dto.referential.seine.WeightCategoryHelper; import fr.ird.observe.services.dto.result.SaveResultDto; -import fr.ird.observe.services.dto.seine.ObjectSchoolEstimateDto; import fr.ird.observe.services.dto.seine.SetSeineTargetCatchDto; import fr.ird.observe.services.dto.seine.SetSeineTargetCatchHelper; import fr.ird.observe.services.dto.seine.TargetCatchDto; import fr.ird.observe.services.dto.seine.TargetCatchHelper; -import fr.ird.observe.services.service.data.seine.TripSeineService; -import java.util.Collection; import java.util.Collections; -import java.util.LinkedList; import java.util.List; import java.util.Set; import javax.swing.JComponent; @@ -72,6 +67,13 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeineTargetCa TargetCatchUIHandler() { super(DataContextType.SetSeine); + addReferentialFilter(TargetCatchDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineTargetCatchId(); + + String tripSeineId = getDataContext().getSelectedTripSeineId(); + List<ReferentialReference<SpeciesDto>> result = getTripSeineService().getSpeciesByListAndTrip(tripSeineId, speciesListId); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -287,34 +289,4 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeineTargetCa SetSeineTargetCatchHelper.copySetSeineTargetCatchDto(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 ObjectSchoolEstimateDto.PROPERTY_SPECIES: { - - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineTargetCatchId(); - String tripSeineId = getDataContext().getSelectedTripSeineId(); - - TripSeineService tripSeineService = getTripSeineService(); - result = (List) tripSeineService.getSpeciesByListAndTrip(tripSeineId, speciesListId); - - 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; - - } - } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java @@ -31,22 +31,18 @@ import fr.ird.observe.client.ui.content.table.ContentTableUIHandler; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferences; -import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto; import fr.ird.observe.services.dto.referential.seine.WeightCategoryDto; import fr.ird.observe.services.dto.referential.seine.WeightCategoryHelper; import fr.ird.observe.services.dto.result.SaveResultDto; -import fr.ird.observe.services.dto.seine.ObjectSchoolEstimateDto; import fr.ird.observe.services.dto.seine.SetSeineTargetCatchDto; import fr.ird.observe.services.dto.seine.SetSeineTargetCatchHelper; import fr.ird.observe.services.dto.seine.TargetCatchDto; import fr.ird.observe.services.dto.seine.TargetCatchHelper; -import fr.ird.observe.services.service.data.seine.TripSeineService; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.LinkedList; import java.util.List; import java.util.Optional; import java.util.Set; @@ -75,6 +71,13 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeineT TargetDiscardCatchUIHandler() { super(DataContextType.SetSeine); + addReferentialFilter(TargetCatchDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineTargetCatchId(); + + String tripSeineId = getDataContext().getSelectedTripSeineId(); + List<ReferentialReference<SpeciesDto>> result = getTripSeineService().getSpeciesByListAndTrip(tripSeineId, speciesListId); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -416,35 +419,4 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeineT SetSeineTargetCatchHelper.copySetSeineTargetCatchDto(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 ObjectSchoolEstimateDto.PROPERTY_SPECIES: { - - String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineTargetCatchId(); - String tripSeineId = getDataContext().getSelectedTripSeineId(); - - TripSeineService tripSeineService = getTripSeineService(); - result = (List) tripSeineService.getSpeciesByListAndTrip(tripSeineId, speciesListId); - - 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; - - } - } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetSampleUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetSampleUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/table/impl/seine/TargetSampleUIHandler.java @@ -29,6 +29,8 @@ import fr.ird.observe.client.ui.content.table.ContentTableModel; import fr.ird.observe.client.ui.content.table.ContentTableUI; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.ReferentialReference; +import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; +import fr.ird.observe.services.dto.reference.ReferentialReferences; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SexDto; import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; @@ -73,6 +75,15 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar public TargetSampleUIHandler(boolean discarded) { this.discarded = discarded; + addReferentialFilter(TargetLengthDto.PROPERTY_SPECIES, (ReferentialReferencesFilter<SpeciesDto>) incomingReferences -> { + List<ReferentialReference<SpeciesDto>> result = TargetSampleUIHandler.this.getTargetSampleService().getSampleSpecies(TargetSampleUIHandler.this.getSelectedParentId(), discarded); + return ReferentialReferences.filterEnabled(result); + }); + addReferentialFilter(TargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE, (ReferentialReferencesFilter<SizeMeasureTypeDto>) incomingReferences -> { + List<ReferentialReference<SizeMeasureTypeDto>> result = SizeMeasureTypeHelper.filterForSeine(incomingReferences); + checkSizeMeasureTypes(result); + return ReferentialReferences.filterEnabled(result); + }); } @Override @@ -353,40 +364,6 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar TargetSampleHelper.copyTargetSampleDto(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 TargetLengthDto.PROPERTY_SPECIES: { - - result = (List) getTargetSampleService().getSampleSpecies(getSelectedParentId(), discarded); - - if (log.isDebugEnabled()) { - log.debug(String.format("Filter referential references (type %s - property %s), final size: %d", dtoType.getSimpleName(), propertyName, incomingReferences.size())); - } - - } - - break; - - case TargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE: { - - result = SizeMeasureTypeHelper.filterForSeine((Collection) incomingReferences); - if (log.isInfoEnabled()) { - log.info("Using " + result.size() + " size measure type(s)."); - } - checkSizeMeasureTypes((List) result); - } - } - - - return result; - - } - private Optional<ReferentialReference<SizeMeasureTypeDto>> getSpeciesDefaultSizeMeasureType(ReferentialReference<SpeciesDto> species) { Optional<ReferentialReference<SizeMeasureTypeDto>> result = Optional.empty(); if (species != null) { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/1cff663af00bbe034f55e1a0788e... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/1cff663af00bbe034f55e1a0788e... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT