This is an automated email from the git hooks/post-receive script. New commit to branch feature/7617-LL-VerifEnregistreursDeProfondeur in repository tutti. See http://git.codelutin.com/tutti.git commit 1f181a52fe2d76b4d4e00d13336e277a4020bc29 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Mar 11 14:44:39 2016 +0100 Ajouter du filtre sur les espèces alimentation des comboBos pour les tableaux de taille et de poids (see #7616). --- .../impl/longline/CatchLonglineUIHandler.java | 63 ++++++++++++++++++---- .../v1/longline/TripLonglineServiceController.java | 8 +++ .../service/longline/TripLonglineService.java | 5 ++ .../service/longline/TripLonglineServiceTopia.java | 41 ++++++++++++++ 4 files changed, 106 insertions(+), 11 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java index cb5e467..82efc1b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java @@ -36,7 +36,9 @@ import fr.ird.observe.services.dto.longline.SetLonglineCatchDto; import fr.ird.observe.services.dto.longline.SetLonglineCatchDtos; import fr.ird.observe.services.dto.longline.SizeMeasureDto; import fr.ird.observe.services.dto.longline.WeightMeasureDto; +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.longline.CatchFateLonglineDto; import fr.ird.observe.services.dto.referential.longline.HealthnessDto; @@ -45,6 +47,7 @@ import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.service.longline.BranchlineService; import fr.ird.observe.services.service.longline.SetLonglineCatchService; +import fr.ird.observe.services.service.longline.TripLonglineService; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentUIInitializer; @@ -68,8 +71,10 @@ import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -240,10 +245,13 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat BranchlineDto branchline = ui.getBranchlineBean(); - String openSetLonglineId = getDataContext().getOpenSetLonglineId(); + String openSetLonglineId = getDataContext().getSelectedSetLonglineId(); SaveResultDto saveResult = getBranchLineService().save(openSetLonglineId, branchline); saveResult.toDto(branchline); + // on recopie le last update car c'est le laste update de SetLongline qui est renvoyé. + getBean().setLastUpdateDate(saveResult.getLastUpdateDate()); + getUi().getBranchlineValidator().setChanged(false); } @@ -534,12 +542,10 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat ReferentialReferenceDecorator<SizeMeasureTypeDto> decorator = getReferentialReferenceDecorator(SizeMeasureTypeDto.class); - //FIXME Load data on init -// ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); -// ReferenceSetDto<SizeMeasureTypeDto> sizeMeasureTypeDtoRefSet = referentialService.getReferenceSet(SizeMeasureTypeDto.class); -// ArrayList<ReferenceDto<SizeMeasureTypeDto>> sizeMeasureTypes = Lists.newArrayList(sizeMeasureTypeDtoRefSet.getReferences()); + List<ReferentialReference<SizeMeasureTypeDto>> sizeMeasureTypes = + Lists.newArrayList(getDataSource().getReferentialReferences(SizeMeasureTypeDto.class)); - UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(Collections.<ReferentialReference<SizeMeasureTypeDto>>emptyList(), decorator)); + UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(sizeMeasureTypes, decorator)); UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); SizeMeasuresTableModel tableModel = getModel().getSizeMeasuresTableModel(); @@ -563,12 +569,10 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat ReferentialReferenceDecorator<WeightMeasureTypeDto> decorator = getReferentialReferenceDecorator(WeightMeasureTypeDto.class); - //FIXME Load data on init -// ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); -// ReferenceSetDto<WeightMeasureTypeDto> weightMeasureTypeDtoRefSet = referentialService.getReferenceSet(WeightMeasureTypeDto.class); -// ArrayList<ReferenceDto<WeightMeasureTypeDto>> weightMeasureTypes = Lists.newArrayList(weightMeasureTypeDtoRefSet.getReferences()); + List<ReferentialReference<WeightMeasureTypeDto>> weightMeasureTypes = + Lists.newArrayList(getDataSource().getReferentialReferences(WeightMeasureTypeDto.class)); - UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(Collections.<ReferentialReference<WeightMeasureTypeDto>>emptyList(), decorator)); + UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(weightMeasureTypes, decorator)); UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); WeightMeasuresTableModel tableModel = getModel().getWeightMeasuresTableModel(); @@ -622,6 +626,43 @@ 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 = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + 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()) { diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/TripLonglineServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/TripLonglineServiceController.java index 08968a9..0556a7b 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/TripLonglineServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/longline/TripLonglineServiceController.java @@ -22,12 +22,15 @@ package fr.ird.observe.application.web.controller.v1.longline; * #L% */ +import com.google.common.collect.ImmutableList; import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.TripMapDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.service.longline.TripLonglineService; @@ -106,4 +109,9 @@ public class TripLonglineServiceController extends ObserveAuthenticatedServiceCo public List<Integer> moveTripLonglinesToProgram(List<String> tripLonglineIds, String programId) { return service.moveTripLonglinesToProgram(tripLonglineIds, programId); } + + @Override + public ImmutableList<ReferentialReference<SpeciesDto>> getSpeciesByListAndTrip(String tripLonglineId, String speciesListId) { + return service.getSpeciesByListAndTrip(tripLonglineId, speciesListId); + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java index 9e39a0a..4afa84f 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/longline/TripLonglineService.java @@ -22,12 +22,15 @@ package fr.ird.observe.services.service.longline; * #L% */ +import com.google.common.collect.ImmutableList; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.TripMapDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.spi.DeleteRequest; import fr.ird.observe.services.spi.PostRequest; @@ -89,4 +92,6 @@ public interface TripLonglineService extends ObserveService { @PostRequest List<Integer> moveTripLonglinesToProgram(List<String> tripLonglineIds, String programId); + @ReadDataPermission + ImmutableList<ReferentialReference<SpeciesDto>> getSpeciesByListAndTrip(String tripLonglineId, String speciesListId); } \ No newline at end of file diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/TripLonglineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/TripLonglineServiceTopia.java index d207c24..6e7435a 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/TripLonglineServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/longline/TripLonglineServiceTopia.java @@ -23,19 +23,29 @@ package fr.ird.observe.services.service.longline; */ import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableList; import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.TripMapPoint; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.longline.TripLonglineTopiaDao; +import fr.ird.observe.entities.referentiel.Ocean; import fr.ird.observe.entities.referentiel.Program; +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.services.ObserveServiceTopia; +import fr.ird.observe.services.binder.referential.ReferentialBinderSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.TripMapDto; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.reference.request.ReferenceSetRequestDefinitions; import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; +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.entity.TripMapDtoFactory; import org.apache.commons.logging.Log; @@ -259,6 +269,37 @@ public class TripLonglineServiceTopia extends ObserveServiceTopia implements Tri } + @Override + public ImmutableList<ReferentialReference<SpeciesDto>> getSpeciesByListAndTrip(String tripLonglineId, String speciesListId) { + if (log.isTraceEnabled()) { + log.trace("getSpeciesByListAndTrip(" + tripLonglineId + ", " + speciesListId + ")"); + } + + // find Ocean + TripLongline tripLongline = loadEntity(TripLonglineDto.class, tripLonglineId); + + Ocean 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(); + } + protected TripLonglineTopiaDao getDao() { return (TripLonglineTopiaDao) serviceContext.getTopiaPersistenceContext().getDao(TripLongline.class); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.