17/32: refs #8429 Ajout service pour charger l'arbre de navigation
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 7c376d4b872107c50dec5d488c96db207bea8345 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Nov 22 10:12:40 2016 +0100 refs #8429 Ajout service pour charger l'arbre de navigation --- .../v1/data/NavigationServiceController.java | 24 +++++++ application-web/src/main/resources/mapping | 1 + .../topia/service/data/NavigationServiceTopia.java | 79 ++++++++++++++++++++++ .../observe/services/ObserveServicesProvider.java | 3 + .../services/service/data/NavigationRequest.java | 30 ++++++++ .../services/service/data/NavigationResult.java | 40 +++++++++++ .../services/service/data/NavigationService.java | 15 ++++ 7 files changed, 192 insertions(+) diff --git a/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/data/NavigationServiceController.java b/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/data/NavigationServiceController.java new file mode 100644 index 0000000..667284e --- /dev/null +++ b/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/data/NavigationServiceController.java @@ -0,0 +1,24 @@ +package fr.ird.observe.application.web.controller.v1.data; + +import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; +import fr.ird.observe.services.service.data.NavigationRequest; +import fr.ird.observe.services.service.data.NavigationResult; +import fr.ird.observe.services.service.data.NavigationService; + +/** + * Created on 22/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.1 + */ +public class NavigationServiceController extends ObserveAuthenticatedServiceControllerSupport<NavigationService> implements NavigationService { + + public NavigationServiceController() { + super(NavigationService.class); + } + + @Override + public NavigationResult getNavigation(NavigationRequest request) { + return service.getNavigation(request); + } +} diff --git a/application-web/src/main/resources/mapping b/application-web/src/main/resources/mapping index 637a4ac..1b4b01e 100644 --- a/application-web/src/main/resources/mapping +++ b/application-web/src/main/resources/mapping @@ -82,6 +82,7 @@ GET /api/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffService/g GET /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/filterIdsUsedInLocalSource v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceController.filterIdsUsedInLocalSource GET /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/generateSqlRequests v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceController.generateSqlRequests GET /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/getLocalSourceReferentialToDelete v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceController.getLocalSourceReferentialToDelete +GET /api/v1/data/NavigationService/getNavigation v1.data.NavigationServiceController.getNavigation GET /api/v1/data/longline/ActivityLongLineEncounterService/loadForm v1.data.longline.ActivityLongLineEncounterServiceController.loadForm GET /api/v1/data/longline/ActivityLongLineSensorUsedService/getDataFile v1.data.longline.ActivityLongLineSensorUsedServiceController.getDataFile GET /api/v1/data/longline/ActivityLongLineSensorUsedService/loadForm v1.data.longline.ActivityLongLineSensorUsedServiceController.loadForm diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java new file mode 100644 index 0000000..83a6bac --- /dev/null +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java @@ -0,0 +1,79 @@ +package fr.ird.observe.services.topia.service.data; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.DataReferenceSet; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.longline.TripLonglineHelper; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramHelper; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.dto.seine.TripSeineHelper; +import fr.ird.observe.services.service.data.NavigationRequest; +import fr.ird.observe.services.service.data.NavigationResult; +import fr.ird.observe.services.service.data.NavigationService; +import fr.ird.observe.services.service.data.longline.TripLonglineService; +import fr.ird.observe.services.service.data.seine.TripSeineService; +import fr.ird.observe.services.service.referential.ReferentialService; +import fr.ird.observe.services.topia.ObserveServiceTopia; + +/** + * Created on 22/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.1 + */ +public class NavigationServiceTopia extends ObserveServiceTopia implements NavigationService { + + @Override + public NavigationResult getNavigation(NavigationRequest request) { + + ImmutableSet<ReferentialReference<ProgramDto>> allPrograms = serviceContext.newService(ReferentialService.class).getReferenceSet(ProgramDto.class, null).getReferences(); + ImmutableMap<String, ReferentialReference<ProgramDto>> programsById = Maps.uniqueIndex(allPrograms, ReferentialReference::getId); + + ImmutableSet.Builder<ReferentialReference<ProgramDto>> programsBuilder = ImmutableSet.builder(); + + boolean loadLongline = request.isLoadLongline(); + boolean loadSeine = request.isLoadSeine(); + + for (ReferentialReference<ProgramDto> program : allPrograms) { + if (loadLongline && ProgramHelper.isProgramLongline(program)) { + programsBuilder.add(program); + } else if (loadSeine && ProgramHelper.isProgramSeine(program)) { + programsBuilder.add(program); + } + } + + Multimap<ReferentialReference<ProgramDto>, DataReference<TripSeineDto>> tripsSeineByProgram = HashMultimap.create(); + Multimap<ReferentialReference<ProgramDto>, DataReference<TripLonglineDto>> tripsLonglineByProgram = HashMultimap.create(); + + if (loadSeine) { + TripSeineService service = serviceContext.newService(TripSeineService.class); + DataReferenceSet<TripSeineDto> trips = service.getAllTripSeine(); + for (DataReference<TripSeineDto> reference : trips.getReferences()) { + String programId = TripSeineHelper.getProgramId(reference); + ReferentialReference<ProgramDto> program = programsById.get(programId); + tripsSeineByProgram.put(program, reference); + } + + } + if (loadLongline) { + + TripLonglineService service = serviceContext.newService(TripLonglineService.class); + DataReferenceSet<TripLonglineDto> trips = service.getAllTripLongline(); + for (DataReference<TripLonglineDto> reference : trips.getReferences()) { + String programId = TripLonglineHelper.getProgramId(reference); + ReferentialReference<ProgramDto> program = programsById.get(programId); + tripsLonglineByProgram.put(program, reference); + } + + } + + return new NavigationResult(programsBuilder.build(), tripsSeineByProgram, tripsLonglineByProgram); + } +} diff --git a/services/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java b/services/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java index 619d44a..b50fd31 100644 --- a/services/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java +++ b/services/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java @@ -25,6 +25,7 @@ package fr.ird.observe.services; import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.service.LastUpdateDateService; import fr.ird.observe.services.service.PingService; +import fr.ird.observe.services.service.data.NavigationService; import fr.ird.observe.services.service.referential.ReferentialService; import fr.ird.observe.services.service.sql.SqlScriptProducerService; import fr.ird.observe.services.service.actions.consolidate.ConsolidateDataService; @@ -92,6 +93,8 @@ public interface ObserveServicesProvider { DataSourceService newDataSourceService(); + NavigationService newNavigationService(); + ReferentialService newReferentialService(); TripSeineService newTripSeineService(); diff --git a/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java b/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java new file mode 100644 index 0000000..8c82748 --- /dev/null +++ b/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java @@ -0,0 +1,30 @@ +package fr.ird.observe.services.service.data; + +/** + * Created on 22/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.1 + */ +public class NavigationRequest { + + + private boolean loadSeine; + private boolean loadLongline; + + public boolean isLoadSeine() { + return loadSeine; + } + + public void setLoadSeine(boolean loadSeine) { + this.loadSeine = loadSeine; + } + + public boolean isLoadLongline() { + return loadLongline; + } + + public void setLoadLongline(boolean loadLongline) { + this.loadLongline = loadLongline; + } +} diff --git a/services/src/main/java/fr/ird/observe/services/service/data/NavigationResult.java b/services/src/main/java/fr/ird/observe/services/service/data/NavigationResult.java new file mode 100644 index 0000000..0c8df25 --- /dev/null +++ b/services/src/main/java/fr/ird/observe/services/service/data/NavigationResult.java @@ -0,0 +1,40 @@ +package fr.ird.observe.services.service.data; + +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Multimap; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.seine.TripSeineDto; + +/** + * Created on 22/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.1 + */ +public class NavigationResult { + + private final ImmutableSet<ReferentialReference<ProgramDto>> programs; + private final Multimap<ReferentialReference<ProgramDto>, DataReference<TripSeineDto>> tripsSeineByProgram; + private final Multimap<ReferentialReference<ProgramDto>, DataReference<TripLonglineDto>> tripsLonglineByProgram; + + public NavigationResult(ImmutableSet<ReferentialReference<ProgramDto>> programs, Multimap<ReferentialReference<ProgramDto>, DataReference<TripSeineDto>> tripsSeineByProgram, Multimap<ReferentialReference<ProgramDto>, DataReference<TripLonglineDto>> tripsLonglineByProgram) { + this.programs = programs; + this.tripsSeineByProgram = tripsSeineByProgram; + this.tripsLonglineByProgram = tripsLonglineByProgram; + } + + public ImmutableSet<ReferentialReference<ProgramDto>> getPrograms() { + return programs; + } + + public Multimap<ReferentialReference<ProgramDto>, DataReference<TripSeineDto>> getTripsSeineByProgram() { + return tripsSeineByProgram; + } + + public Multimap<ReferentialReference<ProgramDto>, DataReference<TripLonglineDto>> getTripsLonglineByProgram() { + return tripsLonglineByProgram; + } +} diff --git a/services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java b/services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java new file mode 100644 index 0000000..58d4eb6 --- /dev/null +++ b/services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java @@ -0,0 +1,15 @@ +package fr.ird.observe.services.service.data; + +import fr.ird.observe.services.ObserveService; + +/** + * Created on 22/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.1 + */ +public interface NavigationService extends ObserveService { + + NavigationResult getNavigation(NavigationRequest request); + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm