branch feature/deal_with_blobs updated (1e3d400 -> 7540dc0)
This is an automated email from the git hooks/post-receive script. New change to branch feature/deal_with_blobs in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from 1e3d400 Add entity enum + deal with blobs in import - export of trips (introduce a new api to be used soon also for bi-directionnal data synchro) new 8f30f6a Improve actions layout new 09863e6 Use a unique management trip service for export data and bi-synchro data new 7540dc0 Use a parameter to fix read lock timeout 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 7540dc0437b98d269cbb024e4a1f358fc14dac3b Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Aug 27 12:06:40 2016 +0200 Use a parameter to fix read lock timeout commit 09863e615b56e98bed16b9b818e577ccf1f8c4ae Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Aug 27 12:06:08 2016 +0200 Use a unique management trip service for export data and bi-synchro data commit 8f30f6a46b2164d66a1bdc1a75db1d8e710fb2b2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Aug 27 09:08:43 2016 +0200 Improve actions layout Summary of changes: .../src/main/filters/observe-ui.properties | 2 +- .../fr/ird/observe/db/ObserveSwingDataSource.java | 18 +- .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 5 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 86 ++++++++- .../observe/ui/admin/export/ExportUIHandler.java | 112 ++++------- .../fr/ird/observe/ui/admin/export/TripEntry.java | 7 + .../synchronize/data/DataSynchroUIHandler.java | 178 +++++++++++------- .../observe-application-swing_en_GB.properties | 9 + .../observe-application-swing_es_ES.properties | 9 + .../observe-application-swing_fr_FR.properties | 9 + .../data/DataSynchronizeServiceController.java | 32 ---- .../v1/trip/ExportTripServiceController.java | 47 ----- .../v1/trip/ImportTripServiceController.java | 47 ----- .../v1/trip/TripManagementServiceController.java | 61 ++++++ .../observe/ObserveTopiaConfigurationFactory.java | 4 +- .../observe/services/ObserveServicesProvider.java | 10 +- .../service/DeleteSqlScriptProducerRequest.java | 21 +-- .../synchro/data/DataSynchronizeRequest.java | 103 ---------- .../synchro/data/DataSynchronizeService.java | 52 ------ .../synchro/data/task/DataSynchronizeCopyTask.java | 14 -- .../data/task/DataSynchronizeDeleteTask.java | 14 -- .../DeleteTripRequest.java} | 14 +- .../services/service/trip/DeleteTripResult.java | 26 +++ .../ExportTripRequest.java} | 14 +- .../services/service/trip/ExportTripResult.java | 51 +++++ .../services/service/trip/ExportTripsRequest.java | 98 ---------- .../services/service/trip/ExportTripsResult.java | 121 ------------ .../services/service/trip/ImportTripRequest.java | 42 +++++ .../services/service/trip/ImportTripResult.java | 51 +++++ .../services/service/trip/ImportTripService.java | 43 ----- .../services/service/trip/ImportTripsRequest.java | 105 ----------- .../services/service/trip/ImportTripsResult.java | 93 --------- ...TripService.java => TripManagementService.java} | 16 +- .../synchro/data/DataSynchronizeServiceTopia.java | 108 ----------- .../service/trip/ExportTripServiceTopia.java | 77 -------- .../service/trip/ImportTripServiceTopia.java | 121 ------------ .../service/trip/TripManagementServiceTopia.java | 207 +++++++++++++++++++++ 37 files changed, 745 insertions(+), 1282 deletions(-) delete mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/data/DataSynchronizeServiceController.java delete mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/ExportTripServiceController.java delete mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/ImportTripServiceController.java create mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/TripManagementServiceController.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeRequest.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeService.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeCopyTask.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeDeleteTask.java copy observe-services-api/src/main/java/fr/ird/observe/services/service/{actions/synchro/data/task/DataSynchronizeTaskSupport.java => trip/DeleteTripRequest.java} (51%) create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/DeleteTripResult.java rename observe-services-api/src/main/java/fr/ird/observe/services/service/{actions/synchro/data/task/DataSynchronizeTaskSupport.java => trip/ExportTripRequest.java} (51%) create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripResult.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripsRequest.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripsResult.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripRequest.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripResult.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripService.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripsRequest.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripsResult.java rename observe-services-api/src/main/java/fr/ird/observe/services/service/trip/{ExportTripService.java => TripManagementService.java} (72%) delete mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeServiceTopia.java delete mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/ExportTripServiceTopia.java delete mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/ImportTripServiceTopia.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/TripManagementServiceTopia.java -- 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/deal_with_blobs in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 8f30f6a46b2164d66a1bdc1a75db1d8e710fb2b2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Aug 27 09:08:43 2016 +0200 Improve actions layout --- observe-application-swing/src/main/filters/observe-ui.properties | 2 +- .../src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/observe-application-swing/src/main/filters/observe-ui.properties b/observe-application-swing/src/main/filters/observe-ui.properties index 84c9f1c..a6a3dbd 100644 --- a/observe-application-swing/src/main/filters/observe-ui.properties +++ b/observe-application-swing/src/main/filters/observe-ui.properties @@ -158,7 +158,7 @@ icon.action.site=action-site.png icon.action.start=action-synchro-start.png icon.action.stop=action-synchro-stop.png icon.action.synchronizeReferentiel=action-synch.png -icon.action.dataSynchronize=action-synch.png +icon.action.dataSynchronize=action-remote-export.png icon.action.referentialSynchronize=action-synch.png icon.action.pause=action-synchro-pause.png icon.action.unconnected=action-unconnected.png diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx index 4aad01d..33d1d5d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx @@ -170,12 +170,13 @@ void $afterCompleteSetup() { <JMenu id='menuActions'> <JMenuItem id='menuActionsSynchronize'/> <JMenuItem id='menuActionsReferentialSynchro'/> + <JSeparator/> + <JMenuItem id='menuActionsExportData'/> <JMenuItem id='menuActionsDataSynchro'/> <JSeparator/> + <JMenuItem id='menuActionsConsolidate'/> <JMenuItem id='menuActionsValidateData'/> - <JMenuItem id='menuActionsExportData'/> <JMenuItem id='menuActionsReport'/> - <JMenuItem id='menuActionsConsolidate'/> </JMenu> <JMenu id='menuNavigation'> -- 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/deal_with_blobs in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 09863e615b56e98bed16b9b818e577ccf1f8c4ae Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Aug 27 12:06:08 2016 +0200 Use a unique management trip service for export data and bi-synchro data --- .../fr/ird/observe/db/ObserveSwingDataSource.java | 18 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 86 ++++++++- .../observe/ui/admin/export/ExportUIHandler.java | 112 ++++------- .../fr/ird/observe/ui/admin/export/TripEntry.java | 7 + .../synchronize/data/DataSynchroUIHandler.java | 178 +++++++++++------- .../observe-application-swing_en_GB.properties | 9 + .../observe-application-swing_es_ES.properties | 9 + .../observe-application-swing_fr_FR.properties | 9 + .../data/DataSynchronizeServiceController.java | 32 ---- .../v1/trip/ExportTripServiceController.java | 47 ----- .../v1/trip/ImportTripServiceController.java | 47 ----- .../v1/trip/TripManagementServiceController.java | 61 ++++++ .../observe/services/ObserveServicesProvider.java | 10 +- .../service/DeleteSqlScriptProducerRequest.java | 21 +-- .../synchro/data/DataSynchronizeRequest.java | 103 ---------- .../synchro/data/DataSynchronizeService.java | 52 ------ .../synchro/data/task/DataSynchronizeCopyTask.java | 14 -- .../data/task/DataSynchronizeDeleteTask.java | 14 -- .../DeleteTripRequest.java} | 14 +- .../services/service/trip/DeleteTripResult.java | 26 +++ .../ExportTripRequest.java} | 14 +- .../services/service/trip/ExportTripResult.java | 51 +++++ .../services/service/trip/ExportTripsRequest.java | 98 ---------- .../services/service/trip/ExportTripsResult.java | 121 ------------ .../services/service/trip/ImportTripRequest.java | 42 +++++ .../services/service/trip/ImportTripResult.java | 51 +++++ .../services/service/trip/ImportTripService.java | 43 ----- .../services/service/trip/ImportTripsRequest.java | 105 ----------- .../services/service/trip/ImportTripsResult.java | 93 --------- ...TripService.java => TripManagementService.java} | 16 +- .../synchro/data/DataSynchronizeServiceTopia.java | 108 ----------- .../service/trip/ExportTripServiceTopia.java | 77 -------- .../service/trip/ImportTripServiceTopia.java | 121 ------------ .../service/trip/TripManagementServiceTopia.java | 207 +++++++++++++++++++++ 34 files changed, 738 insertions(+), 1278 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java index 4d6932e..9ef93ef 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java @@ -60,10 +60,8 @@ import fr.ird.observe.services.service.PingService; import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.service.actions.consolidate.ConsolidateDataService; -import fr.ird.observe.services.service.trip.ExportTripService; -import fr.ird.observe.services.service.trip.ImportTripService; +import fr.ird.observe.services.service.trip.TripManagementService; import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.synchro.data.DataSynchronizeService; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeService; @@ -558,13 +556,8 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements } @Override - public ExportTripService newExportTripService() { - return newService(ExportTripService.class); - } - - @Override - public ImportTripService newImportTripService() { - return newService(ImportTripService.class); + public TripManagementService newTripManagementService() { + return newService(TripManagementService.class); } @Override @@ -578,11 +571,6 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements } @Override - public DataSynchronizeService newDataSynchronizeService() { - return newService(DataSynchronizeService.class); - } - - @Override public ReferentialSynchronizeService newReferentialSynchronizeService() { return newService(ReferentialSynchronizeService.class); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java index c551c61..2cc0728 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java @@ -24,18 +24,27 @@ package fr.ird.observe.ui.admin; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.decoration.DecoratorService; +import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.services.service.trip.DeleteTripResult; +import fr.ird.observe.services.service.trip.ExportTripResult; +import fr.ird.observe.services.service.trip.ImportTripResult; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel; import fr.ird.observe.ui.tree.ObserveTreeHelper; import jaxx.runtime.swing.wizard.ext.WizardState; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.util.StringUtil; import javax.swing.JTree; import javax.swing.tree.TreeModel; @@ -44,7 +53,6 @@ import java.io.StringWriter; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.reload; import static org.nuiton.i18n.I18n.t; /** @@ -241,4 +249,80 @@ public class AdminTabUIHandler { public void addMessage(AdminStep step, String text) { ui.getProgression().append(text + "\n"); } + + protected void logExportResult(String i18nKey, + ExportTripResult tripResult, + ReferentialReferenceDecorator<ProgramDto> programDecorator, + ReferentialReference<ProgramDto> program, + DataReference trip) { + + String message = sendLogResultMessage(i18nKey, programDecorator, program, trip, tripResult.getTime()); + if (log.isInfoEnabled()) { + log.info(message); + } + + } + + + protected void logImportResult(String importI18nKey, + String deleteI18nKey, + ImportTripResult tripResult, + ReferentialReferenceDecorator<ProgramDto> programDecorator, + ReferentialReference<ProgramDto> program, + DataReference trip) { + + DecoratorService decoratorService = getDecoratorService(); + + String programStr = programDecorator.toString(program); + + String tripStr = decoratorService.getTripReferenceDecorator(trip).toString(trip); + + if (tripResult.isDeleted()) { + + String message = sendLogResultMessage(deleteI18nKey, programDecorator, program, trip, tripResult.getDeleteTime()); + if (log.isInfoEnabled()) { + log.info(message); + } + + } + + if (tripResult.isImported()) { + + String message = sendLogResultMessage(importI18nKey, programDecorator, program, trip, tripResult.getImportTime()); + if (log.isInfoEnabled()) { + log.info(message); + } + + } + + } + + protected void logDeleteResult(String deleteI18nKey, + DeleteTripResult tripResult, + ReferentialReferenceDecorator<ProgramDto> programDecorator, + ReferentialReference<ProgramDto> program, + DataReference trip) { + + String message = sendLogResultMessage(deleteI18nKey, programDecorator, program, trip, tripResult.getTime()); + if (log.isInfoEnabled()) { + log.info(message); + } + + } + + protected String sendLogResultMessage(String i18nKey, + ReferentialReferenceDecorator<ProgramDto> programDecorator, + ReferentialReference<ProgramDto> program, + DataReference trip, + long time) { + + DecoratorService decoratorService = getDecoratorService(); + String programStr = programDecorator.toString(program); + String tripStr = decoratorService.getTripReferenceDecorator(trip).toString(trip); + String timeStr = StringUtil.convertTime(time); + String message = StringUtils.leftPad(timeStr, 20) + " - " + t(i18nKey, programStr, tripStr); + sendMessage(message); + return message; + } + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java index 3b04eab..fcceba1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java @@ -23,7 +23,6 @@ package fr.ird.observe.ui.admin.export; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; @@ -31,16 +30,13 @@ import fr.ird.observe.db.ObserveSwingDataSource; 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; -import fr.ird.observe.services.service.BabModelVersionException; -import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; -import fr.ird.observe.services.service.DatabaseNotFoundException; -import fr.ird.observe.services.service.trip.ExportTripService; -import fr.ird.observe.services.service.trip.ExportTripsRequest; -import fr.ird.observe.services.service.trip.ExportTripsResult; -import fr.ird.observe.services.service.trip.ImportTripService; -import fr.ird.observe.services.service.trip.ImportTripsRequest; -import fr.ird.observe.services.service.trip.ImportTripsResult; +import fr.ird.observe.services.service.trip.ExportTripRequest; +import fr.ird.observe.services.service.trip.ExportTripResult; +import fr.ird.observe.services.service.trip.ImportTripRequest; +import fr.ird.observe.services.service.trip.ImportTripResult; +import fr.ird.observe.services.service.trip.TripManagementService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; @@ -251,92 +247,58 @@ public class ExportUIHandler extends AdminTabUIHandler { ExportModel stepModel = model.getExportModel(); // on filtre les marées sélectionnées pour export - List<TripEntry> selectedTripEntries = stepModel.getSelectedTrips(); - - ImportTripsResult results = replicateData(stepModel.getSource(), stepModel.getCentralSource(), selectedTripEntries); - - ImmutableMap<String, TripEntry> tripEntriesById = Maps.uniqueIndex(selectedTripEntries, TripEntry::getTripId); - - for (ImportTripsResult.ImportTripResult result : results) { - - String tripId = result.getTripId(); - - TripEntry tripEntry = tripEntriesById.get(tripId); - - String tripDecorated = stepModel.decorate(tripEntry.getTrip()); - String programDecorated = stepModel.decorate(tripEntry.getProgram()); - - if (result.isDeleted()) { - - if (log.isInfoEnabled()) { - log.info(tripId + " → " + t("observe.actions.exportData.message.delete.remote.maree", tripDecorated, programDecorated)); - } - sendMessage(t("observe.actions.exportData.message.delete.remote.maree", tripDecorated, programDecorated)); - } - - if (log.isInfoEnabled()) { - log.info(tripId + " → " + t("observe.actions.exportData.message.replicate.maree", tripDecorated, programDecorated)); - } - sendMessage(t("observe.actions.exportData.message.replicate.maree", tripDecorated, programDecorated)); - - } - - sendMessage(t("observe.actions.operation.message.done", new Date())); - - return WizardState.SUCCESSED; - } - - private ImportTripsResult replicateData(ObserveSwingDataSource source, - ObserveSwingDataSource target, - List<TripEntry> tripEntries) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { + List<TripEntry> tripEntries = stepModel.getSelectedTrips(); Preconditions.checkState(CollectionUtils.isNotEmpty(tripEntries)); - // Create export request - - ExportTripsRequest.Builder requestBuilder = ExportTripsRequest.builder(true); - + ImmutableMap.Builder<String, ReferentialReference<ProgramDto>> programsByIdBuilder = ImmutableMap.builder(); + ImmutableMap.Builder<String, DataReference> tripsByIdBuilder = ImmutableMap.builder(); for (TripEntry tripEntry : tripEntries) { - requestBuilder.addTripToExport(tripEntry.getTrip().getId()); + programsByIdBuilder.put(tripEntry.getProgram().getId(), tripEntry.getProgram()); + tripsByIdBuilder.put(tripEntry.getTrip().getId(), tripEntry.getTrip()); } + ImmutableMap<String, ReferentialReference<ProgramDto>> programsById = programsByIdBuilder.build(); + ImmutableMap<String, DataReference> tripsById = tripsByIdBuilder.build(); - ExportTripsRequest exportTripsRequest = requestBuilder.build(); + DecoratorService decoratorService = getDecoratorService(); + ReferentialReferenceDecorator<ProgramDto> programDecorator = decoratorService.getReferentialReferenceDecorator(ProgramDto.class); - // Do export + try (ObserveSwingDataSource localDataSource = openSource(stepModel.getSource())) { - ExportTripsResult exportTripsResult; + TripManagementService localTripManagementService = localDataSource.newTripManagementService(); - try (ObserveSwingDataSource observeSwingDataSource = openSource(source)) { + try (ObserveSwingDataSource centralDataSource = openSource(stepModel.getCentralSource())) { - ExportTripService exportTripService = observeSwingDataSource.newExportTripService(); - exportTripsResult = exportTripService.exportTrips(exportTripsRequest); + TripManagementService centralTripManagementService = centralDataSource.newTripManagementService(); - } + for (TripEntry tripEntry : tripEntries) { - //TODO Print export results + ExportTripResult exportTripResult = localTripManagementService.exportTrip(new ExportTripRequest(tripEntry.getProgramId(), tripEntry.getTripId())); + logExportResult(n("observe.actions.export.result.export.trip"), + exportTripResult, + programDecorator, + tripEntry.getProgram(), + tripEntry.getTrip()); - // Create import request + ImportTripResult importTripResult = centralTripManagementService.importTrip(new ImportTripRequest(exportTripResult)); - ImportTripsRequest.Builder importRequestBuilder = ImportTripsRequest.builder(); - for (ExportTripsResult.ExportTripResult tripExportResult : exportTripsResult) { - importRequestBuilder.addTripToImport(tripExportResult.toImportRequest()); - } + logImportResult(n("observe.actions.export.result.import.trip"), + n("observe.actions.export.result.delete.trip"), + importTripResult, + programDecorator, + tripEntry.getProgram(), + tripEntry.getTrip()); - ImportTripsRequest importTripRequests = importRequestBuilder.build(); + } - // Do import - ImportTripsResult importTripsResult; - try (ObserveSwingDataSource observeSwingDataSource = openSource(target)) { - ImportTripService importTripService = observeSwingDataSource.newImportTripService(); - importTripsResult = importTripService.importTrips(importTripRequests); + } } + sendMessage(t("observe.actions.operation.message.done", new Date())); - return importTripsResult; - + return WizardState.SUCCESSED; } - } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripEntry.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripEntry.java index 3054c38..18d7f57 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripEntry.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripEntry.java @@ -26,6 +26,7 @@ import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import java.io.Serializable; +import java.util.Objects; /** Une classe qui représente une entrée dans le modèle (sans la sélection) */ public class TripEntry implements Serializable { @@ -39,6 +40,8 @@ public class TripEntry implements Serializable { protected final boolean exist; public TripEntry(ReferentialReference<ProgramDto> program, DataReference trip, boolean exist) { + Objects.requireNonNull(program); + Objects.requireNonNull(trip); this.program = program; this.trip = trip; this.exist = exist; @@ -48,6 +51,10 @@ public class TripEntry implements Serializable { return program; } + public String getProgramId() { + return program.getId(); + } + public DataReference getTrip() { return trip; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/data/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/data/DataSynchroUIHandler.java index 7822ef3..b1bdd31 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/data/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/data/DataSynchroUIHandler.java @@ -7,10 +7,13 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; -import fr.ird.observe.services.service.actions.synchro.data.DataSynchronizeRequest; -import fr.ird.observe.services.service.actions.synchro.data.DataSynchronizeService; -import fr.ird.observe.services.service.actions.synchro.data.task.DataSynchronizeCopyTask; -import fr.ird.observe.services.service.actions.synchro.data.task.DataSynchronizeDeleteTask; +import fr.ird.observe.services.service.trip.DeleteTripRequest; +import fr.ird.observe.services.service.trip.DeleteTripResult; +import fr.ird.observe.services.service.trip.ExportTripRequest; +import fr.ird.observe.services.service.trip.ExportTripResult; +import fr.ird.observe.services.service.trip.ImportTripRequest; +import fr.ird.observe.services.service.trip.ImportTripResult; +import fr.ird.observe.services.service.trip.TripManagementService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; @@ -33,6 +36,7 @@ import javax.swing.border.TitledBorder; import java.util.List; import java.util.Map; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -102,36 +106,6 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { } - private WizardState doStartAction0() { - - DataSynchroUI tabUI = getUi(); - DataSynchroModel stepModel = getStepModel(); - ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); - - ObserveSwingDataSource leftSource = getModel().getSafeLocalSource(true); - stepModel.setLeftSource(leftSource); - - ObserveSwingDataSource rightSource = getModel().getSafeCentralSource(true); - stepModel.setRightSource(rightSource); - - tabUI.getLeftTreePane().setBorder(new TitledBorder(getModel().getLocalSourceModel().getLabel())); - stepModel.populateLeftSelectionModel(); - updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), leftSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); - sendMessage(t("observe.actions.synchro.referential.message.data.leftData.loaded")); - - configUI.getLocalSourceConfig().setBorder(new TitledBorder(getModel().getLocalSourceLabel())); - - tabUI.getRightTreePane().setBorder(new TitledBorder(getModel().getCentralSourceModel().getLabel())); - stepModel.populateRightSelectionModel(); - updateSelectionModel(tabUI, tabUI.getRightTreeHelper(), tabUI.getRightTree(), rightSource, stepModel.getRightSelectionDataModel(), tabUI.getRightSelectionModel()); - sendMessage(t("observe.actions.synchro.referential.message.data.rightData.loaded")); - - configUI.getCentralSourceConfig().setBorder(new TitledBorder(getModel().getCentralSourceLabel())); - - return WizardState.NEED_FIX; - - } - public void addCopyToLeftTasks() { DataSelectionModel rightSelectionDataModel = getStepModel().getRightSelectionDataModel(); @@ -220,6 +194,42 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { public void doExecuteAction() { + addAdminWorker(getUi().getStartAction().getToolTipText(), this::doExecuteAction0); + + } + + private WizardState doStartAction0() { + + DataSynchroUI tabUI = getUi(); + DataSynchroModel stepModel = getStepModel(); + ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); + + ObserveSwingDataSource leftSource = getModel().getSafeLocalSource(true); + stepModel.setLeftSource(leftSource); + + ObserveSwingDataSource rightSource = getModel().getSafeCentralSource(true); + stepModel.setRightSource(rightSource); + + tabUI.getLeftTreePane().setBorder(new TitledBorder(getModel().getLocalSourceModel().getLabel())); + stepModel.populateLeftSelectionModel(); + updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), leftSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); + sendMessage(t("observe.actions.synchro.referential.message.data.leftData.loaded")); + + configUI.getLocalSourceConfig().setBorder(new TitledBorder(getModel().getLocalSourceLabel())); + + tabUI.getRightTreePane().setBorder(new TitledBorder(getModel().getCentralSourceModel().getLabel())); + stepModel.populateRightSelectionModel(); + updateSelectionModel(tabUI, tabUI.getRightTreeHelper(), tabUI.getRightTree(), rightSource, stepModel.getRightSelectionDataModel(), tabUI.getRightSelectionModel()); + sendMessage(t("observe.actions.synchro.referential.message.data.rightData.loaded")); + + configUI.getCentralSourceConfig().setBorder(new TitledBorder(getModel().getCentralSourceLabel())); + + return WizardState.NEED_FIX; + + } + + private WizardState doExecuteAction0() { + ObserveSwingDataSource leftSource = getStepModel().getLeftSource(); boolean leftSourceIsH2 = leftSource.getConfiguration() instanceof ObserveDataSourceConfigurationTopiaH2; @@ -232,69 +242,101 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { DecoratorService decoratorService = getDecoratorService(); ReferentialReferenceDecorator<ProgramDto> programDecorator = decoratorService.getReferentialReferenceDecorator(ProgramDto.class); - DataSynchronizeRequest.Builder leftDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(leftSourceIsH2, rightSourceIsH2); - DataSynchronizeRequest.Builder rightDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(rightSourceIsH2, leftSourceIsH2); + TripManagementService leftTripManagementService = leftSource.newTripManagementService(); + TripManagementService rightTripManagementService = rightSource.newTripManagementService(); + for (int i = 0; i < size; i++) { DataSynchronizeTaskSupport task = tasks.getElementAt(i); - String programStr = programDecorator.toString(task.getProgram()); - String tripStr = decoratorService.getTripReferenceDecorator(task.getTrip()).toString(task.getTrip()); + ReferentialReference<ProgramDto> program = task.getProgram(); + String programId = program.getId(); + String programStr = programDecorator.toString(program); + + DataReference trip = task.getTrip(); + String tripId = trip.getId(); + String tripStr = decoratorService.getTripReferenceDecorator(trip).toString(trip); if (task instanceof DeleteFromLeftDataSynchronizeTask) { sendMessage(t("observe.actions.synchro.data.prepare.deleteFromLeftTask", programStr, tripStr)); - leftDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); + + DeleteTripResult deleteTripResult = leftTripManagementService.deleteTrip(new DeleteTripRequest(programId, tripId)); + logDeleteResult(n("observe.actions.synchro.data.result.delete.left.trip"), + deleteTripResult, + programDecorator, + program, + trip); + continue; + } if (task instanceof DeleteFromRightDataSynchronizeTask) { + sendMessage(t("observe.actions.synchro.data.prepare.deleteFromRightTask", programStr, tripStr)); - rightDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); + + DeleteTripResult deleteTripResult = rightTripManagementService.deleteTrip(new DeleteTripRequest(programId, tripId)); + logDeleteResult(n("observe.actions.synchro.data.result.delete.right.trip"), + deleteTripResult, + programDecorator, + program, + trip); continue; + } if (task instanceof CopyToLeftDataSynchronizeTask) { - CopyToLeftDataSynchronizeTask task1 = (CopyToLeftDataSynchronizeTask) task; - if (task1.isTripExistOnLeft()) { - sendMessage(t("observe.actions.synchro.data.prepare.deleteFromLeftTask", programStr, tripStr)); - leftDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); - } + sendMessage(t("observe.actions.synchro.data.prepare.copyToLeftTask", programStr, tripStr)); - leftDataSynchronizeRequestBuilder.addCopyTask(new DataSynchronizeCopyTask(task.getProgram().getId(), task.getTrip().getId())); + + ExportTripResult exportTripResult = rightTripManagementService.exportTrip(new ExportTripRequest(programId, tripId)); + + logExportResult(n("observe.actions.synchro.data.result.export.right.trip"), + exportTripResult, + programDecorator, + program, + trip); + + ImportTripResult importTripResult = leftTripManagementService.importTrip(new ImportTripRequest(exportTripResult)); + + logImportResult(n("observe.actions.synchro.data.result.import.left.trip"), + n("observe.actions.synchro.data.result.delete.left.trip"), + importTripResult, + programDecorator, + program, + trip); + continue; + } if (task instanceof CopyToRightDataSynchronizeTask) { - CopyToRightDataSynchronizeTask task1 = (CopyToRightDataSynchronizeTask) task; - if (task1.isTripExistOnRight()) { - sendMessage(t("observe.actions.synchro.data.prepare.deleteFromRightTask", programStr, tripStr)); - rightDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); - } + sendMessage(t("observe.actions.synchro.data.prepare.copyToRightTask", programStr, tripStr)); - rightDataSynchronizeRequestBuilder.addCopyTask(new DataSynchronizeCopyTask(task.getProgram().getId(), task.getTrip().getId())); - } - } + ExportTripResult exportTripResult = leftTripManagementService.exportTrip(new ExportTripRequest(programId, tripId)); - DataSynchronizeService leftDataSynchronizeService = leftSource.newDataSynchronizeService(); - DataSynchronizeService rightDataSynchronizeService = rightSource.newDataSynchronizeService(); + logExportResult(n("observe.actions.synchro.data.result.export.left.trip"), + exportTripResult, + programDecorator, + program, + trip); - DataSynchronizeRequest leftDataSynchronizeRequest = leftDataSynchronizeRequestBuilder.build(); - if (leftDataSynchronizeRequest.isNotEmpty()) { - byte[][] copySqlCodes = rightDataSynchronizeService.getCopySqlCodes(leftDataSynchronizeRequest); - byte[][] deleteSqlCodes = leftDataSynchronizeService.getDeleteSqlCodes(leftDataSynchronizeRequest); - leftDataSynchronizeService.executeRequest(copySqlCodes, deleteSqlCodes); - } + ImportTripResult importTripResult = rightTripManagementService.importTrip(new ImportTripRequest(exportTripResult)); + + logImportResult(n("observe.actions.synchro.data.result.import.right.trip"), + n("observe.actions.synchro.data.result.delete.right.trip"), + importTripResult, + programDecorator, + program, + trip); + + } - DataSynchronizeRequest rightDataSynchronizeRequest = rightDataSynchronizeRequestBuilder.build(); - if (rightDataSynchronizeRequest.isNotEmpty()) { - byte[][] copySqlCodes = leftDataSynchronizeService.getCopySqlCodes(rightDataSynchronizeRequest); - byte[][] deleteSqlCodes = rightDataSynchronizeService.getDeleteSqlCodes(rightDataSynchronizeRequest); - rightDataSynchronizeService.executeRequest(copySqlCodes, deleteSqlCodes); } - getModel().setStepState(WizardState.SUCCESSED); + return WizardState.SUCCESSED; } diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties index e49fb1c..ddda428 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties @@ -159,6 +159,9 @@ observe.actions.consolidate.step= observe.actions.consolidate.step.description= observe.actions.consolidate.title= observe.actions.consolidate.title.tip= +observe.actions.export.result.delete.trip= +observe.actions.export.result.export.trip= +observe.actions.export.result.import.trip= observe.actions.exportData= observe.actions.exportData.description= observe.actions.exportData.message.delete.remote.maree= @@ -226,6 +229,12 @@ observe.actions.synchro.data.prepare.copyToLeftTask= observe.actions.synchro.data.prepare.copyToRightTask= observe.actions.synchro.data.prepare.deleteFromLeftTask= observe.actions.synchro.data.prepare.deleteFromRightTask= +observe.actions.synchro.data.result.delete.left.trip= +observe.actions.synchro.data.result.delete.right.trip= +observe.actions.synchro.data.result.export.left.trip= +observe.actions.synchro.data.result.export.right.trip= +observe.actions.synchro.data.result.import.left.trip= +observe.actions.synchro.data.result.import.right.trip= observe.actions.synchro.data.step= observe.actions.synchro.data.step.description= observe.actions.synchro.data.title= diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties index 75b8703..d5c9503 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties @@ -159,6 +159,9 @@ observe.actions.consolidate.step= observe.actions.consolidate.step.description= observe.actions.consolidate.title= observe.actions.consolidate.title.tip= +observe.actions.export.result.delete.trip= +observe.actions.export.result.export.trip= +observe.actions.export.result.import.trip= observe.actions.exportData= observe.actions.exportData.description= observe.actions.exportData.message.delete.remote.maree=Eliminación de la marea (%1$s) del programa (%2$s) de la base remota. @@ -226,6 +229,12 @@ observe.actions.synchro.data.prepare.copyToLeftTask= observe.actions.synchro.data.prepare.copyToRightTask= observe.actions.synchro.data.prepare.deleteFromLeftTask= observe.actions.synchro.data.prepare.deleteFromRightTask= +observe.actions.synchro.data.result.delete.left.trip= +observe.actions.synchro.data.result.delete.right.trip= +observe.actions.synchro.data.result.export.left.trip= +observe.actions.synchro.data.result.export.right.trip= +observe.actions.synchro.data.result.import.left.trip= +observe.actions.synchro.data.result.import.right.trip= observe.actions.synchro.data.step= observe.actions.synchro.data.step.description= observe.actions.synchro.data.title= diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index 550dd80..d010bf6 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -159,6 +159,9 @@ observe.actions.consolidate.step=Calculer les données observe.actions.consolidate.step.description=Calculer les données non observées observe.actions.consolidate.title=Consolider les données observateur observe.actions.consolidate.title.tip=Consolider les données observateur +observe.actions.export.result.delete.trip=La marée %s - %s a été supprimée de la base centrale +observe.actions.export.result.export.trip=La marée %s - %s a été exportée depuis la base locale +observe.actions.export.result.import.trip=La marée %s - %s a été importée dans la base centrale observe.actions.exportData=Exporter les données observateurs observe.actions.exportData.description=Exporter les données observateurs vers la base centrale observe.actions.exportData.message.delete.remote.maree=Suppression de la marée (%1$s) du programme (%2$s) de la base distante. @@ -226,6 +229,12 @@ observe.actions.synchro.data.prepare.copyToLeftTask=Préparation de la recopie v observe.actions.synchro.data.prepare.copyToRightTask=Préparation de la recopie vers la base de droite \: %s - %s observe.actions.synchro.data.prepare.deleteFromLeftTask=Préparation de la suppression de la base de gauche \: %s - %s observe.actions.synchro.data.prepare.deleteFromRightTask=Préparation de la suppression de la base de droite \: %s - %s +observe.actions.synchro.data.result.delete.left.trip=Suppression de la marée %s - %s dans la base de gauche effectuée. +observe.actions.synchro.data.result.delete.right.trip=Suppression de la marée %s - %s dans la base de droite effectuée. +observe.actions.synchro.data.result.export.left.trip=Export de la marée %s - %s depuis la base de gauche effectuée. +observe.actions.synchro.data.result.export.right.trip=Export de la marée %s - %s depuisla base de droite effectuée. +observe.actions.synchro.data.result.import.left.trip=Insertion de la marée %s - %s dans la base de gauche effectuée. +observe.actions.synchro.data.result.import.right.trip=Insertion de la marée %s - %s dans la base de droite effectuée. observe.actions.synchro.data.step=Synchronisation bi-directionnelle de données observe.actions.synchro.data.step.description=Synchronisation bi-directionnelle des données utilisateurs observe.actions.synchro.data.title=Synchronisation bi-directionnelle de données diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/data/DataSynchronizeServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/data/DataSynchronizeServiceController.java deleted file mode 100644 index 3b7f1a4..0000000 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/data/DataSynchronizeServiceController.java +++ /dev/null @@ -1,32 +0,0 @@ -package fr.ird.observe.application.web.controller.v1.actions.synchro.data; - -import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; -import fr.ird.observe.services.service.actions.synchro.data.DataSynchronizeRequest; -import fr.ird.observe.services.service.actions.synchro.data.DataSynchronizeService; - -/** - * Created on 09/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class DataSynchronizeServiceController extends ObserveAuthenticatedServiceControllerSupport<DataSynchronizeService> implements DataSynchronizeService { - - public DataSynchronizeServiceController() { - super(DataSynchronizeService.class); - } - - @Override - public byte[][] getCopySqlCodes(DataSynchronizeRequest request) { - return service.getCopySqlCodes(request); - } - - @Override - public byte[][] getDeleteSqlCodes(DataSynchronizeRequest request) { - return service.getDeleteSqlCodes(request); - } - - @Override - public void executeRequest(byte[][] copySqlCodes, byte[][] deleteSqlCodes) { - service.executeRequest(copySqlCodes, deleteSqlCodes); - } -} diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/ExportTripServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/ExportTripServiceController.java deleted file mode 100644 index 9f38e15..0000000 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/ExportTripServiceController.java +++ /dev/null @@ -1,47 +0,0 @@ -package fr.ird.observe.application.web.controller.v1.trip; - -/*- - * #%L - * ObServe :: Application Web - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; -import fr.ird.observe.services.service.trip.ExportTripService; -import fr.ird.observe.services.service.trip.ExportTripsRequest; -import fr.ird.observe.services.service.trip.ExportTripsResult; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ExportTripServiceController extends ObserveAuthenticatedServiceControllerSupport<ExportTripService> implements ExportTripService { - - public ExportTripServiceController() { - super(ExportTripService.class); - } - - @Override - public ExportTripsResult exportTrips(ExportTripsRequest exportRequest) { - return getAuthenticatedService().exportTrips(exportRequest); - } - -} diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/ImportTripServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/ImportTripServiceController.java deleted file mode 100644 index d76c456..0000000 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/ImportTripServiceController.java +++ /dev/null @@ -1,47 +0,0 @@ -package fr.ird.observe.application.web.controller.v1.trip; - -/*- - * #%L - * ObServe :: Application Web - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; -import fr.ird.observe.services.service.trip.ImportTripService; -import fr.ird.observe.services.service.trip.ImportTripsRequest; -import fr.ird.observe.services.service.trip.ImportTripsResult; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ImportTripServiceController extends ObserveAuthenticatedServiceControllerSupport<ImportTripService> implements ImportTripService { - - public ImportTripServiceController() { - super(ImportTripService.class); - } - - @Override - public ImportTripsResult importTrips(ImportTripsRequest importRequest) { - return service.importTrips(importRequest); - } - -} diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/TripManagementServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/TripManagementServiceController.java new file mode 100644 index 0000000..dbe603a --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/trip/TripManagementServiceController.java @@ -0,0 +1,61 @@ +package fr.ird.observe.application.web.controller.v1.trip; + +/*- + * #%L + * ObServe :: Application Web + * %% + * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; +import fr.ird.observe.services.service.trip.DeleteTripRequest; +import fr.ird.observe.services.service.trip.DeleteTripResult; +import fr.ird.observe.services.service.trip.ExportTripRequest; +import fr.ird.observe.services.service.trip.ExportTripResult; +import fr.ird.observe.services.service.trip.ImportTripRequest; +import fr.ird.observe.services.service.trip.ImportTripResult; +import fr.ird.observe.services.service.trip.TripManagementService; + +/** + * Created on 20/07/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class TripManagementServiceController extends ObserveAuthenticatedServiceControllerSupport<TripManagementService> implements TripManagementService { + + public TripManagementServiceController() { + super(TripManagementService.class); + } + + @Override + public ExportTripResult exportTrip(ExportTripRequest exportRequest) { + return service.exportTrip(exportRequest); + } + + @Override + public DeleteTripResult deleteTrip(DeleteTripRequest request) { + return service.deleteTrip(request); + } + + @Override + public ImportTripResult importTrip(ImportTripRequest request) { + return service.importTrip(request); + } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java index 888252c..b691eef 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java @@ -5,10 +5,7 @@ import fr.ird.observe.services.service.PingService; import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.service.actions.consolidate.ConsolidateDataService; -import fr.ird.observe.services.service.trip.ExportTripService; -import fr.ird.observe.services.service.trip.ImportTripService; import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.synchro.data.DataSynchronizeService; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeService; @@ -39,6 +36,7 @@ import fr.ird.observe.services.service.seine.TargetSampleService; import fr.ird.observe.services.service.seine.TransmittingBuoyOperationService; import fr.ird.observe.services.service.seine.TripSeineGearUseService; import fr.ird.observe.services.service.seine.TripSeineService; +import fr.ird.observe.services.service.trip.TripManagementService; /** * Un provider de services typés. @@ -58,16 +56,12 @@ public interface ObserveServicesProvider { PingService newPingService(); - ImportTripService newImportTripService(); - - ExportTripService newExportTripService(); + TripManagementService newTripManagementService(); ConsolidateDataService newConsolidateDataService(); UnidirectionalReferentialSynchronizeLocalService newUnidirectionalReferentialSynchronizeLocalService(); - DataSynchronizeService newDataSynchronizeService(); - ReferentialSynchronizeService newReferentialSynchronizeService(); ReferentialSynchronizeDiffService newReferentialSynchronizeDiffService(); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/DeleteSqlScriptProducerRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/DeleteSqlScriptProducerRequest.java index bbcc54a..4cff08a 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/DeleteSqlScriptProducerRequest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/DeleteSqlScriptProducerRequest.java @@ -34,16 +34,19 @@ import java.util.stream.Collectors; */ public class DeleteSqlScriptProducerRequest { - protected final boolean postgres; protected boolean deleteData; protected ImmutableSet<String> dataIds; + public static DeleteSqlScriptProducerRequest builder() { + return new DeleteSqlScriptProducerRequest(); + } + public static DeleteSqlScriptProducerRequest forH2() { - return new DeleteSqlScriptProducerRequest(false); + return new DeleteSqlScriptProducerRequest(); } public static DeleteSqlScriptProducerRequest forPostgres() { - return new DeleteSqlScriptProducerRequest(true); + return new DeleteSqlScriptProducerRequest(); } public DeleteSqlScriptProducerRequest deleteAllData() { @@ -57,8 +60,7 @@ public class DeleteSqlScriptProducerRequest { return this; } - protected DeleteSqlScriptProducerRequest(boolean postgres) { - this.postgres = postgres; + protected DeleteSqlScriptProducerRequest() { } public boolean isDeleteData() { @@ -69,18 +71,9 @@ public class DeleteSqlScriptProducerRequest { return dataIds; } - public boolean isH2() { - return !postgres; - } - - public boolean isPostgres() { - return postgres; - } - @Override public String toString() { return MoreObjects.toStringHelper(this) - .add("postgres", postgres) .add("deleteData", deleteData) .add("dataIds", dataIds == null ? "" : "[" + dataIds.stream().collect(Collectors.joining(", ")) + "]") .toString(); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeRequest.java deleted file mode 100644 index 6218431..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeRequest.java +++ /dev/null @@ -1,103 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.data; - -import com.google.common.collect.ImmutableSet; -import fr.ird.observe.services.service.actions.synchro.data.task.DataSynchronizeCopyTask; -import fr.ird.observe.services.service.actions.synchro.data.task.DataSynchronizeDeleteTask; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class DataSynchronizeRequest { - - /** Logger. */ - private static final Log log = LogFactory.getLog(DataSynchronizeRequest.class); - - public static Builder builder(boolean h2, boolean oppositeH2) { - return new Builder(h2, oppositeH2); - } - - /** - * Is data source use h2 ? - */ - private final boolean h2; - /** - * Is opposite data source use h2 ? - */ - private final boolean oppositeH2; - /** - * Copy tasks. - */ - private final ImmutableSet<DataSynchronizeCopyTask> copyTasks; - - /** - * Delete tasks. - */ - private final ImmutableSet<DataSynchronizeDeleteTask> deleteTasks; - - public static class Builder { - - private final boolean h2; - private final boolean oppositeH2; - private final ImmutableSet.Builder<DataSynchronizeCopyTask> copyTasksBuilder = ImmutableSet.builder(); - private final ImmutableSet.Builder<DataSynchronizeDeleteTask> deleteTasksBuilder = ImmutableSet.builder(); - - public Builder(boolean h2, boolean oppositeH2) { - this.h2 = h2; - this.oppositeH2 = oppositeH2; - } - - public DataSynchronizeRequest build() { - return new DataSynchronizeRequest(h2, oppositeH2, copyTasksBuilder.build(), deleteTasksBuilder.build()); - } - - public Builder addDeleteTask(DataSynchronizeDeleteTask deleteTask) { - - if (log.isInfoEnabled()) { - log.info("Add delete task for trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); - } - deleteTasksBuilder.add(deleteTask); - return this; - } - - public Builder addCopyTask(DataSynchronizeCopyTask copyTask) { - if (log.isInfoEnabled()) { - log.info("Add copy task for trip: " + copyTask.getProgramId() + " / " + copyTask.getTripId()); - } - copyTasksBuilder.add(copyTask); - return this; - } - - } - - public ImmutableSet<DataSynchronizeCopyTask> getCopyTasks() { - return copyTasks; - } - - public ImmutableSet<DataSynchronizeDeleteTask> getDeleteTasks() { - return deleteTasks; - } - - public boolean isNotEmpty() { - return !(copyTasks.isEmpty() && deleteTasks.isEmpty()); - } - - public boolean isOppositeH2() { - return oppositeH2; - } - - public boolean isH2() { - return h2; - } - - private DataSynchronizeRequest(boolean h2, boolean oppositeH2, ImmutableSet<DataSynchronizeCopyTask> copyTasks, ImmutableSet<DataSynchronizeDeleteTask> deleteTasks) { - this.h2 = h2; - this.oppositeH2 = oppositeH2; - this.copyTasks = copyTasks; - this.deleteTasks = deleteTasks; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeService.java deleted file mode 100644 index 5a9fc17..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeService.java +++ /dev/null @@ -1,52 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.data; - -import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.spi.PostRequest; -import fr.ird.observe.services.spi.ReadDataPermission; -import fr.ird.observe.services.spi.Write; -import fr.ird.observe.services.spi.WriteDataPermission; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public interface DataSynchronizeService extends ObserveService { - - /** - * Récupération du code sql de recopie. - * - * Cette méthode doit être executée sur la base opposée. - * - * @param request la demande des tâches à préparer. - */ - @ReadDataPermission - @PostRequest - byte[][] getCopySqlCodes(DataSynchronizeRequest request); - - /** - * Récupération du code sql de suppression. - * - * Cette méthode doit être executée sur la base cible. - * - * @param request la demande des tâches à préparer. - */ - @ReadDataPermission - @PostRequest - byte[][] getDeleteSqlCodes(DataSynchronizeRequest request); - - /** - * Exécution de la demande donnée en paramètre. - * - * Cette méthode doit être exécutée sur la base cible. - * @param copySqlCodes les codes sql de recopie - * @param deleteSqlCodes les codes sql de suppression - */ - @ReadDataPermission - @WriteDataPermission - @Write - @PostRequest - void executeRequest(byte[][] copySqlCodes, byte[][] deleteSqlCodes); - -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeCopyTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeCopyTask.java deleted file mode 100644 index 3f18f6d..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeCopyTask.java +++ /dev/null @@ -1,14 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.data.task; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class DataSynchronizeCopyTask extends DataSynchronizeTaskSupport { - - public DataSynchronizeCopyTask(String programId, String tripId) { - super(programId, tripId); - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeDeleteTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeDeleteTask.java deleted file mode 100644 index 8701d52..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeDeleteTask.java +++ /dev/null @@ -1,14 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.data.task; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class DataSynchronizeDeleteTask extends DataSynchronizeTaskSupport { - - public DataSynchronizeDeleteTask(String programId, String tripId) { - super(programId, tripId); - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/DeleteTripRequest.java similarity index 51% copy from observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java copy to observe-services-api/src/main/java/fr/ird/observe/services/service/trip/DeleteTripRequest.java index 7f5bb14..566e960 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/DeleteTripRequest.java @@ -1,23 +1,17 @@ -package fr.ird.observe.services.service.actions.synchro.data.task; +package fr.ird.observe.services.service.trip; /** - * Created on 08/08/16. + * Created on 27/08/16. * * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public abstract class DataSynchronizeTaskSupport { +public class DeleteTripRequest { - /** - * Identifiant du programme de la marée. - */ private final String programId; - /** - * Identifiant de la marée. - */ private final String tripId; - protected DataSynchronizeTaskSupport(String programId, String tripId) { + public DeleteTripRequest(String programId, String tripId) { this.programId = programId; this.tripId = tripId; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/DeleteTripResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/DeleteTripResult.java new file mode 100644 index 0000000..b15297d --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/DeleteTripResult.java @@ -0,0 +1,26 @@ +package fr.ird.observe.services.service.trip; + +/** + * Created on 27/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DeleteTripResult { + + private final DeleteTripRequest request; + private final long time; + + public DeleteTripResult(DeleteTripRequest request, long time) { + this.request = request; + this.time = time; + } + + public DeleteTripRequest getRequest() { + return request; + } + + public long getTime() { + return time; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripRequest.java similarity index 51% rename from observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java rename to observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripRequest.java index 7f5bb14..af83579 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripRequest.java @@ -1,23 +1,17 @@ -package fr.ird.observe.services.service.actions.synchro.data.task; +package fr.ird.observe.services.service.trip; /** - * Created on 08/08/16. + * Created on 27/08/16. * * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public abstract class DataSynchronizeTaskSupport { +public class ExportTripRequest { - /** - * Identifiant du programme de la marée. - */ private final String programId; - /** - * Identifiant de la marée. - */ private final String tripId; - protected DataSynchronizeTaskSupport(String programId, String tripId) { + public ExportTripRequest(String programId, String tripId) { this.programId = programId; this.tripId = tripId; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripResult.java new file mode 100644 index 0000000..23088b6 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripResult.java @@ -0,0 +1,51 @@ +package fr.ird.observe.services.service.trip; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.service.ObserveBlobsContainer; + +/** + * Created on 27/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class ExportTripResult { + + private final String programId; + private final String tripId; + private final byte[] sqlContent; + private final ImmutableSet<ObserveBlobsContainer> blobsContainers; + private final long time; + + public ExportTripResult(ExportTripRequest request, + byte[] sqlContent, + ImmutableSet<ObserveBlobsContainer> blobsContainers, + long time) { + this.programId = request.getProgramId(); + this.tripId = request.getTripId(); + this.sqlContent = sqlContent; + this.blobsContainers = blobsContainers; + this.time = time; + } + + public String getProgramId() { + return programId; + } + + public String getTripId() { + return tripId; + } + + public byte[] getSqlContent() { + return sqlContent; + } + + public ImmutableSet<ObserveBlobsContainer> getBlobsContainers() { + return blobsContainers; + } + + public long getTime() { + return time; + } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripsRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripsRequest.java deleted file mode 100644 index 6bfa26e..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripsRequest.java +++ /dev/null @@ -1,98 +0,0 @@ -package fr.ird.observe.services.service.trip; - -/*- - * #%L - * ObServe :: Services API - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; - -import java.util.Iterator; -import java.util.Objects; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ExportTripsRequest implements Iterable<ExportTripsRequest.ExportTripRequest> { - - public static Builder builder(boolean forPg) { - return new Builder(forPg); - } - - public static class Builder { - - private final ImmutableSet.Builder<ExportTripRequest> trips = ImmutableSet.builder(); - - private final boolean forPg; - - public Builder(boolean forPg) { - this.forPg = forPg; - } - - public Builder addTripToExport(String tripId) { - trips.add(new ExportTripRequest(tripId)); - return this; - } - - public ExportTripsRequest build() { - return new ExportTripsRequest(trips.build()); - } - - } - - private final ImmutableSet<ExportTripRequest> tripsToExport; - - @Override - public Iterator<ExportTripRequest> iterator() { - return tripsToExport.iterator(); - } - - private ExportTripsRequest(ImmutableSet<ExportTripRequest> tripsToExport) { - this.tripsToExport = tripsToExport; - } - - public static class ExportTripRequest { - - private final String tripId; - - public ExportTripRequest(String tripId) { - this.tripId = tripId; - } - - public String getTripId() { - return tripId; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ExportTripRequest that = (ExportTripRequest) o; - return Objects.equals(getTripId(), that.getTripId()); - } - - @Override - public int hashCode() { - return Objects.hash(getTripId()); - } - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripsResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripsResult.java deleted file mode 100644 index b0995c3..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripsResult.java +++ /dev/null @@ -1,121 +0,0 @@ -package fr.ird.observe.services.service.trip; - -/*- - * #%L - * ObServe :: Services API - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; -import fr.ird.observe.services.service.ObserveBlobsContainer; - -import java.util.Iterator; -import java.util.Objects; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ExportTripsResult implements Iterable<ExportTripsResult.ExportTripResult> { - - public static ExportTripsRequestBuilder builder() { - return new ExportTripsRequestBuilder(); - } - - public static class ExportTripsRequestBuilder { - - private final ImmutableSet.Builder<ExportTripResult> trips = ImmutableSet.builder(); - - public ExportTripsRequestBuilder addTripToReplicate(ExportTripsRequest.ExportTripRequest request, - byte[] sqlContent, - ImmutableSet<ObserveBlobsContainer> blobsContainers, - long time) { - trips.add(new ExportTripResult(request, sqlContent, blobsContainers, time)); - return this; - } - - public ExportTripsResult build() { - return new ExportTripsResult(trips.build()); - } - - } - - public static class ExportTripResult { - - private final ExportTripsRequest.ExportTripRequest request; - private final byte[] sqlContent; - private final ImmutableSet<ObserveBlobsContainer> blobsContainers; - private final long time; - - public ExportTripResult(ExportTripsRequest.ExportTripRequest request, - byte[] sqlContent, - ImmutableSet<ObserveBlobsContainer> blobsContainers, - long time) { - this.request = request; - this.sqlContent = sqlContent; - this.blobsContainers = blobsContainers; - this.time = time; - } - - public ExportTripsRequest.ExportTripRequest getRequest() { - return request; - } - - public byte[] getSqlContent() { - return sqlContent; - } - - public ImmutableSet<ObserveBlobsContainer> getBlobsContainers() { - return blobsContainers; - } - - public long getTime() { - return time; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ExportTripResult that = (ExportTripResult) o; - return Objects.equals(getRequest(), that.getRequest()); - } - - @Override - public int hashCode() { - return Objects.hash(getRequest()); - } - - public ImportTripsRequest.ImportTripRequest toImportRequest() { - return new ImportTripsRequest.ImportTripRequest(request.getTripId(), sqlContent, blobsContainers); - } - } - - private final ImmutableSet<ExportTripResult> exportedTrips; - - @Override - public Iterator<ExportTripResult> iterator() { - return exportedTrips.iterator(); - } - - private ExportTripsResult(ImmutableSet<ExportTripResult> exportedTrips) { - this.exportedTrips = exportedTrips; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripRequest.java new file mode 100644 index 0000000..9b18c90 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripRequest.java @@ -0,0 +1,42 @@ +package fr.ird.observe.services.service.trip; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.service.ObserveBlobsContainer; + +/** + * Created on 27/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class ImportTripRequest { + + private final String programId; + private final String tripId; + private final byte[] sqlContent; + private final ImmutableSet<ObserveBlobsContainer> blobsContainers; + + public ImportTripRequest(ExportTripResult exportTripResult) { + this.programId = exportTripResult.getProgramId(); + this.tripId = exportTripResult.getTripId(); + this.sqlContent = exportTripResult.getSqlContent(); + this.blobsContainers = exportTripResult.getBlobsContainers(); + } + + public String getProgramId() { + return programId; + } + + public String getTripId() { + return tripId; + } + + public byte[] getSqlContent() { + return sqlContent; + } + + public ImmutableSet<ObserveBlobsContainer> getBlobsContainers() { + return blobsContainers; + } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripResult.java new file mode 100644 index 0000000..4edf781 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripResult.java @@ -0,0 +1,51 @@ +package fr.ird.observe.services.service.trip; + +/** + * Created on 27/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ImportTripResult { + + private final String programId; + private final String tripId; + + private final boolean imported; + private final boolean deleted; + + private final long deleteTime; + private final long importTime; + + public ImportTripResult(ImportTripRequest request, boolean imported, long importTime, boolean deleted, long deleteTime) { + this.programId = request.getProgramId(); + this.tripId = request.getTripId(); + this.imported = imported; + this.deleted = deleted; + this.importTime = importTime; + this.deleteTime = deleteTime; + } + + public String getProgramId() { + return programId; + } + + public String getTripId() { + return tripId; + } + + public boolean isDeleted() { + return deleted; + } + + public boolean isImported() { + return imported; + } + + public long getImportTime() { + return importTime; + } + + public long getDeleteTime() { + return deleteTime; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripService.java deleted file mode 100644 index 5e4594a..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripService.java +++ /dev/null @@ -1,43 +0,0 @@ -package fr.ird.observe.services.service.trip; - -/*- - * #%L - * ObServe :: Services API - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.spi.PostRequest; -import fr.ird.observe.services.spi.Write; -import fr.ird.observe.services.spi.WriteDataPermission; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public interface ImportTripService extends ObserveService { - - @WriteDataPermission - @PostRequest - @Write - ImportTripsResult importTrips(ImportTripsRequest importRequest); - -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripsRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripsRequest.java deleted file mode 100644 index 8671bd2..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripsRequest.java +++ /dev/null @@ -1,105 +0,0 @@ -package fr.ird.observe.services.service.trip; - -/*- - * #%L - * ObServe :: Services API - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; -import fr.ird.observe.services.service.ObserveBlobsContainer; - -import java.util.Iterator; -import java.util.Objects; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ImportTripsRequest implements Iterable<ImportTripsRequest.ImportTripRequest> { - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - - private final ImmutableSet.Builder<ImportTripRequest> tripIds = ImmutableSet.builder(); - - public Builder addTripToImport(ImportTripRequest importTripRequest) { - tripIds.add(importTripRequest); - return this; - } - - public ImportTripsRequest build() { - return new ImportTripsRequest(tripIds.build()); - } - - } - - public static class ImportTripRequest { - - private final String tripId; - private final byte[] sqlContent; - private final ImmutableSet<ObserveBlobsContainer> blobsContainers; - - protected ImportTripRequest(String tripId, byte[] sqlContent, ImmutableSet<ObserveBlobsContainer> blobsContainers) { - this.tripId = tripId; - this.sqlContent = sqlContent; - this.blobsContainers = blobsContainers; - } - - public String getTripId() { - return tripId; - } - - public byte[] getSqlContent() { - return sqlContent; - } - - public ImmutableSet<ObserveBlobsContainer> getBlobsContainers() { - return blobsContainers; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ImportTripRequest that = (ImportTripRequest) o; - return Objects.equals(getTripId(), that.getTripId()); - } - - @Override - public int hashCode() { - return Objects.hash(getTripId()); - } - } - - private final ImmutableSet<ImportTripRequest> tripIds; - - @Override - public Iterator<ImportTripRequest> iterator() { - return tripIds.iterator(); - } - - private ImportTripsRequest(ImmutableSet<ImportTripRequest> tripIds) { - this.tripIds = tripIds; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripsResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripsResult.java deleted file mode 100644 index 4bbe01d..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ImportTripsResult.java +++ /dev/null @@ -1,93 +0,0 @@ -package fr.ird.observe.services.service.trip; - -/*- - * #%L - * ObServe :: Services API - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; - -import java.util.Iterator; - -/** - * Le résultat de l'export de plusieurs marées. - * - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ImportTripsResult implements Iterable<ImportTripsResult.ImportTripResult> { - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - - private final ImmutableSet.Builder<ImportTripResult> trips = ImmutableSet.builder(); - - public Builder addTripResult(String tripId, boolean deleted, long time) { - trips.add(new ImportTripResult(tripId, deleted, time)); - return this; - } - - public ImportTripsResult build() { - - return new ImportTripsResult(trips.build()); - } - - } - - public static class ImportTripResult { - - private final String tripId; - - private final boolean deleted; - - private final long time; - - public ImportTripResult(String tripId, boolean deleted, long time) { - this.tripId = tripId; - this.deleted = deleted; - this.time = time; - } - - public String getTripId() { - return tripId; - } - - public boolean isDeleted() { - return deleted; - } - - } - - private final ImmutableSet<ImportTripResult> trips; - - @Override - public Iterator<ImportTripResult> iterator() { - return trips.iterator(); - } - - private ImportTripsResult(ImmutableSet<ImportTripResult> trips) { - this.trips = trips; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/TripManagementService.java similarity index 72% rename from observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/service/trip/TripManagementService.java index 3236cca..09a3981 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/ExportTripService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/trip/TripManagementService.java @@ -26,6 +26,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.ReadReferentialPermission; +import fr.ird.observe.services.spi.Write; +import fr.ird.observe.services.spi.WriteDataPermission; /** * Created on 20/07/16. @@ -33,11 +35,21 @@ import fr.ird.observe.services.spi.ReadReferentialPermission; * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public interface ExportTripService extends ObserveService { +public interface TripManagementService extends ObserveService { @ReadDataPermission @ReadReferentialPermission @PostRequest - ExportTripsResult exportTrips(ExportTripsRequest exportRequest); + ExportTripResult exportTrip(ExportTripRequest exportRequest); + + @WriteDataPermission + @PostRequest + @Write + DeleteTripResult deleteTrip(DeleteTripRequest request); + + @WriteDataPermission + @PostRequest + @Write + ImportTripResult importTrip(ImportTripRequest request); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeServiceTopia.java deleted file mode 100644 index a18483a..0000000 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeServiceTopia.java +++ /dev/null @@ -1,108 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.data; - -import com.google.common.collect.ImmutableSet; -import fr.ird.observe.entities.Entities; -import fr.ird.observe.services.ObserveServiceContextTopia; -import fr.ird.observe.services.ObserveServiceTopia; -import fr.ird.observe.services.service.AddSqlScriptProducerRequest; -import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; -import fr.ird.observe.services.service.SqlScriptProducerService; -import fr.ird.observe.services.service.actions.synchro.data.task.DataSynchronizeCopyTask; -import fr.ird.observe.services.service.actions.synchro.data.task.DataSynchronizeDeleteTask; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.Collection; -import java.util.LinkedHashSet; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class DataSynchronizeServiceTopia extends ObserveServiceTopia implements DataSynchronizeService { - - /** Logger. */ - private static final Log log = LogFactory.getLog(DataSynchronizeServiceTopia.class); - - protected SqlScriptProducerService sqlScriptProducerService; - - @Override - public void setServiceContext(ObserveServiceContextTopia serviceContext) { - super.setServiceContext(serviceContext); - sqlScriptProducerService = serviceContext.newService(SqlScriptProducerService.class); - } - - @Override - public byte[][] getCopySqlCodes(DataSynchronizeRequest request) { - - Collection<byte[]> sqlCodeBuilder = new LinkedHashSet<>(); - - for (DataSynchronizeCopyTask task : request.getCopyTasks()) { - - if (log.isInfoEnabled()) { - log.info("Obtain trip sql copy content: " + task.getProgramId() + " / " + task.getTripId()); - } - - // get the data content - - AddSqlScriptProducerRequest sqlRequest; - if (request.isOppositeH2()) { - sqlRequest = AddSqlScriptProducerRequest.forH2(); - } else { - sqlRequest = AddSqlScriptProducerRequest.forPostgres(); - } - sqlRequest.dataIdsToAdd(ImmutableSet.of(task.getTripId())); - byte[] sqlScript = sqlScriptProducerService.produceAddSqlScript(sqlRequest).getSqlCode(); - - sqlCodeBuilder.add(sqlScript); - - } - - return sqlCodeBuilder.toArray(new byte[sqlCodeBuilder.size()][]); - - } - - @Override - public byte[][] getDeleteSqlCodes(DataSynchronizeRequest request) { - - Collection<byte[]> sqlCodeBuilder = new LinkedHashSet<>(); - for (DataSynchronizeDeleteTask task : request.getDeleteTasks()) { - - String tripId = task.getTripId(); - boolean longlineId = Entities.isLonglineId(tripId); - - if (log.isInfoEnabled()) { - log.info("Obtain trip sql delete content: " + task.getProgramId() + " / " + task.getTripId()); - } - - // get the data content - - DeleteSqlScriptProducerRequest sqlRequest; - if (request.isH2()) { - sqlRequest = DeleteSqlScriptProducerRequest.forH2(); - } else { - sqlRequest = DeleteSqlScriptProducerRequest.forPostgres(); - } - sqlRequest.dataIdsToDelete(ImmutableSet.of(task.getTripId())); - byte[] sqlScript = sqlScriptProducerService.produceDeleteSqlScript(sqlRequest); - - sqlCodeBuilder.add(sqlScript); - - } - - return sqlCodeBuilder.toArray(new byte[sqlCodeBuilder.size()][]); - } - - @Override - public void executeRequest(byte[][] copySqlCodes, byte[][] deleteSqlCodes) { - - byte[][] sqlCodes = new byte[copySqlCodes.length + deleteSqlCodes.length][]; - System.arraycopy(copySqlCodes, 0, sqlCodes, 0, copySqlCodes.length); - System.arraycopy(deleteSqlCodes, 0, sqlCodes, copySqlCodes.length, deleteSqlCodes.length); - - serviceContext.getTopiaPersistenceContext().executeSqlScripts(sqlCodes); - - } -} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/ExportTripServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/ExportTripServiceTopia.java deleted file mode 100644 index f631993..0000000 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/ExportTripServiceTopia.java +++ /dev/null @@ -1,77 +0,0 @@ -package fr.ird.observe.services.service.trip; - -/*- - * #%L - * ObServe :: Services ToPIA Implementation - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; -import fr.ird.observe.services.ObserveServiceTopia; -import fr.ird.observe.services.service.AddSqlScriptProducerRequest; -import fr.ird.observe.services.service.AddSqlScriptProducerResult; -import fr.ird.observe.services.service.ObserveBlobsContainer; -import fr.ird.observe.services.service.SqlScriptProducerService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ExportTripServiceTopia extends ObserveServiceTopia implements ExportTripService { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ExportTripServiceTopia.class); - - @Override - public ExportTripsResult exportTrips(ExportTripsRequest exportRequest) { - - SqlScriptProducerService sqlScriptProducerService = serviceContext.newService(SqlScriptProducerService.class); - - ExportTripsResult.ExportTripsRequestBuilder resultBuilder = ExportTripsResult.builder(); - - for (ExportTripsRequest.ExportTripRequest exportTripRequest : exportRequest) { - - long t0 = System.nanoTime(); - - String tripId = exportTripRequest.getTripId(); - - if (log.isInfoEnabled()) { - log.info("Start export of trip: " + tripId); - } - - AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().dataIdsToAdd(ImmutableSet.of(tripId)); - - AddSqlScriptProducerResult producerResult = sqlScriptProducerService.produceAddSqlScript(request); - byte[] tripContent = producerResult.getSqlCode(); - ImmutableSet<ObserveBlobsContainer> blobsContainers = producerResult.getBlobsContainers(); - - long time = System.nanoTime() - t0; - resultBuilder.addTripToReplicate(exportTripRequest, tripContent, blobsContainers, time); - - } - - return resultBuilder.build(); - - } - -} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/ImportTripServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/ImportTripServiceTopia.java deleted file mode 100644 index fcb1172..0000000 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/ImportTripServiceTopia.java +++ /dev/null @@ -1,121 +0,0 @@ -package fr.ird.observe.services.service.trip; - -/*- - * #%L - * ObServe :: Services ToPIA Implementation - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; -import fr.ird.observe.ObserveTopiaPersistenceContext; -import fr.ird.observe.services.ObserveServiceTopia; -import fr.ird.observe.services.dto.IdDtos; -import fr.ird.observe.services.service.ObserveBlobsContainer; -import fr.ird.observe.services.service.longline.TripLonglineService; -import fr.ird.observe.services.service.seine.TripSeineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ImportTripServiceTopia extends ObserveServiceTopia implements ImportTripService { - - /** Logger. */ - private static final Log log = LogFactory.getLog(ImportTripServiceTopia.class); - - @Override - public ImportTripsResult importTrips(ImportTripsRequest importTripsRequest) { - - TripSeineService tripSeineService = serviceContext.newService(TripSeineService.class); - TripLonglineService tripLonglineService = serviceContext.newService(TripLonglineService.class); - - ImportTripsResult.Builder resultBuilder = ImportTripsResult.builder(); - - try (ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaApplicationContext().newPersistenceContext()) { - - for (ImportTripsRequest.ImportTripRequest importTripRequest : importTripsRequest) { - - String tripId = importTripRequest.getTripId(); - - if (log.isInfoEnabled()) { - log.info("Start import of trip: " + tripId); - } - - long t0 = System.nanoTime(); - - // check if trip exist - - boolean deleteBeforeImport; - - if (IdDtos.isTripSeineId(tripId)) { - - deleteBeforeImport = tripSeineService.exists(tripId); - - if (deleteBeforeImport) { - - //FIXME Do not use this, prefer usage of topai SqlBatchService - tripSeineService.delete(tripId); - - } - - } else if (IdDtos.isTripLonglineId(tripId)) { - - deleteBeforeImport = tripLonglineService.exists(tripId); - - if (deleteBeforeImport) { - - //FIXME Do not use this, prefer usage of topai SqlBatchService - tripLonglineService.delete(tripId); - - } - - } else { - throw new IllegalStateException("Can't come here!"); - } - - ImmutableSet<ObserveBlobsContainer> blobsContainers = importTripRequest.getBlobsContainers(); - - if (blobsContainers.isEmpty()) { - - persistenceContext.executeSqlScript(importTripRequest.getSqlContent()); - - } else { - - persistenceContext.getSqlSupport().doSqlWork(new ImportTripScriptTopiaSqlWork(1000, importTripRequest.getSqlContent(), blobsContainers)); - - } - - long time = System.nanoTime() - t0; - resultBuilder.addTripResult(tripId, deleteBeforeImport, time); - - } - - persistenceContext.commit(); - - } - - return resultBuilder.build(); - - } - -} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/TripManagementServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/TripManagementServiceTopia.java new file mode 100644 index 0000000..6bc4d99 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/trip/TripManagementServiceTopia.java @@ -0,0 +1,207 @@ +package fr.ird.observe.services.service.trip; + +/*- + * #%L + * ObServe :: Services ToPIA Implementation + * %% + * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.ObserveTopiaPersistenceContext; +import fr.ird.observe.services.ObserveServiceContextTopia; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerResult; +import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; +import fr.ird.observe.services.service.ObserveBlobsContainer; +import fr.ird.observe.services.service.SqlScriptProducerService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.StringUtil; + +import java.util.Set; +import java.util.TreeSet; + +/** + * Created on 20/07/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class TripManagementServiceTopia extends ObserveServiceTopia implements TripManagementService { + + /** Logger. */ + private static final Log log = LogFactory.getLog(TripManagementServiceTopia.class); + + private SqlScriptProducerService sqlScriptProducerService; + + @Override + public void setServiceContext(ObserveServiceContextTopia serviceContext) { + super.setServiceContext(serviceContext); + sqlScriptProducerService = serviceContext.newService(SqlScriptProducerService.class); + } + + @Override + public ExportTripResult exportTrip(ExportTripRequest exportRequest) { + + SqlScriptProducerService sqlScriptProducerService = serviceContext.newService(SqlScriptProducerService.class); + + long t0 = System.nanoTime(); + + String tripId = exportRequest.getTripId(); + + if (log.isInfoEnabled()) { + log.info("Start export of trip: " + tripId); + } + + //FIXME Get real database type + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().dataIdsToAdd(ImmutableSet.of(tripId)); + + AddSqlScriptProducerResult producerResult = sqlScriptProducerService.produceAddSqlScript(request); + byte[] tripContent = producerResult.getSqlCode(); + ImmutableSet<ObserveBlobsContainer> blobsContainers = producerResult.getBlobsContainers(); + + long time = System.nanoTime() - t0; + + return new ExportTripResult(exportRequest, tripContent, blobsContainers, time); + + } + + @Override + public DeleteTripResult deleteTrip(DeleteTripRequest request) { + + try (ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaApplicationContext().newPersistenceContext()) { + + Set<String> tripSeineIds = new TreeSet<>(persistenceContext.getTripSeineDao().findAllIds()); + Set<String> tripLonglineIds = new TreeSet<>(persistenceContext.getTripLonglineDao().findAllIds()); + + String tripId = request.getTripId(); + + long t0 = System.nanoTime(); + + boolean deleted = deleteTrip(persistenceContext, tripId, tripSeineIds, tripLonglineIds); + + if (deleted) { + + long time = System.nanoTime() - t0; + if (log.isInfoEnabled()) { + log.info("Delete of trip: " + tripId + " done in " + StringUtil.convertTime(time)); + } + + return new DeleteTripResult(request, time); + + } + + } + + return null; + + } + + @Override + public ImportTripResult importTrip(ImportTripRequest request) { + + try (ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaApplicationContext().newPersistenceContext()) { + + Set<String> tripSeineIds = new TreeSet<>(persistenceContext.getTripSeineDao().findAllIds()); + Set<String> tripLonglineIds = new TreeSet<>(persistenceContext.getTripLonglineDao().findAllIds()); + + String tripId = request.getTripId(); + + long t0 = System.nanoTime(); + + boolean deleted = deleteTrip(persistenceContext, tripId, tripSeineIds, tripLonglineIds); + + long t1 = System.nanoTime(); + + long deleteTime = 0; + if (deleted) { + + deleteTime = System.nanoTime() - t0; + if (log.isInfoEnabled()) { + log.info("Delete of trip: " + tripId + " done in " + StringUtil.convertTime(deleteTime)); + } + + } + + if (log.isInfoEnabled()) { + log.info("Start import of trip: " + request.getTripId()); + } + + ImmutableSet<ObserveBlobsContainer> blobsContainers = request.getBlobsContainers(); + + if (blobsContainers.isEmpty()) { + + persistenceContext.executeSqlScript(request.getSqlContent()); + + } else { + + persistenceContext.getSqlSupport().doSqlWork(new ImportTripScriptTopiaSqlWork(1000, request.getSqlContent(), blobsContainers)); + + } + + long t2 = System.nanoTime(); + + if (log.isInfoEnabled()) { + log.info("Import of trip: " + tripId + " done in " + StringUtil.convertTime(t1, t2)); + } + + return new ImportTripResult(request, true, t1 - t0, deleted, deleteTime); + + } + + } + + private boolean deleteTrip(ObserveTopiaPersistenceContext persistenceContext, String tripId, Set<String> tripSeineIds, Set<String> tripLonglineIds) { + + long t0 = System.nanoTime(); + + boolean isTripSeineId = IdDtos.isTripSeineId(tripId); + boolean deleted = (isTripSeineId && tripSeineIds.contains(tripId)) || tripLonglineIds.contains(tripId); + + if (deleted) { + + if (log.isInfoEnabled()) { + log.info("Start delete of trip: " + tripId); + } + + DeleteSqlScriptProducerRequest sqlRequest = DeleteSqlScriptProducerRequest.builder() + .dataIdsToDelete(ImmutableSet.of(tripId)); + byte[] sqlScript = sqlScriptProducerService.produceDeleteSqlScript(sqlRequest); + + persistenceContext.executeSqlScript(sqlScript); + + if (log.isInfoEnabled()) { + log.info("Delete of trip: " + tripId + " done in " + StringUtil.convertTime(t0, System.nanoTime())); + } + + if (isTripSeineId) { + tripSeineIds.remove(tripId); + } else { + tripLonglineIds.remove(tripId); + } + + } + + return deleted; + + } + +} -- 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/deal_with_blobs in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 7540dc0437b98d269cbb024e4a1f358fc14dac3b Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Aug 27 12:06:40 2016 +0200 Use a parameter to fix read lock timeout --- .../main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java index 5d65438..16fa13d 100644 --- a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java +++ b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java @@ -78,7 +78,9 @@ public class ObserveTopiaConfigurationFactory { // on system.out: 0=off, 1=error, 2=info, 3=debug. "TRACE_LEVEL_SYSTEM_OUT=0;" + // maximumn cache to improve performance... - "CACHE_SIZE=65536"; + "CACHE_SIZE=65536;" + + // avoid timeout on reading tables (see http://stackoverflow.com/questions/4162557/timeout-error-trying-to-lock-tabl...) + "MVCC=true"; protected static final JdbcConfigurationBuilder JDBC_CONFIGURATION_BUILDER = new JdbcConfigurationBuilder(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm