branch develop updated (c3f6abd -> 0aa66ab)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from c3f6abd Réduit la plage d'erreur gérées par l'exception ObserveServiceRestNotAvailableException car on masque certains messages d'erreur new 47102cb Set data provider to cell renderer when present new 0ba9286 fix NPE if no trip found for a program new e3b7181 UI for data synchronize action new 2194ff2 more decoration methods new 6012e89 Continue ui for data synchronize action new d5fb3d4 debut de gestion de la prise en compte des marées présentes des deux cotés lors d'une recopie new c1cee17 Début d'implantation de la logique de synchronisation de données new f68a088 Meilleure utilisation des déclarations de service new 3dc6ce0 Make delete actions works new 7b3d335 Introduce delete request in SqlScriptProducerService new 325892a Add more logs new a747c82 use now delete from sql producer instead of hibernate delete new 1b76319 Rename test new d7ad52e Ajout de plus de messages de préparation des tâches à executer new fb3465f Check if classes are implemented new cb053ba Fix bad class name new d281360 Fix layout + add action icons new 2709614 introduce services provider contract new 16d28d4 Improve exception handler new f54a610 make the test works again new d1a1527 add rest service new 06024e3 Sanitize the application context, introduce DataSourcesManager, clean code a lot new ce3b308 Improve tasks renderer new 0aa66ab Fixes #4304 \o/ Merge branch 'feature/4304_synchro_marees' into develop The 24 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 0aa66abdad6ff3052c1648b6ac1479c237e90e89 Merge: c3f6abd ce3b308 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:53:18 2016 +0200 Fixes #4304 \o/ Merge branch 'feature/4304_synchro_marees' into develop commit ce3b308c4d20e17958964700ffe1f25f308ba127 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:52:13 2016 +0200 Improve tasks renderer commit 06024e398f99496fb59aae43c796122c7379eba6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:42:08 2016 +0200 Sanitize the application context, introduce DataSourcesManager, clean code a lot commit d1a15274acba4f48994ea35ac466058488be4935 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:41:26 2016 +0200 add rest service commit f54a6106d355f286c1e42f0acfa0e8ee514cd3d7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:41:14 2016 +0200 make the test works again commit 16d28d4c3ca0dd3aa9b83a3c7f2a3cee0c233a52 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:40:32 2016 +0200 Improve exception handler commit 2709614ff71714af22606bcf40db878e22530114 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:39:57 2016 +0200 introduce services provider contract commit d2813606492e0ef920fe89464d7024b3cf1c7ef9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:39:38 2016 +0200 Fix layout + add action icons commit cb053baaad6490acc3bef11b4f0bb2352ad0029a Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:38:13 2016 +0200 Fix bad class name commit fb3465fcbe3d00aea018a40b29768ad2984109e9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:11:50 2016 +0200 Check if classes are implemented commit d7ad52eb0e99aee1748d6974b7087231cd37b3b5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 16:17:55 2016 +0200 Ajout de plus de messages de préparation des tâches à executer commit 1b76319d55d3fc32479770a3bd4d2a36e4b1a1ba Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:59:26 2016 +0200 Rename test commit a747c8225ae4166bdb6fdb243cb9e86b7b9a7bf9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:50 2016 +0200 use now delete from sql producer instead of hibernate delete commit 325892a388a64041f06ab5ce86d9c25e3fb68bc6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:30 2016 +0200 Add more logs commit 7b3d335ae09b5e9e76cf68d07c92a52f6b684552 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:20 2016 +0200 Introduce delete request in SqlScriptProducerService commit 3dc6ce0aeae64d2bf50f3fe206cc7b077f464fd5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:56:27 2016 +0200 Make delete actions works commit f68a088128dcbac272d85c19dc6e65c5d9b8c4d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 12:08:09 2016 +0200 Meilleure utilisation des déclarations de service commit c1cee17e2b11b2230a92ba8a28adc0f7251175a7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 12:08:05 2016 +0200 Début d'implantation de la logique de synchronisation de données commit d5fb3d4af7aa5f3aa003ca2313010fd5ad4de6a7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 11:35:44 2016 +0200 debut de gestion de la prise en compte des marées présentes des deux cotés lors d'une recopie commit 6012e8927d9ba8f60943e03b48fe52eaf17bf5be Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 3 12:33:28 2016 +0200 Continue ui for data synchronize action commit 2194ff2cd4542698e6ca1195eb6f3098c4e54731 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 3 12:33:14 2016 +0200 more decoration methods commit e3b7181a75318c871b39513055120a426551e870 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 2 17:37:26 2016 +0200 UI for data synchronize action commit 0ba9286a57c80197a67ca6244ac07b67705a36bf Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 2 17:37:03 2016 +0200 fix NPE if no trip found for a program commit 47102cbd0cb790d7609901861adfe76b8debefee Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 2 17:36:23 2016 +0200 Set data provider to cell renderer when present Summary of changes: .../swing/decoration/DecoratorService.java | 10 + .../src/main/filters/observe-ui.properties | 4 + .../java/fr/ird/observe/ObserveActionExecutor.java | 20 +- .../main/java/fr/ird/observe/ObserveCLAction.java | 23 +- .../fr/ird/observe/ObserveOpenDataManager.java | 65 ++ .../main/java/fr/ird/observe/ObserveRunner.java | 91 +- .../observe/ObserveSwingApplicationContext.java | 999 ++++++++------------- .../ObserveSwingApplicationDataSourcesManager.java | 108 +++ .../fr/ird/observe/db/ObserveSwingDataSource.java | 276 +++++- .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 18 +- .../main/java/fr/ird/observe/ui/ObserveMainUI.jcss | 4 + .../fr/ird/observe/ui/ObserveMainUIHandler.java | 66 +- .../java/fr/ird/observe/ui/ObserveUICallback.java | 7 +- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 12 +- .../actions/ChangeApplicationLanguageAction.java | 2 +- .../observe/ui/actions/ChangeDbLanguageAction.java | 2 +- .../observe/ui/actions/ChangeStorageAction.java | 2 +- .../observe/ui/actions/CloseApplicationAction.java | 2 +- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 2 +- .../ird/observe/ui/actions/CloseStorageAction.java | 4 +- .../ui/actions/ImportStorageFromFileAction.java | 4 +- .../ird/observe/ui/actions/LaunchAdminAction.java | 2 +- .../ui/actions/ReloadApplicationAction.java | 2 +- .../actions/ReloadDefaultConfigurationAction.java | 2 +- .../observe/ui/actions/ReloadResourcesAction.java | 5 +- .../observe/ui/actions/ReloadStorageAction.java | 6 +- .../ui/actions/SaveStorageToFileAction.java | 4 +- .../ird/observe/ui/actions/ShowConfigAction.java | 4 +- .../observe/ui/actions/ShowStorageInfoAction.java | 2 +- .../ui/actions/shared/CloseAndCreateUIAction.java | 8 +- .../ui/actions/shared/CloseOpenUIAction.java | 8 +- .../shared/MoveActivityLonglinesUIAction.java | 2 +- .../actions/shared/MoveActivitySeinesUIAction.java | 2 +- .../ui/actions/shared/MoveRoutesUIAction.java | 2 +- .../actions/shared/MoveTripLonglinesUIAction.java | 2 +- .../ui/actions/shared/MoveTripSeinesUIAction.java | 2 +- .../observe/ui/actions/shared/ReOpenUIAction.java | 2 +- .../ui/actions/shared/SelectOpenNodeUIAction.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminStep.java | 21 + .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 15 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 57 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 6 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 149 ++- .../ui/admin/consolidate/ConsolidateUIHandler.java | 2 +- .../datasynchro/CopyToLeftDataSynchronizeTask.java | 33 + .../CopyToRightDataSynchronizeTask.java | 33 + .../ui/admin/datasynchro/DataSynchroModel.java | 118 +++ .../ui/admin/datasynchro/DataSynchroUI.jaxx | 129 +++ .../ui/admin/datasynchro/DataSynchroUI.jcss | 114 +++ .../ui/admin/datasynchro/DataSynchroUIHandler.java | 300 +++++++ .../DataSynchronizeTaskListCellRenderer.java | 27 + .../datasynchro/DataSynchronizeTaskSupport.java | 56 ++ .../DeleteFromLeftDataSynchronizeTask.java | 25 + .../DeleteFromRightDataSynchronizeTask.java | 25 + .../observe/ui/admin/export/ExportUIHandler.java | 4 +- .../observe/ui/admin/report/ReportUIHandler.java | 4 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 6 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 11 +- .../ird/observe/ui/content/ContentUIHandler.java | 2 +- .../ird/observe/ui/content/ContentUIManager.java | 77 +- .../impl/longline/LonglineDetailCompositionUI.jaxx | 2 +- .../LonglineDetailCompositionUIHandler.java | 12 +- ...onglineDetailCompositionUIValidationHelper.java | 233 ----- ...LonglineDetailCompositionValidationContext.java | 116 +++ .../LonglineDetailCompositionValidatorService.java | 155 ++++ .../impl/longline/LonglineGlobalCompositionUI.jaxx | 8 +- .../LonglineGlobalCompositionUIHandler.java | 3 +- .../impl/longline/SetLonglineUIHandler.java | 2 +- .../ActivitySeineObservedSystemUIHandler.java | 2 +- ...ngObjectTransmittingBuoyOperationUIHandler.java | 2 +- .../impl/seine/FloatingObjectUIHandler.java | 2 +- .../ui/content/impl/seine/SetSeineUIHandler.java | 4 +- .../impl/longline/ActivityLonglinesUIHandler.java | 2 +- .../list/impl/longline/TripLonglinesUIHandler.java | 2 +- .../list/impl/seine/ActivitySeinesUIHandler.java | 2 +- .../content/list/impl/seine/RoutesUIHandler.java | 2 +- .../list/impl/seine/TripSeinesUIHandler.java | 2 +- .../impl/longline/ActivityLonglineUIHandler.java | 2 +- .../open/impl/longline/TripLonglineUIHandler.java | 4 +- .../open/impl/seine/ActivitySeineUIHandler.java | 2 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 4 +- .../open/impl/seine/TripSeineUIHandler.java | 4 +- .../ui/content/ref/ContentReferenceUIHandler.java | 2 +- .../ui/content/table/ContentTableUIHandler.java | 4 +- .../impl/longline/CatchLonglineUIHandler.java | 10 +- .../table/impl/longline/EncounterUIHandler.java | 4 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 6 +- .../table/impl/longline/SensorUsedUIHandler.java | 4 +- .../content/table/impl/longline/TdrUIHandler.java | 6 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 6 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 4 +- .../table/impl/seine/NonTargetSampleUIHandler.java | 2 +- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 4 +- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 4 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 4 +- .../table/impl/seine/TargetCatchUIHandler.java | 4 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 4 +- .../table/impl/seine/TargetSampleUIHandler.java | 2 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 16 +- .../ui/storage/StorageBackupUILauncher.java | 4 +- .../ird/observe/ui/storage/StorageUIHandler.java | 48 +- .../ird/observe/ui/storage/StorageUILauncher.java | 11 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 70 +- .../observe/ui/storage/tabs/ChooseDbModeUI.jaxx | 13 +- .../ui/storage/tabs/DataSelectionModel.java | 42 +- .../ui/storage/tabs/StorageTabUIHandler.java | 3 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 2 +- .../ird/observe/ui/tree/ActivityLonglineNode.java | 2 +- .../fr/ird/observe/ui/tree/ActivitySeineNode.java | 2 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 2 +- .../observe/ui/tree/FloatingObjectSeineNode.java | 2 +- .../ui/tree/NavigationTreeSelectionModel.java | 2 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 8 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 87 +- .../ird/observe/ui/tree/ProgramLonglineNode.java | 2 +- .../fr/ird/observe/ui/tree/ProgramSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/RouteSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/SetLonglineNode.java | 2 +- .../java/fr/ird/observe/ui/tree/SetSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/TripLonglineNode.java | 2 +- .../java/fr/ird/observe/ui/tree/TripSeineNode.java | 2 +- .../actions/ChangeActivityRouteActionListener.java | 4 +- .../actions/ChangeActivityTripActionListener.java | 2 +- .../actions/ChangeRouteTripActionListener.java | 4 +- .../actions/ChangeTripProgramActionListener.java | 8 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 2 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 2 +- .../loadors/ActivitySeinesNodeChildLoador.java | 2 +- .../loadors/ProgramLonglineNodeChildLoador.java | 9 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 10 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 2 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 4 +- .../observe/validation/ObserveSwingValidator.java | 42 +- .../ird/observe/validation/ValidationContext.java | 40 +- .../observe-application-swing_en_GB.properties | 28 + .../observe-application-swing_es_ES.properties | 28 + .../observe-application-swing_fr_FR.properties | 27 + .../{action-go-back.png => action-copyToLeft.png} | Bin .../main/resources/icons/action-copyToRight.png | Bin 0 -> 349 bytes ...action-delete.png => action-deleteFromLeft.png} | Bin ...ction-delete.png => action-deleteFromRight.png} | Bin ...glineDetailCompositionValidatorServiceTest.java | 107 +-- .../v1/SqlScriptProducerServiceController.java | 11 +- .../DataSynchronizeServiceController.java | 32 + ...er.java => ReplicateTripServiceController.java} | 4 +- .../injector/SqlScriptProducerRequestInjector.java | 12 +- .../maven/plugins/checkapi/CheckApiMojo.java | 29 +- .../plugins/checkapi/MissingClassException.java | 21 + .../java/fr/ird/observe/RunScriptTopiaSqlWork.java | 8 + .../observe/services/ObserveServicesProvider.java | 124 +++ ...quest.java => AddSqlScriptProducerRequest.java} | 20 +- ...st.java => DeleteSqlScriptProducerRequest.java} | 50 +- .../services/service/SqlScriptProducerService.java | 4 +- .../datasynchro/DataSynchronizeCopyTask.java | 27 + .../datasynchro/DataSynchronizeDeleteTask.java | 27 + .../datasynchro/DataSynchronizeRequest.java | 101 +++ .../datasynchro/DataSynchronizeService.java | 52 ++ .../datasynchro/DataSyncrhonizeTaskSupport.java | 26 + .../actions/validate/ValidateServiceUtils.java | 10 +- .../validate/ValidatorInitializationException.java | 14 + .../services/service/DataSourceServiceTopia.java | 22 +- .../service/SqlScriptProducerServiceTopia.java | 84 +- .../datasynchro/DataSynchronizeServiceTopia.java | 115 +++ .../actions/export/ReplicateTripServiceTopia.java | 6 +- ...a => AddSqlScriptProducerServiceTopiaTest.java} | 22 +- .../services/service/MigrateTestsDatabases.java | 24 +- .../sql/batch/actions/AbstractTablesAction.java | 5 +- .../sql/batch/actions/DeleteTablesAction.java | 13 +- .../sql/batch/actions/ReplicateTablesAction.java | 6 + .../sql/batch/actions/UpdateTablesAction.java | 5 + .../service/sql/batch/tables/TopiaSqlTables.java | 11 + 172 files changed, 3489 insertions(+), 1676 deletions(-) create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationDataSourcesManager.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidationContext.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorService.java copy observe-application-swing/src/main/resources/icons/{action-go-back.png => action-copyToLeft.png} (100%) create mode 100644 observe-application-swing/src/main/resources/icons/action-copyToRight.png copy observe-application-swing/src/main/resources/icons/{action-delete.png => action-deleteFromLeft.png} (100%) copy observe-application-swing/src/main/resources/icons/{action-delete.png => action-deleteFromRight.png} (100%) create mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/datasynchro/DataSynchronizeServiceController.java rename observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/export/{ReplicateTripServicecontroller.java => ReplicateTripServiceController.java} (94%) create mode 100644 observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/MissingClassException.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java copy observe-services-api/src/main/java/fr/ird/observe/services/service/{SqlScriptProducerRequest.java => AddSqlScriptProducerRequest.java} (80%) rename observe-services-api/src/main/java/fr/ird/observe/services/service/{SqlScriptProducerRequest.java => DeleteSqlScriptProducerRequest.java} (60%) create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeCopyTask.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSyncrhonizeTaskSupport.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidatorInitializationException.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java rename observe-services-topia/src/test/java/fr/ird/observe/services/service/{SqlScriptProducerServiceTopiaTest.java => AddSqlScriptProducerServiceTopiaTest.java} (70%) -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 47102cbd0cb790d7609901861adfe76b8debefee Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 2 17:36:23 2016 +0200 Set data provider to cell renderer when present --- .../src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index 6da0450..6c28585 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -24,6 +24,8 @@ package fr.ird.observe.ui.tree; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; 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.DataContext; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.DataReference; @@ -40,7 +42,6 @@ import fr.ird.observe.services.dto.seine.FloatingObjectDto; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.dto.seine.SetSeineDto; import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.tree.loadors.AbstractNodeChildLoador; @@ -52,7 +53,6 @@ import fr.ird.observe.ui.tree.loadors.ProgramLonglineNodeChildLoador; import fr.ird.observe.ui.tree.loadors.ProgramSeineNodeChildLoador; import fr.ird.observe.ui.tree.loadors.RootNodeChildLoador; import fr.ird.observe.ui.tree.loadors.RoutesNodeChildLoador; -import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.tree.NavTreeHelper; @@ -194,6 +194,10 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { provider.setSelectionModel(dataModel); provider.setCreating(true); + if (getTreeCellRenderer() != null) { + getTreeCellRenderer().setDataProvider(provider); + } + try { RootNodeChildLoador loador = getChildLoador(RootNodeChildLoador.class); -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 0ba9286a57c80197a67ca6244ac07b67705a36bf Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 2 17:37:03 2016 +0200 fix NPE if no trip found for a program --- .../fr/ird/observe/ui/storage/tabs/DataSelectionModel.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java index c4bc8e5..95aecc8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java @@ -300,14 +300,16 @@ public class DataSelectionModel implements Serializable { if (ProgramDto.class.isAssignableFrom(referenceDto.getType())) { List<DataReference> trips = datas.get(referenceDto); - result = !CollectionUtils.isEmpty(trips); + result = CollectionUtils.isNotEmpty(trips); - for (DataReference trip : trips) { - if (!getSelectedData().contains(trip)) { + if (result) { + for (DataReference trip : trips) { + if (!getSelectedData().contains(trip)) { - // au moins une marée non sélectionnée + // au moins une marée non sélectionnée - result = false; + result = false; + } } } } else { -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit e3b7181a75318c871b39513055120a426551e870 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 2 17:37:26 2016 +0200 UI for data synchronize action --- .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 1 + .../main/java/fr/ird/observe/ui/ObserveMainUI.jcss | 4 + .../java/fr/ird/observe/ui/admin/AdminStep.java | 21 ++++ .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 51 ++++++--- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 55 +++++++++ .../ui/admin/datasynchro/DataSynchroModel.java | 97 ++++++++++++++++ .../ui/admin/datasynchro/DataSynchroUI.jaxx | 127 +++++++++++++++++++++ .../ui/admin/datasynchro/DataSynchroUI.jcss | 106 +++++++++++++++++ .../ui/admin/datasynchro/DataSynchroUIHandler.java | 121 ++++++++++++++++++++ .../observe-application-swing_en_GB.properties | 20 ++++ .../observe-application-swing_es_ES.properties | 20 ++++ .../observe-application-swing_fr_FR.properties | 19 +++ 12 files changed, 623 insertions(+), 19 deletions(-) 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 e97816a..7f43933 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 @@ -172,6 +172,7 @@ void $afterCompleteSetup() { <JMenuItem id='menuActionsExportData'/> <JMenuItem id='menuActionsReport'/> <JMenuItem id='menuActionsConsolidate'/> + <JMenuItem id='menuActionsDataSynchro'/> </JMenu> <JMenu id='menuNavigation'> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jcss b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jcss index 50f53e1..999d7b2 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jcss +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jcss @@ -204,6 +204,10 @@ JSplitPane { enabled: {getHandler().acceptMode(getMode(), !isBusy() && !isMainFromSynchro(), ObserveUIMode.DB, ObserveUIMode.NO_DB)}; } +#menuActionsDataSynchro { + action: {new fr.ird.observe.ui.actions.LaunchAdminAction(this, AdminStep.DATA_SYNCHRONIZE)}; +} + #menuActionsSynchronize { action: {new fr.ird.observe.ui.actions.LaunchAdminAction(this, AdminStep.SYNCHRONIZE)}; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java index 41032c0..2819d66 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java @@ -27,6 +27,8 @@ import fr.ird.observe.ui.admin.config.ConfigUI; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.ui.admin.consolidate.ConsolidateUI; +import fr.ird.observe.ui.admin.datasynchro.DataSynchroModel; +import fr.ird.observe.ui.admin.datasynchro.DataSynchroUI; import fr.ird.observe.ui.admin.export.ExportModel; import fr.ird.observe.ui.admin.export.ExportUI; import fr.ird.observe.ui.admin.report.ReportModel; @@ -99,6 +101,25 @@ public enum AdminStep implements WizardExtStep { DbMode.USE_REMOTE ), + DATA_SYNCHRONIZE( + n("observe.synchro.step.dataSynchronize"), + n("observe.synchro.step.dataSynchronize.description"), + n("observe.title.dataSynchronize"), + n("observe.title.dataSynchronize.tip"), + "dataSynchronize", + n("observe.synchro.operation.dataSynchronize"), + n("observe.synchro.operation.dataSynchronize.description"), + DataSynchroModel.class, + DataSynchroUI.class, + true, + false, + false, + false, + DbMode.USE_LOCAL, + DbMode.USE_REMOTE, + DbMode.USE_SERVER + ), + /** pour lancer la validation des donnees */ VALIDATE( n("observe.synchro.step.validate"), 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 8e1e171..97e1ed0 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 @@ -23,11 +23,11 @@ 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.db.ObserveSwingDataSource; 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.application.swing.decoration.DecoratorService; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; @@ -196,33 +196,17 @@ public class AdminTabUIHandler { DataSelectionModel selectDataModel = tabUI.getSelectDataModel(); DataSelectionTreeSelectionModel selectionModel = tabUI.getSelectionModel(); ObserveTreeHelper helper = tabUI.getTreeHelper(); - - if (log.isDebugEnabled()) { - log.debug("reload model " + selectDataModel); - } - - selectionModel.clearSelection(); ObserveSwingDataSource source = tabUI.getModel().getSafeLocalSource(true); - if (log.isDebugEnabled()) { - log.debug("Will treeHelper : " + helper); - log.debug("selection model : " + selectDataModel); - log.debug("use referentiel : " + selectDataModel.isUseReferentiel()); - log.debug("use data : " + selectDataModel.isUseData()); - } - - TreeModel model = helper.createModel(tabUI, selectDataModel, source); + updateSelectionModel(tabUI, helper, selectTree, source, selectDataModel, selectionModel); - selectTree.setModel(model); - - selectionModel.initUI(selectTree); } protected void checkStepIsOperation(AdminTabUI ui) { if (!ui.getStep().isOperation()) { throw new IllegalStateException( "can not launch objectOperation on none operation step " + - ui.getStep()); + ui.getStep()); } } @@ -248,4 +232,33 @@ public class AdminTabUIHandler { ObserveRunner.getActionExecutor().addAction(worker); } + protected void updateSelectionModel(AdminTabUI tabUI, + ObserveTreeHelper helper, + JTree selectTree, + ObserveSwingDataSource source, + DataSelectionModel selectDataModel, + DataSelectionTreeSelectionModel selectionModel) { + + + if (log.isDebugEnabled()) { + log.debug("reload model " + selectDataModel); + } + + selectionModel.clearSelection(); + + if (log.isDebugEnabled()) { + log.debug("Will treeHelper : " + helper); + log.debug("selection model : " + selectDataModel); + log.debug("use referentiel : " + selectDataModel.isUseReferentiel()); + log.debug("use data : " + selectDataModel.isUseData()); + } + + helper.setUI(selectTree, false); + + TreeModel model = helper.createModel(tabUI, selectDataModel, source); + selectTree.setModel(model); + + selectionModel.initUI(selectTree); + } + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index ac8553b..80930e2 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -44,6 +44,7 @@ import fr.ird.observe.services.service.actions.validate.ValidateServiceUtils; import fr.ird.observe.services.service.longline.TripLonglineService; import fr.ird.observe.services.service.seine.TripSeineService; import fr.ird.observe.ui.admin.consolidate.ConsolidateModel; +import fr.ird.observe.ui.admin.datasynchro.DataSynchroModel; import fr.ird.observe.ui.admin.export.ExportModel; import fr.ird.observe.ui.admin.report.ReportModel; import fr.ird.observe.ui.admin.save.SaveLocalModel; @@ -569,6 +570,12 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { getConsolidateModel().addPropertyChangeListener(listenConsolidateModified); } + if (containsOperation(AdminStep.DATA_SYNCHRONIZE)) { + + //TODO ? + + } + // on ecoute les modifications d'étapes pour remplir les modèles de sélection // si nécessaire @@ -882,6 +889,10 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return (SaveLocalModel) getStepModel(AdminStep.SAVE_LOCAL); } + public DataSynchroModel getDataSynchroModel() { + return (DataSynchroModel) getStepModel(AdminStep.DATA_SYNCHRONIZE); + } + @Override public void cancel() { super.cancel(); @@ -1047,6 +1058,44 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } } + if (validate && containsOperation(AdminStep.DATA_SYNCHRONIZE)) { + + // les deux bases (source et referentiel) doivent etre different + DbMode dbMode = localSourceModel.getDbMode(); + if (dbMode == centralSourceModel.getDbMode()) { + if (dbMode == DbMode.USE_REMOTE) { + validate &= !localSourceModel.getPgConfig().getJdbcUrl().equals(centralSourceModel.getPgConfig().getJdbcUrl()); + } else { + + // pour le moment ce cas n'est pas possible + // la base de référence est obligatoirement une base distante + //FIXME + } + } + + ObserveDataSourceInformation leftDataSourceInformation = getLocalSourceInformation(); + if (!(leftDataSourceInformation.canReadData() && leftDataSourceInformation.canWriteData())) { + if (log.isDebugEnabled()) { + log.debug("can not read and write data on left data source"); + } + return false; + } + + if (centralSourceModel.getDataSourceInformation() != null) { + + ObserveDataSourceInformation rightDataSourceInformation = centralSourceModel.getDataSourceInformation(); + if (!(rightDataSourceInformation.canReadData() && rightDataSourceInformation.canWriteData())) { + if (log.isDebugEnabled()) { + log.debug("can not read and write data on right data source"); + } + return false; + } + + } + + + + } if (containsOperation(AdminStep.SYNCHRONIZE)) { // les deux bases (source et referentiel) doivent etre different @@ -1179,6 +1228,12 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { universe.add(AdminStep.SELECT_DATA); } + if (containsOperation(AdminStep.DATA_SYNCHRONIZE)) { + + // ajout de l'onglet de resolution des entites obsoletes + universe.add(AdminStep.DATA_SYNCHRONIZE); + } + if (containsOperation(AdminStep.SYNCHRONIZE)) { // ajout de l'onglet de resolution des entites obsoletes diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java new file mode 100644 index 0000000..1371502 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java @@ -0,0 +1,97 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.ui.admin.AdminActionModel; +import fr.ird.observe.ui.admin.AdminStep; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Created on 02/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DataSynchroModel extends AdminActionModel { + + /** Logger. */ + private static final Log log = LogFactory.getLog(DataSynchroModel.class); + + public static final String LEFT_SELECTION_MODEL_CHANGED_PROPERTY_NAME = "leftSelectionModelChanged"; + public static final String RIGHT_SELECTION_MODEL_CHANGED_PROPERTY_NAME = "rightSelectionModelChanged"; + + /** la source sur le panneau de gauche. */ + protected ObserveSwingDataSource leftSource; + + /** la source sur le panneau de droite. */ + protected ObserveSwingDataSource rightSource; + + /** les données sélectionnées sur le panneau de gauche. */ + protected final DataSelectionModel leftSelectionDataModel; + + /** les données sélectionnées sur le panneau de droite. */ + protected final DataSelectionModel rightSelectionDataModel; + + public DataSynchroModel() { + super(AdminStep.DATA_SYNCHRONIZE); + + leftSelectionDataModel = new DataSelectionModel(); + leftSelectionDataModel.setUseData(true); + + rightSelectionDataModel = new DataSelectionModel(); + rightSelectionDataModel.setUseData(true); + } + + public ObserveSwingDataSource getLeftSource() { + return leftSource; + } + + public void setLeftSource(ObserveSwingDataSource leftSource) { + this.leftSource = leftSource; + } + + public ObserveSwingDataSource getRightSource() { + return rightSource; + } + + public void setRightSource(ObserveSwingDataSource rightSource) { + this.rightSource = rightSource; + } + + public DataSelectionModel getLeftSelectionDataModel() { + return leftSelectionDataModel; + } + + public DataSelectionModel getRightSelectionDataModel() { + return rightSelectionDataModel; + } + + public void populateLeftSelectionModel() { + populateSelectionModel(leftSource, leftSelectionDataModel, LEFT_SELECTION_MODEL_CHANGED_PROPERTY_NAME); + } + + public void populateRightSelectionModel() { + populateSelectionModel(rightSource, rightSelectionDataModel, RIGHT_SELECTION_MODEL_CHANGED_PROPERTY_NAME); + } + + private void populateSelectionModel(ObserveSwingDataSource dataSource, DataSelectionModel selectionDataModel, String propertyName) { + + try { + + DataSelectionModel.populate(selectionDataModel, dataSource); + + } catch (Exception e) { + + if (log.isErrorEnabled()) { + log.error("could not populate selected model", e); + } + + } finally { + + // on notifie que le modèle de sélection a changé + // (il faut donc recalculé l'arbre de sélection) + firePropertyChange(propertyName, selectionDataModel); + + } + } +} \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx new file mode 100644 index 0000000..0d21a11 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx @@ -0,0 +1,127 @@ +<!-- + #%L + ObServe :: Swing + %% + Copyright (C) 2008 - 2010 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% + --> + +<!-- ************************************************************* --> +<!-- L'écran de synchronisation bi-directionnel des données --> +<!-- ************************************************************* --> + +<fr.ird.observe.ui.admin.AdminTabUI> + + <import> + fr.ird.observe.ui.UIHelper + fr.ird.observe.ui.admin.AdminUI + fr.ird.observe.ui.admin.AdminStep + fr.ird.observe.ui.tree.ObserveTreeHelper + fr.ird.observe.ui.tree.DataSelectionTreeCellRenderer + fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel + fr.ird.observe.ui.storage.tabs.DataSelectionModel + + jaxx.runtime.SwingUtil + + javax.swing.tree.TreeSelectionModel + + </import> + + <ObserveTreeHelper id='leftTreeHelper'/> + <ObserveTreeHelper id='rightTreeHelper'/> + + <DataSynchroUIHandler id='handler' constructorParams='this'/> + + <DataSynchroModel id='stepModel' initializer='getModel().getDataSynchroModel()'/> + + <DataSelectionModel id='leftSelectDataModel' + initializer='getModel().getDataSynchroModel().getLeftSelectionDataModel()'/> + <DataSelectionTreeSelectionModel id='leftSelectionModel'/> + <DataSelectionTreeCellRenderer id='leftSelectionRenderer' constraints='BorderLayout.EAST'/> + + <DataSelectionModel id='rightSelectDataModel' + initializer='getModel().getDataSynchroModel().getRightSelectionDataModel()'/> + <DataSelectionTreeSelectionModel id='rightSelectionModel'/> + <DataSelectionTreeCellRenderer id='rightSelectionRenderer' constraints='BorderLayout.EAST'/> + + <script><![CDATA[ +public DataSynchroUI(AdminUI parentContext) { + super(AdminStep.DATA_SYNCHRONIZE, parentContext); +} + +public void initUI(AdminUI ui) { + getHandler().initTabUI(ui, this); +} + +@Override +public void destroy() { + leftSelectionModel.clearSelection(); + rightSelectionModel.clearSelection(); + super.destroy(); +} +]]> + </script> + + <JPanel id='PENDING_content'> + <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' + weighty='1'> + <row> + <cell> + <JButton id='startAction' onActionPerformed="getHandler().doPrepareAction()"/> + </cell> + </row> + </Table> + </JPanel> + + <JPanel id='NEED_FIX_content'> + <Table fill="both" constraints='BorderLayout.CENTER'> + <row weighty="0.8"> + <cell weightx="0.4"> + <JScrollPane id='leftTreePane' decorator='boxed'> + <JTree id='leftTree'/> + </JScrollPane> + </cell> + <cell weightx="0.2"> + <JPanel layout="{new BorderLayout()}" border='{new TitledBorder(" ")}'> + <JPanel id="middleActions" layout="{new GridLayout(0, 1)}" constraints='BorderLayout.CENTER'> + <JButton id="copyToRight"/> + <JButton id="copyToLeft"/> + <JButton id="deleteFromLeft"/> + <JButton id="deleteFromRight"/> + </JPanel> + </JPanel> + </cell> + <cell weightx="0.4"> + <JScrollPane id='rightTreePane' decorator='boxed'> + <JTree id='rightTree'/> + </JScrollPane> + </cell> + </row> + <row weighty="0.8"> + <cell columns="3"> + <JList id="actionsToConsume"/> + </cell> + </row> + <row> + <cell columns='3'> + <JButton id='applyAction' onActionPerformed='getHandler().doExecuteAction()'/> + </cell> + </row> + </Table> + </JPanel> + +</fr.ird.observe.ui.admin.AdminTabUI> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss new file mode 100644 index 0000000..c7781a4 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss @@ -0,0 +1,106 @@ +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2010 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% + */ + +#NEED_FIX_content { + layout:{new BorderLayout()}; +} + +#PENDING_content { + layout:{new BorderLayout()}; +} + +#startAction { + actionIcon:"wizard-start"; +} + +#applyAction { + actionIcon:accept; + text:"observe.action.apply"; +} + +#leftTree { + rootVisible:false; + largeModel:true; + minimumSize:{UIHelper.newMinDimension()}; + font-size:11; + showsRootHandles:false; + toggleClickCount:100; + selectionModel:{leftSelectionModel}; + cellRenderer:{leftSelectionRenderer}; +} + +#leftSelectionModel { + selectionMode: {TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION}; + dataModel:{leftSelectDataModel}; +} + +#leftTreePane { + verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#rightTree { + rootVisible:false; + largeModel:true; + minimumSize:{UIHelper.newMinDimension()}; + font-size:11; + showsRootHandles:false; + toggleClickCount:100; + selectionModel:{rightSelectionModel}; + cellRenderer:{rightSelectionRenderer}; +} + +#rightSelectionModel { + selectionMode: {TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION}; + dataModel:{rightSelectDataModel}; +} + +#rightTreePane { + verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#copyToLeft { + text:"observe.action.copyToLeft"; + toolTipText:"observe.action.copyToLeft.tip"; + enabled:false; +} + +#copyToRight { + text:"observe.action.copyToRight"; + toolTipText:"observe.action.copyToRight.tip"; + enabled:false; +} + +#deleteFromLeft { + text:"observe.action.deleteFromLeft"; + toolTipText:"observe.action.deleteFromLeft.tip"; + enabled:false; +} + +#deleteFromRight { + text:"observe.action.deleteFromRight"; + toolTipText:"observe.action.deleteFromRight.tip"; + enabled:false; +} + +#actionsToConsume { + border:{new TitledBorder(t("observe.datasynchro.actionsToPerform"))}; +} \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java new file mode 100644 index 0000000..200b2dc --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -0,0 +1,121 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.ui.admin.AdminTabUIHandler; +import fr.ird.observe.ui.admin.AdminUI; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; +import jaxx.runtime.swing.wizard.ext.WizardState; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.border.TitledBorder; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 02/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DataSynchroUIHandler extends AdminTabUIHandler { + + /** Logger */ + private static final Log log = LogFactory.getLog(DataSynchroUIHandler.class); + + public DataSynchroUIHandler(DataSynchroUI ui) { + super(ui); + } + + public DataSynchroModel getStepModel() { + return model.getDataSynchroModel(); + } + + @Override + public DataSynchroUI getUi() { + return (DataSynchroUI) super.getUi(); + } + + public void initTabUI(AdminUI ui, DataSynchroUI tabUI) { + + super.initTabUI(ui, tabUI); + + if (log.isDebugEnabled()) { + log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); + } + + tabUI.getStartAction().setText(t("observe.action.datasynchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); + + getStepModel().getLeftSelectionDataModel().addPropertyChangeListener(evt -> { + + DataSelectionModel model = (DataSelectionModel) evt.getSource(); + boolean withDataSelected = !model.isDataEmpty(); + + tabUI.getCopyToRight().setEnabled(withDataSelected); + tabUI.getDeleteFromLeft().setEnabled(withDataSelected); + + }); + getStepModel().getRightSelectionDataModel().addPropertyChangeListener(evt -> { + + DataSelectionModel model = (DataSelectionModel) evt.getSource(); + boolean withDataSelected = !model.isDataEmpty(); + + tabUI.getCopyToLeft().setEnabled(withDataSelected); + tabUI.getDeleteFromRight().setEnabled(withDataSelected); + + }); + + } + + public void doPrepareAction() { + + addAdminWorker(getUi().getStartAction().getToolTipText(), this::doAction); + + } + + public void doExecuteAction() { + + //TODO + getModel().setStepState(WizardState.SUCCESSED); + + } + + private WizardState doAction() throws Exception { + + if (log.isDebugEnabled()) { + log.debug(this); + } + + DataSynchroModel stepModel = getStepModel(); + + // on cree les sources de données + + ObserveSwingDataSource leftSource = model.getSafeLocalSource(false); + stepModel.setLeftSource(leftSource); + + ObserveSwingDataSource rightSource = model.getSafeCentralSource(false); + stepModel.setRightSource(rightSource); + + openSource(leftSource); + openSource(rightSource); + + // Populate tree models + + DataSynchroUI tabUI = getUi(); + + tabUI.getLeftTreePane().setBorder(new TitledBorder(leftSource.getLabel())); + stepModel.populateLeftSelectionModel(); + updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), leftSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); + sendMessage(t("observe.message.datasynchro.leftData.loaded")); + + tabUI.getRightTreePane().setBorder(new TitledBorder(rightSource.getLabel())); + stepModel.populateRightSelectionModel(); + updateSelectionModel(tabUI, tabUI.getRightTreeHelper(), tabUI.getRightTree(), rightSource, stepModel.getRightSelectionDataModel(), tabUI.getRightSelectionModel()); + sendMessage(t("observe.message.datasynchro.rightData.loaded")); + + sendMessage(t("observe.message.datasynchro.ready")); + + return WizardState.NEED_FIX; + + } + +} \ No newline at end of file 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 236fb11..908924b 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 @@ -96,6 +96,10 @@ observe.action.copy.column.headers= observe.action.copy.column.headers.tip= observe.action.copy.row.headers= observe.action.copy.row.headers.tip= +observe.action.copyToLeft= +observe.action.copyToLeft.tip= +observe.action.copyToRight= +observe.action.copyToRight.tip= observe.action.country.create.tip= observe.action.country.delete.tip= observe.action.country.detail.tip= @@ -129,6 +133,7 @@ observe.action.create.targetSample= observe.action.create.targetSample.tip= observe.action.create.targetSampleCapture= observe.action.create.targetSampleCapture.tip= +observe.action.datasynchro.launch.operation= observe.action.db.locale.es.tip=Change database language in spanish observe.action.db.locale.fr.tip=Change database language in french observe.action.db.locale.uk.tip=Change database language in english @@ -140,6 +145,11 @@ observe.action.delete.maree.tip= observe.action.delete.route.tip= observe.action.delete.set.tip= observe.action.delete.tip=Delete +observe.action.deleteFromBoth= +observe.action.deleteFromLeft= +observe.action.deleteFromLeft.tip= +observe.action.deleteFromRight= +observe.action.deleteFromRight.tip= observe.action.detail=Details observe.action.detectionMode.create.tip= observe.action.detectionMode.delete.tip= @@ -1031,6 +1041,7 @@ observe.configuration.description= observe.content.mode.create.tip= observe.content.mode.read.tip= observe.content.mode.update.tip= +observe.datasynchro.actionsToPerform= observe.encounter.action.create=Insert this encounter observe.encounter.action.create.tip=Insert this encounter observe.encounter.count=Count @@ -1337,6 +1348,9 @@ observe.message.consolidate.operation.done= observe.message.consolidate.save.changes= observe.message.consolidate.trip= observe.message.creating.referentiel= +observe.message.datasynchro.leftData.loaded= +observe.message.datasynchro.ready= +observe.message.datasynchro.rightData.loaded= observe.message.db.closed=%1$s was closed observe.message.db.loaded=%1$s was loaded observe.message.db.loading=%1$s loading... @@ -1779,6 +1793,8 @@ observe.synchro.obsolete.entity.fix= observe.synchro.operation.canceled= observe.synchro.operation.consolidate= observe.synchro.operation.consolidate.description= +observe.synchro.operation.dataSynchronize= +observe.synchro.operation.dataSynchronize.description= observe.synchro.operation.exportData= observe.synchro.operation.exportData.description= observe.synchro.operation.failed= @@ -1805,6 +1821,8 @@ observe.synchro.step.config= observe.synchro.step.config.description= observe.synchro.step.consolidate= observe.synchro.step.consolidate.description= +observe.synchro.step.dataSynchronize= +observe.synchro.step.dataSynchronize.description= observe.synchro.step.exportData= observe.synchro.step.exportData.description= observe.synchro.step.report= @@ -2002,6 +2020,8 @@ observe.title.content.weightCategory= observe.title.content.weightMeasureTypes= observe.title.content.windSpeeds= observe.title.create.local.db=Loading local database +observe.title.dataSynchronize= +observe.title.dataSynchronize.tip= observe.title.delete=Confirm a delete observe.title.error.dialog=An error occurs\! observe.title.exportData=Export datas 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 e9bdcc2..6b9c8cf 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 @@ -96,6 +96,10 @@ observe.action.copy.column.headers=Copiar los encabezados de columnas observe.action.copy.column.headers.tip=Añadir al resultado las cabeceras de columna observe.action.copy.row.headers=Copiar las cabeceras de linea observe.action.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna) +observe.action.copyToLeft= +observe.action.copyToLeft.tip= +observe.action.copyToRight= +observe.action.copyToRight.tip= observe.action.country.create.tip=Crear un nuevo país observe.action.country.delete.tip=Eliminar el país seleccionado observe.action.country.detail.tip=Ver los detalles del país seleccionado @@ -129,6 +133,7 @@ observe.action.create.targetSample=Insertar muestreo observe.action.create.targetSample.tip=Insertar muestreo de atún descartado observe.action.create.targetSampleCapture=Insertar muestreo observe.action.create.targetSampleCapture.tip=Insertar muestreo de atún capturado +observe.action.datasynchro.launch.operation= observe.action.db.locale.es.tip=Cambia el idioma del referencial al español observe.action.db.locale.fr.tip=Cambiar el idioma del referencial al francés observe.action.db.locale.uk.tip=Cambiar el idioma del referencial al inglés @@ -140,6 +145,11 @@ observe.action.delete.maree.tip=Eliminar la marea observe.action.delete.route.tip=Eliminar la ruta observe.action.delete.set.tip=Eliminar el lance observe.action.delete.tip=Eliminar +observe.action.deleteFromBoth= +observe.action.deleteFromLeft= +observe.action.deleteFromLeft.tip= +observe.action.deleteFromRight= +observe.action.deleteFromRight.tip= observe.action.detail=Ver detalles observe.action.detectionMode.create.tip=Crear un nuevo modo de detección observe.action.detectionMode.delete.tip=Eliminar el modo de detección seleccionado @@ -1031,6 +1041,7 @@ observe.configuration.description= observe.content.mode.create.tip=Objeto en proceso de creación observe.content.mode.read.tip=Objeto no se puede editar observe.content.mode.update.tip=Objeto en proceso de edición +observe.datasynchro.actionsToPerform= observe.encounter.action.create= observe.encounter.action.create.tip= observe.encounter.count= @@ -1337,6 +1348,9 @@ observe.message.consolidate.operation.done=Operación de calculo de datos termin observe.message.consolidate.save.changes=Guardar las modificaciones de la(s) %1$s marea(s) modificada(s). observe.message.consolidate.trip= observe.message.creating.referentiel=Objeto en proceso de creación. +observe.message.datasynchro.leftData.loaded= +observe.message.datasynchro.ready= +observe.message.datasynchro.rightData.loaded= observe.message.db.closed=%1$s ha sido cerrado observe.message.db.loaded=%1$s cargado observe.message.db.loading=%1$s cargando @@ -1779,6 +1793,8 @@ observe.synchro.obsolete.entity.fix=Cambiar las referencias del objeto seleccion observe.synchro.operation.canceled= observe.synchro.operation.consolidate= observe.synchro.operation.consolidate.description= +observe.synchro.operation.dataSynchronize= +observe.synchro.operation.dataSynchronize.description= observe.synchro.operation.exportData= observe.synchro.operation.exportData.description= observe.synchro.operation.failed= @@ -1805,6 +1821,8 @@ observe.synchro.step.config= observe.synchro.step.config.description= observe.synchro.step.consolidate= observe.synchro.step.consolidate.description= +observe.synchro.step.dataSynchronize= +observe.synchro.step.dataSynchronize.description= observe.synchro.step.exportData= observe.synchro.step.exportData.description= observe.synchro.step.report= @@ -2002,6 +2020,8 @@ observe.title.content.weightCategory= observe.title.content.weightMeasureTypes= observe.title.content.windSpeeds= observe.title.create.local.db= +observe.title.dataSynchronize= +observe.title.dataSynchronize.tip= observe.title.delete= observe.title.error.dialog= observe.title.exportData= 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 19aa237..770bc94 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 @@ -96,6 +96,10 @@ observe.action.copy.column.headers=Copier les entêtes de colonne observe.action.copy.column.headers.tip=Ajoute dans le résultat les entêtes de colonne (i.e la première ligne) observe.action.copy.row.headers=Copier les entêtes de ligne observe.action.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne) +observe.action.copyToLeft=← +observe.action.copyToLeft.tip=Copier vers la base de gauche +observe.action.copyToRight=→ +observe.action.copyToRight.tip=Copier vers la base de droite observe.action.country.create.tip=Créer un nouveau pays observe.action.country.delete.tip=Supprimer le pays sélectionné observe.action.country.detail.tip=Voir les détails du pays sélectionné @@ -129,6 +133,7 @@ observe.action.create.targetSample=Insérer cet échantillon observe.action.create.targetSample.tip=Insérer cet échantillon de thon rejeté observe.action.create.targetSampleCapture=Insérer cet échantillon observe.action.create.targetSampleCapture.tip=Insérer cet échantillon de thon capturé +observe.action.datasynchro.launch.operation=Récupération des données observe.action.db.locale.es.tip=Changer la langue du référentiel en espagnol observe.action.db.locale.fr.tip=Changer la langue du référentiel en français observe.action.db.locale.uk.tip=Changer la langue du référentiel en anglais @@ -140,6 +145,10 @@ observe.action.delete.maree.tip=Supprimer la marée observe.action.delete.route.tip=Supprimer la route observe.action.delete.set.tip=Supprimer la calée observe.action.delete.tip=Supprimer +observe.action.deleteFromLeft=Supprimer à gauche +observe.action.deleteFromLeft.tip=Supprimer la ou les marées sélectionnée(s) de la base de gauche +observe.action.deleteFromRight=Supprimer à droite +observe.action.deleteFromRight.tip=Supprimer la ou les marées sélectionnée(s) de la base de droite observe.action.detail=Voir les détails observe.action.detectionMode.create.tip=Créer un nouveau mode détection observe.action.detectionMode.delete.tip=Supprimer le mode de détection sélectionné @@ -1031,6 +1040,7 @@ observe.configuration.description= observe.content.mode.create.tip=L'objet est en cours de création observe.content.mode.read.tip=L'objet n'est pas éditable observe.content.mode.update.tip=L'objet est en cours d'édition +observe.datasynchro.actionsToPerform=Opérations à réaliser observe.encounter.action.create=Insérer cette rencontre observe.encounter.action.create.tip=Insérer cette rencontre observe.encounter.count=Nombre @@ -1337,6 +1347,9 @@ observe.message.consolidate.operation.done=Opération de calcul des données ter observe.message.consolidate.save.changes=Sauvegarde des modifications sur la(es) %1$s marée(s) modifiée(s). observe.message.consolidate.trip=Données calculées pour la marée %1$s observe.message.creating.referentiel=L'objet est en cours de création. +observe.message.datasynchro.leftData.loaded=Données du panneau gauche récupérées. +observe.message.datasynchro.ready=Données récupérées. +observe.message.datasynchro.rightData.loaded=Données du panneau droit récupérées. observe.message.db.closed=%1$s a été fermé observe.message.db.loaded=%1$s chargé observe.message.db.loading=%1$s en cours de chargement @@ -1779,6 +1792,8 @@ observe.synchro.obsolete.entity.fix=Changer les références sur l'objet sélect observe.synchro.operation.canceled=L'opération <%1$s> a été annulée. observe.synchro.operation.consolidate=Calculer les données observe.synchro.operation.consolidate.description=Calculer les données non observées +observe.synchro.operation.dataSynchronize=Synchronisation bi-directionnelle de données +observe.synchro.operation.dataSynchronize.description=Synchronisation bi-directionnelle des données utilisateurs observe.synchro.operation.exportData=Exporter les données observateurs observe.synchro.operation.exportData.description=Exporter les données observateurs vers la base centrale observe.synchro.operation.failed=L'opération < %1$s > a échouée. @@ -1805,6 +1820,8 @@ observe.synchro.step.config=Configuration observe.synchro.step.config.description=Configuration des opérations et sources de données à utiliser. observe.synchro.step.consolidate=Calculer les données observe.synchro.step.consolidate.description=Calculer les données non observées +observe.synchro.step.dataSynchronize=Synchronisation bi-directionnelle de données +observe.synchro.step.dataSynchronize.description=Synchronisation bi-directionnelle des données utilisateurs observe.synchro.step.exportData=Exporter observe.synchro.step.exportData.description=Exporter les données observateurs vers la base centrale observe.synchro.step.report=Tableaux de synthèse @@ -2002,6 +2019,8 @@ observe.title.content.weightCategory=Gestion des catégories poids observe.title.content.weightMeasureTypes=Gestion des types de mesure de poids observe.title.content.windSpeeds=Gestion des vents Beaufort observe.title.create.local.db=Chargement d'une base locale +observe.title.dataSynchronize=Synchronisation bi-directionnelle de données +observe.title.dataSynchronize.tip=Synchronisation bi-directionnelle des données utilisateurs observe.title.delete=Confirmation de suppression observe.title.error.dialog=Une erreur est survenue\! observe.title.exportData=Exporter les données -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 2194ff2cd4542698e6ca1195eb6f3098c4e54731 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 3 12:33:14 2016 +0200 more decoration methods --- .../observe/application/swing/decoration/DecoratorService.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/observe-application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java b/observe-application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java index a349c6c..0706a18 100644 --- a/observe-application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java +++ b/observe-application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java @@ -607,6 +607,16 @@ public class DecoratorService extends DecoratorProvider { return decorator; } + public DataReferenceDecorator getTripReferenceDecorator(DataReference tripDto) { + DataReferenceDecorator decorator; + if (tripDto.getType().isAssignableFrom(TripSeineDto.class)) { + decorator = (DataReferenceDecorator) getDataReferenceDecorator(TripSeineDto.class); + } else { + decorator = (DataReferenceDecorator) getDataReferenceDecorator(TripLonglineDto.class); + } + return decorator; + } + protected <T extends ReferentialDto> void registerDefaultReferentialAndReferentialReferenceDecorator(Class<T> referenceType, String libelle) { registerReferentialReferenceDecorator(referenceType, "${code}$s##${label}$s"); registerObserveDecorator(referenceType, "${code}$s##${" + libelle + "}$s", " "); -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 6012e8927d9ba8f60943e03b48fe52eaf17bf5be Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 3 12:33:28 2016 +0200 Continue ui for data synchronize action --- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 55 ++++-- .../datasynchro/CopyToLeftDataSynchronizeTask.java | 25 +++ .../CopyToRightDataSynchronizeTask.java | 26 +++ .../ui/admin/datasynchro/DataSynchroModel.java | 21 +++ .../ui/admin/datasynchro/DataSynchroUI.jaxx | 82 +++++---- .../ui/admin/datasynchro/DataSynchroUI.jcss | 14 +- .../ui/admin/datasynchro/DataSynchroUIHandler.java | 204 ++++++++++++++++++--- .../DataSynchronizeTaskListCellRenderer.java | 37 ++++ .../datasynchro/DataSynchronizeTaskSupport.java | 47 +++++ .../DeleteFromLeftDataSynchronizeTask.java | 25 +++ .../DeleteFromRightDataSynchronizeTask.java | 25 +++ .../ui/storage/tabs/DataSelectionModel.java | 21 +++ .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 63 ++++++- .../loadors/ProgramLonglineNodeChildLoador.java | 7 + .../tree/loadors/ProgramSeineNodeChildLoador.java | 8 + .../observe-application-swing_en_GB.properties | 4 + .../observe-application-swing_es_ES.properties | 4 + .../observe-application-swing_fr_FR.properties | 4 + 18 files changed, 582 insertions(+), 90 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index 80930e2..77cf722 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -133,7 +133,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { private final PropertyChangeListener listenReportModified; - private final PropertyChangeListener listenerSelectedDataForReport; + private final PropertyChangeListener listenerSelectedDataForReport; private final PropertyChangeListener listenConsolidateModified; @@ -245,6 +245,22 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return; } + if (AdminStep.CONFIG == oldStep && AdminStep.DATA_SYNCHRONIZE == newStep) { + + // On lance le chargement de la sélection des arbres + + DataSynchroModel dataSynchroModel = getDataSynchroModel(); + + ObserveSwingDataSource leftSource = getSafeLocalSource(true); + dataSynchroModel.setLeftSource(leftSource); + + ObserveSwingDataSource rightSource = getSafeCentralSource(true); + dataSynchroModel.setRightSource(rightSource); + + return; + + } + // on était sur l'écran de configuration // mise à jour des modèles de sélection si on arrive sur une étape @@ -278,13 +294,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { DataSelectionModel source = (DataSelectionModel) evt.getSource(); if (log.isDebugEnabled()) { log.debug("selection data model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); + evt.getPropertyName() + ", new value = " + + evt.getNewValue()); } validate(); if (log.isDebugEnabled()) { log.debug("nb selected export datas = " + - source.getSelectedData().size()); + source.getSelectedData().size()); } // on declanche la revalidation du modèle @@ -294,13 +310,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { ValidateModel source = (ValidateModel) evt.getSource(); if (log.isDebugEnabled()) { log.debug("validation model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); + evt.getPropertyName() + ", new value = " + + evt.getNewValue()); } validate(); if (log.isDebugEnabled()) { log.debug("nb validators = " + - source.getValidators().size() + source.getValidators().size() ); } firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); @@ -309,8 +325,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { ReportModel source = (ReportModel) evt.getSource(); if (log.isDebugEnabled()) { log.debug("report model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); + evt.getPropertyName() + ", new value = " + + evt.getNewValue()); } validate(); firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); @@ -328,8 +344,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { ConsolidateModel source = (ConsolidateModel) evt.getSource(); if (log.isDebugEnabled()) { log.debug("consolidate model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); + evt.getPropertyName() + ", new value = " + + evt.getNewValue()); } validate(); firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); @@ -501,7 +517,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (log.isDebugEnabled()) { log.debug("Close previous source " + - previousSource.getLabel()); + previousSource.getLabel()); } doCloseSource(previousSource, false); } @@ -1094,7 +1110,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } - } if (containsOperation(AdminStep.SYNCHRONIZE)) { @@ -1118,7 +1133,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // validate &= centralSourceModel.isValid() && // centralSourceModel.getPgConfig().isCanWriteData(); validate &= centralSourceModel.getDataSourceInformation() != null - && centralSourceModel.getDataSourceInformation().canWriteData(); + && centralSourceModel.getDataSourceInformation().canWriteData(); } @@ -1127,7 +1142,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // il faut le fichier di'mport existe File reportFile = getReportModel().getReportFile(); validate &= reportFile != null && - reportFile.exists(); + reportFile.exists(); } break; case SELECT_DATA: @@ -1174,21 +1189,21 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // il faut exactement une Trip de selectionnee boolean empty = selectionModel.isDataEmpty(); validate &= !empty && - selectionModel.getSelectedData().size() == 1; + selectionModel.getSelectedData().size() == 1; } } break; case VALIDATE: validate &= validate(AdminStep.SELECT_DATA) && - getStepState(s) == WizardState.SUCCESSED; + getStepState(s) == WizardState.SUCCESSED; break; case EXPORT_DATA: validate &= validate(AdminStep.SELECT_DATA) && - getStepState(s) == WizardState.SUCCESSED; + getStepState(s) == WizardState.SUCCESSED; break; case CONSOLIDATE: validate &= validate(AdminStep.SELECT_DATA) && - getStepState(s) == WizardState.SUCCESSED; + getStepState(s) == WizardState.SUCCESSED; break; case REPORT: @@ -1202,7 +1217,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { case SAVE_LOCAL: // valide si l'action a ete executee avec success validate &= !getSaveLocalModel().isDoBackup() || - getStepState(s) == WizardState.SUCCESSED; + getStepState(s) == WizardState.SUCCESSED; break; case SHOW_RESUME: validate = true; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java new file mode 100644 index 0000000..26689a2 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java @@ -0,0 +1,25 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class CopyToLeftDataSynchronizeTask extends DataSynchronizeTaskSupport { + + public CopyToLeftDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + super(programReference, tripReference); + } + + @Override + public String getLabel() { + return t("observe.datasynchro.copyToLeftTask", decorateProgram(), decorateTrip()); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java new file mode 100644 index 0000000..03bf7f0 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java @@ -0,0 +1,26 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class CopyToRightDataSynchronizeTask extends DataSynchronizeTaskSupport { + + public CopyToRightDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + super(programReference, tripReference); + } + + @Override + public String getLabel() { + return t("observe.datasynchro.copyToRightTask", decorateProgram(), decorateTrip()); + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java index 1371502..d41df3c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroModel.java @@ -7,16 +7,23 @@ import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import javax.swing.DefaultListModel; + /** * Created on 02/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class DataSynchroModel extends AdminActionModel { /** Logger. */ private static final Log log = LogFactory.getLog(DataSynchroModel.class); + public static final String LEFT_SOURCE_PROPERTY_NAME = "leftSource"; + public static final String RIGHT_SOURCE_PROPERTY_NAME = "rightSource"; + public static final String TASKS_PROPERTY_NAME = "tasks"; + public static final String LEFT_SELECTION_MODEL_CHANGED_PROPERTY_NAME = "leftSelectionModelChanged"; public static final String RIGHT_SELECTION_MODEL_CHANGED_PROPERTY_NAME = "rightSelectionModelChanged"; @@ -32,6 +39,8 @@ public class DataSynchroModel extends AdminActionModel { /** les données sélectionnées sur le panneau de droite. */ protected final DataSelectionModel rightSelectionDataModel; + protected final DefaultListModel<DataSynchronizeTaskSupport> tasks; + public DataSynchroModel() { super(AdminStep.DATA_SYNCHRONIZE); @@ -40,6 +49,8 @@ public class DataSynchroModel extends AdminActionModel { rightSelectionDataModel = new DataSelectionModel(); rightSelectionDataModel.setUseData(true); + tasks = new DefaultListModel<>(); + } public ObserveSwingDataSource getLeftSource() { @@ -48,6 +59,7 @@ public class DataSynchroModel extends AdminActionModel { public void setLeftSource(ObserveSwingDataSource leftSource) { this.leftSource = leftSource; + firePropertyChange(LEFT_SOURCE_PROPERTY_NAME, leftSource); } public ObserveSwingDataSource getRightSource() { @@ -56,6 +68,7 @@ public class DataSynchroModel extends AdminActionModel { public void setRightSource(ObserveSwingDataSource rightSource) { this.rightSource = rightSource; + firePropertyChange(RIGHT_SOURCE_PROPERTY_NAME, rightSource); } public DataSelectionModel getLeftSelectionDataModel() { @@ -74,6 +87,14 @@ public class DataSynchroModel extends AdminActionModel { populateSelectionModel(rightSource, rightSelectionDataModel, RIGHT_SELECTION_MODEL_CHANGED_PROPERTY_NAME); } + public DefaultListModel<DataSynchronizeTaskSupport> getTasks() { + return tasks; + } + + public void addTask(DataSynchronizeTaskSupport task) { + tasks.addElement(task); + } + private void populateSelectionModel(ObserveSwingDataSource dataSource, DataSelectionModel selectionDataModel, String propertyName) { try { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx index 0d21a11..61cbf25 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx @@ -37,6 +37,7 @@ jaxx.runtime.SwingUtil + javax.swing.ListSelectionModel javax.swing.tree.TreeSelectionModel </import> @@ -76,7 +77,7 @@ public void destroy() { ]]> </script> - <JPanel id='PENDING_content'> + <!--JPanel id='PENDING_content'> <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> <row> @@ -85,43 +86,52 @@ public void destroy() { </cell> </row> </Table> - </JPanel> + </JPanel--> - <JPanel id='NEED_FIX_content'> - <Table fill="both" constraints='BorderLayout.CENTER'> - <row weighty="0.8"> - <cell weightx="0.4"> - <JScrollPane id='leftTreePane' decorator='boxed'> - <JTree id='leftTree'/> - </JScrollPane> - </cell> - <cell weightx="0.2"> - <JPanel layout="{new BorderLayout()}" border='{new TitledBorder(" ")}'> - <JPanel id="middleActions" layout="{new GridLayout(0, 1)}" constraints='BorderLayout.CENTER'> - <JButton id="copyToRight"/> - <JButton id="copyToLeft"/> - <JButton id="deleteFromLeft"/> - <JButton id="deleteFromRight"/> + <JPanel id='PENDING_content'> + <JSplitPane id="contentSplitPane" constraints='BorderLayout.CENTER'> + <Table fill="both"> + <row weighty="1"> + <cell weightx="0.45"> + <JScrollPane id='leftTreePane' decorator='boxed'> + <JTree id='leftTree'/> + </JScrollPane> + </cell> + <cell weightx="0.1"> + <JPanel layout="{new BorderLayout()}" border='{new TitledBorder(" ")}'> + <JPanel id="middleActions" layout="{new GridLayout(0, 1)}" constraints='BorderLayout.CENTER'> + <JButton id="copyToRight" onActionPerformed="getHandler().addCopyToRightTasks()"/> + <JButton id="copyToLeft" onActionPerformed="getHandler().addCopyToLeftTasks()"/> + <JButton id="deleteFromLeft" onActionPerformed="getHandler().addDeleteFromLeftTasks()"/> + <JButton id="deleteFromRight" onActionPerformed="getHandler().addDeleteFromRightTasks()"/> + </JPanel> </JPanel> - </JPanel> - </cell> - <cell weightx="0.4"> - <JScrollPane id='rightTreePane' decorator='boxed'> - <JTree id='rightTree'/> - </JScrollPane> - </cell> - </row> - <row weighty="0.8"> - <cell columns="3"> - <JList id="actionsToConsume"/> - </cell> - </row> - <row> - <cell columns='3'> - <JButton id='applyAction' onActionPerformed='getHandler().doExecuteAction()'/> - </cell> - </row> - </Table> + </cell> + <cell weightx="0.45"> + <JScrollPane id='rightTreePane' decorator='boxed'> + <JTree id='rightTree'/> + </JScrollPane> + </cell> + </row> + </Table> + <Table fill="both"> + <row weighty="1"> + <cell weightx="1"> + <JScrollPane id='actionsToConsumePane'> + <JList id="actionsToConsume" onMouseClicked="getHandler().removeTasks(event)"/> + </JScrollPane> + </cell> + </row> + <row> + <cell> + <JPanel layout="{new BorderLayout()}" > + <JButton id='applyAction' constraints='BorderLayout.CENTER' onActionPerformed='getHandler().doExecuteAction()'/> + </JPanel> + </cell> + </row> + </Table> + </JSplitPane> + </JPanel> </fr.ird.observe.ui.admin.AdminTabUI> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss index c7781a4..6073115 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss @@ -28,6 +28,11 @@ layout:{new BorderLayout()}; } +#contentSplitPane { + orientation: {JSplitPane.VERTICAL_SPLIT}; + resizeWeight: 0.8; +} + #startAction { actionIcon:"wizard-start"; } @@ -101,6 +106,13 @@ enabled:false; } -#actionsToConsume { +#actionsToConsumePane { border:{new TitledBorder(t("observe.datasynchro.actionsToPerform"))}; + verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#actionsToConsume { + selectionMode:{ListSelectionModel.SINGLE_SELECTION}; + cellRenderer:{new DataSynchronizeTaskListCellRenderer()}; + model:{getStepModel().getTasks()}; } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java index 200b2dc..98b49fd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -1,14 +1,25 @@ package fr.ird.observe.ui.admin.datasynchro; 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.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; +import fr.ird.observe.ui.tree.DataSelectionTreeCellRenderer; +import fr.ird.observe.ui.tree.ObserveNode; +import fr.ird.observe.ui.tree.ObserveTreeHelper; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import javax.swing.JList; import javax.swing.border.TitledBorder; +import java.awt.event.MouseEvent; +import java.util.List; +import java.util.Map; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -16,6 +27,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 02/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class DataSynchroUIHandler extends AdminTabUIHandler { @@ -43,7 +55,7 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); } - tabUI.getStartAction().setText(t("observe.action.datasynchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); +// tabUI.getStartAction().setText(t("observe.action.datasynchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); getStepModel().getLeftSelectionDataModel().addPropertyChangeListener(evt -> { @@ -64,58 +76,190 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { }); - } + DataSelectionTreeCellRenderer.initUI(tabUI.getLeftTreePane(), tabUI.getLeftTree()); + DataSelectionTreeCellRenderer.initUI(tabUI.getRightTreePane(), tabUI.getRightTree()); + + getStepModel().addPropertyChangeListener(DataSynchroModel.LEFT_SOURCE_PROPERTY_NAME, evt -> { + + DataSynchroModel stepModel = (DataSynchroModel) evt.getSource(); + ObserveSwingDataSource dataSource = (ObserveSwingDataSource) evt.getNewValue(); + + tabUI.getLeftTreePane().setBorder(new TitledBorder(getModel().getLocalSourceModel().getLabel())); + stepModel.populateLeftSelectionModel(); + updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), dataSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); + sendMessage(t("observe.message.datasynchro.leftData.loaded")); + }); + + getStepModel().addPropertyChangeListener(DataSynchroModel.RIGHT_SOURCE_PROPERTY_NAME, evt -> { - public void doPrepareAction() { + DataSynchroModel stepModel = (DataSynchroModel) evt.getSource(); + ObserveSwingDataSource dataSource = (ObserveSwingDataSource) evt.getNewValue(); - addAdminWorker(getUi().getStartAction().getToolTipText(), this::doAction); + tabUI.getRightTreePane().setBorder(new TitledBorder(getModel().getCentralSourceModel().getLabel())); + stepModel.populateRightSelectionModel(); + updateSelectionModel(tabUI, tabUI.getRightTreeHelper(), tabUI.getRightTree(), dataSource, stepModel.getRightSelectionDataModel(), tabUI.getRightSelectionModel()); + sendMessage(t("observe.message.datasynchro.rightData.loaded")); + + }); } - public void doExecuteAction() { +// public void doPrepareAction() { +// +// addAdminWorker(getUi().getStartAction().getToolTipText(), this::doAction); +// +// } + + public void addCopyToLeftTasks() { + + DataSelectionModel selectionDataModel = getStepModel().getRightSelectionDataModel(); + ObserveTreeHelper treeHelper = getUi().getRightTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); + selectionDataModel.removeAllSelectedData(); + for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { + ReferentialReference<ProgramDto> program = entry.getKey(); + for (DataReference trip : entry.getValue()) { + getStepModel().addTask(new CopyToLeftDataSynchronizeTask(program, trip)); + treeHelper.removeTrip(program, trip); + selectionDataModel.removeTrip(program, trip); + } + } - //TODO - getModel().setStepState(WizardState.SUCCESSED); } - private WizardState doAction() throws Exception { + public void addCopyToRightTasks() { + + DataSelectionModel selectionDataModel = getStepModel().getLeftSelectionDataModel(); + ObserveTreeHelper treeHelper = getUi().getLeftTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); + selectionDataModel.removeAllSelectedData(); + for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { + ReferentialReference<ProgramDto> program = entry.getKey(); + for (DataReference trip : entry.getValue()) { + getStepModel().addTask(new CopyToRightDataSynchronizeTask(program, trip)); + treeHelper.removeTrip(program, trip); + selectionDataModel.removeTrip(program, trip); + } + } - if (log.isDebugEnabled()) { - log.debug(this); + } + + public void addDeleteFromLeftTasks() { + + DataSelectionModel selectionDataModel = getStepModel().getLeftSelectionDataModel(); + ObserveTreeHelper treeHelper = getUi().getLeftTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); + selectionDataModel.removeAllSelectedData(); + for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { + ReferentialReference<ProgramDto> program = entry.getKey(); + for (DataReference trip : entry.getValue()) { + getStepModel().addTask(new DeleteFromLeftDataSynchronizeTask(program, trip)); + treeHelper.removeTrip(program, trip); + selectionDataModel.removeTrip(program, trip); + } + } + + } + + public void addDeleteFromRightTasks() { + + DataSelectionModel selectionDataModel = getStepModel().getRightSelectionDataModel(); + ObserveTreeHelper treeHelper = getUi().getRightTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); + selectionDataModel.removeAllSelectedData(); + for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { + ReferentialReference<ProgramDto> program = entry.getKey(); + for (DataReference trip : entry.getValue()) { + getStepModel().addTask(new DeleteFromRightDataSynchronizeTask(program, trip)); + treeHelper.removeTrip(program, trip); + selectionDataModel.removeTrip(program, trip); + } } - DataSynchroModel stepModel = getStepModel(); + } - // on cree les sources de données + public void removeTasks(MouseEvent event) { - ObserveSwingDataSource leftSource = model.getSafeLocalSource(false); - stepModel.setLeftSource(leftSource); + if (event.getClickCount() > 1) { - ObserveSwingDataSource rightSource = model.getSafeCentralSource(false); - stepModel.setRightSource(rightSource); + JList source = (JList) event.getSource(); + int selectionIndex = source.getMinSelectionIndex(); + DataSynchronizeTaskSupport task = getStepModel().getTasks().getElementAt(selectionIndex); + getStepModel().getTasks().removeElementAt(selectionIndex); - openSource(leftSource); - openSource(rightSource); + ObserveTreeHelper treeHelper; + DataSelectionModel selectionDataModel; + if (task instanceof CopyToLeftDataSynchronizeTask || task instanceof DeleteFromRightDataSynchronizeTask) { - // Populate tree models + // push back to right tree + treeHelper = getUi().getRightTreeHelper(); + selectionDataModel = getStepModel().getRightSelectionDataModel(); + } else { - DataSynchroUI tabUI = getUi(); + // push back to left tree - tabUI.getLeftTreePane().setBorder(new TitledBorder(leftSource.getLabel())); - stepModel.populateLeftSelectionModel(); - updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), leftSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); - sendMessage(t("observe.message.datasynchro.leftData.loaded")); + treeHelper = getUi().getLeftTreeHelper(); + selectionDataModel = getStepModel().getLeftSelectionDataModel(); + } - tabUI.getRightTreePane().setBorder(new TitledBorder(rightSource.getLabel())); - stepModel.populateRightSelectionModel(); - updateSelectionModel(tabUI, tabUI.getRightTreeHelper(), tabUI.getRightTree(), rightSource, stepModel.getRightSelectionDataModel(), tabUI.getRightSelectionModel()); - sendMessage(t("observe.message.datasynchro.rightData.loaded")); + ReferentialReference<ProgramDto> program = task.getProgram(); + DataReference trip = task.getTrip(); - sendMessage(t("observe.message.datasynchro.ready")); + Set<ReferentialReference<ProgramDto>> programs = selectionDataModel.getPrograms(); + ObserveNode programNode; + if (programs.contains(program)) { + programNode = treeHelper.getChild(treeHelper.getRootNode(), program.getId()); + } else { + programNode = treeHelper.addProgram(programs, program); + } - return WizardState.NEED_FIX; + selectionDataModel.addData(program, trip); + treeHelper.addSimpleTrip(programNode, trip); + } } + public void doExecuteAction() { + + //TODO + getModel().setStepState(WizardState.SUCCESSED); + + } + +// private WizardState doAction() throws Exception { +// +// if (log.isDebugEnabled()) { +// log.debug(this); +// } +// +// DataSynchroModel stepModel = getStepModel(); +// +// // on cree les sources de données +// +// ObserveSwingDataSource leftSource = model.getSafeLocalSource(false); +// openSource(leftSource); +// stepModel.setLeftSource(leftSource); +// +// ObserveSwingDataSource rightSource = model.getSafeCentralSource(false); +// openSource(rightSource); +// stepModel.setRightSource(rightSource); +// +// +// // Populate tree models +// +// DataSynchroUI tabUI = getUi(); +// +// tabUI.getLeftTreePane().setBorder(new TitledBorder(leftSource.getLabel())); +// stepModel.populateLeftSelectionModel(); +// updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), leftSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); +// sendMessage(t("observe.message.datasynchro.leftData.loaded")); +// +// +// sendMessage(t("observe.message.datasynchro.ready")); +// +// return WizardState.NEED_FIX; +// +// } + } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java new file mode 100644 index 0000000..cccbbab --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java @@ -0,0 +1,37 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import jaxx.runtime.SwingUtil; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.ImageIcon; +import javax.swing.JList; +import java.awt.Component; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DataSynchronizeTaskListCellRenderer extends DefaultListCellRenderer { + + private static final long serialVersionUID = 1L; + + private final ImageIcon icon; + + public DataSynchronizeTaskListCellRenderer() { + icon = SwingUtil.createActionIcon("cancel"); + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + + DataSynchronizeTaskSupport task = (DataSynchronizeTaskSupport) value; + String label = task.getLabel(); + Component listCellRendererComponent = super.getListCellRendererComponent(list, label, index, isSelected, cellHasFocus); + setIcon(icon); + return listCellRendererComponent; + + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java new file mode 100644 index 0000000..b60565f --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java @@ -0,0 +1,47 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.decoration.DecoratorService; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public abstract class DataSynchronizeTaskSupport { + + private final ReferentialReference<ProgramDto> program; + private final DataReference trip; + + public abstract String getLabel(); + + public ReferentialReference<ProgramDto> getProgram() { + return program; + } + + public DataReference getTrip() { + return trip; + } + + protected DataSynchronizeTaskSupport(ReferentialReference<ProgramDto> program, DataReference trip) { + this.program = program; + this.trip = trip; + } + + protected String decorateProgram() { + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); + String programStr = decoratorService.getReferentialReferenceDecorator(ProgramDto.class).toString(getProgram()); + return programStr; + } + + protected String decorateTrip() { + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); + String tripStr = decoratorService.getTripReferenceDecorator(getTrip()).toString(getTrip()); + return tripStr; + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java new file mode 100644 index 0000000..d6705fb --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java @@ -0,0 +1,25 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DeleteFromLeftDataSynchronizeTask extends DataSynchronizeTaskSupport { + + public DeleteFromLeftDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + super(programReference, tripReference); + } + + @Override + public String getLabel() { + return t("observe.datasynchro.deleteFromLeftTask", decorateProgram(), decorateTrip()); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java new file mode 100644 index 0000000..b891c9a --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java @@ -0,0 +1,25 @@ +package fr.ird.observe.ui.admin.datasynchro; + +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 03/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DeleteFromRightDataSynchronizeTask extends DataSynchronizeTaskSupport { + + public DeleteFromRightDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + super(programReference, tripReference); + } + + @Override + public String getLabel() { + return t("observe.datasynchro.deleteFromRightTask", decorateProgram(), decorateTrip()); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java index 95aecc8..9f7f29e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java @@ -47,6 +47,7 @@ import org.apache.commons.logging.LogFactory; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -539,4 +540,24 @@ public class DataSelectionModel implements Serializable { return result; } + + public void addData(ReferentialReference<ProgramDto> program, DataReference trip) { + if (!getDatas().containsKey(program)) { + getDatas().put(program, new ArrayList<>()); + } + getDatas(program.getId()).add(trip); + firePropertyChange(PROPERTY_DATAS, getDatas()); + } + + public Set<ReferentialReference<ProgramDto>> getPrograms() { + return getDatas().keySet(); + } + + public void removeTrip(ReferentialReference<ProgramDto> program, DataReference trip) { + List<DataReference> trips = getDatas(program.getId()); + trips.remove(trip); + if (trips.isEmpty()) { + getDatas().remove(program); + } + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index 6c28585..97d0aa5 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -377,8 +377,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { } finally { getBridge().setPathToSelect(); if (log.isInfoEnabled()) { - log.info("Creates " + (ObserveNode.count - count) + - " nodes to select path " + Arrays.toString(path)); + log.info("Creates " + (ObserveNode.count - count) + " nodes to select path " + Arrays.toString(path)); } } } @@ -457,6 +456,35 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { return result; } + public ObserveNode addSimpleTrip(ObserveNode parentNode, DataReference<?> bean) { + ObserveNode result; + + if (bean.getType().isAssignableFrom(TripSeineDto.class)) { + + ProgramSeineNodeChildLoador loador = getChildLoador(ProgramSeineNodeChildLoador.class); + boolean addChilds = loador.isAddChilds(); + loador.setAddChilds(false); + try { + result = loador.createNode((DataReference<TripSeineDto>) bean, dataProvider); + insertNode(parentNode, result); + } finally { + loador.setAddChilds(addChilds); + } + } else { + + ProgramLonglineNodeChildLoador loador = getChildLoador(ProgramLonglineNodeChildLoador.class); + boolean addChilds = loador.isAddChilds(); + loador.setAddChilds(false); + try { + result = loador.createNode((DataReference<TripLonglineDto>) bean, dataProvider); + insertNode(parentNode, result); + } finally { + loador.setAddChilds(addChilds); + } + } + return result; + } + public ObserveNode addRoute(ObserveNode parentNode, DataReference<RouteDto> bean) { RoutesNodeChildLoador loador = getChildLoador(RoutesNodeChildLoador.class); @@ -508,7 +536,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { public ObserveNode addProgram(ReferentialReference<ProgramDto> bean) { Set<ReferentialReference<ProgramDto>> programs = getDataProvider().getDataSource().getReferentialReferences(ProgramDto.class); - List data = Lists.newArrayList(programs); + List<ReferentialReference<ProgramDto>> data = Lists.newArrayList(programs); int newIndex = 0; if (CollectionUtils.isNotEmpty(data)) { sortPrograms(data); @@ -536,6 +564,35 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { refreshNode(result, false); } + public ObserveNode addProgram(Set<ReferentialReference<ProgramDto>> existingPrograms, ReferentialReference<ProgramDto> bean) { + + List<ReferentialReference<ProgramDto>> data = Lists.newArrayList(existingPrograms); + data.add(bean); + int newIndex = 0; + if (CollectionUtils.isNotEmpty(data)) { + sortPrograms(data); + newIndex = data.indexOf(bean); + } + RootNodeChildLoador loador = getChildLoador(RootNodeChildLoador.class); + ObserveNode result = loador.createNode(bean, dataProvider); + insertNode(getRootNode(), result, newIndex); + return result; + } + + public void removeTrip(ReferentialReference<ProgramDto> program, DataReference trip) { + + ObserveNode rootNode = getRootNode(); + ObserveNode programNode = rootNode.getChild(program.getId(), getBridge(), dataProvider); + Preconditions.checkNotNull(programNode, "Could not find program node with id: " + program); + ObserveNode tripNode = programNode.getChild(trip.getId(), getBridge(), dataProvider); + Preconditions.checkNotNull(tripNode, "Could not find program node with id: " + trip); + removeNode(tripNode); + + if (programNode.isLeaf()) { + removeProgram(program.getId()); + } + } + public void reloadSelectedNode(boolean refreshFromParent, boolean refreshChilds) { ObserveNode node = getSelectedNode(); ((AbstrctReferenceNodeSupport) node).setReloadEntity(true); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java index 70c65bc..b786b43 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java @@ -134,5 +134,12 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Data } + public void setAddChilds(boolean addChilds) { + this.addChilds = addChilds; + } + + public boolean isAddChilds() { + return addChilds; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java index 03899dc..5dc088f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java @@ -128,4 +128,12 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<DataRef return result; } + + public boolean isAddChilds() { + return addChilds; + } + + public void setAddChilds(boolean addChilds) { + this.addChilds = addChilds; + } } 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 908924b..7d26d45 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 @@ -1042,6 +1042,10 @@ observe.content.mode.create.tip= observe.content.mode.read.tip= observe.content.mode.update.tip= observe.datasynchro.actionsToPerform= +observe.datasynchro.copyToLeftTask= +observe.datasynchro.copyToRightTask= +observe.datasynchro.deleteFromLeftTask= +observe.datasynchro.deleteFromRightTask= observe.encounter.action.create=Insert this encounter observe.encounter.action.create.tip=Insert this encounter observe.encounter.count=Count 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 6b9c8cf..bc0bf88 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 @@ -1042,6 +1042,10 @@ observe.content.mode.create.tip=Objeto en proceso de creación observe.content.mode.read.tip=Objeto no se puede editar observe.content.mode.update.tip=Objeto en proceso de edición observe.datasynchro.actionsToPerform= +observe.datasynchro.copyToLeftTask= +observe.datasynchro.copyToRightTask= +observe.datasynchro.deleteFromLeftTask= +observe.datasynchro.deleteFromRightTask= observe.encounter.action.create= observe.encounter.action.create.tip= observe.encounter.count= 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 770bc94..279004e 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 @@ -1041,6 +1041,10 @@ observe.content.mode.create.tip=L'objet est en cours de création observe.content.mode.read.tip=L'objet n'est pas éditable observe.content.mode.update.tip=L'objet est en cours d'édition observe.datasynchro.actionsToPerform=Opérations à réaliser +observe.datasynchro.copyToLeftTask=Copier vers la base de gauche \: %s - %s +observe.datasynchro.copyToRightTask=Copier vers la base de droite \: %s - %s +observe.datasynchro.deleteFromLeftTask=Supprimer de la base de gauche \: %s - %s +observe.datasynchro.deleteFromRightTask=Supprimer de la base de droite \: %s - %s observe.encounter.action.create=Insérer cette rencontre observe.encounter.action.create.tip=Insérer cette rencontre observe.encounter.count=Nombre -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit d5fb3d4af7aa5f3aa003ca2313010fd5ad4de6a7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 11:35:44 2016 +0200 debut de gestion de la prise en compte des marées présentes des deux cotés lors d'une recopie --- .../datasynchro/CopyToLeftDataSynchronizeTask.java | 10 ++++- .../CopyToRightDataSynchronizeTask.java | 9 ++++- .../ui/admin/datasynchro/DataSynchroUIHandler.java | 47 +++++++++++++++------- .../ui/storage/tabs/DataSelectionModel.java | 5 +++ 4 files changed, 55 insertions(+), 16 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java index 26689a2..15cf796 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java @@ -14,12 +14,20 @@ import static org.nuiton.i18n.I18n.t; */ public class CopyToLeftDataSynchronizeTask extends DataSynchronizeTaskSupport { - public CopyToLeftDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + private final boolean tripExistOnLeft; + + public CopyToLeftDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference, boolean tripExistOnLeft) { super(programReference, tripReference); + this.tripExistOnLeft=tripExistOnLeft; } @Override public String getLabel() { return t("observe.datasynchro.copyToLeftTask", decorateProgram(), decorateTrip()); } + + public boolean isTripExistOnLeft() { + return tripExistOnLeft; + } + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java index 03bf7f0..ecb6420 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java @@ -14,8 +14,11 @@ import static org.nuiton.i18n.I18n.t; */ public class CopyToRightDataSynchronizeTask extends DataSynchronizeTaskSupport { - public CopyToRightDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { + private final boolean tripExistOnRight; + + public CopyToRightDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference, boolean tripExistOnRight) { super(programReference, tripReference); + this.tripExistOnRight = tripExistOnRight; } @Override @@ -23,4 +26,8 @@ public class CopyToRightDataSynchronizeTask extends DataSynchronizeTaskSupport { return t("observe.datasynchro.copyToRightTask", decorateProgram(), decorateTrip()); } + public boolean isTripExistOnRight() { + return tripExistOnRight; + } + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java index 98b49fd..0c0a3a2 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -112,16 +112,24 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { public void addCopyToLeftTasks() { - DataSelectionModel selectionDataModel = getStepModel().getRightSelectionDataModel(); - ObserveTreeHelper treeHelper = getUi().getRightTreeHelper(); - Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); - selectionDataModel.removeAllSelectedData(); + DataSelectionModel rightSelectionDataModel = getStepModel().getRightSelectionDataModel(); + DataSelectionModel leftSelectionDataModel = getStepModel().getLeftSelectionDataModel(); + ObserveTreeHelper rightTreeHelper = getUi().getRightTreeHelper(); + ObserveTreeHelper leftTreeHelper = getUi().getLeftTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = rightSelectionDataModel.getSelectedDataByProgram(); + rightSelectionDataModel.removeAllSelectedData(); for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { ReferentialReference<ProgramDto> program = entry.getKey(); for (DataReference trip : entry.getValue()) { - getStepModel().addTask(new CopyToLeftDataSynchronizeTask(program, trip)); - treeHelper.removeTrip(program, trip); - selectionDataModel.removeTrip(program, trip); + boolean tripExistOnLeft = leftSelectionDataModel.containsData(program, trip); + getStepModel().addTask(new CopyToLeftDataSynchronizeTask(program, trip, tripExistOnLeft)); + rightTreeHelper.removeTrip(program, trip); + rightSelectionDataModel.removeTrip(program, trip); + + if (tripExistOnLeft) { + leftTreeHelper.removeTrip(program, trip); + leftSelectionDataModel.removeTrip(program, trip); + } } } @@ -130,16 +138,25 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { public void addCopyToRightTasks() { - DataSelectionModel selectionDataModel = getStepModel().getLeftSelectionDataModel(); - ObserveTreeHelper treeHelper = getUi().getLeftTreeHelper(); - Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = selectionDataModel.getSelectedDataByProgram(); - selectionDataModel.removeAllSelectedData(); + DataSelectionModel leftSelectionDataModel = getStepModel().getLeftSelectionDataModel(); + DataSelectionModel rightSelectionDataModel = getStepModel().getRightSelectionDataModel(); + ObserveTreeHelper leftTreeHelper = getUi().getLeftTreeHelper(); + ObserveTreeHelper rightTreeHelper = getUi().getRightTreeHelper(); + Map<ReferentialReference<ProgramDto>, List<DataReference>> selectedDataByProgram = leftSelectionDataModel.getSelectedDataByProgram(); + leftSelectionDataModel.removeAllSelectedData(); for (Map.Entry<ReferentialReference<ProgramDto>, List<DataReference>> entry : selectedDataByProgram.entrySet()) { ReferentialReference<ProgramDto> program = entry.getKey(); for (DataReference trip : entry.getValue()) { - getStepModel().addTask(new CopyToRightDataSynchronizeTask(program, trip)); - treeHelper.removeTrip(program, trip); - selectionDataModel.removeTrip(program, trip); + + boolean tripExistOnRight = rightSelectionDataModel.containsData(program, trip); + getStepModel().addTask(new CopyToRightDataSynchronizeTask(program, trip, tripExistOnRight)); + leftTreeHelper.removeTrip(program, trip); + leftSelectionDataModel.removeTrip(program, trip); + + if (tripExistOnRight) { + rightTreeHelper.removeTrip(program, trip); + rightSelectionDataModel.removeTrip(program, trip); + } } } @@ -188,6 +205,8 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { DataSynchronizeTaskSupport task = getStepModel().getTasks().getElementAt(selectionIndex); getStepModel().getTasks().removeElementAt(selectionIndex); + //TODO Deal with tripExistOnxxx for copy tasks + ObserveTreeHelper treeHelper; DataSelectionModel selectionDataModel; if (task instanceof CopyToLeftDataSynchronizeTask || task instanceof DeleteFromRightDataSynchronizeTask) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java index 9f7f29e..93d2cf8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java @@ -229,6 +229,11 @@ public class DataSelectionModel implements Serializable { return datas; } + public boolean containsData(ReferentialReference<ProgramDto> program, DataReference trip) { + List<DataReference> datas = getDatas(program.getId()); + return datas!=null && datas.contains(trip); + } + public Set<DataReference> getSelectedData() { if (selectedData == null) { selectedData = Sets.newHashSet(); -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit c1cee17e2b11b2230a92ba8a28adc0f7251175a7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 12:08:05 2016 +0200 Début d'implantation de la logique de synchronisation de données --- .../ui/admin/datasynchro/DataSynchroUIHandler.java | 68 +++++++++++++- .../datasynchro/DataSynchronizeCopyTask.java | 27 ++++++ .../datasynchro/DataSynchronizeDeleteTask.java | 14 +++ .../datasynchro/DataSynchronizeRequest.java | 90 ++++++++++++++++++ .../datasynchro/DataSynchronizeService.java | 41 +++++++++ .../datasynchro/DataSyncrhonizeTaskSupport.java | 26 ++++++ .../datasynchro/DataSynchronizeServiceTopia.java | 102 +++++++++++++++++++++ 7 files changed, 367 insertions(+), 1 deletion(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java index 0c0a3a2..f59acf1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -1,9 +1,14 @@ package fr.ird.observe.ui.admin.datasynchro; import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; 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.datasynchro.DataSynchronizeCopyTask; +import fr.ird.observe.services.service.actions.datasynchro.DataSynchronizeDeleteTask; +import fr.ird.observe.services.service.actions.datasynchro.DataSynchronizeRequest; +import fr.ird.observe.services.service.actions.datasynchro.DataSynchronizeService; import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; @@ -14,6 +19,7 @@ import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.border.TitledBorder; import java.awt.event.MouseEvent; @@ -241,7 +247,67 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { public void doExecuteAction() { - //TODO + ObserveSwingDataSource leftSource = getStepModel().getLeftSource(); + boolean leftSourceIsH2 = leftSource.getConfiguration() instanceof ObserveDataSourceConfigurationTopiaH2; + + ObserveSwingDataSource rightSource = getStepModel().getRightSource(); + boolean rightSourceIsH2 = rightSource.getConfiguration() instanceof ObserveDataSourceConfigurationTopiaH2; + + DefaultListModel<DataSynchronizeTaskSupport> tasks = getStepModel().getTasks(); + int size = tasks.size(); + + DataSynchronizeRequest.Builder leftDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(rightSourceIsH2); + DataSynchronizeRequest.Builder rightDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(leftSourceIsH2); + for (int i = 0; i < size; i++) { + + DataSynchronizeTaskSupport task = tasks.getElementAt(i); + + if (task instanceof DeleteFromLeftDataSynchronizeTask) { + + leftDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); + continue; + } + + if (task instanceof DeleteFromRightDataSynchronizeTask) { + rightDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); + continue; + } + + if (task instanceof CopyToLeftDataSynchronizeTask) { + CopyToLeftDataSynchronizeTask copyTask = (CopyToLeftDataSynchronizeTask) task; + if (copyTask.isTripExistOnLeft()) { + leftDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); + } + leftDataSynchronizeRequestBuilder.addCopyTask(new DataSynchronizeCopyTask(task.getProgram().getId(), task.getTrip().getId())); + continue; + } + + if (task instanceof CopyToRightDataSynchronizeTask) { + CopyToRightDataSynchronizeTask copyTask = (CopyToRightDataSynchronizeTask) task; + if (copyTask.isTripExistOnRight()) { + rightDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); + } + rightDataSynchronizeRequestBuilder.addCopyTask(new DataSynchronizeCopyTask(task.getProgram().getId(), task.getTrip().getId())); + } + + } + + + DataSynchronizeService leftDataSynchronizeService = leftSource.newDataSynchronizeService(); + DataSynchronizeService rightDataSynchronizeService = rightSource.newDataSynchronizeService(); + + DataSynchronizeRequest leftDataSynchronizeRequest = leftDataSynchronizeRequestBuilder.build(); + if (leftDataSynchronizeRequest.isNotEmpty()) { + rightDataSynchronizeService.prepareRequestOnOppositeDataSource(leftDataSynchronizeRequest); + leftDataSynchronizeService.executeRequest(leftDataSynchronizeRequest); + } + + DataSynchronizeRequest rightDataSynchronizeRequest = rightDataSynchronizeRequestBuilder.build(); + if (rightDataSynchronizeRequest.isNotEmpty()) { + leftDataSynchronizeService.prepareRequestOnOppositeDataSource(rightDataSynchronizeRequest); + rightDataSynchronizeService.executeRequest(rightDataSynchronizeRequest); + } + getModel().setStepState(WizardState.SUCCESSED); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeCopyTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeCopyTask.java new file mode 100644 index 0000000..2217414 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeCopyTask.java @@ -0,0 +1,27 @@ +package fr.ird.observe.services.service.actions.datasynchro; + +/** + * Created on 08/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DataSynchronizeCopyTask extends DataSyncrhonizeTaskSupport { + + /** + * Contient le code sql de la copie de la marée. + */ + private byte[] dataContent; + + public DataSynchronizeCopyTask(String programId, String tripId) { + super(programId, tripId); + } + + public byte[] getDataContent() { + return dataContent; + } + + public void setDataContent(byte[] dataContent) { + this.dataContent = dataContent; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java new file mode 100644 index 0000000..490eae0 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java @@ -0,0 +1,14 @@ +package fr.ird.observe.services.service.actions.datasynchro; + +/** + * Created on 08/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class DataSynchronizeDeleteTask extends DataSyncrhonizeTaskSupport { + + public DataSynchronizeDeleteTask(String programId, String tripId) { + super(programId, tripId); + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java new file mode 100644 index 0000000..16cc43f --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java @@ -0,0 +1,90 @@ +package fr.ird.observe.services.service.actions.datasynchro; + +import com.google.common.collect.ImmutableSet; +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 oppositeH2) { + return new Builder(oppositeH2); + } + + /** + * 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 oppositeH2; + private final ImmutableSet.Builder<DataSynchronizeCopyTask> copyTasksBuilder = ImmutableSet.builder(); + private final ImmutableSet.Builder<DataSynchronizeDeleteTask> deleteTasksBuilder = ImmutableSet.builder(); + + public Builder(boolean oppositeH2) { + this.oppositeH2 = oppositeH2; + } + + public DataSynchronizeRequest build() { + return new DataSynchronizeRequest(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; + } + + private DataSynchronizeRequest(boolean oppositeH2, ImmutableSet<DataSynchronizeCopyTask> copyTasks, ImmutableSet<DataSynchronizeDeleteTask> deleteTasks) { + this.oppositeH2 = oppositeH2; + this.copyTasks = copyTasks; + this.deleteTasks = deleteTasks; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java new file mode 100644 index 0000000..1f15d58 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java @@ -0,0 +1,41 @@ +package fr.ird.observe.services.service.actions.datasynchro; + +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 { + + /** + * Prépare la demande donnée en paramètre. Par exemple s'il y a des demandes de recopie, on récupère le 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 + void prepareRequestOnOppositeDataSource(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 request la demande des tâches à réaliser. + */ + @ReadDataPermission + @WriteDataPermission + @Write + @PostRequest + void executeRequest(DataSynchronizeRequest request); + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSyncrhonizeTaskSupport.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSyncrhonizeTaskSupport.java new file mode 100644 index 0000000..c90b217 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSyncrhonizeTaskSupport.java @@ -0,0 +1,26 @@ +package fr.ird.observe.services.service.actions.datasynchro; + +/** + * Created on 08/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public abstract class DataSyncrhonizeTaskSupport { + + private final String programId; + private final String tripId; + + protected DataSyncrhonizeTaskSupport(String programId, String tripId) { + this.programId = programId; + this.tripId = tripId; + } + + public String getProgramId() { + return programId; + } + + public String getTripId() { + return tripId; + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java new file mode 100644 index 0000000..3dead6c --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java @@ -0,0 +1,102 @@ +package fr.ird.observe.services.service.actions.datasynchro; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.entities.Entities; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.longline.TripLonglineTopiaDao; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.entities.seine.TripSeineTopiaDao; +import fr.ird.observe.services.ObserveServiceContextTopia; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.SqlScriptProducerService; +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 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 void prepareRequestOnOppositeDataSource(DataSynchronizeRequest request) { + + for (DataSynchronizeCopyTask copyTask : request.getCopyTasks()) { + + if (log.isInfoEnabled()) { + log.info("Obtain trip sql content: " + copyTask.getProgramId() + " / " + copyTask.getTripId()); + } + + // get the data content + + SqlScriptProducerRequest sqlRequest; + if (request.isOppositeH2()) { + sqlRequest = SqlScriptProducerRequest.forH2(); + } else { + sqlRequest = SqlScriptProducerRequest.forPostgres(); + } + sqlRequest.addDataIds(ImmutableSet.of(copyTask.getTripId())); + byte[] sqlScript = sqlScriptProducerService.produceSqlScript(sqlRequest); + + // store it in task + copyTask.setDataContent(sqlScript); + + } + + } + + @Override + public void executeRequest(DataSynchronizeRequest request) { + + TripSeineTopiaDao tripSeineDao = serviceContext.getTopiaPersistenceContext().getTripSeineDao(); + TripLonglineTopiaDao tripLonglineDao = serviceContext.getTopiaPersistenceContext().getTripLonglineDao(); + + for (DataSynchronizeDeleteTask deleteTask : request.getDeleteTasks()) { + + String tripId = deleteTask.getTripId(); + boolean longlineId = Entities.isLonglineId(tripId); + + if (longlineId) { + + if (log.isInfoEnabled()) { + log.info("Delete longline trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); + } + TripLongline tripLongline = tripLonglineDao.forTopiaIdEquals(tripId).findUnique(); + tripLonglineDao.delete(tripLongline); + + } else { + + if (log.isInfoEnabled()) { + log.info("Delete seine trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); + } + TripSeine tripSeine = tripSeineDao.forTopiaIdEquals(tripId).findUnique(); + tripSeineDao.delete(tripSeine); + + } + + } + + for (DataSynchronizeCopyTask copyTask : request.getCopyTasks()) { + + if (log.isInfoEnabled()) { + log.info("Copy trip: " + copyTask.getProgramId() + " / " + copyTask.getTripId()); + } + serviceContext.getTopiaApplicationContext().executeSqlStatements(copyTask.getDataContent()); + + } + } +} -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit f68a088128dcbac272d85c19dc6e65c5d9b8c4d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 12:08:09 2016 +0200 Meilleure utilisation des déclarations de service --- .../fr/ird/observe/db/ObserveSwingDataSource.java | 118 +++++++++++++++++---- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 4 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 2 +- .../observe/ui/admin/export/ExportUIHandler.java | 4 +- .../observe/ui/admin/report/ReportUIHandler.java | 4 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../impl/seine/FloatingObjectUIHandler.java | 2 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 2 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 2 +- .../ird/observe/ui/storage/StorageUIHandler.java | 2 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 4 +- .../ui/storage/tabs/DataSelectionModel.java | 4 +- .../ird/observe/validation/ValidationContext.java | 18 ++-- 13 files changed, 123 insertions(+), 45 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 4da3d56..88eb540 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 @@ -55,10 +55,24 @@ import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseDestroyNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.ObserveReferentialCache; +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.actions.datasynchro.DataSynchronizeService; +import fr.ird.observe.services.service.actions.export.ReplicateTripService; +import fr.ird.observe.services.service.actions.report.ReportService; import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeLocalService; import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeRemoteService; +import fr.ird.observe.services.service.actions.validate.ValidateService; +import fr.ird.observe.services.service.longline.ActivityLonglineService; +import fr.ird.observe.services.service.longline.SetLonglineService; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.ActivitySeineService; +import fr.ird.observe.services.service.seine.FloatingObjectService; +import fr.ird.observe.services.service.seine.RouteService; +import fr.ird.observe.services.service.seine.SetSeineService; +import fr.ird.observe.services.service.seine.TripSeineService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.beans.AbstractSerializableBean; @@ -172,7 +186,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements fireOpening(); - DataSourceService dataSourceService = newService(DataSourceService.class); + DataSourceService dataSourceService = newDataSourceService(); connection = dataSourceService.open(configuration); @@ -189,7 +203,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements fireNewMessage(t("observe.storage.message.creating", getLabel())); fireOpening(); - DataSourceService dataSourceService = newService(DataSourceService.class); + DataSourceService dataSourceService = newDataSourceService(); connection = dataSourceService.create(configuration, createDto); @@ -210,7 +224,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements try { // si la connection a expirée la source a deja été fermer pas le serveur if (!expired) { - DataSourceService dataSourceService = newService(DataSourceService.class); + DataSourceService dataSourceService = newDataSourceService(); dataSourceService.close(); } @@ -233,7 +247,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements referentialCache.close(); - DataSourceService dataSourceService = newService(DataSourceService.class); + DataSourceService dataSourceService = newDataSourceService(); dataSourceService.destroy(); @@ -248,7 +262,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements checkIsNotOpen(); - DataSourceService dataSourceService = newService(DataSourceService.class); + DataSourceService dataSourceService = newDataSourceService(); Set<ObserveDbUserDto> users = dataSourceService.getUsers(getConfiguration()); @@ -260,7 +274,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements checkIsNotOpen(); - DataSourceService dataSourceService = newService(DataSourceService.class); + DataSourceService dataSourceService = newDataSourceService(); dataSourceService.applySecurity(getConfiguration(), users); } @@ -291,7 +305,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements if (answer == JOptionPane.YES_OPTION) { - DataSourceService dataSourceService = newService(DataSourceService.class); + DataSourceService dataSourceService = newDataSourceService(); if (log.isInfoEnabled()) { @@ -307,7 +321,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements public ImmutableMap<Class<?>, ReferentialReferenceSet<?>> updateReferentialReferenceSetsCache(String referentialReferenceSetsRequestName) { - ReferentialService referentialService = newService(ReferentialService.class); + ReferentialService referentialService = newReferentialService(); return referentialCache.loadReferenceSets(referentialService, referentialReferenceSetsRequestName); } @@ -316,7 +330,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements checkIsOpen(); - ReferentialService referentialService = newService(ReferentialService.class); + ReferentialService referentialService = newReferentialService(); return referentialCache.getReferentialReferenceSet(referentialService, type); } @@ -342,6 +356,26 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements return newService(SqlScriptProducerService.class); } + public ValidateService newValidateService() { + return newService(ValidateService.class); + } + + public ReportService newReportService() { + return newService(ReportService.class); + } + + public PingService newPingService() { + return newService(PingService.class); + } + + public ReplicateTripService newReplicateTripService() { + return newService(ReplicateTripService.class); + } + + public ConsolidateDataService newConsolidateDataService() { + return newService(ConsolidateDataService.class); + } + public UnidirectionalReferentialSynchronizeLocalService newUnidirectionalReferentialSynchronizeLocalService() { return newService(UnidirectionalReferentialSynchronizeLocalService.class); } @@ -350,21 +384,55 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements return newService(UnidirectionalReferentialSynchronizeRemoteService.class); } - public <S extends ObserveService> S newService(Class<S> serviceType) { + public DataSynchronizeService newDataSynchronizeService() { + return newService(DataSynchronizeService.class); + } - ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(); + public DataSourceService newDataSourceService() { + return newService(DataSourceService.class); + } - ObserveServiceMainFactory serviceFactory = ObserveServiceMainFactory.get(); + public ReferentialService newReferentialService() { + return newService(ReferentialService.class); + } - S service = serviceFactory.newService(observeServiceInitializer, serviceType); - return service; + public TripSeineService newTripSeineService() { + return newService(TripSeineService.class); + } + + public RouteService newRouteService() { + return newService(RouteService.class); + } + + public FloatingObjectService newFloatingObjectService() { + return newService(FloatingObjectService.class); + } + + public ActivitySeineService newActivitySeineService() { + return newService(ActivitySeineService.class); + } + + public SetSeineService newSetSeineService() { + return newService(SetSeineService.class); + } + + public TripLonglineService newTripLonglineService() { + return newService(TripLonglineService.class); + } + + public ActivityLonglineService newActivityLonglineService() { + return newService(ActivityLonglineService.class); + } + + public SetLonglineService newSetLonglineService() { + return newService(SetLonglineService.class); } public ObserveDataSourceInformation checkCanConnect() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { checkIsNotAlreadyOpen(); - DataSourceService dataSourceService = newService(DataSourceService.class); + DataSourceService dataSourceService = newDataSourceService(); ObserveDataSourceInformation dataSourceInformation = dataSourceService.checkCanConnect(configuration); @@ -427,6 +495,14 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements } } + public boolean isExpired() { + return expired; + } + + public void expired() { + this.expired = true; + } + protected ObserveServiceInitializer getObserveServiceInitializer() { ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); @@ -501,11 +577,13 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements Preconditions.checkState(!isOpen(), "Connection is open"); } - public boolean isExpired() { - return expired; - } + private <S extends ObserveService> S newService(Class<S> serviceType) { - public void expired() { - this.expired = true; + ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(); + + ObserveServiceMainFactory serviceFactory = ObserveServiceMainFactory.get(); + + S service = serviceFactory.newService(observeServiceInitializer, serviceType); + return service; } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index 77cf722..9776e7c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -1333,11 +1333,11 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { List<DataReference<?>> existingTrip = Lists.newArrayList(); - TripSeineService tripSeineService = source.newService(TripSeineService.class); + TripSeineService tripSeineService = source.newTripSeineService(); DataReferenceSet<TripSeineDto> tripSeineSet = tripSeineService.getAllTripSeine(); existingTrip.addAll(tripSeineSet.getReferences()); - TripLonglineService tripLonglineService = source.newService(TripLonglineService.class); + TripLonglineService tripLonglineService = source.newTripLonglineService(); DataReferenceSet<TripLonglineDto> tripLonglineSet = tripLonglineService.getAllTripLongline(); existingTrip.addAll(tripLonglineSet.getReferences()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java index 15c0546..d6aa2cd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java @@ -128,7 +128,7 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { try { - ConsolidateDataService consolidateDataService = dataSource.newService(ConsolidateDataService.class); + ConsolidateDataService consolidateDataService = dataSource.newConsolidateDataService(); ConsolidateTripSeineDataRequest request = new ConsolidateTripSeineDataRequest(); request.setTripSeineIds(tripIds); 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 ad9afb8..e60a641 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 @@ -303,7 +303,7 @@ public class ExportUIHandler extends AdminTabUIHandler { try { openSource(source); - ReplicateTripService sourceReplicateService = source.newService(ReplicateTripService.class); + ReplicateTripService sourceReplicateService = source.newReplicateTripService(); tripExportResults = sourceReplicateService.exportTrips(request); } finally { @@ -317,7 +317,7 @@ public class ExportUIHandler extends AdminTabUIHandler { try { openSource(target); - ReplicateTripService targetReplicateService = target.newService(ReplicateTripService.class); + ReplicateTripService targetReplicateService = target.newReplicateTripService(); result = targetReplicateService.importTrips(tripExportResults); } finally { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java index d69f170..e725ab4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java @@ -313,7 +313,7 @@ public class ReportUIHandler extends AdminTabUIHandler { } - ReportService reportService = dataSource.newService(ReportService.class); + ReportService reportService = dataSource.newReportService(); report = reportService.populateVariables(report, getModel().getSelectedTrip().getId()); @@ -428,7 +428,7 @@ public class ReportUIHandler extends AdminTabUIHandler { dataSource.open(); } - ReportService reportService = dataSource.newService(ReportService.class); + ReportService reportService = dataSource.newReportService(); DataMatrix data = reportService.executeReport(report, trip.getId()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java index 0984941..9266ebf 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java @@ -408,7 +408,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { dataSourceToValidate.open(); } - ValidateService validateService = dataSourceToValidate.newService(ValidateService.class); + ValidateService validateService = dataSourceToValidate.newValidateService(); Map<Class<? extends IdDto>, ValidateResultForDtoType> messages = Maps.newHashMap(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectUIHandler.java index 9e51cbc..0968063 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectUIHandler.java @@ -220,6 +220,6 @@ public class FloatingObjectUIHandler extends ContentUIHandler<FloatingObjectDto> } protected FloatingObjectService getFloatingObjectService() { - return getDataSource().newService(FloatingObjectService.class); + return getDataSource().newFloatingObjectService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java index 99ebe34..9013221 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java @@ -196,7 +196,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip public List<GearUseFeaturesMeasurementLonglineDto> getDefaultGearUseFeaturesMeasurementLongline(String gearId) { - ReferentialService referentialService = getDataSource().newService(ReferentialService.class); + ReferentialService referentialService = getDataSource().newReferentialService(); Form<GearDto> gearDtoForm = referentialService.loadForm(GearDto.class, gearId); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java index f3c55b3..3477614 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java @@ -194,7 +194,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei public List<GearUseFeaturesMeasurementSeineDto> getDefaultGearUseFeaturesMeasurementSeine(String gearId) { - ReferentialService referentialService = getDataSource().newService(ReferentialService.class); + ReferentialService referentialService = getDataSource().newReferentialService(); Form<GearDto> gearDtoForm = referentialService.loadForm(GearDto.class, gearId); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index 6096c18..34a5147 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -629,7 +629,7 @@ public class StorageUIHandler { File dst, Set<DataReference> trips) { - SqlScriptProducerService dumpService = dataSource.newService(SqlScriptProducerService.class); + SqlScriptProducerService dumpService = dataSource.newSqlScriptProducerService(); if (trips == null) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index eddc5d8..89f63fe 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -1595,7 +1595,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { source.open(); - SqlScriptProducerService dumpService = source.newService(SqlScriptProducerService.class); + SqlScriptProducerService dumpService = source.newSqlScriptProducerService(); SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential(); byte[] dump = dumpService.produceSqlScript(request); @@ -1744,7 +1744,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (DbMode.USE_SERVER.equals(getDbMode()) || DbMode.CREATE_LOCAL.equals(getDbMode()) && CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode)) { - PingService pingService = dataSource.newService(PingService.class); + PingService pingService = dataSource.newPingService(); Version modelServerVersion = pingService.ping(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java index 93d2cf8..cf6e505 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java @@ -69,8 +69,8 @@ public class DataSelectionModel implements Serializable { Map<ReferentialReference<ProgramDto>, List<DataReference>> datas = Maps.newHashMap(); - TripSeineService tripSeineService = source.newService(TripSeineService.class); - TripLonglineService tripLonglineService = source.newService(TripLonglineService.class); + TripSeineService tripSeineService = source.newTripSeineService(); + TripLonglineService tripLonglineService = source.newTripLonglineService(); Set<ReferentialReference<ProgramDto>> programSet = source.getReferentialReferences(ProgramDto.class); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java index 551762f..d794766 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java @@ -69,7 +69,7 @@ public class ValidationContext { @Override public TripSeineDto get(ObserveSwingDataSource dataSource, String id) { - TripSeineService service = dataSource.newService(TripSeineService.class); + TripSeineService service = dataSource.newTripSeineService(); TripSeineDto dto = service.loadDto(id); return dto; } @@ -79,7 +79,7 @@ public class ValidationContext { @Override public RouteDto get(ObserveSwingDataSource dataSource, String id) { - RouteService service = dataSource.newService(RouteService.class); + RouteService service = dataSource.newRouteService(); RouteDto dto = service.loadDto(id); return dto; } @@ -89,7 +89,7 @@ public class ValidationContext { @Override public ActivitySeineDto get(ObserveSwingDataSource dataSource, String id) { - ActivitySeineService service = dataSource.newService(ActivitySeineService.class); + ActivitySeineService service = dataSource.newActivitySeineService(); ActivitySeineDto dto = service.loadDto(id); return dto; } @@ -99,7 +99,7 @@ public class ValidationContext { @Override public TripLonglineDto get(ObserveSwingDataSource dataSource, String id) { - TripLonglineService service = dataSource.newService(TripLonglineService.class); + TripLonglineService service = dataSource.newTripLonglineService(); TripLonglineDto dto = service.loadDto(id); return dto; } @@ -109,7 +109,7 @@ public class ValidationContext { @Override public ActivityLonglineDto get(ObserveSwingDataSource dataSource, String id) { - ActivityLonglineService service = dataSource.newService(ActivityLonglineService.class); + ActivityLonglineService service = dataSource.newActivityLonglineService(); ActivityLonglineDto dto = service.loadDto(id); return dto; } @@ -119,7 +119,7 @@ public class ValidationContext { @Override public SetSeineDto get(ObserveSwingDataSource dataSource, String id) { - SetSeineService service = dataSource.newService(SetSeineService.class); + SetSeineService service = dataSource.newSetSeineService(); SetSeineDto dto = service.loadDto(id); return dto; } @@ -129,7 +129,7 @@ public class ValidationContext { @Override public SetLonglineDto get(ObserveSwingDataSource dataSource, String id) { - SetLonglineService service = dataSource.newService(SetLonglineService.class); + SetLonglineService service = dataSource.newSetLonglineService(); SetLonglineDto dto = service.loadDto(id); return dto; } @@ -139,7 +139,7 @@ public class ValidationContext { @Override public FloatingObjectDto get(ObserveSwingDataSource dataSource, String id) { - FloatingObjectService service = dataSource.newService(FloatingObjectService.class); + FloatingObjectService service = dataSource.newFloatingObjectService(); FloatingObjectDto dto = service.loadDto(id); return dto; } @@ -149,7 +149,7 @@ public class ValidationContext { @Override public SpeciesDto get(ObserveSwingDataSource dataSource, String id) { - ReferentialService service = dataSource.newService(ReferentialService.class); + ReferentialService service = dataSource.newReferentialService(); SpeciesDto dto = service.loadSpecies(id); return dto; } -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 3dc6ce0aeae64d2bf50f3fe206cc7b077f464fd5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:56:27 2016 +0200 Make delete actions works --- .../service/sql/batch/actions/AbstractTablesAction.java | 5 ++++- .../topia/service/sql/batch/actions/DeleteTablesAction.java | 13 ++++++++++--- .../service/sql/batch/actions/ReplicateTablesAction.java | 6 ++++++ .../topia/service/sql/batch/actions/UpdateTablesAction.java | 5 +++++ .../topia/service/sql/batch/tables/TopiaSqlTables.java | 11 +++++++++++ 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java index 0851106..ae640f3 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java @@ -27,6 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.support.TopiaSqlWork; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import org.nuiton.util.TimeLog; import javax.sql.rowset.serial.SerialBlob; @@ -61,12 +62,14 @@ public abstract class AbstractTablesAction<R extends AbstractTablesRequest> exte super(request); } + protected abstract TopiaSqlTables getTables() ; + protected abstract void executeOnTable(R request, TopiaSqlTable table, PreparedStatement readStatement) throws SQLException; @Override protected final void execute() { - for (TopiaSqlTable table : request.getTables()) { + for (TopiaSqlTable table : getTables()) { long startTable = TimeLog.getTime(); diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java index bec2b89..ba71564 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java @@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import java.io.IOException; import java.sql.PreparedStatement; @@ -43,7 +44,7 @@ import java.util.List; */ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest> { - public static final String DELETE_STATEMENT = "DELETE FROM %s.%s WHERE topiaId = '%%s'"; + public static final String DELETE_STATEMENT = "DELETE FROM %s.%s WHERE topiaId = '%%s';\n"; /** * Logger. */ @@ -64,7 +65,7 @@ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest List<String> columnNames = getColumnNames(readResultSetMetaData, columnCount); String topiaIdColumnName = TopiaEntity.PROPERTY_TOPIA_ID.toLowerCase(); - int topiaIdColumnIndex = columnNames.indexOf(topiaIdColumnName); + int topiaIdColumnIndex = columnNames.indexOf(topiaIdColumnName) + 1; boolean useOutputWriter = useOutputWriter(); boolean useOutputDb = useOutputDb(); @@ -95,7 +96,7 @@ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest if (useOutputDb) { writeStatement.clearParameters(); - writeStatement.setObject(1, topiaId); + writeStatement.setString(1, topiaId); writeStatement.addBatch(); } @@ -123,6 +124,12 @@ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest } + @Override + protected TopiaSqlTables getTables() { + return request.getTables().reverse(); + + } + protected String newDeleteStatementSql(TopiaSqlTable table) { String sql = String.format(DELETE_STATEMENT, table.getSchemaName(), table.getTableName()); diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java index 792d5e9..cad3c45 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java @@ -25,6 +25,7 @@ package org.nuiton.topia.service.sql.batch.actions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import java.io.IOException; import java.sql.PreparedStatement; @@ -121,6 +122,11 @@ public class ReplicateTablesAction extends AbstractTablesAction<ReplicateTablesR } + @Override + protected TopiaSqlTables getTables() { + return request.getTables(); + } + protected String newInsertStatementSql(TopiaSqlTable table, List<String> columnNames) { StringBuilder columnNamesBuilder = new StringBuilder(); diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java index 2b48710..ed4bab4 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java @@ -28,6 +28,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import javax.sql.rowset.serial.SerialBlob; import java.io.IOException; @@ -57,6 +58,10 @@ public class UpdateTablesAction extends AbstractTablesAction<UpdateTablesRequest super(request); } + protected TopiaSqlTables getTables() { + return request.getTables(); + } + @Override protected void executeOnTable(UpdateTablesRequest request, TopiaSqlTable table, PreparedStatement readStatement) throws SQLException { diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java index 1b02f23..82f1a87 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java @@ -31,6 +31,7 @@ import org.nuiton.topia.persistence.TopiaEntityEnum; import java.util.Collections; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -79,6 +80,16 @@ public class TopiaSqlTables implements Iterable<TopiaSqlTable> { .toString(); } + public TopiaSqlTables reverse() { + List<TopiaSqlTable> reverseList = new LinkedList<>(); + for (TopiaSqlTable orderedTable : orderedTables) { + reverseList.add(0,orderedTable); + } + ImmutableSet<TopiaSqlTable> reverseSet = ImmutableSet.copyOf(reverseList); + + return new TopiaSqlTables(tablesByFullyTableName, reverseSet); + } + /** * Created on 02/01/16. * -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 7b3d335ae09b5e9e76cf68d07c92a52f6b684552 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:20 2016 +0200 Introduce delete request in SqlScriptProducerService --- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 1 + .../observe/ui/admin/save/SaveLocalUIHandler.java | 6 +- .../ird/observe/ui/storage/StorageUIHandler.java | 10 +-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 6 +- .../v1/SqlScriptProducerServiceController.java | 11 ++- .../injector/SqlScriptProducerRequestInjector.java | 12 ++-- ...quest.java => AddSqlScriptProducerRequest.java} | 20 +++--- ...st.java => DeleteSqlScriptProducerRequest.java} | 50 ++++--------- .../services/service/SqlScriptProducerService.java | 4 +- .../services/service/DataSourceServiceTopia.java | 22 +++--- .../service/SqlScriptProducerServiceTopia.java | 84 +++++++++++++++++++++- .../actions/export/ReplicateTripServiceTopia.java | 6 +- .../services/service/MigrateTestsDatabases.java | 24 +++---- .../service/SqlScriptProducerServiceTopiaTest.java | 18 ++--- 14 files changed, 169 insertions(+), 105 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index 9776e7c..e6133bd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -822,6 +822,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { localSourceInformation = localSource.checkCanConnect(); } catch (Exception e) { + //FIXME ! il faut faire quelque chose dans ce cas précis, au moins avertir l'utilisateur if (log.isErrorEnabled()) { log.error("unable to find local source information", e); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java index 8d3bd23..8762b78 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.admin.save; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeContext; import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeEngine; @@ -155,8 +155,8 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { File backupFile = stepModel.getBackupFile(); SqlScriptProducerService dumpService = source.newSqlScriptProducerService(); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addAllData(); - byte[] dump = dumpService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addAllData(); + byte[] dump = dumpService.produceAddSqlScript(request); try (FileOutputStream outputStream = new FileOutputStream(backupFile)) { IOUtils.write(dump, outputStream); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index 34a5147..c353459 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -44,7 +44,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.ObserveDbUserDto; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; @@ -602,8 +602,8 @@ public class StorageUIHandler { log.debug(dst); } - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - byte[] dataDump = dumpProducerService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + byte[] dataDump = dumpProducerService.produceAddSqlScript(request); try (FileOutputStream outputStream = new FileOutputStream(dst)) { @@ -655,8 +655,8 @@ public class StorageUIHandler { ImmutableSet<String> tripIds = ImmutableSet.copyOf(Iterables.transform(trips, DataReference.getIdFunction())); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addDataIds(tripIds); - byte[] dump = dumpService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().dataIdsToAdd(tripIds); + byte[] dump = dumpService.produceAddSqlScript(request); try (FileOutputStream fileOutputStream = new FileOutputStream(dst)) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index 89f63fe..67defd8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -44,11 +44,11 @@ import fr.ird.observe.services.security.UnknownObserveWebUserException; import fr.ird.observe.services.security.UnknownObserveWebUserForDatabaseException; import fr.ird.observe.services.security.UserLoginNotFoundException; import fr.ird.observe.services.security.UserPasswordNotFoundException; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; 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.PingService; -import fr.ird.observe.services.service.SqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.storage.tabs.SecurityModel; @@ -1597,8 +1597,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { SqlScriptProducerService dumpService = source.newSqlScriptProducerService(); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential(); - byte[] dump = dumpService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential(); + byte[] dump = dumpService.produceAddSqlScript(request); result.setImportDatabase(dump); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/SqlScriptProducerServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/SqlScriptProducerServiceController.java index 82cafc9..82b13ec 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/SqlScriptProducerServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/SqlScriptProducerServiceController.java @@ -22,7 +22,8 @@ package fr.ird.observe.application.web.controller.v1; * #L% */ -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; /** @@ -35,8 +36,12 @@ public class SqlScriptProducerServiceController extends ObserveAuthenticatedServ } @Override - public byte[] produceSqlScript(SqlScriptProducerRequest request) { - return service.produceSqlScript(request); + public byte[] produceAddSqlScript(AddSqlScriptProducerRequest request) { + return service.produceAddSqlScript(request); } + @Override + public byte[] produceDeleteSqlScript(DeleteSqlScriptProducerRequest request) { + return service.produceDeleteSqlScript(request); + } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/SqlScriptProducerRequestInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/SqlScriptProducerRequestInjector.java index 29771b6..33fb257 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/SqlScriptProducerRequestInjector.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/SqlScriptProducerRequestInjector.java @@ -24,7 +24,7 @@ package fr.ird.observe.application.web.injector; import com.google.common.base.Preconditions; import com.google.gson.Gson; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.debux.webmotion.server.call.Call; @@ -50,9 +50,9 @@ public class SqlScriptProducerRequestInjector implements ExecutorParametersInjec @Override public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { - SqlScriptProducerRequest sqlScriptProducerRequest = null; + AddSqlScriptProducerRequest addSqlScriptProducerRequest = null; - if (type.equals(SqlScriptProducerRequest.class)) { + if (type.equals(AddSqlScriptProducerRequest.class)) { Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); @@ -60,15 +60,15 @@ public class SqlScriptProducerRequestInjector implements ExecutorParametersInjec String gsonContent = ((String[]) parameterTree.getValue())[0]; - sqlScriptProducerRequest = gson.fromJson(gsonContent, SqlScriptProducerRequest.class); + addSqlScriptProducerRequest = gson.fromJson(gsonContent, AddSqlScriptProducerRequest.class); if (log.isInfoEnabled()) { - log.info("Inject sqlScriptProducerRequest: " + sqlScriptProducerRequest); + log.info("Inject addSqlScriptProducerRequest: " + addSqlScriptProducerRequest); } } - return sqlScriptProducerRequest; + return addSqlScriptProducerRequest; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/AddSqlScriptProducerRequest.java similarity index 80% copy from observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java copy to observe-services-api/src/main/java/fr/ird/observe/services/service/AddSqlScriptProducerRequest.java index 48040ef..61c89ad 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/AddSqlScriptProducerRequest.java @@ -32,7 +32,7 @@ import java.util.stream.Collectors; * * @author Tony Chemit - chemit@codelutin.com */ -public class SqlScriptProducerRequest { +public class AddSqlScriptProducerRequest { protected final boolean postgres; protected boolean addSchema; @@ -40,30 +40,30 @@ public class SqlScriptProducerRequest { protected boolean addData; protected ImmutableSet<String> dataIds; - public static SqlScriptProducerRequest forH2() { - return new SqlScriptProducerRequest(false); + public static AddSqlScriptProducerRequest forH2() { + return new AddSqlScriptProducerRequest(false); } - public static SqlScriptProducerRequest forPostgres() { - return new SqlScriptProducerRequest(true); + public static AddSqlScriptProducerRequest forPostgres() { + return new AddSqlScriptProducerRequest(true); } - public SqlScriptProducerRequest addSchema() { + public AddSqlScriptProducerRequest addSchema() { addSchema = true; return this; } - public SqlScriptProducerRequest addReferential() { + public AddSqlScriptProducerRequest addReferential() { addReferential = true; return this; } - public SqlScriptProducerRequest addAllData() { + public AddSqlScriptProducerRequest addAllData() { addData = true; return this; } - public SqlScriptProducerRequest addDataIds(ImmutableSet<String> dataIds) { + public AddSqlScriptProducerRequest dataIdsToAdd(ImmutableSet<String> dataIds) { addData = true; this.dataIds = dataIds; return this; @@ -77,7 +77,7 @@ public class SqlScriptProducerRequest { return addReferential; } - protected SqlScriptProducerRequest(boolean postgres) { + protected AddSqlScriptProducerRequest(boolean postgres) { this.postgres = postgres; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/DeleteSqlScriptProducerRequest.java similarity index 60% rename from observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java rename to observe-services-api/src/main/java/fr/ird/observe/services/service/DeleteSqlScriptProducerRequest.java index 48040ef..bbcc54a 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/DeleteSqlScriptProducerRequest.java @@ -32,57 +32,37 @@ import java.util.stream.Collectors; * * @author Tony Chemit - chemit@codelutin.com */ -public class SqlScriptProducerRequest { +public class DeleteSqlScriptProducerRequest { protected final boolean postgres; - protected boolean addSchema; - protected boolean addReferential; - protected boolean addData; + protected boolean deleteData; protected ImmutableSet<String> dataIds; - public static SqlScriptProducerRequest forH2() { - return new SqlScriptProducerRequest(false); + public static DeleteSqlScriptProducerRequest forH2() { + return new DeleteSqlScriptProducerRequest(false); } - public static SqlScriptProducerRequest forPostgres() { - return new SqlScriptProducerRequest(true); + public static DeleteSqlScriptProducerRequest forPostgres() { + return new DeleteSqlScriptProducerRequest(true); } - public SqlScriptProducerRequest addSchema() { - addSchema = true; + public DeleteSqlScriptProducerRequest deleteAllData() { + deleteData = true; return this; } - public SqlScriptProducerRequest addReferential() { - addReferential = true; - return this; - } - - public SqlScriptProducerRequest addAllData() { - addData = true; - return this; - } - - public SqlScriptProducerRequest addDataIds(ImmutableSet<String> dataIds) { - addData = true; + public DeleteSqlScriptProducerRequest dataIdsToDelete(ImmutableSet<String> dataIds) { + deleteData = true; this.dataIds = dataIds; return this; } - public boolean isAddSchema() { - return addSchema; - } - - public boolean isAddReferential() { - return addReferential; - } - - protected SqlScriptProducerRequest(boolean postgres) { + protected DeleteSqlScriptProducerRequest(boolean postgres) { this.postgres = postgres; } - public boolean isAddData() { - return addData; + public boolean isDeleteData() { + return deleteData; } public ImmutableSet<String> getDataIds() { @@ -101,9 +81,7 @@ public class SqlScriptProducerRequest { public String toString() { return MoreObjects.toStringHelper(this) .add("postgres", postgres) - .add("addSchema", addSchema) - .add("addReferential", addReferential) - .add("addData", addData) + .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/SqlScriptProducerService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerService.java index fd0fae8..50ce8b9 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerService.java @@ -31,5 +31,7 @@ import fr.ird.observe.services.ObserveService; */ public interface SqlScriptProducerService extends ObserveService { - byte[] produceSqlScript(SqlScriptProducerRequest request); + byte[] produceAddSqlScript(AddSqlScriptProducerRequest request); + + byte[] produceDeleteSqlScript(DeleteSqlScriptProducerRequest request); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java index 95fc070..00095d2 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -204,8 +204,8 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS temporaryTopiaApplicationContext.getMigrationService().runSchemaMigration(); SqlScriptProducerService dumpProducerService = serviceContext.newService(temporaryConfiguration, SqlScriptProducerService.class); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData(); - byte[] dump = dumpProducerService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData(); + byte[] dump = dumpProducerService.produceAddSqlScript(request); topiaApplicationContext.executeSqlStatements(dump); topiaApplicationContext.getMigrationService().createSchemaIfNotExist(); topiaApplicationContext.getMigrationService().runSchemaMigration(); @@ -253,11 +253,11 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportReferentialDataSourceConfiguration(); - SqlScriptProducerRequest request; + AddSqlScriptProducerRequest request; if (((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration).isH2Database()) { - request = SqlScriptProducerRequest.forH2(); + request = AddSqlScriptProducerRequest.forH2(); } else { - request = SqlScriptProducerRequest.forPostgres(); + request = AddSqlScriptProducerRequest.forPostgres(); } request.addReferential(); @@ -270,7 +270,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConnection importDataSourceConnection = dataSourceService.open(importDataSourceConfiguration); SqlScriptProducerService dumpProducerService = serviceContext.newService(importDataSourceConnection, SqlScriptProducerService.class); - referentialDump = dumpProducerService.produceSqlScript(request); + referentialDump = dumpProducerService.produceAddSqlScript(request); } finally { dataSourceService.close(); @@ -288,11 +288,11 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportDataDataSourceConfiguration(); - SqlScriptProducerRequest request; + AddSqlScriptProducerRequest request; if (((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration).isH2Database()) { - request = SqlScriptProducerRequest.forH2(); + request = AddSqlScriptProducerRequest.forH2(); } else { - request = SqlScriptProducerRequest.forPostgres(); + request = AddSqlScriptProducerRequest.forPostgres(); } if (!referantialImported) { @@ -310,7 +310,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS log.info("Get data: " + importDataIds); } - request.addDataIds(importDataIds); + request.dataIdsToAdd(importDataIds); DataSourceService dataSourceService = serviceContext.newService(importDataSourceConfiguration, DataSourceService.class); @@ -320,7 +320,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConnection importDataSourceConnection = dataSourceService.open(importDataSourceConfiguration); SqlScriptProducerService dumpProducerService = serviceContext.newService(importDataSourceConnection, SqlScriptProducerService.class); - dataDump = dumpProducerService.produceSqlScript(request); + dataDump = dumpProducerService.produceAddSqlScript(request); } finally { dataSourceService.close(); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopia.java index e2c4cc9..bb8a17d 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopia.java @@ -51,9 +51,9 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement private static final Log log = LogFactory.getLog(SqlScriptProducerServiceTopia.class); @Override - public byte[] produceSqlScript(SqlScriptProducerRequest request) { + public byte[] produceAddSqlScript(AddSqlScriptProducerRequest request) { if (log.isTraceEnabled()) { - log.trace("produceSqlScript(" + request + ")"); + log.trace("produceAddSqlScript(" + request + ")"); } try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { @@ -75,7 +75,31 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement } - protected SqlRequests sqlRequests(SqlScriptProducerRequest request, SqlRequests.Builder builder) { + @Override + public byte[] produceDeleteSqlScript(DeleteSqlScriptProducerRequest request) { + if (log.isTraceEnabled()) { + log.trace("produceDeleteSqlScript(" + request + ")"); + } + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + + try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out))) { + + TopiaSqlBatchService sqlBatchService = serviceContext.getTopiaApplicationContext().getSqlBatchService(); + SqlRequests.Builder builder = sqlBatchService.requestBuilder().to(writer); + + SqlRequests sqlRequests = sqlRequests(request, builder); + sqlBatchService.execute(sqlRequests); + + } + + return out.toByteArray(); + + } catch (IOException e) { + throw new RuntimeException("Could not produce delete sql script", e); + } + } + + protected SqlRequests sqlRequests(AddSqlScriptProducerRequest request, SqlRequests.Builder builder) { if (request.isAddSchema()) { @@ -152,4 +176,58 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement return builder.build(); } + protected SqlRequests sqlRequests(DeleteSqlScriptProducerRequest request, SqlRequests.Builder builder) { + + ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext(); + + if (request.isDeleteData()) { + + ImmutableSet<String> tripIds = request.getDataIds(); + if (tripIds == null) { + + builder.deleteTablesBuilder() + .setTables(topiaApplicationContext.getTripSeineTables()) + .replicateTablesBuilder() + .setTables(topiaApplicationContext.getTripLonglineTables()) + .flush(); + + } else { + + { + + Set<String> tripIds1 = Sets.newHashSet(Iterables.filter(tripIds, Entities.IS_SEINE_ID::test)); + + if (!tripIds1.isEmpty()) { + + builder.deleteTablesBuilder() + .setTables(topiaApplicationContext.getTripSeineTables()) + .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds1)) + .flush(); + + } + + } + + { + + Set<String> tripIds1 = Sets.newHashSet(Iterables.filter(tripIds, Entities.IS_LONGLINE_ID::test)); + + if (!tripIds1.isEmpty()) { + + builder.deleteTablesBuilder() + .setTables(topiaApplicationContext.getTripLonglineTables()) + .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds1)) + .flush(); + + } + + } + + } + + } + + return builder.build(); + } + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java index b606b28..fbaf1bf 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDtos; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.service.longline.TripLonglineService; import fr.ird.observe.services.service.seine.TripSeineService; @@ -49,9 +49,9 @@ public class ReplicateTripServiceTopia extends ObserveServiceTopia implements Re String tripId = replicateTripExportRequest.getTripId(); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forPostgres().addDataIds(ImmutableSet.of(tripId)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().dataIdsToAdd(ImmutableSet.of(tripId)); - byte[] tripContent = sqlScriptProducerService.produceSqlScript(request); + byte[] tripContent = sqlScriptProducerService.produceAddSqlScript(request); resultBuilder.addTripToReplicate(replicateTripExportRequest, tripContent); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java index 3567ade..a9e0b6c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java @@ -63,44 +63,44 @@ public class MigrateTestsDatabases extends AbstractServiceTopiaTest { @DatabaseNameConfiguration(DatabaseName.referentiel) @Test public void migrateReferentielDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + migrate(service.produceAddSqlScript(request)); } @DatabaseNameConfiguration(DatabaseName.dataForTestSeine) @Test public void migrateDataForTestSeineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + migrate(service.produceAddSqlScript(request)); } @DatabaseNameConfiguration(DatabaseName.dataForTestLongline) @Test public void migrateDataForTestLonglineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + migrate(service.produceAddSqlScript(request)); } @DatabaseNameConfiguration(DatabaseName.empty_h2) @Test public void migrateEmptyH2Db() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema(); + migrate(service.produceAddSqlScript(request)); } @DatabaseVersionConfiguration("4.903") @DatabaseNameConfiguration(DatabaseName.dataForTestUnidirectionalReferentialSynchro) @Test public void migrateDataForTestUnidirectionalReferentialSynchroDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + migrate(service.produceAddSqlScript(request)); } @DatabaseNameConfiguration(DatabaseName.empty_h2) @Test public void migrateEmptyPgDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forPostgres().addSchema(); - migrate(DatabaseName.empty_pg.name(), service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().addSchema(); + migrate(DatabaseName.empty_pg.name(), service.produceAddSqlScript(request)); } protected void migrate(byte[] dump) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java index 194a9f6..364c9bc 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java @@ -55,8 +55,8 @@ public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest @Test public void testProduceSchema() throws Exception { - produce(SqlScriptProducerRequest.forH2().addSchema()); - produce(SqlScriptProducerRequest.forPostgres().addSchema()); + produce(AddSqlScriptProducerRequest.forH2().addSchema()); + produce(AddSqlScriptProducerRequest.forPostgres().addSchema()); } @@ -64,7 +64,7 @@ public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest @Test public void testProduceReferential() throws Exception { - produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential()); + produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential()); } @@ -72,8 +72,8 @@ public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest @Test public void testProduceTripSeine() throws Exception { -// produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData()); - produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential().addDataIds(ObserveFixtures.TRIP_SEINE_IDS)); +// produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData()); + produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_SEINE_IDS)); } @@ -81,18 +81,18 @@ public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest @Test public void testProduceTripLongline() throws Exception { - produce(SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData()); -// produce(SqlScriptProducerRequest.forH2().addSchema().addReferential().addDataIds(ObserveFixtures.TRIP_LONGLINE_IDS)); + produce(AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData()); +// produce(AddSqlScriptProducerRequest.forH2().addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_LONGLINE_IDS)); } - protected void produce(SqlScriptProducerRequest request) throws IOException { + protected void produce(AddSqlScriptProducerRequest request) throws IOException { long time = TimeLog.getTime(); File outputFile = applicationContextResource.createTemporaryFile("-out.sql.gz"); - byte[] gzContent = service.produceSqlScript(request); + byte[] gzContent = service.produceAddSqlScript(request); try (FileOutputStream fileOutputStream = new FileOutputStream(outputFile)) { IOUtils.write(gzContent, fileOutputStream); -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 325892a388a64041f06ab5ce86d9c25e3fb68bc6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:30 2016 +0200 Add more logs --- .../src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java b/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java index b5ea405..aa63ad4 100644 --- a/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java +++ b/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java @@ -22,6 +22,8 @@ package fr.ird.observe; * #L% */ +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.support.TopiaSqlWork; import org.nuiton.util.GZUtil; @@ -45,6 +47,9 @@ import java.util.zip.GZIPInputStream; */ public class RunScriptTopiaSqlWork implements TopiaSqlWork { + /** Logger. */ + private static final Log log = LogFactory.getLog(RunScriptTopiaSqlWork.class); + protected final byte[] content; protected final boolean gzip; protected final int batchSize; @@ -87,6 +92,9 @@ public class RunScriptTopiaSqlWork implements TopiaSqlWork { } if (trimLine.endsWith(";")) { statement.addBatch(command); + if (log.isDebugEnabled()) { + log.debug("Sql statement: " + command); + } batchSize++; command = null; -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit a747c8225ae4166bdb6fdb243cb9e86b7b9a7bf9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:50 2016 +0200 use now delete from sql producer instead of hibernate delete --- .../ui/admin/datasynchro/DataSynchroUIHandler.java | 7 ++- .../datasynchro/DataSynchronizeDeleteTask.java | 13 +++++ .../datasynchro/DataSynchronizeRequest.java | 21 +++++-- .../datasynchro/DataSynchronizeService.java | 11 ++++ .../datasynchro/DataSynchronizeServiceTopia.java | 65 +++++++++++++--------- 5 files changed, 83 insertions(+), 34 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java index f59acf1..332bf62 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -256,8 +256,8 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { DefaultListModel<DataSynchronizeTaskSupport> tasks = getStepModel().getTasks(); int size = tasks.size(); - DataSynchronizeRequest.Builder leftDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(rightSourceIsH2); - DataSynchronizeRequest.Builder rightDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(leftSourceIsH2); + DataSynchronizeRequest.Builder leftDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(leftSourceIsH2, rightSourceIsH2); + DataSynchronizeRequest.Builder rightDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(rightSourceIsH2, leftSourceIsH2); for (int i = 0; i < size; i++) { DataSynchronizeTaskSupport task = tasks.getElementAt(i); @@ -292,19 +292,20 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { } - DataSynchronizeService leftDataSynchronizeService = leftSource.newDataSynchronizeService(); DataSynchronizeService rightDataSynchronizeService = rightSource.newDataSynchronizeService(); DataSynchronizeRequest leftDataSynchronizeRequest = leftDataSynchronizeRequestBuilder.build(); if (leftDataSynchronizeRequest.isNotEmpty()) { rightDataSynchronizeService.prepareRequestOnOppositeDataSource(leftDataSynchronizeRequest); + leftDataSynchronizeService.prepareRequestOnDataSource(leftDataSynchronizeRequest); leftDataSynchronizeService.executeRequest(leftDataSynchronizeRequest); } DataSynchronizeRequest rightDataSynchronizeRequest = rightDataSynchronizeRequestBuilder.build(); if (rightDataSynchronizeRequest.isNotEmpty()) { leftDataSynchronizeService.prepareRequestOnOppositeDataSource(rightDataSynchronizeRequest); + rightDataSynchronizeService.prepareRequestOnDataSource(rightDataSynchronizeRequest); rightDataSynchronizeService.executeRequest(rightDataSynchronizeRequest); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java index 490eae0..4b457ef 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java @@ -8,7 +8,20 @@ package fr.ird.observe.services.service.actions.datasynchro; */ public class DataSynchronizeDeleteTask extends DataSyncrhonizeTaskSupport { + /** + * Contient le code sql de la copie de la marée. + */ + private byte[] dataContent; + public DataSynchronizeDeleteTask(String programId, String tripId) { super(programId, tripId); } + + public byte[] getDataContent() { + return dataContent; + } + + public void setDataContent(byte[] dataContent) { + this.dataContent = dataContent; + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java index 16cc43f..d5fd59d 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java @@ -15,11 +15,15 @@ public class DataSynchronizeRequest { /** Logger. */ private static final Log log = LogFactory.getLog(DataSynchronizeRequest.class); - public static Builder builder(boolean oppositeH2) { - return new Builder(oppositeH2); + 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; @@ -35,16 +39,18 @@ public class DataSynchronizeRequest { 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 oppositeH2) { + public Builder(boolean h2, boolean oppositeH2) { + this.h2 = h2; this.oppositeH2 = oppositeH2; } public DataSynchronizeRequest build() { - return new DataSynchronizeRequest(oppositeH2, copyTasksBuilder.build(), deleteTasksBuilder.build()); + return new DataSynchronizeRequest(h2, oppositeH2, copyTasksBuilder.build(), deleteTasksBuilder.build()); } public Builder addDeleteTask(DataSynchronizeDeleteTask deleteTask) { @@ -82,7 +88,12 @@ public class DataSynchronizeRequest { return oppositeH2; } - private DataSynchronizeRequest(boolean oppositeH2, ImmutableSet<DataSynchronizeCopyTask> copyTasks, ImmutableSet<DataSynchronizeDeleteTask> deleteTasks) { + 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/datasynchro/DataSynchronizeService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java index 1f15d58..34882b2 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java @@ -26,6 +26,17 @@ public interface DataSynchronizeService extends ObserveService { void prepareRequestOnOppositeDataSource(DataSynchronizeRequest request); /** + * Prépare la demande donnée en paramètre. Par exemple s'il y a des demandes de suppression, on récupère le 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 + void prepareRequestOnDataSource(DataSynchronizeRequest request); + + /** * Exécution de la demande donnée en paramètre. * * Cette méthode doit être exécutée sur la base cible. diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java index 3dead6c..b4c6e4e 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java @@ -2,13 +2,10 @@ package fr.ird.observe.services.service.actions.datasynchro; import com.google.common.collect.ImmutableSet; import fr.ird.observe.entities.Entities; -import fr.ird.observe.entities.longline.TripLongline; -import fr.ird.observe.entities.longline.TripLonglineTopiaDao; -import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.entities.seine.TripSeineTopiaDao; import fr.ird.observe.services.ObserveServiceContextTopia; import fr.ird.observe.services.ObserveServiceTopia; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; +import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -38,19 +35,19 @@ public class DataSynchronizeServiceTopia extends ObserveServiceTopia implements for (DataSynchronizeCopyTask copyTask : request.getCopyTasks()) { if (log.isInfoEnabled()) { - log.info("Obtain trip sql content: " + copyTask.getProgramId() + " / " + copyTask.getTripId()); + log.info("Obtain trip sql copy content: " + copyTask.getProgramId() + " / " + copyTask.getTripId()); } // get the data content - SqlScriptProducerRequest sqlRequest; + AddSqlScriptProducerRequest sqlRequest; if (request.isOppositeH2()) { - sqlRequest = SqlScriptProducerRequest.forH2(); + sqlRequest = AddSqlScriptProducerRequest.forH2(); } else { - sqlRequest = SqlScriptProducerRequest.forPostgres(); + sqlRequest = AddSqlScriptProducerRequest.forPostgres(); } - sqlRequest.addDataIds(ImmutableSet.of(copyTask.getTripId())); - byte[] sqlScript = sqlScriptProducerService.produceSqlScript(sqlRequest); + sqlRequest.dataIdsToAdd(ImmutableSet.of(copyTask.getTripId())); + byte[] sqlScript = sqlScriptProducerService.produceAddSqlScript(sqlRequest); // store it in task copyTask.setDataContent(sqlScript); @@ -60,36 +57,52 @@ public class DataSynchronizeServiceTopia extends ObserveServiceTopia implements } @Override - public void executeRequest(DataSynchronizeRequest request) { - - TripSeineTopiaDao tripSeineDao = serviceContext.getTopiaPersistenceContext().getTripSeineDao(); - TripLonglineTopiaDao tripLonglineDao = serviceContext.getTopiaPersistenceContext().getTripLonglineDao(); + public void prepareRequestOnDataSource(DataSynchronizeRequest request) { for (DataSynchronizeDeleteTask deleteTask : request.getDeleteTasks()) { String tripId = deleteTask.getTripId(); boolean longlineId = Entities.isLonglineId(tripId); - if (longlineId) { + if (log.isInfoEnabled()) { + log.info("Obtain trip sql delete content: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); + } - if (log.isInfoEnabled()) { - log.info("Delete longline trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); - } - TripLongline tripLongline = tripLonglineDao.forTopiaIdEquals(tripId).findUnique(); - tripLonglineDao.delete(tripLongline); + // get the data content + DeleteSqlScriptProducerRequest sqlRequest; + if (request.isH2()) { + sqlRequest = DeleteSqlScriptProducerRequest.forH2(); } else { + sqlRequest = DeleteSqlScriptProducerRequest.forPostgres(); + } + sqlRequest.dataIdsToDelete(ImmutableSet.of(deleteTask.getTripId())); + byte[] sqlScript = sqlScriptProducerService.produceDeleteSqlScript(sqlRequest); + + // store it in task + deleteTask.setDataContent(sqlScript); + + } + } + + @Override + public void executeRequest(DataSynchronizeRequest request) { + + for (DataSynchronizeDeleteTask deleteTask : request.getDeleteTasks()) { - if (log.isInfoEnabled()) { - log.info("Delete seine trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); - } - TripSeine tripSeine = tripSeineDao.forTopiaIdEquals(tripId).findUnique(); - tripSeineDao.delete(tripSeine); + String tripId = deleteTask.getTripId(); + boolean longlineId = Entities.isLonglineId(tripId); + if (log.isInfoEnabled()) { + log.info("Delete trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); } + serviceContext.getTopiaApplicationContext().executeSqlStatements(deleteTask.getDataContent()); } + // need to flush to make deletion complete, before to execute the copy sql script + serviceContext.getTopiaPersistenceContext().flush(); + for (DataSynchronizeCopyTask copyTask : request.getCopyTasks()) { if (log.isInfoEnabled()) { -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 1b76319d55d3fc32479770a3bd4d2a36e4b1a1ba Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:59:26 2016 +0200 Rename test --- ...erviceTopiaTest.java => AddSqlScriptProducerServiceTopiaTest.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/AddSqlScriptProducerServiceTopiaTest.java similarity index 94% rename from observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java rename to observe-services-topia/src/test/java/fr/ird/observe/services/service/AddSqlScriptProducerServiceTopiaTest.java index 364c9bc..9d97f2c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/AddSqlScriptProducerServiceTopiaTest.java @@ -40,9 +40,9 @@ import java.io.IOException; * * @author Tony Chemit - chemit@codelutin.com */ -public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest { +public class AddSqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest { - private static final TimeLog timeLog = new TimeLog(SqlScriptProducerServiceTopiaTest.class, 10, 1000); + private static final TimeLog timeLog = new TimeLog(AddSqlScriptProducerServiceTopiaTest.class, 10, 1000); protected SqlScriptProducerService service; -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit d7ad52eb0e99aee1748d6974b7087231cd37b3b5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 16:17:55 2016 +0200 Ajout de plus de messages de préparation des tâches à executer --- .../observe/ui/admin/datasynchro/DataSynchroUIHandler.java | 14 ++++++++++++++ .../i18n/observe-application-swing_en_GB.properties | 4 ++++ .../i18n/observe-application-swing_es_ES.properties | 4 ++++ .../i18n/observe-application-swing_fr_FR.properties | 4 ++++ 4 files changed, 26 insertions(+) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java index 332bf62..0025eef 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -1,5 +1,7 @@ package fr.ird.observe.ui.admin.datasynchro; +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.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.dto.DataReference; @@ -256,19 +258,27 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { DefaultListModel<DataSynchronizeTaskSupport> tasks = getStepModel().getTasks(); int size = tasks.size(); + DecoratorService decoratorService = getDecoratorService(); + ReferentialReferenceDecorator<ProgramDto> programDecorator = decoratorService.getReferentialReferenceDecorator(ProgramDto.class); + DataSynchronizeRequest.Builder leftDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(leftSourceIsH2, rightSourceIsH2); DataSynchronizeRequest.Builder rightDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(rightSourceIsH2, leftSourceIsH2); 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()); + if (task instanceof DeleteFromLeftDataSynchronizeTask) { + sendMessage(t("observe.datasynchro.prepare.deleteFromLeftTask", programStr, tripStr)); leftDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); continue; } if (task instanceof DeleteFromRightDataSynchronizeTask) { + sendMessage(t("observe.datasynchro.prepare.deleteFromRightTask", programStr, tripStr)); rightDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); continue; } @@ -276,8 +286,10 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { if (task instanceof CopyToLeftDataSynchronizeTask) { CopyToLeftDataSynchronizeTask copyTask = (CopyToLeftDataSynchronizeTask) task; if (copyTask.isTripExistOnLeft()) { + sendMessage(t("observe.datasynchro.prepare.deleteFromLeftTask", programStr, tripStr)); leftDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); } + sendMessage(t("observe.datasynchro.prepare.copyToLeftTask", programStr, tripStr)); leftDataSynchronizeRequestBuilder.addCopyTask(new DataSynchronizeCopyTask(task.getProgram().getId(), task.getTrip().getId())); continue; } @@ -285,8 +297,10 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { if (task instanceof CopyToRightDataSynchronizeTask) { CopyToRightDataSynchronizeTask copyTask = (CopyToRightDataSynchronizeTask) task; if (copyTask.isTripExistOnRight()) { + sendMessage(t("observe.datasynchro.prepare.deleteFromRightTask", programStr, tripStr)); rightDataSynchronizeRequestBuilder.addDeleteTask(new DataSynchronizeDeleteTask(task.getProgram().getId(), task.getTrip().getId())); } + sendMessage(t("observe.datasynchro.prepare.copyToRightTask", programStr, tripStr)); rightDataSynchronizeRequestBuilder.addCopyTask(new DataSynchronizeCopyTask(task.getProgram().getId(), task.getTrip().getId())); } 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 7d26d45..b82f923 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 @@ -1046,6 +1046,10 @@ observe.datasynchro.copyToLeftTask= observe.datasynchro.copyToRightTask= observe.datasynchro.deleteFromLeftTask= observe.datasynchro.deleteFromRightTask= +observe.datasynchro.prepare.copyToLeftTask= +observe.datasynchro.prepare.copyToRightTask= +observe.datasynchro.prepare.deleteFromLeftTask= +observe.datasynchro.prepare.deleteFromRightTask= observe.encounter.action.create=Insert this encounter observe.encounter.action.create.tip=Insert this encounter observe.encounter.count=Count 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 bc0bf88..11418c7 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 @@ -1046,6 +1046,10 @@ observe.datasynchro.copyToLeftTask= observe.datasynchro.copyToRightTask= observe.datasynchro.deleteFromLeftTask= observe.datasynchro.deleteFromRightTask= +observe.datasynchro.prepare.copyToLeftTask= +observe.datasynchro.prepare.copyToRightTask= +observe.datasynchro.prepare.deleteFromLeftTask= +observe.datasynchro.prepare.deleteFromRightTask= observe.encounter.action.create= observe.encounter.action.create.tip= observe.encounter.count= 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 279004e..811c813 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 @@ -1045,6 +1045,10 @@ observe.datasynchro.copyToLeftTask=Copier vers la base de gauche \: %s - %s observe.datasynchro.copyToRightTask=Copier vers la base de droite \: %s - %s observe.datasynchro.deleteFromLeftTask=Supprimer de la base de gauche \: %s - %s observe.datasynchro.deleteFromRightTask=Supprimer de la base de droite \: %s - %s +observe.datasynchro.prepare.copyToLeftTask=Préparation de la recopie vers la base de gauche \: %s - %s +observe.datasynchro.prepare.copyToRightTask=Préparation de la recopie vers la base de droite \: %s - %s +observe.datasynchro.prepare.deleteFromLeftTask=Préparation de la suppression de la base de gauche \: %s - %s +observe.datasynchro.prepare.deleteFromRightTask=Préparation de la suppression de la base de droite \: %s - %s observe.encounter.action.create=Insérer cette rencontre observe.encounter.action.create.tip=Insérer cette rencontre observe.encounter.count=Nombre -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit fb3465fcbe3d00aea018a40b29768ad2984109e9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:11:50 2016 +0200 Check if classes are implemented --- .../maven/plugins/checkapi/CheckApiMojo.java | 29 +++++++++++++--------- .../plugins/checkapi/MissingClassException.java | 21 ++++++++++++++++ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/CheckApiMojo.java b/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/CheckApiMojo.java index effd66e..bee92eb 100644 --- a/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/CheckApiMojo.java +++ b/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/CheckApiMojo.java @@ -34,6 +34,8 @@ import org.nuiton.plugin.AbstractPlugin; import java.io.File; import java.lang.reflect.Method; +import java.util.Collections; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -92,7 +94,7 @@ public class CheckApiMojo extends AbstractPlugin { */ @Parameter(property = "checkApi.encoding", defaultValue = "${project.build.sourceEncoding}", required = true) protected String encoding; - protected ImmutableMap<ClassPath.ClassInfo, ClassPath.ClassInfo> translationMap; + protected Map<ClassPath.ClassInfo, ClassPath.ClassInfo> translationMap; @Override protected void init() throws Exception { @@ -112,7 +114,7 @@ public class CheckApiMojo extends AbstractPlugin { ImmutableMap<String, ClassPath.ClassInfo> targetClassInfosByClassName = Maps.uniqueIndex(targetApiClassesInPackage, ClassPath.ClassInfo::getName); - ImmutableMap.Builder<ClassPath.ClassInfo, ClassPath.ClassInfo> translationMapBuilder = ImmutableMap.builder(); + Map<ClassPath.ClassInfo, ClassPath.ClassInfo> translationMap = new LinkedHashMap<>(); for (ClassPath.ClassInfo sourceClassInfo : sourceApiClassesInPackage) { @@ -146,27 +148,26 @@ public class CheckApiMojo extends AbstractPlugin { String targetName = targetPackageName + "." + targetSimpleName; + ClassPath.ClassInfo targetClassInfo; + if (!targetClassInfosByClassName.containsKey(targetName)) { - if (isVerbose()) { - getLog().info("No matching target found for source class: " + sourceClassInfo); - } - continue; + targetClassInfo = null; + } else { + targetClassInfo = targetClassInfosByClassName.get(targetName); } - ClassPath.ClassInfo targetClassInfo = targetClassInfosByClassName.get(targetName); - if (isVerbose()) { getLog().info("Found maching class to check : " + sourceClassInfo + " → " + targetClassInfo); } - translationMapBuilder.put(sourceClassInfo, targetClassInfo); + translationMap.put(sourceClassInfo, targetClassInfo); } } - translationMap = translationMapBuilder.build(); + this.translationMap = Collections.unmodifiableMap(translationMap); } @@ -197,7 +198,7 @@ public class CheckApiMojo extends AbstractPlugin { ClassPath.ClassInfo targetClassInfo = entry.getValue(); Class<?> sourceClass = sourceClassInfo.load(); - Class<?> targetClass = targetClassInfo.load(); + Class<?> targetClass = targetClassInfo == null ? null : targetClassInfo.load(); checkClass(sourceClass, targetClass); @@ -225,7 +226,7 @@ public class CheckApiMojo extends AbstractPlugin { this.verbose = verbose; } - private void checkClass(Class<?> sourceClass, Class<?> targetClass) throws MissingMethodException, MismatchMethodParameterNameException { + private void checkClass(Class<?> sourceClass, Class<?> targetClass) throws MissingMethodException, MismatchMethodParameterNameException, MissingClassException { Method[] sourceDeclaredMethods = sourceClass.getDeclaredMethods(); @@ -235,6 +236,10 @@ public class CheckApiMojo extends AbstractPlugin { } + if (targetClass == null) { + throw new MissingClassException(sourceClass.getName()); + } + for (Method sourceMethod : sourceDeclaredMethods) { Method targetMethod; diff --git a/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/MissingClassException.java b/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/MissingClassException.java new file mode 100644 index 0000000..76a347a --- /dev/null +++ b/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/MissingClassException.java @@ -0,0 +1,21 @@ +package fr.ird.observe.maven.plugins.checkapi; + +/** + * Created on 09/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class MissingClassException extends Exception { + private static final long serialVersionUID = -816569500190950442L; + + private final String sourceClassName; + + public MissingClassException(String sourceClassName) { + this.sourceClassName = sourceClassName; + } + + @Override + public String getMessage() { + return "Target class not found for contract " + sourceClassName; + } +} -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit cb053baaad6490acc3bef11b4f0bb2352ad0029a Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:38:13 2016 +0200 Fix bad class name --- ...TripServicecontroller.java => ReplicateTripServiceController.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/export/ReplicateTripServicecontroller.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/export/ReplicateTripServiceController.java similarity index 94% rename from observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/export/ReplicateTripServicecontroller.java rename to observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/export/ReplicateTripServiceController.java index 2217515..faf2ec3 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/export/ReplicateTripServicecontroller.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/export/ReplicateTripServiceController.java @@ -33,9 +33,9 @@ import fr.ird.observe.services.service.actions.export.ReplicateTripsImportResult * * @author Tony Chemit - chemit@codelutin.com */ -public class ReplicateTripServicecontroller extends ObserveAuthenticatedServiceControllerSupport<ReplicateTripService> implements ReplicateTripService { +public class ReplicateTripServiceController extends ObserveAuthenticatedServiceControllerSupport<ReplicateTripService> implements ReplicateTripService { - public ReplicateTripServicecontroller() { + public ReplicateTripServiceController() { super(ReplicateTripService.class); } -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit d2813606492e0ef920fe89464d7024b3cf1c7ef9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:39:38 2016 +0200 Fix layout + add action icons --- .../src/main/filters/observe-ui.properties | 2 ++ .../ui/admin/datasynchro/DataSynchroUI.jaxx | 32 ++++++++------------- .../ui/admin/datasynchro/DataSynchroUI.jcss | 12 +++----- .../src/main/resources/icons/action-copyToLeft.png | Bin 0 -> 345 bytes .../main/resources/icons/action-copyToRight.png | Bin 0 -> 349 bytes 5 files changed, 18 insertions(+), 28 deletions(-) diff --git a/observe-application-swing/src/main/filters/observe-ui.properties b/observe-application-swing/src/main/filters/observe-ui.properties index ed76d2d..80408dd 100644 --- a/observe-application-swing/src/main/filters/observe-ui.properties +++ b/observe-application-swing/src/main/filters/observe-ui.properties @@ -99,6 +99,8 @@ icon.action.connect_creating=action-connect_creating.png icon.action.connect_untested=action-connect_untested.png icon.action.connect_no=action-connect_no.png icon.action.connect_ok=action-connect_ok.png +icon.action.copyToLeft=action-copyToLeft.png +icon.action.copyToRight=action-copyToRight.png icon.action.close=action-close.png icon.action.db-change=action-db-change.png icon.action.db-local=action-db-local.png diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx index 61cbf25..fea00d6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jaxx @@ -52,12 +52,14 @@ <DataSelectionModel id='leftSelectDataModel' initializer='getModel().getDataSynchroModel().getLeftSelectionDataModel()'/> <DataSelectionTreeSelectionModel id='leftSelectionModel'/> - <DataSelectionTreeCellRenderer id='leftSelectionRenderer' constraints='BorderLayout.EAST'/> <DataSelectionModel id='rightSelectDataModel' initializer='getModel().getDataSynchroModel().getRightSelectionDataModel()'/> <DataSelectionTreeSelectionModel id='rightSelectionModel'/> - <DataSelectionTreeCellRenderer id='rightSelectionRenderer' constraints='BorderLayout.EAST'/> + <JPanel id='invisiblePanel'> + <DataSelectionTreeCellRenderer id='leftSelectionRenderer'/> + <DataSelectionTreeCellRenderer id='rightSelectionRenderer'/> + </JPanel> <script><![CDATA[ public DataSynchroUI(AdminUI parentContext) { @@ -77,21 +79,10 @@ public void destroy() { ]]> </script> - <!--JPanel id='PENDING_content'> - <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' - weighty='1'> - <row> - <cell> - <JButton id='startAction' onActionPerformed="getHandler().doPrepareAction()"/> - </cell> - </row> - </Table> - </JPanel--> - <JPanel id='PENDING_content'> <JSplitPane id="contentSplitPane" constraints='BorderLayout.CENTER'> - <Table fill="both"> - <row weighty="1"> + <Table id='contentNorth' fill="both" weighty="1"> + <row> <cell weightx="0.45"> <JScrollPane id='leftTreePane' decorator='boxed'> <JTree id='leftTree'/> @@ -99,7 +90,7 @@ public void destroy() { </cell> <cell weightx="0.1"> <JPanel layout="{new BorderLayout()}" border='{new TitledBorder(" ")}'> - <JPanel id="middleActions" layout="{new GridLayout(0, 1)}" constraints='BorderLayout.CENTER'> + <JPanel id="middleActions" layout="{new GridLayout(0, 2)}" constraints='BorderLayout.CENTER'> <JButton id="copyToRight" onActionPerformed="getHandler().addCopyToRightTasks()"/> <JButton id="copyToLeft" onActionPerformed="getHandler().addCopyToLeftTasks()"/> <JButton id="deleteFromLeft" onActionPerformed="getHandler().addDeleteFromLeftTasks()"/> @@ -114,18 +105,19 @@ public void destroy() { </cell> </row> </Table> - <Table fill="both"> + <Table id='contentSouth' fill="both"> <row weighty="1"> <cell weightx="1"> <JScrollPane id='actionsToConsumePane'> - <JList id="actionsToConsume" onMouseClicked="getHandler().removeTasks(event)"/> + <JList id="actionsToConsume"/> </JScrollPane> </cell> </row> <row> <cell> - <JPanel layout="{new BorderLayout()}" > - <JButton id='applyAction' constraints='BorderLayout.CENTER' onActionPerformed='getHandler().doExecuteAction()'/> + <JPanel layout="{new BorderLayout()}"> + <JButton id='applyAction' constraints='BorderLayout.CENTER' + onActionPerformed='getHandler().doExecuteAction()'/> </JPanel> </cell> </row> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss index 6073115..c512d22 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUI.jcss @@ -20,10 +20,6 @@ * #L% */ -#NEED_FIX_content { - layout:{new BorderLayout()}; -} - #PENDING_content { layout:{new BorderLayout()}; } @@ -83,25 +79,25 @@ } #copyToLeft { - text:"observe.action.copyToLeft"; + actionIcon:copyToLeft; toolTipText:"observe.action.copyToLeft.tip"; enabled:false; } #copyToRight { - text:"observe.action.copyToRight"; + actionIcon:copyToRight; toolTipText:"observe.action.copyToRight.tip"; enabled:false; } #deleteFromLeft { - text:"observe.action.deleteFromLeft"; + actionIcon:delete; toolTipText:"observe.action.deleteFromLeft.tip"; enabled:false; } #deleteFromRight { - text:"observe.action.deleteFromRight"; + actionIcon:delete; toolTipText:"observe.action.deleteFromRight.tip"; enabled:false; } diff --git a/observe-application-swing/src/main/resources/icons/action-copyToLeft.png b/observe-application-swing/src/main/resources/icons/action-copyToLeft.png new file mode 100644 index 0000000..5dc6967 Binary files /dev/null and b/observe-application-swing/src/main/resources/icons/action-copyToLeft.png differ diff --git a/observe-application-swing/src/main/resources/icons/action-copyToRight.png b/observe-application-swing/src/main/resources/icons/action-copyToRight.png new file mode 100644 index 0000000..b1a1819 Binary files /dev/null and b/observe-application-swing/src/main/resources/icons/action-copyToRight.png differ -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 2709614ff71714af22606bcf40db878e22530114 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:39:57 2016 +0200 introduce services provider contract --- .../observe/services/ObserveServicesProvider.java | 124 +++++++++++++++++++++ 1 file changed, 124 insertions(+) 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 new file mode 100644 index 0000000..0a5e627 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java @@ -0,0 +1,124 @@ +package fr.ird.observe.services; + +import fr.ird.observe.services.service.DataSourceService; +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.actions.datasynchro.DataSynchronizeService; +import fr.ird.observe.services.service.actions.export.ReplicateTripService; +import fr.ird.observe.services.service.actions.report.ReportService; +import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeLocalService; +import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeRemoteService; +import fr.ird.observe.services.service.actions.validate.ValidateService; +import fr.ird.observe.services.service.longline.ActivityLongLineEncounterService; +import fr.ird.observe.services.service.longline.ActivityLongLineSensorUsedService; +import fr.ird.observe.services.service.longline.ActivityLonglineService; +import fr.ird.observe.services.service.longline.BranchlineService; +import fr.ird.observe.services.service.longline.SetLonglineCatchService; +import fr.ird.observe.services.service.longline.SetLonglineDetailCompositionService; +import fr.ird.observe.services.service.longline.SetLonglineGlobalCompositionService; +import fr.ird.observe.services.service.longline.SetLonglineService; +import fr.ird.observe.services.service.longline.TdrService; +import fr.ird.observe.services.service.longline.TripLonglineGearUseService; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.ActivitySeineObservedSystemService; +import fr.ird.observe.services.service.seine.ActivitySeineService; +import fr.ird.observe.services.service.seine.FloatingObjectService; +import fr.ird.observe.services.service.seine.NonTargetCatchService; +import fr.ird.observe.services.service.seine.NonTargetSampleService; +import fr.ird.observe.services.service.seine.ObjectObservedSpeciesService; +import fr.ird.observe.services.service.seine.ObjectSchoolEstimateService; +import fr.ird.observe.services.service.seine.RouteService; +import fr.ird.observe.services.service.seine.SchoolEstimateService; +import fr.ird.observe.services.service.seine.SetSeineService; +import fr.ird.observe.services.service.seine.TargetCatchService; +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; + +/** + * Un provider de services typés. + * + * Created on 09/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public interface ObserveServicesProvider { + + SqlScriptProducerService newSqlScriptProducerService(); + + ValidateService newValidateService(); + + ReportService newReportService(); + + PingService newPingService(); + + ReplicateTripService newReplicateTripService(); + + ConsolidateDataService newConsolidateDataService(); + + UnidirectionalReferentialSynchronizeLocalService newUnidirectionalReferentialSynchronizeLocalService(); + + UnidirectionalReferentialSynchronizeRemoteService newUnidirectionalReferentialSynchronizeRemoteService(); + + DataSynchronizeService newDataSynchronizeService(); + + DataSourceService newDataSourceService(); + + ReferentialService newReferentialService(); + + TripSeineService newTripSeineService(); + + RouteService newRouteService(); + + FloatingObjectService newFloatingObjectService(); + + ActivitySeineService newActivitySeineService(); + + SetSeineService newSetSeineService(); + + TripLonglineService newTripLonglineService(); + + ActivityLonglineService newActivityLonglineService(); + + SetLonglineService newSetLonglineService(); + + ActivitySeineObservedSystemService newActivitySeineObservedSystemService(); + + SetLonglineGlobalCompositionService newSetLonglineGlobalCompositionService(); + + SetLonglineDetailCompositionService newSetLonglineDetailCompositionService(); + + TransmittingBuoyOperationService newTransmittingBuoyOperationService(); + + BranchlineService newBranchlineService(); + + SetLonglineCatchService newSetLonglineCatchService(); + + ActivityLongLineEncounterService newActivityLongLineEncounterService(); + + TripLonglineGearUseService newTripLonglineGearUseService(); + + ActivityLongLineSensorUsedService newActivityLongLineSensorUsedService(); + + TdrService newTdrService(); + + TripSeineGearUseService newTripSeineGearUseService(); + + NonTargetCatchService newNonTargetCatchService(); + + NonTargetSampleService newNonTargetSampleService(); + + ObjectObservedSpeciesService newObjectObservedSpeciesService(); + + ObjectSchoolEstimateService newObjectSchoolEstimateService(); + + SchoolEstimateService newSchoolEstimateService(); + + TargetCatchService newTargetCatchService(); + + TargetSampleService newTargetSampleService(); +} -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 16d28d4c3ca0dd3aa9b83a3c7f2a3cee0c233a52 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:40:32 2016 +0200 Improve exception handler --- .../service/actions/validate/ValidateServiceUtils.java | 10 ++++------ .../actions/validate/ValidatorInitializationException.java | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateServiceUtils.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateServiceUtils.java index 616c1e6..cf92b40 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateServiceUtils.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateServiceUtils.java @@ -26,8 +26,6 @@ import com.google.common.collect.ImmutableSet; import com.google.gson.Gson; import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; -import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; @@ -42,19 +40,19 @@ public class ValidateServiceUtils { return ValidateService.AVAILABLE_CONTEXT_NAMES; } - public static ImmutableSet<ValidatorDto> getValidators() throws IOException { + public static ImmutableSet<ValidatorDto> getValidators() { ObserveDtoGsonSupplier gsonSupplier = new ObserveDtoGsonSupplier(false); Gson gson = gsonSupplier.get(); - InputStream inputStream = ValidateServiceUtils.class.getResourceAsStream(RESOURCE_VALIDATORS); - - try (Reader reader = new InputStreamReader(inputStream)) { + try (Reader reader = new InputStreamReader(ValidateServiceUtils.class.getResourceAsStream(RESOURCE_VALIDATORS))) { ValidatorDto[] validators = gson.fromJson(reader, ValidatorDto[].class); return ImmutableSet.copyOf(validators); + } catch (Exception e) { + throw new ValidatorInitializationException(e); } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidatorInitializationException.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidatorInitializationException.java new file mode 100644 index 0000000..80a2f8e --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/validate/ValidatorInitializationException.java @@ -0,0 +1,14 @@ +package fr.ird.observe.services.service.actions.validate; + +/** + * Created on 09/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ValidatorInitializationException extends RuntimeException { + private static final long serialVersionUID =1L; + + public ValidatorInitializationException(Throwable cause) { + super(cause); + } +} -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit f54a6106d355f286c1e42f0acfa0e8ee514cd3d7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:41:14 2016 +0200 make the test works again --- ...onglineDetailCompositionUIValidationHelper.java | 233 --------------------- ...LonglineDetailCompositionValidationContext.java | 116 ++++++++++ .../LonglineDetailCompositionValidatorService.java | 155 ++++++++++++++ ...glineDetailCompositionValidatorServiceTest.java | 107 ++++------ 4 files changed, 316 insertions(+), 295 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIValidationHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIValidationHelper.java index 1c2061d..fcec8a8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIValidationHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIValidationHelper.java @@ -34,19 +34,13 @@ import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.simple.SimpleBeanValidator; -import org.nuiton.validator.bean.simple.SimpleBeanValidatorEvent; -import org.nuiton.validator.bean.simple.SimpleBeanValidatorListener; import javax.swing.JComponent; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -import static org.nuiton.i18n.I18n.t; - /** * Created on 3/18/15. * @@ -168,231 +162,4 @@ public class LonglineDetailCompositionUIValidationHelper { this.objectValueAdjusting = objectValueAdjusting; } - public static class LonglineDetailCompositionValidatorService { - - private final SwingValidator<SectionDto> sectionValidator; - - private final SwingValidator<BasketDto> basketValidator; - - private final SwingValidator<BranchlineDto> branchlineValidator; - - private final DecoratorService decoratorService; - - private final Map<SwingValidator, JComponent> validatorEditors; - - public LonglineDetailCompositionValidatorService(SwingValidator<SectionDto> sectionValidator, - SwingValidator<BasketDto> basketValidator, - SwingValidator<BranchlineDto> branchlineValidator, - Map<SwingValidator, JComponent> validatorEditors, - DecoratorService decoratorService) { - this.sectionValidator = sectionValidator; - this.basketValidator = basketValidator; - this.branchlineValidator = branchlineValidator; - this.validatorEditors = validatorEditors; - this.decoratorService = decoratorService; - - } - - public List<SwingValidatorMessage> validateSections(List<? extends SectionDto> sections) { - - LonglineDetailCompositionValidationContext validationContext = new LonglineDetailCompositionValidationContext(decoratorService, validatorEditors); - - addListener(validationContext); - - try { - - for (SectionDto section : sections) { - - validateSection(validationContext, section); - - } - - } finally { - - removeListener(validationContext); - - } - - return validationContext.getMessages(); - - } - - protected void validateSection(LonglineDetailCompositionValidationContext validationContext, SectionDto section) { - - validationContext.setSection(section); - validationContext.setBasket(null); - validationContext.setBranchline(null); - - sectionValidator.setBean(null); - sectionValidator.setBean(section); - - if (!section.isBasketEmpty()) { - - BasketDto previousBasket = null; - - for (BasketDto basket : section.getBasket()) { - - if (previousBasket != null) { - - // validate previousBasket.floatline2Length = basket.floatline1Length - Float previousBasketFloatline2Length = previousBasket.getFloatline2Length(); - Float basketFloatline1Length = basket.getFloatline1Length(); - if (previousBasketFloatline2Length != null - && basketFloatline1Length != null - && Math.abs(previousBasketFloatline2Length - basketFloatline1Length) > 0.001f) { - - validationContext.addMessage(basketValidator, NuitonValidatorScope.ERROR, "floatline2Length", t("observe.basket.invalid.nextFloatline1Length", previousBasketFloatline2Length, basketFloatline1Length)); - - } - } - - validateBasket(validationContext, basket); - - previousBasket = basket; - - } - } - - } - - protected void validateBasket(LonglineDetailCompositionValidationContext validationContext, BasketDto basket) { - - validationContext.setBranchline(null); - validationContext.setBasket(basket); - - basketValidator.setBean(null); - basketValidator.setBean(basket); - - if (!basket.isBranchlineEmpty()) { - - for (BranchlineDto branchline : basket.getBranchline()) { - - validateBranchline(validationContext, branchline); - - } - } - - validationContext.setBranchline(null); - - } - - protected void validateBranchline(LonglineDetailCompositionValidationContext validationContext, BranchlineDto branchline) { - - validationContext.setBranchline(branchline); - branchlineValidator.setBean(null); - branchlineValidator.setBean(branchline); - - - } - - protected void addListener(LonglineDetailCompositionValidationContext validationContext) { - - sectionValidator.addSimpleBeanValidatorListener(validationContext); - basketValidator.addSimpleBeanValidatorListener(validationContext); - branchlineValidator.addSimpleBeanValidatorListener(validationContext); - - } - - protected void removeListener(LonglineDetailCompositionValidationContext validationContext) { - - sectionValidator.removeSimpleBeanValidatorListener(validationContext); - basketValidator.removeSimpleBeanValidatorListener(validationContext); - branchlineValidator.removeSimpleBeanValidatorListener(validationContext); - - } - - } - - private static class LonglineDetailCompositionValidationContext implements SimpleBeanValidatorListener { - - SectionDto section; - - BasketDto basket; - - BranchlineDto branchline; - - String contextLabel; - - final List<SwingValidatorMessage> messages; - - final DecoratorService decoratorService; - - private final Map<SwingValidator, JComponent> validatorEditors; - - private LonglineDetailCompositionValidationContext(DecoratorService decoratorService, Map<SwingValidator, JComponent> validatorEditors) { - this.decoratorService = decoratorService; - this.validatorEditors = validatorEditors; - this.messages = new ArrayList<>(); - } - - public List<SwingValidatorMessage> getMessages() { - return messages; - } - - public void setSection(SectionDto section) { - this.section = section; - this.basket = null; - this.branchline = null; - updateContextLabel(); - } - - public void setBasket(BasketDto basket) { - this.basket = basket; - this.branchline = null; - updateContextLabel(); - } - - public void setBranchline(BranchlineDto branchline) { - this.branchline = branchline; - updateContextLabel(); - } - - protected void updateContextLabel() { - - contextLabel = ""; - if (section != null) { - contextLabel += "S " + section.getSettingIdentifier(); - if (basket != null) { - contextLabel += " Ba " + basket.getSettingIdentifier(); - if (branchline != null) { - contextLabel += " Br " + branchline.getSettingIdentifier(); - } - } - } - - } - - @Override - public void onFieldChanged(SimpleBeanValidatorEvent event) { - - String[] messagesToAdd = event.getMessagesToAdd(); - if (messagesToAdd != null) { - - String field = event.getField(); - NuitonValidatorScope scope = event.getScope(); - SwingValidator<?> validator = (SwingValidator<?>) event.getSource(); - - for (String messageToAdd : messagesToAdd) { - addMessage(validator, scope, field, messageToAdd); - } - - } - - } - - public void addMessage(SwingValidator validator, NuitonValidatorScope scope, String field, String messageToAdd) { - - String propertyLabel = DecoratorService.getPropertyLabel(field); - SwingValidatorMessage message = new SwingValidatorMessage( - validator, - contextLabel + " - " + t(propertyLabel), - messageToAdd, - scope, - validatorEditors.get(validator) - ); - messages.add(message); - - } - - } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidationContext.java new file mode 100644 index 0000000..385739e --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidationContext.java @@ -0,0 +1,116 @@ +package fr.ird.observe.ui.content.impl.longline; + +import fr.ird.observe.application.swing.decoration.DecoratorService; +import fr.ird.observe.services.dto.longline.BasketDto; +import fr.ird.observe.services.dto.longline.BranchlineDto; +import fr.ird.observe.services.dto.longline.SectionDto; +import jaxx.runtime.validator.swing.SwingValidator; +import jaxx.runtime.validator.swing.SwingValidatorMessage; +import org.nuiton.validator.NuitonValidatorScope; +import org.nuiton.validator.bean.simple.SimpleBeanValidatorEvent; +import org.nuiton.validator.bean.simple.SimpleBeanValidatorListener; + +import javax.swing.JComponent; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 09/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class LonglineDetailCompositionValidationContext implements SimpleBeanValidatorListener { + + SectionDto section; + + BasketDto basket; + + BranchlineDto branchline; + + String contextLabel; + + final List<SwingValidatorMessage> messages; + + final DecoratorService decoratorService; + + private final Map<SwingValidator, JComponent> validatorEditors; + + LonglineDetailCompositionValidationContext(DecoratorService decoratorService, Map<SwingValidator, JComponent> validatorEditors) { + this.decoratorService = decoratorService; + this.validatorEditors = validatorEditors; + this.messages = new ArrayList<>(); + } + + public List<SwingValidatorMessage> getMessages() { + return messages; + } + + public void setSection(SectionDto section) { + this.section = section; + this.basket = null; + this.branchline = null; + updateContextLabel(); + } + + public void setBasket(BasketDto basket) { + this.basket = basket; + this.branchline = null; + updateContextLabel(); + } + + public void setBranchline(BranchlineDto branchline) { + this.branchline = branchline; + updateContextLabel(); + } + + protected void updateContextLabel() { + + contextLabel = ""; + if (section != null) { + contextLabel += "S " + section.getSettingIdentifier(); + if (basket != null) { + contextLabel += " Ba " + basket.getSettingIdentifier(); + if (branchline != null) { + contextLabel += " Br " + branchline.getSettingIdentifier(); + } + } + } + + } + + @Override + public void onFieldChanged(SimpleBeanValidatorEvent event) { + + String[] messagesToAdd = event.getMessagesToAdd(); + if (messagesToAdd != null) { + + String field = event.getField(); + NuitonValidatorScope scope = event.getScope(); + SwingValidator<?> validator = (SwingValidator<?>) event.getSource(); + + for (String messageToAdd : messagesToAdd) { + addMessage(validator, scope, field, messageToAdd); + } + + } + + } + + public void addMessage(SwingValidator validator, NuitonValidatorScope scope, String field, String messageToAdd) { + + String propertyLabel = DecoratorService.getPropertyLabel(field); + SwingValidatorMessage message = new SwingValidatorMessage( + validator, + contextLabel + " - " + t(propertyLabel), + messageToAdd, + scope, + validatorEditors.get(validator) + ); + messages.add(message); + + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorService.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorService.java new file mode 100644 index 0000000..1184d22 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorService.java @@ -0,0 +1,155 @@ +package fr.ird.observe.ui.content.impl.longline; + +import fr.ird.observe.application.swing.decoration.DecoratorService; +import fr.ird.observe.services.dto.longline.BasketDto; +import fr.ird.observe.services.dto.longline.BranchlineDto; +import fr.ird.observe.services.dto.longline.SectionDto; +import jaxx.runtime.validator.swing.SwingValidator; +import jaxx.runtime.validator.swing.SwingValidatorMessage; +import org.nuiton.validator.NuitonValidatorScope; + +import javax.swing.JComponent; +import java.util.List; +import java.util.Map; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 09/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class LonglineDetailCompositionValidatorService { + + private final SwingValidator<SectionDto> sectionValidator; + + private final SwingValidator<BasketDto> basketValidator; + + private final SwingValidator<BranchlineDto> branchlineValidator; + + private final DecoratorService decoratorService; + + private final Map<SwingValidator, JComponent> validatorEditors; + + public LonglineDetailCompositionValidatorService(SwingValidator<SectionDto> sectionValidator, + SwingValidator<BasketDto> basketValidator, + SwingValidator<BranchlineDto> branchlineValidator, + Map<SwingValidator, JComponent> validatorEditors, + DecoratorService decoratorService) { + this.sectionValidator = sectionValidator; + this.basketValidator = basketValidator; + this.branchlineValidator = branchlineValidator; + this.validatorEditors = validatorEditors; + this.decoratorService = decoratorService; + + } + + public List<SwingValidatorMessage> validateSections(List<? extends SectionDto> sections) { + + LonglineDetailCompositionValidationContext validationContext = new LonglineDetailCompositionValidationContext(decoratorService, validatorEditors); + + addListener(validationContext); + + try { + + for (SectionDto section : sections) { + + validateSection(validationContext, section); + + } + + } finally { + + removeListener(validationContext); + + } + + return validationContext.getMessages(); + + } + + protected void validateSection(LonglineDetailCompositionValidationContext validationContext, SectionDto section) { + + validationContext.setSection(section); + validationContext.setBasket(null); + validationContext.setBranchline(null); + + sectionValidator.setBean(null); + sectionValidator.setBean(section); + + if (!section.isBasketEmpty()) { + + BasketDto previousBasket = null; + + for (BasketDto basket : section.getBasket()) { + + if (previousBasket != null) { + + // validate previousBasket.floatline2Length = basket.floatline1Length + Float previousBasketFloatline2Length = previousBasket.getFloatline2Length(); + Float basketFloatline1Length = basket.getFloatline1Length(); + if (previousBasketFloatline2Length != null + && basketFloatline1Length != null + && Math.abs(previousBasketFloatline2Length - basketFloatline1Length) > 0.001f) { + + validationContext.addMessage(basketValidator, NuitonValidatorScope.ERROR, "floatline2Length", t("observe.basket.invalid.nextFloatline1Length", previousBasketFloatline2Length, basketFloatline1Length)); + + } + } + + validateBasket(validationContext, basket); + + previousBasket = basket; + + } + } + + } + + protected void validateBasket(LonglineDetailCompositionValidationContext validationContext, BasketDto basket) { + + validationContext.setBranchline(null); + validationContext.setBasket(basket); + + basketValidator.setBean(null); + basketValidator.setBean(basket); + + if (!basket.isBranchlineEmpty()) { + + for (BranchlineDto branchline : basket.getBranchline()) { + + validateBranchline(validationContext, branchline); + + } + } + + validationContext.setBranchline(null); + + } + + protected void validateBranchline(LonglineDetailCompositionValidationContext validationContext, BranchlineDto branchline) { + + validationContext.setBranchline(branchline); + branchlineValidator.setBean(null); + branchlineValidator.setBean(branchline); + + + } + + protected void addListener(LonglineDetailCompositionValidationContext validationContext) { + + sectionValidator.addSimpleBeanValidatorListener(validationContext); + basketValidator.addSimpleBeanValidatorListener(validationContext); + branchlineValidator.addSimpleBeanValidatorListener(validationContext); + + } + + protected void removeListener(LonglineDetailCompositionValidationContext validationContext) { + + sectionValidator.removeSimpleBeanValidatorListener(validationContext); + basketValidator.removeSimpleBeanValidatorListener(validationContext); + branchlineValidator.removeSimpleBeanValidatorListener(validationContext); + + } + +} diff --git a/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java b/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java index 4bedf20..0ef3e48 100644 --- a/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java +++ b/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java @@ -22,19 +22,18 @@ package fr.ird.observe.ui.content.impl.longline; * #L% */ +import com.google.common.collect.Iterables; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; import fr.ird.observe.services.dto.longline.SectionDto; -import fr.ird.observe.services.service.actions.validate.ObserveValidator; -import fr.ird.observe.application.swing.decoration.DecoratorService; +import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.nuiton.i18n.I18n; import org.nuiton.i18n.init.ClassPathI18nInitializer; @@ -42,6 +41,7 @@ import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.simple.SimpleBeanValidatorMessage; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Locale; @@ -56,7 +56,7 @@ public class LonglineDetailCompositionValidatorServiceTest { /** Logger. */ private static final Log log = LogFactory.getLog(LonglineDetailCompositionValidatorServiceTest.class); - protected LonglineDetailCompositionUIValidationHelper.LonglineDetailCompositionValidatorService service; + protected LonglineDetailCompositionValidatorService service; @Before public void setUp() { @@ -66,28 +66,23 @@ public class LonglineDetailCompositionValidatorServiceTest { ObserveSwingApplicationContext.get().close(); } - ObserveSwingApplicationContext applicationContext = new ObserveSwingApplicationContext(); - ObserveSwingApplicationContext.set(applicationContext); - DecoratorService decoratorService = new DecoratorService(ReferentialLocale.FR); + ObserveSwingApplicationContext applicationContext = new ObserveSwingApplicationContext(new ObserveSwingApplicationConfig()); - ObserveValidator<SectionDto> sectionValidator = new ObserveValidator<>(SectionDto.class, "n1-update-table", NuitonValidatorScope.values()); - ObserveValidator<BasketDto> basketValidator = new ObserveValidator<>(BasketDto.class, "n1-update-table", NuitonValidatorScope.values()); - ObserveValidator<BranchlineDto> branchlineValidator = new ObserveValidator<>(BranchlineDto.class, "n1-update-table", NuitonValidatorScope.values()); + SwingValidator<SectionDto> sectionValidator = new SwingValidator<>(SectionDto.class, "n1-update-table", NuitonValidatorScope.values()); + SwingValidator<BasketDto> basketValidator = new SwingValidator<>(BasketDto.class, "n1-update-table", NuitonValidatorScope.values()); + SwingValidator<BranchlineDto> branchlineValidator = new SwingValidator<>(BranchlineDto.class, "n1-update-table", NuitonValidatorScope.values()); - //FIXME -// service = new LonglineDetailCompositionUIValidationHelper.LonglineDetailCompositionValidatorService( -// sectionValidator, -// basketValidator, -// branchlineValidator, -// Collections.<SwingValidator, JComponent>emptyMap(), -// decoratorService); + service = new LonglineDetailCompositionValidatorService( + sectionValidator, + basketValidator, + branchlineValidator, + Collections.emptyMap(), + applicationContext.getDecoratorService()); I18n.init(new ClassPathI18nInitializer(), Locale.FRANCE); } - // FIXME - @Ignore @Test public void testValidateSections() { @@ -145,11 +140,11 @@ public class LonglineDetailCompositionValidatorServiceTest { } { // 2 sections with baskets with settingIdentifier - //FIXME -// sections.get(0).getBasket().get(0).setSettingIdentifier(1); -// sections.get(0).getBasket().get(1).setSettingIdentifier(2); -// sections.get(1).getBasket().get(0).setSettingIdentifier(1); -// sections.get(1).getBasket().get(1).setSettingIdentifier(2); + + Iterables.get(sections.get(0).getBasket(), 0).setSettingIdentifier(1); + Iterables.get(sections.get(0).getBasket(), 1).setSettingIdentifier(2); + Iterables.get(sections.get(1).getBasket(), 0).setSettingIdentifier(1); + Iterables.get(sections.get(1).getBasket(), 1).setSettingIdentifier(2); List<SwingValidatorMessage> messages = service.validateSections(sections); assertMessages(messages, 0); @@ -158,18 +153,14 @@ public class LonglineDetailCompositionValidatorServiceTest { { // Section 1 - Basket 1 mistmatch floatline1Length with Section 1 - Basket 2 - //FIXME -// sections.get(0).getBasket().get(0).setFloatline1Length(1f); -// sections.get(0).getBasket().get(0).setFloatline2Length(2f); -// -// sections.get(0).getBasket().get(1).setFloatline1Length(1f); // should be 2 -// sections.get(0).getBasket().get(1).setFloatline2Length(6f); -// -// sections.get(1).getBasket().get(0).setFloatline1Length(6f); -// sections.get(1).getBasket().get(0).setFloatline2Length(11f); -// -// sections.get(1).getBasket().get(1).setFloatline1Length(11f); -// sections.get(1).getBasket().get(1).setFloatline2Length(12f); + Iterables.get(sections.get(0).getBasket(), 0).setFloatline1Length(1f); + Iterables.get(sections.get(0).getBasket(), 0).setFloatline2Length(2f); + Iterables.get(sections.get(0).getBasket(), 1).setFloatline1Length(1f); // should be 2 + Iterables.get(sections.get(0).getBasket(), 1).setFloatline2Length(6f); + Iterables.get(sections.get(1).getBasket(), 0).setFloatline1Length(6f); + Iterables.get(sections.get(1).getBasket(), 0).setFloatline2Length(11f); + Iterables.get(sections.get(1).getBasket(), 1).setFloatline1Length(11f); + Iterables.get(sections.get(1).getBasket(), 1).setFloatline2Length(12f); List<SwingValidatorMessage> messages = service.validateSections(sections); assertMessages(messages, 1); @@ -178,18 +169,14 @@ public class LonglineDetailCompositionValidatorServiceTest { { // OK d'ont check if last floatline has same length of first floatline for next section - //FIXME -// sections.get(0).getBasket().get(0).setFloatline1Length(1f); -// sections.get(0).getBasket().get(0).setFloatline2Length(2f); -// -// sections.get(0).getBasket().get(1).setFloatline1Length(2f); -// sections.get(0).getBasket().get(1).setFloatline2Length(6f); -// -// sections.get(1).getBasket().get(0).setFloatline1Length(10f); // Should be 6 -// sections.get(1).getBasket().get(0).setFloatline2Length(11f); -// -// sections.get(1).getBasket().get(1).setFloatline1Length(11f); -// sections.get(1).getBasket().get(1).setFloatline2Length(12f); + Iterables.get(sections.get(0).getBasket(), 0).setFloatline1Length(1f); + Iterables.get(sections.get(0).getBasket(), 0).setFloatline2Length(2f); + Iterables.get(sections.get(0).getBasket(), 1).setFloatline1Length(2f); + Iterables.get(sections.get(0).getBasket(), 1).setFloatline2Length(6f); + Iterables.get(sections.get(1).getBasket(), 0).setFloatline1Length(10f); // Should be 6 + Iterables.get(sections.get(1).getBasket(), 0).setFloatline2Length(11f); + Iterables.get(sections.get(1).getBasket(), 1).setFloatline1Length(11f); + Iterables.get(sections.get(1).getBasket(), 1).setFloatline2Length(12f); List<SwingValidatorMessage> messages = service.validateSections(sections); assertMessages(messages, 0); @@ -198,18 +185,14 @@ public class LonglineDetailCompositionValidatorServiceTest { { // Ok - //FIXME -// sections.get(0).getBasket().get(0).setFloatline1Length(1f); -// sections.get(0).getBasket().get(0).setFloatline2Length(2f); -// -// sections.get(0).getBasket().get(1).setFloatline1Length(2f); -// sections.get(0).getBasket().get(1).setFloatline2Length(10f); -// -// sections.get(1).getBasket().get(0).setFloatline1Length(10f); -// sections.get(1).getBasket().get(0).setFloatline2Length(11f); -// -// sections.get(1).getBasket().get(1).setFloatline1Length(11f); -// sections.get(1).getBasket().get(1).setFloatline2Length(12f); + Iterables.get(sections.get(0).getBasket(), 0).setFloatline1Length(1f); + Iterables.get(sections.get(0).getBasket(), 0).setFloatline2Length(2f); + Iterables.get(sections.get(0).getBasket(), 1).setFloatline1Length(2f); + Iterables.get(sections.get(0).getBasket(), 1).setFloatline2Length(10f); + Iterables.get(sections.get(1).getBasket(), 0).setFloatline1Length(10f); + Iterables.get(sections.get(1).getBasket(), 0).setFloatline2Length(11f); + Iterables.get(sections.get(1).getBasket(), 1).setFloatline1Length(11f); + Iterables.get(sections.get(1).getBasket(), 1).setFloatline2Length(12f); List<SwingValidatorMessage> messages = service.validateSections(sections); assertMessages(messages, 0); @@ -227,6 +210,6 @@ public class LonglineDetailCompositionValidatorServiceTest { if (log.isInfoEnabled()) { log.info(builder.toString()); } - Assert.assertEquals("Shoudl have found " + expectedNbMessages + " messages, but found " + messages.size(), expectedNbMessages, messages.size()); + Assert.assertEquals("Should have found " + expectedNbMessages + " messages, but found " + messages.size(), expectedNbMessages, messages.size()); } } \ No newline at end of file -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit d1a15274acba4f48994ea35ac466058488be4935 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:41:26 2016 +0200 add rest service --- .../DataSynchronizeServiceController.java | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/datasynchro/DataSynchronizeServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/datasynchro/DataSynchronizeServiceController.java new file mode 100644 index 0000000..a17ba82 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/datasynchro/DataSynchronizeServiceController.java @@ -0,0 +1,32 @@ +package fr.ird.observe.application.web.controller.v1.actions.datasynchro; + +import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; +import fr.ird.observe.services.service.actions.datasynchro.DataSynchronizeRequest; +import fr.ird.observe.services.service.actions.datasynchro.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 void prepareRequestOnOppositeDataSource(DataSynchronizeRequest request) { + service.prepareRequestOnOppositeDataSource(request); + } + + @Override + public void prepareRequestOnDataSource(DataSynchronizeRequest request) { + service.prepareRequestOnDataSource(request); + } + + @Override + public void executeRequest(DataSynchronizeRequest request) { + service.executeRequest(request); + } +} -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 06024e398f99496fb59aae43c796122c7379eba6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:42:08 2016 +0200 Sanitize the application context, introduce DataSourcesManager, clean code a lot --- .../java/fr/ird/observe/ObserveActionExecutor.java | 20 +- .../main/java/fr/ird/observe/ObserveCLAction.java | 23 +- .../fr/ird/observe/ObserveOpenDataManager.java | 65 ++ .../main/java/fr/ird/observe/ObserveRunner.java | 91 +- .../observe/ObserveSwingApplicationContext.java | 999 ++++++++------------- .../ObserveSwingApplicationDataSourcesManager.java | 108 +++ .../fr/ird/observe/db/ObserveSwingDataSource.java | 274 ++++-- .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 17 +- .../fr/ird/observe/ui/ObserveMainUIHandler.java | 66 +- .../java/fr/ird/observe/ui/ObserveUICallback.java | 7 +- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 12 +- .../actions/ChangeApplicationLanguageAction.java | 2 +- .../observe/ui/actions/ChangeDbLanguageAction.java | 2 +- .../observe/ui/actions/ChangeStorageAction.java | 2 +- .../observe/ui/actions/CloseApplicationAction.java | 2 +- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 2 +- .../ird/observe/ui/actions/CloseStorageAction.java | 4 +- .../ui/actions/ImportStorageFromFileAction.java | 4 +- .../ird/observe/ui/actions/LaunchAdminAction.java | 2 +- .../ui/actions/ReloadApplicationAction.java | 2 +- .../actions/ReloadDefaultConfigurationAction.java | 2 +- .../observe/ui/actions/ReloadResourcesAction.java | 5 +- .../observe/ui/actions/ReloadStorageAction.java | 6 +- .../ui/actions/SaveStorageToFileAction.java | 4 +- .../ird/observe/ui/actions/ShowConfigAction.java | 4 +- .../observe/ui/actions/ShowStorageInfoAction.java | 2 +- .../ui/actions/shared/CloseAndCreateUIAction.java | 8 +- .../ui/actions/shared/CloseOpenUIAction.java | 8 +- .../shared/MoveActivityLonglinesUIAction.java | 2 +- .../actions/shared/MoveActivitySeinesUIAction.java | 2 +- .../ui/actions/shared/MoveRoutesUIAction.java | 2 +- .../actions/shared/MoveTripLonglinesUIAction.java | 2 +- .../ui/actions/shared/MoveTripSeinesUIAction.java | 2 +- .../observe/ui/actions/shared/ReOpenUIAction.java | 2 +- .../ui/actions/shared/SelectOpenNodeUIAction.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 15 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 8 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 6 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 36 +- .../ui/admin/datasynchro/DataSynchroUIHandler.java | 109 +-- .../DataSynchronizeTaskListCellRenderer.java | 14 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 11 +- .../ird/observe/ui/content/ContentUIHandler.java | 2 +- .../ird/observe/ui/content/ContentUIManager.java | 77 +- .../impl/longline/LonglineDetailCompositionUI.jaxx | 2 +- .../LonglineDetailCompositionUIHandler.java | 12 +- .../impl/longline/LonglineGlobalCompositionUI.jaxx | 8 +- .../LonglineGlobalCompositionUIHandler.java | 3 +- .../impl/longline/SetLonglineUIHandler.java | 2 +- .../ActivitySeineObservedSystemUIHandler.java | 2 +- ...ngObjectTransmittingBuoyOperationUIHandler.java | 2 +- .../ui/content/impl/seine/SetSeineUIHandler.java | 4 +- .../impl/longline/ActivityLonglinesUIHandler.java | 2 +- .../list/impl/longline/TripLonglinesUIHandler.java | 2 +- .../list/impl/seine/ActivitySeinesUIHandler.java | 2 +- .../content/list/impl/seine/RoutesUIHandler.java | 2 +- .../list/impl/seine/TripSeinesUIHandler.java | 2 +- .../impl/longline/ActivityLonglineUIHandler.java | 2 +- .../open/impl/longline/TripLonglineUIHandler.java | 4 +- .../open/impl/seine/ActivitySeineUIHandler.java | 2 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 4 +- .../open/impl/seine/TripSeineUIHandler.java | 4 +- .../ui/content/ref/ContentReferenceUIHandler.java | 2 +- .../ui/content/table/ContentTableUIHandler.java | 4 +- .../impl/longline/CatchLonglineUIHandler.java | 10 +- .../table/impl/longline/EncounterUIHandler.java | 4 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 4 +- .../table/impl/longline/SensorUsedUIHandler.java | 4 +- .../content/table/impl/longline/TdrUIHandler.java | 6 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 4 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 4 +- .../table/impl/seine/NonTargetSampleUIHandler.java | 2 +- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 4 +- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 4 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 4 +- .../table/impl/seine/TargetCatchUIHandler.java | 4 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 4 +- .../table/impl/seine/TargetSampleUIHandler.java | 2 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 16 +- .../ui/storage/StorageBackupUILauncher.java | 4 +- .../ird/observe/ui/storage/StorageUIHandler.java | 36 +- .../ird/observe/ui/storage/StorageUILauncher.java | 11 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 60 +- .../observe/ui/storage/tabs/ChooseDbModeUI.jaxx | 13 +- .../ui/storage/tabs/StorageTabUIHandler.java | 3 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 2 +- .../ird/observe/ui/tree/ActivityLonglineNode.java | 2 +- .../fr/ird/observe/ui/tree/ActivitySeineNode.java | 2 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 2 +- .../observe/ui/tree/FloatingObjectSeineNode.java | 2 +- .../ui/tree/NavigationTreeSelectionModel.java | 2 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 8 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 16 +- .../ird/observe/ui/tree/ProgramLonglineNode.java | 2 +- .../fr/ird/observe/ui/tree/ProgramSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/RouteSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/SetLonglineNode.java | 2 +- .../java/fr/ird/observe/ui/tree/SetSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/TripLonglineNode.java | 2 +- .../java/fr/ird/observe/ui/tree/TripSeineNode.java | 2 +- .../actions/ChangeActivityRouteActionListener.java | 4 +- .../actions/ChangeActivityTripActionListener.java | 2 +- .../actions/ChangeRouteTripActionListener.java | 4 +- .../actions/ChangeTripProgramActionListener.java | 8 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 2 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 2 +- .../loadors/ActivitySeinesNodeChildLoador.java | 2 +- .../loadors/ProgramLonglineNodeChildLoador.java | 2 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 2 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 2 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 4 +- .../observe/validation/ObserveSwingValidator.java | 42 +- .../ird/observe/validation/ValidationContext.java | 22 +- 113 files changed, 1137 insertions(+), 1316 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveActionExecutor.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveActionExecutor.java index 407e40e..bf33847 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveActionExecutor.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveActionExecutor.java @@ -65,7 +65,7 @@ public class ObserveActionExecutor extends ActionExecutor { return; } - if (ObserveSwingApplicationContext.isClosed()) { + if (ObserveSwingApplicationContext.get().isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -77,7 +77,7 @@ public class ObserveActionExecutor extends ActionExecutor { model.setStepState(WizardState.RUNNING); // return; } - ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); if (ui != null) { ui.setBusy(true); } @@ -92,7 +92,7 @@ public class ObserveActionExecutor extends ActionExecutor { "] failed with error " + error.getCause(), error); } } - if (ObserveSwingApplicationContext.isClosed()) { + if (ObserveSwingApplicationContext.get().isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -104,7 +104,7 @@ public class ObserveActionExecutor extends ActionExecutor { model.setStepState(WizardState.FAILED); return; } - ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); if (ui != null) { ui.getStatus().setStatus("Action [" + source.getActionLabel() + "] arrêté à cause d'un erreur " + error.getMessage()); } @@ -115,7 +115,7 @@ public class ObserveActionExecutor extends ActionExecutor { if (log.isDebugEnabled()) { log.debug("Action [" + source.getActionLabel() + "] was canceled"); } - if (ObserveSwingApplicationContext.isClosed()) { + if (ObserveSwingApplicationContext.get().isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -125,7 +125,7 @@ public class ObserveActionExecutor extends ActionExecutor { admin.getHandler().getModel().setStepState(WizardState.CANCELED); return; } - ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); if (ui != null) { ui.getStatus().setStatus("Action [" + source.getActionLabel() + "] annulée"); } @@ -136,7 +136,7 @@ public class ObserveActionExecutor extends ActionExecutor { if (log.isDebugEnabled()) { log.debug("Action [" + source.getActionLabel() + " ] was done in " + source.getTime()); } - if (ObserveSwingApplicationContext.isClosed()) { + if (ObserveSwingApplicationContext.get().isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -154,7 +154,7 @@ public class ObserveActionExecutor extends ActionExecutor { } return; } - ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); if (ui != null) { ui.getStatus().setStatus("Action [" + source.getActionLabel() + "] terminée."); } @@ -166,7 +166,7 @@ public class ObserveActionExecutor extends ActionExecutor { if (log.isDebugEnabled()) { log.debug("Action [" + source.getActionLabel() + " ] is consumed (still " + count + " tasks to treat)."); } - if (ObserveSwingApplicationContext.isClosed()) { + if (ObserveSwingApplicationContext.get().isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -190,7 +190,7 @@ public class ObserveActionExecutor extends ActionExecutor { //admin.getHandler().getUi().removePropertyChangeListener(admin.getHandler().getUi()); // return; } - ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); if (count < 1 && ui != null) { ui.setBusy(false); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveCLAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveCLAction.java index e11a47c..1f2b617 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveCLAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveCLAction.java @@ -225,8 +225,7 @@ public class ObserveCLAction { disableMainUI(); ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); - ObserveMainUIHandler handler = - context.getContextValue(ObserveMainUIHandler.class); + ObserveMainUIHandler handler = context.getContextValue(ObserveMainUIHandler.class); Runnable runnable = createRunnable(handler, "showConfig", context); @@ -298,11 +297,8 @@ public class ObserveCLAction { launchAction(t(launcher.getTitle()), runnable); } - @SuppressWarnings("unused") public void launchH2ServerMode() throws InterruptedException { -// checkIsAdmin(); - if (!config.isLocalStorageExist()) { if (log.isErrorEnabled()) { log.error("Local database does not exist."); @@ -315,7 +311,6 @@ public class ObserveCLAction { } } - @SuppressWarnings("unused") public void createId(String className, int nbId) throws IOException { disableMainUI(); @@ -363,17 +358,14 @@ public class ObserveCLAction { return config; } - protected Runnable createRunnable(Object invoker, - String method, - Object... args) { + protected Runnable createRunnable(Object invoker, String method, Object... args) { ObserveActionExecutor executor = ObserveRunner.getActionExecutor(); Runnable runnable = executor.createRunnable(invoker, method, args); return runnable; } - protected void launchAction(String title, - Runnable target) throws InterruptedException { + protected void launchAction(String title, Runnable target) throws InterruptedException { ObserveActionExecutor executor = ObserveRunner.getActionExecutor(); CommandLineActionWorker action = new CommandLineActionWorker(title, target); @@ -387,14 +379,6 @@ public class ObserveCLAction { context.lock(); } -// protected void checkIsAdmin() { -// if (!ObserveRunner.isAdmin()) { -// throw new IllegalStateException( -// "Your are not allowed to execute admin operation with " + -// ObserveRunner.getRunner().getRunnerName()); -// } -// } - /** * Un worker pour les opération longues d'administration. * @@ -403,7 +387,6 @@ public class ObserveCLAction { */ public class CommandLineActionWorker extends ActionWorker<Void, String> { - public CommandLineActionWorker(String actionLabel, Runnable target) { super(actionLabel); setTarget(target); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveOpenDataManager.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveOpenDataManager.java index 242fe5c..cffc743 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveOpenDataManager.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveOpenDataManager.java @@ -24,6 +24,9 @@ package fr.ird.observe; import com.google.common.base.Preconditions; import fr.ird.observe.db.DataContext; +import fr.ird.observe.services.ObserveServicesProvider; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.referential.ProgramDto; import java.io.Closeable; @@ -202,4 +205,66 @@ public class ObserveOpenDataManager implements Closeable { public void close() { dataContext.resetOpen(); } + + public void sanitizeOpenIds(String[] ids) { + if (ids != null) { + + boolean exists = true; + + ObserveServicesProvider servicesProvider = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider(); + + for (int i = 0, l = ids.length; i < l; i++) { + String id = ids[i]; + + // si l'id précédent existe, on vérifie l'actuel + // sinon, on met à null + if (exists) { + if (IdDtos.isProgramId(id)) { + + exists = servicesProvider.newReferentialService().exists(ProgramDto.class, id); + + } else if (IdDtos.isTripSeineId(id)) { + + exists = servicesProvider.newTripSeineService().exists(id); + + } else if (IdDtos.isRouteId(id)) { + + exists = servicesProvider.newRouteService().exists(id); + + } else if (IdDtos.isActivitySeineId(id)) { + + exists = servicesProvider.newActivitySeineService().exists(id); + + } else if (IdDtos.isSetSeineId(id)) { + + exists = servicesProvider.newSetSeineService().exists(id); + + } else if (IdDtos.isFloatingObjectId(id)) { + + exists = servicesProvider.newFloatingObjectService().exists(id); + + } else if (IdDtos.isTripLonglineId(id)) { + + exists = servicesProvider.newTripLonglineService().exists(id); + + } else if (IdDtos.isActivityLonglineId(id)) { + + exists = servicesProvider.newActivityLonglineService().exists(id); + + } else if (IdDtos.isSetLonglineId(id)) { + + exists = servicesProvider.newSetLonglineService().exists(id); + + } else { + + exists = false; + } + } + + if (!exists) { + ids[i] = null; + } + } + } + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java index 455d1d2..36686b0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java @@ -62,6 +62,7 @@ import java.util.Map; import java.util.Properties; import static fr.ird.observe.ObserveResourceManager.Resource; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.H2_SERVER_MODE; import static fr.ird.observe.configuration.ObserveSwingApplicationConfigOption.BACKUP_DIRECTORY; import static fr.ird.observe.configuration.ObserveSwingApplicationConfigOption.DATA_DIRECTORY; import static fr.ird.observe.configuration.ObserveSwingApplicationConfigOption.DB_DIRECTORY; @@ -215,8 +216,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } if (log.isInfoEnabled()) { - log.info(t("observe.runner.user.directories.loaded", - config.getDataDirectory())); + log.info(t("observe.runner.user.directories.loaded", config.getDataDirectory())); } // 3 - preparation i18n @@ -224,8 +224,7 @@ public abstract class ObserveRunner extends ApplicationRunner { initI18n(config); if (log.isInfoEnabled()) { - log.info(t("observe.runner.i18n.loaded", - config.getLocale().getDisplayLanguage())); + log.info(t("observe.runner.i18n.loaded", config.getLocale().getDisplayLanguage())); } // 4 - preparation de la configuration des ui @@ -234,7 +233,7 @@ public abstract class ObserveRunner extends ApplicationRunner { // 5 - preparation du context applicatif - initContext(config); + ObserveSwingApplicationContext applicationContext = new ObserveSwingApplicationContext(config); // 6 - détection de la base locale @@ -284,8 +283,7 @@ public abstract class ObserveRunner extends ApplicationRunner { protected void onStart() throws Exception { if (log.isInfoEnabled()) { - log.info(t("observe.runner.start", new Date(), - Arrays.toString(args))); + log.info(t("observe.runner.start", new Date(), Arrays.toString(args))); } ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); @@ -294,13 +292,6 @@ public abstract class ObserveRunner extends ApplicationRunner { log.debug("Will use context : " + context); } - UIHelper.checkJAXXContextEntries( - context, - ObserveSwingApplicationContext.CONFIG_ENTRY_DEF, - ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF, - ObserveSwingApplicationContext.DECORATOR_SERVICE_ENTRY_DEF - ); - // 1 - launch commandline actions ObserveSwingApplicationConfig config = context.getConfig(); @@ -331,39 +322,31 @@ public abstract class ObserveRunner extends ApplicationRunner { log.info(t("observe.runner.ui.loaded")); } - Boolean h2ServerMode = context.getContextValue( - Boolean.class, - ObserveCLAction.ActionDefinition.H2_SERVER_MODE.name()); + Boolean h2ServerMode = H2_SERVER_MODE.get(); if (BooleanUtils.isTrue(h2ServerMode)) { // starts in h2 server mode - context.removeContextValue( - Boolean.class, - ObserveCLAction.ActionDefinition.H2_SERVER_MODE.name()); + ObserveSwingApplicationContext.get().removeH2ServerMode(); new StartServerModeAction(ui).run(); // on ne charge rien au démarrage - ui.getStatus().setStatus(t("observe.runner.loaded", - config.getVersion())); + ui.getStatus().setStatus(t("observe.runner.loaded", config.getVersion())); return; } if (!config.isLoadLocalStorage()) { // on ne charge rien au démarrage - ui.getStatus().setStatus(t("observe.runner.loaded", - config.getVersion())); + ui.getStatus().setStatus(t("observe.runner.loaded", config.getVersion())); return; } // 3 - init storage - runAction(t("observe.runner.load.database"), - context, - "initStorage", config, ui, true); + runAction(t("observe.runner.load.database"), context, "initStorage", config, ui, true); } @@ -442,8 +425,7 @@ public abstract class ObserveRunner extends ApplicationRunner { // 1 - user data directory - File dataDirectory = - resourceManager.createDirectory(config, DATA_DIRECTORY); + File dataDirectory = resourceManager.createDirectory(config, DATA_DIRECTORY); if (log.isDebugEnabled()) { log.debug("user data directory : " + dataDirectory); @@ -466,8 +448,7 @@ public abstract class ObserveRunner extends ApplicationRunner { // 4 - resources directory - File resourcesDirectory = - resourceManager.createDirectory(config, RESOURCES_DIRECTORY); + File resourcesDirectory = resourceManager.createDirectory(config, RESOURCES_DIRECTORY); if (log.isDebugEnabled()) { log.debug("user resource data directory : " + resourcesDirectory); @@ -498,8 +479,7 @@ public abstract class ObserveRunner extends ApplicationRunner { // 7 - resources report - File reportDirectory = - resourceManager.createDirectory(config, REPORT_DIRECTORY); + File reportDirectory = resourceManager.createDirectory(config, REPORT_DIRECTORY); file = Resource.report.getFile(reportDirectory); @@ -550,10 +530,7 @@ public abstract class ObserveRunner extends ApplicationRunner { File i18nDirectory = config.getI18nDirectory(); - UserI18nInitializer i18nInitializer = new UserI18nInitializer( - i18nDirectory, - new DefaultI18nInitializer("observe-i18n") - ) { + UserI18nInitializer i18nInitializer = new UserI18nInitializer(i18nDirectory, new DefaultI18nInitializer("observe-i18n")) { @Override protected void createUserI18nLayout(File directory) throws Exception { @@ -574,8 +551,7 @@ public abstract class ObserveRunner extends ApplicationRunner { if (log.isDebugEnabled()) { log.debug("i18n language : " + locale); - log.debug("i18n loading time : " + - StringUtil.convertTime(t00, System.nanoTime())); + log.debug("i18n loading time : " + StringUtil.convertTime(t00, System.nanoTime())); } } @@ -637,42 +613,9 @@ public abstract class ObserveRunner extends ApplicationRunner { } - /** - * Permet l'initialisation du contexte applicatif et positionne l'instance - * partagée. - * - * Note : Cette méthode ne peut être appelée qu'une seule fois. - * - * @param config la configuration de l'application - * @return le context applicatif - * @throws IllegalStateException si un contexte applicatif a déja été positionné. - */ - public ObserveSwingApplicationContext initContext(ObserveSwingApplicationConfig config) { - - ObserveSwingApplicationContext.checkIsNotInit(); - - ObserveSwingApplicationContext applicationContext = new ObserveSwingApplicationContext(); - - // add config - ObserveSwingApplicationContext.CONFIG_ENTRY_DEF.setContextValue(applicationContext, config); - - // add actions - ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF.setContextValue(applicationContext, new ObserveCLAction()); - - // referencement du context applicatif sur le helper de service - ObserveSwingApplicationContext.set(applicationContext); - - // init decorator service - applicationContext.getDecoratorService(); - - return applicationContext; - } - - protected ObserveMainUI startUI(ObserveSwingApplicationContext context, - ObserveSwingApplicationConfig config) { + protected ObserveMainUI startUI(ObserveSwingApplicationContext context, ObserveSwingApplicationConfig config) { - ObserveMainUIHandler uiHandler = - context.getContextValue(ObserveMainUIHandler.class); + ObserveMainUIHandler uiHandler = context.getContextValue(ObserveMainUIHandler.class); ObserveMainUI ui = uiHandler.initUI(context, config); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index 72042b9..7583d5b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -32,34 +32,20 @@ import fr.ird.observe.db.constants.DbMode; import fr.ird.observe.db.event.ObserveSwingDataSourceEvent; import fr.ird.observe.db.event.ObserveSwingDataSourceListenerAdapter; import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; -import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceMainFactory; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; -import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.reference.ReferenceBinderEngine; import fr.ird.observe.services.dto.reference.ReferenceBinderEngineSupplier; -import fr.ird.observe.services.dto.referential.ProgramDto; 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.ReferentialService; import fr.ird.observe.services.service.actions.validate.ValidateServiceUtils; import fr.ird.observe.services.service.actions.validate.ValidatorDto; -import fr.ird.observe.services.service.longline.ActivityLonglineService; -import fr.ird.observe.services.service.longline.SetLonglineService; -import fr.ird.observe.services.service.longline.TripLonglineService; -import fr.ird.observe.services.service.seine.ActivitySeineService; -import fr.ird.observe.services.service.seine.FloatingObjectService; -import fr.ird.observe.services.service.seine.RouteService; -import fr.ird.observe.services.service.seine.SetSeineService; -import fr.ird.observe.services.service.seine.TripSeineService; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; -import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.actions.ChangeStorageAction; import fr.ird.observe.ui.actions.shared.AbstractUIAction; import fr.ird.observe.ui.actions.shared.CancelCreateUIAction; @@ -79,32 +65,50 @@ import fr.ird.observe.ui.actions.shared.ResetEditUIAction; import fr.ird.observe.ui.actions.shared.SaveEditUIAction; import fr.ird.observe.ui.actions.shared.SelectNodeUIAction; import fr.ird.observe.ui.actions.shared.SelectOpenNodeUIAction; -import fr.ird.observe.ui.content.ContentUI; +import fr.ird.observe.ui.content.ContentUIManager; import fr.ird.observe.ui.tree.ObserveTreeHelper; -import fr.ird.observe.validation.ObserveSwingValidator; import fr.ird.observe.validation.ValidationContext; -import jaxx.runtime.JAXXUtil; import jaxx.runtime.context.DefaultApplicationContext; import jaxx.runtime.context.JAXXContextEntryDef; -import jaxx.runtime.swing.CardLayout2; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.h2.tools.Server; import javax.swing.ActionMap; import javax.swing.JOptionPane; -import javax.swing.JPanel; -import java.awt.Component; import java.io.Closeable; import java.io.File; -import java.io.IOException; import java.util.Arrays; +import java.util.Collection; import java.util.EnumSet; import java.util.List; -import java.util.Locale; +import java.util.Objects; import java.util.Set; import java.util.UUID; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.ACTIONS; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.ACTION_MAP; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.BINDER_SERVICE; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.CONFIG; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.CONTENT_UI_MANAGER; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.DATA_CONTEXT; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.DATA_SOURCES_MANAGER; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.DATA_SOURCE_CONFIGURATION_FACTORY; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.DECORATOR_SERVICE; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.H2_SERVER; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.H2_SERVER_MODE; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.H2_WEBSERVER; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.MAIN_UI; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.NODE_TO_RESELECT; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.OPEN_DATA_MANAGER; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.TEXT_GENERATOR; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.VALIDATION_CONTEXT; +import static fr.ird.observe.ObserveSwingApplicationContext.Entries.VALIDATORS; +import static fr.ird.observe.ui.UIHelper.askUser; +import static fr.ird.observe.ui.UIHelper.displayInfo; +import static fr.ird.observe.ui.UIHelper.handlingError; +import static fr.ird.observe.ui.UIHelper.newContextEntryDef; +import static fr.ird.observe.ui.UIHelper.newListContextEntryDef; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -124,512 +128,351 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im /** Logger */ private static final Log log = LogFactory.getLog(ObserveSwingApplicationContext.class); - /** Un drapeau pour savoir quand l'application est en cours de fermeture. */ - protected static boolean closed; - - /** - * //FIXME Rendre cela configurable - * Un drapeau pour activer sur les connections le support JMX. - * - * @since 2.2 - */ - private static boolean useJMX; - - public static ObserveSwingApplicationContext applicationContext; - - /** the jaxx context entry to store the config */ - public static final JAXXContextEntryDef<ObserveSwingApplicationConfig> CONFIG_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveSwingApplicationConfig.class); - - /** the jaxx context entry to store the decorator service */ - public static final JAXXContextEntryDef<DecoratorService> DECORATOR_SERVICE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(DecoratorService.class); - - /** the jaxx context entry to store the decorator service */ - public static final JAXXContextEntryDef<ObserveTextGenerator> TEXT_GENERATOR_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveTextGenerator.class); - - - /** the jaxx context entry to store the service main factory */ - public static final JAXXContextEntryDef<ObserveServiceMainFactory> SERVICE_MAIN_FACTORY_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveServiceMainFactory.class); - - /** the jaxx context entry to store the data source configuration factory */ - public static final JAXXContextEntryDef<ObserveDataSourceConfigurationMainFactory> DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveDataSourceConfigurationMainFactory.class); - - /** the jaxx context entry to store the data source configuration factory */ - public static final JAXXContextEntryDef<ObserveOpenDataManager> OPEN_DATA_MANAGER_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveOpenDataManager.class); - - /** the jaxx context entry to store the decorator service */ - public static final JAXXContextEntryDef<ObserveSwingBinderService> BINDER_SERVICE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveSwingBinderService.class); - - /** the jaxx context entry to store the data service */ - public static final JAXXContextEntryDef<DataContext> DATA_CONTEXT_ENTRY_DEF = - JAXXUtil.newContextEntryDef(DataContext.class); - - /** the jaxx context entry to store the data source (says the ui data source) */ - public static final JAXXContextEntryDef<ObserveSwingDataSource> SWING_DATA_SOURCE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveSwingDataSource.class); - - public static final JAXXContextEntryDef<List<ObserveSwingDataSource>> SWING_DATA_SOURCE_LIST_ENTRY_DEF = - JAXXUtil.newListContextEntryDef("dataSources"); - - public static final JAXXContextEntryDef<ValidationContext> VALIDATION_CONTEXT_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ValidationContext.class); - - public static final JAXXContextEntryDef<List<ValidatorDto>> VALIDATORS_ENTRY_DEF = - JAXXUtil.newListContextEntryDef("validators"); - - /** the jaxx context entry to store the main ui */ - private static final JAXXContextEntryDef<ObserveMainUI> MAIN_UI_ENTRY_DEF = - UIHelper.newContextEntryDef("mainui", ObserveMainUI.class); - - /** the jaxx context entry to store the commandline actions */ - public static final JAXXContextEntryDef<ObserveCLAction> ACTIONS_ENTRY_DEF = - UIHelper.newContextEntryDef(ObserveCLAction.class); - - /** the jaxx context entry to store the ui shared actions */ - public static final JAXXContextEntryDef<ActionMap> ACTION_MAP_ENTRY_DEF = - UIHelper.newContextEntryDef(ActionMap.class); - - /** the jaxx context entry to store previous selected path to reoload in the navigation tree */ - public static final JAXXContextEntryDef<List<String>> NODE_TO_RESELECT_ENTRY_DEF = - UIHelper.newListContextEntryDef("nodeToReselect"); - - /** the jaxx context entry to store the h2 server instance when the application switched to server mode */ - public static final JAXXContextEntryDef<Server> H2_SERVER_ENTRY_DEF = - JAXXUtil.newContextEntryDef(Server.class); - - /** the jaxx context entry to store the h2 webserver instance when the application switched to server mode */ - public static final JAXXContextEntryDef<Server> H2_WEBSERVER_ENTRY_DEF = - JAXXUtil.newContextEntryDef(Server.class); + enum Entries { + + CONFIG("Config", ObserveSwingApplicationConfig.class), + DECORATOR_SERVICE("Decorator service", DecoratorService.class), + TEXT_GENERATOR("Text generator", ObserveTextGenerator.class), + SERVICE_MAIN_FACTORY("Service main factory", ObserveServiceMainFactory.class), + DATA_SOURCE_CONFIGURATION_FACTORY("Data source configuration main factory", ObserveDataSourceConfigurationMainFactory.class), + OPEN_DATA_MANAGER("Open data manager", ObserveOpenDataManager.class), + BINDER_SERVICE("Binder service", ObserveSwingBinderService.class), + DATA_CONTEXT("Data context", DataContext.class), + CONTENT_UI_MANAGER("Content UI manager", ContentUIManager.class), + DATA_SOURCES_MANAGER("Data sources manager", ObserveSwingApplicationDataSourcesManager.class), + VALIDATION_CONTEXT("Validation context", ValidationContext.class), + MAIN_UI("Main UI", ObserveMainUI.class), + ACTIONS("Command line Actions", ObserveCLAction.class), + ACTION_MAP("UI Actions", ActionMap.class), + H2_SERVER_MODE("H2 Server mode", Boolean.class), + H2_SERVER("H2 Server", Server.class), + H2_WEBSERVER("H2 Web server", Server.class), + VALIDATORS("Validators"), + NODE_TO_RESELECT("Node to reselect"); + + private final String objectName; + private final JAXXContextEntryDef entryDef; + + <O> Entries(String objectName, Class<O> entryType) { + this.objectName = objectName; + this.entryDef = newContextEntryDef(objectName, entryType); + } - protected final ReferenceBinderEngine referenceBinderEngine = new ReferenceBinderEngineSupplier().get(); + <O> Entries(String objectName) { + this.objectName = objectName; + this.entryDef = newListContextEntryDef(objectName); + } - public ObserveSwingApplicationConfig getConfig() { - return CONFIG_ENTRY_DEF.getContextValue(this); - } + public <O> O get() { + return (O) entryDef.getContextValue(ObserveSwingApplicationContext.get()); + } - public final ObserveSwingDataSource getDataSource() { - ObserveSwingDataSource dataSource = SWING_DATA_SOURCE_ENTRY_DEF.getContextValue(this); - return dataSource; - } + private <O> void set(O instance) { + entryDef.setContextValue(ObserveSwingApplicationContext.get(), instance); + if (log.isInfoEnabled()) { + log.info("Add to application context " + objectName + ": " + (instance instanceof Collection ? ((Collection)instance).size()+" element(s)": instance)); + } + } - public final void setDataSource(ObserveSwingDataSource source) { - if (source == null) { - SWING_DATA_SOURCE_ENTRY_DEF.removeContextValue(this); - } else { - SWING_DATA_SOURCE_ENTRY_DEF.setContextValue(this, source); + private <O> void remove() { + O instance = get(); + entryDef.removeContextValue(ObserveSwingApplicationContext.get()); + if (log.isInfoEnabled()) { + log.info("Remove from application context " + objectName + ": " + (instance instanceof Collection ? ((Collection)instance).size()+" element(s)": instance)); + } } } - public final ObserveSwingDataSource newDataSource(ObserveDataSourceConfiguration configuration) { - ObserveSwingDataSource dataSource = new ObserveSwingDataSource(configuration); + private static ObserveSwingApplicationContext INSTANCE; - dataSource.addObserveSwingDataSourceListener(new ObserveSwingDataSourceListenerAdapter() { + /** Un objet pour bloquer le context */ + private final Object lock; - @Override - public void onOpened(ObserveSwingDataSourceEvent event) { - super.onOpened(event); - ObserveSwingDataSource dataSource = event.getSource(); - getAllDataSource().add(dataSource); + private final ReferenceBinderEngine referenceBinderEngine; - if (log.isInfoEnabled()) { - log.info("Data source opened : " + dataSource.getConfiguration() + " (" + getAllDataSource().size() + " datas sources open)"); - } - } + /** Un drapeau pour savoir quand l'application est en cours de fermeture. */ + private boolean closed; - @Override - public void onClosed(ObserveSwingDataSourceEvent event) { - super.onClosed(event); - ObserveSwingDataSource dataSource = event.getSource(); - getAllDataSource().remove(dataSource); - if (log.isInfoEnabled()) { - log.info("Data source closed : " + dataSource.getConfiguration() + " (" + getAllDataSource().size() + " datas sources open)"); - } - } - }); + /** + * Un drapeau pour activer sur les connections le support JMX. + * + * @since 2.2 + */ + private boolean useJMX; - return dataSource; + /** + * Récupération du contexte applicatif. + * + * @return l'instance partagé du contexte. + * @throws IllegalStateException si le contexte n'a pas été initialisé + */ + public static ObserveSwingApplicationContext get() throws IllegalStateException { + Objects.requireNonNull(INSTANCE, "no application context initialized."); + return INSTANCE; } - public ReferenceBinderEngine getReferenceBinderEngine() { - - return referenceBinderEngine; + /** @return {@code true} si le context a été initialisé */ + public static boolean isInit() { + return INSTANCE != null; } - protected List<ObserveSwingDataSource> getAllDataSource() { - List<ObserveSwingDataSource> dataSources = SWING_DATA_SOURCE_LIST_ENTRY_DEF.getContextValue(this); - if (dataSources == null) { - dataSources = Lists.newLinkedList(); - SWING_DATA_SOURCE_LIST_ENTRY_DEF.setContextValue(this, dataSources); - } - return dataSources; - } + public ObserveSwingApplicationContext(ObserveSwingApplicationConfig config) { + Preconditions.checkState(INSTANCE == null, "application context already registred."); - public final DecoratorService getDecoratorService() { - DecoratorService decoratorService = - DECORATOR_SERVICE_ENTRY_DEF.getContextValue(this); - if (decoratorService == null) { + INSTANCE = this; - // initialisation du service de décoration - ObserveSwingApplicationConfig config = getConfig(); - ReferentialLocale loc = ReferentialLocale.FR; - if (config != null) { - Locale dbLocale = config.getDbLocale(); - if (dbLocale != null) { - loc = ReferentialLocale.valueOf(dbLocale); - } - } - decoratorService = new DecoratorService(loc); - DECORATOR_SERVICE_ENTRY_DEF.setContextValue(this, decoratorService); - } - return decoratorService; + CONFIG.set(config); + BINDER_SERVICE.set(new ObserveSwingBinderService()); + ACTIONS.set(new ObserveCLAction()); + CONTENT_UI_MANAGER.set(new ContentUIManager()); + DATA_SOURCES_MANAGER.set(new ObserveSwingApplicationDataSourcesManager()); + DATA_SOURCE_CONFIGURATION_FACTORY.set(new ObserveDataSourceConfigurationMainFactory()); + DECORATOR_SERVICE.set(new DecoratorService(ReferentialLocale.valueOf(config.getDbLocale()))); + TEXT_GENERATOR.set(new ObserveTextGenerator(config)); + DATA_CONTEXT.set(new DataContext()); + OPEN_DATA_MANAGER.set(new ObserveOpenDataManager(getDataContext())); + VALIDATION_CONTEXT.set(new ValidationContext(getDataContext())); + VALIDATORS.set(Lists.newArrayList(ValidateServiceUtils.getValidators())); + referenceBinderEngine = new ReferenceBinderEngineSupplier().get(); + lock = new Object(); } - public final ObserveTextGenerator getTextGenerator() { - ObserveTextGenerator textGenerator = - TEXT_GENERATOR_ENTRY_DEF.getContextValue(this); - if (textGenerator == null) { + //------------------------------------------- + // - Read + //------------------------------------------- - ObserveSwingApplicationConfig config = getConfig(); - textGenerator = new ObserveTextGenerator(config); - TEXT_GENERATOR_ENTRY_DEF.setContextValue(this, textGenerator); - } - return textGenerator; + public boolean isUseJMX() { + return useJMX; } - public final ObserveOpenDataManager getOpenDataManager() { - ObserveOpenDataManager openDataManager = - OPEN_DATA_MANAGER_ENTRY_DEF.getContextValue(this); - if (openDataManager == null) { - - DataContext dataContext = getDataContext(); - - openDataManager = new ObserveOpenDataManager(dataContext); - OPEN_DATA_MANAGER_ENTRY_DEF.setContextValue(this, openDataManager); - } - return openDataManager; + /** + * @return {@code true} si le context applicatif a été fermé (et est donc + * passé dans la méthode {@link #close()}, {@code false} autrement. + */ + public boolean isClosed() { + return closed; } - - public final ObserveDataSourceConfigurationMainFactory getObserveDataSourceConfigurationMainFactory() { - - ObserveDataSourceConfigurationMainFactory configurationMainFactory = DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF.getContextValue(this); - - if (configurationMainFactory == null) { - - configurationMainFactory = new ObserveDataSourceConfigurationMainFactory(); - - DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF.setContextValue(this, configurationMainFactory); - - } - - return configurationMainFactory; + public ObserveSwingApplicationConfig getConfig() { + return CONFIG.get(); } - public ObserveSwingDataSource createDataSourceH2Temp(String label) { - ObserveDataSourceConfigurationMainFactory configurationMainFactory = getObserveDataSourceConfigurationMainFactory(); - - File tmpDirectory = getConfig().getTmpDirectory(); - - File dbDirectory = new File(tmpDirectory, ObserveSwingApplicationConfig.DB_NAME + UUID.randomUUID().toString()); - - ObserveDataSourceConfigurationTopiaH2 config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( - label, - dbDirectory, - ObserveSwingApplicationConfig.DB_NAME, - getConfig().getH2Login(), - getConfig().getH2Password(), - false, - false, - getConfig().getModelVersion() - ); - - ObserveSwingDataSource result = newDataSource(config); - - return result; + public ContentUIManager getContentUIManager() { + return CONTENT_UI_MANAGER.get(); } - public <S extends ObserveService> S newService(Class<S> serviceType) { - - ObserveSwingDataSource dataSource = getDataSource(); - - Preconditions.checkNotNull(dataSource, "Aucune source de données configurée"); - - S service = dataSource.newService(serviceType); - - return service; + public ObserveSwingApplicationDataSourcesManager getDataSourcesManager() { + return DATA_SOURCES_MANAGER.get(); } - public final DataContext getDataContext() { - DataContext result = DATA_CONTEXT_ENTRY_DEF.getContextValue(this); - if (result == null) { - result = new DataContext(); - DATA_CONTEXT_ENTRY_DEF.setContextValue(this, result); - } - return result; + public ReferenceBinderEngine getReferenceBinderEngine() { + return referenceBinderEngine; } - public final ValidationContext getValidationContext() { - ValidationContext result = - VALIDATION_CONTEXT_ENTRY_DEF.getContextValue(this); - if (result == null) { - result = new ValidationContext(); - ObserveSwingValidator.setValidationContext(result); - result.setDataContext(getDataContext()); - VALIDATION_CONTEXT_ENTRY_DEF.setContextValue(this, result); - } - return result; + public DecoratorService getDecoratorService() { + return DECORATOR_SERVICE.get(); } - public final ImmutableSet<ValidatorDto> getValidators() { - List<ValidatorDto> result = - VALIDATORS_ENTRY_DEF.getContextValue(this); - if (result == null) { - try { - result = Lists.newArrayList(ValidateServiceUtils.getValidators()); - VALIDATORS_ENTRY_DEF.setContextValue(this, result); - - } catch (IOException e) { - throw new ObserveSwingTechnicalException("unable to load validators", e); - } - - } - return ImmutableSet.copyOf(result); + public ObserveTextGenerator getTextGenerator() { + return TEXT_GENERATOR.get(); } - @Override - public void close() { - if (log.isInfoEnabled()) { - log.info("Closing swing application context " + this); - } - - - // fermeture de touts les context de donnée ouvert - for (ObserveSwingDataSource dataSource : Lists.newArrayList(getAllDataSource())) { - if (log.isInfoEnabled()) { - log.info("Closing dataSource : " + dataSource.getConnection()); - } - dataSource.close(); - } - setDataSource(null); - - ObserveServiceMainFactory serviceMainFactory = ObserveServiceMainFactory.get(); - if (log.isInfoEnabled()) { - log.info("Closing main service factory: " + serviceMainFactory); - } - serviceMainFactory.close(); - - // fermeture du context principal - clear(); - - applicationContext = null; - - closed = true; - + public ObserveOpenDataManager getOpenDataManager() { + return OPEN_DATA_MANAGER.get(); } - - //------------------------------------------- - // UI instances - //------------------------------------------- - - public static void set(ObserveSwingApplicationContext context) { - checkIsNotInit(); - applicationContext = context; - - //FIXME -// AbstractDataSourceMigration.setApplicationConfigSupplier(new Supplier<ApplicationConfig>() { -// @Override -// public ApplicationConfig get() { -// return ObserveServiceHelper.context.getContextValue(ApplicationConfig.class); -// } -// }); - - // application non fermée - closed = false; + public ObserveDataSourceConfigurationMainFactory getObserveDataSourceConfigurationMainFactory() { + return DATA_SOURCE_CONFIGURATION_FACTORY.get(); } - /** - * Récupération du contexte applicatif. - * - * @return l'instance partagé du contexte. - * @throws IllegalStateException si le contexte n'a pas été initialisé - */ - public static ObserveSwingApplicationContext get() throws IllegalStateException { - checkInit(); - return applicationContext; + public ObserveServicesProvider getMainDataSourceServicesProvider() { + return getDataSourcesManager().getMainDataSource(); } - /** @return {@code true} si le context a été initialisé */ - public static boolean isInit() { - return applicationContext != null; + public DataContext getDataContext() { + return DATA_CONTEXT.get(); } - /** - * Teste si le context applicatif a bien été initialisé. - * - * @throws IllegalStateException si le context n'a pas été initialisé. - */ - public static void checkIsNotInit() throws IllegalStateException { - if (isInit()) { - throw new IllegalStateException("application context already registred."); - } + public ValidationContext getValidationContext() { + return VALIDATION_CONTEXT.get(); } - /** - * Teste si le context applicatif a bien été initialisé. - * - * @throws IllegalStateException si le context n'a pas été initialisé. - */ - protected static void checkInit() throws IllegalStateException { - if (!isInit()) { - throw new IllegalStateException("no application context initialized."); - } + public final ImmutableSet<ValidatorDto> getValidators() { + return ImmutableSet.copyOf((List) VALIDATORS.get()); } - public static boolean isUseJMX() { - return useJMX; + public ObserveMainUI getMainUI() { + return MAIN_UI.get(); } - public static void setUseJMX(boolean useJMX) { - useJMX = useJMX; + public List<String> getNodesToReselect() { + return NODE_TO_RESELECT.get(); } - /** - * @return {@code true} si le context applicatif a été fermé (et est donc - * passé dans la méthode {@link #close()}, {@code false} autrement. - */ - public static boolean isClosed() { - return closed; + public ActionMap getActionMap() { + return ACTION_MAP.get(); } - public ObserveMainUI getObserveMainUI() { - return MAIN_UI_ENTRY_DEF.getContextValue(get()); + public Server getH2Server() { + return H2_SERVER.get(); } - public ContentUI<?> getSelectedContentUI() { - - ObserveMainUI ui = getObserveMainUI(); - return getSelectedContentUI(ui); + public Server getH2WebServer() { + return H2_WEBSERVER.get(); } - public List<String> getNodesToReselect() { - return NODE_TO_RESELECT_ENTRY_DEF.getContextValue(this); + //------------------------------------------- + // - Write + //------------------------------------------- + + public void setUseJMX(boolean useJMX) { + this.useJMX = useJMX; } public void setNodesToReselect(String[] paths) { if (paths == null) { - NODE_TO_RESELECT_ENTRY_DEF.removeContextValue(this); + NODE_TO_RESELECT.remove(); } else { - NODE_TO_RESELECT_ENTRY_DEF.setContextValue(this, Arrays.asList(paths)); + NODE_TO_RESELECT.set(Arrays.asList(paths)); } } - public ContentUI<?> getSelectedContentUI(ObserveMainUI ui) { - - ContentUI<?> result = null; - - if (ui == null) { - // no ui, so no modification - return result; - } - - CardLayout2 layout = ui.getContentLayout(); - JPanel container = ui.getContent(); - Component currentContent = layout.getVisibleComponent(container); - if (currentContent != null && - currentContent instanceof ContentUI<?>) { - - result = (ContentUI<?>) currentContent; - } - return result; + public void setH2Server(Server server) { + H2_SERVER.set(server); } - public boolean closeSelectedContentUI() { - ObserveMainUI ui = getObserveMainUI(); - return closeSelectedContentUI(ui); + public void setH2WebServer(Server server) { + H2_WEBSERVER.set(server); } - /** - * Essaye de fermer l'écran d'édition s'il existe. - * - * @param mainUI l'ui principale - * @return {@code true} si le contenu a bien été fermé, {@code false} si on - * ne peut pas fermer l'écran - * @since 1.5 - */ - public boolean closeSelectedContentUI(ObserveMainUI mainUI) { - ContentUI<?> ui = getSelectedContentUI(mainUI); - if (ui == null) { - // no content ui - return true; - } - boolean closed = false; - try { - closed = ui.close(); - } catch (Exception e) { - UIHelper.handlingError(e); - } - return closed; + public void setMainUI(ObserveMainUI ui) { + MAIN_UI.set(ui); } - public ActionMap getActionMap() { - return ACTION_MAP_ENTRY_DEF.getContextValue(this); + public void removeMainUI() { + MAIN_UI.remove(); } - public void setObserveMainUI(ObserveMainUI ui) { - MAIN_UI_ENTRY_DEF.setContextValue(get(), ui); + public void removeH2ServerMode() { + H2_SERVER_MODE.remove(); } - public void removeObserveMainUI() { - MAIN_UI_ENTRY_DEF.removeContextValue(get()); - } - /** Un objet pour bloquer le context */ - protected final Object lock = new Object(); + public void registerShareActions() { + + ObserveMainUI ui = getMainUI(); + ActionMap actionMap = ui.getRootPane().getActionMap(); + + ACTION_MAP.set(actionMap); + + registerMainAction(actionMap, new SelectOpenNodeUIAction(ui)); + registerMainAction(actionMap, new SelectNodeUIAction(ui)); + registerMainAction(actionMap, new GoUpUIAction(ui)); + registerMainAction(actionMap, new GoDownUIAction(ui)); + registerMainAction(actionMap, new ReOpenUIAction(ui)); + registerMainAction(actionMap, new CloseOpenUIAction(ui)); + registerMainAction(actionMap, new CloseAndCreateUIAction(ui)); + registerMainAction(actionMap, new CancelCreateUIAction(ui)); + registerMainAction(actionMap, new ResetEditUIAction(ui)); + registerMainAction(actionMap, new SaveEditUIAction(ui)); + registerMainAction(actionMap, new DeleteDataUIAction(ui)); + registerMainAction(actionMap, new DeleteReferenceUIAction(ui)); + registerMainAction(actionMap, new MoveTripLonglinesUIAction(ui)); + registerMainAction(actionMap, new MoveTripSeinesUIAction(ui)); + registerMainAction(actionMap, new MoveRoutesUIAction(ui)); + registerMainAction(actionMap, new MoveActivitySeinesUIAction(ui)); + registerMainAction(actionMap, new MoveActivityLonglinesUIAction(ui)); - public ObserveSwingApplicationContext() { } - @SuppressWarnings({"UnconditionalWait", "WaitOrAwaitWithoutTimeout", "WaitNotInLoop"}) + //------------------------------------------- + // - Locks + //------------------------------------------- + public void lock() throws InterruptedException { synchronized (lock) { lock.wait(); } } - @SuppressWarnings({"NakedNotify"}) public void releaseLock() { synchronized (lock) { lock.notifyAll(); } } - public void askReload() { - if (log.isDebugEnabled()) { - log.debug("Ask to reload."); - } - ObserveRunner.getRunner().setReload(true); + //------------------------------------------- + // - Storages + //------------------------------------------- + + public ObserveSwingDataSource createTemporaryH2Storage(String label) { + ObserveDataSourceConfigurationMainFactory configurationMainFactory = getObserveDataSourceConfigurationMainFactory(); + + File tmpDirectory = getConfig().getTmpDirectory(); + + File dbDirectory = new File(tmpDirectory, ObserveSwingApplicationConfig.DB_NAME + UUID.randomUUID().toString()); + + ObserveDataSourceConfigurationTopiaH2 config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( + label, + dbDirectory, + ObserveSwingApplicationConfig.DB_NAME, + getConfig().getH2Login(), + getConfig().getH2Password(), + false, + false, + getConfig().getModelVersion() + ); + + ObserveSwingDataSource result = getDataSourcesManager().newDataSource(config); + + return result; } - public void initStorage(ObserveSwingApplicationConfig config, - ObserveMainUI mainUI, - boolean askToCreate) { + public void initStorage(ObserveSwingApplicationConfig config, ObserveMainUI mainUI, boolean askToCreate) { if (config.isLocalStorageExist()) { // une base locale existe, on l'ouvre - if (loadLocalStorage()) { + + boolean success = false; + // chargement de la base locale + + // création de la source de données sur la base locale + ObserveSwingDataSource dataSource = getDataSourcesManager().newLocalDatasource(getConfig()); + + try { + + ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(); + + dataSource.migrateData(dataSourceInformation, getConfig().getModelVersion()); + + // la source sera utilisée dans les ui + prepareMainStorage(dataSource, true); +// getDataSourcesManager().setMainDataSource(dataSource); + + if (log.isInfoEnabled()) { + log.info(t("observe.init.local.db.detected", dataSource.getLabel())); + } + + // la base locale existe, on l'ouvre + dataSource.open(); + success = true; + } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException | BabModelVersionException e) { + JOptionPane.showMessageDialog( + null, + e.getMessage(), + t("observe.title.error.dialog"), + JOptionPane.ERROR_MESSAGE + ); + } + + if (success) { // on peut retourner sur cette base mainUI.setMode(ObserveUIMode.DB); } + } else { // on peut retourner sur cette base @@ -638,104 +481,69 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im if (askToCreate) { // demande à l'utilisateur s'il veut créer la base locale - createStorage(config, mainUI.getHandler()); - } - } - if (log.isInfoEnabled()) { - log.info(t("observe.init.storage.done")); - } - } - - protected void createStorage(ObserveSwingApplicationConfig config, - ObserveMainUIHandler uiHandler) { - - int reponse = UIHelper.askUser( - t("observe.title.no.local.db.found"), - t("observe.message.no.local.db.found", - config.getLocalDBDirectory()), - JOptionPane.QUESTION_MESSAGE, - new Object[]{ - t("observe.choice.useRemoteStorage"), - t("observe.choice.createLocalStorage"), - t("observe.choice.doNothing") - }, - 1 - ); - if (log.isDebugEnabled()) { - log.debug("response : " + reponse); - } - - Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class); - String title = null; - if (reponse != JOptionPane.CLOSED_OPTION && reponse < 2) { - - if (reponse == 1) { - // creation de la base locale - dbModes.add(DbMode.CREATE_LOCAL); - title = n("observe.title.create.local.db"); - } else { - // connexion à une base distante - dbModes.add(DbMode.USE_REMOTE); - dbModes.add(DbMode.USE_SERVER); - title = n("observe.title.load.remote.db"); - } - } - if (! dbModes.isEmpty()) { - new ChangeStorageAction(getObserveMainUI(), dbModes, title).run(); - } - } - - protected boolean loadLocalStorage() { - boolean success = false; - // chargement de la base locale - - // création de la source de données sur la base locale - ObserveSwingDataSource dataSource = newLocalStorageService(getConfig()); - - try { - - ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(); + int reponse = askUser( + t("observe.title.no.local.db.found"), + t("observe.message.no.local.db.found", + config.getLocalDBDirectory()), + JOptionPane.QUESTION_MESSAGE, + new Object[]{ + t("observe.choice.useRemoteStorage"), + t("observe.choice.createLocalStorage"), + t("observe.choice.doNothing") + }, + 1 + ); + if (log.isDebugEnabled()) { + log.debug("response : " + reponse); + } - dataSource.migrateData(dataSourceInformation, getConfig().getModelVersion()); + Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class); + String title = null; + if (reponse != JOptionPane.CLOSED_OPTION && reponse < 2) { - // la source sera utilisée dans les ui - prepareMainStorage(dataSource); - setDataSource(dataSource); + if (reponse == 1) { + // creation de la base locale + dbModes.add(DbMode.CREATE_LOCAL); + title = n("observe.title.create.local.db"); + } else { + // connexion à une base distante + dbModes.add(DbMode.USE_REMOTE); + dbModes.add(DbMode.USE_SERVER); + title = n("observe.title.load.remote.db"); + } + } + if (!dbModes.isEmpty()) { + new ChangeStorageAction(getMainUI(), dbModes, title).run(); + } - if (log.isInfoEnabled()) { - log.info(t("observe.init.local.db.detected", dataSource.getLabel())); } - - // la base locale existe, on l'ouvre - dataSource.open(); - success = true; - } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException | BabModelVersionException e) { - JOptionPane.showMessageDialog( - null, - e.getMessage(), - t("observe.title.error.dialog"), - JOptionPane.ERROR_MESSAGE - ); } - return success; + if (log.isInfoEnabled()) { + log.info(t("observe.init.storage.done")); + } } + /** * Prepare le storage principal qui servira dans les ui. * * @param dataSource la source de données a preparer */ - public void prepareMainStorage(ObserveSwingDataSource dataSource) { + public void prepareMainStorage(ObserveSwingDataSource dataSource, boolean setAsMainDataSource) { + if (setAsMainDataSource) { + + getDataSourcesManager().setMainDataSource(dataSource); + + } dataSource.addObserveSwingDataSourceListener(new ObserveSwingDataSourceListenerAdapter() { @Override public void onOpening(ObserveSwingDataSourceEvent event) { ObserveSwingDataSource s = event.getSource(); - UIHelper.displayInfo( - t("observe.message.db.loading", s.getLabel())); + displayInfo(t("observe.message.db.loading", s.getLabel())); } @Override @@ -751,7 +559,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im // la base n'a pas pu être chargée proprement // ceci peut être due a une base dans une version pas // assez recente, on doit donc refermer cette base - UIHelper.handlingError("Could not obtain open datas from " + source.getLabel(), e); + handlingError("Could not obtain open datas from " + source.getLabel(), e); // fermeture de la source source.close(); @@ -764,7 +572,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im super.onClosing(event); - ObserveMainUI mainUI = getObserveMainUI(); + ObserveMainUI mainUI = getMainUI(); DataContext dataContext = getDataContext(); dataContext.setEnabled(false); @@ -789,20 +597,18 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im // on ferme la marée, la route ou l'activité ouvertes getOpenDataManager().close(); - ObserveMainUI mainUI = getObserveMainUI(); + ObserveMainUI mainUI = getMainUI(); // nettoyage de l'ui ( suppression navigation et autres ) if (mainUI != null) { if (log.isDebugEnabled()) { - log.debug("dispose ui from storage " + - source.getLabel() + ": " + mainUI.getName()); + log.debug("dispose ui from storage " + source.getLabel() + ": " + mainUI.getName()); } mainUI.setMode(ObserveUIMode.NO_DB); - UIHelper.displayInfo( - t("observe.message.db.closed", source.getLabel())); + displayInfo(t("observe.message.db.closed", source.getLabel())); } @@ -812,7 +618,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im protected void openOnUI(ObserveSwingDataSource source) { // on rend le service disponible dans le service de validation - //getValidationContext().setDataSource(source); + //getValidationContext().setMainDataSource(source); // toutes les données sont chargées, on peut declarer le service // comme ouvert dans la configuration @@ -825,12 +631,11 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im } // remplissage de l'ui - ObserveMainUI mainUI = getObserveMainUI(); + ObserveMainUI mainUI = getMainUI(); if (mainUI != null) { if (log.isDebugEnabled()) { - log.debug("loading ui for storage " + source.getLabel() + - ": " + mainUI.getName()); + log.debug("loading ui for storage " + source.getLabel() + ": " + mainUI.getName()); } DataContext dataContext = mainUI.getDataContext(); @@ -843,57 +648,62 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im String[] openIds = config.getTreeOpenNodeIds(); if (source.canReadData()) { - sanitizeOpenIds(openIds); + getOpenDataManager().sanitizeOpenIds(openIds); } dataContext.populateOpens(openIds); - treeHelper.loadNavigationUI(source, mainUI); + treeHelper.loadNavigationUI(source); mainUI.setMode(ObserveUIMode.DB); - mainUI.getStatus().setStatus( - t("observe.message.db.loaded", source.getLabel())); + mainUI.getStatus().setStatus(t("observe.message.db.loaded", source.getLabel())); } } }); } - public void registerShareActions(ObserveMainUI ui) { + @Override + public void close() { + if (log.isInfoEnabled()) { + log.info("Closing swing application context " + this); + } - ActionMap actionMap = ui.getRootPane().getActionMap(); + // fermeture de touts les context de donnée ouvert + getDataSourcesManager().close(); - ACTION_MAP_ENTRY_DEF.setContextValue(this, actionMap); + ObserveServiceMainFactory serviceMainFactory = ObserveServiceMainFactory.get(); + if (log.isInfoEnabled()) { + log.info("Closing main service factory: " + serviceMainFactory); + } + serviceMainFactory.close(); - registerMainAction(actionMap, new SelectOpenNodeUIAction(ui)); - registerMainAction(actionMap, new SelectNodeUIAction(ui)); - registerMainAction(actionMap, new GoUpUIAction(ui)); - registerMainAction(actionMap, new GoDownUIAction(ui)); - registerMainAction(actionMap, new ReOpenUIAction(ui)); - registerMainAction(actionMap, new CloseOpenUIAction(ui)); - registerMainAction(actionMap, new CloseAndCreateUIAction(ui)); - registerMainAction(actionMap, new CancelCreateUIAction(ui)); - registerMainAction(actionMap, new ResetEditUIAction(ui)); - registerMainAction(actionMap, new SaveEditUIAction(ui)); - registerMainAction(actionMap, new DeleteDataUIAction(ui)); - registerMainAction(actionMap, new DeleteReferenceUIAction(ui)); - registerMainAction(actionMap, new MoveTripLonglinesUIAction(ui)); - registerMainAction(actionMap, new MoveTripSeinesUIAction(ui)); - registerMainAction(actionMap, new MoveRoutesUIAction(ui)); - registerMainAction(actionMap, new MoveActivitySeinesUIAction(ui)); - registerMainAction(actionMap, new MoveActivityLonglinesUIAction(ui)); + // fermeture du context principal + clear(); + + INSTANCE = null; + + closed = true; + + } + + @Override + protected void finalize() throws Throwable { + if (!closed) { + close(); + } + super.finalize(); } - public void registerMainAction(ActionMap actionMap, AbstractUIAction action) { + private void registerMainAction(ActionMap actionMap, AbstractUIAction action) { String actionId = action.getActionId(); - if (log.isDebugEnabled()) { - log.debug("register action " + actionId); + if (log.isInfoEnabled()) { + log.info("Register UI action " + actionId); } actionMap.put(actionId, action); } -// @SuppressWarnings({"UseOfObsoleteCollectionType"}) -// protected ObjectName createMBean(DataSource source) throws MalformedObjectNameException { +// private ObjectName createMBean(DataSource source) throws MalformedObjectNameException { // Hashtable<String, String> tb = new Hashtable<String, String>(); // tb.put("type", "statistics"); // String name = source.getLabel(); @@ -902,107 +712,4 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im // ObjectName on = new ObjectName("hibernate", tb); // return on; // } - - /** - * Construit une source de données sur la base locale de l'application. - * - * <b>Note:</b> La base locale doit exister, sinon on soulève une - * exeception - * - * @param config la configuration à utiliser - * @return la service de persistance initialisé (mais non ouvert) - * @throws IllegalStateException si la base locale n'existe pas - * @see ObserveSwingDataSource - */ - public static ObserveSwingDataSource newLocalStorageService(ObserveSwingApplicationConfig config) throws IllegalStateException { - - ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); - - if (!dataSourceConfigurationH2.getDatabaseFile().exists()) { - throw new IllegalStateException( - "local base must exist, when using this method (" + - dataSourceConfigurationH2.getDirectory() + ')'); - } - - ObserveSwingDataSource dataSource = get().newDataSource(dataSourceConfigurationH2); - - return dataSource; - } - - public Server getH2Server() { - return H2_SERVER_ENTRY_DEF.getContextValue(this); - } - - public void setH2Server(Server server) { - H2_SERVER_ENTRY_DEF.setContextValue(this, server); - } - - public Server getH2WebServer() { - return H2_WEBSERVER_ENTRY_DEF.getContextValue(this); - } - - public void setH2WebServer(Server server) { - H2_WEBSERVER_ENTRY_DEF.setContextValue(this, server); - } - - protected void sanitizeOpenIds(String[] ids) { - if (ids != null) { - - boolean exists = true; - - for (int i = 0, l = ids.length; i < l; i++) { - String id = ids[i]; - - // si l'id précédent existe, on vérifie l'actuel - // sinon, on met à null - if (exists) { - if (IdDtos.isProgramId(id)) { - - exists = newService(ReferentialService.class).exists(ProgramDto.class, id); - - } else if (IdDtos.isTripSeineId(id)) { - - exists = newService(TripSeineService.class).exists(id); - - } else if (IdDtos.isRouteId(id)) { - - exists = newService(RouteService.class).exists(id); - - } else if (IdDtos.isActivitySeineId(id)) { - - exists = newService(ActivitySeineService.class).exists(id); - - } else if (IdDtos.isSetSeineId(id)) { - - exists = newService(SetSeineService.class).exists(id); - - } else if (IdDtos.isFloatingObjectId(id)) { - - exists = newService(FloatingObjectService.class).exists(id); - - } else if (IdDtos.isTripLonglineId(id)) { - - exists = newService(TripLonglineService.class).exists(id); - - } else if (IdDtos.isActivityLonglineId(id)) { - - exists = newService(ActivityLonglineService.class).exists(id); - - } else if (IdDtos.isSetLonglineId(id)) { - - exists = newService(SetLonglineService.class).exists(id); - - } else { - - exists = false; - } - } - - if (!exists) { - ids[i] = null; - } - } - } - } - } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationDataSourcesManager.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationDataSourcesManager.java new file mode 100644 index 0000000..047de8e --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationDataSourcesManager.java @@ -0,0 +1,108 @@ +package fr.ird.observe; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.db.event.ObserveSwingDataSourceEvent; +import fr.ird.observe.db.event.ObserveSwingDataSourceListenerAdapter; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; + +import java.io.Closeable; +import java.util.LinkedList; +import java.util.List; + +import static jaxx.runtime.swing.editor.bean.BeanUIUtil.PopupHandler.log; +import static org.nuiton.i18n.I18n.t; + +/** + * Permet de gérer les différentes data sources utilisées dans l'application. + * + * Created on 09/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class ObserveSwingApplicationDataSourcesManager implements Closeable { + + private final List<ObserveSwingDataSource> dataSources = new LinkedList<>(); + + private ObserveSwingDataSource dataSource; + + /** + * Construit une source de données sur la base locale de l'application. + * + * <b>Note:</b> La base locale doit exister, sinon on soulève une + * exeception + * + * @param config la configuration à utiliser + * @return la service de persistance initialisé (mais non ouvert) + */ + public ObserveSwingDataSource newLocalDatasource(ObserveSwingApplicationConfig config) { + + ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); + + Preconditions.checkState(dataSourceConfigurationH2.getDatabaseFile().exists(), "local base must exist, when using this method (" + + dataSourceConfigurationH2.getDirectory() + ')'); + return newDataSource(dataSourceConfigurationH2); + } + + public ObserveSwingDataSource getMainDataSource() { + return dataSource; + } + + public void setMainDataSource(ObserveSwingDataSource dataSource) { + this.dataSource = dataSource; + } + + public ObserveSwingDataSource newDataSource(ObserveDataSourceConfiguration configuration) { + ObserveSwingDataSource dataSource = new ObserveSwingDataSource(configuration); + + dataSource.addObserveSwingDataSourceListener(new ObserveSwingDataSourceListenerAdapter() { + + @Override + public void onOpened(ObserveSwingDataSourceEvent event) { + super.onOpened(event); + ObserveSwingDataSource dataSource = event.getSource(); + dataSources.add(dataSource); + + if (log.isInfoEnabled()) { + log.info("Data source opened : " + dataSource.getConfiguration() + " (" + dataSources.size() + " datas sources open)"); + } + } + + @Override + public void onClosed(ObserveSwingDataSourceEvent event) { + super.onClosed(event); + ObserveSwingDataSource dataSource = event.getSource(); + dataSources.remove(dataSource); + if (log.isInfoEnabled()) { + log.info("Data source closed : " + dataSource.getConfiguration() + " (" + dataSources.size() + " datas sources open)"); + } + } + }); + + return dataSource; + } + + @Override + public void close() { + + // fermeture de touts les context de donnée ouvert + for (ObserveSwingDataSource dataSource : Lists.newArrayList(dataSources)) { + if (log.isInfoEnabled()) { + log.info("Closing dataSource : " + dataSource.getConnection()); + } + try { + dataSource.close(); + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Could not close data source: " + dataSource, e); + } + } + } + setMainDataSource(null); + + } +} 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 88eb540..f59896c 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 @@ -32,6 +32,7 @@ import fr.ird.observe.db.event.ObserveSwingDataSourceListener; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceInitializer; import fr.ird.observe.services.ObserveServiceMainFactory; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.ObserveSpeciesListConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection; @@ -65,13 +66,31 @@ import fr.ird.observe.services.service.actions.report.ReportService; import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeLocalService; import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeRemoteService; import fr.ird.observe.services.service.actions.validate.ValidateService; +import fr.ird.observe.services.service.longline.ActivityLongLineEncounterService; +import fr.ird.observe.services.service.longline.ActivityLongLineSensorUsedService; import fr.ird.observe.services.service.longline.ActivityLonglineService; +import fr.ird.observe.services.service.longline.BranchlineService; +import fr.ird.observe.services.service.longline.SetLonglineCatchService; +import fr.ird.observe.services.service.longline.SetLonglineDetailCompositionService; +import fr.ird.observe.services.service.longline.SetLonglineGlobalCompositionService; import fr.ird.observe.services.service.longline.SetLonglineService; +import fr.ird.observe.services.service.longline.TdrService; +import fr.ird.observe.services.service.longline.TripLonglineGearUseService; import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.ActivitySeineObservedSystemService; import fr.ird.observe.services.service.seine.ActivitySeineService; import fr.ird.observe.services.service.seine.FloatingObjectService; +import fr.ird.observe.services.service.seine.NonTargetCatchService; +import fr.ird.observe.services.service.seine.NonTargetSampleService; +import fr.ird.observe.services.service.seine.ObjectObservedSpeciesService; +import fr.ird.observe.services.service.seine.ObjectSchoolEstimateService; import fr.ird.observe.services.service.seine.RouteService; +import fr.ird.observe.services.service.seine.SchoolEstimateService; import fr.ird.observe.services.service.seine.SetSeineService; +import fr.ird.observe.services.service.seine.TargetCatchService; +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 org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -90,7 +109,7 @@ import static org.nuiton.i18n.I18n.t; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public class ObserveSwingDataSource extends AbstractSerializableBean implements Closeable { +public class ObserveSwingDataSource extends AbstractSerializableBean implements Closeable, ObserveServicesProvider { private static final long serialVersionUID = 1L; @@ -352,78 +371,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements return connection != null; } - public SqlScriptProducerService newSqlScriptProducerService() { - return newService(SqlScriptProducerService.class); - } - - public ValidateService newValidateService() { - return newService(ValidateService.class); - } - - public ReportService newReportService() { - return newService(ReportService.class); - } - - public PingService newPingService() { - return newService(PingService.class); - } - - public ReplicateTripService newReplicateTripService() { - return newService(ReplicateTripService.class); - } - - public ConsolidateDataService newConsolidateDataService() { - return newService(ConsolidateDataService.class); - } - - public UnidirectionalReferentialSynchronizeLocalService newUnidirectionalReferentialSynchronizeLocalService() { - return newService(UnidirectionalReferentialSynchronizeLocalService.class); - } - - public UnidirectionalReferentialSynchronizeRemoteService newUnidirectionalReferentialSynchronizeRemoteService() { - return newService(UnidirectionalReferentialSynchronizeRemoteService.class); - } - - public DataSynchronizeService newDataSynchronizeService() { - return newService(DataSynchronizeService.class); - } - - public DataSourceService newDataSourceService() { - return newService(DataSourceService.class); - } - - public ReferentialService newReferentialService() { - return newService(ReferentialService.class); - } - - public TripSeineService newTripSeineService() { - return newService(TripSeineService.class); - } - - public RouteService newRouteService() { - return newService(RouteService.class); - } - - public FloatingObjectService newFloatingObjectService() { - return newService(FloatingObjectService.class); - } - - public ActivitySeineService newActivitySeineService() { - return newService(ActivitySeineService.class); - } - - public SetSeineService newSetSeineService() { - return newService(SetSeineService.class); - } - - public TripLonglineService newTripLonglineService() { - return newService(TripLonglineService.class); - } - - public ActivityLonglineService newActivityLonglineService() { - return newService(ActivityLonglineService.class); - } - + @Override public SetLonglineService newSetLonglineService() { return newService(SetLonglineService.class); } @@ -586,4 +534,184 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements S service = serviceFactory.newService(observeServiceInitializer, serviceType); return service; } + + @Override + public SqlScriptProducerService newSqlScriptProducerService() { + return newService(SqlScriptProducerService.class); + } + + @Override + public ValidateService newValidateService() { + return newService(ValidateService.class); + } + + @Override + public ReportService newReportService() { + return newService(ReportService.class); + } + + @Override + public PingService newPingService() { + return newService(PingService.class); + } + + @Override + public ReplicateTripService newReplicateTripService() { + return newService(ReplicateTripService.class); + } + + @Override + public ConsolidateDataService newConsolidateDataService() { + return newService(ConsolidateDataService.class); + } + + @Override + public UnidirectionalReferentialSynchronizeLocalService newUnidirectionalReferentialSynchronizeLocalService() { + return newService(UnidirectionalReferentialSynchronizeLocalService.class); + } + + @Override + public UnidirectionalReferentialSynchronizeRemoteService newUnidirectionalReferentialSynchronizeRemoteService() { + return newService(UnidirectionalReferentialSynchronizeRemoteService.class); + } + + @Override + public DataSynchronizeService newDataSynchronizeService() { + return newService(DataSynchronizeService.class); + } + + @Override + public DataSourceService newDataSourceService() { + return newService(DataSourceService.class); + } + + @Override + public ReferentialService newReferentialService() { + return newService(ReferentialService.class); + } + + @Override + public TripSeineService newTripSeineService() { + return newService(TripSeineService.class); + } + + @Override + public RouteService newRouteService() { + return newService(RouteService.class); + } + + @Override + public FloatingObjectService newFloatingObjectService() { + return newService(FloatingObjectService.class); + } + + @Override + public ActivitySeineService newActivitySeineService() { + return newService(ActivitySeineService.class); + } + + @Override + public SetSeineService newSetSeineService() { + return newService(SetSeineService.class); + } + + @Override + public TripLonglineService newTripLonglineService() { + return newService(TripLonglineService.class); + } + + @Override + public ActivityLonglineService newActivityLonglineService() { + return newService(ActivityLonglineService.class); + } + + @Override + public ActivitySeineObservedSystemService newActivitySeineObservedSystemService() { + return newService(ActivitySeineObservedSystemService.class); + } + + @Override + public SetLonglineGlobalCompositionService newSetLonglineGlobalCompositionService() { + return newService(SetLonglineGlobalCompositionService.class); + } + + @Override + public SetLonglineDetailCompositionService newSetLonglineDetailCompositionService() { + return newService(SetLonglineDetailCompositionService.class); + } + + @Override + public TransmittingBuoyOperationService newTransmittingBuoyOperationService() { + return newService(TransmittingBuoyOperationService.class); + } + + @Override + public BranchlineService newBranchlineService() { + return newService(BranchlineService.class); + } + + @Override + public SetLonglineCatchService newSetLonglineCatchService() { + return newService(SetLonglineCatchService.class); + } + + @Override + public ActivityLongLineEncounterService newActivityLongLineEncounterService() { + return newService(ActivityLongLineEncounterService.class); + } + + @Override + public TripLonglineGearUseService newTripLonglineGearUseService() { + return newService(TripLonglineGearUseService.class); + } + + @Override + public ActivityLongLineSensorUsedService newActivityLongLineSensorUsedService() { + return newService(ActivityLongLineSensorUsedService.class); + } + + @Override + public TdrService newTdrService() { + return newService(TdrService.class); + } + + @Override + public TripSeineGearUseService newTripSeineGearUseService() { + return newService(TripSeineGearUseService.class); + } + + @Override + public NonTargetCatchService newNonTargetCatchService() { + return newService(NonTargetCatchService.class); + } + + @Override + public NonTargetSampleService newNonTargetSampleService() { + return newService(NonTargetSampleService.class); + } + + @Override + public ObjectObservedSpeciesService newObjectObservedSpeciesService() { + return newService(ObjectObservedSpeciesService.class); + } + + @Override + public ObjectSchoolEstimateService newObjectSchoolEstimateService() { + return newService(ObjectSchoolEstimateService.class); + } + + @Override + public SchoolEstimateService newSchoolEstimateService() { + return newService(SchoolEstimateService.class); + } + + @Override + public TargetCatchService newTargetCatchService() { + return newService(TargetCatchService.class); + } + + @Override + public TargetSampleService newTargetSampleService() { + return newService(TargetSampleService.class); + } } 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 7f43933..5713b92 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 @@ -24,6 +24,7 @@ onWindowClosing='new fr.ird.observe.ui.actions.CloseApplicationAction(this).run()'> <import> + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.db.DataContext @@ -78,7 +79,7 @@ <ShowStorageInfoAction id="showStorageInfoAction" constructorParams='this'/> - <ContentUIManager id='contentManager' constructorParams='this'/> + <ContentUIManager id='contentUIManager' initializer='ObserveSwingApplicationContext.get().getContentUIManager()'/> <JPopupMenu id='scopeUpPopup'/> <JPopupMenu id='scopeDownPopup'/> @@ -90,13 +91,13 @@ <JMenuItem id="navigationDeleteAction"/> </JPopupMenu> - <ObserveSwingApplicationConfig id='config' initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> + <ObserveSwingApplicationConfig id='config' initializer='ObserveSwingApplicationContext.get().getConfig()'/> <ObserveMainUIHandler id='handler' initializer='getContextValue(ObserveMainUIHandler.class)'/> <ObserveTreeHelper id='treeHelper' initializer='getContextValue(ObserveTreeHelper.class)'/> - <DataContext id='dataContext' initializer='getContextValue(DataContext.class)'/> + <DataContext id='dataContext' initializer='ObserveSwingApplicationContext.get().getDataContext()'/> <Boolean id='mainFromSynchro' javaBean='false'/> @@ -177,15 +178,15 @@ void $afterCompleteSetup() { <JMenu id='menuNavigation'> <JMenuItem id='menuNavigationProgram' - onActionPerformed="getTreeHelper().selectOpenNode(this, ProgramDto.class)"/> + onActionPerformed="getTreeHelper().selectOpenNode(ProgramDto.class)"/> <JMenuItem id='menuNavigationTrip' - onActionPerformed="getTreeHelper().selectOpenNode(this, TripSeineDto.class)"/> + onActionPerformed="getTreeHelper().selectOpenNode(TripSeineDto.class)"/> <JMenuItem id='menuNavigationRoute' - onActionPerformed="getTreeHelper().selectOpenNode(this, RouteDto.class)"/> + onActionPerformed="getTreeHelper().selectOpenNode(RouteDto.class)"/> <JMenuItem id='menuNavigationActivity' - onActionPerformed="getTreeHelper().selectOpenNode(this, ActivitySeineDto.class)"/> + onActionPerformed="getTreeHelper().selectOpenNode(ActivitySeineDto.class)"/> <JMenuItem id='menuNavigationSet' - onActionPerformed="getTreeHelper().selectOpenNode(this, SetSeineDto.class)"/> + onActionPerformed="getTreeHelper().selectOpenNode(SetSeineDto.class)"/> <JSeparator/> <JMenuItem id='menuNavigationReferentiel' onActionPerformed='getTreeHelper().selectNode("observe.common.referentiel")'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java index 5a44950..6731e48 100755 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java @@ -79,7 +79,7 @@ public class ObserveMainUIHandler { public void changeNavigationNode(ObserveMainUI ui, TreeSelectionEvent event) { - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); if (source == null || !source.isOpen()) { // no open data source @@ -97,11 +97,10 @@ public class ObserveMainUIHandler { TreePath path = event.getPath(); ObserveNode node = (ObserveNode) path.getLastPathComponent(); - ContentUIManager manager = ui.getContentManager(); + ContentUIManager manager = ui.getContentUIManager(); // obtain the ui type to show - Class<? extends ObserveContentUI<?>> uiClass = - manager.convertNodeToContentUI(node); + Class<? extends ObserveContentUI<?>> uiClass = manager.convertNodeToContentUI(node); if (log.isDebugEnabled()) { log.debug("new selected path = " + node + ", ui = " + uiClass); } @@ -116,7 +115,7 @@ public class ObserveMainUIHandler { try { - doOpencontent(ui, path, manager, uiClass); + doOpencontent(ui, path, uiClass); } catch (Exception e) { UIHelper.handlingError(e); @@ -134,8 +133,10 @@ public class ObserveMainUIHandler { public void doOpencontent(ObserveMainUI ui, TreePath path, - ContentUIManager manager, Class<? extends ObserveContentUI<?>> uiClass) { + + ContentUIManager manager = ui.getContentUIManager(); + // compute the selected ids to put in data context Object[] nodes = path.getPath(); List<String> ids = new ArrayList<>(); @@ -214,7 +215,7 @@ public class ObserveMainUIHandler { } ObserveTreeHelper treeHelper = new ObserveTreeHelper(); - ObserveSwingDataSource source = context.getDataSource(); + ObserveSwingDataSource source = context.getDataSourcesManager().getMainDataSource(); boolean open = context.getDataContext().getEnabled(); if (open) { @@ -235,20 +236,19 @@ public class ObserveMainUIHandler { title += " v " + config.getVersion(); ui.setTitle(title); - context.setObserveMainUI(ui); + context.setMainUI(ui); ErrorDialogUI.init(ui); // set fullscreen propery on main ui - ui.getGraphicsConfiguration().getDevice().setFullScreenWindow( - config.isFullScreen() ? ui : null); + ui.getGraphicsConfiguration().getDevice().setFullScreenWindow(config.isFullScreen() ? ui : null); // on enregistre les actions communes à toutes les écrans d'édition // les bouttons utilisant ces actions seront automatiquement // chargés (à partir des actions) lors de l'ouverture des ui // et mis à jour - context.registerShareActions(ui); + context.registerShareActions(); new ObserveNavigationTreeShowPopupAction(treeHelper, ui.getNavigationScrollPane(), ui.getNavigationPopup()); @@ -257,12 +257,8 @@ public class ObserveMainUIHandler { public static final String H2_SERVER_URL_PATTERN = "jdbc:h2:%s/%s/obstuna"; -// protected static DataService getDataService() { -// return ObserveContext.get().getDataService(); -// } - public static void restartEdit() { - ContentUI<?> selectedUI = ObserveSwingApplicationContext.get().getSelectedContentUI(); + ContentUI<?> selectedUI = ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); if (selectedUI == null) { // pas d'écran selectionne @@ -304,7 +300,7 @@ public class ObserveMainUIHandler { // scan main ui ObserveMainUI ui = getUI(rootContext); - ObserveSwingDataSource mainStorage = rootContext.getDataSource(); + ObserveSwingDataSource mainStorage = rootContext.getDataSourcesManager().getMainDataSource(); ObserveUIMode oldMode = null; String[] ids = null; @@ -316,7 +312,7 @@ public class ObserveMainUIHandler { ErrorDialogUI.init(null); - rootContext.removeObserveMainUI(); + rootContext.removeMainUI(); ui.dispose(); @@ -346,41 +342,19 @@ public class ObserveMainUIHandler { // selection du noeud d'ouverture (le noeud precedemment selectionne, // ou le noeud le plus ouvert // ou le premier program si aucune donnée ouverte) - ui.getTreeHelper().selectInitialNode(ui); + ui.getTreeHelper().selectInitialNode(); } // show ui UIHelper.setMainUIVisible(ui); } -// public ContentUI<?> getSelectedContent(JAXXContext rootContext) { -// if (rootContext == null) { -// throw new IllegalArgumentException("rootContext can not be null"); -// } -// ObserveMainUI ui = getUI(rootContext); -// ContentUI<?> ui1 = null; -// if (ui == null) { -// // no ui, so no modification -// return ui1; -// } -// // check ui is not modified -// CardLayout2 layout = ui.getContentLayout(); -// JPanel container = ui.getContent(); -// Component currentContent = layout.getVisibleComponent(container); -// if (currentContent != null && -// currentContent instanceof ContentUI<?>) { -// -// ui1 = (ContentUI<?>) currentContent; -// } -// return ui1; -// } - protected Icon updateStorageSatutIcon(ObserveMainUI ui, boolean isOpened) { Icon icon; if (ui.getConfig().isMainStorageOpened()) { - ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); if (service.isLocal()) { icon = (Icon) ui.storageStatus.getClientProperty("localIcon"); @@ -398,7 +372,7 @@ public class ObserveMainUIHandler { protected String updateStorageSatutText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); text = source.getLabel(); } else { text = t("observe.message.db.none.loaded"); @@ -409,7 +383,7 @@ public class ObserveMainUIHandler { protected String updateStorageStatutToolTipText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); text = t("observe.message.loaded.tip", source.getLabel()); } else { text = t("observe.message.db.none.loaded.tip"); @@ -460,7 +434,7 @@ public class ObserveMainUIHandler { if (context instanceof ObserveMainUI) { return (ObserveMainUI) context; } - ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); return ui; } @@ -498,7 +472,7 @@ public class ObserveMainUIHandler { if (selectedNode.equals(o) || !selectedNode.isNodeAncestor(o)) { return; } - boolean canChange = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canChange = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (!canChange) { throw new ExpandVetoException(event, "Can not collapse node " + event.getPath()); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveUICallback.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveUICallback.java index 57804cc..97ef533 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveUICallback.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveUICallback.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui; * #L% */ +import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.ui.actions.CloseApplicationAction; @@ -51,7 +52,11 @@ public enum ObserveUICallback implements Runnable { ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = new ObserveMainUIHandler(); ObserveMainUI ui = handler.getUI(context); - context.askReload(); + + if (log.isDebugEnabled()) { + log.debug("Ask to reload."); + } + ObserveRunner.getRunner().setReload(true); new CloseApplicationAction(ui).run(); } }, diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java index eb4ea0a..028ff51 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java @@ -140,7 +140,7 @@ public class UIHelper extends SwingUtil { public static void displayInfo(String text) { - ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); if (ui == null) { JOptionPane.showMessageDialog(null, text); } else { @@ -150,7 +150,7 @@ public class UIHelper extends SwingUtil { public static void displayWarning(String title, String text) { - ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); JOptionPane.showMessageDialog(ui, text, title, JOptionPane.WARNING_MESSAGE); } @@ -179,7 +179,7 @@ public class UIHelper extends SwingUtil { if (parent == null) { ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); if (tx != null) { - parent = ObserveSwingApplicationContext.get().getObserveMainUI(); + parent = ObserveSwingApplicationContext.get().getMainUI(); } } int response = JOptionPane.showOptionDialog( @@ -301,7 +301,7 @@ public class UIHelper extends SwingUtil { Class<E> beanClass, E bean, String extraMessage) { - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); if (parent == null) { // on cherche l'ui principale @@ -524,9 +524,9 @@ public class UIHelper extends SwingUtil { ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); // on indique que la source de donnée a expiré - context.getDataSource().expired(); + context.getDataSourcesManager().getMainDataSource().expired(); - ObserveMainUI observeMainUI = context.getObserveMainUI(); + ObserveMainUI observeMainUI = context.getMainUI(); int result = askUser(observeMainUI, t("observe.storage.server.sessionExpire.title"), diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeApplicationLanguageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeApplicationLanguageAction.java index 34cfd6e..d25e755 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeApplicationLanguageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeApplicationLanguageAction.java @@ -68,7 +68,7 @@ public class ChangeApplicationLanguageAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe changing application language..."); } - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { ObserveSwingApplicationConfig config = ui.getConfig(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeDbLanguageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeDbLanguageAction.java index 81393a0..caedd2c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeDbLanguageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeDbLanguageAction.java @@ -68,7 +68,7 @@ public class ChangeDbLanguageAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe changing db language..."); } - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (!canContinue) { return; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeStorageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeStorageAction.java index 8a57573..48274ee 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeStorageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeStorageAction.java @@ -82,7 +82,7 @@ public class ChangeStorageAction extends AbstractAction { public void run() { - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { if (log.isInfoEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseApplicationAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseApplicationAction.java index d6b2578..4103f10 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseApplicationAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseApplicationAction.java @@ -70,7 +70,7 @@ public class CloseApplicationAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe quitting..."); } - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { try { ui.dispose(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java index 1c7e5cf..72c08e4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java @@ -61,7 +61,7 @@ public class CloseHelpAction extends AbstractAction { if (oldMode == null) { // on regarde si une base est chargee - ObserveSwingDataSource mainStorage = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource mainStorage = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); if (mainStorage == null) { oldMode = ObserveUIMode.NO_DB; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java index 6f03adf..930884b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java @@ -66,12 +66,12 @@ public class CloseStorageAction extends AbstractObserveAction { public void run() { - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { ui.setBusy(true); try { - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); if (log.isDebugEnabled()) { log.debug(">>> close main storage " + source); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ImportStorageFromFileAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ImportStorageFromFileAction.java index 1a60b17..725d064 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ImportStorageFromFileAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ImportStorageFromFileAction.java @@ -62,7 +62,7 @@ public class ImportStorageFromFileAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { new StorageUILauncher(ui, ui, t("observe.title.import.localDB")) { @@ -94,7 +94,7 @@ public class ImportStorageFromFileAction extends AbstractAction { protected void doAction(StorageUI ui) { super.doAction(ui); StorageUIHandler handler = getStorageUIHandler(); - handler.doChangeStorage(ui, ui.getModel()); + handler.doChangeStorage(ui.getModel()); } }.start(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/LaunchAdminAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/LaunchAdminAction.java index 7f155ac..eeb5abe 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/LaunchAdminAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/LaunchAdminAction.java @@ -64,7 +64,7 @@ public class LaunchAdminAction extends AbstractAction { @Override public void actionPerformed(ActionEvent event) { - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { if (log.isInfoEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadApplicationAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadApplicationAction.java index 92f4d2a..7263b23 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadApplicationAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadApplicationAction.java @@ -64,7 +64,7 @@ public class ReloadApplicationAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe reloading..."); } - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { ObserveUICallback.application.run(); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadDefaultConfigurationAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadDefaultConfigurationAction.java index aae5805..71e3173 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadDefaultConfigurationAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadDefaultConfigurationAction.java @@ -69,7 +69,7 @@ public class ReloadDefaultConfigurationAction extends AbstractAction { log.info("ObServe reloading default configuration..."); } - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { ObserveSwingApplicationConfig config = ui.getConfig(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadResourcesAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadResourcesAction.java index aec9a67..6d51e6b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadResourcesAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadResourcesAction.java @@ -72,7 +72,7 @@ public class ReloadResourcesAction extends AbstractAction { log.info("ObServe reloading resources..."); } - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { ObserveSwingApplicationConfig config = ui.getConfig(); @@ -93,8 +93,7 @@ public class ReloadResourcesAction extends AbstractAction { I18n.reload(); - DecoratorService decoratorService = - ui.getContextValue(DecoratorService.class); + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); if (log.isInfoEnabled()) { log.info("reload decorators"); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java index 9bebcf0..1896580 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java @@ -71,9 +71,9 @@ public class ReloadStorageAction extends AbstractObserveAction { public void run() { ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); - boolean canContinue = context.closeSelectedContentUI(ui); + boolean canContinue = context.getContentUIManager().closeSelectedContentUI(); - ObserveSwingDataSource storage = context.getDataSource(); + ObserveSwingDataSource storage = context.getDataSourcesManager().getMainDataSource(); if (canContinue && storage != null) { @@ -108,7 +108,7 @@ public class ReloadStorageAction extends AbstractObserveAction { context.setNodesToReselect(ids); // attachement a l'ui - context.prepareMainStorage(storage); + context.prepareMainStorage(storage, false); // ouverture du service storage.open(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java index 750f6e9..f47772a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java @@ -58,12 +58,12 @@ public class SaveStorageToFileAction extends AbstractObserveAction { @Override public void actionPerformed(ActionEvent e) { - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { // on teste que l'utilisateur peut lire-ecrire sur la source de données - ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); if (!service.isLocal() && !(service.canReadData() && service.canWriteData())) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java index b2e0970..4b44693 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java @@ -93,10 +93,10 @@ public class ShowConfigAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe opening configuration ui..."); } - boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (canContinue) { - ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); ObserveSwingApplicationConfig config = ui.getConfig(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java index e6fc98a..dc46a97 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java @@ -63,7 +63,7 @@ public class ShowStorageInfoAction extends AbstractAction { ObserveSwingDataSource source; if (ui.getConfig().isMainStorageOpened()) { - source = applicationContext.getDataSource(); + source = applicationContext.getDataSourcesManager().getMainDataSource(); } else { source = null; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseAndCreateUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseAndCreateUIAction.java index 912c66b..1c74f72 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseAndCreateUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseAndCreateUIAction.java @@ -93,14 +93,14 @@ public class CloseAndCreateUIAction extends AbstractUIAction { ); // selection du noeud de l'activity ouverte - treeHelper.selectOpenNode(getMainUI(), ActivitySeineDto.class); + treeHelper.selectOpenNode(ActivitySeineDto.class); // on conserve le path de l'activity TreePath path = tree.getSelectionPath(); // recuperation de l'écran associé ActivitySeineUI selectedUI = (ActivitySeineUI) - ObserveSwingApplicationContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); // fermeture de l'activity et création d'une nouvelle selectedUI.closeAndCreateData(); @@ -129,14 +129,14 @@ public class CloseAndCreateUIAction extends AbstractUIAction { ); // selection du noeud de l'activity ouverte - treeHelper.selectOpenNode(getMainUI(), ActivityLonglineDto.class); + treeHelper.selectOpenNode(ActivityLonglineDto.class); // on conserve le path de l'activity TreePath path = tree.getSelectionPath(); // recuperation de l'écran associé ActivityLonglineUI selectedUI = (ActivityLonglineUI) - ObserveSwingApplicationContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); // fermeture de l'activity et création d'une nouvelle selectedUI.closeAndCreateData(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseOpenUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseOpenUIAction.java index 28c6e02..65779c5 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseOpenUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseOpenUIAction.java @@ -98,14 +98,14 @@ public class CloseOpenUIAction extends AbstractUIAction { ); // selection du noeud de l'activity ouverte - treeHelper.selectOpenNode(getMainUI(), ActivitySeineDto.class); + treeHelper.selectOpenNode(ActivitySeineDto.class); // on conserve le path de l'activity TreePath path = tree.getSelectionPath(); // recuperation de l'écran associé ActivitySeineUI selectedUI = (ActivitySeineUI) - ObserveSwingApplicationContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); // fermeture de l'activity selectedUI.closeData(); @@ -140,14 +140,14 @@ public class CloseOpenUIAction extends AbstractUIAction { ); // selection du noeud de l'activity ouverte - treeHelper.selectOpenNode(getMainUI(), ActivityLonglineDto.class); + treeHelper.selectOpenNode(ActivityLonglineDto.class); // on conserve le path de l'activity TreePath path = tree.getSelectionPath(); // recuperation de l'écran associé ActivityLonglineUI selectedUI = (ActivityLonglineUI) - ObserveSwingApplicationContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); // fermeture de l'activity selectedUI.closeData(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveActivityLonglinesUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveActivityLonglinesUIAction.java index 513cc93..2e02ea6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveActivityLonglinesUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveActivityLonglinesUIAction.java @@ -107,7 +107,7 @@ public class MoveActivityLonglinesUIAction extends AbstractUIAction { // change the tripLongline of the selected activities List<DataReference<ActivityLonglineDto>> selectedDatas = activityLonglinesUI.getModel().getSelectedDatas(); List<String> activityIds = Lists.transform(selectedDatas, DataReference.getIdFunction()); - ActivityLonglineService service = ObserveSwingApplicationContext.get().newService(ActivityLonglineService.class); + ActivityLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLonglineService(); List<Integer> positions = service.moveActivityLonglinesToTripLongline(activityIds, tripLonglineId); // update the tree diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveActivitySeinesUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveActivitySeinesUIAction.java index 3effde9..49698d7 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveActivitySeinesUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveActivitySeinesUIAction.java @@ -106,7 +106,7 @@ public class MoveActivitySeinesUIAction extends AbstractUIAction { // change the route of the selected activities List<DataReference<ActivitySeineDto>> selectedDatas = ((ActivitySeinesUIModel) ui.getModel()).getSelectedDatas(); List<String> activityIds = Lists.transform(selectedDatas, DataReference.getIdFunction()); - ActivitySeineService service = ObserveSwingApplicationContext.get().newService(ActivitySeineService.class); + ActivitySeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); List<Integer> positions = service.moveActivitySeinesToRoute(activityIds, routeId); // update the tree diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveRoutesUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveRoutesUIAction.java index c435d91..4804702 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveRoutesUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveRoutesUIAction.java @@ -107,7 +107,7 @@ public class MoveRoutesUIAction extends AbstractUIAction { // change the tripseine of the selected routes List<DataReference<RouteDto>> selectedDatas = theUi.getModel().getSelectedDatas(); List<String> routeIds = Lists.transform(selectedDatas, DataReference.getIdFunction()); - RouteService service = ObserveSwingApplicationContext.get().newService(RouteService.class); + RouteService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); List<Integer> positions = service.moveRoutesToTripSeine(routeIds, tripSeineId); // update the tree diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java index d63edb5..915decd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripLonglinesUIAction.java @@ -70,7 +70,7 @@ public class MoveTripLonglinesUIAction extends MoveTripsUIAction<TripLonglineDto @Override protected List<Integer> getPositions(List<String> tripIds, String programId) { - TripLonglineService service = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + TripLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); return service.moveTripLonglinesToProgram(tripIds, programId); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripSeinesUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripSeinesUIAction.java index 5007e72..e84e903 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripSeinesUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/MoveTripSeinesUIAction.java @@ -70,7 +70,7 @@ public class MoveTripSeinesUIAction extends MoveTripsUIAction<TripSeineDto> { @Override protected List<Integer> getPositions(List<String> tripIds, String programId) { - TripSeineService service = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + TripSeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); return service.moveTripSeinesToProgram(tripIds, programId); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/ReOpenUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/ReOpenUIAction.java index 1466597..32478e4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/ReOpenUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/ReOpenUIAction.java @@ -89,7 +89,7 @@ public class ReOpenUIAction extends AbstractUIAction { treeHelper.selectNode(node); openUI = (ContentOpenableUI<?>) - ObserveSwingApplicationContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); } else { throw new IllegalStateException("The action " + ACTION_NAME + " can not be executed from ui " + ui); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/SelectOpenNodeUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/SelectOpenNodeUIAction.java index c418476..2b98f25 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/SelectOpenNodeUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/SelectOpenNodeUIAction.java @@ -53,6 +53,6 @@ public class SelectOpenNodeUIAction extends AbstractUIAction { "could not find client property " + "type on component" + c); } - getMainUI().getTreeHelper().selectOpenNode(getMainUI(), type); + getMainUI().getTreeHelper().selectOpenNode(type); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx index 1f9553d..9fe5019 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx @@ -28,7 +28,7 @@ implements='jaxx.runtime.swing.wizard.WizardStepUI<AdminStep, AdminUIModel>, java.beans.PropertyChangeListener'> <import> - fr.ird.observe.configuration.ObserveSwingApplicationConfig + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.ui.UIHelper fr.ird.observe.ui.admin.* fr.ird.observe.ui.storage.StorageUIModel @@ -46,14 +46,9 @@ <AdminActionModel id='stepModel' initializer='model.getStepModel(getStep())'/> - <StorageUIModel id='localSourceModel' - initializer='getModel().getLocalSourceModel()'/> + <StorageUIModel id='localSourceModel' initializer='getModel().getLocalSourceModel()'/> - <StorageUIModel id='centralSourceModel' - initializer='getModel().getCentralSourceModel()'/> - - <ObserveSwingApplicationConfig id='observeConfig' - initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> + <StorageUIModel id='centralSourceModel' initializer='getModel().getCentralSourceModel()'/> <AdminTabUIHandler id='handler' initializer='null'/> @@ -208,4 +203,8 @@ public void updateState(WizardState newState) { <JTextArea id='description'/> </JScrollPane> + <JPanel id='invisiblePanel' visible="false" constraints='BorderLayout.EAST'> + + </JPanel> + </JPanel> 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 97e1ed0..fde6907 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 @@ -204,9 +204,7 @@ public class AdminTabUIHandler { protected void checkStepIsOperation(AdminTabUI ui) { if (!ui.getStep().isOperation()) { - throw new IllegalStateException( - "can not launch objectOperation on none operation step " + - ui.getStep()); + throw new IllegalStateException("can not launch objectOperation on none operation step " + ui.getStep()); } } @@ -226,9 +224,7 @@ public class AdminTabUIHandler { } protected void addAdminWorker(String label, Callable<WizardState> callable) { - AdminActionWorker worker = AdminActionWorker.newWorker(this, - label, - callable); + AdminActionWorker worker = AdminActionWorker.newWorker(this, label, callable); ObserveRunner.getActionExecutor().addAction(worker); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java index 1630f7d..fd52ee0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java @@ -134,7 +134,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad protected Component getParent(AdminUI ui) { - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); ImageIcon icon = (ImageIcon) ui.getClientProperty("icon"); if (mainUI == null) { // pas de fenetre detectee @@ -176,7 +176,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad protected void start(final AdminUI ui) { super.start(ui); - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); String title = (String) ui.getClientProperty("title"); @@ -259,7 +259,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad model.doCloseSource(source, false); // on attache la source a l'ui - ObserveSwingApplicationContext.get().prepareMainStorage(source); + ObserveSwingApplicationContext.get().prepareMainStorage(source, false); source.open(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index e6133bd..d00d536 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -116,9 +116,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { /** le controleur pour configurer les sources */ protected StorageUIHandler storageHandler; - /** configuration de l'application */ - protected ObserveSwingApplicationConfig config; - /** selection des donnees a valider */ protected final DataSelectionModel selectionDataModel; @@ -139,7 +136,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { private final PropertyChangeListener listenSaveLocalChanged; - public AdminUIModel() { super(AdminStep.class); @@ -414,10 +410,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return (AdminActionModel) super.getStepModel(operation); } - public ObserveSwingApplicationConfig getConfig() { - return config; - } - /** * Pour savoir si on a besoin d'une base source pour l'opération. * @@ -469,12 +461,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { public EnumSet<DbMode> getIncomingDataSourceMode() { EnumSet<DbMode> result = EnumSet.noneOf(DbMode.class); - for (AdminStep op : getOperations()) { - if (op.hasIncomingModes()) { - - result.addAll(Arrays.asList(op.getIncomingModes())); - } - } + getOperations().stream().filter(AdminStep::hasIncomingModes).forEach(op -> result.addAll(Arrays.asList(op.getIncomingModes()))); return result; } @@ -484,7 +471,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { storageHandler = ui.getContextValue(StorageUIHandler.class); - config = ui.getContextValue(ObserveSwingApplicationConfig.class); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); // demarrage du modèle : on fixe ici une fois pour toute les liste // des onglets visibles @@ -501,7 +488,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // on positionne la source courante de l'application comme service // entrant (on se sert de la configuration de ce service s'il existe // pour la source locale). - ObserveSwingDataSource previousSource = ui.getContextValue(ObserveSwingDataSource.class); + ObserveSwingDataSource previousSource = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); setPreviousSource(previousSource); startIncomingSourceModel(ui); @@ -524,8 +511,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (containsOperation(AdminStep.SAVE_LOCAL)) { - File backupfile = new File(config.getBackupDirectory(), - storageHandler.getDefaultBackupFilename()); + File backupfile = new File(config.getBackupDirectory(), storageHandler.getDefaultBackupFilename()); getSaveLocalModel().setBackupFile(backupfile); getSaveLocalModel().setDoBackup(true); @@ -658,7 +644,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (authorizedModes.contains(DbMode.USE_LOCAL)) { // ce mode est disponible uniquement si une base locale existe - if (getConfig().isLocalStorageExist()) { + if (ObserveSwingApplicationContext.get().getConfig().isLocalStorageExist()) { modes.add(DbMode.USE_LOCAL); } } @@ -698,7 +684,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - if (previousSource.isServer()) { + if (previousSource != null && previousSource.isServer()) { if (!modes.contains(DbMode.USE_SERVER)) { @@ -707,7 +693,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - if (previousSource.isLocal()) { + if (previousSource != null && previousSource.isLocal()) { if (!modes.contains(DbMode.USE_LOCAL)) { @@ -726,14 +712,12 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (previousSource == null) { - // on intialize le modèle de la source locale à partir du service - // entrant (s'il existe) + // on intialize le modèle de la source locale à partir du service entrant (s'il existe) localSourceModel.init(ui, null); } else { - // on intialize le modèle de la source locale à partir du service - // entrant (s'il existe) + // on intialize le modèle de la source locale à partir du service entrant (s'il existe) localSourceModel.initFromPreviousConfig(ui, previousSourceConfig, previousSourceInfo); } @@ -866,7 +850,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { public ObserveSwingDataSource getSafeTmpSource(boolean open) { if (tmpSource == null) { - tmpSource = ObserveSwingApplicationContext.get().createDataSourceH2Temp(n("observe.storage.label.synchro")); + tmpSource = ObserveSwingApplicationContext.get().createTemporaryH2Storage(n("observe.storage.label.synchro")); if (open) { doOpenSource(tmpSource); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java index 0025eef..5629f7b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -11,6 +11,7 @@ import fr.ird.observe.services.service.actions.datasynchro.DataSynchronizeCopyTa import fr.ird.observe.services.service.actions.datasynchro.DataSynchronizeDeleteTask; import fr.ird.observe.services.service.actions.datasynchro.DataSynchronizeRequest; import fr.ird.observe.services.service.actions.datasynchro.DataSynchronizeService; +import fr.ird.observe.ui.admin.AdminTabUI; import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; @@ -22,9 +23,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.DefaultListModel; -import javax.swing.JList; import javax.swing.border.TitledBorder; -import java.awt.event.MouseEvent; import java.util.List; import java.util.Map; import java.util.Set; @@ -55,6 +54,11 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { return (DataSynchroUI) super.getUi(); } + @Override + public void updateState(AdminTabUI ui, WizardState newState) { + super.updateState(ui, newState); + } + public void initTabUI(AdminUI ui, DataSynchroUI tabUI) { super.initTabUI(ui, tabUI); @@ -63,8 +67,6 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); } -// tabUI.getStartAction().setText(t("observe.action.datasynchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); - getStepModel().getLeftSelectionDataModel().addPropertyChangeListener(evt -> { DataSelectionModel model = (DataSelectionModel) evt.getSource(); @@ -112,12 +114,6 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { } -// public void doPrepareAction() { -// -// addAdminWorker(getUi().getStartAction().getToolTipText(), this::doAction); -// -// } - public void addCopyToLeftTasks() { DataSelectionModel rightSelectionDataModel = getStepModel().getRightSelectionDataModel(); @@ -204,49 +200,6 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { } - public void removeTasks(MouseEvent event) { - - if (event.getClickCount() > 1) { - - JList source = (JList) event.getSource(); - int selectionIndex = source.getMinSelectionIndex(); - DataSynchronizeTaskSupport task = getStepModel().getTasks().getElementAt(selectionIndex); - getStepModel().getTasks().removeElementAt(selectionIndex); - - //TODO Deal with tripExistOnxxx for copy tasks - - ObserveTreeHelper treeHelper; - DataSelectionModel selectionDataModel; - if (task instanceof CopyToLeftDataSynchronizeTask || task instanceof DeleteFromRightDataSynchronizeTask) { - - // push back to right tree - treeHelper = getUi().getRightTreeHelper(); - selectionDataModel = getStepModel().getRightSelectionDataModel(); - } else { - - // push back to left tree - - treeHelper = getUi().getLeftTreeHelper(); - selectionDataModel = getStepModel().getLeftSelectionDataModel(); - } - - ReferentialReference<ProgramDto> program = task.getProgram(); - DataReference trip = task.getTrip(); - - Set<ReferentialReference<ProgramDto>> programs = selectionDataModel.getPrograms(); - ObserveNode programNode; - if (programs.contains(program)) { - programNode = treeHelper.getChild(treeHelper.getRootNode(), program.getId()); - } else { - programNode = treeHelper.addProgram(programs, program); - } - - selectionDataModel.addData(program, trip); - treeHelper.addSimpleTrip(programNode, trip); - } - - } - public void doExecuteAction() { ObserveSwingDataSource leftSource = getStepModel().getLeftSource(); @@ -327,39 +280,21 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { } -// private WizardState doAction() throws Exception { -// -// if (log.isDebugEnabled()) { -// log.debug(this); -// } -// -// DataSynchroModel stepModel = getStepModel(); -// -// // on cree les sources de données -// -// ObserveSwingDataSource leftSource = model.getSafeLocalSource(false); -// openSource(leftSource); -// stepModel.setLeftSource(leftSource); -// -// ObserveSwingDataSource rightSource = model.getSafeCentralSource(false); -// openSource(rightSource); -// stepModel.setRightSource(rightSource); -// -// -// // Populate tree models -// -// DataSynchroUI tabUI = getUi(); -// -// tabUI.getLeftTreePane().setBorder(new TitledBorder(leftSource.getLabel())); -// stepModel.populateLeftSelectionModel(); -// updateSelectionModel(tabUI, tabUI.getLeftTreeHelper(), tabUI.getLeftTree(), leftSource, stepModel.getLeftSelectionDataModel(), tabUI.getLeftSelectionModel()); -// sendMessage(t("observe.message.datasynchro.leftData.loaded")); -// -// -// sendMessage(t("observe.message.datasynchro.ready")); -// -// return WizardState.NEED_FIX; -// -// } + private void adddTripToTree(ReferentialReference<ProgramDto> program, DataReference trip, ObserveTreeHelper treeHelper, DataSelectionModel selectionDataModel) { + + + Set<ReferentialReference<ProgramDto>> programs = selectionDataModel.getPrograms(); + ObserveNode programNode; + if (programs.contains(program)) { + programNode = treeHelper.getChild(treeHelper.getRootNode(), program.getId()); + } else { + programNode = treeHelper.addProgram(programs, program); + } + + selectionDataModel.addData(program, trip); + ObserveNode observeNode = treeHelper.addSimpleTrip(programNode, trip); + treeHelper.selectNode(observeNode); + + } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java index cccbbab..ca9fc28 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java @@ -1,9 +1,6 @@ package fr.ird.observe.ui.admin.datasynchro; -import jaxx.runtime.SwingUtil; - import javax.swing.DefaultListCellRenderer; -import javax.swing.ImageIcon; import javax.swing.JList; import java.awt.Component; @@ -17,20 +14,11 @@ public class DataSynchronizeTaskListCellRenderer extends DefaultListCellRenderer private static final long serialVersionUID = 1L; - private final ImageIcon icon; - - public DataSynchronizeTaskListCellRenderer() { - icon = SwingUtil.createActionIcon("cancel"); - } - @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { DataSynchronizeTaskSupport task = (DataSynchronizeTaskSupport) value; - String label = task.getLabel(); - Component listCellRendererComponent = super.getListCellRendererComponent(list, label, index, isSelected, cellHasFocus); - setIcon(icon); - return listCellRendererComponent; + return super.getListCellRendererComponent(list, task.getLabel(), index, isSelected, cellHasFocus); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx index bfcbbb5..20899b6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx @@ -34,10 +34,10 @@ _UPDATETip='t("observe.content.mode.update.tip")'> <import> + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.db.DataContext fr.ird.observe.db.ObserveSwingDataSource fr.ird.observe.configuration.ObserveSwingApplicationConfig - fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.ui.actions.shared.GoUpUIAction fr.ird.observe.ui.actions.shared.GoDownUIAction fr.ird.observe.ui.tree.ObserveTreeHelper @@ -54,15 +54,12 @@ javax.swing.UIManager </import> - <ObserveSwingApplicationConfig id='config' - initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> + <ObserveSwingApplicationConfig id='config' initializer='ObserveSwingApplicationContext.get().getConfig()'/> - <SwingValidatorMessageTableModel id='errorTableModel' - initializer='getContextValue(SwingValidatorMessageTableModel.class)'/> + <SwingValidatorMessageTableModel id='errorTableModel' initializer='getContextValue(SwingValidatorMessageTableModel.class)'/> <!--FIXME a supprimer a la fin de la migration de service --> - <ObserveSwingDataSource id='dataSource' - initializer='ObserveSwingApplicationContext.get().getDataSource()'/> + <ObserveSwingDataSource id='dataSource' initializer='ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource()'/> <DataContext id='dataContext' javaBean='getContextValue(DataContext.class)'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java index 6cbca35..3b84fb8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java @@ -615,7 +615,7 @@ public abstract class ContentUIHandler<E extends IdDto> { } protected ObserveSwingDataSource getDataSource() { - return ObserveSwingApplicationContext.get().getDataSource(); + return ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); } protected ObserveOpenDataManager getOpenDataManager() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java index 86c493c..c431110 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.ui.content; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.ActivityLonglineEncounterDto; @@ -89,6 +90,7 @@ import org.apache.commons.logging.LogFactory; import javax.swing.JComponent; import javax.swing.JPanel; +import java.awt.Component; import java.lang.reflect.Constructor; import java.util.Map; import java.util.TreeMap; @@ -110,14 +112,18 @@ public class ContentUIManager { /** Logger */ static private final Log log = LogFactory.getLog(ContentUIManager.class); - /** L'ui qui utilise le manager */ - protected final ObserveMainUI ui; +// /** L'ui qui utilise le manager */ +// protected final ObserveMainUI ui; protected final Map<String, Class<? extends ObserveContentUI<?>>> mapping; - public ContentUIManager(ObserveMainUI ui) { + protected ObserveMainUI getMainUI() { + return ObserveSwingApplicationContext.get().getMainUI(); + } + + public ContentUIManager() { - this.ui = ui; +// this.ui = ui; mapping = new TreeMap<>(); // --- Seine data --- // @@ -289,10 +295,9 @@ public class ContentUIManager { try { Constructor<U> constructor = uiClass.getConstructor(JAXXContext.class); if (log.isDebugEnabled()) { - log.debug("create new content : " + uiClass + " from ui " + - ui.getClass().getName()); + log.debug("create new content : " + uiClass); } - result = constructor.newInstance(new JAXXInitialContext().add(ui)); + result = constructor.newInstance(new JAXXInitialContext().add(getMainUI())); } catch (Exception e) { throw new IllegalStateException("Could not create content ui " + uiClass, e); } @@ -346,13 +351,67 @@ public class ContentUIManager { getLayout().reset(getLayoutContent()); } + public ContentUI<?> getSelectedContentUI() { + + ObserveMainUI ui = getMainUI(); + return getSelectedContentUI(ui); + } + + public boolean closeSelectedContentUI() { + ObserveMainUI ui = getMainUI(); + return closeSelectedContentUI(ui); + } + + public ContentUI<?> getSelectedContentUI(ObserveMainUI ui) { + + ContentUI<?> result = null; + + if (ui == null) { + // no ui, so no modification + return result; + } + + CardLayout2 layout = ui.getContentLayout(); + JPanel container = ui.getContent(); + Component currentContent = layout.getVisibleComponent(container); + if (currentContent != null && + currentContent instanceof ContentUI<?>) { + + result = (ContentUI<?>) currentContent; + } + return result; + } + + /** + * Essaye de fermer l'écran d'édition s'il existe. + * + * @param mainUI l'ui principale + * @return {@code true} si le contenu a bien été fermé, {@code false} si on + * ne peut pas fermer l'écran + * @since 1.5 + */ + public boolean closeSelectedContentUI(ObserveMainUI mainUI) { + ContentUI<?> ui = getSelectedContentUI(mainUI); + if (ui == null) { + // no content ui + return true; + } + boolean closed = false; + try { + closed = ui.close(); + } catch (Exception e) { + UIHelper.handlingError(e); + } + return closed; + } + protected JPanel getLayoutContent() { - JPanel content = ui.getContent(); + JPanel content = getMainUI().getContent(); return content; } protected CardLayout2 getLayout() { - CardLayout2 layout = ui.getContentLayout(); + CardLayout2 layout = getMainUI().getContentLayout(); return layout; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx index d1ce177..d21c96d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx @@ -174,7 +174,7 @@ <Table fill="both" constraints='BorderLayout.NORTH'> <row> <cell weightx="1" fill="both" weighty="1"> - <BranchlineUI id="branchlineDetailUI" constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> + <BranchlineUI id="branchlineDetailUI" constructorParams="ObserveSwingApplicationContext.get().getMainUI()"/> </cell> </row> </Table> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java index 6cefcfa..04f09e1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java @@ -605,7 +605,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.sections.delete.message"), @@ -654,7 +654,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.sectionTemplate.delete.message"), @@ -695,7 +695,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong boolean accept = UIHelper.confirmForEntityDelete(ui, SectionDto.class, selectedSection); - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); mainUI.setBusy(false); if (!accept) { @@ -797,7 +797,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } boolean accept = UIHelper.confirmForEntityDelete(ui, BasketDto.class, selectedBasket); - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); mainUI.setBusy(false); if (!accept) { @@ -908,7 +908,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } boolean accept = UIHelper.confirmForEntityDelete(ui, BranchlineDto.class, selectedBranchline); - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); mainUI.setBusy(false); if (!accept) { return; @@ -1363,7 +1363,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } protected SetLonglineDetailCompositionService getSetLonglineDetailCompositionService() { - return ObserveSwingApplicationContext.get().newService(SetLonglineDetailCompositionService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newSetLonglineDetailCompositionService(); } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx index fa36f68..f014f65 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx @@ -79,7 +79,7 @@ <tab id='floatlinesCompositionTab'> <JPanel id="floatlinesCompositionPanel" layout='{new BorderLayout()}'> <FloatlinesCompositionUI id="floatlinesCompositionUI" - constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getMainUI()"/> </JPanel> </tab> @@ -87,7 +87,7 @@ <tab id='branchlinesCompositionTab'> <JPanel id="branchlinesCompositionPanel" layout='{new BorderLayout()}'> <BranchlinesCompositionUI id="branchlinesCompositionUI" - constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getMainUI()"/> </JPanel> </tab> @@ -95,7 +95,7 @@ <tab id='hooksCompositionTab'> <JPanel id="hooksCompositionPanel" layout='{new BorderLayout()}'> <HooksCompositionUI id="hooksCompositionUI" - constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getMainUI()"/> </JPanel> </tab> @@ -103,7 +103,7 @@ <tab id='baitsCompositionTab'> <JPanel id="baitsCompositionPanel" layout='{new BorderLayout()}'> <BaitsCompositionUI id="baitsCompositionUI" - constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getMainUI()"/> </JPanel> </tab> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUIHandler.java index 1eb5212..0523e15 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUIHandler.java @@ -241,7 +241,8 @@ public class LonglineGlobalCompositionUIHandler extends ContentUIHandler<SetLong } protected SetLonglineGlobalCompositionService getSetLonglineGlobalCompositionService() { - return ObserveSwingApplicationContext.get().newService(SetLonglineGlobalCompositionService.class); + + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newSetLonglineGlobalCompositionService(); } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/SetLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/SetLonglineUIHandler.java index 62b3347..c66d2d4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/SetLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/SetLonglineUIHandler.java @@ -465,6 +465,6 @@ public class SetLonglineUIHandler extends ContentUIHandler<SetLonglineDto> { } protected SetLonglineService getSetLonglineService() { - return ObserveSwingApplicationContext.get().newService(SetLonglineService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newSetLonglineService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/ActivitySeineObservedSystemUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/ActivitySeineObservedSystemUIHandler.java index a4d2e79..17afaa8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/ActivitySeineObservedSystemUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/ActivitySeineObservedSystemUIHandler.java @@ -118,6 +118,6 @@ public class ActivitySeineObservedSystemUIHandler extends ContentUIHandler<Activ } protected ActivitySeineObservedSystemService getActivitySeineObservedSystemService() { - return ObserveSwingApplicationContext.get().newService(ActivitySeineObservedSystemService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineObservedSystemService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUIHandler.java index 618ef5f..b7f8c8f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUIHandler.java @@ -370,7 +370,7 @@ public class FloatingObjectTransmittingBuoyOperationUIHandler extends ContentUIH } protected TransmittingBuoyOperationService getTransmittingBuoyOperationService() { - return ObserveSwingApplicationContext.get().newService(TransmittingBuoyOperationService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTransmittingBuoyOperationService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java index bf32e9a..cd960c3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java @@ -184,7 +184,7 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeineDto> { getModel().setForm(form); SetSeineDtos.copySetSeineDto(form.getObject(), bean); - RouteService routeService = ObserveSwingApplicationContext.get().newService(RouteService.class); + RouteService routeService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); RouteDto route = routeService.loadDto(selectedRouteId); @@ -340,6 +340,6 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeineDto> { } protected SetSeineService getSetSeineService() { - return ObserveSwingApplicationContext.get().newService(SetSeineService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newSetSeineService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java index 5ed8f08..55bbebe 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java @@ -113,7 +113,7 @@ public class ActivityLonglinesUIHandler extends ContentListUIHandler<TripLonglin @Override protected List<DataReference<ActivityLonglineDto>> getChilds(String parentId) { - ActivityLonglineService service = ObserveSwingApplicationContext.get().newService(ActivityLonglineService.class); + ActivityLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLonglineService(); DataReferenceSet<ActivityLonglineDto> activityLonglineStubByRoute = service.getActivityLonglineByTripLongline(parentId); if (log.isDebugEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIHandler.java index 13ea64c..6719578 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIHandler.java @@ -98,7 +98,7 @@ public class TripLonglinesUIHandler extends ContentListUIHandler<ProgramDto, Tri @Override protected List<DataReference<TripLonglineDto>> getChilds(String parentId) { - TripLonglineService service = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + TripLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); DataReferenceSet<TripLonglineDto> tripLonglineByProgram = service.getTripLonglineByProgram( parentId); if (log.isDebugEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/ActivitySeinesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/ActivitySeinesUIHandler.java index d1b9adb..6e5f959 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/ActivitySeinesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/ActivitySeinesUIHandler.java @@ -111,7 +111,7 @@ public class ActivitySeinesUIHandler extends ContentListUIHandler<RouteDto, Acti @Override protected List<DataReference<ActivitySeineDto>> getChilds(String parentId) { - ActivitySeineService service = ObserveSwingApplicationContext.get().newService(ActivitySeineService.class); + ActivitySeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); DataReferenceSet<ActivitySeineDto> activitySeineByRoute = service.getActivitySeineByRoute(parentId); if (log.isDebugEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/RoutesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/RoutesUIHandler.java index 852a727..23add6c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/RoutesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/RoutesUIHandler.java @@ -108,7 +108,7 @@ public class RoutesUIHandler extends ContentListUIHandler<TripSeineDto, RouteDto @Override protected List<DataReference<RouteDto>> getChilds(String parentId) { - RouteService service = ObserveSwingApplicationContext.get().newService(RouteService.class); + RouteService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); DataReferenceSet<RouteDto> routeByTripSeine = service.getRouteByTripSeine(parentId); if (log.isDebugEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIHandler.java index 6ed82dd..dd70be9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIHandler.java @@ -95,7 +95,7 @@ public class TripSeinesUIHandler extends ContentListUIHandler<ProgramDto, TripSe @Override protected List<DataReference<TripSeineDto>> getChilds(String parentId) { - TripSeineService service = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + TripSeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); DataReferenceSet<TripSeineDto> tripSeineByProgram = service.getTripSeineByProgram(parentId); if (log.isDebugEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/ActivityLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/ActivityLonglineUIHandler.java index 6f3f2d3..a6fd142 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/ActivityLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/ActivityLonglineUIHandler.java @@ -358,6 +358,6 @@ public class ActivityLonglineUIHandler extends ContentOpenableUIHandler<Activity } protected ActivityLonglineService getActivityLonglineService() { - return ObserveSwingApplicationContext.get().newService(ActivityLonglineService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLonglineService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java index ed4a126..3f472d6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java @@ -94,7 +94,7 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline TripLonglineUI ui = getUi(); TripMapUI tripMap = ui.getTripMap(); - ObserveSwingApplicationConfig config = ui.getContextValue(ObserveSwingApplicationConfig.class); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); tripMap.getHandler().setConfig(config); @@ -368,6 +368,6 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline } protected TripLonglineService getTripLonglineService() { - return ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/ActivitySeineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/ActivitySeineUIHandler.java index 822d36c..f5586fc 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/ActivitySeineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/ActivitySeineUIHandler.java @@ -372,7 +372,7 @@ public class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySei } protected ActivitySeineService getActivitySeineService() { - return ObserveSwingApplicationContext.get().newService(ActivitySeineService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java index f57e9ea..8a6fa6b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java @@ -383,7 +383,7 @@ public class RouteUIHandler extends ContentOpenableUIHandler<RouteDto> { treeHelper.addUnsavedNode(parentNode, ActivitySeineDto.class); // on recupère l'écran d'édition - ActivitySeineUI selectedUI = (ActivitySeineUI) ObserveSwingApplicationContext.get().getSelectedContentUI(); + ActivitySeineUI selectedUI = (ActivitySeineUI) ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); // on recupère l'activity de fin de veille ReferentialReference<VesselActivitySeineDto> vesselActivitySeine = null; @@ -461,6 +461,6 @@ public class RouteUIHandler extends ContentOpenableUIHandler<RouteDto> { } protected RouteService getRouteService() { - return ObserveSwingApplicationContext.get().newService(RouteService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java index 1a15566..0c2ed16 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java @@ -92,7 +92,7 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeineDto> { TripSeineUI ui = getUi(); TripMapUI tripMap = ui.getTripMap(); - ObserveSwingApplicationConfig config = ui.getContextValue(ObserveSwingApplicationConfig.class); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); tripMap.getHandler().setConfig(config); @@ -364,7 +364,7 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeineDto> { } protected TripSeineService getTripSeineService() { - return ObserveSwingApplicationContext.get().newService(TripSeineService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java index e837fef..2b01a04 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java @@ -802,7 +802,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content } protected ReferentialService getReferentialService() { - return ObserveSwingApplicationContext.get().newService(ReferentialService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newReferentialService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java index c582d6c..1af0e7c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java @@ -228,7 +228,7 @@ public abstract class ContentTableUIHandler<E extends IdDto, D extends IdDto> ex // Collection<D> data = new ArrayList<D>(); // if (CollectionUtils.isNotEmpty(childs)) { // Loador<D> loader = getModel().getChildLoador(); -// TopiaDAO<D> dao = getDataSource().getDAO(tx, getTableEditBean()); +// TopiaDAO<D> dao = getMainDataSource().getDAO(tx, getTableEditBean()); // for (D c : childs) { // try { // D cUp = dao.findByTopiaId(c.getTopiaId()); @@ -325,7 +325,7 @@ public abstract class ContentTableUIHandler<E extends IdDto, D extends IdDto> ex } finally { // always reset busy model to false - ObserveSwingApplicationContext.get().getObserveMainUI().setBusy(false); + ObserveSwingApplicationContext.get().getMainUI().setBusy(false); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java index a012593..bec933e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java @@ -609,7 +609,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat String tripLonglineId = getDataContext().getSelectedTripLonglineId(); - TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); result = (List) tripLonglineService.getSpeciesByListAndTrip(tripLonglineId, speciesListId); result = ReferentialReferences.filterEnabled(result); @@ -801,7 +801,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.sizeMeasure.delete.message"), @@ -860,7 +860,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.weightMeasure.delete.message"), @@ -928,11 +928,11 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat } protected SetLonglineCatchService getSetLonglineCatchService() { - return ObserveSwingApplicationContext.get().newService(SetLonglineCatchService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newSetLonglineCatchService(); } protected BranchlineService getBranchLineService() { - return ObserveSwingApplicationContext.get().newService(BranchlineService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newBranchlineService(); } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java index 97e6b00..534cc5b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java @@ -133,7 +133,7 @@ public class EncounterUIHandler extends ContentTableUIHandler<ActivityLonglineEn String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineEncounterId(); - ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + ReferentialService referentialService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newReferentialService(); Form<SpeciesListDto> speciesListDtoForm = referentialService.loadForm(SpeciesListDto.class, speciesListId); SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); @@ -156,6 +156,6 @@ public class EncounterUIHandler extends ContentTableUIHandler<ActivityLonglineEn } protected ActivityLongLineEncounterService getActivityLongLineEncouterService() { - return ObserveSwingApplicationContext.get().newService(ActivityLongLineEncounterService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLongLineEncounterService(); } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java index 9013221..4c78962 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java @@ -173,7 +173,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.measurement.delete.message"), @@ -502,7 +502,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip } protected TripLonglineGearUseService getTripLonglineGearUseService() { - return ObserveSwingApplicationContext.get().newService(TripLonglineGearUseService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineGearUseService(); } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java index 1096aa5..e18fb9d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java @@ -187,7 +187,7 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLonglineS Files.write(file.toPath(), dataFile.getContent()); - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); mainUI.getStatus().setStatus(t("observe.sensorUsed.message.data.exported", file)); } catch (IOException e) { throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); @@ -214,7 +214,7 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLonglineS } protected ActivityLongLineSensorUsedService getActivityLonglineSensorUsedService() { - return ObserveSwingApplicationContext.get().newService(ActivityLongLineSensorUsedService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLongLineSensorUsedService(); } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java index 6c72d8c..d0d5cb7 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java @@ -346,7 +346,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineTdrDto, TdrDt Files.write(file.toPath(), dataFile.getContent()); - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); mainUI.getStatus().setStatus(t("observe.sensorUsed.message.data.exported", file)); } catch (IOException e) { throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); @@ -444,7 +444,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineTdrDto, TdrDt String tripLonglineId = getDataContext().getSelectedTripLonglineId(); - TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); result = (List) tripLonglineService.getSpeciesByListAndTrip(tripLonglineId, speciesListId); result = ReferentialReferences.filterEnabled(result); @@ -480,6 +480,6 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineTdrDto, TdrDt } protected TdrService getTdrService() { - return ObserveSwingApplicationContext.get().newService(TdrService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTdrService(); } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java index 3477614..1746fca 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java @@ -171,7 +171,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.measurement.delete.message"), @@ -500,7 +500,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } protected TripSeineGearUseService getTripSeineGearUseService() { - return ObserveSwingApplicationContext.get().newService(TripSeineGearUseService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineGearUseService(); } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java index 2207293..db559a1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java @@ -379,7 +379,7 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineNonTa String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineNonTargetCatchId(); String tripSeineId = getDataContext().getSelectedTripSeineId(); - TripSeineService tripSeineService = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + TripSeineService tripSeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); result = (List) tripSeineService.getSpeciesByListAndTrip(tripSeineId, speciesListId); result = ReferentialReferences.filterEnabled(result); @@ -398,6 +398,6 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineNonTa } protected NonTargetCatchService getNonTargetCatchService() { - return ObserveSwingApplicationContext.get().newService(NonTargetCatchService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newNonTargetCatchService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java index 1e25c13..b8890ad 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java @@ -331,6 +331,6 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam } protected NonTargetSampleService getNonTargetSampleService() { - return ObserveSwingApplicationContext.get().newService(NonTargetSampleService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newNonTargetSampleService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java index ade5863..aab061e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java @@ -126,7 +126,7 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati case ObjectSchoolEstimateDto.PROPERTY_SPECIES: { String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineObjectObservedSpeciesId(); - ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + ReferentialService referentialService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newReferentialService(); Form<SpeciesListDto> speciesListDtoForm = referentialService.loadForm(SpeciesListDto.class, speciesListId); SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); @@ -148,6 +148,6 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati } protected ObjectObservedSpeciesService getObjectObservedSpeciesService() { - return ObserveSwingApplicationContext.get().newService(ObjectObservedSpeciesService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newObjectObservedSpeciesService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java index 72d0d89..45a6892 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java @@ -122,7 +122,7 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin case ObjectSchoolEstimateDto.PROPERTY_SPECIES: { String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineObjectSchoolEstimateId(); - ReferentialService referentialService = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + ReferentialService referentialService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newReferentialService(); Form<SpeciesListDto> speciesListDtoForm = referentialService.loadForm(SpeciesListDto.class, speciesListId); SpeciesListDto speciesListDto = speciesListDtoForm.getObject(); @@ -143,6 +143,6 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin } protected ObjectSchoolEstimateService getObjectSchoolEstimateService() { - return ObserveSwingApplicationContext.get().newService(ObjectSchoolEstimateService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newObjectSchoolEstimateService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java index 4a2a299..a6014d8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java @@ -155,7 +155,7 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineSchoo String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineSchoolEstimateId(); String tripSeineId = getDataContext().getSelectedTripSeineId(); - TripSeineService tripSeineService = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + TripSeineService tripSeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); result = (List) tripSeineService.getSpeciesByListAndTrip(tripSeineId, speciesListId); result = ReferentialReferences.filterEnabled(result); @@ -174,6 +174,6 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineSchoo } protected SchoolEstimateService getSchoolEstimateService() { - return ObserveSwingApplicationContext.get().newService(SchoolEstimateService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newSchoolEstimateService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java index f23dbd2..e92f12f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java @@ -304,7 +304,7 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeineTargetCa String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineTargetCatchId(); String tripSeineId = getDataContext().getSelectedTripSeineId(); - TripSeineService tripSeineService = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + TripSeineService tripSeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); result = (List) tripSeineService.getSpeciesByListAndTrip(tripSeineId, speciesListId); result = ReferentialReferences.filterEnabled(result); @@ -323,7 +323,7 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeineTargetCa } protected TargetCatchService getTargetCatchService() { - return ObserveSwingApplicationContext.get().newService(TargetCatchService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTargetCatchService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java index f50a7ef..858b84c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java @@ -517,7 +517,7 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeineT String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListSeineTargetCatchId(); String tripSeineId = getDataContext().getSelectedTripSeineId(); - TripSeineService tripSeineService = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + TripSeineService tripSeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); result = (List) tripSeineService.getSpeciesByListAndTrip(tripSeineId, speciesListId); result = ReferentialReferences.filterEnabled(result); @@ -536,6 +536,6 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeineT } protected TargetCatchService getTargetCatchService() { - return ObserveSwingApplicationContext.get().newService(TargetCatchService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTargetCatchService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java index 3b3ef8f..38ad6ff 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java @@ -349,6 +349,6 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSampleDto } protected TargetSampleService getTargetSampleService() { - return ObserveSwingApplicationContext.get().newService(TargetSampleService.class); + return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTargetSampleService(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java index 6c2fd97..cbbd757 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java @@ -87,7 +87,7 @@ public enum ObstunaAdminAction { protected void checkImportDbVersion(StorageUIModel model, ObserveDataSourceConfiguration dataSourceConfig) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException { - ObserveSwingDataSource importDataSource = ObserveSwingApplicationContext.get().newDataSource(dataSourceConfig); + ObserveSwingDataSource importDataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(dataSourceConfig); Preconditions.checkState(importDataSource != null, "Can't select data on a null dataSource"); @@ -112,11 +112,11 @@ public enum ObstunaAdminAction { // pas autorise a migrer automatiquement pgConfig.setCanMigrate(false); - dataSource = ObserveSwingApplicationContext.get().newDataSource(pgConfig); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(pgConfig); } else { ObserveDataSourceConfigurationRest restConfig = model.getRestConfig(); - dataSource = ObserveSwingApplicationContext.get().newDataSource(restConfig); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(restConfig); } createConfigurationDto = model.toImportReferentielSourceConfig(); @@ -220,16 +220,16 @@ public enum ObstunaAdminAction { if (DbMode.USE_REMOTE.equals(model.getDbMode())) { ObserveDataSourceConfigurationTopiaPG pgConfig = model.getPgConfig(); - dataSource = ObserveSwingApplicationContext.get().newDataSource(pgConfig); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(pgConfig); } else { ObserveDataSourceConfigurationRest restConfig = model.getRestConfig(); - dataSource = ObserveSwingApplicationContext.get().newDataSource(restConfig); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(restConfig); } - targetVersion = model.getConfig().getModelVersion(); + targetVersion = ObserveSwingApplicationContext.get().getConfig().getModelVersion(); users = model.getSecurityModel().getUsers(); @@ -282,11 +282,11 @@ public enum ObstunaAdminAction { // pas autorise a migrer automatiquement pgConfig.setCanMigrate(false); - dataSource = ObserveSwingApplicationContext.get().newDataSource(pgConfig); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(pgConfig); } else { ObserveDataSourceConfigurationRest restConfig = model.getRestConfig(); - dataSource = ObserveSwingApplicationContext.get().newDataSource(restConfig); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(restConfig); } users = model.getSecurityModel().getUsers(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java index abbddfe..50f4daa 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java @@ -60,7 +60,7 @@ public class StorageBackupUILauncher extends StorageUILauncher { ui.getBACKUP().getDoBackup().setSelected(true); ui.getBACKUP().getDoBackup().setVisible(false); - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); StorageUIModel model = ui.getModel(); model.setCanCreateLocalService(false); @@ -100,7 +100,7 @@ public class StorageBackupUILauncher extends StorageUILauncher { super.doAction(ui); StorageUIHandler handler = getStorageUIHandler(); - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); StorageUIModel storageModel = ui.getModel(); File backupFile = storageModel.getBackupFile(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index c353459..c750e77 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -52,7 +52,6 @@ import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.storage.tabs.RolesTableModel; import fr.ird.observe.ui.storage.tabs.SecurityModel; import fr.ird.observe.ui.storage.tabs.StorageTabUI; -import jaxx.runtime.JAXXContext; import jaxx.runtime.context.DefaultApplicationContext.AutoLoad; import jaxx.runtime.swing.wizard.WizardUILancher; import org.apache.commons.io.FileUtils; @@ -104,7 +103,7 @@ public class StorageUIHandler { case USE_LOCAL: configuration = model.toH2StorageConfig(t("observe.storage.label.local")); - dataSource = ObserveSwingApplicationContext.get().newDataSource(configuration); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(configuration); dataSource.addObserveSwingDataSourceListener( new ObserveSwingDataSourceListenerAdapter() { @@ -120,11 +119,11 @@ public class StorageUIHandler { break; case USE_REMOTE: configuration = model.toPGStorageConfig(t("observe.storage.label.remote")); - dataSource = ObserveSwingApplicationContext.get().newDataSource(configuration); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(configuration); break; case USE_SERVER: configuration = model.toRestStorageConfig(t("observe.storage.label.server")); - dataSource = ObserveSwingApplicationContext.get().newDataSource(configuration); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(configuration); break; } @@ -296,7 +295,7 @@ public class StorageUIHandler { } }; } - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); if (mainUI == null) { if (log.isWarnEnabled()) { log.warn("Launch standalone apply action " + action); @@ -314,7 +313,7 @@ public class StorageUIHandler { Runnable action = WizardUILancher.CANCEL_DEF.getContextValue(ui); - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); if (mainUI == null) { if (log.isWarnEnabled()) { log.warn("Launch standalone cancel action " + action); @@ -335,7 +334,7 @@ public class StorageUIHandler { * @param context le context applicatif * @param model le model++ du storage a creer ou utiliser */ - public void doChangeStorage(JAXXContext context, StorageUIModel model) { + public void doChangeStorage(StorageUIModel model) { ObserveSwingApplicationContext observeContext = ObserveSwingApplicationContext.get(); ObserveSwingApplicationConfig config = observeContext.getConfig(); @@ -350,7 +349,7 @@ public class StorageUIHandler { } - ObserveSwingDataSource currentDataSource = observeContext.getDataSource(); + ObserveSwingDataSource currentDataSource = observeContext.getDataSourcesManager().getMainDataSource(); ObserveSwingDataSource localDataSource = null; @@ -368,7 +367,7 @@ public class StorageUIHandler { localConfiguration.setCanMigrate(false); // on charge un storage sur la base locale - localDataSource = ObserveSwingApplicationContext.get().newDataSource(localConfiguration); + localDataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(localConfiguration); localDataSource.open(); } catch (Exception e) { @@ -477,8 +476,8 @@ public class StorageUIHandler { } - observeContext.setDataSource(currentDataSource); - observeContext.prepareMainStorage(currentDataSource); +// observeContext.getDataSourcesManager().setMainDataSource(currentDataSource); + observeContext.prepareMainStorage(currentDataSource, true); if (model.getDbMode() == DbMode.CREATE_LOCAL) { @@ -503,7 +502,7 @@ public class StorageUIHandler { } config.setLocalStorageExist(false); - observeContext.setDataSource(null); + observeContext.getDataSourcesManager().setMainDataSource(null); throw e; @@ -532,7 +531,7 @@ public class StorageUIHandler { " in " + f); } try { - SqlScriptProducerService dumpProducerService = observeContext.newService(SqlScriptProducerService.class); + SqlScriptProducerService dumpProducerService = observeContext.getMainDataSourceServicesProvider().newSqlScriptProducerService(); backupLocalDatabase(dumpProducerService, f); config.setInitialDumpExist(true); } catch (Exception e) { @@ -545,7 +544,7 @@ public class StorageUIHandler { } if (model.isStoreRemoteConfig()) { - storeRemoteConfig(context, model); + storeRemoteConfig(model); } } catch (Exception ex) { @@ -558,11 +557,10 @@ public class StorageUIHandler { * Sauvegarder dans la configuration de l'application le paramétrage de la * source de données distante donnée. * - * @param context le context applicatif * @param model le model de la source de données */ - public void storeRemoteConfig(JAXXContext context, StorageUIModel model) { - ObserveSwingApplicationConfig config = context.getContextValue(ObserveSwingApplicationConfig.class); + public void storeRemoteConfig(StorageUIModel model) { + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); // on sauvegarde dans le parametrage dans la configuration de // l'application @@ -776,11 +774,11 @@ public class StorageUIHandler { case USE_REMOTE: ObserveDataSourceConfigurationTopiaPG pgConfig = model.getPgConfig(); - dataSource = ObserveSwingApplicationContext.get().newDataSource(pgConfig); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(pgConfig); break; case USE_SERVER: ObserveDataSourceConfigurationRest restConfig = model.getRestConfig(); - dataSource = ObserveSwingApplicationContext.get().newDataSource(restConfig); + dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(restConfig); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUILauncher.java index 12584be..7745c8e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUILauncher.java @@ -169,8 +169,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod model.setDbMode(modes.stream().findFirst().get()); } else { - ObserveSwingApplicationConfig config = - rootContext.getContextValue(ObserveSwingApplicationConfig.class); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); Boolean localOpened = config.getMainStorageOpenedLocal(); if (model.isLocalStorageExist() && localOpened != null && localOpened) { if (log.isDebugEnabled()) { @@ -189,7 +188,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod protected void doAction(StorageUI ui) { super.doAction(ui); StorageUIHandler handler = getStorageUIHandler(); - handler.doChangeStorage(rootContext, ui.getModel()); + handler.doChangeStorage(ui.getModel()); } }.start(); @@ -256,7 +255,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod if (mainUI == null) { - mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getMainUI(); } addStorageUIHandler(context); StorageUILauncher launcher = new StorageUILauncher( @@ -333,7 +332,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod final StorageUIModel model) { if (mainUI == null) { - mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getMainUI(); } addStorageUIHandler(context); @@ -430,7 +429,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod final StorageUIModel model) { if (mainUI == null) { - mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getMainUI(); } addStorageUIHandler(context); StorageUILauncher launcher = new StorageUILauncher( diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index 67defd8..27b83ba 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -53,7 +53,6 @@ import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.storage.tabs.SecurityModel; import jaxx.runtime.JAXXContext; -import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.wizard.WizardModel; import jaxx.runtime.swing.wizard.WizardUILancher; import org.apache.commons.io.IOUtils; @@ -71,6 +70,7 @@ import java.net.URL; import java.nio.file.Files; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -229,9 +229,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { /** la configuration pour impoter les données */ protected ObserveDataSourceConfiguration importDataConfig; - /** la configuration de l'application */ - protected ObserveSwingApplicationConfig config; - /** l'action d'administration de base obstuna */ protected ObstunaAdminAction adminAction; @@ -329,17 +326,14 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ public void init(JAXXContext context, ObserveDataSourceConfiguration source) { - config = context.getContextValue(ObserveSwingApplicationConfig.class); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); - JAXXContextEntryDef<StorageUIModel> entryDef = - WizardUILancher.newModelEntry(StorageUIModel.class); - StorageUIModel incomingModel = entryDef.getContextValue(context); + StorageUIModel incomingModel = WizardUILancher.newModelEntry(StorageUIModel.class).getContextValue(context); if (incomingModel != null) { if (log.isDebugEnabled()) { - log.debug("from a incoming model " + - incomingModel.getLabel() + " : " + incomingModel); + log.debug("from a incoming model " + incomingModel.getLabel() + " : " + incomingModel); } // on initialie a partir d'un autre modèle @@ -348,8 +342,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { return; } - StorageUIHandler storageUIHandler = - context.getContextValue(StorageUIHandler.class); + StorageUIHandler storageUIHandler = context.getContextValue(StorageUIHandler.class); // ajout paramétrage depuis la configuration @@ -371,8 +364,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } setStoreRemoteConfig(config.isStoreRemoteStorage()); - setBackupFile(new File(config.getBackupDirectory(), - storageUIHandler.getDefaultBackupFilename())); + setBackupFile(new File(config.getBackupDirectory(), storageUIHandler.getDefaultBackupFilename())); setDumpFile(config.getBackupDirectory()); setShowMigrationProgression(config.isShowMigrationProgression()); setShowMigrationSql(config.isShowMigrationSql()); @@ -463,16 +455,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { ObserveDataSourceConfiguration previousConfig, ObserveDataSourceInformation previousInfo) { - if (previousConfig == null) { - - throw new NullPointerException( - "previousConfig parameter can not be null in method initFromPreviousConfig"); + Objects.requireNonNull(previousConfig, "previousConfig parameter can not be null in method initFromPreviousConfig"); - } - config = context.getContextValue(ObserveSwingApplicationConfig.class); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); - StorageUIHandler storageUIHandler = - context.getContextValue(StorageUIHandler.class); + StorageUIHandler storageUIHandler = context.getContextValue(StorageUIHandler.class); // ajout paramétrage depuis la configuration @@ -489,8 +476,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } setStoreRemoteConfig(config.isStoreRemoteStorage()); - setBackupFile(new File(config.getBackupDirectory(), - storageUIHandler.getDefaultBackupFilename())); + setBackupFile(new File(config.getBackupDirectory(), storageUIHandler.getDefaultBackupFilename())); setDumpFile(config.getBackupDirectory()); setShowMigrationProgression(config.isShowMigrationProgression()); setShowMigrationSql(config.isShowMigrationSql()); @@ -535,9 +521,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ public void initFromModel() { - JAXXContext context = ObserveSwingApplicationContext.get(); - - config = context.getContextValue(ObserveSwingApplicationConfig.class); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); // ajout paramétrage depuis la configuration @@ -1176,7 +1160,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public Version getModelVersion() { - return config == null ? Version.VZERO : config.getModelVersion(); + return ObserveSwingApplicationContext.get().getConfig().getModelVersion(); } public DbMode getDbMode() { @@ -1195,10 +1179,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { return previousDataSourceConfiguration; } - public ObserveSwingApplicationConfig getConfig() { - return config; - } - public void setDbMode(DbMode dbMode) { DbMode oldValue = this.dbMode; this.dbMode = dbMode; @@ -1568,7 +1548,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (CreationMode.IMPORT_EXTERNAL_DUMP.equals(creationMode)) { dumpFile = getDumpFile(); } else { - dumpFile = config.getInitialDbDump(); + dumpFile = ObserveSwingApplicationContext.get().getConfig().getInitialDbDump(); } byte[] dump = Files.readAllBytes(dumpFile.toPath()); @@ -1591,7 +1571,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } if (configSrc != null) { - try (ObserveSwingDataSource source = ObserveSwingApplicationContext.get().newDataSource(configSrc)) { + try (ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(configSrc)) { source.open(); @@ -1737,7 +1717,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (config != null) { - ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().newDataSource(config); + ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(config); try { @@ -1904,7 +1884,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } - try (ObserveSwingDataSource importDataSource = context.createDataSourceH2Temp(dbLabel)) { + try (ObserveSwingDataSource importDataSource = context.createTemporaryH2Storage(dbLabel)) { try { importDataSource.create(createConfigurationDto); @@ -2004,7 +1984,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } - try (ObserveSwingDataSource importDataSource2 = context.createDataSourceH2Temp(dbLabel)) { + try (ObserveSwingDataSource importDataSource2 = context.createTemporaryH2Storage(dbLabel)) { importDataSource = importDataSource2; @@ -2028,7 +2008,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { dataSourceConfig.setCanMigrate(false); - importDataSource = ObserveSwingApplicationContext.get().newDataSource(dataSourceConfig); + importDataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(dataSourceConfig); } break; @@ -2038,7 +2018,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { // import referentiel from a server db ObserveDataSourceConfigurationRest dataSourceConfig = getDataSourceModel().toRestStorageConfig(dbLabel); - importDataSource = ObserveSwingApplicationContext.get().newDataSource(dataSourceConfig); + importDataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(dataSourceConfig); } break; @@ -2066,7 +2046,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public ObserveDataSourceInformation getH2DataSourceInformation() { if (h2DataSourceInformation == null && localStorageExist) { - ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().newDataSource(h2Config); + ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(h2Config); try { h2DataSourceInformation = dataSource.checkCanConnect(); } catch (Exception e) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.jaxx index 5c75214..48ef0ee 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.jaxx @@ -26,6 +26,7 @@ <StorageTabUI> <import> + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.UIHelper fr.ird.observe.ui.storage.StorageStep @@ -37,17 +38,13 @@ <fr.ird.observe.ui.storage.StorageUIModel id='model'/> - <ObserveSwingApplicationConfig id='config' - initializer="getContextValue(ObserveSwingApplicationConfig.class)"/> + <ObserveSwingApplicationConfig id='config' initializer="ObserveSwingApplicationContext.get().getConfig()"/> - <ButtonGroup id='dbMode' - onStateChanged='getModel().setDbMode((DbMode) dbMode.getSelectedValue())'/> + <ButtonGroup id='dbMode' onStateChanged='getModel().setDbMode((DbMode) dbMode.getSelectedValue())'/> - <ButtonGroup id='creationMode' - onStateChanged='getModel().setCreationMode((CreationMode) creationMode.getSelectedValue())'/> + <ButtonGroup id='creationMode' onStateChanged='getModel().setCreationMode((CreationMode) creationMode.getSelectedValue())'/> - <CardLayout2Ext id='creationModeLayout' - constructorParams='this, "creationModeContent"'/> + <CardLayout2Ext id='creationModeLayout' constructorParams='this, "creationModeContent"'/> <script><![CDATA[ @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java index fce5203..77004c4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java @@ -23,7 +23,6 @@ package fr.ird.observe.ui.storage.tabs; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ObserveTextGenerator; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constants.ConnexionStatus; import fr.ird.observe.db.constants.CreationMode; @@ -381,7 +380,7 @@ public class StorageTabUIHandler { protected String updateInternalDumpModeLabel(ChooseDbModeUI ui, boolean dumpExist) { - File f = ui.getContextValue(ObserveSwingApplicationConfig.class).getInitialDbDump(); + File f = ObserveSwingApplicationContext.get().getConfig().getInitialDbDump(); String text; if (f.exists()) { text = t("observe.storage.internalDump.last.modified", new Date(f.lastModified())); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java index e525aaa..a265191 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java @@ -111,7 +111,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); if (source != null) { provider = new ObserveDataProvider(source); setDataProvider(provider); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java index 61ddd09..434a5c6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java @@ -44,7 +44,7 @@ public class ActivityLonglineNode extends DataReferenceNodeSupport<ActivityLongl @Override protected DataReference<ActivityLonglineDto> fetchEntity() { - ActivityLonglineService service = ObserveSwingApplicationContext.get().newService(ActivityLonglineService.class); + ActivityLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLonglineService(); DataReference<ActivityLonglineDto> referenceDto = service.loadReferenceToRead(getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java index ce85749..b1d4d7a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java @@ -44,7 +44,7 @@ public class ActivitySeineNode extends DataReferenceNodeSupport<ActivitySeineDto @Override protected DataReference<ActivitySeineDto> fetchEntity() { - ActivitySeineService service = ObserveSwingApplicationContext.get().newService(ActivitySeineService.class); + ActivitySeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); DataReference<ActivitySeineDto> referenceDto = service.loadReferenceToRead(getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java index c2c3f30..389aabb 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java @@ -486,7 +486,7 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop leadRow = selectionRows[0]; } - int selectionLength = selection.length; + int selectionLength = selectionRows.length; minSelectionRow = -1; maxSelectionRow = 0; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java index 406a1c0..3efaa61 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java @@ -44,7 +44,7 @@ public class FloatingObjectSeineNode extends DataReferenceNodeSupport<FloatingOb @Override protected DataReference<FloatingObjectDto> fetchEntity() { - FloatingObjectService service = ObserveSwingApplicationContext.get().newService(FloatingObjectService.class); + FloatingObjectService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newFloatingObjectService(); DataReference<FloatingObjectDto> referenceDto = service.loadReferenceToRead(getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/NavigationTreeSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/NavigationTreeSelectionModel.java index 1467d5b..28c198e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/NavigationTreeSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/NavigationTreeSelectionModel.java @@ -110,7 +110,7 @@ public class NavigationTreeSelectionModel extends DefaultTreeSelectionModel { } if (canChange && !isSelectionEmpty()) { - canChange = ObserveSwingApplicationContext.get().closeSelectedContentUI(); + canChange = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); } return canChange; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java index fa365b3..5623495 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java @@ -252,7 +252,7 @@ public class ObserveNavigationTreeShowPopupAction { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); DataContext dataContext = applicationContext.getDataContext(); - ContentUI<?> selectedContentUI = applicationContext.getSelectedContentUI(); + ContentUI<?> selectedContentUI = applicationContext.getContentUIManager().getSelectedContentUI(); boolean closeActionEnabled = false; @@ -306,7 +306,7 @@ public class ObserveNavigationTreeShowPopupAction { if (selectedNode.isOpen()) { - closeAction.putClientProperty("ui", applicationContext.getSelectedContentUI()); + closeAction.putClientProperty("ui", applicationContext.getContentUIManager().getSelectedContentUI()); popup.add(closeAction); moveAction.setText(t("observe.navigationMenu.move." + nodeType)); @@ -341,12 +341,12 @@ public class ObserveNavigationTreeShowPopupAction { } else { - openAction.putClientProperty("ui", applicationContext.getSelectedContentUI()); + openAction.putClientProperty("ui", applicationContext.getContentUIManager().getSelectedContentUI()); popup.add(openAction); } - deleteAction.putClientProperty("ui", applicationContext.getSelectedContentUI()); + deleteAction.putClientProperty("ui", applicationContext.getContentUIManager().getSelectedContentUI()); deleteAction.setEnabled(selectedNode.isOpen()); popup.add(deleteAction); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index 97d0aa5..0785b82 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -224,9 +224,8 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { * modèle de naivgation. * * @param source la source de données - * @param mainUI l'ui principale */ - public void loadNavigationUI(ObserveSwingDataSource source, ObserveMainUI mainUI) { + public void loadNavigationUI(ObserveSwingDataSource source) { ObserveNode.count = 0; @@ -238,7 +237,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { createModel(source); // select initial node - selectInitialNode(mainUI); + selectInitialNode(); getUI().setVisible(true); } @@ -277,9 +276,9 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { tree.setVisible(false); } - public void selectOpenNode(JAXXContext ui, Class<?> type) { + public void selectOpenNode(Class<?> type) { - DataContext context = ui.getContextValue(DataContext.class); + DataContext context = ObserveSwingApplicationContext.get().getDataContext(); String[] ids = context.getOpenIds(type); @@ -301,14 +300,13 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { * <b>Note:</b> cette méthode doit être appelée après un rechargement du * modèle de navigation. * - * @param ui l'ui */ - public void selectInitialNode(ObserveMainUI ui) { + public void selectInitialNode() { if (log.isDebugEnabled()) { log.debug("Will select initial node..."); } - DataContext context = ui.getDataContext(); + DataContext context = ObserveSwingApplicationContext.get().getDataContext(); String[] path; @@ -616,7 +614,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { protected ObserveDataProvider getDataProvider() { ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); if (source != null) { provider = new ObserveDataProvider(source); setDataProvider(provider); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java index f6afe07..9aaaf86 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java @@ -50,7 +50,7 @@ public class ProgramLonglineNode extends ReferentialReferenceNodeSupport<Program @Override protected ReferentialReference<ProgramDto> fetchEntity() { - ReferentialService service = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + ReferentialService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newReferentialService(); ReferentialReference<ProgramDto> referenceDto = service.loadReference(ProgramDto.class, getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java index ec51409..94cff73 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java @@ -48,7 +48,7 @@ public class ProgramSeineNode extends ReferentialReferenceNodeSupport<ProgramDto @Override protected ReferentialReference<ProgramDto> fetchEntity() { - ReferentialService service = ObserveSwingApplicationContext.get().newService(ReferentialService.class); + ReferentialService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newReferentialService(); ReferentialReference<ProgramDto> referenceDto = service.loadReference(ProgramDto.class, getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java index f1d3cf7..a82a6cd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java @@ -43,7 +43,7 @@ public class RouteSeineNode extends DataReferenceNodeSupport<RouteDto> { @Override protected DataReference<RouteDto> fetchEntity() { - RouteService routeService = ObserveSwingApplicationContext.get().newService(RouteService.class); + RouteService routeService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); DataReference<RouteDto> referenceDto = routeService.loadReferenceToRead(getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java index 777d6c0..2cdd402 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java @@ -44,7 +44,7 @@ public class SetLonglineNode extends DataReferenceNodeSupport<SetLonglineDto> { @Override protected DataReference<SetLonglineDto> fetchEntity() { - SetLonglineService service = ObserveSwingApplicationContext.get().newService(SetLonglineService.class); + SetLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newSetLonglineService(); DataReference<SetLonglineDto> referenceDto = service.loadReferenceToRead(getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java index e8fa36e..e29da3b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java @@ -44,7 +44,7 @@ public class SetSeineNode extends DataReferenceNodeSupport<SetSeineDto> { @Override protected DataReference<SetSeineDto> fetchEntity() { - SetSeineService service = ObserveSwingApplicationContext.get().newService(SetSeineService.class); + SetSeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newSetSeineService(); DataReference<SetSeineDto> referenceDto = service.loadReferenceToRead(getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java index 48dce95..afafe9f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java @@ -43,7 +43,7 @@ public class TripLonglineNode extends DataReferenceNodeSupport<TripLonglineDto> @Override protected DataReference<TripLonglineDto> fetchEntity() { - TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); DataReference<TripLonglineDto> referenceDto = tripLonglineService.loadReferenceToRead(getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java index 043195d..d7370cd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java @@ -44,7 +44,7 @@ public class TripSeineNode extends DataReferenceNodeSupport<TripSeineDto> { @Override protected DataReference<TripSeineDto> fetchEntity() { - TripSeineService tripSeineService = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + TripSeineService tripSeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); DataReference<TripSeineDto> referenceDto = tripSeineService.loadReferenceToRead(getId()); return referenceDto; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityRouteActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityRouteActionListener.java index a50591c..c003ee8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityRouteActionListener.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityRouteActionListener.java @@ -75,9 +75,7 @@ public class ChangeActivityRouteActionListener extends NodeChangeActionListener protected int moveNodeToParent(String nodeId, String parentNodeId) { int position; - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - - ActivitySeineService service = applicationContext.newService(ActivitySeineService.class); + ActivitySeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); position = service.moveActivitySeineToRoute(nodeId, parentNodeId); return position; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityTripActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityTripActionListener.java index 572ac21..d833c9a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityTripActionListener.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityTripActionListener.java @@ -77,7 +77,7 @@ public class ChangeActivityTripActionListener extends NodeChangeActionListener { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ActivityLonglineService service = applicationContext.newService(ActivityLonglineService.class); + ActivityLonglineService service = applicationContext.getMainDataSourceServicesProvider().newActivityLonglineService(); position = service.moveActivityLonglineToTripLongline(nodeId, parentNodeId); return position; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeRouteTripActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeRouteTripActionListener.java index 67b6742..6175f0b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeRouteTripActionListener.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeRouteTripActionListener.java @@ -75,9 +75,7 @@ public class ChangeRouteTripActionListener extends NodeChangeActionListener { protected int moveNodeToParent(String nodeId, String parentNodeId) { int position; - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - - RouteService service = applicationContext.newService(RouteService.class); + RouteService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); position = service.moveRouteToTripSeine(nodeId, parentNodeId); return position; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java index 2b57c35..7ac18c2 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java @@ -25,6 +25,7 @@ package fr.ird.observe.ui.tree.actions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.ObserveServicesProvider; import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.service.longline.TripLonglineService; import fr.ird.observe.services.service.seine.TripSeineService; @@ -71,14 +72,13 @@ public class ChangeTripProgramActionListener extends NodeChangeActionListener { protected int moveNodeToParent(String nodeId, String parentNodeId) { int position; - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - + ObserveServicesProvider servicesProvider = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider(); if (IdDtos.isTripLonglineId(nodeId)) { - TripLonglineService service = applicationContext.newService(TripLonglineService.class); + TripLonglineService service = servicesProvider.newTripLonglineService(); position = service.moveTripLonglineToProgram(nodeId, parentNodeId); } else { - TripSeineService service = applicationContext.newService(TripSeineService.class); + TripSeineService service = servicesProvider.newTripSeineService(); position = service.moveTripSeineToProgram(nodeId, parentNodeId); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java index d2a6d37..ee93203 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java @@ -53,7 +53,7 @@ public class ActivityLonglinesNodeChildLoador extends AbstractDataReferenceChild String parentId, NavDataProvider dataProvider) throws Exception { - ActivityLonglineService activityLonglineService = ObserveSwingApplicationContext.get().newService(ActivityLonglineService.class); + ActivityLonglineService activityLonglineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLonglineService(); DataReferenceSet<ActivityLonglineDto> activityLonglineByTripLongline = activityLonglineService.getActivityLonglineByTripLongline(parentId); return new ArrayList<>(activityLonglineByTripLongline.getReferences()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java index 171e171..e97e964 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java @@ -117,7 +117,7 @@ public class ActivitySeineNodeChildLoador extends AbstractDataReferenceChildLoad String parentId, NavDataProvider dataProvider) throws Exception { - FloatingObjectService service = ObserveSwingApplicationContext.get().newService(FloatingObjectService.class); + FloatingObjectService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newFloatingObjectService(); DataReferenceSet<FloatingObjectDto> floatingObjectByActivitySeine = service.getFloatingObjectByActivitySeine(parentId); return new ArrayList<>(floatingObjectByActivitySeine.getReferences()); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java index d741961..4c0f312 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java @@ -52,7 +52,7 @@ public class ActivitySeinesNodeChildLoador extends AbstractDataReferenceChildLoa String parentId, NavDataProvider dataProvider) throws Exception { - ActivitySeineService activitySeineService = ObserveSwingApplicationContext.get().newService(ActivitySeineService.class); + ActivitySeineService activitySeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); DataReferenceSet<ActivitySeineDto> activitySeineStubByRoute = activitySeineService.getActivitySeineByRoute(parentId); return new ArrayList<>(activitySeineStubByRoute.getReferences()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java index b786b43..e1ce20d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java @@ -92,7 +92,7 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Data } else { - TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().newService(TripLonglineService.class); + TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); DataReferenceSet<TripLonglineDto> tripLonglineByProgram = tripLonglineService.getTripLonglineByProgram(parentId); result = Lists.newArrayList(tripLonglineByProgram.getReferences()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java index 5dc088f..0add142 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java @@ -90,7 +90,7 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<DataRef } else { - TripSeineService tripSeineService = ObserveSwingApplicationContext.get().newService(TripSeineService.class); + TripSeineService tripSeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); DataReferenceSet<TripSeineDto> tripSeineByProgram = tripSeineService.getTripSeineByProgram(parentId); result = new ArrayList<>(tripSeineByProgram.getReferences()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java index a7e7da1..f74a502 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java @@ -59,7 +59,7 @@ public class RoutesNodeChildLoador extends AbstractDataReferenceChildLoador<Rout String parentId, NavDataProvider dataProvider) throws Exception { - RouteService routeService = ObserveSwingApplicationContext.get().newService(RouteService.class); + RouteService routeService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); DataReferenceSet<RouteDto> routeByTripSeine = routeService.getRouteByTripSeine(parentId); return new ArrayList<>(routeByTripSeine.getReferences()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java index 73e0b8f..391971e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java @@ -110,7 +110,7 @@ public class TripMapUIHandler { try { ((CardLayout) view.getLayout()).first(view); - ObserveSwingApplicationContext.get().getObserveMainUI().setBusy(true); + ObserveSwingApplicationContext.get().getMainUI().setBusy(true); ObserveMapPane mapPane = getObserveMapPane(); @@ -155,7 +155,7 @@ public class TripMapUIHandler { } catch (Exception e) { throw new ObserveSwingTechnicalException("Unable to load trip map activity points", e); } finally { - ObserveSwingApplicationContext.get().getObserveMainUI().setBusy(false); + ObserveSwingApplicationContext.get().getMainUI().setBusy(false); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/ObserveSwingValidator.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/ObserveSwingValidator.java index 564cddb..3693948 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/ObserveSwingValidator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/ObserveSwingValidator.java @@ -53,8 +53,8 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { private static ValidationContext validationContext; public static <B> ObserveSwingValidator<B> newValidator(Class<B> type, - String context, - NuitonValidatorScope... scopes) { + String context, + NuitonValidatorScope... scopes) { return new ObserveSwingValidator<>( type, context, @@ -63,9 +63,9 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { } public static <B> ObserveSwingValidator<B> newValidator(NuitonValidatorProvider provider, - Class<B> type, - String context, - NuitonValidatorScope... scopes) { + Class<B> type, + String context, + NuitonValidatorScope... scopes) { return new ObserveSwingValidator<>( provider, type, @@ -113,26 +113,26 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { if (rootContext == null) { throw new IllegalStateException( "pas de context d'application enregistré... utiliser la " + - "methode " + + "methode " + //FIXME // DataSourceFactory.class.getName() + - "#setApplicationContext(context)"); + "#setApplicationContext(context)"); } dataContext = rootContext.getValidationContext(); } reloadDataContext(dataContext, true); - // on brand pour ne jamais revenir ici + // on marque pour ne jamais revenir ici setInit(true); } - public static void reloadDataContext(ValidationContext dataContext, - boolean strict) { - if (dataContext != validationContext) { + public static void reloadDataContext(ValidationContext validationContext, boolean strict) { + if (validationContext != ObserveSwingValidator.validationContext) { // keep this validation context - setValidationContext(dataContext); + ObserveSwingValidator.validationContext = validationContext; + setInit(false); } ValueStack valueStack; ActionContext context = ActionContext.getContext(); @@ -141,7 +141,7 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { if (strict) { throw new IllegalStateException( "pas de context xworks enregistré... utiliser la methode " + - ActionContext.class.getName() + "#setContext(context)"); + ActionContext.class.getName() + "#setContext(context)"); } valueStack = XWork2ValidatorUtil.getSharedValueStack(); @@ -153,24 +153,20 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { } if (log.isDebugEnabled()) { - log.debug("Enregistrement du context de validation [" + dataContext + "] dans la valueStack de " + - "validation (" + valueStack + ')'); + log.debug("Enregistrement du context de validation [" + validationContext + "] dans la valueStack de " + + "validation (" + valueStack + ')'); } - valueStack.push(dataContext); + valueStack.push(validationContext); } public static ValidationContext getValidationContext() { + if (validationContext == null) { + validationContext = ObserveSwingApplicationContext.get().getValidationContext(); + } return validationContext; } - public static void setValidationContext(ValidationContext validationContext) { - ObserveSwingValidator.validationContext = validationContext; - // a chaque fois qu'on change le contexte de validation - // il faudra reinitiliser la stack - setInit(false); - } - private static boolean isInit() { return init; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java index d794766..61f176f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java @@ -155,7 +155,7 @@ public class ValidationContext { } }; - protected DataContext dataContext; + protected final DataContext dataContext; protected Map<String, Object> cache; @@ -173,14 +173,8 @@ public class ValidationContext { referentielList = null; } - public void close() { - dataContext = null; - } - - @Override - protected void finalize() throws Throwable { - super.finalize(); - close(); + public ValidationContext(DataContext dataContext) { + this.dataContext = dataContext; } public DecoratorService getDecoratorService() { @@ -195,14 +189,6 @@ public class ValidationContext { return dataContext; } - public void setDataContext(DataContext dataContext) { - if (log.isInfoEnabled()) { - log.info("Attach data context " + dataContext); - } - this.dataContext = dataContext; - ObserveSwingValidator.reloadDataContext(this, false); - } - public TripSeineDto getCurrentTripSeine() { String tripSeineId = dataContext.getSelectedTripSeineId(); TripSeineDto result = null; @@ -320,7 +306,7 @@ public class ValidationContext { protected static abstract class DtoSupplier<D extends IdDto> { public final D get(String id) { - ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); D dto = get(dataSource, id); return dto; } -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit ce3b308c4d20e17958964700ffe1f25f308ba127 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:52:13 2016 +0200 Improve tasks renderer --- .../src/main/filters/observe-ui.properties | 2 ++ .../admin/datasynchro/CopyToLeftDataSynchronizeTask.java | 2 +- .../admin/datasynchro/CopyToRightDataSynchronizeTask.java | 2 +- .../datasynchro/DataSynchronizeTaskListCellRenderer.java | 4 +++- .../ui/admin/datasynchro/DataSynchronizeTaskSupport.java | 11 ++++++++++- .../datasynchro/DeleteFromLeftDataSynchronizeTask.java | 2 +- .../datasynchro/DeleteFromRightDataSynchronizeTask.java | 2 +- .../src/main/resources/icons/action-deleteFromLeft.png | Bin 0 -> 783 bytes .../src/main/resources/icons/action-deleteFromRight.png | Bin 0 -> 783 bytes 9 files changed, 19 insertions(+), 6 deletions(-) diff --git a/observe-application-swing/src/main/filters/observe-ui.properties b/observe-application-swing/src/main/filters/observe-ui.properties index 80408dd..ce7bbde 100644 --- a/observe-application-swing/src/main/filters/observe-ui.properties +++ b/observe-application-swing/src/main/filters/observe-ui.properties @@ -111,6 +111,8 @@ icon.action.db-reload=action-db-reload.png icon.action.db-start-server=action-db-start-server.png icon.action.db-stop-server=action-db-stop-server.png icon.action.delete=action-delete.png +icon.action.deleteFromLeft=action-deleteFromLeft.png +icon.action.deleteFromRight=action-deleteFromRight.png icon.action.exit=action-exit.png icon.action.error=error.png icon.action.fileChooser=action-fileChooser.png diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java index 15cf796..b3478ad 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToLeftDataSynchronizeTask.java @@ -17,7 +17,7 @@ public class CopyToLeftDataSynchronizeTask extends DataSynchronizeTaskSupport { private final boolean tripExistOnLeft; public CopyToLeftDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference, boolean tripExistOnLeft) { - super(programReference, tripReference); + super(programReference, tripReference, "copyToLeft"); this.tripExistOnLeft=tripExistOnLeft; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java index ecb6420..46a9067 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/CopyToRightDataSynchronizeTask.java @@ -17,7 +17,7 @@ public class CopyToRightDataSynchronizeTask extends DataSynchronizeTaskSupport { private final boolean tripExistOnRight; public CopyToRightDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference, boolean tripExistOnRight) { - super(programReference, tripReference); + super(programReference, tripReference, "copyToRight"); this.tripExistOnRight = tripExistOnRight; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java index ca9fc28..14e77c9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskListCellRenderer.java @@ -18,7 +18,9 @@ public class DataSynchronizeTaskListCellRenderer extends DefaultListCellRenderer public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { DataSynchronizeTaskSupport task = (DataSynchronizeTaskSupport) value; - return super.getListCellRendererComponent(list, task.getLabel(), index, isSelected, cellHasFocus); + super.getListCellRendererComponent(list, task.getLabel(), index, isSelected, cellHasFocus); + setIcon(task.getIcon()); + return this; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java index b60565f..8fda9d5 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchronizeTaskSupport.java @@ -5,6 +5,9 @@ import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; +import jaxx.runtime.SwingUtil; + +import javax.swing.Icon; /** * Created on 03/08/16. @@ -16,6 +19,7 @@ public abstract class DataSynchronizeTaskSupport { private final ReferentialReference<ProgramDto> program; private final DataReference trip; + private final Icon icon; public abstract String getLabel(); @@ -27,9 +31,14 @@ public abstract class DataSynchronizeTaskSupport { return trip; } - protected DataSynchronizeTaskSupport(ReferentialReference<ProgramDto> program, DataReference trip) { + public Icon getIcon() { + return icon; + } + + protected DataSynchronizeTaskSupport(ReferentialReference<ProgramDto> program, DataReference trip, String iconName) { this.program = program; this.trip = trip; + this.icon = SwingUtil.createActionIcon(iconName); } protected String decorateProgram() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java index d6705fb..02a4b50 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromLeftDataSynchronizeTask.java @@ -15,7 +15,7 @@ import static org.nuiton.i18n.I18n.t; public class DeleteFromLeftDataSynchronizeTask extends DataSynchronizeTaskSupport { public DeleteFromLeftDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { - super(programReference, tripReference); + super(programReference, tripReference, "deleteFromLeft"); } @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java index b891c9a..214ff4e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DeleteFromRightDataSynchronizeTask.java @@ -15,7 +15,7 @@ import static org.nuiton.i18n.I18n.t; public class DeleteFromRightDataSynchronizeTask extends DataSynchronizeTaskSupport { public DeleteFromRightDataSynchronizeTask(ReferentialReference<ProgramDto> programReference, DataReference tripReference) { - super(programReference, tripReference); + super(programReference, tripReference, "deleteFromRight"); } @Override diff --git a/observe-application-swing/src/main/resources/icons/action-deleteFromLeft.png b/observe-application-swing/src/main/resources/icons/action-deleteFromLeft.png new file mode 100644 index 0000000..184f762 Binary files /dev/null and b/observe-application-swing/src/main/resources/icons/action-deleteFromLeft.png differ diff --git a/observe-application-swing/src/main/resources/icons/action-deleteFromRight.png b/observe-application-swing/src/main/resources/icons/action-deleteFromRight.png new file mode 100644 index 0000000..184f762 Binary files /dev/null and b/observe-application-swing/src/main/resources/icons/action-deleteFromRight.png differ -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 0aa66abdad6ff3052c1648b6ac1479c237e90e89 Merge: c3f6abd ce3b308 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:53:18 2016 +0200 Fixes #4304 \o/ Merge branch 'feature/4304_synchro_marees' into develop .../swing/decoration/DecoratorService.java | 10 + .../src/main/filters/observe-ui.properties | 4 + .../java/fr/ird/observe/ObserveActionExecutor.java | 20 +- .../main/java/fr/ird/observe/ObserveCLAction.java | 23 +- .../fr/ird/observe/ObserveOpenDataManager.java | 65 ++ .../main/java/fr/ird/observe/ObserveRunner.java | 91 +- .../observe/ObserveSwingApplicationContext.java | 999 ++++++++------------- .../ObserveSwingApplicationDataSourcesManager.java | 108 +++ .../fr/ird/observe/db/ObserveSwingDataSource.java | 276 +++++- .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 18 +- .../main/java/fr/ird/observe/ui/ObserveMainUI.jcss | 4 + .../fr/ird/observe/ui/ObserveMainUIHandler.java | 66 +- .../java/fr/ird/observe/ui/ObserveUICallback.java | 7 +- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 12 +- .../actions/ChangeApplicationLanguageAction.java | 2 +- .../observe/ui/actions/ChangeDbLanguageAction.java | 2 +- .../observe/ui/actions/ChangeStorageAction.java | 2 +- .../observe/ui/actions/CloseApplicationAction.java | 2 +- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 2 +- .../ird/observe/ui/actions/CloseStorageAction.java | 4 +- .../ui/actions/ImportStorageFromFileAction.java | 4 +- .../ird/observe/ui/actions/LaunchAdminAction.java | 2 +- .../ui/actions/ReloadApplicationAction.java | 2 +- .../actions/ReloadDefaultConfigurationAction.java | 2 +- .../observe/ui/actions/ReloadResourcesAction.java | 5 +- .../observe/ui/actions/ReloadStorageAction.java | 6 +- .../ui/actions/SaveStorageToFileAction.java | 4 +- .../ird/observe/ui/actions/ShowConfigAction.java | 4 +- .../observe/ui/actions/ShowStorageInfoAction.java | 2 +- .../ui/actions/shared/CloseAndCreateUIAction.java | 8 +- .../ui/actions/shared/CloseOpenUIAction.java | 8 +- .../shared/MoveActivityLonglinesUIAction.java | 2 +- .../actions/shared/MoveActivitySeinesUIAction.java | 2 +- .../ui/actions/shared/MoveRoutesUIAction.java | 2 +- .../actions/shared/MoveTripLonglinesUIAction.java | 2 +- .../ui/actions/shared/MoveTripSeinesUIAction.java | 2 +- .../observe/ui/actions/shared/ReOpenUIAction.java | 2 +- .../ui/actions/shared/SelectOpenNodeUIAction.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminStep.java | 21 + .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 15 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 57 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 6 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 149 ++- .../ui/admin/consolidate/ConsolidateUIHandler.java | 2 +- .../datasynchro/CopyToLeftDataSynchronizeTask.java | 33 + .../CopyToRightDataSynchronizeTask.java | 33 + .../ui/admin/datasynchro/DataSynchroModel.java | 118 +++ .../ui/admin/datasynchro/DataSynchroUI.jaxx | 129 +++ .../ui/admin/datasynchro/DataSynchroUI.jcss | 114 +++ .../ui/admin/datasynchro/DataSynchroUIHandler.java | 300 +++++++ .../DataSynchronizeTaskListCellRenderer.java | 27 + .../datasynchro/DataSynchronizeTaskSupport.java | 56 ++ .../DeleteFromLeftDataSynchronizeTask.java | 25 + .../DeleteFromRightDataSynchronizeTask.java | 25 + .../observe/ui/admin/export/ExportUIHandler.java | 4 +- .../observe/ui/admin/report/ReportUIHandler.java | 4 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 6 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 11 +- .../ird/observe/ui/content/ContentUIHandler.java | 2 +- .../ird/observe/ui/content/ContentUIManager.java | 77 +- .../impl/longline/LonglineDetailCompositionUI.jaxx | 2 +- .../LonglineDetailCompositionUIHandler.java | 12 +- ...onglineDetailCompositionUIValidationHelper.java | 233 ----- ...LonglineDetailCompositionValidationContext.java | 116 +++ .../LonglineDetailCompositionValidatorService.java | 155 ++++ .../impl/longline/LonglineGlobalCompositionUI.jaxx | 8 +- .../LonglineGlobalCompositionUIHandler.java | 3 +- .../impl/longline/SetLonglineUIHandler.java | 2 +- .../ActivitySeineObservedSystemUIHandler.java | 2 +- ...ngObjectTransmittingBuoyOperationUIHandler.java | 2 +- .../impl/seine/FloatingObjectUIHandler.java | 2 +- .../ui/content/impl/seine/SetSeineUIHandler.java | 4 +- .../impl/longline/ActivityLonglinesUIHandler.java | 2 +- .../list/impl/longline/TripLonglinesUIHandler.java | 2 +- .../list/impl/seine/ActivitySeinesUIHandler.java | 2 +- .../content/list/impl/seine/RoutesUIHandler.java | 2 +- .../list/impl/seine/TripSeinesUIHandler.java | 2 +- .../impl/longline/ActivityLonglineUIHandler.java | 2 +- .../open/impl/longline/TripLonglineUIHandler.java | 4 +- .../open/impl/seine/ActivitySeineUIHandler.java | 2 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 4 +- .../open/impl/seine/TripSeineUIHandler.java | 4 +- .../ui/content/ref/ContentReferenceUIHandler.java | 2 +- .../ui/content/table/ContentTableUIHandler.java | 4 +- .../impl/longline/CatchLonglineUIHandler.java | 10 +- .../table/impl/longline/EncounterUIHandler.java | 4 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 6 +- .../table/impl/longline/SensorUsedUIHandler.java | 4 +- .../content/table/impl/longline/TdrUIHandler.java | 6 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 6 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 4 +- .../table/impl/seine/NonTargetSampleUIHandler.java | 2 +- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 4 +- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 4 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 4 +- .../table/impl/seine/TargetCatchUIHandler.java | 4 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 4 +- .../table/impl/seine/TargetSampleUIHandler.java | 2 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 16 +- .../ui/storage/StorageBackupUILauncher.java | 4 +- .../ird/observe/ui/storage/StorageUIHandler.java | 48 +- .../ird/observe/ui/storage/StorageUILauncher.java | 11 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 70 +- .../observe/ui/storage/tabs/ChooseDbModeUI.jaxx | 13 +- .../ui/storage/tabs/DataSelectionModel.java | 42 +- .../ui/storage/tabs/StorageTabUIHandler.java | 3 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 2 +- .../ird/observe/ui/tree/ActivityLonglineNode.java | 2 +- .../fr/ird/observe/ui/tree/ActivitySeineNode.java | 2 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 2 +- .../observe/ui/tree/FloatingObjectSeineNode.java | 2 +- .../ui/tree/NavigationTreeSelectionModel.java | 2 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 8 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 87 +- .../ird/observe/ui/tree/ProgramLonglineNode.java | 2 +- .../fr/ird/observe/ui/tree/ProgramSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/RouteSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/SetLonglineNode.java | 2 +- .../java/fr/ird/observe/ui/tree/SetSeineNode.java | 2 +- .../fr/ird/observe/ui/tree/TripLonglineNode.java | 2 +- .../java/fr/ird/observe/ui/tree/TripSeineNode.java | 2 +- .../actions/ChangeActivityRouteActionListener.java | 4 +- .../actions/ChangeActivityTripActionListener.java | 2 +- .../actions/ChangeRouteTripActionListener.java | 4 +- .../actions/ChangeTripProgramActionListener.java | 8 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 2 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 2 +- .../loadors/ActivitySeinesNodeChildLoador.java | 2 +- .../loadors/ProgramLonglineNodeChildLoador.java | 9 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 10 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 2 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 4 +- .../observe/validation/ObserveSwingValidator.java | 42 +- .../ird/observe/validation/ValidationContext.java | 40 +- .../observe-application-swing_en_GB.properties | 28 + .../observe-application-swing_es_ES.properties | 28 + .../observe-application-swing_fr_FR.properties | 27 + .../src/main/resources/icons/action-copyToLeft.png | Bin 0 -> 345 bytes .../main/resources/icons/action-copyToRight.png | Bin 0 -> 349 bytes .../main/resources/icons/action-deleteFromLeft.png | Bin 0 -> 783 bytes .../resources/icons/action-deleteFromRight.png | Bin 0 -> 783 bytes ...glineDetailCompositionValidatorServiceTest.java | 107 +-- .../v1/SqlScriptProducerServiceController.java | 11 +- .../DataSynchronizeServiceController.java | 32 + ...er.java => ReplicateTripServiceController.java} | 4 +- .../injector/SqlScriptProducerRequestInjector.java | 12 +- .../maven/plugins/checkapi/CheckApiMojo.java | 29 +- .../plugins/checkapi/MissingClassException.java | 21 + .../java/fr/ird/observe/RunScriptTopiaSqlWork.java | 8 + .../observe/services/ObserveServicesProvider.java | 124 +++ ...quest.java => AddSqlScriptProducerRequest.java} | 20 +- ...st.java => DeleteSqlScriptProducerRequest.java} | 50 +- .../services/service/SqlScriptProducerService.java | 4 +- .../datasynchro/DataSynchronizeCopyTask.java | 27 + .../datasynchro/DataSynchronizeDeleteTask.java | 27 + .../datasynchro/DataSynchronizeRequest.java | 101 +++ .../datasynchro/DataSynchronizeService.java | 52 ++ .../datasynchro/DataSyncrhonizeTaskSupport.java | 26 + .../actions/validate/ValidateServiceUtils.java | 10 +- .../validate/ValidatorInitializationException.java | 14 + .../services/service/DataSourceServiceTopia.java | 22 +- .../service/SqlScriptProducerServiceTopia.java | 84 +- .../datasynchro/DataSynchronizeServiceTopia.java | 115 +++ .../actions/export/ReplicateTripServiceTopia.java | 6 +- ...a => AddSqlScriptProducerServiceTopiaTest.java} | 22 +- .../services/service/MigrateTestsDatabases.java | 24 +- .../sql/batch/actions/AbstractTablesAction.java | 5 +- .../sql/batch/actions/DeleteTablesAction.java | 13 +- .../sql/batch/actions/ReplicateTablesAction.java | 6 + .../sql/batch/actions/UpdateTablesAction.java | 5 + .../service/sql/batch/tables/TopiaSqlTables.java | 11 + 172 files changed, 3489 insertions(+), 1676 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm