branch develop updated (a5ba588 -> 4ce182d)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository observe. See http://git.codelutin.com/observe.git from a5ba588 Migration des Editeurs (termine #7530) Merge branch 'feature/7530' into develop new ea09607 lancement de l'application + connexion aux bases H2 et PG (refs #7528 #7529) new 93fd18f utilisation de la classe ObserveSwingDataSource pour gérer les connection au source de données, (refs #7529) new fdde99f commexion au serveur de données (refs #7529) new dc60289 ignorer un test et mise à jour des dépendences (refs #7529) new 733fcf2 creation d'un base local (refs #7529) new 726eaba chargement de la base de données local au démarage (refs #7528) new 9076109 Fix merge new 5abc310 Renommage getModle en getModel new 4ce182d Démarage de client swing (termine #7328) estion des data source dans l'application swing (termine #7529) Merge branch 'feature/7528' into develop The 9 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 4ce182de736e5a36450733b6c73fa8d44476ee8b Merge: a5ba588 5abc310 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Sep 24 19:08:16 2015 +0200 Démarage de client swing (termine #7328) estion des data source dans l'application swing (termine #7529) Merge branch 'feature/7528' into develop commit 5abc310859d024220d71073f00f5597f819b79a6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Sep 24 19:07:53 2015 +0200 Renommage getModle en getModel commit 9076109ed64da2e89d50d25fd3b4739558e26c38 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Sep 24 19:06:15 2015 +0200 Fix merge commit 726eaba6cd46434d131daa36fd081884ef24a374 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Sep 24 09:46:29 2015 +0200 chargement de la base de données local au démarage (refs #7528) commit 733fcf27ac8f520ed11b51934bbdeefd62e98ae6 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 17:59:04 2015 +0200 creation d'un base local (refs #7529) commit dc602893c5d418d0cf383bca0cff4f35c594c425 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 09:19:03 2015 +0200 ignorer un test et mise à jour des dépendences (refs #7529) commit fdde99f88ce4675093e402b44a50818e6193a7d1 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 08:42:39 2015 +0200 commexion au serveur de données (refs #7529) commit 93fd18f76d2323d59e5d16d63690ee8e1033b9d2 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 22 08:42:10 2015 +0200 utilisation de la classe ObserveSwingDataSource pour gérer les connection au source de données, (refs #7529) commit ea0960779ae18ecd66658c27400148a784c69239 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Sep 18 15:28:11 2015 +0200 lancement de l'application + connexion aux bases H2 et PG (refs #7528 #7529) Summary of changes: observe-application-swing/pom.xml | 11 + .../src/main/filters/observe-ui.properties | 1 + .../java/fr/ird/observe/ObserveActionExecutor.java | 22 +- .../main/java/fr/ird/observe/ObserveCLAction.java | 30 +- .../main/java/fr/ird/observe/ObserveConfig.java | 1004 ----- .../main/java/fr/ird/observe/ObserveContext.java | 594 --- .../fr/ird/observe/ObserveResourceManager.java | 20 +- .../main/java/fr/ird/observe/ObserveRunner.java | 74 +- .../{business => }/ObserveServiceHelper.java | 63 +- .../observe/ObserveSwingApplicationContext.java | 764 ++++ .../fr/ird/observe/business/IObserveConfig.java | 4 +- .../business/ObserveApplicationContext.java | 9 +- .../ird/observe/business/db/DataSourceConfig.java | 2 +- .../ird/observe/business/db/DataSourceFactory.java | 2 +- .../db/constants/CommonDataSourceConfigParam.java | 1 + .../business/report/model/ReportExecute.java | 15 +- .../business/validation/ObserveValidator.java | 6 +- .../validation/ValidationMessageDetector.java | 2 +- .../ObserveApplicationConfigProvider.java | 7 +- .../ObserveSwingApplicationConfig.java | 1152 +++++ .../ObserveSwingApplicationConfigOption.java} | 217 +- .../ObserveSwingApplicationConfigProvider.java | 37 + .../fr/ird/observe/db/ObserveSwingDataSource.java | 304 ++ .../constantes}/ConnexionStatus.java | 2 +- .../constants => db/constantes}/CreationMode.java | 28 +- .../db/constants => db/constantes}/DbMode.java | 7 +- .../db/event/ObserveSwingDataSourceEvent.java | 18 +- .../db/event/ObserveSwingDataSourceListener.java | 22 +- .../ObserveSwingDataSourceListenerAdapter.java | 14 +- .../src/main/java/fr/ird/observe/package.html | 2 +- .../main/java/fr/ird/observe/ui/ObserveMainUI.css | 1 + .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 4 +- .../fr/ird/observe/ui/ObserveMainUIHandler.java | 51 +- .../java/fr/ird/observe/ui/ObserveUICallback.java | 12 +- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 18 +- .../actions/ChangeApplicationLanguageAction.java | 12 +- .../observe/ui/actions/ChangeDbLanguageAction.java | 12 +- .../observe/ui/actions/ChangeStorageAction.java | 6 +- .../observe/ui/actions/CloseApplicationAction.java | 6 +- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 10 +- .../ird/observe/ui/actions/CloseStorageAction.java | 21 +- .../fr/ird/observe/ui/actions/GotoSiteAction.java | 8 +- .../ui/actions/ImportStorageFromFileAction.java | 9 +- .../ird/observe/ui/actions/LaunchAdminAction.java | 4 +- .../ui/actions/ReloadApplicationAction.java | 8 +- .../actions/ReloadDefaultConfigurationAction.java | 12 +- .../observe/ui/actions/ReloadResourcesAction.java | 8 +- .../observe/ui/actions/ReloadStorageAction.java | 92 +- .../ui/actions/SaveStorageToFileAction.java | 32 +- .../ird/observe/ui/actions/ShowConfigAction.java | 128 +- .../observe/ui/actions/ShowStorageInfoAction.java | 4 +- .../observe/ui/actions/StartServerModeAction.java | 7 +- .../ui/actions/shared/CloseAndCreateUIAction.java | 6 +- .../ui/actions/shared/CloseOpenUIAction.java | 6 +- .../observe/ui/actions/shared/ReOpenUIAction.java | 5 +- .../java/fr/ird/observe/ui/admin/AdminStep.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 6 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 33 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 28 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 107 +- .../observe/ui/admin/config/ConfigUIHandler.java | 2 - .../ui/admin/consolidate/ConsolidateModel.java | 8 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 8 +- .../ird/observe/ui/admin/export/ExportModel.java | 14 +- .../observe/ui/admin/export/ExportUIHandler.java | 12 +- .../ui/admin/gps/GPSActivityTableModel.java | 4 +- .../observe/ui/admin/gps/ImportGPSConfigUI.jaxx | 6 +- .../observe/ui/admin/gps/ImportGPSUIHandler.java | 5 +- .../observe/ui/admin/report/ReportUIHandler.java | 21 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 28 +- .../ObsoleteEntityListCellRenderer.java | 4 +- .../ui/admin/synchronize/SynchronizeModel.java | 20 +- .../ui/admin/synchronize/SynchronizeUIHandler.java | 17 +- .../ui/admin/validate/ValidateConfigUI.jaxx | 6 +- .../validate/ValidateEntityListCellRenderer.java | 4 +- .../observe/ui/admin/validate/ValidateModel.java | 6 +- .../ui/admin/validate/ValidateUIHandler.java | 11 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 15 +- .../ird/observe/ui/content/ContentUIHandler.java | 143 +- .../observe/ui/content/ContentUIInitializer.java | 215 +- .../content/impl/longline/BranchlineUIHandler.java | 15 +- .../impl/longline/LonglineDetailCompositionUI.jaxx | 4 +- .../LonglineDetailCompositionUIHandler.java | 28 +- .../impl/longline/LonglineGlobalCompositionUI.jaxx | 14 +- .../LonglineGlobalCompositionUIHandler.java | 10 - .../impl/longline/SetLonglineUIHandler.java | 11 - .../ActivitySeineObservedSystemUIHandler.java | 11 - ...ngObjectTransmittingBuoyOperationUIHandler.java | 16 +- .../impl/seine/FloatingObjectUIHandler.java | 11 - .../ui/content/impl/seine/SetSeineUIHandler.java | 11 - .../ui/content/list/ContentListUIHandler.java | 23 +- .../ui/content/open/ContentOpenableUIHandler.java | 10 - .../open/impl/longline/TripLonglineUIHandler.java | 5 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 10 +- .../open/impl/seine/TripSeineUIHandler.java | 4 +- .../ui/content/ref/ContentReferenceUIHandler.java | 58 +- .../ui/content/ref/ReferenceHomeUIHandler.java | 11 - .../ui/content/ref/UniqueKeyTableModel.java | 4 +- .../ui/content/table/ContentTableUIHandler.java | 25 +- .../impl/longline/CatchLonglineUIHandler.java | 21 +- .../table/impl/longline/EncounterUIHandler.java | 6 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 12 +- .../table/impl/longline/SensorUsedUIHandler.java | 9 +- .../content/table/impl/longline/TdrUIHandler.java | 16 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 12 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 18 +- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 19 +- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 6 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 10 +- .../table/impl/seine/TargetCatchUIHandler.java | 2 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 2 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 2 +- .../ird/observe/ui/storage/RemoteUILauncher.java | 3 +- .../ui/storage/StorageBackupUILauncher.java | 68 +- .../ird/observe/ui/storage/StorageUIHandler.java | 893 ++-- .../ird/observe/ui/storage/StorageUILauncher.java | 52 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 1213 +++--- .../ird/observe/ui/storage/tabs/ChooseDbModeUI.css | 13 + .../observe/ui/storage/tabs/ChooseDbModeUI.jaxx | 14 +- .../ird/observe/ui/storage/tabs/ConfigDataUI.jaxx | 2 +- .../ui/storage/tabs/ConfigReferentielUI.jaxx | 2 +- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 26 + .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 46 +- .../ui/storage/tabs}/DataSelectionModel.java | 255 +- .../ird/observe/ui/storage/tabs/SelectDataUI.jaxx | 4 +- .../ui/storage/tabs/StorageTabUIHandler.java | 67 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 23 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 95 +- .../ui/tree/NavigationTreeSelectionModel.java | 4 +- .../ird/observe/ui/tree/ObserveDataProvider.java | 10 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 14 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 27 +- .../ui/tree/loadors/AbstractNodeChildLoador.java | 6 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 4 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 4 +- .../loadors/ActivitySeinesNodeChildLoador.java | 4 +- .../loadors/ProgramLonglineNodeChildLoador.java | 4 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 4 +- .../ui/tree/loadors/RootNodeChildLoador.java | 4 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 4 +- .../java/fr/ird/observe/ui/usage/UsagesUI.jaxx | 6 +- .../fr/ird/observe/ui/usage/UsagesUIHandler.java | 4 +- ...ObserveSimpleValidatorMessageTableRenderer.java | 4 +- .../util/ObserveValidatorMessageTableRenderer.java | 4 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 12 +- .../org.nuiton.config.ApplicationConfigProvider | 2 +- .../observe-application-swing_en_GB.properties | 1823 ++++---- .../observe-application-swing_es_ES.properties | 2125 +++++----- .../observe-application-swing_fr_FR.properties | 4405 ++++++++++---------- ...{action-import-gps.png => action-db-server.png} | Bin .../src/main/resources/observeSwing.conf | 5 + ...glineDetailCompositionValidatorServiceTest.java | 127 +- .../DataSourceDumpProducerServiceController.java | 29 + .../controller/v1/DataSourceServiceController.java | 3 +- .../web/controller/v1/PingServiceController.java | 8 +- .../ObserveWebSecurityApplicationContext.java | 2 +- observe-entities/pom.xml | 62 +- .../src/main/xmi/observe-common.properties | 2 +- .../src/main/xmi/observe-longline.properties | 2 +- .../src/main/xmi/observe-seine.properties | 2 +- .../ird/observe/services/service/PingService.java | 2 + observe-services-configuration-api/pom.xml | 6 + .../configuration/ObserveDataSourceConnection.java | 5 + .../ObserveDataSourceConnectionSupport.java | 13 +- observe-services-configuration-rest/pom.xml | 6 + .../ObserveDataSourceConnectionRest.java | 7 +- observe-services-configuration-topia/pom.xml | 4 +- .../ObserveDataSourceConnectionTopia.java | 7 +- .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 + .../observe/services/dto/gson/VersionAdapter.java | 36 + .../services/dto/referential/ProgramDtos.java | 44 + .../services/dto/referential/ReferentialDtos.java | 116 +- .../ird/observe/services/TestMethodResource.java | 2 +- .../fr/ird/observe/services/ObserveJdbcHelper.java | 35 + .../services/ObserveServiceContextTopia.java | 3 + .../EntityToReferentialReferenceDtoBuilder.java | 13 + .../services/dto/ObserveDtosInitializer.java | 284 +- .../services/service/DataSourceServiceTopia.java | 12 +- .../ObserveDataSourceConnectionTopiaTaiste.java | 3 +- ...EntityToReferentialReferenceDtoBuilderTest.java | 57 + pom.xml | 3 + 181 files changed, 9887 insertions(+), 8322 deletions(-) delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ObserveConfig.java delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ObserveContext.java rename observe-application-swing/src/main/java/fr/ird/observe/{business => }/ObserveServiceHelper.java (85%) create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java rename observe-application-swing/src/main/java/fr/ird/observe/{ => configuration}/ObserveApplicationConfigProvider.java (90%) create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfig.java rename observe-application-swing/src/main/java/fr/ird/observe/{ObserveConfigOption.java => configuration/ObserveSwingApplicationConfigOption.java} (75%) create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java rename observe-application-swing/src/main/java/fr/ird/observe/{business/db/constants => db/constantes}/ConnexionStatus.java (97%) rename observe-application-swing/src/main/java/fr/ird/observe/{business/db/constants => db/constantes}/CreationMode.java (72%) rename observe-application-swing/src/main/java/fr/ird/observe/{business/db/constants => db/constantes}/DbMode.java (88%) copy observe-business/src/main/java/fr/ird/observe/db/event/DataSourceEvent.java => observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceEvent.java (74%) copy observe-business/src/main/java/fr/ird/observe/db/event/DataSourceListener.java => observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListener.java (74%) copy observe-business/src/main/java/fr/ird/observe/db/event/DataSourceListenerAdapter.java => observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListenerAdapter.java (70%) rename {observe-business/src/main/java/fr/ird/observe/db/model => observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs}/DataSelectionModel.java (60%) copy observe-application-swing/src/main/resources/icons/{action-import-gps.png => action-db-server.png} (100%) create mode 100644 observe-application-swing/src/main/resources/observeSwing.conf create mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceDumpProducerServiceController.java create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java create mode 100644 observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit ea0960779ae18ecd66658c27400148a784c69239 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Sep 18 15:28:11 2015 +0200 lancement de l'application + connexion aux bases H2 et PG (refs #7528 #7529) --- observe-application-swing/pom.xml | 1 + .../java/fr/ird/observe/ObserveActionExecutor.java | 22 +- .../main/java/fr/ird/observe/ObserveCLAction.java | 30 +- .../main/java/fr/ird/observe/ObserveConfig.java | 1004 ----- .../fr/ird/observe/ObserveResourceManager.java | 20 +- .../main/java/fr/ird/observe/ObserveRunner.java | 76 +- .../{business => }/ObserveServiceHelper.java | 24 +- ...xt.java => ObserveSwingApplicationContext.java} | 348 +- .../fr/ird/observe/business/IObserveConfig.java | 4 +- .../business/ObserveApplicationContext.java | 9 +- .../ird/observe/business/db/DataSourceConfig.java | 2 +- .../ird/observe/business/db/DataSourceFactory.java | 2 +- .../db/constants/CommonDataSourceConfigParam.java | 1 + .../business/validation/ObserveValidator.java | 6 +- .../validation/ValidationMessageDetector.java | 2 +- .../ObserveApplicationConfigProvider.java | 7 +- .../ObserveSwingApplicationConfig.java | 1152 ++++++ .../ObserveSwingApplicationConfigOption.java} | 217 +- .../ObserveSwingApplicationConfigProvider.java | 37 + .../constantes}/ConnexionStatus.java | 2 +- .../constants => db/constantes}/CreationMode.java | 28 +- .../db/constants => db/constantes}/DbMode.java | 7 +- .../src/main/java/fr/ird/observe/package.html | 2 +- .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 4 +- .../fr/ird/observe/ui/ObserveMainUIHandler.java | 27 +- .../java/fr/ird/observe/ui/ObserveUICallback.java | 12 +- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 18 +- .../actions/ChangeApplicationLanguageAction.java | 12 +- .../observe/ui/actions/ChangeDbLanguageAction.java | 12 +- .../observe/ui/actions/ChangeStorageAction.java | 6 +- .../observe/ui/actions/CloseApplicationAction.java | 6 +- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 8 +- .../ird/observe/ui/actions/CloseStorageAction.java | 4 +- .../fr/ird/observe/ui/actions/GotoSiteAction.java | 8 +- .../ui/actions/ImportStorageFromFileAction.java | 9 +- .../ird/observe/ui/actions/LaunchAdminAction.java | 4 +- .../ui/actions/ReloadApplicationAction.java | 8 +- .../actions/ReloadDefaultConfigurationAction.java | 12 +- .../observe/ui/actions/ReloadResourcesAction.java | 8 +- .../observe/ui/actions/ReloadStorageAction.java | 12 +- .../ui/actions/SaveStorageToFileAction.java | 10 +- .../ird/observe/ui/actions/ShowConfigAction.java | 126 +- .../observe/ui/actions/ShowStorageInfoAction.java | 4 +- .../observe/ui/actions/StartServerModeAction.java | 7 +- .../ui/actions/shared/CloseAndCreateUIAction.java | 6 +- .../ui/actions/shared/CloseOpenUIAction.java | 6 +- .../observe/ui/actions/shared/ReOpenUIAction.java | 5 +- .../java/fr/ird/observe/ui/admin/AdminStep.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 6 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 8 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 10 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 31 +- .../observe/ui/admin/config/ConfigUIHandler.java | 2 - .../ui/admin/gps/GPSActivityTableModel.java | 4 +- .../observe/ui/admin/gps/ImportGPSConfigUI.jaxx | 6 +- .../ObsoleteEntityListCellRenderer.java | 6 +- .../ui/admin/validate/ValidateConfigUI.jaxx | 6 +- .../validate/ValidateEntityListCellRenderer.java | 4 +- .../observe/ui/admin/validate/ValidateModel.java | 6 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 10 +- .../ird/observe/ui/content/ContentUIHandler.java | 133 +- .../observe/ui/content/ContentUIInitializer.java | 178 +- .../impl/longline/LonglineDetailCompositionUI.jaxx | 4 +- .../LonglineDetailCompositionUIHandler.java | 28 +- .../impl/longline/LonglineGlobalCompositionUI.jaxx | 14 +- .../open/impl/longline/TripLonglineUIHandler.java | 5 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 10 +- .../open/impl/seine/TripSeineUIHandler.java | 4 +- .../ui/content/ref/ContentReferenceUIHandler.java | 45 +- .../ref/ReferentialContentUIInitializer.java | 17 + .../ui/content/ref/UniqueKeyTableModel.java | 6 +- .../ui/content/table/ContentTableUIHandler.java | 2 +- .../impl/longline/CatchLonglineUIHandler.java | 23 +- .../table/impl/longline/EncounterUIHandler.java | 6 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 12 +- .../table/impl/longline/SensorUsedUIHandler.java | 9 +- .../content/table/impl/longline/TdrUIHandler.java | 16 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 12 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 18 +- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 6 +- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 6 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 10 +- .../table/impl/seine/TargetCatchUIHandler.java | 2 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 2 +- .../ird/observe/ui/storage/RemoteUILauncher.java | 3 +- .../ui/storage/StorageBackupUILauncher.java | 6 +- .../ird/observe/ui/storage/StorageUIHandler.java | 583 ++- .../ird/observe/ui/storage/StorageUILauncher.java | 52 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 767 ++-- .../ird/observe/ui/storage/tabs/ChooseDbModeUI.css | 13 + .../observe/ui/storage/tabs/ChooseDbModeUI.jaxx | 14 +- .../ird/observe/ui/storage/tabs/ConfigDataUI.jaxx | 2 +- .../ui/storage/tabs/ConfigReferentielUI.jaxx | 2 +- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 17 + .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 29 +- .../ui/storage/tabs/StorageTabUIHandler.java | 33 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 8 +- .../ui/tree/NavigationTreeSelectionModel.java | 4 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 7 +- .../java/fr/ird/observe/ui/usage/UsagesUI.jaxx | 6 +- .../fr/ird/observe/ui/usage/UsagesUIHandler.java | 4 +- ...ObserveSimpleValidatorMessageTableRenderer.java | 4 +- .../util/ObserveValidatorMessageTableRenderer.java | 4 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 12 +- .../org.nuiton.config.ApplicationConfigProvider | 2 +- .../observe-application-swing_en_GB.properties | 1803 ++++---- .../observe-application-swing_es_ES.properties | 2105 +++++----- .../observe-application-swing_fr_FR.properties | 4320 ++++++++++---------- .../src/main/resources/observeSwing.conf | 5 + ...glineDetailCompositionValidatorServiceTest.java | 124 +- .../controller/v1/DataSourceServiceController.java | 3 +- observe-entities/pom.xml | 62 +- .../src/main/xmi/observe-common.properties | 2 +- .../src/main/xmi/observe-longline.properties | 2 +- .../src/main/xmi/observe-seine.properties | 2 +- observe-services-configuration-api/pom.xml | 6 + .../configuration/ObserveDataSourceConnection.java | 4 + .../ObserveDataSourceConnectionSupport.java | 13 +- observe-services-configuration-rest/pom.xml | 6 + .../ObserveDataSourceConnectionRest.java | 7 +- observe-services-configuration-topia/pom.xml | 4 +- .../ObserveDataSourceConnectionTopia.java | 7 +- .../fr/ird/observe/services/ObserveJdbcHelper.java | 35 + .../services/service/DataSourceServiceTopia.java | 12 +- .../ObserveDataSourceConnectionTopiaTaiste.java | 3 +- pom.xml | 3 + 127 files changed, 7510 insertions(+), 6598 deletions(-) diff --git a/observe-application-swing/pom.xml b/observe-application-swing/pom.xml index 5d71b8e..9af2045 100644 --- a/observe-application-swing/pom.xml +++ b/observe-application-swing/pom.xml @@ -295,6 +295,7 @@ </resource> <resource> <directory>src/main/resources</directory> + <filtering>true</filtering> <includes> <include>**/*</include> </includes> 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 9ec858c..dd89d5f 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 (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.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 = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); if (ui != null) { ui.setBusy(true); } @@ -92,7 +92,7 @@ public class ObserveActionExecutor extends ActionExecutor { "] failed with error " + error.getCause(), error); } } - if (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.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 = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); 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 (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.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 = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); 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 (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.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 = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); 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 (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -177,7 +177,7 @@ public class ObserveActionExecutor extends ActionExecutor { log.info("Action [" + source.getActionLabel() + "] terminée à " + new Date(source.getStartTime())); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); if (log.isDebugEnabled()) { log.debug("Unlock main context " + context); } @@ -190,7 +190,7 @@ public class ObserveActionExecutor extends ActionExecutor { //admin.getHandler().getUi().removePropertyChangeListener(admin.getHandler().getUi()); // return; } - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); 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 f35d5de..ea491cd 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 @@ -21,6 +21,8 @@ */ package fr.ird.observe; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminUILauncher; @@ -45,7 +47,7 @@ import static org.nuiton.i18n.I18n.t; * possibles. * * @author Tony Chemit - chemit@codelutin.com - * @see ObserveConfig + * @see ObserveSwingApplicationConfig * @see ObserveRunner * @since 1.0 */ @@ -167,7 +169,7 @@ public class ObserveCLAction { } /** La configuration de l'application. */ - protected ObserveConfig config; + protected ObserveSwingApplicationConfig config; public ObserveCLAction() { } @@ -197,14 +199,14 @@ public class ObserveCLAction { out.append('\n'); out.append("Options (set with --option <key> <value>:"); out.append('\n'); - for (ObserveConfigOption o : ObserveConfigOption.values()) { + for (ObserveSwingApplicationConfigOption o : ObserveSwingApplicationConfigOption.values()) { out.append("\t"); - out.append(o.key); + out.append(o.getKey()); out.append("("); - out.append(o.defaultValue); + out.append(o.getDefaultValue()); out.append(") :"); - out.append(t(o.description)); + out.append(t(o.getDescription())); out.append('\n'); } @@ -228,7 +230,7 @@ public class ObserveCLAction { public void configure() throws InterruptedException { disableMainUI(); - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = context.getContextValue(ObserveMainUIHandler.class); @@ -262,7 +264,7 @@ public class ObserveCLAction { return; } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); AdminUILauncher launcher = AdminUILauncher.newLauncher(context, operation); @@ -287,14 +289,14 @@ public class ObserveCLAction { return; } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); // FIXME // getConfig().setOption(AbstractDataSourceMigration.AUTO_MIGRATE, "false"); if (operation == ObstunaAdminAction.UPDATE || operation == ObstunaAdminAction.CREATE) { - getConfig().setOption(ObserveConfigOption.OBSTUNA_CAN_MIGRATE, true); + getConfig().setOption(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE, true); } RemoteUILauncher launcher = operation.newLauncher(context, null); @@ -314,7 +316,7 @@ public class ObserveCLAction { } } else { - ObserveContext.get().setContextValue( + ObserveSwingApplicationContext.get().setContextValue( true, ActionDefinition.H2_SERVER_MODE.name()); } @@ -361,9 +363,9 @@ public class ObserveCLAction { // } } - protected ObserveConfig getConfig() { + protected ObserveSwingApplicationConfig getConfig() { if (config == null) { - config = ObserveContext.get().getConfig(); + config = ObserveSwingApplicationContext.get().getConfig(); } return config; } @@ -385,7 +387,7 @@ public class ObserveCLAction { executor.addAction(action); // on attends la fin de l'opération - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); if (log.isDebugEnabled()) { log.debug("Lock main context " + context); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfig.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfig.java deleted file mode 100644 index b965eea..0000000 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfig.java +++ /dev/null @@ -1,1004 +0,0 @@ -/* - * #%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% - */ -package fr.ird.observe; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import fr.ird.observe.business.IObserveConfig; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; -import fr.ird.observe.ui.UIHelper; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.config.ApplicationConfig; -import org.nuiton.util.version.Version; -import org.nuiton.util.version.Versions; - -import javax.swing.*; -import java.awt.*; -import java.beans.PropertyChangeListener; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Locale; -import java.util.Properties; -import java.util.Set; - -import static fr.ird.observe.ObserveConfigOption.*; -import static fr.ird.observe.ObserveResourceManager.Resource; -import static org.nuiton.i18n.I18n.t; - -/** - * La configuration de l'application. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.0 - */ -public class ObserveConfig extends ApplicationConfig implements IObserveConfig { - - /** Logger */ - static private Log log = LogFactory.getLog(ObserveConfig.class); - - /** - * un drepeau pour savoir s'il faut lancer l'interface graphique. Cette - * valeur peut être programmées lors des actions. - */ - protected boolean displayMainUI = true; - - /** drapeau pour savoir si une base locale existe */ - protected boolean localStorageExist; - - /** - * drapeau pour savoir si le dump initial a ete chargee depuis la base - * centrale - */ - protected boolean initialDumpExist; - - /** drapeau pour savoir si une source de données est ouverte */ - protected boolean mainStorageOpened; - - /** - * drapeau pour savoir si la source ouverte est locale (attention, lorsqu'il - * n'y a pas de storage d'ouvert, la valeur est null). - */ - protected Boolean mainStorageOpenedLocal; - - /** - * drapeau pour savoir si on peut utiliser des ui dans l'environnement. - * <p/> - * Par defaut, on suppose qu'on peut utiliser l'environnement graphique et - * si on désactive explicitement ou si pas d'environnement graphique - * trouvé. - */ - protected boolean canUseUI = true; - - /** La version de l'application */ - private Version version; - - /** Texte du copyright (calculé dynamiquement). */ - protected String copyrightText; - - /** - * Liste des options qu'on ne peut pas sauvegarder (les mots de passes, - * les options d'admin pour les simples utilisateurs,...). - * - * @since 1.5 - */ - protected String[] unsavables; - - //FIXME - private final ImmutableSet<String> longlinVesselTypeIds = ImmutableSet.copyOf( - Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505", - "fr.ird.observe.entities.referentiel.VesselType#1239832675736#0.8708229847859869", - "fr.ird.observe.entities.referentiel.VesselType#1239832686137#0.1")); - - private final ImmutableSet<String> seineVesselTypeIds = ImmutableSet.copyOf( - Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505", - "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.307197212385357", - "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.7380146830307519", - "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.9086075071905084", - "fr.ird.observe.entities.referentiel.VesselType#1239832675737#0.43324169605639407")); - - public ObserveConfig() { - setConfigFileName(CONFIG_FILE.defaultValue); - loadDefaultOptions(ObserveConfigOption.values()); - } - - public boolean containActions(Step action) { - List<Action> list = actions.get(action.ordinal()); - return !(list == null || list.isEmpty()); - } - - public void initConfig(ObserveResourceManager manager) throws IOException { - - Version version = null; - - Properties p = manager.getResource(Resource.application); - - for (Object k : p.keySet()) { - String key = String.valueOf(k); - Object value = p.get(k); - if (log.isDebugEnabled()) { - log.debug("install property [" + k + "] : " + value); - } - String strValue = String.valueOf(value); - if (APPLICATION_VERSION.equals(key)) { - version = Versions.valueOf(strValue); - if (version.isSnapshot()) { - version = Versions.removeSnapshot(version); - } - - } else { - setDefaultOption(key, strValue); - } - } - - if (version == null) { - throw new IllegalStateException("No application.version found in application configuration."); - } - - setVersion(version); - setDefaultOption(VERSION, version.getVersion()); - setDefaultOption(APPLICATION_VERSION, version.getVersion()); - - //TC-200100204 La version de la base n'est pas liéé à la version - // de l'application - //FIXME -// Version dbVersion; -// -// dbVersion = Versions.valueOf(ObserveDAOHelper.getModelVersion()); -// -// setDefaultOption(DB_VERSION, dbVersion.getVersion()); - - // creation des actions disponibles - for (ObserveCLAction.ActionDefinition a : ObserveCLAction.ActionDefinition.values()) { - - for (String alias : a.aliases) { - addActionAlias(alias, a.action); - } - } - } - - @Override - protected void migrateUserConfigurationFile(File oldHomeConfig, - File homeConfig) throws IOException { - super.migrateUserConfigurationFile(oldHomeConfig, homeConfig); - // on previent l'utilisateur que son fichier de configuration a été - // deplacé - JOptionPane.showInternalMessageDialog(null, - t("observe.title.config.migrate"), - t("observe.runner.config.migrate.file", - oldHomeConfig.getName(), - oldHomeConfig, - homeConfig - ), - JOptionPane.WARNING_MESSAGE); - } - - protected void installSaveAction() { - // ajout de l'action de sauvegarde automatique sur certaines propriétés - - List<String> result = new ArrayList<String>(); - - for (ObserveConfigOption option : values()) { - String key = option.getPropertyKey(); - if (key != null) { - // add a listener - if (log.isDebugEnabled()) { - log.debug("register action listener for property " + key); - } - result.add(key); - } - } - - installSaveUserAction(result.toArray(new String[result.size()])); - } - - @Override - public String getCopyrightText() { - if (copyrightText == null) { - Date date = new Date(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - int year = calendar.get(Calendar.YEAR); - copyrightText = "Version " + getVersion() + " IRD @ 2008-" + year; - } - return copyrightText; - } - - @Override - public boolean isDevMode() { - boolean result = getOptionAsBoolean(DEV_MODE.key); - return result; - } - - @Override - public Version getVersion() { - return version; - } - - @Override - public Version getDbVersion() { - //FIXME -// Version option = getOption(Version.class, DB_VERSION); -// return option; - return null; - } - - @Override - public boolean isAutoPopupNumberEditor() { - boolean result = getOptionAsBoolean(AUTO_POPUP_NUMBER_EDITOR.key); - return result; - } - - @Override - public boolean isShowNumberEditorButton() { - boolean result = getOptionAsBoolean(SHOW_NUMBER_EDITOR_BUTTON.key); - return result; - } - - @Override - public boolean isShowTimeEditorSlider() { - boolean result = getOptionAsBoolean(SHOW_DATE_TIME_EDITOR_SLIDER.key); - return result; - } - - @Override - public boolean isFullScreen() { - boolean result = getOptionAsBoolean(FULL_SCREEN.key); - return result; - } - - public File getDataDirectory() { - File file = getOptionAsFile(ObserveConfigOption.DATA_DIRECTORY.key); - return file; - } - - - @Override - public File getValidationReportDirectory() { - File file = getOptionAsFile(ObserveConfigOption.VALIDATION_REPORT_DIRECTORY.key); - return file; - } - - @Override - public File getLocalDBDirectory() { - File result = getOptionAsFile(DB_DIRECTORY.key); - return result; - } - - @Override - public File getResourcesDirectory() { - File result = getOptionAsFile(RESOURCES_DIRECTORY.key); - return result; - } - - @Override - public File getI18nDirectory() { - File result = getOptionAsFile(I18N_DIRECTORY.key); - return result; - } - - @Override - public void setResourcesDirectory(File newValue) { - setOption(RESOURCES_DIRECTORY, newValue); - } - - @Override - public File getInitialDbDump() { - File result = getOptionAsFile(INITIAL_DB_DUMP.key); - return result; - } - - @Override - public File getBackupDirectory() { - File result = getOptionAsFile(BACKUP_DIRECTORY.key); - return result; - } - - @Override - public File getReportDirectory() { - File result = getOptionAsFile(REPORT_DIRECTORY.key); - return result; - } - - @Override - public File getTmpDirectory() { - File result = getOptionAsFile(TMP_DIRECTORY.key); - return result; - } - - @Override - public File getLogConfigurationFile() { - File result = getOptionAsFile(LOG_CONFIGURATION_FILE.key); - return result; - } - - @Override - public String getH2Login() { - String result = getOption(H2_LOGIN.key); - return result; - } - - @Override - public char[] getH2Password() { - String result = getOption(H2_PASSWORD.key); - char[] r = result.toCharArray(); - return r; - } - - @Override - public int getH2ServerPort() { - Integer port = getOptionAsInt(H2_SERVER_PORT.key); - return port; - } - - @Override - public String getObstunaUrl() { - String result = getOption(OBSTUNA_URL.key); - return result; - } - - @Override - public String getObstunaLogin() { - String result = getOption(OBSTUNA_LOGIN.key); - return result; - } - - @Override - public char[] getObstunaPassword() { - String result = getOption(OBSTUNA_PASSWORD.key); - char[] r = result.toCharArray(); - return r; - } - - @Override - public boolean isObstunaUseSsl() { - boolean result = getOptionAsBoolean(OBSTUNA_USE_SSL_CERT.key); - return result; - } - - @Override - public DbMode getDefaultDbMode() { - DbMode result = getOption(DbMode.class, DEFAULT_DB_MODE.key); - return result; - } - - @Override - public CreationMode getDefaultCreationMode() { - CreationMode result = - getOption(CreationMode.class, DEFAULT_CREATION_MODE.key); - return result; - } - - @Override - public boolean isShowMigrationSql() { - boolean result = getOptionAsBoolean(SHOW_MIGRATION_SQL.key); - return result; - } - - @Override - public boolean isShowMigrationProgression() { - boolean result = getOptionAsBoolean(SHOW_MIGRATION_PROGRESSION.key); - return result; - } - - @Override - public boolean isShowSql() { - boolean result = getOptionAsBoolean(SHOW_SQL.key); - return result; - } - - @Override - public int getDefaultGpsMaxDelay() { - Integer i = getOptionAsInt(DEFAULT_GPS_MAX_DELAY.key); - return i; - } - - @Override - public float getDefaultGpsMaxSpeed() { - double i = getOptionAsDouble(DEFAULT_GPS_MAX_SPEED.key); - return (float) i; - } - - @Override - public boolean isChangeSynchroSrc() { - boolean result = getOptionAsBoolean(CHANGE_SYNCHRO_SRC.key); - return result; - } - - @Override - public boolean isStoreRemoteStorage() { - boolean result = getOptionAsBoolean(STORE_REMOTE_STORAGE.key); - return result; - } - - @Override - public boolean isCanMigrateObstuna() { - boolean result = getOptionAsBoolean(OBSTUNA_CAN_MIGRATE.key); - return result; - } - - @Override - public boolean isCanMigrateH2() { - boolean result = getOptionAsBoolean(H2_CAN_MIGRATE.key); - return result; - } - - @Override - public boolean isLoadLocalStorage() { - boolean result = getOptionAsBoolean(LOAD_LOCAL_STORAGE.key); - return result; - } - - @Override - public Locale getLocale() { - Locale result = getOption(Locale.class, LOCALE.key); - return result; - } - - @Override - public Locale getDbLocale() { - Locale result = getOption(Locale.class, DB_LOCALE.key); - return result; - } - - @Override - public int getNonTargetObservation() { - int value = getOptionAsInt(NON_TARGET_OBSERVATION.key); - return value; - } - - @Override - public int getTargetDiscardsObservation() { - int value = getOptionAsInt(TARGET_DISCARDS_OBSERVATION.key); - return value; - } - - @Override - public int getSamplesObservation() { - int value = getOptionAsInt(SAMPLES_OBSERVATION.key); - return value; - } - - @Override - public int getObjectsObservation() { - int value = getOptionAsInt(OBJECTS_OBSERVATION.key); - return value; - } - - @Override - public int getDetailledActivitiesObservation() { - int value = getOptionAsInt(DETAILLED_ACTIVITIES_OBSERVATION.key); - return value; - } - - @Override - public int getMammalsObservation() { - int value = getOptionAsInt(MAMMALS_OBSERVATION.key); - return value; - } - - @Override - public int getBirdsObservation() { - int value = getOptionAsInt(BIRDS_OBSERVATION.key); - return value; - } - - @Override - public int getBaitObservation() { - int value = getOptionAsInt(BAIT_OBSERVATION.key); - return value; - } - - @Override - public boolean isDisplayMainUI() { - return displayMainUI; - } - - @Override - public boolean isCanUseUI() { - return canUseUI; - } - - @Override - public boolean isLocalStorageExist() { - return localStorageExist; - } - - @Override - public boolean isInitialDumpExist() { - return initialDumpExist; - } - - @Override - public boolean isMainStorageOpened() { - return mainStorageOpened; - } - - @Override - public Boolean getMainStorageOpenedLocal() { - return mainStorageOpenedLocal; - } - - public void setLocalStorageExist(boolean newValue) { - localStorageExist = newValue; - // always force propagation - firePropertyChange(PROPERTY_LOCAL_STORAGE_EXIST, newValue); - } - - public void setInitialDumpExist(boolean newValue) { - initialDumpExist = newValue; - // always force propagation - firePropertyChange(PROPERTY_INITIAL_DUMP_EXIST, newValue); - } - - public void setMainStorageOpened(boolean newValue) { - mainStorageOpened = newValue; - if (!newValue) { - // on force la reinitialisation - setMainStorageOpenedLocal(null); - } - // always force propagation - firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED, newValue); - } - - public void setMainStorageOpenedLocal(Boolean newValue) { - mainStorageOpenedLocal = newValue; - // always force propagation - firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED + "Local", newValue); - } - - public void setDisplayMainUI(boolean b) { - displayMainUI = b; - } - - public void setCanUseUI(boolean canUseUI) { - this.canUseUI = canUseUI; - if (!canUseUI) { - // on ne pourra pas lancer l'ui principale - setDisplayMainUI(false); - } - } - - @Override - public void setAutoPopupNumberEditor(boolean newValue) { - setOption(AUTO_POPUP_NUMBER_EDITOR, newValue); - } - - @Override - public void setShowNumberEditorButton(boolean newValue) { - setOption(SHOW_NUMBER_EDITOR_BUTTON, newValue); - } - - @Override - public void setShowTimeEditorSlider(boolean newValue) { - setOption(SHOW_DATE_TIME_EDITOR_SLIDER, newValue); - } - - @Override - public void setFullScreen(boolean newValue) { - setOption(FULL_SCREEN, newValue); - } - - @Override - public void setChangeSynchroSrc(boolean newValue) { - setOption(CHANGE_SYNCHRO_SRC, newValue); - } - - @Override - public void setStoreRemoteStorage(boolean newValue) { - setOption(STORE_REMOTE_STORAGE, newValue); - } - - @Override - public void setLoadLocalStorage(boolean newValue) { - setOption(LOAD_LOCAL_STORAGE, newValue); - } - - @Override - public void setDefaultDbMode(DbMode newValue) { - setOption(DEFAULT_DB_MODE, newValue); - } - - @Override - public void setDefaultCreationMode(CreationMode newValue) { - setOption(DEFAULT_CREATION_MODE, newValue); - } - - @Override - public void setDefaultGpsMaxDelay(int newValue) { - setOption(DEFAULT_GPS_MAX_DELAY, newValue); - } - - @Override - public void setDefaultGpsMaxSpeed(float newValue) { - setOption(DEFAULT_GPS_MAX_SPEED, newValue); - } - - @Override - public void setLocale(Locale newValue) { - setOption(LOCALE, newValue); - } - - @Override - public void setDbLocale(Locale newValue) { - setOption(DB_LOCALE, newValue); - } - - @Override - public void setCanMigrateObstuna(Boolean newValue) { - setOption(OBSTUNA_CAN_MIGRATE, newValue); - } - - @Override - public void setCanMigrateH2(Boolean newValue) { - setOption(H2_CAN_MIGRATE, newValue); - } - - @Override - public void setNonTargetObservation(int newValue) { - setOption(NON_TARGET_OBSERVATION, newValue); - } - - @Override - public void setTargetDiscardsObservation(int newValue) { - setOption(TARGET_DISCARDS_OBSERVATION, newValue); - } - - @Override - public void setSamplesObservation(int newValue) { - setOption(SAMPLES_OBSERVATION, newValue); - } - - @Override - public void setObjectsObservation(int newValue) { - setOption(OBJECTS_OBSERVATION, newValue); - } - - @Override - public void setDetailledActivitiesObservation(int newValue) { - setOption(DETAILLED_ACTIVITIES_OBSERVATION, newValue); - } - - @Override - public void setMammalsObservation(int newValue) { - setOption(MAMMALS_OBSERVATION, newValue); - } - - @Override - public void setBirdsObservation(int newValue) { - setOption(BIRDS_OBSERVATION, newValue); - } - - @Override - public void setBaitObservation(int newValue) { - setOption(BAIT_OBSERVATION, newValue); - } - - @Override - public void setShowMigrationSql(boolean showMigrationSql) { - setOption(SHOW_MIGRATION_SQL, showMigrationSql); - } - - @Override - public void setShowMigrationProgression(boolean showMigrationProgression) { - setOption(SHOW_MIGRATION_PROGRESSION, showMigrationProgression); - } - - @Override - public void setShowSql(boolean showSql) { - setOption(SHOW_SQL, showSql); - } - - @Override - public String getSpeciesListSeineNonTargetCatchId() { - String value = getOption(SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID.key); - return value; - } - - @Override - public String getSpeciesListSeineTargetCatchId() { - String value = getOption(SPECIES_LIST_SEINE_TARGET_CATCH_ID.key); - return value; - } - - @Override - public String getSpeciesListSeineSchoolEstimateId() { - String value = getOption(SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID.key); - return value; - } - - @Override - public String getSpeciesListSeineObjectObservedSpeciesId() { - String value = getOption(SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID.key); - return value; - } - - @Override - public String getSpeciesListSeineObjectSchoolEstimateId() { - String value = getOption(SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID.key); - return value; - } - - @Override - public String getSpeciesListLonglineCatchId() { - String value = getOption(SPECIES_LIST_LONGLINE_CATCH_ID.key); - return value; - } - - @Override - public String getSpeciesListLonglineEncounterId() { - String value = getOption(SPECIES_LIST_LONGLINE_ENCOUNTER_ID.key); - return value; - } - - @Override - public String getSpeciesListLonglineDepredatorId() { - String value = getOption(SPECIES_LIST_LONGLINE_DEPREDATOR_ID.key); - return value; - } - - @Override - public void setSpeciesListSeineNonTargetCatchId(String speciesListSeineNonTargetCatchId) { - setOption(SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID, speciesListSeineNonTargetCatchId); - } - - @Override - public void setSpeciesListSeineTargetCatchId(String speciesListSeineTargetCatchId) { - setOption(SPECIES_LIST_SEINE_TARGET_CATCH_ID, speciesListSeineTargetCatchId); - } - - @Override - public void setSpeciesListSeineSchoolEstimateId(String speciesListSeineSchoolEstimateId) { - setOption(SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID, speciesListSeineSchoolEstimateId); - } - - @Override - public void setSpeciesListSeineObjectObservedSpeciesId(String speciesListSeineObjectObservedSpeciesId) { - setOption(SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID, speciesListSeineObjectObservedSpeciesId); - } - - @Override - public void setSpeciesListSeineObjectSchoolEstimateId(String speciesListseineObjectSchoolEstimateId) { - setOption(SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID, speciesListseineObjectSchoolEstimateId); - } - - @Override - public void setSpeciesListLonglineCatchId(String speciesListLonglineCatchId) { - setOption(SPECIES_LIST_LONGLINE_CATCH_ID, speciesListLonglineCatchId); - } - - @Override - public void setSpeciesListLonglineEncounterId(String speciesListLonglineEncounterId) { - setOption(SPECIES_LIST_LONGLINE_ENCOUNTER_ID, speciesListLonglineEncounterId); - } - - @Override - public void setSpeciesListLonglineDepredatorId(String speciesListLonglineDepredatorId) { - setOption(SPECIES_LIST_LONGLINE_DEPREDATOR_ID, speciesListLonglineDepredatorId); - } - - public Color getMapBackgroundColor() { - Color result = getOptionAsColor(MAP_BACKGROUND_COLOR.key); - return result; - } - - public List<File> getMapLayerFiles() { - List<File> layers = Lists.newLinkedList(); - - for (ObserveConfigOption layerOption : ObserveConfigOption.MAP_LAYERS) { - File layerFile = getOptionAsFile(layerOption.key); - if (layerFile != null && layerFile.exists()) { - layers.add(layerFile); - } - } - return layers; - } - - public File getMapStyleFile() { - File result = getOptionAsFile(ObserveConfigOption.MAP_STYLE_FILE.key); - return result; - } - - public String[] getUnsavables() { - if (unsavables == null) { - List<String> tmp = new ArrayList<String>(); - tmp.add(OBSTUNA_PASSWORD.getKey()); -// tmp.add(OBSTUNA_SSL_CERTIFICAT_PASSWORD.getKey()); - tmp.add(H2_PASSWORD.getKey()); - tmp.add(OBSTUNA_CAN_MIGRATE.getKey()); - -// if (!ObserveRunner.isAdmin()) { -// // toutes les options dite admin ne sont pas sauvables -// -// for (ObserveConfigOption option : values()) { -// if (option.isAdmin()) { -// -// // ne pas ajouter les options d'admin pour le simple utilisateur -// tmp.add(option.key); -// } -// } -// } - unsavables = tmp.toArray(new String[tmp.size()]); - } - return unsavables; - } - - @Override - public void saveForUser(String... excludeKeys) { - if (log.isInfoEnabled()) { - log.info(t("observe.message.save.configuration", getUserConfigFile())); - } - super.saveForUser(getUnsavables()); - } - - //FIXME -// @Override -// public void fromStorageConfig(H2DataSourceConfig config) { -// setOption(SHOW_MIGRATION_PROGRESSION, config.isShowMigrationProgression()); -// setOption(SHOW_MIGRATION_SQL, config.isShowMigrationSql()); -// saveForUser(); -// } - -// @Override -// public void fromStorageConfig(PGDataSourceConfig config) { -// setOption(OBSTUNA_URL.getKey(), config.getUrl()); -// setOption(OBSTUNA_LOGIN.getKey(), config.getLogin()); -// setOption(OBSTUNA_PASSWORD.getKey(), -// new String(config.getPassword())); -// boolean useSsl = config.isUseSsl(); -// setOption(OBSTUNA_USE_SSL_CERT, useSsl); -//// if (useSsl) { -//// setOption(OBSTUNA_SSL_CERTIFICAT_FILE, -//// config.getSslCertificatFile().getAbsolutePath()); -//// setOption(OBSTUNA_SSL_CERTIFICAT_PASSWORD, -//// new String(config.getSslCertificatPassword())); -//// } else { -//// setOption(OBSTUNA_SSL_CERTIFICAT_FILE.key, ""); -//// setOption(OBSTUNA_SSL_CERTIFICAT_PASSWORD, EMPTY_CHAR_ARRAY); -//// } -// setOption(SHOW_MIGRATION_PROGRESSION, config.isShowMigrationProgression()); -// setOption(SHOW_MIGRATION_SQL, config.isShowMigrationSql()); -// //TODO-TC20100311 : on devrait pas regarder si l'utilisateur veut sauver -// //TODO-TC20100311 : la configuration ? -// saveForUser(); -// } - - //FIXME -// @Override -// public H2DataSourceConfig toH2StorageConfig(String label) { -// H2DataSourceConfig result; -// result = DataSourceFactory.newH2Config( -// label, -// CommonDataSourceConfigParam.LOGIN, getH2Login(), -// CommonDataSourceConfigParam.PASSWORD, getH2Password(), -// CommonDataSourceConfigParam.CAN_MIGRATE, isCanMigrateH2(), -// CommonDataSourceConfigParam.SHOW_MIGRATION_PROGRESSION, isShowMigrationProgression(), -// CommonDataSourceConfigParam.SHOW_MIGRATION_SQL, isShowMigrationSql(), -// H2DataSourceConfigParam.DIRECTORY, getLocalDBDirectory() -// ); -// return result; -// } - - //FIXME -// @Override -// public PGDataSourceConfig toPostgresStorageConfig(String label) { -// PGDataSourceConfig result; -// result = DataSourceFactory.newPGConfig( -// label, -// PGDataSourceConfigParam.URL, getObstunaUrl(), -// CommonDataSourceConfigParam.LOGIN, getObstunaLogin(), -// CommonDataSourceConfigParam.PASSWORD, getObstunaPassword(), -// CommonDataSourceConfigParam.CAN_MIGRATE, isCanMigrateObstuna(), -// CommonDataSourceConfigParam.SHOW_MIGRATION_PROGRESSION, isShowMigrationProgression(), -// CommonDataSourceConfigParam.SHOW_MIGRATION_SQL, isShowMigrationSql(), -// PGDataSourceConfigParam.USE_SSL, isObstunaUseSsl() -// ); -// return result; -// } - - public void removeJaxxPropertyChangeListener() { - List<String> tmp = new ArrayList<String>(); - for (ObserveConfigOption option : values()) { - String propertyName = option.getPropertyKey(); - if (propertyName != null) { - tmp.add(propertyName); - } - } - if (log.isDebugEnabled()) { - log.debug("property names to seek for options : " + tmp); - } - String[] propertyNames = tmp.toArray( - new String[tmp.size()]); - - PropertyChangeListener[] toRemove = - UIHelper.findJaxxPropertyChangeListener( - propertyNames, - getPropertyChangeListeners()); - if (toRemove == null || toRemove.length == 0) { - return; - } - if (log.isDebugEnabled()) { - log.debug("before remove : " + getPropertyChangeListeners().length); - log.debug("toRemove : " + toRemove.length); - } - for (PropertyChangeListener listener : toRemove) { - removePropertyChangeListener(listener); - } - if (log.isDebugEnabled()) { - log.debug("after remove : " + getPropertyChangeListeners().length); - } - } - - public void setOption(ObserveConfigOption option, Object newValue) { - String key = option.getKey(); - Object oldValue = getOption(key); - String value = String.valueOf(newValue); - setOption(key, value); - if (log.isDebugEnabled()) { - log.debug("set option " + key + " value : " + value); - } - String propertyName = option.getPropertyKey(); - if (propertyName != null) { - // l'option est javabeans, declanchement d'un changement - if (log.isTraceEnabled()) { - log.trace("fires config change from option " + key); - } - firePropertyChange(propertyName, oldValue, newValue); - } - } - - void setVersion(Version version) { - this.version = version; - } - - public Set<String> getSeineVesselTypeIds() { - return seineVesselTypeIds; - } - - public Set<String> getLonglineVesselTypeIds() { - return longlinVesselTypeIds; - } - - @Override - public String replaceRecursiveOptions(String option) { - return super.replaceRecursiveOptions(option); - } - - ////////////////////////////////////////////////// - // Toutes les étapes d'actions - ////////////////////////////////////////////////// - - public enum Step { - - AfterInit, BeforeExit - } - - protected void firePropertyChange(String propertyName, Object newValue) { - pcs.firePropertyChange(propertyName, null, newValue); - } -} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveResourceManager.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveResourceManager.java index 3cd0908..2ae8455 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveResourceManager.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveResourceManager.java @@ -21,6 +21,8 @@ */ package fr.ird.observe; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -236,9 +238,9 @@ public class ObserveResourceManager { * @return le fichier * @throws IOException pour tout problème de création de répertoire */ - protected File createDirectory(ObserveConfig config, - ObserveConfigOption option) throws IOException { - File dir = config.getOptionAsFile(option.key); + protected File createDirectory(ObserveSwingApplicationConfig config, + ObserveSwingApplicationConfigOption option) throws IOException { + File dir = config.getOptionAsFile(option.getKey()); createDirectory(dir); return dir; } @@ -251,10 +253,10 @@ public class ObserveResourceManager { * @param options les options qui représentent des répertoires ou fichiers. * @throws IOException pour tout problème de création de répertoire */ - protected void createParentDirectory(ObserveConfig config, - ObserveConfigOption... options) throws IOException { - for (ObserveConfigOption option : options) { - File dir = config.getOptionAsFile(option.key).getParentFile(); + protected void createParentDirectory(ObserveSwingApplicationConfig config, + ObserveSwingApplicationConfigOption... options) throws IOException { + for (ObserveSwingApplicationConfigOption option : options) { + File dir = config.getOptionAsFile(option.getKey()).getParentFile(); createDirectory(dir); } } @@ -306,9 +308,9 @@ public class ObserveResourceManager { } } - public File unzipToDirectory(Resource resource, ObserveConfig config, ObserveConfigOption option, String message) throws IOException { + public File unzipToDirectory(Resource resource, ObserveSwingApplicationConfig config, ObserveSwingApplicationConfigOption option, String message) throws IOException { - File dir = config.getOptionAsFile(option.key); + File dir = config.getOptionAsFile(option.getKey()); createDirectory(dir); InputStream inputStream = openInternalStream(resource.getUrl()); try { 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 b7cd96e..3a844fa 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 @@ -22,9 +22,9 @@ package fr.ird.observe; import com.google.common.base.Preconditions; -import fr.ird.observe.business.ObserveServiceHelper; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.converter.FloatConverter; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.UIHelper; @@ -62,7 +62,7 @@ import java.util.Locale; import java.util.Map; import java.util.Properties; -import static fr.ird.observe.ObserveConfigOption.*; +import static fr.ird.observe.configuration.ObserveSwingApplicationConfigOption.*; import static fr.ird.observe.ObserveResourceManager.Resource; import static org.nuiton.i18n.I18n.t; @@ -192,7 +192,7 @@ public abstract class ObserveRunner extends ApplicationRunner { // 1 - preparation de la configuration - ObserveConfig config = initConfig(); + ObserveSwingApplicationConfig config = initConfig(); if (log.isInfoEnabled()) { log.info(t("observe.runner.config.loaded", config.getVersion())); @@ -240,7 +240,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - protected void initLog(ObserveConfig config) throws IOException { + protected void initLog(ObserveSwingApplicationConfig config) throws IOException { File logFile = config.getLogConfigurationFile(); Preconditions.checkState(logFile.exists(), "Le fichier de configuration des logs %s n'existe pas.", logFile); @@ -281,7 +281,7 @@ public abstract class ObserveRunner extends ApplicationRunner { Arrays.toString(args))); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); if (log.isDebugEnabled()) { log.debug("Will use context : " + context); @@ -289,20 +289,19 @@ public abstract class ObserveRunner extends ApplicationRunner { UIHelper.checkJAXXContextEntries( context, - ObserveContext.CONFIG_ENTRY_DEF, - ObserveContext.ACTIONS_ENTRY_DEF, - //FIXME -// ObserveContext.DATA_SERVICE_ENTRY_DEF, - ObserveContext.DECORATOR_SERVICE_ENTRY_DEF + ObserveSwingApplicationContext.CONFIG_ENTRY_DEF, + ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF, + ObserveSwingApplicationContext.SERVICE_MAIN_FACTORY_ENTRY_DEF, + ObserveSwingApplicationContext.DECORATOR_SERVICE_ENTRY_DEF ); // 1 - launch commandline actions - ObserveConfig config = context.getConfig(); + ObserveSwingApplicationConfig config = context.getConfig(); - if (config.containActions(ObserveConfig.Step.AfterInit)) { + if (config.containActions(ObserveSwingApplicationConfig.Step.AfterInit)) { - config.doAction(ObserveConfig.Step.AfterInit.ordinal()); + config.doAction(ObserveSwingApplicationConfig.Step.AfterInit.ordinal()); if (log.isInfoEnabled()) { log.info("Operation terminées..."); @@ -369,7 +368,7 @@ public abstract class ObserveRunner extends ApplicationRunner { if (log.isDebugEnabled()) { log.debug("Will close context..."); } - ObserveContext.get().close(); + ObserveSwingApplicationContext.get().close(); } } @@ -404,9 +403,9 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - protected ObserveConfig initConfig() throws Exception { + protected ObserveSwingApplicationConfig initConfig() throws Exception { - ObserveConfig config = new ObserveConfig(); + ObserveSwingApplicationConfig config = new ObserveSwingApplicationConfig(); // init config (load application configuration) config.initConfig(resourceManager); @@ -420,7 +419,7 @@ public abstract class ObserveRunner extends ApplicationRunner { return config; } - protected void initUserDirectories(ObserveConfig config) throws IOException { + protected void initUserDirectories(ObserveSwingApplicationConfig config) throws IOException { // 1 - user data directory @@ -507,15 +506,14 @@ public abstract class ObserveRunner extends ApplicationRunner { } - protected void detectLocalDataBase(ObserveConfig config) throws IOException { - //FIXME -// boolean hasLocalStorage = ObserveServiceHelper.isLocalStorageExists(config); -// config.setLocalStorageExist(hasLocalStorage); -// if (!hasLocalStorage) { -// if (log.isInfoEnabled()) { -// log.info(t("observe.init.no.local.db.detected", config.getLocalDBDirectory())); -// } -// } + protected void detectLocalDataBase(ObserveSwingApplicationConfig config) throws IOException { + boolean hasLocalStorage = config.getLocalDBDirectory().exists(); + config.setLocalStorageExist(hasLocalStorage); + if (!hasLocalStorage) { + if (log.isInfoEnabled()) { + log.info(t("observe.init.no.local.db.detected", config.getLocalDBDirectory())); + } + } boolean hasInitialDb = ObserveServiceHelper.isInitialDbExists(config); config.setInitialDumpExist(hasInitialDb); @@ -527,7 +525,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - protected void initI18n(ObserveConfig config) { + protected void initI18n(ObserveSwingApplicationConfig config) { I18n.close(); @@ -562,7 +560,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - protected void initUIConfiguration(ObserveConfig config) throws IOException { + protected void initUIConfiguration(ObserveSwingApplicationConfig config) throws IOException { // prepare ui look&feel and load ui properties try { @@ -588,7 +586,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - public void loadUIConfig(ObserveConfig config) { + public void loadUIConfig(ObserveSwingApplicationConfig config) { // chargement de la configuration des uis File dir = config.getResourcesDirectory(); @@ -630,26 +628,22 @@ public abstract class ObserveRunner extends ApplicationRunner { * @return le context applicatif * @throws IllegalStateException si un contexte applicatif a déja été positionné. */ - public ObserveContext initContext(ObserveConfig config) throws Exception { + public ObserveSwingApplicationContext initContext(ObserveSwingApplicationConfig config) throws Exception { if (ObserveServiceHelper.isInit()) { throw new IllegalStateException( "there is an already application context registred."); } - ObserveContext instance = new ObserveContext(); + ObserveSwingApplicationContext instance = new ObserveSwingApplicationContext(); // add config - ObserveContext.CONFIG_ENTRY_DEF.setContextValue(instance, config); - - // add dataService - //FIXME -// instance.getDataService(); + ObserveSwingApplicationContext.CONFIG_ENTRY_DEF.setContextValue(instance, config); - // add data context - instance.getDataContext(); + // add service main factory + instance.getObserveServiceMainFactory(); // add actions - ObserveContext.ACTIONS_ENTRY_DEF.setContextValue(instance, new ObserveCLAction()); + ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF.setContextValue(instance, new ObserveCLAction()); // referencement du context applicatif sur le helper de service ObserveServiceHelper.set(instance); @@ -660,8 +654,8 @@ public abstract class ObserveRunner extends ApplicationRunner { return instance; } - protected ObserveMainUI startUI(ObserveContext context, - ObserveConfig config) { + protected ObserveMainUI startUI(ObserveSwingApplicationContext context, + ObserveSwingApplicationConfig config) { ObserveMainUIHandler uiHandler = context.getContextValue(ObserveMainUIHandler.class); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveServiceHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java similarity index 91% rename from observe-application-swing/src/main/java/fr/ird/observe/business/ObserveServiceHelper.java rename to observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java index 6b2bbcd..e4b7f05 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveServiceHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java @@ -19,12 +19,12 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.business; +package fr.ird.observe; import fr.ird.observe.business.gps.GPSService; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.business.validation.ValidationService; -import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -36,7 +36,7 @@ public class ObserveServiceHelper { private static Log log = LogFactory.getLog(ObserveServiceHelper.class); /** Le context applicatif. */ - public static ObserveApplicationContext context; + public static ObserveSwingApplicationContext context; /** Un drapeau pour savoir quand l'application est en cours de fermeture. */ protected static boolean closed; @@ -54,7 +54,7 @@ public class ObserveServiceHelper { * @return l'instance partagé du contexte. * @throws IllegalStateException si le contexte n'a pas été initialisé */ - public static ObserveApplicationContext get() throws IllegalStateException { + public static ObserveSwingApplicationContext get() throws IllegalStateException { checkInit(); return context; } @@ -72,7 +72,7 @@ public class ObserveServiceHelper { return context != null; } - public static void set(ObserveApplicationContext context) { + public static void set(ObserveSwingApplicationContext context) { if (isInit()) { throw new IllegalStateException( "application context already registred."); @@ -132,7 +132,7 @@ public class ObserveServiceHelper { public static ValidationContext getValidationContext() { checkInit(); - ObserveApplicationContext context = get(); + ObserveSwingApplicationContext context = get(); ValidationContext dataContext = context.getValidationContext(); return dataContext; } @@ -144,7 +144,7 @@ public class ObserveServiceHelper { */ public static GPSService getGPSService() { checkInit(); - ObserveApplicationContext context = get(); + ObserveSwingApplicationContext context = get(); GPSService service = context.getGPSService(); return service; } @@ -183,7 +183,7 @@ public class ObserveServiceHelper { */ public static DecoratorService getDecoratorService() { checkInit(); - ObserveApplicationContext context = get(); + ObserveSwingApplicationContext context = get(); DecoratorService service = context.getDecoratorService(); return service; } @@ -199,7 +199,7 @@ public class ObserveServiceHelper { */ //FIXME // public static DataSource newEmptyTempStorage( -// IObserveConfig config, +// ObserveSwingApplicationConfig config, // String label, // String prefixName) throws IOException { // String dbfileName = (prefixName == null ? "tmp_" : prefixName + "_") @@ -254,7 +254,7 @@ public class ObserveServiceHelper { * @see DataSource */ //FIXME -// public static H2DataSource newLocalStorageService(IObserveConfig config) throws IOException, IllegalStateException { +// public static H2DataSource newLocalStorageService(ObserveSwingApplicationConfig config) throws IOException, IllegalStateException { // // // H2DataSourceConfig c = @@ -280,7 +280,7 @@ public class ObserveServiceHelper { * @throws IOException si pb d'IO */ //FIXME -// public static boolean isLocalStorageExists(IObserveConfig config) throws IOException { +// public static boolean isLocalStorageExists(ObserveSwingApplicationConfig config) throws IOException { // // // build a local storage service config // H2DataSourceConfig storageConfig = config.toH2StorageConfig( @@ -303,7 +303,7 @@ public class ObserveServiceHelper { * @param config la configuration à utiliser * @return {@code true} si le dump existe, {@code false} sinon. */ - public static boolean isInitialDbExists(IObserveConfig config) { + public static boolean isInitialDbExists(ObserveSwingApplicationConfig config) { boolean dbExists = config.getInitialDbDump().exists(); return dbExists; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java similarity index 60% rename from observe-application-swing/src/main/java/fr/ird/observe/ObserveContext.java rename to observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index df5267a..decdfb3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -21,10 +21,23 @@ */ package fr.ird.observe; -import fr.ird.observe.business.ObserveApplicationContext; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.business.BinderService; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.business.gps.GPSService; +import fr.ird.observe.business.validation.ObserveValidator; +import fr.ird.observe.business.validation.ValidationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceInitializer; +import fr.ird.observe.services.ObserveServiceMainFactory; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; @@ -44,18 +57,24 @@ 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.tree.ObserveTreeHelper; +import jaxx.runtime.JAXXUtil; +import jaxx.runtime.context.DefaultApplicationContext; import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.cfg.Environment; +import org.nuiton.decorator.Decorator; -import javax.swing.*; -import java.awt.*; +import javax.swing.ActionMap; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import java.awt.Component; +import java.io.File; import java.util.Arrays; import java.util.List; +import java.util.Locale; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -71,14 +90,62 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.0 */ -public class ObserveContext extends ObserveApplicationContext { +public class ObserveSwingApplicationContext extends DefaultApplicationContext { /** Logger */ - static private Log log = LogFactory.getLog(ObserveContext.class); + static private Log log = LogFactory.getLog(ObserveSwingApplicationContext.class); - //------------------------------------------- - // UI instances - //------------------------------------------- + /** 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 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 */ + public static final JAXXContextEntryDef<ObserveDataSourceConfiguration> DATA_SOURCE_CONFIGURATION_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveDataSourceConfiguration.class); + + /** the jaxx context entry to store the data source connexion */ + public static final JAXXContextEntryDef<ObserveDataSourceConnection> DATA_SOURCE_CONNECTION_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveDataSourceConnection.class); + + /** the jaxx context entry to store the decorator service */ + public static final JAXXContextEntryDef<BinderService> BINDER_SERVICE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(BinderService.class); + + /** the jaxx context entry to store the gps service */ + public static final JAXXContextEntryDef<GPSService> GPS_SERVICE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(GPSService.class); + + //FIXME +// /** the jaxx context entry to store the consolidate data service */ +// public static final JAXXContextEntryDef<ConsolidateDataService> CONSOLIDATE_DATA_SERVICE_ENTRY_DEF = +// JAXXUtil.newContextEntryDef(ConsolidateDataService.class); + //FIXME +// /** the jaxx context entry to store the data service */ +// public static final JAXXContextEntryDef<DataService> DATA_SERVICE_ENTRY_DEF = +// JAXXUtil.newContextEntryDef(DataService.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<DataSource> DATA_SOURCE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(DataSource.class); + + public static final JAXXContextEntryDef<ValidationContext> VALIDATION_CONTEXT_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ValidationContext.class); /** the jaxx context entry to store the main ui */ private static final JAXXContextEntryDef<ObserveMainUI> MAIN_UI_ENTRY_DEF = @@ -96,26 +163,255 @@ public class ObserveContext extends ObserveApplicationContext { public static final JAXXContextEntryDef<List<String>> NODE_TO_RESELECT_ENTRY_DEF = UIHelper.newListContextEntryDef("nodeToReselect"); + public <O> Decorator<O> getDecorator(Class<O> clazz) { + DecoratorService provider = getDecoratorService(); + Decorator<O> value = provider.getDecoratorByType(clazz); + return value; + } + + public <O> Decorator<O> getDecorator(Class<O> clazz, String name) { + DecoratorService provider = getDecoratorService(); + Decorator<O> value = provider.getDecoratorByType(clazz, name); + return value; + } + + public ObserveSwingApplicationConfig getConfig() { + return CONFIG_ENTRY_DEF.getContextValue(this); + } + + + + public final DataSource getDataSource() { + DataSource dataSource = DATA_SOURCE_ENTRY_DEF.getContextValue(this); + return dataSource; + } + + public final void setDataSource(DataSource source) { + if (source == null) { + DATA_SOURCE_ENTRY_DEF.removeContextValue(this); + } else { + DATA_SOURCE_ENTRY_DEF.setContextValue(this, source); + } + } + + public final DecoratorService getDecoratorService() { + DecoratorService decoratorService = + DECORATOR_SERVICE_ENTRY_DEF.getContextValue(this); + if (decoratorService == null) { + + // initialisation du service de décoration + // initialisation + 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; + } + + public final ObserveServiceMainFactory getObserveServiceMainFactory() { + + ObserveServiceMainFactory serviceMainFactory = SERVICE_MAIN_FACTORY_ENTRY_DEF.getContextValue(this); + + if (serviceMainFactory == null) { + + serviceMainFactory = ObserveServiceMainFactory.get(); + + SERVICE_MAIN_FACTORY_ENTRY_DEF.setContextValue(this, serviceMainFactory); + + } + + return serviceMainFactory; + } + + 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 final void setObserveDataSourceConfiguration(ObserveDataSourceConfiguration sourceConfiguration) { + DATA_SOURCE_CONFIGURATION_ENTRY_DEF.setContextValue(this, sourceConfiguration); + } + + public final ObserveDataSourceConfiguration getObserveDataSourceConfiguration() { + return DATA_SOURCE_CONFIGURATION_ENTRY_DEF.getContextValue(this); + } + + public final void setObserveDataSourceConnection(ObserveDataSourceConnection connection) { + DATA_SOURCE_CONNECTION_ENTRY_DEF.setContextValue(this, connection); + } + + public final ObserveDataSourceConnection getObserveDataSourceConnection() { + return DATA_SOURCE_CONNECTION_ENTRY_DEF.getContextValue(this); + } + + public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + + return newService(dataSourceConfiguration, null, serviceType); + } + + public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { + + ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(dataSourceConfiguration, dataSourceConnection); + + ObserveServiceMainFactory serviceFactory = getObserveServiceMainFactory(); + + return serviceFactory.newService(observeServiceInitializer, serviceType); + } + + public ObserveServiceInitializer getObserveServiceInitializer() { + + ObserveDataSourceConnection connection = getObserveDataSourceConnection(); + + ObserveDataSourceConfiguration configuration = getObserveDataSourceConfiguration(); + + ObserveServiceInitializer serviceInitializer = getObserveServiceInitializer(configuration, connection); + + return serviceInitializer; + } + + protected ObserveServiceInitializer getObserveServiceInitializer(ObserveDataSourceConfiguration dataSourceConfiguration, ObserveDataSourceConnection dataSourceConnection) { + + Locale locale = getConfig().getLocale(); + + File tmpDirectory = getConfig().getTmpDirectory(); + + ReferentialLocale referentialLocale = ReferentialLocale.valueOf(locale); + + ObserveDataSourceConfigurationAndConnection configurationAndConnection = new ObserveDataSourceConfigurationAndConnection(dataSourceConfiguration, dataSourceConnection); + + ObserveServiceInitializer observeServiceInitializer = ObserveServiceInitializer.create( + locale, + referentialLocale, + tmpDirectory, + configurationAndConnection + ); + + return observeServiceInitializer; + } + + public <S extends ObserveService> S newService(Class<S> serviceType) { + + ObserveServiceMainFactory serviceFactory = getObserveServiceMainFactory(); + + S service = serviceFactory.newService(getObserveServiceInitializer(), serviceType); + + return service; + } + + public final BinderService getBinderService() { + BinderService service = BINDER_SERVICE_ENTRY_DEF.getContextValue(this); + if (service == null) { + service = new BinderService(); + BINDER_SERVICE_ENTRY_DEF.setContextValue(this, service); + } + return service; + } + + public final GPSService getGPSService() { + GPSService service = + GPS_SERVICE_ENTRY_DEF.getContextValue(this); + if (service == null) { + service = new GPSService(); + GPS_SERVICE_ENTRY_DEF.setContextValue(this, service); + } + return service; + } + + //FIXME +// public ConsolidateDataService getConsolidateDataService() { +// +// ConsolidateDataService service = +// CONSOLIDATE_DATA_SERVICE_ENTRY_DEF.getContextValue(this); +// if (service == null) { +// service = new ConsolidateDataService(); +// CONSOLIDATE_DATA_SERVICE_ENTRY_DEF.setContextValue(this, service); +// } +// return service; +// } + + 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 final ValidationContext getValidationContext() { + ValidationContext result = + VALIDATION_CONTEXT_ENTRY_DEF.getContextValue(this); + if (result == null) { + result = new ValidationContext(); + ObserveValidator.setValidationContext(result); + result.setDataContext(getDataContext()); + VALIDATION_CONTEXT_ENTRY_DEF.setContextValue(this, result); + } + return result; + } + + /** + * close the application's context. + * + * @throws Exception if any pb while closing + */ + public void close() throws Exception { + if (log.isDebugEnabled()) { + log.debug("closing context " + this); + } + + // fermeture du context de données + if (getDataSource() != null) { + setDataSource(null); + } + + getValidationContext().closeDataSource(); + + // fermeture des services de persistances ouverts + //FIXME +// DataSourceFactory.dispose(); + + // fermeture du context principal + clear(); + + //FIXME +// ObserveServiceHelper.close(); + } + + + //------------------------------------------- + // UI instances + //------------------------------------------- + /** * Récupération du contexte applicatif. * * @return l'instance partagé du contexte. * @throws IllegalStateException si le contexte n'a pas été initialisé */ - public static ObserveContext get() throws IllegalStateException { - //FIXME -// return (ObserveContext) ObserveServiceHelper.get(); - return null; + public static ObserveSwingApplicationContext get() throws IllegalStateException { + return ObserveServiceHelper.get(); } public static boolean isClosed() { - //FIXME -// return ObserveServiceHelper.isClosed(); - return false; - } - - public ObserveConfig getConfig() { - return (ObserveConfig) super.getConfig(); + return ObserveServiceHelper.isClosed(); } public ObserveMainUI getObserveMainUI() { @@ -207,7 +503,7 @@ public class ObserveContext extends ObserveApplicationContext { /** Un objet pour bloquer le context */ protected final Object lock = new Object(); - public ObserveContext() { + public ObserveSwingApplicationContext() { } @SuppressWarnings({"UnconditionalWait", "WaitOrAwaitWithoutTimeout", "WaitNotInLoop"}) @@ -231,7 +527,7 @@ public class ObserveContext extends ObserveApplicationContext { ObserveRunner.getRunner().setReload(true); } - public void initStorage(ObserveConfig config, + public void initStorage(ObserveSwingApplicationConfig config, ObserveMainUI mainUI, boolean askToCreate) { try { @@ -264,7 +560,7 @@ public class ObserveContext extends ObserveApplicationContext { } } - protected void createStorage(ObserveConfig config, + protected void createStorage(ObserveSwingApplicationConfig config, ObserveMainUIHandler uiHandler) { int reponse = UIHelper.askUser( @@ -471,7 +767,7 @@ public class ObserveContext extends ObserveApplicationContext { // // // toutes les données sont chargées, on peut declarer le service // // comme ouvert dans la configuration -// ObserveConfig config = getConfig(); +// ObserveSwingApplicationConfig config = getConfig(); // config.setMainStorageOpened(true); // config.setMainStorageOpenedLocal(source instanceof H2DataSource); // diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/IObserveConfig.java b/observe-application-swing/src/main/java/fr/ird/observe/business/IObserveConfig.java index 282c604..3d0322a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/IObserveConfig.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/IObserveConfig.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.business; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; import org.nuiton.util.version.Version; import java.beans.PropertyChangeListener; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java index 5037233..66b1965 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.business; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.gps.GPSService; @@ -51,8 +52,8 @@ public class ObserveApplicationContext extends DefaultApplicationContext { static private Log log = LogFactory.getLog(ObserveApplicationContext.class); /** the jaxx context entry to store the config */ - public static final JAXXContextEntryDef<IObserveConfig> CONFIG_ENTRY_DEF = - JAXXUtil.newContextEntryDef(IObserveConfig.class); + 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 = @@ -98,7 +99,7 @@ public class ObserveApplicationContext extends DefaultApplicationContext { return value; } - public IObserveConfig getConfig() { + public ObserveSwingApplicationConfig getConfig() { return CONFIG_ENTRY_DEF.getContextValue(this); } @@ -122,7 +123,7 @@ public class ObserveApplicationContext extends DefaultApplicationContext { // initialisation du service de décoration // initialisation - IObserveConfig config = getConfig(); + ObserveSwingApplicationConfig config = getConfig(); ReferentialLocale loc = ReferentialLocale.FR; if (config != null) { Locale dbLocale = config.getDbLocale(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceConfig.java b/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceConfig.java index 7ce6315..ead8e9a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceConfig.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceConfig.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.business.db; -import fr.ird.observe.business.db.constants.CreationMode; +import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.business.db.constants.DataPolicy; import fr.ird.observe.business.db.constants.DataSourceState; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceFactory.java b/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceFactory.java index 39838fb..6846264 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceFactory.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceFactory.java @@ -85,7 +85,7 @@ public class DataSourceFactory { // }; //FIXME -// public static Version getDbVersion() { +// public static Version getModelVersion() { // if (ObserveServiceHelper.context != null) { // ApplicationConfig config; // config = ObserveServiceHelper.context.getContextValue(ApplicationConfig.class); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CommonDataSourceConfigParam.java b/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CommonDataSourceConfigParam.java index a41bd4d..3aa71f6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CommonDataSourceConfigParam.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CommonDataSourceConfigParam.java @@ -23,6 +23,7 @@ package fr.ird.observe.business.db.constants; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceConfigParam; +import fr.ird.observe.db.constantes.CreationMode; import org.hibernate.cfg.Environment; import org.nuiton.topia.migration.TopiaMigrationEngine; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ObserveValidator.java b/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ObserveValidator.java index 39d1af5..621740d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ObserveValidator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ObserveValidator.java @@ -23,8 +23,8 @@ package fr.ird.observe.business.validation; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ValueStack; -import fr.ird.observe.business.ObserveApplicationContext; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSourceFactory; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; @@ -111,7 +111,7 @@ public class ObserveValidator<B> extends SwingValidator<B> { if (log.isDebugEnabled()) { log.debug("No validation context registred, try in application context..."); } - ObserveApplicationContext rootContext; + ObserveSwingApplicationContext rootContext; rootContext = ObserveServiceHelper.get(); if (rootContext == null) { throw new IllegalStateException( diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ValidationMessageDetector.java b/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ValidationMessageDetector.java index 6d0b462..0898862 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ValidationMessageDetector.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ValidationMessageDetector.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.business.validation; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.services.dto.IdDto; import org.apache.commons.logging.Log; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveApplicationConfigProvider.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveApplicationConfigProvider.java similarity index 90% rename from observe-application-swing/src/main/java/fr/ird/observe/ObserveApplicationConfigProvider.java rename to observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveApplicationConfigProvider.java index 95171d1..3408e52 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveApplicationConfigProvider.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveApplicationConfigProvider.java @@ -19,8 +19,9 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe; +package fr.ird.observe.configuration; +import fr.ird.observe.ObserveCLAction; import org.nuiton.config.ApplicationConfigProvider; import org.nuiton.config.ConfigActionDef; import org.nuiton.config.ConfigOptionDef; @@ -39,7 +40,7 @@ public class ObserveApplicationConfigProvider implements ApplicationConfigProvid @Override public String getName() { - return "observe"; + return "observeSwing"; } @Override @@ -49,7 +50,7 @@ public class ObserveApplicationConfigProvider implements ApplicationConfigProvid @Override public ConfigOptionDef[] getOptions() { - return ObserveConfigOption.values(); + return ObserveSwingApplicationConfigOption.values(); } @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfig.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfig.java new file mode 100644 index 0000000..499bfe8 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfig.java @@ -0,0 +1,1152 @@ +/* + * #%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% + */ +package fr.ird.observe.configuration; + +import com.google.common.base.Charsets; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import fr.ird.observe.ObserveCLAction; +import fr.ird.observe.ObserveResourceManager; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.ui.UIHelper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.config.ApplicationConfig; +import org.nuiton.config.ApplicationConfigHelper; +import org.nuiton.config.ApplicationConfigProvider; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; + +import javax.swing.JOptionPane; +import java.awt.Color; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.Properties; +import java.util.Set; + +import static fr.ird.observe.ObserveResourceManager.Resource; +import static org.nuiton.i18n.I18n.t; + +/** + * La configuration de l'application. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.0 + */ +public class ObserveSwingApplicationConfig extends ApplicationConfig { + + + /** + * le fichier de configuration de l'application avec les informations sur le + * projet (version, license,...) et la configuration des ui (icons, ...) + */ + public static final String APPLICATION_PROPERTIES = "/observe.properties"; + + /** le lastName du repertoire ou sont les donnees de l'application */ + public static final String USER_DIRECTORY_FILENAME = ".observe"; + + /** le pattern du fichier de sauvegarde d'une base locale */ + public static final String BACKUP_DB_PATTERN = "obstuna-local-%1$tF--%1$tk-%1$tM-%1$tS.sql.gz"; + + /** le pattern du fichier de sauvegarde d'une base access importée */ + public static final String ACCESS_DB_PATTERN = "import-access-%1$tF--%1$tk-%1$tM-%1$tS.sql.gz"; + + /** le pattern du fichier de rapport après validation */ + public static final String REPORT_PATTERN = "report-%1$tF--%1$tk-%1$tM-%1$tS.sql.gz"; + + public static final String DB_NAME = "obstuna"; + + /** + * La version de l'application. + */ + public static final String APPLICATION_VERSION = "application.version"; + + public static final String VERSION = "version"; + + public static final String PROPERTY_DEFAULT_DB_MODE = "defaultDbMode"; + + public static final String PROPERTY_DEFAULT_CREATION_MODE = "defaultCreationMode"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_TARGET_CATCH_ID = "speciesListSeineTargetCatchId"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID = "speciesListSeineSchoolEstimateId"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID = "speciesListSeineObjectSchoolEstimateId"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID = "speciesListSeineNonTargetCatchId"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID = "speciesListSeineObjectObservedSpeciesId"; + + public static final String PROPERTY_SPECIES_LIST_LONGLINE_CATCH_ID = "speciesListLonglineCatchId"; + + public static final String PROPERTY_SPECIES_LIST_LONGLINE_ENCOUNTER_ID = "speciesListLonglineEncounterId"; + + public static final String PROPERTY_SPECIES_LIST_LONGLINE_DEPREDATOR_ID = "speciesListLonglineDepredatorId"; + + public static final String PROPERTY_VERSION = "version"; + + public static final String PROPERTY_DB_VERSION = "dbVersion"; + + public static final String PROPERTY_AUTO_POPUP_NUMBER_EDITOR = "autoPopupNumberEditor"; + + public static final String PROPERTY_SHOW_NUMBER_EDITOR_BUTTON = "showNumberEditorButton"; + + public static final String PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER= "showTimeEditorSlider"; + + public static final String PROPERTY_LOCAL_STORAGE_EXIST = "localStorageExist"; + + public static final String PROPERTY_INITIAL_DUMP_EXIST = "initialDumpExist"; + + public static final String PROPERTY_MAIN_STORAGE_OPENED = "mainStorageOpened"; + + public static final String PROPERTY_STORE_REMOTE_STORAGE = "storeRemoteStorage"; + + public static final String PROPERTY_DEFAULT_GPS_MAX_DELAY = "defaultGpsMaxDelay"; + + public static final String PROPERTY_DEFAULT_GPS_MAX_SPEED = "defaultGpsMaxSpeed"; + + public static final String PROPERTY_CHANGE_SYNCHRO_SRC = "changeSynchroSrc"; + + public static final String PROPERTY_NON_TARGET_OBSERVATION = "nonTargetObservation"; + + public static final String PROPERTY_TARGET_DISCARDS_OBSERVATION = "targetDiscardsObservation"; + + public static final String PROPERTY_SAMPLES_OBSERVATION = "samplesObservation"; + + public static final String PROPERTY_OBJECTS_OBSERVATION = "objectsObservation"; + + public static final String PROPERTY_DETAILLED_ACTIVITIES_OBSERVATION = "detailledActivitiesObservation"; + + public static final String PROPERTY_MAMMALS_OBSERVATION = "mammalsObservation"; + + public static final String PROPERTY_BIRDS_OBSERVATION = "birdsObservation"; + + public static final String PROPERTY_BAIT_OBSERVATION = "baitObservation"; + + public static final String PROPERTY_RESOURCES_DIRECTORY = "resourcesDirectory"; + + public static final String PROPERTY_LOCALE = "locale"; + + public static final String PROPERTY_DB_LOCALE = "dbLocale"; + + public static final String PROPERTY_CAN_MIGRATE_OBSTUNA = "canMigrateObstuna"; + + public static final String PROPERTY_CAN_MIGRATE_H2 = "canMigrateH2"; + + public static final String PROPERTY_MAIN_STORAGE_OPENED_LOCAL = "mainStorageOpenedLocal"; + + public static final String PROPERTY_COPYRIGHT_TEXT = "copyrightText"; + + public static final String PROPERTY_FULL_SCREEN = "fullScreen"; + + public static final String PROPERTY_LOCAL_DBDIRECTORY = "localDBDirectory"; + + public static final String PROPERTY_I18N_DIRECTORY = "i18nDirectory"; + + public static final String PROPERTY_INITIAL_DB_DUMP = "initialDbDump"; + + public static final String PROPERTY_BACKUP_DIRECTORY = "backupDirectory"; + + public static final String PROPERTY_REPORT_DIRECTORY = "reportDirectory"; + + public static final String PROPERTY_MAP_DIRECTORY = "mapDirectory"; + + public static final String PROPERTY_TMP_DIRECTORY = "tmpDirectory"; + + public static final String PROPERTY_DISPLAY_MAIN_UI = "displayMainUI"; + + public static final String PROPERTY_CAN_USE_UI = "canUseUI"; + + public static final String PROPERTY_ADJUSTING = "adjusting"; + + public static final String PROPERTY_H2_LOGIN = "h2Login"; + + public static final String PROPERTY_H2_PASSWORD = "h2Password"; + + public static final String PROPERTY_OBSTUNA_URL = "obstunaUrl"; + + public static final String PROPERTY_OBSTUNA_LOGIN = "obstunaLogin"; + + public static final String PROPERTY_OBSTUNA_PASSWORD = "obstunaPassword"; + + public static final String PROPERTY_OBSTUNA_USE_SSL = "obstunaUseSsl"; + + public static final String PROPERTY_LOAD_LOCAL_STORAGE = "loadLocalStorage"; + + public static final String PROPERTY_SHOW_MIGRATION_PROGRESSION = "showMigrationProgression"; + + public static final String PROPERTY_SHOW_MIGRATION_SQL = "showMigrationSql"; + + public static final String PROPERTY_VALIDATION_REPORT_DIRECTORY = "validationReportDirectory"; + + public static final String PROPERTY_SHOW_SQL = "showSql"; + + public static final String PROPERTY_H2_SERVER_PORT = "h2ServerPort"; + + public static final String PROPERTY_DEV_MODE = "devMode"; + + /** Logger */ + static private Log log = LogFactory.getLog(ObserveSwingApplicationConfig.class); + + protected static final String DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME = "observeSwing.conf"; + + /** + * un drepeau pour savoir s'il faut lancer l'interface graphique. Cette + * valeur peut être programmées lors des actions. + */ + protected boolean displayMainUI = true; + + /** drapeau pour savoir si une base locale existe */ + protected boolean localStorageExist; + + /** + * drapeau pour savoir si le dump initial a ete chargee depuis la base + * centrale + */ + protected boolean initialDumpExist; + + /** drapeau pour savoir si une source de données est ouverte */ + protected boolean mainStorageOpened; + + /** + * drapeau pour savoir si la source ouverte est locale (attention, lorsqu'il + * n'y a pas de storage d'ouvert, la valeur est null). + */ + protected Boolean mainStorageOpenedLocal; + + /** + * drapeau pour savoir si on peut utiliser des ui dans l'environnement. + * <p/> + * Par defaut, on suppose qu'on peut utiliser l'environnement graphique et + * si on désactive explicitement ou si pas d'environnement graphique + * trouvé. + */ + protected boolean canUseUI = true; + + /** La version de l'application */ + private Version version; + + /** Texte du copyright (calculé dynamiquement). */ + protected String copyrightText; + + /** + * Liste des options qu'on ne peut pas sauvegarder (les mots de passes, + * les options d'admin pour les simples utilisateurs,...). + * + * @since 1.5 + */ + protected String[] unsavables; + + //FIXME + private final ImmutableSet<String> longlinVesselTypeIds = ImmutableSet.copyOf( + Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505", + "fr.ird.observe.entities.referentiel.VesselType#1239832675736#0.8708229847859869", + "fr.ird.observe.entities.referentiel.VesselType#1239832686137#0.1")); + + private final ImmutableSet<String> seineVesselTypeIds = ImmutableSet.copyOf( + Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505", + "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.307197212385357", + "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.7380146830307519", + "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.9086075071905084", + "fr.ird.observe.entities.referentiel.VesselType#1239832675737#0.43324169605639407")); + + public ObserveSwingApplicationConfig() { + this(DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME); + } + + public ObserveSwingApplicationConfig(String confFileName) { + setEncoding(Charsets.UTF_8.name()); + setConfigFileName(confFileName); + ApplicationConfigProvider applicationConfigProvider = ApplicationConfigHelper.getProvider(getClass().getClassLoader(), ObserveSwingApplicationConfigProvider.OBSERVE_SWING_CONFIGURATION_PROVIDER_NAME); + loadDefaultOptions(applicationConfigProvider.getOptions()); + } + + public boolean containActions(Step action) { + List<Action> list = actions.get(action.ordinal()); + return !(list == null || list.isEmpty()); + } + + public void initConfig(ObserveResourceManager manager) throws IOException { + + Version version = null; + + Properties p = manager.getResource(Resource.application); + + for (Object k : p.keySet()) { + String key = String.valueOf(k); + Object value = p.get(k); + if (log.isDebugEnabled()) { + log.debug("install property [" + k + "] : " + value); + } + String strValue = String.valueOf(value); + if (APPLICATION_VERSION.equals(key)) { + version = Versions.valueOf(strValue); + if (version.isSnapshot()) { + version = Versions.removeSnapshot(version); + } + + } else { + setDefaultOption(key, strValue); + } + } + + if (version == null) { + throw new IllegalStateException("No application.version found in application configuration."); + } + + setVersion(version); + setDefaultOption(VERSION, version.getVersion()); + setDefaultOption(APPLICATION_VERSION, version.getVersion()); + + // creation des actions disponibles + for (ObserveCLAction.ActionDefinition a : ObserveCLAction.ActionDefinition.values()) { + + for (String alias : a.aliases) { + addActionAlias(alias, a.action); + } + } + + if (log.isInfoEnabled()) { + String message = getConfigurationDescription(); + log.info(message); + } + } + + @Override + protected void migrateUserConfigurationFile(File oldHomeConfig, + File homeConfig) throws IOException { + super.migrateUserConfigurationFile(oldHomeConfig, homeConfig); + // on previent l'utilisateur que son fichier de configuration a été + // deplacé + JOptionPane.showInternalMessageDialog(null, + t("observe.title.config.migrate"), + t("observe.runner.config.migrate.file", + oldHomeConfig.getName(), + oldHomeConfig, + homeConfig + ), + JOptionPane.WARNING_MESSAGE); + } + + public void installSaveAction() { + // ajout de l'action de sauvegarde automatique sur certaines propriétés + + List<String> result = new ArrayList<String>(); + + for (ObserveSwingApplicationConfigOption option : ObserveSwingApplicationConfigOption.values()) { + String key = option.getPropertyKey(); + if (key != null) { + // add a listener + if (log.isDebugEnabled()) { + log.debug("register action listener for property " + key); + } + result.add(key); + } + } + + installSaveUserAction(result.toArray(new String[result.size()])); + } + + public String getCopyrightText() { + if (copyrightText == null) { + Date date = new Date(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int year = calendar.get(Calendar.YEAR); + copyrightText = "Version " + getVersion() + " IRD @ 2008-" + year; + } + return copyrightText; + } + + public boolean isDevMode() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.DEV_MODE.key); + return result; + } + + public Version getVersion() { + return version; + } + + public Version getModelVersion() { + Version result = getOption(Version.class, ObserveSwingApplicationConfigOption.MODEL_VERSION.key); + return result; + } + + public boolean isAutoPopupNumberEditor() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.AUTO_POPUP_NUMBER_EDITOR.key); + return result; + } + + public boolean isShowNumberEditorButton() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_NUMBER_EDITOR_BUTTON.key); + return result; + } + + public boolean isShowTimeEditorSlider() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER.key); + return result; + } + + public boolean isFullScreen() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.FULL_SCREEN.key); + return result; + } + + public File getDataDirectory() { + File file = getOptionAsFile(ObserveSwingApplicationConfigOption.DATA_DIRECTORY.key); + return file; + } + + public File getValidationReportDirectory() { + File file = getOptionAsFile(ObserveSwingApplicationConfigOption.VALIDATION_REPORT_DIRECTORY.key); + return file; + } + + public File getLocalDBDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.DB_DIRECTORY.key); + return result; + } + + public File getResourcesDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.RESOURCES_DIRECTORY.key); + return result; + } + + public File getI18nDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.I18N_DIRECTORY.key); + return result; + } + + public void setResourcesDirectory(File newValue) { + setOption(ObserveSwingApplicationConfigOption.RESOURCES_DIRECTORY, newValue); + } + + public File getInitialDbDump() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.INITIAL_DB_DUMP.key); + return result; + } + + public File getBackupDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.BACKUP_DIRECTORY.key); + return result; + } + + public File getReportDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.REPORT_DIRECTORY.key); + return result; + } + + public File getTmpDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.TMP_DIRECTORY.key); + return result; + } + + public File getLogConfigurationFile() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.LOG_CONFIGURATION_FILE.key); + return result; + } + + public String getH2Login() { + String result = getOption(ObserveSwingApplicationConfigOption.H2_LOGIN.key); + return result; + } + + public char[] getH2Password() { + String result = getOption(ObserveSwingApplicationConfigOption.H2_PASSWORD.key); + char[] r = result.toCharArray(); + return r; + } + + public int getH2ServerPort() { + Integer port = getOptionAsInt(ObserveSwingApplicationConfigOption.H2_SERVER_PORT.key); + return port; + } + + public String getObstunaUrl() { + String result = getOption(ObserveSwingApplicationConfigOption.OBSTUNA_URL.key); + return result; + } + + public void setObstunaUrl(String jdbcUrl) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_URL.key, jdbcUrl); + } + + public String getObstunaLogin() { + String result = getOption(ObserveSwingApplicationConfigOption.OBSTUNA_LOGIN.key); + return result; + } + + public void setObstunaLogin(String login) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_LOGIN.key, login); + } + + public char[] getObstunaPassword() { + String result = getOption(ObserveSwingApplicationConfigOption.OBSTUNA_PASSWORD.key); + char[] r = result.toCharArray(); + return r; + } + + public void setObstunaPassword(char[] password) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_PASSWORD.key, new String(password)); + } + + public boolean isObstunaUseSsl() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.OBSTUNA_USE_SSL_CERT.key); + return result; + } + + public void setObstunaUseSsl(boolean useSsl) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_USE_SSL_CERT, useSsl); + } + + public URL getServerUrl() { + URL result = (URL) getOption(ObserveSwingApplicationConfigOption.SERVER_URL); + return result; + } + + public void setServerUrl(URL serverUrl) { + setOption(ObserveSwingApplicationConfigOption.SERVER_URL, serverUrl); + } + + public String getServerLogin() { + String result = getOption(ObserveSwingApplicationConfigOption.SERVER_LOGIN.key); + return result; + } + + public void setServerLogin(String serverLoginl) { + setOption(ObserveSwingApplicationConfigOption.SERVER_LOGIN.key, serverLoginl); + } + + public char[] getServerPassword() { + String result = getOption(ObserveSwingApplicationConfigOption.SERVER_PASSWORD.key); + char[] r = result.toCharArray(); + return r; + } + + public void setServerPassword(char[] password) { + setOption(ObserveSwingApplicationConfigOption.SERVER_PASSWORD.key, new String(password)); + } + + public String getServerDataBaseName() { + String result = getOption(ObserveSwingApplicationConfigOption.SERVER_DATABASE_NAME.key); + return result; + } + + public void setServerDataBaseName(String dataBaseName) { + setOption(ObserveSwingApplicationConfigOption.SERVER_DATABASE_NAME.key, dataBaseName); + } + + public DbMode getDefaultDbMode() { + DbMode result = getOption(DbMode.class, ObserveSwingApplicationConfigOption.DEFAULT_DB_MODE.key); + return result; + } + + public CreationMode getDefaultCreationMode() { + CreationMode result = + getOption(CreationMode.class, ObserveSwingApplicationConfigOption.DEFAULT_CREATION_MODE.key); + return result; + } + + public boolean isShowMigrationSql() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_SQL.key); + return result; + } + + public boolean isShowMigrationProgression() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_PROGRESSION.key); + return result; + } + + public boolean isShowSql() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_SQL.key); + return result; + } + + public int getDefaultGpsMaxDelay() { + Integer i = getOptionAsInt(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_DELAY.key); + return i; + } + + public float getDefaultGpsMaxSpeed() { + double i = getOptionAsDouble(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_SPEED.key); + return (float) i; + } + + public boolean isChangeSynchroSrc() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.CHANGE_SYNCHRO_SRC.key); + return result; + } + + public boolean isStoreRemoteStorage() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.STORE_REMOTE_STORAGE.key); + return result; + } + + public boolean isCanMigrateObstuna() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE.key); + return result; + } + + public boolean isCanMigrateH2() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.H2_CAN_MIGRATE.key); + return result; + } + + public boolean isLoadLocalStorage() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.LOAD_LOCAL_STORAGE.key); + return result; + } + + public Locale getLocale() { + Locale result = getOption(Locale.class, ObserveSwingApplicationConfigOption.LOCALE.key); + return result; + } + + public Locale getDbLocale() { + Locale result = getOption(Locale.class, ObserveSwingApplicationConfigOption.DB_LOCALE.key); + return result; + } + + public int getNonTargetObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.NON_TARGET_OBSERVATION.key); + return value; + } + + public int getTargetDiscardsObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.TARGET_DISCARDS_OBSERVATION.key); + return value; + } + + public int getSamplesObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.SAMPLES_OBSERVATION.key); + return value; + } + + public int getObjectsObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.OBJECTS_OBSERVATION.key); + return value; + } + + public int getDetailledActivitiesObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.DETAILLED_ACTIVITIES_OBSERVATION.key); + return value; + } + + public int getMammalsObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.MAMMALS_OBSERVATION.key); + return value; + } + + public int getBirdsObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.BIRDS_OBSERVATION.key); + return value; + } + + public int getBaitObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.BAIT_OBSERVATION.key); + return value; + } + + public boolean isDisplayMainUI() { + return displayMainUI; + } + + public boolean isCanUseUI() { + return canUseUI; + } + + public boolean isLocalStorageExist() { + return localStorageExist; + } + + public boolean isInitialDumpExist() { + return initialDumpExist; + } + + public boolean isMainStorageOpened() { + return mainStorageOpened; + } + + public Boolean getMainStorageOpenedLocal() { + return mainStorageOpenedLocal; + } + + public void setLocalStorageExist(boolean newValue) { + localStorageExist = newValue; + // always force propagation + firePropertyChange(PROPERTY_LOCAL_STORAGE_EXIST, newValue); + } + + public void setInitialDumpExist(boolean newValue) { + initialDumpExist = newValue; + // always force propagation + firePropertyChange(PROPERTY_INITIAL_DUMP_EXIST, newValue); + } + + public void setMainStorageOpened(boolean newValue) { + mainStorageOpened = newValue; + if (!newValue) { + // on force la reinitialisation + setMainStorageOpenedLocal(null); + } + // always force propagation + firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED, newValue); + } + + public void setMainStorageOpenedLocal(Boolean newValue) { + mainStorageOpenedLocal = newValue; + // always force propagation + firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED + "Local", newValue); + } + + public void setDisplayMainUI(boolean b) { + displayMainUI = b; + } + + public void setCanUseUI(boolean canUseUI) { + this.canUseUI = canUseUI; + if (!canUseUI) { + // on ne pourra pas lancer l'ui principale + setDisplayMainUI(false); + } + } + + public void setAutoPopupNumberEditor(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.AUTO_POPUP_NUMBER_EDITOR, newValue); + } + + public void setShowNumberEditorButton(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.SHOW_NUMBER_EDITOR_BUTTON, newValue); + } + + public void setShowTimeEditorSlider(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER, newValue); + } + + public void setFullScreen(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.FULL_SCREEN, newValue); + } + + public void setChangeSynchroSrc(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.CHANGE_SYNCHRO_SRC, newValue); + } + + public void setStoreRemoteStorage(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.STORE_REMOTE_STORAGE, newValue); + } + + public void setLoadLocalStorage(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.LOAD_LOCAL_STORAGE, newValue); + } + + public void setDefaultDbMode(DbMode newValue) { + setOption(ObserveSwingApplicationConfigOption.DEFAULT_DB_MODE, newValue); + } + + public void setDefaultCreationMode(CreationMode newValue) { + setOption(ObserveSwingApplicationConfigOption.DEFAULT_CREATION_MODE, newValue); + } + + public void setDefaultGpsMaxDelay(int newValue) { + setOption(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_DELAY, newValue); + } + + public void setDefaultGpsMaxSpeed(float newValue) { + setOption(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_SPEED, newValue); + } + + public void setLocale(Locale newValue) { + setOption(ObserveSwingApplicationConfigOption.LOCALE, newValue); + } + + public void setDbLocale(Locale newValue) { + setOption(ObserveSwingApplicationConfigOption.DB_LOCALE, newValue); + } + + public void setCanMigrateObstuna(Boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE, newValue); + } + + public void setCanMigrateH2(Boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.H2_CAN_MIGRATE, newValue); + } + + public void setNonTargetObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.NON_TARGET_OBSERVATION, newValue); + } + + public void setTargetDiscardsObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.TARGET_DISCARDS_OBSERVATION, newValue); + } + + public void setSamplesObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.SAMPLES_OBSERVATION, newValue); + } + + public void setObjectsObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.OBJECTS_OBSERVATION, newValue); + } + + public void setDetailledActivitiesObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.DETAILLED_ACTIVITIES_OBSERVATION, newValue); + } + + public void setMammalsObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.MAMMALS_OBSERVATION, newValue); + } + + public void setBirdsObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.BIRDS_OBSERVATION, newValue); + } + + public void setBaitObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.BAIT_OBSERVATION, newValue); + } + + public void setShowMigrationSql(boolean showMigrationSql) { + setOption(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_SQL, showMigrationSql); + } + + public void setShowMigrationProgression(boolean showMigrationProgression) { + setOption(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_PROGRESSION, showMigrationProgression); + } + + public void setShowSql(boolean showSql) { + setOption(ObserveSwingApplicationConfigOption.SHOW_SQL, showSql); + } + + public String getSpeciesListSeineNonTargetCatchId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID.key); + return value; + } + + public String getSpeciesListSeineTargetCatchId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_TARGET_CATCH_ID.key); + return value; + } + + public String getSpeciesListSeineSchoolEstimateId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID.key); + return value; + } + + public String getSpeciesListSeineObjectObservedSpeciesId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID.key); + return value; + } + + public String getSpeciesListSeineObjectSchoolEstimateId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID.key); + return value; + } + + public String getSpeciesListLonglineCatchId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_CATCH_ID.key); + return value; + } + + public String getSpeciesListLonglineEncounterId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_ENCOUNTER_ID.key); + return value; + } + + public String getSpeciesListLonglineDepredatorId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_DEPREDATOR_ID.key); + return value; + } + + public void setSpeciesListSeineNonTargetCatchId(String speciesListSeineNonTargetCatchId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID, speciesListSeineNonTargetCatchId); + } + + public void setSpeciesListSeineTargetCatchId(String speciesListSeineTargetCatchId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_TARGET_CATCH_ID, speciesListSeineTargetCatchId); + } + + public void setSpeciesListSeineSchoolEstimateId(String speciesListSeineSchoolEstimateId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID, speciesListSeineSchoolEstimateId); + } + + public void setSpeciesListSeineObjectObservedSpeciesId(String speciesListSeineObjectObservedSpeciesId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID, speciesListSeineObjectObservedSpeciesId); + } + + public void setSpeciesListSeineObjectSchoolEstimateId(String speciesListseineObjectSchoolEstimateId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID, speciesListseineObjectSchoolEstimateId); + } + + public void setSpeciesListLonglineCatchId(String speciesListLonglineCatchId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_CATCH_ID, speciesListLonglineCatchId); + } + + public void setSpeciesListLonglineEncounterId(String speciesListLonglineEncounterId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_ENCOUNTER_ID, speciesListLonglineEncounterId); + } + + public void setSpeciesListLonglineDepredatorId(String speciesListLonglineDepredatorId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_DEPREDATOR_ID, speciesListLonglineDepredatorId); + } + + public Color getMapBackgroundColor() { + Color result = getOptionAsColor(ObserveSwingApplicationConfigOption.MAP_BACKGROUND_COLOR.key); + return result; + } + + public List<File> getMapLayerFiles() { + List<File> layers = Lists.newLinkedList(); + + for (ObserveSwingApplicationConfigOption layerOption : ObserveSwingApplicationConfigOption.MAP_LAYERS) { + File layerFile = getOptionAsFile(layerOption.key); + if (layerFile != null && layerFile.exists()) { + layers.add(layerFile); + } + } + return layers; + } + + public File getMapStyleFile() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.MAP_STYLE_FILE.key); + return result; + } + + public String[] getUnsavables() { + if (unsavables == null) { + List<String> tmp = new ArrayList<String>(); + tmp.add(ObserveSwingApplicationConfigOption.OBSTUNA_PASSWORD.getKey()); +// tmp.add(OBSTUNA_SSL_CERTIFICAT_PASSWORD.getKey()); + tmp.add(ObserveSwingApplicationConfigOption.H2_PASSWORD.getKey()); + tmp.add(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE.getKey()); + +// if (!ObserveRunner.isAdmin()) { +// // toutes les options dite admin ne sont pas sauvables +// +// for (ObserveSwingApplicationConfigOption option : values()) { +// if (option.isAdmin()) { +// +// // ne pas ajouter les options d'admin pour le simple utilisateur +// tmp.add(option.key); +// } +// } +// } + unsavables = tmp.toArray(new String[tmp.size()]); + } + return unsavables; + } + + public void saveForUser(String... excludeKeys) { + if (log.isInfoEnabled()) { + log.info(t("observe.message.save.configuration", getUserConfigFile())); + } + super.saveForUser(getUnsavables()); + } + + + public void fromStorageConfig(ObserveDataSourceConfigurationTopiaH2 config) { + setShowMigrationProgression(config.isShowMigrationProgression()); + setShowMigrationSql(config.isShowMigrationSql()); + saveForUser(); + } + + public void fromStorageConfig(ObserveDataSourceConfigurationTopiaPG config) { + setObstunaUrl(config.getJdbcUrl()); + setObstunaLogin(config.getUsername()); + setObstunaPassword(config.getPassword()); + setObstunaUseSsl(config.isUseSsl()); +// if (useSsl) { +// setOption(OBSTUNA_SSL_CERTIFICAT_FILE, +// config.getSslCertificatFile().getAbsolutePath()); +// setOption(OBSTUNA_SSL_CERTIFICAT_PASSWORD, +// new String(config.getSslCertificatPassword())); +// } else { +// setOption(OBSTUNA_SSL_CERTIFICAT_FILE.key, ""); +// setOption(OBSTUNA_SSL_CERTIFICAT_PASSWORD, EMPTY_CHAR_ARRAY); +// } + setShowMigrationProgression(config.isShowMigrationProgression()); + setShowMigrationSql(config.isShowMigrationSql()); + //TODO-TC20100311 : on devrait pas regarder si l'utilisateur veut sauver + //TODO-TC20100311 : la configuration ? + saveForUser(); + } + + public void fromStorageConfig(ObserveDataSourceConfigurationRest config) { + setServerUrl(config.getServerUrl()); + setServerLogin(config.getLogin()); + setServerPassword(config.getPassword()); + setServerDataBaseName(config.getOptionalDatabaseName().orNull()); + saveForUser(); + } + + + public ObserveDataSourceConfigurationTopiaH2 getDataSourceConfigurationH2(String label) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + + File dbDirectory = new File(getLocalDBDirectory(), DB_NAME); + + ObserveDataSourceConfigurationTopiaH2 result = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( + label, + dbDirectory, + DB_NAME, + getH2Login(), + getH2Password(), + isShowMigrationProgression(), + isShowMigrationSql() + ); + return result; + } + + public ObserveDataSourceConfigurationTopiaPG getDataSourceConfigurationPG(String label) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + + ObserveDataSourceConfigurationTopiaPG result = configurationMainFactory.createObserveDataSourceConfigurationTopiaPG( + label, + getObstunaUrl(), + getUsername(), + getObstunaPassword(), + isObstunaUseSsl(), + isShowMigrationProgression(), + isShowMigrationSql() + ); + return result; + } + + public ObserveDataSourceConfigurationRest getDataSourceConfigurationRest(String label) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + + ObserveDataSourceConfigurationRest result = configurationMainFactory.createObserveDataSourceConfigurationRest( + label, + getServerUrl(), + getServerLogin(), + getServerPassword(), + getServerDataBaseName() + ); + return result; + } + + public void removeJaxxPropertyChangeListener() { + List<String> tmp = new ArrayList<String>(); + for (ObserveSwingApplicationConfigOption option : ObserveSwingApplicationConfigOption.values()) { + String propertyName = option.getPropertyKey(); + if (propertyName != null) { + tmp.add(propertyName); + } + } + if (log.isDebugEnabled()) { + log.debug("property names to seek for options : " + tmp); + } + String[] propertyNames = tmp.toArray( + new String[tmp.size()]); + + PropertyChangeListener[] toRemove = + UIHelper.findJaxxPropertyChangeListener( + propertyNames, + getPropertyChangeListeners()); + if (toRemove == null || toRemove.length == 0) { + return; + } + if (log.isDebugEnabled()) { + log.debug("before remove : " + getPropertyChangeListeners().length); + log.debug("toRemove : " + toRemove.length); + } + for (PropertyChangeListener listener : toRemove) { + removePropertyChangeListener(listener); + } + if (log.isDebugEnabled()) { + log.debug("after remove : " + getPropertyChangeListeners().length); + } + } + + public void setOption(ObserveSwingApplicationConfigOption option, Object newValue) { + String key = option.getKey(); + Object oldValue = getOption(key); + String value = String.valueOf(newValue); + setOption(key, value); + if (log.isDebugEnabled()) { + log.debug("set option " + key + " value : " + value); + } + String propertyName = option.getPropertyKey(); + if (propertyName != null) { + // l'option est javabeans, declanchement d'un changement + if (log.isTraceEnabled()) { + log.trace("fires config change from option " + key); + } + firePropertyChange(propertyName, oldValue, newValue); + } + } + + void setVersion(Version version) { + this.version = version; + } + + public Set<String> getSeineVesselTypeIds() { + return seineVesselTypeIds; + } + + public Set<String> getLonglineVesselTypeIds() { + return longlinVesselTypeIds; + } + + public String replaceRecursiveOptions(String option) { + return super.replaceRecursiveOptions(option); + } + + public String getConfigurationDescription() { + StringBuilder builder = new StringBuilder(); + builder.append("\n====================================================================================================================="); + builder.append("\n=== Observe Swing configuration ====================================================================================="); + builder.append(String.format("\n=== %1$-40s = %2$s", "Filename", getConfigFileName())); + for (ObserveSwingApplicationConfigOption option : ObserveSwingApplicationConfigOption.orderedByNameValues()) { + builder.append(String.format("\n=== %1$-40s = %2$s", option.getKey(), getOption(option))); + } + builder.append("\n====================================================================================================================="); + return builder.toString(); + } + + ////////////////////////////////////////////////// + // Toutes les étapes d'actions + ////////////////////////////////////////////////// + + public enum Step { + + AfterInit, BeforeExit + } + + protected void firePropertyChange(String propertyName, Object newValue) { + pcs.firePropertyChange(propertyName, null, newValue); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfigOption.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java similarity index 75% rename from observe-application-swing/src/main/java/fr/ird/observe/ObserveConfigOption.java rename to observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java index ab551f1..8c5a421 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfigOption.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java @@ -19,17 +19,21 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe; +package fr.ird.observe.configuration; import com.google.common.collect.ImmutableList; -import fr.ird.observe.business.IObserveConfig; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; +import com.google.common.collect.Lists; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; import org.nuiton.config.ApplicationConfig; import org.nuiton.config.ConfigOptionDef; +import org.nuiton.util.version.Version; import java.awt.Color; import java.io.File; +import java.net.URL; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Locale; @@ -43,13 +47,13 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.2 */ -public enum ObserveConfigOption implements ConfigOptionDef { +public enum ObserveSwingApplicationConfigOption implements ConfigOptionDef { /** le lastName du fichier de configuration (sans le prefix .) */ CONFIG_FILE( ApplicationConfig.CONFIG_FILE_NAME, n("observe.config.configFileName.description"), - "observe-admin-config", + ObserveSwingApplicationConfig.DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME, String.class, true, true @@ -57,7 +61,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour afficher automatiquement la popup du clavier numerique */ DEV_MODE( - "observe." + IObserveConfig.PROPERTY_DEV_MODE, + "observe." + ObserveSwingApplicationConfig.PROPERTY_DEV_MODE, n("observe.config.devMode"), "true", Boolean.class, @@ -65,6 +69,16 @@ public enum ObserveConfigOption implements ConfigOptionDef { true ), + /** version du modèle de données */ + MODEL_VERSION( + "observe.model.version", + n("observe.model.version"), + null, + Version.class, + true, + true + ), + // directories /** le repertoire ou est stoquee la base locale */ @@ -113,7 +127,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees toutes les ressources de l'utilisateur */ RESOURCES_DIRECTORY( "resources.directory", - IObserveConfig.PROPERTY_RESOURCES_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_RESOURCES_DIRECTORY, n("observe.config.defaultResourcesDirectory.description"), "${data.directory}/resources-${version}", File.class, @@ -124,7 +138,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees les traduction i18n de l'utilisateur */ I18N_DIRECTORY( "i18n.directory", - IObserveConfig.PROPERTY_I18N_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_I18N_DIRECTORY, n("observe.config.defaultI18nDirectory.description"), "${resources.directory}/i18n", File.class, @@ -135,7 +149,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees les reports de l'utilisateur */ REPORT_DIRECTORY( "report.directory", - IObserveConfig.PROPERTY_REPORT_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_REPORT_DIRECTORY, n("observe.config.defaultReportDirectory.description"), "${resources.directory}/report", File.class, @@ -146,7 +160,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees les cartes de l'utilisateur */ MAP_DIRECTORY( "map.directory", - IObserveConfig.PROPERTY_MAP_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_MAP_DIRECTORY, n("observe.config.defaultMapDirectory.description"), "${resources.directory}/map", File.class, @@ -157,7 +171,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees les reports de validation de l'utilisateur */ VALIDATION_REPORT_DIRECTORY( "validation.report.directory", - IObserveConfig.PROPERTY_VALIDATION_REPORT_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_VALIDATION_REPORT_DIRECTORY, n("observe.config.defaultValidationReportDirectory.description"), "${data.directory}/validation-report", File.class, @@ -279,12 +293,54 @@ public enum ObserveConfigOption implements ConfigOptionDef { false ), + // Rest server config + + /** url du serveur restflag pour mettre a jour obstuna */ + SERVER_URL( + "server.url", + n("observe.config.server.url.description"), + null, + URL.class, + false, + false + ), + + /** url du serveur restflag pour mettre a jour obstuna */ + SERVER_LOGIN( + "server.login", + n("observe.config.server.login.description"), + "", + String.class, + false, + false + ), + + /** url du serveur restflag pour mettre a jour obstuna */ + SERVER_PASSWORD( + "server.password", + n("observe.config.server.password.description"), + "", + String.class, + false, + false + ), + + /** url du serveur restflag pour mettre a jour obstuna */ + SERVER_DATABASE_NAME( + "server.dataBaseName", + n("observe.config.server.dataBaseName.description"), + "", + String.class, + false, + false + ), + // change storage options /** le mode de connexion par defaut */ DEFAULT_DB_MODE( - IObserveConfig.PROPERTY_DEFAULT_DB_MODE, - IObserveConfig.PROPERTY_DEFAULT_DB_MODE, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_DB_MODE, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_DB_MODE, n("observe.config.defaultDbMode"), DbMode.USE_LOCAL.name(), DbMode.class, @@ -294,8 +350,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le mode de creation par defaut de base locale */ DEFAULT_CREATION_MODE( - IObserveConfig.PROPERTY_DEFAULT_CREATION_MODE, - IObserveConfig.PROPERTY_DEFAULT_CREATION_MODE, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_CREATION_MODE, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_CREATION_MODE, n("observe.config.defaultCreationMode"), CreationMode.IMPORT_EXTERNAL_DUMP.name(), CreationMode.class, @@ -305,8 +361,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour sauvegarder le paramétrage de la connexion a obstuna */ STORE_REMOTE_STORAGE( - "ui." + IObserveConfig.PROPERTY_STORE_REMOTE_STORAGE, - IObserveConfig.PROPERTY_STORE_REMOTE_STORAGE, + "ui." + ObserveSwingApplicationConfig.PROPERTY_STORE_REMOTE_STORAGE, + ObserveSwingApplicationConfig.PROPERTY_STORE_REMOTE_STORAGE, n("observe.config.ui.storeRemoteStorage"), "true", Boolean.class, @@ -316,8 +372,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour charge ou non la base locale au démarrage */ LOAD_LOCAL_STORAGE( - "ui." + IObserveConfig.PROPERTY_LOAD_LOCAL_STORAGE, - IObserveConfig.PROPERTY_LOAD_LOCAL_STORAGE, + "ui." + ObserveSwingApplicationConfig.PROPERTY_LOAD_LOCAL_STORAGE, + ObserveSwingApplicationConfig.PROPERTY_LOAD_LOCAL_STORAGE, n("observe.config.ui.loadLocalStorage"), "true", Boolean.class, @@ -327,8 +383,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** pour afficher la progression de la migration dans les logs */ SHOW_MIGRATION_PROGRESSION( - IObserveConfig.PROPERTY_SHOW_MIGRATION_PROGRESSION, - IObserveConfig.PROPERTY_SHOW_MIGRATION_PROGRESSION, + ObserveSwingApplicationConfig.PROPERTY_SHOW_MIGRATION_PROGRESSION, + ObserveSwingApplicationConfig.PROPERTY_SHOW_MIGRATION_PROGRESSION, n("observe.config.showMigrationProgression"), "true", Boolean.class, @@ -338,8 +394,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** pour affichier les requetes sql lors de la migration dans les logs */ SHOW_MIGRATION_SQL( - IObserveConfig.PROPERTY_SHOW_MIGRATION_SQL, - IObserveConfig.PROPERTY_SHOW_MIGRATION_SQL, + ObserveSwingApplicationConfig.PROPERTY_SHOW_MIGRATION_SQL, + ObserveSwingApplicationConfig.PROPERTY_SHOW_MIGRATION_SQL, n("observe.config.showMigrationSql"), "true", Boolean.class, @@ -348,8 +404,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { ), /** pour affichier toutes les requetes sql dans les logs */ SHOW_SQL( - IObserveConfig.PROPERTY_SHOW_SQL, - IObserveConfig.PROPERTY_SHOW_SQL, + ObserveSwingApplicationConfig.PROPERTY_SHOW_SQL, + ObserveSwingApplicationConfig.PROPERTY_SHOW_SQL, n("observe.config.showSql"), "false", Boolean.class, @@ -360,8 +416,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** temps maximum autorise en deux points gps */ DEFAULT_GPS_MAX_DELAY( - IObserveConfig.PROPERTY_DEFAULT_GPS_MAX_DELAY, - IObserveConfig.PROPERTY_DEFAULT_GPS_MAX_DELAY, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_GPS_MAX_DELAY, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_GPS_MAX_DELAY, n("observe.config.defaultGpsMaxDelay"), "60", Integer.class, @@ -371,8 +427,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** vitesse maximum (en noeud) entre deux points gps */ DEFAULT_GPS_MAX_SPEED( - IObserveConfig.PROPERTY_DEFAULT_GPS_MAX_SPEED, - IObserveConfig.PROPERTY_DEFAULT_GPS_MAX_SPEED, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_GPS_MAX_SPEED, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_GPS_MAX_SPEED, n("observe.config.defaultGpsMaxSpeed"), "25.0f", Float.class, @@ -384,8 +440,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour autoriser le choix de la base source */ CHANGE_SYNCHRO_SRC( - "ui." + IObserveConfig.PROPERTY_CHANGE_SYNCHRO_SRC, - IObserveConfig.PROPERTY_CHANGE_SYNCHRO_SRC, + "ui." + ObserveSwingApplicationConfig.PROPERTY_CHANGE_SYNCHRO_SRC, + ObserveSwingApplicationConfig.PROPERTY_CHANGE_SYNCHRO_SRC, n("observe.config.ui.changeSynchroSrc"), "false", Boolean.class, @@ -397,8 +453,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour voir le boutton d'affichage de la popup de clavier numerique) */ SHOW_NUMBER_EDITOR_BUTTON( - "ui." + IObserveConfig.PROPERTY_SHOW_NUMBER_EDITOR_BUTTON, - IObserveConfig.PROPERTY_SHOW_NUMBER_EDITOR_BUTTON, + "ui." + ObserveSwingApplicationConfig.PROPERTY_SHOW_NUMBER_EDITOR_BUTTON, + ObserveSwingApplicationConfig.PROPERTY_SHOW_NUMBER_EDITOR_BUTTON, n("observe.config.ui.showNumberEditorButton"), "true", Boolean.class, @@ -408,8 +464,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour afficher automatiquement la popup du clavier numerique */ AUTO_POPUP_NUMBER_EDITOR( - "ui." + IObserveConfig.PROPERTY_AUTO_POPUP_NUMBER_EDITOR, - IObserveConfig.PROPERTY_AUTO_POPUP_NUMBER_EDITOR, + "ui." + ObserveSwingApplicationConfig.PROPERTY_AUTO_POPUP_NUMBER_EDITOR, + ObserveSwingApplicationConfig.PROPERTY_AUTO_POPUP_NUMBER_EDITOR, n("observe.config.ui.autoPopupNumberEditor"), "false", Boolean.class, @@ -419,8 +475,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour voir la réglette d'affichage des heures dans l'éditeur des temps */ SHOW_DATE_TIME_EDITOR_SLIDER( - "ui." + IObserveConfig.PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER, - IObserveConfig.PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER, + "ui." + ObserveSwingApplicationConfig.PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER, + ObserveSwingApplicationConfig.PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER, n("observe.config.ui.showTimeEditorSlider"), "true", Boolean.class, @@ -430,8 +486,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour lancer l'application en mode plein ecran */ FULL_SCREEN( - "ui." + IObserveConfig.PROPERTY_FULL_SCREEN, - IObserveConfig.PROPERTY_FULL_SCREEN, + "ui." + ObserveSwingApplicationConfig.PROPERTY_FULL_SCREEN, + ObserveSwingApplicationConfig.PROPERTY_FULL_SCREEN, n("observe.config.ui.fullscreen"), "false", Boolean.class, @@ -441,8 +497,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** locale a utiliser dans l'application */ LOCALE( - "ui." + IObserveConfig.PROPERTY_LOCALE, - IObserveConfig.PROPERTY_LOCALE, + "ui." + ObserveSwingApplicationConfig.PROPERTY_LOCALE, + ObserveSwingApplicationConfig.PROPERTY_LOCALE, n("observe.config.ui.locale"), Locale.FRANCE.toString(), Locale.class, @@ -452,8 +508,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** locale du referentiel */ DB_LOCALE( - "db." + IObserveConfig.PROPERTY_LOCALE, - IObserveConfig.PROPERTY_DB_LOCALE, + "db." + ObserveSwingApplicationConfig.PROPERTY_LOCALE, + ObserveSwingApplicationConfig.PROPERTY_DB_LOCALE, n("observe.config.db.locale"), Locale.FRANCE.toString(), Locale.class, @@ -466,7 +522,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations faune associe */ NON_TARGET_OBSERVATION( "observation.fauneAssociee", - IObserveConfig.PROPERTY_NON_TARGET_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_NON_TARGET_OBSERVATION, n("observe.config.observation.fauneAssociee"), "1", Integer.class, @@ -477,7 +533,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations rejet thons */ TARGET_DISCARDS_OBSERVATION( "observation.rejetsThons", - IObserveConfig.PROPERTY_TARGET_DISCARDS_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_TARGET_DISCARDS_OBSERVATION, n("observe.config.observation.rejetsThons"), "1", Integer.class, @@ -488,7 +544,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations mensuration */ SAMPLES_OBSERVATION( "observation.mensurations", - IObserveConfig.PROPERTY_SAMPLES_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_SAMPLES_OBSERVATION, n("observe.config.observation.mensurations"), "1", Integer.class, @@ -499,7 +555,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations objet flottant */ OBJECTS_OBSERVATION( "observation.floatingObject", - IObserveConfig.PROPERTY_OBJECTS_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_OBJECTS_OBSERVATION, n("observe.config.observation.floatingObject"), "1", Integer.class, @@ -510,7 +566,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations activitys detaillees */ DETAILLED_ACTIVITIES_OBSERVATION( "observation.activitysDetaillees", - IObserveConfig.PROPERTY_DETAILLED_ACTIVITIES_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_DETAILLED_ACTIVITIES_OBSERVATION, n("observe.config.observation.activitysDetaillees"), "1", Integer.class, @@ -521,7 +577,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations mammiferes */ MAMMALS_OBSERVATION( "observation.mammiferes", - IObserveConfig.PROPERTY_MAMMALS_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_MAMMALS_OBSERVATION, n("observe.config.observation.mammiferes"), "1", Integer.class, @@ -532,7 +588,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations oiseaux */ BIRDS_OBSERVATION( "observation.oiseaux", - IObserveConfig.PROPERTY_BIRDS_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_BIRDS_OBSERVATION, n("observe.config.observation.oiseaux"), "1", Integer.class, @@ -543,7 +599,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations gleure */ BAIT_OBSERVATION( "observation.gleure", - IObserveConfig.PROPERTY_BAIT_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_BAIT_OBSERVATION, n("observe.config.observation.gleure"), "1", Integer.class, @@ -555,7 +611,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les captures cibles (seine) */ SPECIES_LIST_SEINE_TARGET_CATCH_ID( "speciesList.seine.targetCatch", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_TARGET_CATCH_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_TARGET_CATCH_ID, n("observe.config.speciesList.seine.targetCatch"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.1", // espece thon String.class, @@ -566,7 +622,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèce pour les Estimation banc (seine) */ SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID( "speciesList.seine.schoolEstimate", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID, n("observe.config.speciesList.seine.schoolEstimate"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.1", // espece thons String.class, @@ -577,7 +633,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les Estimation banc objet (seine) */ SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID( "speciesList.seine.objectSchoolEstimate", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID, n("observe.config.speciesList.seine.objectSchoolEstimate"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.1", // espece thon String.class, @@ -588,7 +644,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les captures non cibles (seine) */ SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID( "speciesList.seine.nonTargetCatch", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID, n("observe.config.speciesList.seine.nonTargetCatch"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.2", // espece faune String.class, @@ -599,7 +655,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les Faune observée (seine) */ SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID( "speciesList.seine.objectObservedSpecies", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID, n("observe.config.speciesList.seine.objectObservedSpecies"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.2", // espece faune String.class, @@ -610,7 +666,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les captures (longline) */ SPECIES_LIST_LONGLINE_CATCH_ID( "speciesList.longline.catch", - IObserveConfig.PROPERTY_SPECIES_LIST_LONGLINE_CATCH_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_LONGLINE_CATCH_ID, n("observe.config.speciesList.longline.catch"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.3", // catch String.class, @@ -621,7 +677,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les rencontres (longline) */ SPECIES_LIST_LONGLINE_ENCOUNTER_ID( "speciesList.longline.encounter", - IObserveConfig.PROPERTY_SPECIES_LIST_LONGLINE_ENCOUNTER_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_LONGLINE_ENCOUNTER_ID, n("observe.config.speciesList.longline.encounter"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.4", // encounter String.class, @@ -631,7 +687,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les deprédations (longline) */ SPECIES_LIST_LONGLINE_DEPREDATOR_ID( "speciesList.longline.depredator", - IObserveConfig.PROPERTY_SPECIES_LIST_LONGLINE_DEPREDATOR_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_LONGLINE_DEPREDATOR_ID, n("observe.config.speciesList.longline.encounter"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.5", // encounter String.class, @@ -747,7 +803,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { false, false); - public static List<ObserveConfigOption> MAP_LAYERS = ImmutableList.of(MAP_LAYER_1, MAP_LAYER_2, MAP_LAYER_3, + public static List<ObserveSwingApplicationConfigOption> MAP_LAYERS = ImmutableList.of(MAP_LAYER_1, MAP_LAYER_2, MAP_LAYER_3, MAP_LAYER_4, MAP_LAYER_5, MAP_LAYER_6, MAP_LAYER_7, MAP_LAYER_8, MAP_LAYER_9, MAP_LAYER_10); /** @@ -784,22 +840,22 @@ public enum ObserveConfigOption implements ConfigOptionDef { // */ // protected boolean admin; - ObserveConfigOption(String key, - String description, - String defaultValue, - Class<?> type, - boolean _transient, - boolean _final) { + ObserveSwingApplicationConfigOption(String key, + String description, + String defaultValue, + Class<?> type, + boolean _transient, + boolean _final) { this(key, null, description, defaultValue, type, _transient, _final); } - ObserveConfigOption(String key, - String propertyKey, - String description, - String defaultValue, - Class<?> type, - boolean _transient, - boolean _final) { + ObserveSwingApplicationConfigOption(String key, + String propertyKey, + String description, + String defaultValue, + Class<?> type, + boolean _transient, + boolean _final) { this.key = key; this.description = description; this.defaultValue = defaultValue; @@ -866,4 +922,17 @@ public enum ObserveConfigOption implements ConfigOptionDef { return propertyKey; } + public static ImmutableList<ObserveSwingApplicationConfigOption> orderedByNameValues() { + + List<ObserveSwingApplicationConfigOption> values = Lists.newArrayList(values()); + Collections.sort(values, new Comparator<ObserveSwingApplicationConfigOption>() { + + @Override + public int compare(ObserveSwingApplicationConfigOption o1, ObserveSwingApplicationConfigOption o2) { + return o1.getKey().compareTo(o2.getKey()); + } + }); + return ImmutableList.copyOf(values); + + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java new file mode 100644 index 0000000..3e8550c --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java @@ -0,0 +1,37 @@ +package fr.ird.observe.configuration; + +import org.nuiton.config.ApplicationConfigProvider; +import org.nuiton.config.ConfigActionDef; +import org.nuiton.config.ConfigOptionDef; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserveSwingApplicationConfigProvider implements ApplicationConfigProvider { + + public static final String OBSERVE_SWING_CONFIGURATION_PROVIDER_NAME = "observeSwing"; + + @Override + public String getName() { + return OBSERVE_SWING_CONFIGURATION_PROVIDER_NAME; + } + + @Override + public String getDescription(Locale locale) { + return l(locale, "observeweb.configuration.description"); + } + + @Override + public ConfigOptionDef[] getOptions() { + return ObserveSwingApplicationConfigOption.values(); + } + + @Override + public ConfigActionDef[] getActions() { + return new ConfigActionDef[0]; + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/ConnexionStatus.java b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/ConnexionStatus.java similarity index 97% rename from observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/ConnexionStatus.java rename to observe-application-swing/src/main/java/fr/ird/observe/db/constantes/ConnexionStatus.java index 5ec2f9b..ef25fcf 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/ConnexionStatus.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/ConnexionStatus.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.business.db.constants; +package fr.ird.observe.db.constantes; import static org.nuiton.i18n.I18n.n; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CreationMode.java b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/CreationMode.java similarity index 72% rename from observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CreationMode.java rename to observe-application-swing/src/main/java/fr/ird/observe/db/constantes/CreationMode.java index c7be632..51471f8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CreationMode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/CreationMode.java @@ -19,7 +19,9 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.business.db.constants; +package fr.ird.observe.db.constantes; + +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import static org.nuiton.i18n.I18n.n; @@ -61,6 +63,14 @@ public enum CreationMode { IMPORT_REMOTE_STORAGE( n("observe.storage.creationMode.importRemoteStorage"), n("observe.storage.creationMode.importRemoteStorage.description") + ), + /** + * creer une nouvelle base vide et importer le referentiel via une base + * distante. + */ + IMPORT_SERVER_STORAGE( + n("observe.storage.creationMode.importServerStorage"), + n("observe.storage.creationMode.importServerStorage.description") ); private final String label; @@ -79,4 +89,20 @@ public enum CreationMode { public String getDescription() { return description; } + + public static CreationMode valueOf(DataSourceCreateConfigurationDto createConfigurationDto) { + CreationMode result = EMPTY; + + if (createConfigurationDto != null) { + if (createConfigurationDto.isImportData()) { + result = IMPORT_INTERNAL_DUMP; + } else if (createConfigurationDto.isImportDatabase()) { + result = IMPORT_REMOTE_STORAGE; + } else if (createConfigurationDto.isImportReferential()) { + result = IMPORT_EXTERNAL_DUMP; + } + } + + return result; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/DbMode.java b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/DbMode.java similarity index 88% rename from observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/DbMode.java rename to observe-application-swing/src/main/java/fr/ird/observe/db/constantes/DbMode.java index 31d697e..a7a2876 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/DbMode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/DbMode.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.business.db.constants; +package fr.ird.observe.db.constantes; import static org.nuiton.i18n.I18n.n; @@ -44,6 +44,11 @@ public enum DbMode { USE_REMOTE( n("observe.storage.dbMode.useRemote"), n("observe.storage.dbMode.useRemote.description") + ), + /** Pour utiliser une un serveur web distante */ + USE_SERVER( + n("observe.storage.dbMode.useServer"), + n("observe.storage.dbMode.useServer.description") ); private final String label; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/package.html b/observe-application-swing/src/main/java/fr/ird/observe/package.html index 797e554..061a248 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/package.html +++ b/observe-application-swing/src/main/java/fr/ird/observe/package.html @@ -24,7 +24,7 @@ <h1>Paquetage principal fr.ird.observe</h1> Le paquetage contenant la classe de lancement de l'application (ObserveMain), la -configuration (ObserveConfig) et le +configuration (ObserveSwingApplicationConfig) et le contexte applicatif (ObserveContext), ainsi que des services (non ui) : - DecoratorProvider un provider de décorateurs. 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 dda06dc..54f7e60 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,7 +24,7 @@ onWindowClosing='new fr.ird.observe.ui.actions.CloseApplicationAction(this).run()'> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.business.db.DataContext fr.ird.observe.services.dto.seine.RouteDto @@ -70,7 +70,7 @@ <JMenu id="navigationMoveTripAction"/> </JPopupMenu> - <ObserveConfig id='config' initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='config' initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <ObserveMainUIHandler id='handler' initializer='getContextValue(ObserveMainUIHandler.class)'/> 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 42e1ebf..53b3b0c 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 @@ -21,11 +21,14 @@ */ package fr.ird.observe.ui; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.services.dto.AbstractObserveDto; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUI; @@ -84,7 +87,7 @@ public class ObserveMainUIHandler { public void changeNavigationNode(ObserveMainUI ui, TreeSelectionEvent event) { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (source == null || !source.isOpen()) { // no open data source @@ -184,7 +187,7 @@ public class ObserveMainUIHandler { * @param config la configuration a utiliser * @return l'ui instancie et initialisee mais non visible encore */ - public ObserveMainUI initUI(ObserveContext context, ObserveConfig config) { + public ObserveMainUI initUI(ObserveSwingApplicationContext context, ObserveSwingApplicationConfig config) { SwingValidatorMessageTableModel errorModel = new ObserveSwingValidatorMessageTableModel(); @@ -266,7 +269,7 @@ public class ObserveMainUIHandler { public static final String H2_SERVER_URL_PATTERN = "jdbc:h2:%s/%s/obstuna"; public static DataSource getStorage() { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); return source; } @@ -275,7 +278,7 @@ public class ObserveMainUIHandler { // } public static void restartEdit() { - ContentUI<?> selectedUI = ObserveContext.get().getSelectedContentUI(); + ContentUI<?> selectedUI = ObserveSwingApplicationContext.get().getSelectedContentUI(); if (selectedUI == null) { // pas d'écran selectionne @@ -309,7 +312,7 @@ public class ObserveMainUIHandler { * @param rootContext le contexte applicatif * @param config la configuration a utiliser */ - protected void reloadUI(ObserveContext rootContext, ObserveConfig config) { + protected void reloadUI(ObserveSwingApplicationContext rootContext, ObserveSwingApplicationConfig config) { // must remove all properties listener on config config.removeJaxxPropertyChangeListener(); @@ -393,7 +396,7 @@ public class ObserveMainUIHandler { if (ui.getConfig().isMainStorageOpened()) { - DataSource service = ObserveContext.get().getDataSource(); + DataSource service = ObserveSwingApplicationContext.get().getDataSource(); //FIXME // if (service instanceof H2DataSource) { // icon = (Icon) ui.storageStatus.getClientProperty("localIcon"); @@ -409,7 +412,7 @@ public class ObserveMainUIHandler { protected String updateStorageSatutText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - DataSource service = ObserveContext.get().getDataSource(); + DataSource service = ObserveSwingApplicationContext.get().getDataSource(); text = service.getShortLabel(); } else { text = t("observe.message.db.none.loaded"); @@ -420,7 +423,7 @@ public class ObserveMainUIHandler { protected String updateStorageStatutToolTipText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); text = t("observe.message.loaded.tip", source.getLabel()); } else { text = t("observe.message.db.none.loaded.tip"); @@ -471,7 +474,7 @@ public class ObserveMainUIHandler { if (context instanceof ObserveMainUI) { return (ObserveMainUI) context; } - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); return ui; } @@ -516,7 +519,7 @@ public class ObserveMainUIHandler { if (selectedNode.equals(o) || !selectedNode.isNodeAncestor(o)) { return; } - boolean canChange = ObserveContext.get().closeSelectedContentUI(ui); + boolean canChange = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); 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 e2879ef..57804cc 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,8 +22,8 @@ package fr.ird.observe.ui; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.ui.actions.CloseApplicationAction; import fr.ird.observe.ui.actions.ReloadStorageAction; import org.apache.commons.logging.Log; @@ -48,7 +48,7 @@ public enum ObserveUICallback implements Runnable { if (log.isInfoEnabled()) { log.info("will reload application"); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = new ObserveMainUIHandler(); ObserveMainUI ui = handler.getUI(context); context.askReload(); @@ -62,10 +62,10 @@ public enum ObserveUICallback implements Runnable { if (log.isInfoEnabled()) { log.info("will reload ui"); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = new ObserveMainUIHandler(); ObserveMainUI ui = handler.getUI(context); - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); handler.reloadUI(context, config); } }, @@ -77,7 +77,7 @@ public enum ObserveUICallback implements Runnable { log.info("will reload db"); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = new ObserveMainUIHandler(); ObserveMainUI ui = handler.getUI(context); new ReloadStorageAction(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 7db3ffa..ba37f9a 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 @@ -21,6 +21,8 @@ */ package fr.ird.observe.ui; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveContext; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.ui.util.table.ObserveBooleanTableCellRenderer; @@ -132,7 +134,7 @@ public class UIHelper extends SwingUtil { public static void displayInfo(String text) { - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); if (ui == null) { JOptionPane.showMessageDialog(null, text); } else { @@ -142,7 +144,7 @@ public class UIHelper extends SwingUtil { public static void displayWarning(String title, String text) { - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); JOptionPane.showMessageDialog(ui, text, title, JOptionPane.WARNING_MESSAGE); } @@ -169,9 +171,9 @@ public class UIHelper extends SwingUtil { Object[] options, int defaultOption) { if (parent == null) { - ObserveContext tx = ObserveContext.get(); + ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); if (tx != null) { - parent = ObserveContext.get().getObserveMainUI(); + parent = ObserveSwingApplicationContext.get().getObserveMainUI(); } } int response = JOptionPane.showOptionDialog( @@ -293,7 +295,7 @@ public class UIHelper extends SwingUtil { Class<E> beanClass, E bean, String extraMessage) { - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); if (parent == null) { // on cherche l'ui principale @@ -303,7 +305,7 @@ public class UIHelper extends SwingUtil { if (mainUI != null) { mainUI.setBusy(true); } - DecoratorService decoratorService = ObserveContext.get().getDecoratorService(); + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<E> decorator = decoratorService.getDecoratorByType(beanClass); String beanStr; String messageDelete = null; @@ -343,13 +345,13 @@ public class UIHelper extends SwingUtil { public static DecoratorTableCellRenderer newDecorateTableCellRenderer( TableCellRenderer renderer, Class<?> entityClass) { - Decorator<?> decorator = ObserveContext.get().getDecorator(entityClass); + Decorator<?> decorator = ObserveSwingApplicationContext.get().getDecorator(entityClass); return new DecoratorTableCellRenderer(renderer, decorator); } public static DecoratorTableCellRenderer newDecorateTableCellRenderer( TableCellRenderer renderer, Class<?> entityClass, String context) { - Decorator<?> decorator = ObserveContext.get().getDecorator(entityClass, context); + Decorator<?> decorator = ObserveSwingApplicationContext.get().getDecorator(entityClass, context); return new DecoratorTableCellRenderer(renderer, decorator); } 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 b9a9aa0..34cfd6e 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 @@ -22,9 +22,9 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveConfigOption; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUICallback; import jaxx.runtime.SwingUtil; @@ -68,12 +68,12 @@ public class ChangeApplicationLanguageAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe changing application language..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); // sauvegarde de la nouvelle locale - config.setOption(ObserveConfigOption.LOCALE, newLocale); + config.setOption(ObserveSwingApplicationConfigOption.LOCALE, newLocale); ObserveUICallback.ui.run(); } 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 47d49d9..f8f52ac 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 @@ -22,9 +22,9 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveConfigOption; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.*; import fr.ird.observe.ui.ObserveUICallback; @@ -68,14 +68,14 @@ public class ChangeDbLanguageAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe changing db language..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (!canContinue) { return; } - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); // sauvegarde de la nouvelle locale - config.setOption(ObserveConfigOption.DB_LOCALE, newLocale.getLocale()); + config.setOption(ObserveSwingApplicationConfigOption.DB_LOCALE, newLocale.getLocale()); ObserveUICallback.ui.run(); } 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 1a1e6d3..ff7de1e 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 @@ -22,8 +22,8 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.storage.StorageUILauncher; import jaxx.runtime.SwingUtil; @@ -79,7 +79,7 @@ public class ChangeStorageAction extends AbstractAction { public void run() { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); 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 5f77c4b..d6b2578 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 @@ -22,15 +22,15 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveRunner; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.ObserveMainUI; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; -import fr.ird.observe.ui.*; import static org.nuiton.i18n.I18n.t; @@ -70,7 +70,7 @@ public class CloseApplicationAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe quitting..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); 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 e0813c7..7e8c02d 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 @@ -22,13 +22,15 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveUIMode; import jaxx.runtime.SwingUtil; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; -import fr.ird.observe.ui.*; + import static org.nuiton.i18n.I18n.t; /** @@ -59,7 +61,7 @@ public class CloseHelpAction extends AbstractAction { if (oldMode == null) { // on regarde si une base est chargee - DataSource mainStorage = ObserveContext.get().getDataSource(); + DataSource mainStorage = ObserveSwingApplicationContext.get().getDataSource(); 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 e6f2149..504a0f0 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 @@ -22,7 +22,7 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.ui.ObserveMainUI; @@ -70,7 +70,7 @@ public class CloseStorageAction extends AbstractAction { public void run() { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { ui.setBusy(true); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/GotoSiteAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/GotoSiteAction.java index 39d04f2..e0f1b04 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/GotoSiteAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/GotoSiteAction.java @@ -22,7 +22,9 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.UIHelper; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; @@ -32,7 +34,7 @@ import javax.swing.AbstractAction; import java.awt.Desktop; import java.awt.event.ActionEvent; import java.net.URL; -import fr.ird.observe.ui.*; + import static org.nuiton.i18n.I18n.t; /** @@ -62,7 +64,7 @@ public class GotoSiteAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); URL siteURL = config.getOptionAsURL("application.site.url"); 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 32ad905..e466ab7 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 @@ -22,9 +22,9 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.storage.StorageStep; import fr.ird.observe.ui.storage.StorageUI; @@ -62,7 +62,7 @@ public class ImportStorageFromFileAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { new StorageUILauncher(ui, ui, t("observe.title.import.localDB")) { @@ -74,6 +74,7 @@ public class ImportStorageFromFileAction extends AbstractAction { model.setCanCreateLocalService(true); model.setCanUseLocalService(false); model.setCanUseRemoteService(false); + model.setCanUseServerService(false); model.setDbMode(DbMode.CREATE_LOCAL); model.setCreationMode(CreationMode.IMPORT_EXTERNAL_DUMP); if (model.isLocalStorageExist()) { 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 06628e2..7f155ac 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 @@ -22,7 +22,7 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminUILauncher; @@ -64,7 +64,7 @@ public class LaunchAdminAction extends AbstractAction { @Override public void actionPerformed(ActionEvent event) { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); 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 2587b54..92f4d2a 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 @@ -22,14 +22,16 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveUICallback; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; -import fr.ird.observe.ui.*; + import static org.nuiton.i18n.I18n.t; /** @@ -62,7 +64,7 @@ public class ReloadApplicationAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe reloading..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); 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 eb15a47..aae5805 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 @@ -22,8 +22,10 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveUICallback; import jaxx.runtime.SwingUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; @@ -33,7 +35,7 @@ import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import java.io.File; import java.io.IOException; -import fr.ird.observe.ui.*; + import static org.nuiton.i18n.I18n.t; /** @@ -67,9 +69,9 @@ public class ReloadDefaultConfigurationAction extends AbstractAction { log.info("ObServe reloading default configuration..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); File directory = config.getResourcesDirectory(); 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 e07eee2..9a10144 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 @@ -23,8 +23,8 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUICallback; @@ -72,9 +72,9 @@ public class ReloadResourcesAction extends AbstractAction { log.info("ObServe reloading resources..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); File directory = config.getResourcesDirectory(); 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 9b337a8..dc5c598 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 @@ -22,12 +22,13 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.business.db.DataSourceFactory; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveMainUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; @@ -37,7 +38,6 @@ import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import static org.nuiton.i18n.I18n.t; -import fr.ird.observe.ui.*; /** * Created on 1/17/15. * @@ -72,7 +72,7 @@ public class ReloadStorageAction extends AbstractAction { public void run() { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); DataSource storage = ObserveMainUIHandler.getStorage(); @@ -99,7 +99,7 @@ public class ReloadStorageAction extends AbstractAction { } } - ObserveConfig appConfig = ObserveContext.get().getConfig(); + ObserveSwingApplicationConfig appConfig = ObserveSwingApplicationContext.get().getConfig(); //FIXME // if (config instanceof H2DataSourceConfig) { 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 5d453ae..83123cc 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 @@ -22,16 +22,18 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.ui.storage.StorageBackupUILauncher; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveMainUIHandler; +import fr.ird.observe.ui.UIHelper; import jaxx.runtime.SwingUtil; import javax.swing.AbstractAction; import javax.swing.JOptionPane; import java.awt.event.ActionEvent; -import static org.nuiton.i18n.I18n.t;import fr.ird.observe.ui.*; +import static org.nuiton.i18n.I18n.t; /** * Created on 1/17/15. @@ -57,7 +59,7 @@ public class SaveStorageToFileAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { // on teste que l'utilisateur peut lire-ecrire sur la source de données 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 87917e6..5bd0238 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 @@ -22,20 +22,18 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveConfigOption; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUICallback; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.config.ConfigUIHelper; import jaxx.runtime.swing.config.model.ConfigUIModelBuilder; -import jaxx.runtime.swing.config.model.MainCallBackFinalizer; import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -93,12 +91,12 @@ public class ShowConfigAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe opening configuration ui..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - DataSource dataSource = ObserveContext.get().getDataSource(); + DataSource dataSource = ObserveSwingApplicationContext.get().getDataSource(); - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); ObserveConfigUIBuilder helper; @@ -116,7 +114,7 @@ public class ShowConfigAction extends AbstractAction { } - protected ObserveConfigUIBuilder buildUI(ObserveConfig config, DataSource dataSource) throws DataSourceException { + protected ObserveConfigUIBuilder buildUI(ObserveSwingApplicationConfig config, DataSource dataSource) throws DataSourceException { //FIXME // SpeciesListTableCellEditor editor; @@ -209,13 +207,13 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.directories"), n("observe.config.category.directories.description")); - helper.addOption(ObserveConfigOption.CONFIG_FILE); - helper.addOption(ObserveConfigOption.DATA_DIRECTORY); - helper.addOption(ObserveConfigOption.DB_DIRECTORY); - helper.addOption(ObserveConfigOption.BACKUP_DIRECTORY); - helper.addOption(ObserveConfigOption.TMP_DIRECTORY); - helper.addOption(ObserveConfigOption.VALIDATION_REPORT_DIRECTORY); - helper.addOption(ObserveConfigOption.RESOURCES_DIRECTORY, ObserveUICallback.application); + helper.addOption(ObserveSwingApplicationConfigOption.CONFIG_FILE); + helper.addOption(ObserveSwingApplicationConfigOption.DATA_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.DB_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.BACKUP_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.TMP_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.VALIDATION_REPORT_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.RESOURCES_DIRECTORY, ObserveUICallback.application); } @@ -224,10 +222,10 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.h2"), n("observe.config.category.h2.description")); - helper.addOption(ObserveConfigOption.H2_LOGIN); - helper.addOption(ObserveConfigOption.H2_PASSWORD); - helper.addOption(ObserveConfigOption.H2_CAN_MIGRATE); - helper.addOption(ObserveConfigOption.H2_SERVER_PORT); + helper.addOption(ObserveSwingApplicationConfigOption.H2_LOGIN); + helper.addOption(ObserveSwingApplicationConfigOption.H2_PASSWORD); + helper.addOption(ObserveSwingApplicationConfigOption.H2_CAN_MIGRATE); + helper.addOption(ObserveSwingApplicationConfigOption.H2_SERVER_PORT); } @@ -236,12 +234,12 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.obstuna"), n("observe.config.category.obstuna.description")); - helper.addOption(ObserveConfigOption.OBSTUNA_URL); - helper.addOption(ObserveConfigOption.OBSTUNA_LOGIN); - helper.addOption(ObserveConfigOption.OBSTUNA_USE_SSL_CERT); -// helper.addOption(ObserveConfigOption.OBSTUNA_SSL_CERTIFICAT_FILE); + helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_URL); + helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_LOGIN); + helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_USE_SSL_CERT); +// helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_SSL_CERTIFICAT_FILE); - helper.addOption(ObserveConfigOption.OBSTUNA_CAN_MIGRATE, ObserveUICallback.db); + helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE, ObserveUICallback.db); } @@ -251,12 +249,12 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.changeStorage"), n("observe.config.category.changeStorage.description")); - helper.addOption(ObserveConfigOption.DEFAULT_DB_MODE); - helper.addOption(ObserveConfigOption.DEFAULT_CREATION_MODE); - helper.addOption(ObserveConfigOption.STORE_REMOTE_STORAGE); - helper.addOption(ObserveConfigOption.SHOW_MIGRATION_PROGRESSION); - helper.addOption(ObserveConfigOption.SHOW_MIGRATION_SQL); - helper.addOption(ObserveConfigOption.SHOW_SQL, ObserveUICallback.application); + helper.addOption(ObserveSwingApplicationConfigOption.DEFAULT_DB_MODE); + helper.addOption(ObserveSwingApplicationConfigOption.DEFAULT_CREATION_MODE); + helper.addOption(ObserveSwingApplicationConfigOption.STORE_REMOTE_STORAGE); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_PROGRESSION); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_SQL); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_SQL, ObserveUICallback.application); } @@ -265,8 +263,8 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.gps"), n("observe.config.category.gps.description")); - helper.addOption(ObserveConfigOption.DEFAULT_GPS_MAX_DELAY); - helper.addOption(ObserveConfigOption.DEFAULT_GPS_MAX_SPEED); + helper.addOption(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_DELAY); + helper.addOption(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_SPEED); } @@ -275,8 +273,8 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.synchro"), n("observe.config.category.synchro.description")); - helper.addOption(ObserveConfigOption.CHANGE_SYNCHRO_SRC); - helper.addOption(ObserveConfigOption.H2_CAN_MIGRATE); + helper.addOption(ObserveSwingApplicationConfigOption.CHANGE_SYNCHRO_SRC); + helper.addOption(ObserveSwingApplicationConfigOption.H2_CAN_MIGRATE); } @@ -287,14 +285,14 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.observation.description"), ObserveUICallback.ui.name()); - helper.addOption(ObserveConfigOption.DETAILLED_ACTIVITIES_OBSERVATION); - helper.addOption(ObserveConfigOption.NON_TARGET_OBSERVATION); - helper.addOption(ObserveConfigOption.BAIT_OBSERVATION); - helper.addOption(ObserveConfigOption.MAMMALS_OBSERVATION); - helper.addOption(ObserveConfigOption.SAMPLES_OBSERVATION); - helper.addOption(ObserveConfigOption.OBJECTS_OBSERVATION); - helper.addOption(ObserveConfigOption.BIRDS_OBSERVATION); - helper.addOption(ObserveConfigOption.TARGET_DISCARDS_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.DETAILLED_ACTIVITIES_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.NON_TARGET_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.BAIT_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.MAMMALS_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.SAMPLES_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.OBJECTS_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.BIRDS_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.TARGET_DISCARDS_OBSERVATION); } @@ -305,11 +303,11 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.speciesList.seine.description"), ObserveUICallback.ui.name()); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_TARGET_CATCH_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_TARGET_CATCH_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID); } @@ -321,8 +319,8 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.speciesList.longline.description"), ObserveUICallback.ui.name()); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_LONGLINE_CATCH_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_LONGLINE_ENCOUNTER_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_CATCH_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_ENCOUNTER_ID); } @@ -333,11 +331,11 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.map.description"), ObserveUICallback.ui.name()); - helper.addOption(ObserveConfigOption.MAP_BACKGROUND_COLOR); - for (ObserveConfigOption layerOption : ObserveConfigOption.MAP_LAYERS) { + helper.addOption(ObserveSwingApplicationConfigOption.MAP_BACKGROUND_COLOR); + for (ObserveSwingApplicationConfigOption layerOption : ObserveSwingApplicationConfigOption.MAP_LAYERS) { helper.addOption(layerOption); } - helper.addOption(ObserveConfigOption.MAP_STYLE_FILE); + helper.addOption(ObserveSwingApplicationConfigOption.MAP_STYLE_FILE); } @@ -346,13 +344,13 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.other"), n("observe.config.category.other.description")); - helper.addOption(ObserveConfigOption.SHOW_NUMBER_EDITOR_BUTTON); - helper.addOption(ObserveConfigOption.AUTO_POPUP_NUMBER_EDITOR); - helper.addOption(ObserveConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER); - helper.addOption(ObserveConfigOption.LOAD_LOCAL_STORAGE, ObserveUICallback.application); -// helper.addOption(ObserveConfigOption.FULL_SCREEN, ObserveUICallback.ui); - helper.addOption(ObserveConfigOption.LOCALE, ObserveUICallback.ui); - helper.addOption(ObserveConfigOption.DB_LOCALE, ObserveUICallback.ui); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_NUMBER_EDITOR_BUTTON); + helper.addOption(ObserveSwingApplicationConfigOption.AUTO_POPUP_NUMBER_EDITOR); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER); + helper.addOption(ObserveSwingApplicationConfigOption.LOAD_LOCAL_STORAGE, ObserveUICallback.application); +// helper.addOption(ObserveSwingApplicationConfigOption.FULL_SCREEN, ObserveUICallback.ui); + helper.addOption(ObserveSwingApplicationConfigOption.LOCALE, ObserveUICallback.ui); + helper.addOption(ObserveSwingApplicationConfigOption.DB_LOCALE, ObserveUICallback.ui); } @@ -366,7 +364,7 @@ public class ShowConfigAction extends AbstractAction { SpeciesListsTableCellRenderer renderer; - protected ObserveConfigUIBuilder(ObserveConfig config, + protected ObserveConfigUIBuilder(ObserveSwingApplicationConfig config, SpeciesListTableCellEditor speciesListTableCellEditor, SpeciesListsTableCellRenderer speciesListsTableCellRenderer) { super(config); @@ -380,7 +378,7 @@ public class ShowConfigAction extends AbstractAction { // add the option super.addOption(option); - String beanProperty = ((ObserveConfigOption) option).getPropertyKey(); + String beanProperty = ((ObserveSwingApplicationConfigOption) option).getPropertyKey(); if (StringUtils.isNotEmpty(beanProperty)) { setOptionPropertyName(beanProperty); @@ -390,7 +388,7 @@ public class ShowConfigAction extends AbstractAction { } - public ConfigUIModelBuilder addOption(ObserveConfigOption option, ObserveUICallback callBack) { + public ConfigUIModelBuilder addOption(ObserveSwingApplicationConfigOption option, ObserveUICallback callBack) { addOption(option); setOptionCallBack(callBack.name()); @@ -411,7 +409,7 @@ public class ShowConfigAction extends AbstractAction { } - protected ConfigUIModelBuilder addSpeciesListOption(ObserveConfigOption option) { + protected ConfigUIModelBuilder addSpeciesListOption(ObserveSwingApplicationConfigOption option) { addOption(option) .setOptionPropertyName(option.getPropertyKey()) 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 ff0c395..346fd9e 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 @@ -22,7 +22,7 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import jaxx.runtime.SwingUtil; import fr.ird.observe.ui.*; import javax.swing.AbstractAction; @@ -57,7 +57,7 @@ public class ShowStorageInfoAction extends AbstractAction { String text; if (ui.getConfig().isMainStorageOpened()) { - text = ObserveContext.get().getDataSource().toString(); + text = ObserveSwingApplicationContext.get().getDataSource().toString(); } else { text = t("observe.message.db.none.loaded"); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/StartServerModeAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/StartServerModeAction.java index 45d2fa2..2d36f0a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/StartServerModeAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/StartServerModeAction.java @@ -22,19 +22,16 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import java.io.File; -import java.sql.SQLException; import static org.nuiton.i18n.I18n.t; @@ -74,7 +71,7 @@ public class StartServerModeAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("Will start server mode..."); } - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); File dbDirectory = new File(config.getLocalDBDirectory(), "obstuna"); String h2Login = config.getH2Login(); String h2Password = new String(config.getH2Password()); 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 250ed34..0a9f397 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.actions.shared; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.ui.ObserveMainUI; @@ -103,7 +103,7 @@ public class CloseAndCreateUIAction extends AbstractUIAction { // recuperation de l'écran associé ActivitySeineUI selectedUI = (ActivitySeineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // fermeture de l'activity et création d'une nouvelle selectedUI.closeAndCreateData(); @@ -139,7 +139,7 @@ public class CloseAndCreateUIAction extends AbstractUIAction { // recuperation de l'écran associé ActivityLonglineUI selectedUI = (ActivityLonglineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().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 d9941cb..5855416 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.actions.shared; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.ui.ObserveMainUI; @@ -108,7 +108,7 @@ public class CloseOpenUIAction extends AbstractUIAction { // recuperation de l'écran associé ActivitySeineUI selectedUI = (ActivitySeineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // fermeture de l'activity selectedUI.closeData(); @@ -150,7 +150,7 @@ public class CloseOpenUIAction extends AbstractUIAction { // recuperation de l'écran associé ActivityLonglineUI selectedUI = (ActivityLonglineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // fermeture de l'activity selectedUI.closeData(); 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 c457766..00ca65b 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 @@ -21,8 +21,7 @@ */ package fr.ird.observe.ui.actions.shared; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.services.dto.AbstractObserveDto; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.content.ContentUI; @@ -94,7 +93,7 @@ public class ReOpenUIAction extends AbstractUIAction { treeHelper.selectNode(node); openUI = (ContentOpenableUI<?>) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().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/admin/AdminStep.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java index f1bf638..395f0bf 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.config.ConfigUI; import fr.ird.observe.ui.admin.config.SelectDataUI; 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 5170c4a..1f9553d 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.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.UIHelper fr.ird.observe.ui.admin.* fr.ird.observe.ui.storage.StorageUIModel @@ -52,8 +52,8 @@ <StorageUIModel id='centralSourceModel' initializer='getModel().getCentralSourceModel()'/> - <ObserveConfig id='observeConfig' - initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='observeConfig' + initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <AdminTabUIHandler id='handler' initializer='null'/> 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 68274f1..7530e39 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 @@ -21,6 +21,7 @@ */ package fr.ird.observe.ui.admin; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.BinderService; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveContext; @@ -39,6 +40,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JTree; +import javax.swing.tree.TreeModel; import java.io.PrintWriter; import java.io.StringWriter; import java.util.concurrent.Callable; @@ -141,7 +143,7 @@ public class AdminTabUIHandler implements SendMessageAble { public final DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } @@ -156,14 +158,14 @@ public class AdminTabUIHandler implements SendMessageAble { public final BinderService getBinderService() { if (binderService == null) { - binderService = ObserveContext.get().getBinderService(); + binderService = ObserveSwingApplicationContext.get().getBinderService(); } return binderService; } public final GPSService getGpsService() { if (gpsService == null) { - gpsService = ObserveContext.get().getGPSService(); + gpsService = ObserveSwingApplicationContext.get().getGPSService(); } return gpsService; } 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 d8dd3d9..cc33110 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.ui.ObserveMainUI; @@ -136,7 +136,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad protected Component getParent(AdminUI ui) { - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); ImageIcon icon = (ImageIcon) ui.getClientProperty("icon"); if (mainUI == null) { // pas de fenetre detectee @@ -178,7 +178,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad protected void start(final AdminUI ui) { super.start(ui); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); String title = (String) ui.getClientProperty("title"); @@ -245,7 +245,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad if (log.isInfoEnabled()) { log.info("After dispose."); } - ObserveContext.get().releaseLock(); + ObserveSwingApplicationContext.get().releaseLock(); return; } @@ -277,7 +277,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad // (PGDataSourceConfig) sourceConfig); // on attache la source a l'ui - ObserveContext.get().prepareMainStorage(source); + ObserveSwingApplicationContext.get().prepareMainStorage(source); source.doOpen(); 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 467e13c..cfa086b 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 @@ -21,14 +21,14 @@ */ package fr.ird.observe.ui.admin; -import fr.ird.observe.ObserveConfig; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.business.db.constants.DbMode; import fr.ird.observe.business.report.model.Report; import fr.ird.observe.business.validation.ValidationModelMode; import fr.ird.observe.business.validation.ValidatorsMap; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.ui.admin.export.ExportModel; import fr.ird.observe.ui.admin.gps.ImportGPSModel; @@ -48,7 +48,6 @@ import org.nuiton.validator.NuitonValidatorScope; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; @@ -104,7 +103,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // protected DataService dataService; /** configuration de l'application */ - protected ObserveConfig config; + protected ObserveSwingApplicationConfig config; /** selection des donnees a valider */ //FIXME @@ -425,7 +424,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // return dataService; // } - public ObserveConfig getConfig() { + public ObserveSwingApplicationConfig getConfig() { return config; } @@ -496,7 +495,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { storageHandler = ui.getContextValue(StorageUIHandler.class); //FIXME // dataService = ui.getContextValue(DataService.class); - config = ui.getContextValue(ObserveConfig.class); + config = ui.getContextValue(ObserveSwingApplicationConfig.class); // demarrage du modèle : on fixe ici une fois pour toute les liste // des onglets visibles @@ -631,6 +630,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { centralSourceModel.setCanCreateLocalService(false); centralSourceModel.setCanUseLocalService(false); centralSourceModel.setCanUseRemoteService(true); + centralSourceModel.setCanUseServerService(true); centralSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { @@ -716,6 +716,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { localSourceModel.setCanCreateLocalService(modes.contains(DbMode.CREATE_LOCAL)); localSourceModel.setCanUseLocalService(modes.contains(DbMode.USE_LOCAL)); localSourceModel.setCanUseRemoteService(modes.contains(DbMode.USE_REMOTE)); + localSourceModel.setCanUseServerService(modes.contains(DbMode.USE_SERVER)); if (previousSource == null) { @@ -1320,17 +1321,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { protected DataSource createService(StorageUIModel model) { - try { - DataSource service = storageHandler.newServiceFromModel( - model, - false, - n("observe.storage.label.local"), - n("observe.storage.label.remote") - ); - return service; - } catch (IOException e) { - throw new IllegalStateException("Could not create service for " + model, e); - } + // FIXME +// ObserveDataSourceConfiguration service = storageHandler.newDataSourceConfigurationFromModel( +// model, +// n("observe.storage.label.local") +// ); +// return service; + return null; } protected void doOpenSource(DataSource source) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/config/ConfigUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/config/ConfigUIHandler.java index 6151069..5a00e47 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/config/ConfigUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/config/ConfigUIHandler.java @@ -21,8 +21,6 @@ */ package fr.ird.observe.ui.admin.config; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.constants.DbMode; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java index 65b0701..e53268f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.gps; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.gps.GPSPoint; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import org.nuiton.decorator.Decorator; @@ -74,7 +74,7 @@ public class GPSActivityTableModel extends AbstractTableModel { public GPSActivityTableModel() { selected = new HashSet<Integer>(); - decorator = ObserveContext.get().getDecorator(ActivitySeineDto.class, + decorator = ObserveSwingApplicationContext.get().getDecorator(ActivitySeineDto.class, "gps-activity"); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx index bf0179c..f33cc10 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx @@ -26,7 +26,7 @@ <Table id="importGPSConfig"> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.admin.AdminUIModel jaxx.runtime.swing.editor.NumberEditor @@ -43,8 +43,8 @@ <ImportGPSModel id='gpsModel' initializer='model.getImportGPSModel()'/> - <ObserveConfig id='config' - initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='config' + initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <script><![CDATA[ public void destroy() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java index 2829739..2ddca0a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.admin.synchronize; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.business.DecoratorService; import fr.ird.observe.services.dto.AbstractObserveDto; import org.nuiton.decorator.Decorator; @@ -41,7 +41,7 @@ public class ObsoleteEntityListCellRenderer extends DefaultListCellRenderer { public DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateConfigUI.jaxx index f7e4b0f..b71b533 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateConfigUI.jaxx @@ -26,7 +26,7 @@ <JPanel id="validateConfig"> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.admin.AdminUIModel fr.ird.observe.business.validation.ValidationModelMode @@ -46,8 +46,8 @@ <ValidateModel id='validateModel' initializer='model.getValidateModel()'/> - <ObserveConfig id='config' - initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='config' + initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <ButtonGroup id='validateContentModel' onStateChanged='validateModel.setModelMode((ValidationModelMode) validateContentModel.getSelectedValue())'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateEntityListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateEntityListCellRenderer.java index a62861f..b3c29f0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateEntityListCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateEntityListCellRenderer.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.validate; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -81,7 +81,7 @@ public class ValidateEntityListCellRenderer extends DefaultListCellRenderer impl public DecoratorService getService() { if (service == null) { - service = ObserveContext.get().getDecoratorService(); + service = ObserveSwingApplicationContext.get().getDecoratorService(); } return service; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateModel.java index 9ba477c..bbef147 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.validate; -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.validation.ValidationModelMode; import fr.ird.observe.business.validation.ValidationService; import fr.ird.observe.business.validation.ValidatorsMap; @@ -97,10 +97,10 @@ public class ValidateModel extends AdminActionModel { /** * @return le lastName par defaut du fichier de sauvegarde de la base locale * (expression calculée à partir de la date courante et du pattern - * {@link ObserveConfig#REPORT_PATTERN}). + * {@link ObserveSwingApplicationConfig#REPORT_PATTERN}). */ public String getDefaultReportFilename() { - return String.format(ObserveConfig.REPORT_PATTERN, new Date()); + return String.format(ObserveSwingApplicationConfig.REPORT_PATTERN, new Date()); } public String getContextName() { 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 327e740..790e715 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 @@ -23,7 +23,7 @@ package fr.ird.observe.ui.admin.validate; import com.google.common.base.Charsets; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.business.validation.ValidationMessageDetector; 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 45d4fbd..952d7ed 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 @@ -36,8 +36,8 @@ <import> fr.ird.observe.business.db.DataContext fr.ird.observe.business.db.DataSource - fr.ird.observe.ObserveConfig - fr.ird.observe.ObserveContext + 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,8 +54,8 @@ javax.swing.UIManager </import> - <ObserveConfig id='config' - initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='config' + initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <SwingValidatorMessageTableModel id='errorTableModel' initializer='getContextValue(SwingValidatorMessageTableModel.class)'/> @@ -65,7 +65,7 @@ <!--initializer='getContextValue(DataService.class)'/>--> <DataSource id='dataSource' - initializer='ObserveContext.get().getDataSource()'/> + initializer='ObserveSwingApplicationContext.get().getDataSource()'/> <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 a6bb8ba..425d75a 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 @@ -21,13 +21,13 @@ */ package fr.ird.observe.ui.content; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.BinderService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; @@ -69,13 +69,24 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public abstract class ContentUIHandler<E extends IdDto> { +public abstract class ContentUIHandler<E extends AbstractObserveDto> { /** Logger */ static private final Log log = LogFactory.getLog(ContentUIHandler.class); protected final String prefix; + //FIXME +// private final TopiaExecutor<E> loadExecutor; +// +// private final TopiaExecutor2<? extends TopiaEntity, E> preCreateExecutor; +// +// private final TopiaExecutor2<? extends TopiaEntity, E> createExecutor; +// +// private final TopiaExecutor2<? extends TopiaEntity, E> updateExecutor; +// +// private final TopiaExecutor2<? extends TopiaEntity, E> deleteExecutor; + private final DataContextType parentType; private final DataContextType type; @@ -93,11 +104,46 @@ public abstract class ContentUIHandler<E extends IdDto> { if (log.isDebugEnabled()) { log.debug("New handler [" + this + "] for ui " + prefix); } - + //FIXME +// loadExecutor = new TopiaExecutor<E>() { +// @Override +// public void execute(TopiaContext tx, E bean) throws TopiaException { +// onLoad(tx, bean); +// } +// }; + //FIXME +// preCreateExecutor = new TopiaExecutor2<TopiaEntity, E>() { +// @Override +// public E execute(TopiaContext tx, TopiaEntity parentBean, E bean) throws TopiaException { +// return onPreCreate(tx, parentBean, bean); +// } +// }; + //FIXME +// createExecutor = new TopiaExecutor2<TopiaEntity, E>() { +// @Override +// public E execute(TopiaContext tx, TopiaEntity parentBean, E bean) throws TopiaException { +// return onCreate(tx, parentBean, bean); +// } +// }; + //FIXME +// updateExecutor = new TopiaExecutor2<TopiaEntity, E>() { +// @Override +// public E execute(TopiaContext tx, TopiaEntity parentBean, E bean) throws TopiaException { +// return onUpdate(tx, parentBean, bean); +// } +// }; + //FIXME +// deleteExecutor = new TopiaExecutor2<TopiaEntity, E>() { +// @Override +// public E execute(TopiaContext tx, TopiaEntity parentBean, E beanToDelete) throws TopiaException { +// onDelete(tx, parentBean, beanToDelete); +// return null; +// } +// }; errorIcon = UIManager.getIcon("action.error"); } - public static <E extends IdDto> ContentUIHandler<E> newHandler(ObserveContentUI<E> ui) { + public static <E extends AbstractObserveDto> ContentUIHandler<E> newHandler(ObserveContentUI<E> ui) { String uiName = ui.getClass().getName(); String modelName = uiName + "Handler"; @@ -113,6 +159,10 @@ public abstract class ContentUIHandler<E extends IdDto> { } } + //FIXME +// protected static void attachTopiaContext(DataSource service, TopiaEntityAbstract entity) { +// DBHelper.attachTopiaContext(service.getRootCtxt(), entity); +// } public static ObserveTreeHelper getTreeHelper(JAXXContext context) { return context.getContextValue(ObserveTreeHelper.class); @@ -292,12 +342,12 @@ public abstract class ContentUIHandler<E extends IdDto> { } public DecoratorService getDecoratorService() { - DecoratorService result = ObserveContext.get().getDecoratorService(); + DecoratorService result = ObserveSwingApplicationContext.get().getDecoratorService(); return result; } public BinderService getBinderService() { - return ObserveContext.get().getBinderService(); + return ObserveSwingApplicationContext.get().getBinderService(); } protected DataSource getDataSource() { @@ -307,7 +357,7 @@ public abstract class ContentUIHandler<E extends IdDto> { public void initUI() throws Exception { ContentUIInitializer<E, ObserveContentUI<E>> uiInitializer = new ContentUIInitializer<E, ObserveContentUI<E>>(ui); - uiInitializer.initUI(); + uiInitializer.initUI(getDataSource()); } @@ -319,7 +369,8 @@ public abstract class ContentUIHandler<E extends IdDto> { //FIXME chemit 20100913 : il vaudrait le faire uniquement lors de l'édition // chaque arrive sur un ecran invalide le cache de validation - ObserveServiceHelper.getValidationContext().cleanCache(); + //FIXME +// ObserveServiceHelper.getValidationContext().cleanCache(); if (log.isDebugEnabled()) { log.debug("ui " + ui.getClass()); @@ -346,6 +397,18 @@ public abstract class ContentUIHandler<E extends IdDto> { return icon; } +//FIXME +// protected void onLoad(TopiaContext tx, E bean) throws TopiaException { +// +// // par defaut on charge l'objet de la base dans le bean d'édition +// getLoadBinder().load(bean, getBean(), true); +// } + + //FIXME +// protected E onPreCreate(TopiaContext tx, Object parentBean, E bean) throws TopiaException { +// return bean; +// } + public void startEditUI(String... binding) { E editBean = getBean(); @@ -368,7 +431,8 @@ public abstract class ContentUIHandler<E extends IdDto> { } public void stopEditUI() { - ObserveServiceHelper.getValidationContext().cleanCache(); +//FIXME +// ObserveServiceHelper.getValidationContext().cleanCache(); ContentUIModel<E> model = getModel(); @@ -628,6 +692,31 @@ public abstract class ContentUIHandler<E extends IdDto> { // return getModel().getLoadBinder(); // } + //FIXME +// protected final TopiaExecutor<E> getLoadExecutor() { +// return loadExecutor; +// } + + //FIXME +// protected final TopiaExecutor2<? extends TopiaEntity, E> getPreCreateExecutor() { +// return preCreateExecutor; +// } +// + //FIXME +// protected final TopiaExecutor2<? extends TopiaEntity, E> getCreateExecutor() { +// return createExecutor; +// } +// + //FIXME +// protected final TopiaExecutor2<? extends TopiaEntity, E> getUpdateExecutor() { +// return updateExecutor; +// } +// + //FIXME +// protected final TopiaExecutor2<? extends TopiaEntity, E> getDeleteExecutor() { +// return deleteExecutor; +// } + protected final ContentMode computeContentMode() { ContentMode mode; @@ -661,7 +750,7 @@ public abstract class ContentUIHandler<E extends IdDto> { updateToolbarActions(); - ActionMap actionMap = ObserveContext.get().getActionMap(); + ActionMap actionMap = ObserveSwingApplicationContext.get().getActionMap(); for (String name : ui.get$objectMap().keySet()) { Object o = ui.getObjectById(name); @@ -783,26 +872,4 @@ public abstract class ContentUIHandler<E extends IdDto> { // } // // } - - //FIXME - protected ReferentialService getReferentialService() { -// ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); -// return context.newService(ReferentialService.class); - return null; - } - - protected abstract FormDto<E> loadToEdit(String id); - - protected void loadBean(String id) { - FormDto<E> formDto = loadToEdit(id); - getModel().setFormDto(formDto); - loadBean(formDto.getForm()); - } - - protected void loadBean(E bean) { - IdDtos.copyIdDto(bean, getBean()); - } - - protected abstract FormDto<E> loadToReadDto(String id); - } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java index 8aa0914..6516573 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java @@ -23,9 +23,11 @@ package fr.ird.observe.ui.content; */ import com.google.common.base.Predicate; -import com.google.common.collect.Collections2; import com.google.common.collect.Lists; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.validation.ObserveValidator; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; @@ -98,7 +100,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 3.7 */ -public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E>> { +public class ContentUIInitializer<E extends AbstractObserveDto, UI extends ObserveContentUI<E>> { public static final String OBSERVE_ACTION = "observeAction"; @@ -117,6 +119,12 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E this.ui = ui; } + //FIXME +// protected static void attachTopiaContext(DataSource service, +// TopiaEntityAbstract entity) { +// DBHelper.attachTopiaContext(service.getRootCtxt(), entity); +// } + public static TableCellEditor newFloatColumnEditor(JTable table) { NumberCellEditor<Float> editor = JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); @@ -186,13 +194,15 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E log.debug("ui " + getClass()); } - ActionMap actionMap = ObserveContext.get().getActionMap(); + ActionMap actionMap = ObserveSwingApplicationContext.get().getActionMap(); // initialisation des éditeurs + init(dataSource); + Set<String> doNotBlockComponentIds = new HashSet<String>(); - DecoratorService decoratorService = ObserveContext.get().getDecoratorService(); + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); for (String name : ui.get$objectMap().keySet()) { Object o = ui.getObjectById(name); @@ -201,6 +211,11 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E continue; } + if (o instanceof AbstractObserveDto) { + init(dataSource, (AbstractObserveDto) o); + continue; + } + if (o instanceof JComponent) { init((JComponent) o, doNotBlockComponentIds); @@ -370,12 +385,12 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E Object init = jlist.getClientProperty("addDecorator"); if (init != null) { - Class<IdDto> klass = (Class<IdDto>) init; + Class<AbstractObserveDto> klass = (Class<AbstractObserveDto>) init; if (log.isDebugEnabled()) { log.debug("addDecorator to list " + jlist.getName()); } - Decorator<IdDto> decorator = ObserveContext.get().getDecorator(klass); + Decorator<AbstractObserveDto> decorator = decoratorService.getDecoratorByType(klass); jlist.putClientProperty("decorator", decorator); } @@ -590,40 +605,44 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * Remplit le modèle d'une liste graphique avec la liste des entités d'un * type donné sur un service de persistance donné. * + * @param storageService le service de persistance à utiliser pour + * récupérer les entités + * @param entityClass le type de l'entité * @param list le component graphique à initialiser + * @throws DataSourceException si un problème lors de la récupération + * des entités * @since 1.5 */ - protected <E extends IdDto> void prepareEntityList(FilterableDoubleList<ReferenceDto> list) { + protected <E extends AbstractObserveDto> void prepareEntityList(DataSource storageService, + Class<E> entityClass, + FilterableDoubleList<E> list) throws DataSourceException { - ObserveContext tx = ObserveContext.get(); + ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); - Class<E> dtoClass = (Class<E>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_ENTITY_CLASS); // init list - Decorator<ReferenceDto> decorator = tx.getDecorator(ReferenceDto.class, dtoClass.getName()); + Decorator<E> decorator = tx.getDecorator(entityClass); if (log.isDebugEnabled()) { log.debug("Will use decorator " + decorator); } list.putClientProperty("decorator", decorator); - List<ReferenceDto> data = null; - - if (ReferentialDto.class.isAssignableFrom(dtoClass)) { + List<E> data = null; - Predicate<ReferenceDto> predicate = (Predicate<ReferenceDto>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); + if (ReferentialDto.class.isAssignableFrom(entityClass)) { - ReferenceSetDto<E> referenceSetDto = getFormDto().getReferenceSetDto(dtoClass); - data = new ArrayList<>(Collections2.filter(referenceSetDto.getReference(), predicate)); -// data = tx.getDataService().getList(storageService, realEntityClass, predicate); + Predicate<E> predicate = (Predicate<E>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); + //FIXME +// data = tx.getDataService().getList(storageService, entityClass, predicate); } else { - data = new ArrayList<>(); + data = new ArrayList<E>(); } // sort data from first decorator context - DecoratorUtil.sort((JXPathDecorator<ReferenceDto>) decorator, data, 0); + DecoratorUtil.sort((JXPathDecorator<E>) decorator, data, 0); // set datas to list and init renderer - list.init((JXPathDecorator<ReferenceDto>) decorator, data, Collections.<ReferenceDto>emptyList()); + list.init((JXPathDecorator<E>) decorator, data, Collections.<E>emptyList()); // get the renderer initialized ListCellRenderer renderer = list.getSelectedList().getCellRenderer(); @@ -634,10 +653,10 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E list.putClientProperty("data", data); - //FIXME // listen on cache modification -// EntityDoubleListPropertyChangeListener<E> listener = -// new EntityDoubleListPropertyChangeListener<E>(entityClass, list); + EntityDoubleListPropertyChangeListener<E> listener = + new EntityDoubleListPropertyChangeListener<E>(entityClass, list); + //FIXME // DataService service = ObserveContext.get().getDataService(); // service.addReferentielPropertyChangeListener(entityClass, listener); } @@ -646,40 +665,44 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * Remplit le modèle d'une liste graphique avec la liste des entités d'un * type donné sur un service de persistance donné. * + * @param storageService le service de persistance à utiliser pour + * récupérer les entités + * @param entityClass le type de l'entité * @param list le component graphique à initialiser + * @throws DataSourceException si un problème lors de la récupération + * des entités * @since 1.5 */ - protected <E extends IdDto> void prepareEntityList(Class<E> dtoClass, - BeanListHeader<ReferenceDto> list) { + protected <E extends AbstractObserveDto> void prepareEntityList(DataSource storageService, + Class<E> entityClass, + BeanListHeader<E> list) throws DataSourceException { - ObserveContext tx = ObserveContext.get(); + ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); // init list - Decorator<ReferenceDto> decorator = tx.getDecorator(ReferenceDto.class, dtoClass.getName()); + Decorator<E> decorator = tx.getDecorator(entityClass); if (log.isDebugEnabled()) { log.debug("Will use decorator " + decorator); } list.putClientProperty("decorator", decorator); + List<E> data = null; - List<ReferenceDto> data; + if (ReferentialDto.class.isAssignableFrom(entityClass)) { - if (ReferentialDto.class.isAssignableFrom(dtoClass)) { - - Predicate<ReferenceDto> predicate = (Predicate<ReferenceDto>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); - - ReferenceSetDto<E> referenceSetDto = getFormDto().getReferenceSetDto(dtoClass); - data = new ArrayList<>(Collections2.filter(referenceSetDto.getReference(), predicate)); + Predicate<E> predicate = (Predicate<E>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); + //FIXME +// data = tx.getDataService().getList(storageService, entityClass, predicate); } else { - data = new ArrayList<>(); + data = new ArrayList<E>(); } // sort data from first decorator context - DecoratorUtil.sort((JXPathDecorator<ReferenceDto>) decorator, data, 0); + DecoratorUtil.sort((JXPathDecorator<E>) decorator, data, 0); // set datas to list and init renderer - list.init((JXPathDecorator<ReferenceDto>) decorator, data); + list.init((JXPathDecorator<E>) decorator, data); // get the renderer initialized ListCellRenderer renderer = list.getList().getCellRenderer(); @@ -689,10 +712,10 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E list.putClientProperty("data", data); - //FIXME // listen on cache modification -// EntityListPropertyChangeListener<E> listener = -// new EntityListPropertyChangeListener<E>(dtoClass, list); + EntityListPropertyChangeListener<E> listener = + new EntityListPropertyChangeListener<E>(entityClass, list); + //FIXME // DataService service = ObserveContext.get().getDataService(); // service.addReferentielPropertyChangeListener(entityClass, listener); } @@ -702,52 +725,63 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * pour un service de persistance donné. * * @param <E> le type de l'entité + * @param storageService le service de persistance à utiliser pour récupérer + * les entités + * @param entityClass le type de l'entité * @param comboBox le component graphique à initialiser + * @throws DataSourceException si un pb pendant la récupération des + * entités */ - protected <E extends IdDto> void prepareBeanComboBox(BeanComboBox<ReferenceDto> comboBox) { + protected <E extends AbstractObserveDto> void prepareBeanComboBox( + DataSource storageService, + Class<E> entityClass, + BeanComboBox<E> comboBox) throws DataSourceException { - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); // init combobox - Class<E> dtoClass = (Class<E>) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_ENTITY_CLASS); - Decorator<ReferenceDto> decorator = context.getDecorator(ReferenceDto.class, dtoClass.getName()); + Decorator<E> decorator = context.getDecorator(entityClass); + + //FIXME +// DataService service = context.getDataService(); Boolean noLoad = (Boolean) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_NO_LOAD); - List<ReferenceDto> data = null; + List<E> data = null; if (noLoad != null && noLoad) { if (log.isInfoEnabled()) { - log.info("Skip loading of entity list [" + dtoClass.getName() + "] (listNoLoad property found)"); + log.info("Skip loading of entity list [" + entityClass.getName() + "] (listNoLoad property found)"); } data = Collections.emptyList(); - } else { // get complete data list from service - Predicate<ReferenceDto> predicate = (Predicate<ReferenceDto>) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); - - ReferenceSetDto<E> referenceSetDto = getFormDto().getReferenceSetDto(dtoClass); - data = new ArrayList<>(Collections2.filter(referenceSetDto.getReference(), predicate)); + Predicate<E> predicate = (Predicate<E>) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); + //FIXME +// data = service.getList(storageService, entityClass, predicate); } - boolean referentialEntity = ReferentialDto.class.isAssignableFrom(dtoClass); - if (referentialEntity) { + boolean referenceEntity = ReferentialDto.class.isAssignableFrom(entityClass); + + if (referenceEntity) { //TC-20100208 : on ne veut pas voir les elements du referentiel non actif - ReferentialDtos.filterReferentialListByStatus((List) data); + //FIXME +// ReferentialDtos.filterReferentielListByStatus((List) data); } + if (log.isInfoEnabled()) { - log.info("entity list [" + dtoClass.getName() + "] : " + data.size()); + log.info("entity list [" + entityClass.getName() + "] : " + data.size()); } // add data list to combo box - comboBox.init((JXPathDecorator<ReferenceDto>) decorator, data); + comboBox.init((JXPathDecorator<E>) decorator, data); final ListCellRenderer renderer = comboBox.getCombobox().getRenderer(); @@ -774,24 +808,24 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E }; comboBox.getCombobox().setRenderer(toolTipRenderer); if (log.isDebugEnabled()) { - log.debug("combo list [" + dtoClass.getName() + "] : " + + log.debug("combo list [" + entityClass.getName() + "] : " + comboBox.getData().size()); } - if (referentialEntity) { - //FIXME + if (referenceEntity) { // listen on cache modification -// BeanComboBoxPropertyChangeListener listener = -// new BeanComboBoxPropertyChangeListener(realEntityClass, comboBox) { -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// if (log.isDebugEnabled()) { -// log.debug("entity list [" + evt.getPropertyName() + "]"); -// } -// super.propertyChange(evt); -// } -// }; + BeanComboBoxPropertyChangeListener listener = + new BeanComboBoxPropertyChangeListener(entityClass, comboBox) { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (log.isDebugEnabled()) { + log.debug("entity list [" + evt.getPropertyName() + "]"); + } + super.propertyChange(evt); + } + }; + //FIXME // service.addReferentielPropertyChangeListener(entityClass, listener); } @@ -805,7 +839,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * @param <E> le type des entités */ protected static class EntityListPropertyChangeListener - <E extends IdDto> implements PropertyChangeListener { + <E extends AbstractObserveDto> implements PropertyChangeListener { /** le type des entités */ private Class<E> entityClass; @@ -853,7 +887,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * @param <E> le type des entités */ protected static class EntityDoubleListPropertyChangeListener - <E extends IdDto> implements PropertyChangeListener { + <E extends AbstractObserveDto> implements PropertyChangeListener { /** le type des entités */ private Class<E> entityClass; 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 115c5f0..14a70be 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 @@ -24,7 +24,7 @@ contentTitle='{n("observe.longlineDetailComposition.title")}'> <import> - fr.ird.observe.ObserveContext + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.services.dto.longline.SetLonglineDto fr.ird.observe.ui.actions.shared.ResetEditUIAction fr.ird.observe.ui.actions.shared.SaveEditUIAction @@ -174,7 +174,7 @@ <Table fill="both" constraints='BorderLayout.NORTH'> <row> <cell weightx="1" fill="both" weighty="1"> - <BranchlineUI id="branchlineDetailUI" constructorParams="ObserveContext.get().getObserveMainUI()"/> + <BranchlineUI id="branchlineDetailUI" constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </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 f4818b0..2074eb1 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 @@ -22,12 +22,12 @@ package fr.ird.observe.ui.content.impl.longline; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.entities.longline.SectionTemplate; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; @@ -53,8 +53,10 @@ import javax.swing.event.TableModelListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n.t; @@ -310,7 +312,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong this.branchlineDecorator = getDecoratorService().getDecoratorByType(BranchlineDto.class); LonglineDetailCompositionUIInitializer uiInitializer = new LonglineDetailCompositionUIInitializer(getUi()); - uiInitializer.initUI(); + uiInitializer.initUI(getDataSource()); LonglineDetailCompositionUI ui1 = getUi(); @@ -474,16 +476,6 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } - @Override - protected FormDto<SetLonglineDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<SetLonglineDto> loadToReadDto(String id) { - return null; - } - //FIXME // @Override // protected boolean doSave(SetLonglineDto bean, @@ -792,7 +784,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.sections.delete.message"), @@ -842,7 +834,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong // log.info("Delete: " + data); // } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.sectionTemplate.delete.message"), @@ -884,7 +876,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong // // boolean accept = UIHelper.confirmForEntityDelete(ui, Section.class, selectedSection); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.setBusy(false); //FIXME @@ -972,7 +964,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } boolean accept = UIHelper.confirmForEntityDelete(ui, BasketDto.class, selectedBasket); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.setBusy(false); if (!accept) { @@ -1080,7 +1072,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } boolean accept = UIHelper.confirmForEntityDelete(ui, BranchlineDto.class, selectedBranchline); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.setBusy(false); if (!accept) { return; 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 6c7f492..eb9c810 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 @@ -24,8 +24,7 @@ contentTitle='{n("observe.longlineGlobalComposition.title")}'> <import> - fr.ird.observe.ObserveContext - fr.ird.observe.services.dto.ReferenceDto + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.services.dto.CommentableDto fr.ird.observe.services.dto.longline.SetLonglineDto fr.ird.observe.services.dto.referential.longline.MitigationTypeDto @@ -78,7 +77,7 @@ <tab id='floatlinesCompositionTab'> <JPanel id="floatlinesCompositionPanel" layout='{new BorderLayout()}'> <FloatlinesCompositionUI id="floatlinesCompositionUI" - constructorParams="ObserveContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </JPanel> </tab> @@ -86,7 +85,7 @@ <tab id='branchlinesCompositionTab'> <JPanel id="branchlinesCompositionPanel" layout='{new BorderLayout()}'> <BranchlinesCompositionUI id="branchlinesCompositionUI" - constructorParams="ObserveContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </JPanel> </tab> @@ -94,7 +93,7 @@ <tab id='hooksCompositionTab'> <JPanel id="hooksCompositionPanel" layout='{new BorderLayout()}'> <HooksCompositionUI id="hooksCompositionUI" - constructorParams="ObserveContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </JPanel> </tab> @@ -102,7 +101,7 @@ <tab id='baitsCompositionTab'> <JPanel id="baitsCompositionPanel" layout='{new BorderLayout()}'> <BaitsCompositionUI id="baitsCompositionUI" - constructorParams="ObserveContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </JPanel> </tab> @@ -113,8 +112,7 @@ <Table fill='both' constraints='BorderLayout.NORTH'> <row> <cell weighty="1" weightx="1"> - <FilterableDoubleList id='mitigationType' - genericType='ReferenceDto<MitigationTypeDto>' _entityClass="MitigationTypeDto.class"/> + <FilterableDoubleList id='mitigationType' genericType='MitigationTypeDto'/> </cell> </row> </Table> 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 fb08b00..c50b765 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 @@ -22,11 +22,10 @@ package fr.ird.observe.ui.content.open.impl.longline; * #L% */ -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.longline.ActivityLonglineDtos; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; @@ -97,7 +96,7 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline TripLonglineUI ui = getUi(); TripMapUI tripMap = ui.getTripMap(); - ObserveConfig config = ui.getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = ui.getContextValue(ObserveSwingApplicationConfig.class); tripMap.getHandler().setConfig(config); 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 d121325..a5145d4 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 @@ -21,11 +21,8 @@ */ package fr.ird.observe.ui.content.open.impl.seine; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.ObserveTechnicalException; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; @@ -36,14 +33,11 @@ import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; -import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.util.DateUtil; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.JOptionPane; -import java.util.Date; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -461,7 +455,7 @@ public class RouteUIHandler extends ContentOpenableUIHandler<RouteDto> { // on recupère l'écran d'édition ActivitySeineUI selectedUI = (ActivitySeineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // on recupère l'activity de fin de veille VesselActivitySeineDto vesselActivitySeine = null; 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 7c964ae..9b4e2d7 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.content.open.impl.seine; -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; @@ -96,7 +96,7 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeineDto> { TripSeineUI ui = getUi(); TripMapUI tripMap = ui.getTripMap(); - ObserveConfig config = ui.getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = ui.getContextValue(ObserveSwingApplicationConfig.class); tripMap.getHandler().setConfig(config); 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 ddfd2b5..ec56dec 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 @@ -21,23 +21,21 @@ */ package fr.ird.observe.ui.content.ref; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.validation.ValidationContext; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.I18nReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.VesselSizeCategoryDto; -import fr.ird.observe.services.service.ReferentialService; -import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; +import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.usage.UsagesUI; import fr.ird.observe.ui.util.SpringUtilities; import jaxx.runtime.JAXXContext; @@ -50,12 +48,14 @@ import org.nuiton.decorator.Decorator; import javax.swing.*; import javax.swing.border.TitledBorder; +import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import java.awt.*; import java.beans.Introspector; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; @@ -103,7 +103,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content E entity, Map<Class<? extends IdDto>, List<? extends IdDto>> usages) { - DecoratorService service = ObserveContext.get().getDecoratorService(); + DecoratorService service = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<?> decorator = service.getDecoratorByType(entity.getClass()); String type = DecoratorService.getEntityLabel(entity.getClass()); type = t(type); @@ -131,7 +131,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content E entity, Map<Class<? extends IdDto>, List<? extends IdDto>> usages) { - DecoratorService service = ObserveContext.get().getDecoratorService(); + DecoratorService service = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<?> decorator = service.getDecoratorByType(entity.getClass()); String type = DecoratorService.getEntityLabel(entity.getClass()); type = t(type); @@ -174,10 +174,6 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content //FIXME // getLoadBinder().load(selectedBean, getBean(), true); - loadBean(selectedBean); - - //TODO update data cache - } @Override @@ -326,7 +322,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content // } // return; // } - DecoratorService dService = ObserveContext.get().getDecoratorService(); + DecoratorService dService = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<?> decorator = dService.getDecoratorByType(bean.getClass()); String type = DecoratorService.getEntityLabel(bean.getClass()); type = t(type); @@ -392,7 +388,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content public void initUI() throws Exception { ReferentialContentUIInitializer<E, ContentReferenceUI<E>> uiInitializer = new ReferentialContentUIInitializer<E, ContentReferenceUI<E>>(getUi()); - uiInitializer.initUI(); + uiInitializer.initUI(getDataSource()); ContentReferenceUI<E> ui = getUi(); @@ -532,8 +528,8 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content @Override protected void prepareValidationContext() { super.prepareValidationContext(); - BeanListHeader<ReferenceDto> jList = getUi().getListHeader(); - List<ReferenceDto> data = jList.getData(); + BeanListHeader<E> jList = getUi().getListHeader(); + List<E> data = jList.getData(); ValidationContext validationContext = ObserveServiceHelper.get().getValidationContext(); if (log.isDebugEnabled()) { @@ -560,7 +556,6 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content //FIXME // getLoadBinder().load(null, getBean(), true); - loadBean((E) null); // on demarre l'edition ui.startEdit(null); @@ -577,7 +572,6 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content //FIXME // getLoadBinder().load(model.getSelectedBean(), getBean(), true); - loadBean(model.getSelectedBean()); getUi().startEdit(null); } @@ -620,7 +614,6 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content // repush selected bean to bean //FIXME // getLoadBinder().load(model.getSelectedBean(), getBean(), true); - loadBean(model.getSelectedBean()); } } @@ -858,18 +851,4 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content ContentReferenceUI.DETAIL_VIEW : ContentReferenceUI.LIST_VIEW; } - - @Override - protected FormDto<E> loadToEdit(String id) { - ReferentialService referentialService = getReferentialService(); - FormDto<E> formDto = referentialService.loadToEdit(getBeanType(), id); - return formDto; - } - - @Override - protected FormDto<E> loadToReadDto(String id) { - ReferentialService referentialService = getReferentialService(); - FormDto<E> formDto = referentialService.loadToRead(getBeanType(), id); - return formDto; - } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java index e56f645..74624ed 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java @@ -22,10 +22,27 @@ package fr.ird.observe.ui.content.ref; * #L% */ +import com.google.common.base.Predicate; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ObserveContext; +import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.services.dto.AbstractObserveDto; +import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.ui.content.ContentUIInitializer; +import fr.ird.observe.ui.content.ObserveContentUI; +import jaxx.runtime.swing.editor.bean.BeanListHeader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; +import org.nuiton.decorator.DecoratorUtil; +import org.nuiton.decorator.JXPathDecorator; + +import javax.swing.JList; +import javax.swing.ListCellRenderer; +import java.util.ArrayList; +import java.util.List; /** * Created on 11/28/14. diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java index 9a9f5d9..6fa1640 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.content.ref; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ObserveSwingApplicationContext; import javax.swing.table.AbstractTableModel; import java.util.List; @@ -53,7 +53,7 @@ public class UniqueKeyTableModel extends AbstractTableModel { public DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } 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 d0e2558..e40cd5f 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 @@ -341,7 +341,7 @@ public abstract class ContentTableUIHandler<E extends IdDto, D extends IdDto> ex } finally { // always reset busy model to false - ObserveContext.get().getObserveMainUI().setBusy(false); + ObserveSwingApplicationContext.get().getObserveMainUI().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 f37f815..f70b61e 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 @@ -23,8 +23,8 @@ package fr.ird.observe.ui.content.table.impl.longline; */ import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.longline.BasketDto; @@ -40,9 +40,11 @@ import fr.ird.observe.services.dto.referential.longline.HealthnessDto; import fr.ird.observe.services.dto.referential.longline.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; +import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; @@ -59,6 +61,8 @@ import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -380,7 +384,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, SizeMeasureTypeDto.class)); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - Decorator<SizeMeasureTypeDto> decorator = ObserveContext.get().getDecorator(SizeMeasureTypeDto.class); + Decorator<SizeMeasureTypeDto> decorator = ObserveSwingApplicationContext.get().getDecorator(SizeMeasureTypeDto.class); //FIXME // List<SizeMeasureTypeDto> list; @@ -411,7 +415,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, WeightMeasureTypeDto.class)); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - Decorator<WeightMeasureTypeDto> decorator = ObserveContext.get().getDecorator(WeightMeasureTypeDto.class); + Decorator<WeightMeasureTypeDto> decorator = ObserveSwingApplicationContext.get().getDecorator(WeightMeasureTypeDto.class); //FIXME // List<WeightMeasureType> list; @@ -439,16 +443,17 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto }); } - @Override - protected String getEditBeanIdToLoad() { - return getDataContext().getSelectedSetId(); - } + //FIXME +// @Override +// protected String getEditBeanIdToLoad(DataContext dataContext, DataService dataService, DataSource dataSource) { +// return dataContext.getSelectedSetId(); +// } @Override public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); { String speciesListId = config.getSpeciesListLonglineCatchId(); 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 34b6aea..87a2f16 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 @@ -22,9 +22,7 @@ package fr.ird.observe.ui.content.table.impl.longline; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.EncounterDto; @@ -99,7 +97,7 @@ public class EncounterUIHandler extends ContentTableUIHandler<ActivityLonglineDt public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); String speciesListId = config.getSpeciesListLonglineEncounterId(); prepareSpeciesList(speciesListId, getUi().getSpecies() , n("observe.error.speciesList.longline.encounter.notFound")); 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 35868c8..6195071 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 @@ -22,11 +22,8 @@ package fr.ird.observe.ui.content.table.impl.longline; * #L% */ -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.ObserveTechnicalException; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.longline.GearUseFeaturesLonglineDto; import fr.ird.observe.services.dto.longline.GearUseFeaturesMeasurementLonglineDto; @@ -36,7 +33,6 @@ import fr.ird.observe.services.dto.referential.GearDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; -import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import fr.ird.observe.ui.content.table.impl.seine.GearUseFeatureMeasurementCellEditor; import fr.ird.observe.ui.content.table.impl.seine.GearUseFeatureMeasurementCellRenderer; @@ -64,8 +60,6 @@ import java.awt.Insets; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -246,7 +240,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip table.getTableHeader().setReorderingAllowed(false); - Decorator<GearCaracteristicDto> decorator = ObserveContext.get().getDecorator(GearCaracteristicDto.class); + Decorator<GearCaracteristicDto> decorator = ObserveSwingApplicationContext.get().getDecorator(GearCaracteristicDto.class); //FIXME // List<GearCaracteristic> list; @@ -372,7 +366,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.measurement.delete.message"), 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 964247b..00813aa 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 @@ -25,11 +25,8 @@ package fr.ird.observe.ui.content.table.impl.longline; import com.google.common.base.Predicate; import com.google.common.io.FileWriteMode; import com.google.common.io.Files; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.ObserveTechnicalException; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SensorUsedDto; @@ -144,7 +141,7 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLonglineD getTableEditBean().setData(serialBlob); getTableEditBean().setDataFilename(file.getName()); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.getStatus().setStatus(t("observe.sensorUsed.message.data.imported", file)); } catch (IOException e) { @@ -222,7 +219,7 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLonglineD IOUtils.copy(binaryStream, outputstream); outputstream.close(); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.getStatus().setStatus(t("observe.sensorUsed.message.data.exported", file)); } catch (IOException e) { throw new ObserveTechnicalException("Could not save binary data to " + file, e); 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 a4e436b..2a2bc0f 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 @@ -25,22 +25,17 @@ package fr.ird.observe.ui.content.table.impl.longline; import com.google.common.base.Predicate; import com.google.common.io.FileWriteMode; import com.google.common.io.Files; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.ObserveTechnicalException; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.longline.SetLonglineDto; import fr.ird.observe.services.dto.longline.TdrDto; import fr.ird.observe.services.dto.referential.longline.SensorBrandDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; -import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; -import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.HidorButton; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; @@ -68,7 +63,6 @@ import java.io.OutputStream; import java.sql.SQLException; import java.util.Date; import java.util.HashSet; -import java.util.List; import java.util.Set; import static org.nuiton.i18n.I18n.n; @@ -207,7 +201,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineDto, TdrDto> public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); String speciesListId = config.getSpeciesListLonglineCatchId(); prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.longline.catch.notFound")); @@ -328,7 +322,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineDto, TdrDto> getTableEditBean().setData(serialBlob); getTableEditBean().setDataFilename(file.getName()); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.getStatus().setStatus(t("observe.tdr.message.data.imported", file)); } catch (IOException e) { @@ -406,7 +400,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineDto, TdrDto> IOUtils.copy(binaryStream, outputstream); outputstream.close(); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.getStatus().setStatus(t("observe.sensorUsed.message.data.exported", file)); } catch (IOException e) { throw new ObserveTechnicalException("Could not save binary data to " + file, e); 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 0d12d07..cf26366 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 @@ -22,11 +22,8 @@ package fr.ird.observe.ui.content.table.impl.seine; * #L% */ -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.ObserveTechnicalException; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.referential.GearCaracteristicDto; import fr.ird.observe.services.dto.referential.GearDto; @@ -36,7 +33,6 @@ import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; -import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import fr.ird.observe.ui.util.table.AutotSelectRowAndShowPopupActionSupport; import fr.ird.observe.ui.util.table.EditableTableModelSupport; @@ -62,8 +58,6 @@ import java.awt.Insets; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -244,7 +238,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei table.getTableHeader().setReorderingAllowed(false); - Decorator<GearCaracteristicDto> decorator = ObserveContext.get().getDecorator(GearCaracteristicDto.class); + Decorator<GearCaracteristicDto> decorator = ObserveSwingApplicationContext.get().getDecorator(GearCaracteristicDto.class); //FIXME // List<GearCaracteristicDto> list; @@ -370,7 +364,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.measurement.delete.message"), 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 2e06003..65bd7ef 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 @@ -62,8 +62,8 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, UIHelper.newListContextEntryDef("NonTargetCatchUI-all-taille-to-delete"); /** - * Ecoute les modifications de la propriété {@link NonTargetCatch#getTotalCount()}, - * et repasser alors le flag {@link NonTargetCatch#getTotalCountComputedSource()} à + * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getTotalCount()}, + * et repasser alors le flag {@link NonTargetCatchDto#getTotalCountComputedSource()} à * {@code null}. * * @since 3.0 @@ -77,8 +77,8 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, }; /** - * Ecoute les modifications de la propriété {@link NonTargetCatch#getCatchWeight()}, - * et repasser alors le flag {@link NonTargetCatch#getCatchWeightComputedSource()} à + * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getCatchWeight()}, + * et repasser alors le flag {@link NonTargetCatchDto#getCatchWeightComputedSource()} à * {@code null}. * * @since 3.0 @@ -92,8 +92,8 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, }; /** - * Ecoute les modifications de la propriété {@link NonTargetCatch#getMeanWeight()}, - * et repasser alors le flag {@link NonTargetCatch#getMeanWeightComputedSource()} à + * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getMeanWeight()}, + * et repasser alors le flag {@link NonTargetCatchDto#getMeanWeightComputedSource()} à * {@code null}. * * @since 3.0 @@ -107,8 +107,8 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, }; /** - * Ecoute les modifications de la propriété {@link NonTargetCatch#getMeanLength()}, - * et repasser alors le flag {@link NonTargetCatch#getMeanLengthComputedSource()} à + * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getMeanLength()}, + * et repasser alors le flag {@link NonTargetCatchDto#getMeanLengthComputedSource()} à * {@code null}. * * @since 3.0 @@ -214,7 +214,7 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, // Ocean ocean = dataService.getTripOcean( // dataSource, dataContext.getSelectedTripId()); // -// ObserveConfig config = getUi().getContextValue(ObserveConfig.class); +// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); // String speciesListId = config.getSpeciesListSeineNonTargetCatchId(); // // // get all species 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 85e2fb6..4c4e31c 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.content.table.impl.seine; -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.referential.SpeciesDto; @@ -93,9 +93,9 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); String speciesListId = config.getSpeciesListSeineObjectObservedSpeciesId(); - prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.seine.objectObservedSpecies.notFound")); + prepareSpeciesList(speciesListId, getUi().getSpecies(),n("observe.error.speciesList.seine.objectObservedSpecies.notFound")); super.initUI(); 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 d6780b2..61f21d8 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 @@ -21,9 +21,7 @@ */ package fr.ird.observe.ui.content.table.impl.seine; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; @@ -90,7 +88,7 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); String speciesListId = config.getSpeciesListSeineObjectSchoolEstimateId(); prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.seine.objectSchoolEstimate.notFound")); 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 2252416..98b159b 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 @@ -21,17 +21,11 @@ */ package fr.ird.observe.ui.content.table.impl.seine; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.seine.SchoolEstimateDto; import fr.ird.observe.services.dto.seine.SetSeineDto; import fr.ird.observe.ui.UIHelper; -import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import jaxx.runtime.context.JAXXContextEntryDef; @@ -41,8 +35,6 @@ import org.apache.commons.logging.LogFactory; import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -86,7 +78,7 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineDto, // dataSource, dataContext.getSelectedTripId()); // // // get all species from the configured speciesList -// ObserveConfig config = getUi().getContextValue(ObserveConfig.class); +// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); // String speciesListId = config.getSpeciesListSeineSchoolEstimateId(); // // List<Species> allSpecies = 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 d167f4c..60001fd 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 @@ -148,7 +148,7 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, Tar // weightCategoryTopiaExecutor)); // // // Keep only weight categories for the species -// ObserveConfig config = getUi().getContextValue(ObserveConfig.class); +// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); // String speciesListId = config.getSpeciesListSeineTargetCatchId(); // // java.util.Set<String> speciesIds = loadSpeciesList(speciesListId, n("observe.error.speciesList.seine.targetCatch.notFound")); 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 0c288a3..e34db35 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 @@ -206,7 +206,7 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeineD // ); // // // filtre sur la liste d'espèce configuree -// ObserveConfig config = getUi().getContextValue(ObserveConfig.class); +// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); // String speciesListId = config.getSpeciesListSeineTargetCatchId(); // java.util.Set<String> speciesIds = loadSpeciesList(speciesListId, n("observe.error.speciesList.seine.targetCatch.notFound")); // diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/RemoteUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/RemoteUILauncher.java index c6dc554..a3aedde 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/RemoteUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/RemoteUILauncher.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.storage; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.business.util.SecurityModel; import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.ErrorDialogUI; @@ -62,6 +62,7 @@ public abstract class RemoteUILauncher extends StorageUILauncher { model.setCanCreateLocalService(false); model.setCanUseLocalService(false); model.setCanUseRemoteService(true); + model.setCanUseServerService(true); model.setDbMode(DbMode.USE_REMOTE); model.setAdminAction(action); // model.setPgInstall(new PGInstall() { 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 5950b3f..88987e4 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 @@ -21,9 +21,9 @@ */ package fr.ird.observe.ui.storage; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.db.constantes.DbMode; import jaxx.runtime.JAXXContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -110,7 +110,7 @@ public class StorageBackupUILauncher extends StorageUILauncher { } protected DataSource getStorage() { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); return source; } 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 f6b049f..beb5204 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 @@ -22,17 +22,24 @@ package fr.ird.observe.ui.storage; import com.google.common.base.Preconditions; -import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveActionExecutor; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveRunner; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; import fr.ird.observe.business.util.SecurityModel; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.ConnexionStatus; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.service.DataSourceDumpProducerService; +import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.tabs.RolesTableModel; @@ -42,6 +49,7 @@ import jaxx.runtime.JAXXContext; import jaxx.runtime.context.DefaultApplicationContext.AutoLoad; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.wizard.WizardUILancher; +import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; @@ -52,10 +60,12 @@ import java.awt.Window; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.Set; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -74,45 +84,26 @@ public class StorageUIHandler { private static final Log log = LogFactory.getLog(StorageUIHandler.class); /** - * Service de replication. - * <p/> - * Note: le service est sans état et donc peut rester en état du handler. - */ - //FIXME -// protected ReplicationService replicationService = -// ObserveServiceHelper.newReplicationService(); - - /** * Prépare une service de persistance à partir d'un modèle. * <p/> * Le service ne sera pas ouvert. * * @param model le modèle de la source de données - * @param isMain pour savoir si cela sera le service persistant - * principal * @param localLabel le label de la source si local - * @param remoteLabel le label de la source si distant * @return le service de persistance initialisé mais non ouvert. - * @throws IOException si une erreur pendant la configuration du service */ - public DataSource newServiceFromModel(StorageUIModel model, - boolean isMain, - String localLabel, - String remoteLabel) - throws IOException { + public ObserveDataSourceConfiguration newDataSourceConfigurationFromModel( + StorageUIModel model, + String localLabel) { - DataSource mainStorage = null; + ObserveDataSourceConfiguration mainConfiguration = null; - //FIXME -// switch (model.getDbMode()) { -// case CREATE_LOCAL: -// case USE_LOCAL: -// H2DataSourceConfig h2Config = model.toH2StorageConfig(localLabel); -// if (model.getDbMode() == DbMode.USE_LOCAL) { -// h2Config.setCreationMode(null); -// } -// H2DataSource h2Service = -// DataSourceFactory.newService(h2Config); + switch (model.getDbMode()) { + case CREATE_LOCAL: + case USE_LOCAL: + mainConfiguration = model.toH2StorageConfig(localLabel); + + // FIXME // h2Service.addDataSourceListener( // new DataSourceListenerAdapter() { // @@ -130,25 +121,17 @@ public class StorageUIHandler { // s.getConfig().setCreationMode(null); // } // }); -// -// mainStorage = h2Service; -// -// break; -// case USE_REMOTE: -// -// PGDataSourceConfig pgConfig = -// model.toPostgresStorageConfig(remoteLabel); -// PGDataSource pgservice = -// DataSourceFactory.newService(pgConfig); -// mainStorage = pgservice; -// break; -// } -// - if (isMain) { - // preparation du storage principal - ObserveContext.get().prepareMainStorage(mainStorage); + + break; + case USE_REMOTE: + mainConfiguration = model.toPGStorageConfig(localLabel); + break; + case USE_SERVER: + mainConfiguration = model.toRestStorageConfig(localLabel); + break; } - return mainStorage; + + return mainConfiguration; } public void initUI(final StorageUI ui) { @@ -218,10 +201,10 @@ public class StorageUIHandler { ui.CONFIRM.init(); // recuperation de la source de données en cours d'utilisation - DataSource source = ui.getContextValue(DataSource.class); + ObserveDataSourceConfiguration dataSourceConfiguration = ui.getContextValue(ObserveDataSourceConfiguration.class); // chargement du modèle - model.init(ui, source); + model.init(ui, dataSourceConfiguration); } public void start(StorageUI ui) { @@ -250,7 +233,7 @@ public class StorageUIHandler { if (StorageStep.CONFIG == newStep) { // on redemande un test de connexion a chaque fois - model.setConnexionStatus(null); + model.setConnexionStatus(ConnexionStatus.UNTESTED); } @@ -270,9 +253,8 @@ public class StorageUIHandler { if (StorageStep.SELECT_DATA == newStep && mustRecompute) { - if (ObstunaAdminAction.CREATE == ui.getModel().getAdminAction() ) { - //FIXME -// && model.getSelectDataModel() == null) { + if (ObstunaAdminAction.CREATE == ui.getModel().getAdminAction() + && model.getSelectDataModel().isEmpty()) { // récupération des données possibles à importer initSelectData(ui); @@ -317,7 +299,7 @@ public class StorageUIHandler { } }; } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); if (mainUI == null) { if (log.isWarnEnabled()) { log.warn("Launch standalone apply action " + action); @@ -335,7 +317,7 @@ public class StorageUIHandler { Runnable action = WizardUILancher.CANCEL_DEF.getContextValue(ui); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); if (mainUI == null) { if (log.isWarnEnabled()) { log.warn("Launch standalone cancel action " + action); @@ -357,209 +339,204 @@ public class StorageUIHandler { * @param model le model++ du storage a creer ou utiliser */ public void doChangeStorage(JAXXContext context, StorageUIModel model) { + ObserveSwingApplicationContext observeContext = ObserveSwingApplicationContext.get(); - //FIXME -// ObserveConfig config = context.getContextValue(ObserveConfig.class); -// // faut-il detruire la base locale ? -// boolean destroyLocalBase = -// config.isLocalStorageExist() && -// model.getDbMode() == DbMode.CREATE_LOCAL; -// -// if (log.isDebugEnabled()) { -// log.debug(">>> should destroy local db ? " + destroyLocalBase); -// } -// -// DataSource mainStorage = ObserveContext.get().getDataSource(); -// -// H2DataSource localStorage = null; -// if (mainStorage instanceof H2DataSource) { -// localStorage = (H2DataSource) mainStorage; -// } -// H2DataSourceConfig localConfig; -// -// boolean localDbIsSane = true; -// if (destroyLocalBase || model.isDoBackup()) { -// if (localStorage == null) { -// try { -// localConfig = config.toH2StorageConfig( -// n("observe.storage.label.local")); -// -// // la base ne doit pas etre mise a jour dans ce cas -// localConfig.setCanMigrate(false); -// -// // on charge un storage sur la base locale -// localStorage = DataSourceFactory.newService( -// localConfig); -// localStorage.doOpen(); -// } catch (Exception e) { -// // on a pas reussi à ouvrir la base locale -// // cela ne doit pas empécher de continuer -// // il faut juste supprimer physiquement le repertoire -// // de la base -// Exception e2 = new Exception(t("observe.error.storage.could.not.load.local.db", e.getMessage()), e); -// ErrorDialogUI.showError(e2); -// if (log.isErrorEnabled()) { -// log.error(e2.getMessage(), e2); -// } -// -// // on conserve l'état -// localDbIsSane = false; -// -// // pour la suite on fait comme si il n'y a pas de local storage -// localStorage = null; -// } -// } -// } -// -// if (model.isDoBackup()) { -// if (!localDbIsSane) { -// -// // la base locale n'est pas saine, on doit arrêter l'objectOperation -// // de changement de base sous peine de perdre la base. -// Exception e = new Exception(t("observe.error.storage.could.not.backup.unsane.local.db")); -// ErrorDialogUI.showError(e); -// return; -// } -// // effectue la backup de la base locale existante -// File f = model.getBackupFile(); -// if (log.isDebugEnabled()) { -// log.debug(">>> do backup with " + localStorage + " in " + f); -// } -// try { -// backupLocalDatabase(localStorage, f); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// return; -// } -// } -// -// if (destroyLocalBase) { -// if (log.isDebugEnabled()) { -// log.debug(">>> destroy local db " + localStorage); -// } -// if (!localDbIsSane) { -// // la base locale n'est pas saine, on va supprimer directement -// // le dossier de la base -// File localDBDirectory = config.getLocalDBDirectory(); -// if (log.isInfoEnabled()) { -// log.info(">>> destroy local db directory " + localDBDirectory); -// } -// try { -// FileUtils.deleteDirectory(localDBDirectory); -// } catch (IOException e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// } -// } else { -// try { -// localStorage.doClose(true); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// return; -// } -// } -// } -// -// // suppression du storage precedent -// if (mainStorage != null && mainStorage.isOpen()) { -// try { -// if (log.isDebugEnabled()) { -// log.debug(">>> close main storage " + mainStorage); -// } -// // on doit fermer le storage en cours d'utilisation -// mainStorage.doClose(false); -// -// } catch (DataSourceException ex) { -// ErrorDialogUI.showError(ex); -// } -// } -// -// // suppression du storage local -// if (localStorage != null && localStorage.isOpen()) { -// // ce cas peut arriver lorsque l'on fait juste une backup -// // sans vouloir supprimer la base locale -// try { -// if (log.isDebugEnabled()) { -// log.debug(">>> close local storage " + localStorage); -// } -// // on doit fermer le storage local ouvert -// localStorage.doClose(false); -// -// } catch (DataSourceException ex) { -// ErrorDialogUI.showError(ex); -// } -// } -// -// localStorage = null; -// -// if (log.isDebugEnabled()) { -// log.debug("Will create new storage..."); -// } -// -// // preparation du nouveau storage -// -// try { -// -// mainStorage = newServiceFromModel( -// model, -// true, -// "observe.storage.label.local", -// "observe.storage.label.remote" -// ); -// -// // ouverture du nouveau storage -// mainStorage.doOpen(); -// -// if (log.isInfoEnabled()) { -// log.info(">>> main storage opened " + mainStorage.getLabel()); -// } -// -// if (model.isStoreRemoteConfig()) { -// storeRemoteConfig(context, model); -// } -// if (model.getDbMode() == DbMode.CREATE_LOCAL && -// model.getCreationMode() == -// CreationMode.IMPORT_REMOTE_STORAGE) { -// // si on a creer la base locale a partir d'un import d'une base -// // distante, on sauvegarde la base locale comme dump initial -// // il s'agit d'un dump du référentiel -// File f = config.getInitialDbDump(); -// if (f.exists()) { -// // on supprime le dump sql de la base embarquée -// if (!f.delete()) { -// throw new IllegalStateException("could not delete " + -// f); -// } -// } -// if (log.isInfoEnabled()) { -// log.info(">>> create initial dump with " + localStorage + -// " in " + f); -// } -// try { -// backupLocalDatabase(mainStorage, f); -// config.setInitialDumpExist(true); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// } -// } -// } catch (Exception ex) { -// ErrorDialogUI.showError(ex); -// if (log.isErrorEnabled()) { -// log.error(ex.getMessage(), ex); -// } -// throw new RuntimeException(ex); -// } + ObserveSwingApplicationConfig config = observeContext.getConfig(); + + // faut-il detruire la base locale ? + boolean destroyLocalBase = + config.isLocalStorageExist() && + model.getDbMode() == DbMode.CREATE_LOCAL; + + if (log.isDebugEnabled()) { + log.debug(">>> should destroy local db ? " + destroyLocalBase); + } + + ObserveDataSourceConfiguration sourceConfiguration = observeContext.getObserveDataSourceConfiguration(); + ObserveDataSourceConnection localConnection = observeContext.getObserveDataSourceConnection(); + + ObserveDataSourceConfigurationTopiaH2 localConfiguration = null; + + if (sourceConfiguration instanceof ObserveDataSourceConfigurationTopiaH2) { + localConfiguration = (ObserveDataSourceConfigurationTopiaH2) sourceConfiguration; + } + + DataSourceService localDataSourceService = null; + + + boolean localDbIsSane = true; + if (destroyLocalBase || model.isDoBackup()) { + if (localConfiguration == null) { + try { + localConfiguration = config.getDataSourceConfigurationH2(n("observe.storage.label.local")); + + // la base ne doit pas etre mise a jour dans ce cas + localConfiguration.setCanMigrate(false); + + // on charge un storage sur la base locale + localDataSourceService = observeContext.newService(localConfiguration, DataSourceService.class); + localConnection = localDataSourceService.open(localConfiguration); + } catch (Exception e) { + // on a pas reussi à ouvrir la base locale + // cela ne doit pas empécher de continuer + // il faut juste supprimer physiquement le repertoire + // de la base + Exception e2 = new Exception(t("observe.error.storage.could.not.load.local.db", e.getMessage()), e); + ErrorDialogUI.showError(e2); + if (log.isErrorEnabled()) { + log.error(e2.getMessage(), e2); + } + + // on conserve l'état + localDbIsSane = false; + + // pour la suite on fait comme si il n'y a pas de local storage + localDataSourceService = null; + } + } + } + + if (model.isDoBackup()) { + if (!localDbIsSane) { + + // la base locale n'est pas saine, on doit arrêter l'objectOperation + // de changement de base sous peine de perdre la base. + Exception e = new Exception(t("observe.error.storage.could.not.backup.unsane.local.db")); + ErrorDialogUI.showError(e); + return; + } + // effectue la backup de la base locale existante + File f = model.getBackupFile(); + if (log.isDebugEnabled()) { + log.debug(">>> do backup with " + localConfiguration + " in " + f); + } + try { + DataSourceDumpProducerService dumpProducerService = observeContext.newService(localConfiguration, localConnection, DataSourceDumpProducerService.class); + backupLocalDatabase(dumpProducerService, f); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e.getMessage(), e); + } + return; + } + } + + if (destroyLocalBase) { + if (log.isDebugEnabled()) { + log.debug(">>> destroy local db " + localConfiguration); + } + if (!localDbIsSane) { + // la base locale n'est pas saine, on va supprimer directement + // le dossier de la base + File localDBDirectory = config.getLocalDBDirectory(); + if (log.isInfoEnabled()) { + log.info(">>> destroy local db directory " + localDBDirectory); + } + try { + FileUtils.deleteDirectory(localDBDirectory); + } catch (IOException e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e.getMessage(), e); + } + } + } else { + try { + localDataSourceService.destroy(); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e.getMessage(), e); + } + return; + } + } + } + + // suppression du storage precedent + if (sourceConfiguration != null) { + if (log.isDebugEnabled()) { + log.debug(">>> close main storage " + sourceConfiguration); + } + // on doit fermer le storage en cours d'utilisation + DataSourceService dataSourceService = observeContext.newService(DataSourceService.class); + dataSourceService.close(); + } + + // suppression du storage local + if (localConfiguration != null && localConfiguration != sourceConfiguration) { + // ce cas peut arriver lorsque l'on fait juste une backup + // sans vouloir supprimer la base locale + if (log.isDebugEnabled()) { + log.debug(">>> close local storage " + localConfiguration); + } + // on doit fermer le storage local ouvert + localDataSourceService.close(); + } + + localConfiguration = null; + + if (log.isDebugEnabled()) { + log.debug("Will create new storage..."); + } + + // preparation du nouveau storage + + try { + + sourceConfiguration = newDataSourceConfigurationFromModel(model, t("observe.storage.label.local")); + + // ouverture du nouveau storage + DataSourceService dataSourceService = observeContext.newService(sourceConfiguration, DataSourceService.class); + ObserveDataSourceConnection sourceConnection = dataSourceService.open(sourceConfiguration); + + observeContext.setObserveDataSourceConfiguration(sourceConfiguration); + observeContext.setObserveDataSourceConnection(sourceConnection); + + if (log.isInfoEnabled()) { + log.info(">>> main storage opened " + sourceConfiguration.getLabel()); + } + + if (model.isStoreRemoteConfig()) { + storeRemoteConfig(context, model); + } + if (model.getDbMode() == DbMode.CREATE_LOCAL && + model.getCreationMode() == + CreationMode.IMPORT_REMOTE_STORAGE) { + // si on a creer la base locale a partir d'un import d'une base + // distante, on sauvegarde la base locale comme dump initial + // il s'agit d'un dump du référentiel + File f = config.getInitialDbDump(); + if (f.exists()) { + // on supprime le dump sql de la base embarquée + if (!f.delete()) { + throw new IllegalStateException("could not delete " + + f); + } + } + if (log.isInfoEnabled()) { + log.info(">>> create initial dump with " + localConfiguration + + " in " + f); + } + try { + DataSourceDumpProducerService dumpProducerService = observeContext.newService(DataSourceDumpProducerService.class); + backupLocalDatabase(dumpProducerService, f); + config.setInitialDumpExist(true); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e.getMessage(), e); + } + } + } + } catch (Exception ex) { + ErrorDialogUI.showError(ex); + if (log.isErrorEnabled()) { + log.error(ex.getMessage(), ex); + } + throw new RuntimeException(ex); + } } /** @@ -570,31 +547,29 @@ public class StorageUIHandler { * @param model le model de la source de données */ public void storeRemoteConfig(JAXXContext context, StorageUIModel model) { - ObserveConfig config = context.getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = context.getContextValue(ObserveSwingApplicationConfig.class); // on sauvegarde dans le parametrage dans la configuration de // l'application - //FIXME -// PGDataSourceConfig remoteConfig = model.toPostgresStorageConfig(""); -// config.fromStorageConfig(remoteConfig); + ObserveDataSourceConfigurationTopiaPG configurationTopiaPG = model.toPGStorageConfig(""); + config.fromStorageConfig(configurationTopiaPG); } /** * @return le lastName par defaut du fichier de sauvegarde de la base locale * (expression calculée à partir de la date courante et du pattern - * {@link ObserveConfig#BACKUP_DB_PATTERN}). + * {@link ObserveSwingApplicationConfig#BACKUP_DB_PATTERN}). */ public String getDefaultBackupFilename() { - return String.format(ObserveConfig.BACKUP_DB_PATTERN, new Date()); + return String.format(ObserveSwingApplicationConfig.BACKUP_DB_PATTERN, new Date()); } /** * Effectue une sauvegarde de la base locale vers le fichier choisi. - * - * @param service le service locale qui encapsule la base locale + * @param dumpProducerService le service de dump * @param dst le fichier de sauvegarde */ - public void backupLocalDatabase(DataSource service, File dst) { + public void backupLocalDatabase(DataSourceDumpProducerService dumpProducerService, File dst) { if (dst == null) { throw new IllegalArgumentException( "file where to backup can not be null"); @@ -602,51 +577,18 @@ public class StorageUIHandler { if (log.isDebugEnabled()) { log.debug(dst); } - //FIXME -// if (service instanceof H2DataSource) { -// // le service offre le service -// try { -// service.storeDB(dst); -// } catch (DataSourceException ex) { -// ErrorDialogUI.showError(ex); -// } -// } else { -// // on doit dumper la base distante dans une base h2 et en faire -// // la sauvegarde -// ObserveConfig config = ObserveContext.get().getConfig(); -// -// DataSource tempStorage = null; -// try { -// tempStorage = ObserveServiceHelper.newEmptyTempStorage( -// config, -// t("observe.storage.label.backup"), -// "tmpBackup_" + dst.getName() -// ); -// -// tempStorage.doOpen(); -// replicationService.replicateReferentiel(service, tempStorage); -// replicationService.replicateAllData(service, tempStorage); -// -// tempStorage.storeDB(dst); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e); -// } -// } finally { -// if (tempStorage != null) { -// try { -// tempStorage.doClose(true); -// } catch (DataSourceException e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e); -// } -// } -// } -// } -// } + byte[] dataDump = dumpProducerService.getAllDataDump(); + + try (FileOutputStream outputStream = new FileOutputStream(dst)) { + + outputStream.write(dataDump); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e); + } + } } /** @@ -669,7 +611,8 @@ public class StorageUIHandler { if (log.isInfoEnabled()) { log.info("will export all datas."); } - backupLocalDatabase(service, dst); + // FIXME + //backupLocalDatabase(service, dst); return; } if (dst == null) { @@ -685,7 +628,7 @@ public class StorageUIHandler { // on doit dumper la base distante dans une base h2 et en faire // la sauvegarde - ObserveConfig config = ObserveContext.get().getConfig(); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); String[] mareeIds = new String[marees.size()]; @@ -782,7 +725,7 @@ public class StorageUIHandler { protected DecoratorService getDecoratorService() { DecoratorService decoratorService = - ObserveContext.get().getDecoratorService(); + ObserveSwingApplicationContext.get().getDecoratorService(); return decoratorService; } @@ -1134,7 +1077,7 @@ public class StorageUIHandler { addTag("h3", sb, t("observe.storage.report.action.migrate") + " :"); addOpenTag("ul", sb); if (model.isCanMigrate()) { - Version version = model.getDbVersion(); + Version version = model.getModleVersion(); addTag("li", sb, t("observe.storage.report.can.migrate", version)); if (model.isShowMigrationProgression()) { addTag("li", sb, t("observe.storage.showMigrationProgression")); @@ -1214,7 +1157,7 @@ public class StorageUIHandler { dataSource.doOpen(); Version importServiceDbVersion = dataSource.getDbVersion(); - Version currentDbVersion = model.getDbVersion(); + Version currentDbVersion = model.getModleVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); } 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 b8dd96f..1095c7f 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 @@ -21,9 +21,9 @@ */ package fr.ird.observe.ui.storage; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.UIHelper; import jaxx.runtime.JAXXContext; @@ -152,36 +152,22 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod model.setExcludeSteps( Arrays.asList(StorageStep.SELECT_DATA, - StorageStep.BACKUP, - StorageStep.CONFIG_REFERENTIEL, - StorageStep.CONFIG_DATA, - StorageStep.ROLES) + StorageStep.BACKUP, + StorageStep.CONFIG_REFERENTIEL, + StorageStep.CONFIG_DATA, + StorageStep.ROLES) ); - model.setCanCreateLocalService(false); - model.setCanUseLocalService(false); - model.setCanUseRemoteService(false); - - switch (mode) { - - case USE_LOCAL: - model.setCanUseLocalService(true); - break; - - case CREATE_LOCAL: - model.setCanCreateLocalService(true); - break; - - case USE_REMOTE: - model.setCanUseRemoteService(true); - break; - } + model.setCanCreateLocalService(DbMode.CREATE_LOCAL.equals(mode)); + model.setCanUseLocalService(DbMode.USE_LOCAL.equals(mode)); + model.setCanUseRemoteService(DbMode.USE_REMOTE.equals(mode)); + model.setCanUseServerService(DbMode.USE_SERVER.equals(mode)); model.updateUniverse(); model.setDbMode(mode); } else { - ObserveConfig config = - rootContext.getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = + rootContext.getContextValue(ObserveSwingApplicationConfig.class); Boolean localOpened = config.getMainStorageOpenedLocal(); if (model.isLocalStorageExist() && localOpened != null && localOpened) { if (log.isDebugEnabled()) { @@ -191,6 +177,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod } model.setCanCreateLocalService(true); model.setCanUseRemoteService(true); + model.setCanUseServerService(true); } model.updateUniverse(); } @@ -223,7 +210,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod final StorageUIModel model) { if (mainUI == null) { - mainUI = ObserveContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); } addStorageUIHandler(context); StorageUILauncher launcher = new StorageUILauncher( @@ -239,6 +226,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod model.setCanCreateLocalService(false); model.setCanUseLocalService(false); model.setCanUseRemoteService(true); + model.setCanUseServerService(true); model.setExcludeSteps(Arrays.asList( StorageStep.CHOOSE_DB_MODE, @@ -299,7 +287,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod final StorageUIModel model) { if (mainUI == null) { - mainUI = ObserveContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); } addStorageUIHandler(context); @@ -342,6 +330,10 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod nbModes++; mode = DbMode.USE_REMOTE; } + if (model.isCanUseServerService()) { + nbModes++; + mode = DbMode.USE_SERVER; + } if (nbModes == 1) { @@ -392,7 +384,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod final StorageUIModel model) { if (mainUI == null) { - mainUI = ObserveContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); } 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 bcfc154..dfbdd55 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 @@ -21,15 +21,27 @@ */ package fr.ird.observe.ui.storage; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import com.google.common.collect.Sets; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.business.db.constants.ConnexionStatus; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; import fr.ird.observe.business.util.SecurityModel; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.ConnexionStatus; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.service.DataSourceService; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import jaxx.runtime.JAXXContext; import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.wizard.WizardModel; @@ -79,6 +91,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { public static final String REMOTE_URL_ROPERTY_NAME = "remoteUrl"; + public static final String SERVER_DATABASE_PROPERTY_NAME = "serverDatabase"; + public static final String REMOTE_LOGIN_ROPERTY_NAME = "remoteLogin"; public static final String REMOTE_PASSWORD_PROPERTY_NAME = "remotePassword"; @@ -101,6 +115,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { private static final String CAN_USE_REMOTE_SERVICE_PROPERTY_NAME = "canUseRemoteService"; + private static final String CAN_USE_SERVER_SERVICE_PROPERTY_NAME = "canUseServerService"; + public static final String REFERENTIEL_IMPORT_MODE_PROPERTY_NAME = "referentielImportMode"; public static final String DATA_IMPORT_MODE_PROPERTY_NAME = "dataImportMode"; @@ -136,7 +152,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { protected boolean storeRemoteConfig; /** le storage precedemment utilise */ - protected DataSource previousService; + protected ObserveDataSourceConfiguration previousDataSourceConfiguration; + + protected ConnexionStatus connexionStatus; + protected String connexionStatusError; /** un drapeau pour definir si on peut utiliser la base locale */ protected boolean canUseLocalService = true; @@ -147,23 +166,39 @@ public class StorageUIModel extends WizardModel<StorageStep> { /** un drapeau pour savoir si on a le droit d'utiliser une connexion distante */ protected boolean canUseRemoteService = true; + /** un drapeau pour savoir si on a le droit d'utiliser un serveur distant */ + protected boolean canUseServerService = true; + /** le modèle de sélection de données (utilisé pour les exports) */ - //FIXME -// protected DataSelectionModel selectDataModel; + protected Set<ReferenceDto> selectDataModel; /** le modèle de sécurité (utilisé pour la mise à jour sécurité sur base distante) */ protected SecurityModel securityModel; /** la configuration d'une base locale */ - //FIXME -// protected H2DataSourceConfig h2Config; + protected ObserveDataSourceConfigurationTopiaH2 h2Config; /** la configuration d'une base distante */ - //FIXME -// protected PGDataSourceConfig pgConfig; + protected ObserveDataSourceConfigurationTopiaPG pgConfig; + + /** la configuration d'un serveur web */ + protected ObserveDataSourceConfigurationRest restConfig; + + /** Les information de connextion a la base**/ + protected ObserveDataSourceConnection connection; + + /** le fichier d'import des donné */ + protected File dumpFile; + + + /** le mode de creation d'une base */ + protected CreationMode creationMode; + + /** la configuration pour impoter les données */ + protected ObserveDataSourceConfiguration importDataConfig; /** la configuration de l'application */ - protected ObserveConfig config; + protected ObserveSwingApplicationConfig config; /** l'action d'administration de base obstuna */ protected ObstunaAdminAction adminAction; @@ -188,22 +223,47 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ protected CreationMode dataImportMode; - /** l'installateur de base obstuna */ - //FIXME -// protected PGInstall pgInstall; - public StorageUIModel() { super(StorageStep.class, - StorageStep.CHOOSE_DB_MODE, - StorageStep.BACKUP, - StorageStep.CONFIRM + StorageStep.CHOOSE_DB_MODE, + StorageStep.BACKUP, + StorageStep.CONFIRM ); - -//FIXME -// pgConfig = new PGDataSourceConfig(I18n.n("observe.storage.label.remote")); -// h2Config = new H2DataSourceConfig(I18n.n("observe.storage.label.local")); -// h2Config.setImportConfig(pgConfig); + selectDataModel = Sets.newHashSet(); securityModel = new SecurityModel(); + + connexionStatus = ConnexionStatus.UNTESTED; + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + + h2Config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( + n("observe.storage.label.remote"), + null, + ObserveSwingApplicationConfig.DB_NAME, + "", + EMPTY_PASSWORD, + false, + false + ); + + pgConfig = configurationMainFactory.createObserveDataSourceConfigurationTopiaPG( + n("observe.storage.label.local"), + "", + "", + EMPTY_PASSWORD, + false, + false, + false + ); + + restConfig = configurationMainFactory.createObserveDataSourceConfigurationRest( + n("observe.storage.label.rest"), + null, + "", + EMPTY_PASSWORD, + null + ); } /** @@ -213,9 +273,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { * @param context le context applicatif * @param source le service existant */ - public void init(JAXXContext context, DataSource source) { + public void init(JAXXContext context, ObserveDataSourceConfiguration source) { - config = context.getContextValue(ObserveConfig.class); + config = context.getContextValue(ObserveSwingApplicationConfig.class); JAXXContextEntryDef<StorageUIModel> entryDef = WizardUILancher.newModelEntry(StorageUIModel.class); @@ -237,10 +297,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { StorageUIHandler storageUIHandler = context.getContextValue(StorageUIHandler.class); - //FIXME -// DataSelectionModel dataModel = -// context.getContextValue(DataSelectionModel.class); - // ajout paramétrage depuis la configuration boolean isLocalStorageExist = config.isLocalStorageExist(); @@ -256,6 +312,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("can use local storage ? " + isCanUseLocalService()); log.debug("can create local storage ? " + isCanCreateLocalService()); log.debug("can use remote storage ? " + isCanUseRemoteService()); + log.debug("can use server storage ? " + isCanUseServerService()); log.debug("previous service ? " + source); } @@ -266,7 +323,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { setShowMigrationProgression(config.isShowMigrationProgression()); setShowMigrationSql(config.isShowMigrationSql()); setDoBackup(false); - setPreviousService(source); + setPreviousDataSourceConfiguration(source); if (log.isDebugEnabled()) { log.debug("canMigrate ? " + isCanMigrate()); @@ -274,6 +331,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { CreationMode mode = config.getDefaultCreationMode(); + // on initialise les configuration avec les valeurs par defaul + h2Config = config.getDataSourceConfigurationH2(n("observe.storage.label.remote")); + pgConfig = config.getDataSourceConfigurationPG(n("observe.storage.label.local")); + restConfig = config.getDataSourceConfigurationRest(n("observe.storage.label.rest")); + if (source != null) { // on initialise le modèle à partir d'un service existant @@ -282,40 +344,29 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("from a previous service " + source); } - // on sélectionne ce service - DataSourceConfig previousConfig = source.getConfig(); + if (source instanceof ObserveDataSourceConfigurationTopiaH2) { - //FIXME -// if (previousConfig instanceof H2DataSourceConfig) { -// -// // on copie la configuration distante de la configuration -// fromStorageConfig(config.toPostgresStorageConfig(pgConfig.getLabel())); -// -// // on est actuellement connecte sur une base locale -// fromStorageConfig((H2DataSourceConfig) previousConfig); -// -// } else { -// -// // on copie la configuration locale de la configuration -// fromStorageConfig( -// config.toH2StorageConfig(pgConfig.getLabel())); -// -// if (!isLocalStorageExist) { -// // aucune base locale, on positionne le mode de création -// // de base locale par défaut. -// -// setCreationMode(mode); -// } -// -// // on est sur une base distante -// //FIXME -// fromStorageConfig((PGDataSourceConfig) previousConfig); -// } + // on est actuellement connecte sur une base locale + fromStorageConfig((ObserveDataSourceConfigurationTopiaH2) source); + + } else if (source instanceof ObserveDataSourceConfigurationTopiaPG){ + + if (!isLocalStorageExist) { + // aucune base locale, on positionne le mode de création + // de base locale par défaut. + + setCreationMode(mode); + } + + // on est sur une base distante + fromStorageConfig((ObserveDataSourceConfigurationTopiaPG) source); + + } else if (source instanceof ObserveDataSourceConfigurationRest){ + + // on est sur une base distante + fromStorageConfig((ObserveDataSourceConfigurationRest) source); + } - //FIXME -// if (dataModel != null) { -// setSelectDataModel(dataModel); -// } return; } @@ -323,14 +374,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("no service found, using default configuration"); } - // aucun service de persistance ouvert, - // on utilise la configuration par defaut - // ce cas ne devrait arriver uniquement tant qu'aucune - // base locale est crée -//FIXME -// fromStorageConfig(config.toH2StorageConfig(pgConfig.getLabel())); - -// fromStorageConfig(config.toPostgresStorageConfig(pgConfig.getLabel())); DbMode newDbMode = config.getDefaultDbMode(); if (getAdminAction() != null) { @@ -343,6 +386,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { mode = CreationMode.IMPORT_EXTERNAL_DUMP; } else if (isCanUseRemoteService()) { mode = CreationMode.IMPORT_REMOTE_STORAGE; + } else if (isCanUseServerService()) { + mode = CreationMode.IMPORT_SERVER_STORAGE; } } if (log.isDebugEnabled()) { @@ -369,7 +414,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { "previousConfig parameter can not be null in method initFromPreviousConfig"); } - config = context.getContextValue(ObserveConfig.class); + config = context.getContextValue(ObserveSwingApplicationConfig.class); StorageUIHandler storageUIHandler = context.getContextValue(StorageUIHandler.class); @@ -384,6 +429,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("can use local storage ? " + isCanUseLocalService()); log.debug("can create local storage ? " + isCanCreateLocalService()); log.debug("can use remote storage ? " + isCanUseRemoteService()); + log.debug("can use server storage ? " + isCanUseServerService()); log.debug("previous service ? " + previousConfig); } @@ -399,31 +445,27 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("canMigrate ? " + isCanMigrate()); } - // on initialise le modèle à partir de la configuration existante -//FIXME -// if (previousConfig instanceof H2DataSourceConfig) { -// -// // on copie la configuration distante de la configuration -// fromStorageConfig(config.toPostgresStorageConfig(pgConfig.getLabel())); -// -// // on est actuellement connecte sur une base locale -// fromStorageConfig((H2DataSourceConfig) previousConfig); -// -// } else { -// -// // on copie la configuration locale de la configuration -// fromStorageConfig( -// config.toH2StorageConfig(pgConfig.getLabel())); -// -// if (!isLocalStorageExist) { -// -// // aucune base locale, on ne peut pas utiliser la base locale -// setCanUseLocalService(false); -// } -// -// // on est sur une base distante -// fromStorageConfig((PGDataSourceConfig) previousConfig); -// } + if (previousConfig instanceof ObserveDataSourceConfigurationTopiaH2) { + + // on est actuellement connecte sur une base locale + fromStorageConfig((ObserveDataSourceConfigurationTopiaH2) previousConfig); + + } else if (previousConfig instanceof ObserveDataSourceConfigurationTopiaPG){ + + if (!isLocalStorageExist) { + + // aucune base locale, on ne peut pas utiliser la base locale + setCanUseLocalService(false); + } + + // on est sur une base distante + fromStorageConfig((ObserveDataSourceConfigurationTopiaPG) previousConfig); + + } else if (previousConfig instanceof ObserveDataSourceConfigurationRest){ + + // on est sur une base distante + fromStorageConfig((ObserveDataSourceConfigurationRest) previousConfig); + } } /** @@ -432,9 +474,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ public void initFromModel() { - JAXXContext context = ObserveContext.get(); + JAXXContext context = ObserveSwingApplicationContext.get(); - config = context.getContextValue(ObserveConfig.class); + config = context.getContextValue(ObserveSwingApplicationConfig.class); // ajout paramétrage depuis la configuration @@ -451,6 +493,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("can use local storage ? " + isCanUseLocalService()); log.debug("can create local storage ? " + isCanCreateLocalService()); log.debug("can use remote storage ? " + isCanUseRemoteService()); + log.debug("can use server storage ? " + isCanUseServerService()); } setStoreRemoteConfig(config.isStoreRemoteStorage()); @@ -458,7 +501,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { setShowMigrationProgression(config.isShowMigrationProgression()); setShowMigrationSql(config.isShowMigrationSql()); setDoBackup(false); - setPreviousService(null); + setPreviousDataSourceConfiguration(null); if (log.isDebugEnabled()) { log.debug("canMigrate ? " + isCanMigrate()); @@ -474,10 +517,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { // on utilise la configuration par defaut // ce cas ne devrait arriver uniquement tant qu'aucune // base locale est crée -//FIXME -// fromStorageConfig(config.toH2StorageConfig(pgConfig.getLabel())); -// -// fromStorageConfig(config.toPostgresStorageConfig(pgConfig.getLabel())); + h2Config = config.getDataSourceConfigurationH2(n("observe.storage.label.remote")); + pgConfig = config.getDataSourceConfigurationPG(n("observe.storage.label.local")); + restConfig = config.getDataSourceConfigurationRest(n("observe.storage.label.rest")); + DbMode newDbMode = config.getDefaultDbMode(); if (getAdminAction() != null) { @@ -490,6 +533,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { mode = CreationMode.IMPORT_EXTERNAL_DUMP; } else if (isCanUseRemoteService()) { mode = CreationMode.IMPORT_REMOTE_STORAGE; + } else if (isCanUseServerService()) { + mode = CreationMode.IMPORT_SERVER_STORAGE; } } if (log.isDebugEnabled()) { @@ -512,6 +557,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { centralSourceModel.setCanCreateLocalService(false); centralSourceModel.setCanUseLocalService(false); centralSourceModel.setCanUseRemoteService(true); + centralSourceModel.setCanUseServerService(true); centralSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { @@ -548,6 +594,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { dataSourceModel.setCanCreateLocalService(false); dataSourceModel.setCanUseLocalService(false); dataSourceModel.setCanUseRemoteService(true); + dataSourceModel.setCanUseServerService(true); dataSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { @@ -594,16 +641,15 @@ public class StorageUIModel extends WizardModel<StorageStep> { start(); firePropertyChange(DB_MODE_PROPERTY_NAME, getDbMode()); firePropertyChange(CREATION_MODE_PROPERTY_NAME, getCreationMode()); - //FIXME -// firePropertyChange(DUMP_FILE_PROPERTY_NAME, h2Config.getDbDump()); + firePropertyChange(DUMP_FILE_PROPERTY_NAME, getDumpFile()); firePropertyChange(BACKUP_FILE_PROPERTY_NAME, getBackupFile()); firePropertyChange(DO_BACKUP_PROPERTY_NAME, isDoBackup()); firePropertyChange(CAN_USE_LOCALE_SERVICE_PROPERTY_NAME, isCanUseLocalService()); firePropertyChange(CAN_CREATE_LOCALE_SERVICE_PROPERTY_NAME, isCanCreateLocalService()); firePropertyChange(CAN_USE_REMOTE_SERVICE_PROPERTY_NAME, isCanUseRemoteService()); - //FIXME -// firePropertyChange(CONNEXION_STATUS_PROPERTY_NAME, pgConfig.getConnexionStatus()); - firePropertyChange(PREVIOUS_SERVICE_PROPERTY_NAME, getPreviousService()); + firePropertyChange(CAN_USE_SERVER_SERVICE_PROPERTY_NAME, isCanUseServerService()); + firePropertyChange(CONNEXION_STATUS_PROPERTY_NAME, getConnexionStatus()); + firePropertyChange(PREVIOUS_SERVICE_PROPERTY_NAME, getPreviousDataSourceConfiguration()); firePropertyChange(LOCAL_STORAGE_EXIST_PROPERTY_NAME, isLocalStorageExist()); firePropertyChange(STORE_REMOTE_CONFIG_PROPERTY_NAME, isStoreRemoteConfig()); firePropertyChange(REMOTE_URL_ROPERTY_NAME, getRemoteUrl()); @@ -627,6 +673,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { return canUseRemoteService; } + public boolean isCanUseServerService() { + return canUseServerService; + } + public SecurityModel getSecurityModel() { return securityModel; } @@ -634,10 +684,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { public ObstunaAdminAction getAdminAction() { return adminAction; } -//FIXME -// public PGInstall getPgInstall() { -// return pgInstall; -// } + + public Set<ReferenceDto> getSelectDataModel() { + return selectDataModel; + } public CreationMode getReferentielImportMode() { return referentielImportMode; @@ -665,9 +715,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { String params; txt = n("observe.storage.label.import.referentiel"); if (getDbMode() == DbMode.CREATE_LOCAL) { - //FIXME -// params = getH2Config().getDataDirectory().getAbsolutePath(); - params= null; + params = getH2Config().getDirectory().getAbsolutePath(); } else { params = getRemoteUrl(); } @@ -697,9 +745,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { String params; txt = n("observe.storage.label.import.data"); if (getDbMode() == DbMode.CREATE_LOCAL) { - //FIXME -// params = getH2Config().getDataDirectory().getAbsolutePath(); - params = null; + params = getH2Config().getDirectory().getAbsolutePath(); } else { params = getRemoteUrl(); } @@ -740,8 +786,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { // when doing an admin mode we do not choose db mode, we always work on remote universe.add(StorageStep.CHOOSE_DB_MODE); } -//FIXME -// h2Config.setImportConfig(null); boolean canBackup = localStorageExist; switch (dbMode) { @@ -755,20 +799,25 @@ public class StorageUIModel extends WizardModel<StorageStep> { break; //case IMPORT_LOCAL_STORAGE: case IMPORT_REMOTE_STORAGE: - //FIXME -// h2Config.setImportConfig(pgConfig); + importDataConfig = pgConfig; + universe.add(StorageStep.CONFIG); + case IMPORT_SERVER_STORAGE: + importDataConfig = restConfig; universe.add(StorageStep.CONFIG); } } break; + case USE_LOCAL: + // pas de backup si on veut utiliser la base locale + canBackup = false; + break; case USE_REMOTE: canBackup = false; universe.add(StorageStep.CONFIG); break; - case USE_LOCAL: - - // pas de backup si on veut utiliser la base locale + case USE_SERVER: canBackup = false; + universe.add(StorageStep.CONFIG); break; } if (canBackup) { @@ -819,18 +868,18 @@ public class StorageUIModel extends WizardModel<StorageStep> { validate = false; } else if (!isCanCreateLocalService() && dbMode.equals(DbMode.CREATE_LOCAL)) { validate = false; + } else if (!isCanUseServerService() && dbMode.equals(DbMode.USE_SERVER)) { + validate = false; } } if (validate && isLocal()) { if (dbMode == DbMode.CREATE_LOCAL) { - //FIXME -// validate = h2Config.getCreationMode() != null; + validate = getCreationMode() != null; } } break; case CONFIG: if (dbMode == DbMode.USE_REMOTE) { - //FIXME // validate = pgConfig.isValid(); //FIXME Il faut savoir si l'utilisateur est le //FIXME propriétaire de la base @@ -995,40 +1044,44 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public boolean isLocal() { - return dbMode != null && dbMode != DbMode.USE_REMOTE; + return dbMode != null && (dbMode == DbMode.CREATE_LOCAL || dbMode == DbMode.USE_LOCAL); } public boolean isRemote() { return dbMode != null && dbMode == DbMode.USE_REMOTE; } + public boolean isServer() { + return dbMode != null && dbMode == DbMode.USE_SERVER; + } + public boolean isCanMigrate() { boolean result = false; if (dbMode != null) { switch (dbMode) { case USE_LOCAL: case CREATE_LOCAL: - //FIXME -// result = h2Config.isCanMigrate(); + result = h2Config.isCanMigrate(); break; case USE_REMOTE: - //FIXME -// result = pgConfig.isCanMigrate(); + result = pgConfig.isCanMigrate(); + break; + case USE_SERVER: + result = false; + break; } } return result; } public String getLabel() { - //FIXME -// String txt; -// if (dbMode == DbMode.CREATE_LOCAL) { -// txt = h2Config.getLabel(); -// } else { -// txt = pgConfig.getLabel(); -// } -// return txt; - return null; + String txt; + if (dbMode == DbMode.CREATE_LOCAL) { + txt = h2Config.getLabel(); + } else { + txt = pgConfig.getLabel(); + } + return txt; } public boolean isLocalStorageExist() { @@ -1047,19 +1100,19 @@ public class StorageUIModel extends WizardModel<StorageStep> { return doBackup; } - public Version getDbVersion() { - return config == null ? Version.VZERO : config.getDbVersion(); + public Version getModleVersion() { + return config == null ? Version.VZERO : config.getModelVersion(); } public DbMode getDbMode() { return dbMode; } - public DataSource getPreviousService() { - return previousService; + public ObserveDataSourceConfiguration getPreviousDataSourceConfiguration() { + return previousDataSourceConfiguration; } - public ObserveConfig getConfig() { + public ObserveSwingApplicationConfig getConfig() { return config; } @@ -1130,8 +1183,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (oldValue != dataImportMode) { // reset selected data to import - //FIXME -// setSelectDataModel(null); + selectDataModel.clear(); updateUniverse(); } @@ -1147,19 +1199,17 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public void setShowMigrationSql(boolean showMigrationSql) { - //FIXME -// boolean oldValue = pgConfig.isShowMigrationSql(); -// pgConfig.setShowMigrationSql(showMigrationSql); -// h2Config.setShowMigrationSql(showMigrationSql); -// firePropertyChange(SHOW_MIGRATION_SQL_PROPERTY_NAME, oldValue, showMigrationSql); + boolean oldValue = pgConfig.isShowMigrationSql(); + pgConfig.setShowMigrationSql(showMigrationSql); + h2Config.setShowMigrationSql(showMigrationSql); + firePropertyChange(SHOW_MIGRATION_SQL_PROPERTY_NAME, oldValue, showMigrationSql); } public void setShowMigrationProgression(boolean showMigrationProgression) { - //FIXME -// boolean oldValue = pgConfig.isShowMigrationProgression(); -// pgConfig.setShowMigrationProgression(showMigrationProgression); -// h2Config.setShowMigrationProgression(showMigrationProgression); -// firePropertyChange(SHOW_MIGRATION_PROGRESSION_PROPERTY_NAME, oldValue, showMigrationProgression); + boolean oldValue = pgConfig.isShowMigrationProgression(); + pgConfig.setShowMigrationProgression(showMigrationProgression); + h2Config.setShowMigrationProgression(showMigrationProgression); + firePropertyChange(SHOW_MIGRATION_PROGRESSION_PROPERTY_NAME, oldValue, showMigrationProgression); } // ---------------------------------------------------------- @@ -1167,48 +1217,16 @@ public class StorageUIModel extends WizardModel<StorageStep> { // ---------------------------------------------------------- public CreationMode getCreationMode() { - CreationMode result = null; - if (dbMode != null) { - switch (dbMode) { - case USE_LOCAL: - case CREATE_LOCAL: - //FIXME -// result = h2Config.getCreationMode(); - break; - case USE_REMOTE: - //FIXME -// result = pgConfig.getCreationMode(); - } - } - return result; + return creationMode; } public File getDumpFile() { - //FIXME -// URL dbDump = h2Config.getDbDump(); -// if (dbDump == null) { -// return new File(""); -// } -// // on remplace les %20 par des speciess car dans l'uri les caracteres -// // sont encodes -// File file = new File(dbDump.getFile().replaceAll("%20", " ")); -// file = new File(file.getAbsolutePath()); -// return file; - return null; + return dumpFile; } public void setCreationMode(CreationMode creationMode) { CreationMode oldValue = getCreationMode(); - if (dbMode != null) { - switch (dbMode) { - case CREATE_LOCAL: - - // seul cas ou on peut propager le mode de creation - //FIXME -// h2Config.setCreationMode(creationMode); - break; - } - } + this.creationMode = creationMode; firePropertyChange(CREATION_MODE_PROPERTY_NAME, oldValue, creationMode); if (oldValue != creationMode) { updateUniverse(); @@ -1226,32 +1244,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public void setDumpFile(File dumpFile) { - try { - File oldValue = getDumpFile(); - URL url = null; - if (dumpFile != null) { - url = dumpFile.toURI().toURL(); - if (log.isDebugEnabled()) { - log.debug("dumpFile : " + dumpFile + " (exist ? : " + - dumpFile.exists() + ')'); - log.debug("dumpFile url : " + url); - } - String filePath = url.getFile().replaceAll("%20", " "); - if (log.isDebugEnabled()) { - log.debug("dumpFile file from url : " + filePath + - " (exist ? : " + new File(filePath).exists() + ')'); - } - } - //FIXME -// h2Config.setDbDump(dumpFile == null ? null : url); - firePropertyChange(DUMP_FILE_PROPERTY_NAME, oldValue, dumpFile); - validate(); - } catch (MalformedURLException ex) { - // shoudl never happens - if (log.isWarnEnabled()) { - log.warn(ex); - } - } + File oldValue = this.dumpFile; + this.dumpFile = dumpFile; + firePropertyChange(DUMP_FILE_PROPERTY_NAME, oldValue, dumpFile); + validate(); } // ---------------------------------------------------------- @@ -1259,60 +1255,88 @@ public class StorageUIModel extends WizardModel<StorageStep> { // ---------------------------------------------------------- public String getRemoteLogin() { - //FIXME -// return pgConfig.getLogin(); - return null; + String login = ""; + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + login = pgConfig.getUsername(); + break; + case USE_SERVER: + login = restConfig.getLogin(); + break; + } + } + return login; } public char[] getRemotePassword() { - //FIXME -// return pgConfig.getPassword(); - return null; + char[] password = EMPTY_PASSWORD; + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + password = pgConfig.getPassword(); + break; + case USE_SERVER: + password = restConfig.getPassword(); + break; + } + } + return password; } public String getRemoteUrl() { - //FIXME -// return pgConfig.getUrl(); - return null; + String url = ""; + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + url = pgConfig.getJdbcUrl(); + break; + case USE_SERVER: + url = restConfig.getServerUrl().toString(); + break; + } + } + return url; } public boolean isUseSsl() { - //FIXME -// return pgConfig.isUseSsl(); - return false; + return pgConfig.isUseSsl(); + } + + public String getServerDatabase() { + return restConfig.getOptionalDatabaseName().orNull(); } public ConnexionStatus getConnexionStatus() { - //FIXME -// return pgConfig.getConnexionStatus(); - return null; + return connexionStatus; } - public void setPreviousService(DataSource previousService) { - this.previousService = previousService; + public void setPreviousDataSourceConfiguration(ObserveDataSourceConfiguration previousDataSourceConfiguration) { + this.previousDataSourceConfiguration = previousDataSourceConfiguration; } - //FIXME -// public H2DataSourceConfig getH2Config() { -// return h2Config; -// } -// - //FIXME -// public PGDataSourceConfig getPgConfig() { -// return pgConfig; -// } + public ObserveDataSourceConfigurationTopiaH2 getH2Config() { + return h2Config; + } + + public ObserveDataSourceConfigurationTopiaPG getPgConfig() { + return pgConfig; + } + + public ObserveDataSourceConfigurationRest getRestConfig() { + return restConfig; + } public void setRemoteLogin(String remoteLogin) { String oldValue = getRemoteLogin(); - //FIXME -// pgConfig.setLogin(remoteLogin); + + pgConfig.setUsername(remoteLogin); firePgConfigChanged(REMOTE_LOGIN_ROPERTY_NAME, oldValue, remoteLogin); } public void setRemotePassword(char[] remotePassword) { char[] oldValue = getRemotePassword(); - //FIXME -// pgConfig.setPassword(remotePassword); + pgConfig.setPassword(remotePassword); firePgConfigChanged(REMOTE_PASSWORD_PROPERTY_NAME, oldValue, remotePassword); } @@ -1326,7 +1350,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void setCanCreateLocalService(boolean canCreateLocalService) { this.canCreateLocalService = canCreateLocalService; firePgConfigChanged(CAN_CREATE_LOCALE_SERVICE_PROPERTY_NAME, null, - canCreateLocalService); + canCreateLocalService); } public void setCanUseRemoteService(boolean canUseRemoteService) { @@ -1334,58 +1358,85 @@ public class StorageUIModel extends WizardModel<StorageStep> { firePropertyChange(CAN_USE_REMOTE_SERVICE_PROPERTY_NAME, null, canUseRemoteService); } + public void setCanUseServerService(boolean canUseServerService) { + this.canUseServerService = canUseServerService; + firePropertyChange(CAN_USE_SERVER_SERVICE_PROPERTY_NAME, null, canUseServerService); + } + public void setRemoteUrl(String remoteUrl) { String oldValue = getRemoteUrl(); - //FIXME -// pgConfig.setUrl(remoteUrl); + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + pgConfig.setJdbcUrl(remoteUrl); + break; + case USE_SERVER: + URL url = null; + try { + url = new URL(remoteUrl); + } catch (MalformedURLException e) { + } + restConfig.setServerUrl(url); + break; + } + } firePgConfigChanged(REMOTE_URL_ROPERTY_NAME, oldValue, remoteUrl); } public void setUseSsl(boolean useSsl) { - //FIXME -// boolean oldValue = pgConfig.isUseSsl(); -// pgConfig.setUseSsl(useSsl); -// firePgConfigChanged(USE_SSL_PROPERTY_NAME, oldValue, useSsl); + boolean oldValue = pgConfig.isUseSsl(); + pgConfig.setUseSsl(useSsl); + firePgConfigChanged(USE_SSL_PROPERTY_NAME, oldValue, useSsl); + } + + public void setServerDatabase(String database) { + String oldValue = getServerDatabase(); + restConfig.setOptionalDatabaseName(database); + firePgConfigChanged(SERVER_DATABASE_PROPERTY_NAME, oldValue, database); } // ---------------------------------------------------------- // -- StorageConfigSupport implementation methods // ---------------------------------------------------------- - //FIXME -// public void fromStorageConfig(H2DataSourceConfig config) { -// setDbMode(config.isStorageExists() ? DbMode.USE_LOCAL : DbMode.CREATE_LOCAL); -// config.copyTo(h2Config); -// } -// - //FIXME -// public void fromStorageConfig(PGDataSourceConfig config) { -// setDbMode(DbMode.USE_REMOTE); -// config.copyTo(pgConfig); -// } + public void fromStorageConfig(ObserveDataSourceConfigurationTopiaH2 sourceConfig) { -// public H2DataSourceConfig toH2StorageConfig(String label) { -// -// H2DataSourceConfig result = h2Config.clone(); -// result.setShortLabel(label); -// + setDbMode(sourceConfig.getDatabaseFile().exists() ? DbMode.USE_LOCAL : DbMode.CREATE_LOCAL); + h2Config = sourceConfig; + } + + public void fromStorageConfig(ObserveDataSourceConfigurationTopiaPG sourceConfig) { + setDbMode(DbMode.USE_REMOTE); + pgConfig = sourceConfig; + } + + public void fromStorageConfig(ObserveDataSourceConfigurationRest sourceConfig) { + setDbMode(DbMode.USE_SERVER); + restConfig = sourceConfig; + } + + public DataSourceCreateConfigurationDto getCreationConfigurationDto() { + + DataSourceCreateConfigurationDto createConfigurationDto = null; + // FIXME // if (getDbMode() == DbMode.CREATE_LOCAL) { -// -// CreationMode m = result.getCreationMode(); -// -// switch (m) { +// switch (getCreationMode()) { // case EMPTY: // case IMPORT_EXTERNAL_DUMP: // // rien a faire // break; // case IMPORT_INTERNAL_DUMP: +// +// createConfigurationDto = new DataSourceCreateConfigurationDto(); +// +// // try { // result.setDbDump( // config.getInitialDbDump().toURI().toURL()); // } catch (MalformedURLException ex) { // throw new IllegalArgumentException( // "can not build url for initialDbDump for " + -// "reason " + ex.getMessage(), ex); +// "reason " + ex.getMessage(), ex); // } // break; // case IMPORT_LOCAL_STORAGE: @@ -1397,31 +1448,57 @@ public class StorageUIModel extends WizardModel<StorageStep> { // n("observe.storage.label.import.remote")); // break; // } -// } -// return result; -// } // - //FIXME -// public PGDataSourceConfig toPostgresStorageConfig(String label) { -// if (log.isDebugEnabled()) { -// log.debug("before clone pg : policy = " + pgConfig.getPolicy()); -// } -// PGDataSourceConfig result = pgConfig.clone(); -// if (log.isDebugEnabled()) { -// log.debug("after clone pg : policy = " + result.getPolicy()); +// // } -// result.setShortLabel(label); -// return result; -// } + return createConfigurationDto; + } -// public DataSelectionModel getSelectDataModel() { -// return selectDataModel; -// } + public ObserveDataSourceConfigurationTopiaH2 toH2StorageConfig(String label) { - // FIXME -// public void setSelectDataModel(DataSelectionModel selectDataModel) { -// this.selectDataModel = selectDataModel; -// } + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationFactory = context.getObserveDataSourceConfigurationMainFactory(); + ObserveDataSourceConfigurationTopiaH2 result = configurationFactory.createObserveDataSourceConfigurationTopiaH2( + label, + h2Config.getDirectory(), + h2Config.getDbName(), + h2Config.getUsername(), + h2Config.getPassword(), + h2Config.isShowMigrationProgression(), + h2Config.isShowMigrationSql() + ); + return result; + } + + public ObserveDataSourceConfigurationTopiaPG toPGStorageConfig(String label) { + + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationFactory = context.getObserveDataSourceConfigurationMainFactory(); + ObserveDataSourceConfigurationTopiaPG result = configurationFactory.createObserveDataSourceConfigurationTopiaPG( + label, + pgConfig.getJdbcUrl(), + pgConfig.getUsername(), + pgConfig.getPassword(), + pgConfig.isUseSsl(), + pgConfig.isShowMigrationProgression(), + pgConfig.isShowMigrationSql() + ); + return result; + } + + public ObserveDataSourceConfigurationRest toRestStorageConfig(String label) { + + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationFactory = context.getObserveDataSourceConfigurationMainFactory(); + ObserveDataSourceConfigurationRest result = configurationFactory.createObserveDataSourceConfigurationRest( + label, + restConfig.getServerUrl(), + restConfig.getLabel(), + restConfig.getPassword(), + restConfig.getOptionalDatabaseName().orNull() + ); + return result; + } protected void copyTo(StorageUIModel dst) { dst.setLocalStorageExist(isLocalStorageExist()); @@ -1429,11 +1506,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { dst.setBackupFile(getBackupFile()); dst.setDoBackup(isDoBackup()); dst.setStoreRemoteConfig(isStoreRemoteConfig()); - //FIXME -// dst.setPreviousService(getPreviousService()); + dst.setPreviousDataSourceConfiguration(getPreviousDataSourceConfiguration()); dst.setCanCreateLocalService(isCanCreateLocalService()); dst.setCanUseLocalService(isCanUseLocalService()); dst.setCanUseRemoteService(isCanUseRemoteService()); + dst.setCanUseServerService(isCanUseServerService()); //FIXME // pgConfig.copyTo(dst.pgConfig); //FIXME @@ -1449,12 +1526,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void firePgConfigChanged(String propertyName, Object oldValue, Object newValue) { - if (!CONNEXION_STATUS_PROPERTY_NAME.equals(propertyName)) { - firePropertyChange(propertyName, oldValue, newValue); - } - // always invalidate test when modification, so notify listeners -// firePropertyChange(CONNEXION_STATUS_PROPERTY_NAME, -// pgConfig.getConnexionStatus()); + firePropertyChange(propertyName, oldValue, newValue); validate(); } @@ -1465,34 +1537,55 @@ public class StorageUIModel extends WizardModel<StorageStep> { * {@code false} sinon. */ public boolean testRemote() { - //FIXME tchemit 2010-08-18 : should do this in a thread to be able to stop test if too long - //FIXME -// boolean result = getPgConfig().canConnect(); -// if (log.isDebugEnabled()) { -// log.debug("result : " + result); -// } -// firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, null, pgConfig.getConnexionStatus()); -// -// if (result && !getPgConfig().isCanMigrate()) { -// -// // must check version (can't migrate remote db) -// result = getPgConfig().checkVersion(getDbVersion()); -// -// if (!result) { -// -// // can't use this remote db -// pgConfig.setConnexionStatus(ConnexionStatus.FAILED); -// -// firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, null, pgConfig.getConnexionStatus()); -// } -// } -// return result; - return false; + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + DataSourceService dataSourceService = applicationContext.newService(pgConfig, DataSourceService.class); + + boolean result = false; + connexionStatusError = ""; + + try { + dataSourceService.checkCanConnect(pgConfig); + + ObserveDataSourceConnection dataSourceConnection = dataSourceService.open(pgConfig); + + if (dataSourceConnection.getVersion().equals(getModleVersion())) { + + setConnexionStatus(ConnexionStatus.SUCCESS); + + result = true; + + } else { + + connexionStatusError = t("observe.storage.error.dbVersionMismatch", dataSourceConnection.getVersion(), getModleVersion()); + + setConnexionStatus(ConnexionStatus.FAILED); + + } + + } catch (DatabaseNotFoundException e) { + + connexionStatusError = e.getMessage(); + + setConnexionStatus(ConnexionStatus.FAILED); + + } catch (DatabaseConnexionNotAuthorizedException e) { + + connexionStatusError = e.getMessage(); + + setConnexionStatus(ConnexionStatus.FAILED); + } + + return result; + } + + public String getConnexionStatusError() { + return connexionStatusError; } public boolean isPgConfigVersionMatch() { //FIXME -// return getDbVersion().equals(pgConfig.getVersion()); +// return getModleVersion().equals(pgConfig.getVersion()); return false; } @@ -1520,15 +1613,15 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public void setConnexionStatus(ConnexionStatus connexionStatus) { - //FIXME -// pgConfig.setConnexionStatus(connexionStatus); - firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, null, connexionStatus); + ConnexionStatus oldValue = this.connexionStatus; + this.connexionStatus = connexionStatus; + firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, oldValue, connexionStatus); } public void checkImportDbVersion(DataSource importDatasource) throws DataSourceException { Version importServiceDbVersion = importDatasource.getDbVersion(); - Version currentDbVersion = getDbVersion(); + Version currentDbVersion = getModleVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.css index bade66a..2d4ff4d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.css @@ -53,6 +53,13 @@ selected:{model.getDbMode() == DbMode.USE_REMOTE}; } +#useServerMode { + value:{DbMode.USE_SERVER}; + text:{DbMode.USE_SERVER.getLabel()}; + enabled:{model.isCanUseServerService()}; + selected:{model.getDbMode() == DbMode.USE_SERVER}; +} + #dbModeContent { layout:{new GridLayout(0,1)}; border:{new TitledBorder(t("observe.storage.step.dbMode.detail"))}; @@ -103,6 +110,12 @@ selected:{model.getCreationMode() == CreationMode.IMPORT_REMOTE_STORAGE}; } +#importServerStorageMode { + value:{CreationMode.IMPORT_SERVER_STORAGE}; + text:{CreationMode.IMPORT_SERVER_STORAGE.getLabel()}; + selected:{model.getCreationMode() == CreationMode.IMPORT_SERVER_STORAGE}; +} + #migrationContent { layout:{new GridLayout(0,1)}; border:{new TitledBorder(t("observe.storage.report.action.migrate"))}; 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 9dbfa89..7b93e02 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,19 +26,19 @@ <StorageTabUI> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.UIHelper fr.ird.observe.ui.storage.StorageStep - fr.ird.observe.business.db.constants.DbMode - fr.ird.observe.business.db.constants.CreationMode + fr.ird.observe.db.constantes.DbMode + fr.ird.observe.db.constantes.CreationMode </import> <StorageStep id='step' initializer='StorageStep.CHOOSE_DB_MODE'/> <fr.ird.observe.ui.storage.StorageUIModel id='model'/> - <ObserveConfig id='config' - initializer="getContextValue(ObserveConfig.class)"/> + <ObserveSwingApplicationConfig id='config' + initializer="getContextValue(ObserveSwingApplicationConfig.class)"/> <ButtonGroup id='dbMode' onStateChanged='getModel().setDbMode((DbMode) dbMode.getSelectedValue())'/> @@ -57,7 +57,7 @@ public void init() { protected String updateMigrationPolicy(boolean canMigrate) { if (canMigrate) { - return t("observe.storage.report.can.migrate", config.getDbVersion()); + return t("observe.storage.report.can.migrate", config.getModelVersion()); } else { return t("observe.storage.report.can.not.migrate"); } @@ -75,6 +75,7 @@ protected String updateCreationModeContent(DbMode mode) { <JPanel id='dbModeContent' constraints='BorderLayout.NORTH'> <JRadioButton id="useLocalMode" styleClass='dbMode'/> <JRadioButton id="useRemoteMode" styleClass='dbMode'/> + <JRadioButton id="useServerMode" styleClass='dbMode'/> <JRadioButton id="createLocalMode" styleClass='dbMode'/> </JPanel> @@ -85,6 +86,7 @@ protected String updateCreationModeContent(DbMode mode) { <JRadioButton id="importExternalDumpMode" styleClass='creationMode'/> <JRadioButton id="importLocalStorageMode" styleClass='creationMode'/> <JRadioButton id="importRemoteStorageMode" styleClass='creationMode'/> + <JRadioButton id="importServerStorageMode" styleClass='creationMode'/> </JPanel> <JLabel id='noCreateMode' constraints='"noCreateMode"'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigDataUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigDataUI.jaxx index 80748d1..a84758a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigDataUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigDataUI.jaxx @@ -26,7 +26,7 @@ <StorageTabUI> <import> - fr.ird.observe.business.db.constants.CreationMode + fr.ird.observe.db.constantes.CreationMode fr.ird.observe.ui.storage.StorageStep javax.swing.Icon diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigReferentielUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigReferentielUI.jaxx index 0d95cb0..fa263fe 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigReferentielUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigReferentielUI.jaxx @@ -26,7 +26,7 @@ <StorageTabUI> <import> - fr.ird.observe.business.db.constants.CreationMode + fr.ird.observe.db.constantes.CreationMode fr.ird.observe.ui.storage.StorageStep javax.swing.Icon diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css index 5ff68f6..aee7ca0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css @@ -52,6 +52,14 @@ layout:{new GridLayout()}; } +#USE_SERVER { + _description:{n("observe.storage.useServerStorage.description")}; +} + +#USE_SERVER_content { + layout:{new GridLayout()}; +} + #remoteConfig { layout:{new BorderLayout()}; } @@ -68,6 +76,15 @@ text:{model.getRemotePassword()==null ? "" : new String(model.getRemotePassword())}; } +#serverDataBaseLabel { + visible: {DbMode.USE_SERVER.equals(model.getDbMode())}; +} + +#serverDataBase { + visible: {DbMode.USE_SERVER.equals(model.getDbMode())}; + text:{model.getServerDatabase()}; +} + #remoteUseSsl { text:"observe.storage.remote.useSll"; selected:{model.isUseSsl()}; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx index db7d07e..57d82df 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx @@ -28,7 +28,8 @@ <import> fr.ird.observe.ui.storage.StorageStep - fr.ird.observe.business.db.constants.ConnexionStatus + fr.ird.observe.db.constantes.ConnexionStatus + fr.ird.observe.db.constantes.DbMode; java.awt.Color java.awt.Dimension @@ -133,6 +134,22 @@ public void init() { </row> </Table> + <!-- configurer connexion au server base distante --> + <Table id='USE_SERVER' + constraints='"USE_SERVER"' fill='both'> + <row> + <cell> + <JLabel text='observe.storage.useServerStorage.config'/> + </cell> + </row> + <row> + <cell weighty='1' weightx='1'> + <JPanel id='USE_SERVERE_content' + minimumSize='{new Dimension(20,300)}'/> + </cell> + </row> + </Table> + <JPanel constraints='"$$hideme$$"' visible='false'> <JPanel id='remoteConfig'> <Table constraints='BorderLayout.CENTER' @@ -165,6 +182,16 @@ public void init() { </cell> </row> <row> + <cell anchor='west'> + <JLabel id="serverDataBaseLabel" + text='observe.storage.server.dataBase'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="serverDataBase" + onKeyReleased='getModel().setServerDatabase(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + <row> <cell columns='2'> <JCheckBox id="remoteUseSsl" onActionPerformed='getModel().setUseSsl(((JCheckBox)event.getSource()).isSelected())'/> 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 fbe5620..51f0182 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 @@ -21,13 +21,11 @@ */ package fr.ird.observe.ui.storage.tabs; -import com.google.common.base.Preconditions; -import fr.ird.observe.ObserveConfig; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.constants.ConnexionStatus; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.ConnexionStatus; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.StorageStep; import fr.ird.observe.ui.storage.StorageUIHandler; @@ -343,25 +341,10 @@ public class StorageTabUIHandler { text = t(text); break; case SUCCESS: - //FIXME -// text = t(text, ui.model.getPgConfig().toString()); + text = t(text, ui.model.getPgConfig().toString()); break; case FAILED: - - //FIXME -// if (ui.model.getPgConfig().getConnexionError() != null) { -// // real connexion error -// text = t(text, ui.model.getPgConfig().getConnexionError().getMessage()); -// } else { -// -// // remote version mismatch -// Preconditions.checkState(!ui.model.isPgConfigVersionMatch()); -// -// String error = t("observe.storage.error.dbVersionMismatch", ui.model.getPgConfig().getVersion(), ui.model.getDbVersion()); -// -// text = t(text, error); -// } - + text = t(text, ui.model.getConnexionStatusError()); break; } return text; @@ -435,7 +418,7 @@ public class StorageTabUIHandler { protected String updateInternalDumpModeLabel(ChooseDbModeUI ui, boolean dumpExist) { - File f = ui.getContextValue(ObserveConfig.class).getInitialDbDump(); + File f = ui.getContextValue(ObserveSwingApplicationConfig.class).getInitialDbDump(); String text; if (f.exists()) { text = t("observe.storage.internalDump.last.modified", new Date(f.lastModified())); @@ -447,7 +430,7 @@ public class StorageTabUIHandler { protected String updateCanMigrateLabel(ChooseDbModeUI ui, boolean canMigrate) { - String text = t("observe.storage.action.canMigrate", ui.getModel().getDbVersion()); + String text = t("observe.storage.action.canMigrate", ui.getModel().getModleVersion()); return text; } 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 415961b..f7bbabb 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 @@ -22,7 +22,7 @@ package fr.ird.observe.ui.tree; import com.google.common.base.Preconditions; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; @@ -99,7 +99,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel if (decoratorService == null) { // on récupère le service commun - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } @@ -109,7 +109,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (source != null) { provider = new ObserveDataProvider(source); setDataProvider(provider); @@ -324,7 +324,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel log.trace("[" + node + "] Content class to use : " + contentClass); log.trace("[" + node + "] Parent Content class to use : " + parentContentClass); } - DataContext dataContext = ObserveContext.get().getDataContext(); + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); String nodeId = node.getId(); if (ProgramDto.class.equals(contentClass)) { 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 d0e5b46..8adcd91 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -105,7 +105,7 @@ public class NavigationTreeSelectionModel extends DefaultTreeSelectionModel { } if (canChange && !isSelectionEmpty()) { - canChange = ObserveContext.get().closeSelectedContentUI(); + canChange = ObserveSwingApplicationContext.get().closeSelectedContentUI(); } return canChange; 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 59931f9..9f60ebe 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 @@ -22,6 +22,7 @@ package fr.ird.observe.ui.tree; import com.google.common.base.Preconditions; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveContext; import fr.ird.observe.business.db.DataContext; @@ -121,7 +122,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { protected ObserveDataProvider getDataProvider() { ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (source != null) { provider = new ObserveDataProvider(source); setDataProvider(provider); @@ -320,7 +321,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { JTree tree = getUI(); - List<String> selectedIds = ObserveContext.get().getNodesToReselect(); + List<String> selectedIds = ObserveSwingApplicationContext.get().getNodesToReselect(); if (CollectionUtils.isNotEmpty(selectedIds)) { if (log.isDebugEnabled()) { log.debug("will select previous ids " + selectedIds); @@ -364,7 +365,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { } finally { // nettoyage du context - ObserveContext.get().setNodesToReselect(null); + ObserveSwingApplicationContext.get().setNodesToReselect(null); } // navigation tree should acquire focus diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx index b64d064..a2e144b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx @@ -26,7 +26,7 @@ Interface graphique pour afficher la liste des usages d'une entitee donnee. <JPanel id='usagePanel' layout='{new BorderLayout()}'> <import> - fr.ird.observe.ObserveContext + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.ui.UIHelper fr.ird.observe.services.dto.AbstractObserveDto @@ -55,10 +55,6 @@ protected UsagesUIHandler getHandler() { return handler; } -protected ObserveContext getObserveContext() { - return ObserveContext.get(); -} - void $afterCompleteSetup() { } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java index 9c32ee3..a890a8d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.usage; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import org.apache.commons.logging.Log; @@ -122,7 +122,7 @@ public class UsagesUIHandler { typetitle = t(typetitle, typeTitle, size); pane.setColumnHeaderView(new JLabel(typetitle)); List<String> data = new ArrayList<String>(size); - Decorator<?> decorator = ObserveContext.get().getDecorator(type); + Decorator<?> decorator = ObserveSwingApplicationContext.get().getDecorator(type); if (decorator == null) { throw new NullPointerException( "could not find decorator for type " + type); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveSimpleValidatorMessageTableRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveSimpleValidatorMessageTableRenderer.java index fa09fb0..21e81ed 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveSimpleValidatorMessageTableRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveSimpleValidatorMessageTableRenderer.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.util; */ import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import jaxx.runtime.validator.swing.SimpleBeanValidatorMessageTableModel; import jaxx.runtime.validator.swing.SimpleBeanValidatorMessageTableRenderer; import org.nuiton.validator.NuitonValidatorScope; @@ -48,7 +48,7 @@ public class ObserveSimpleValidatorMessageTableRenderer extends SimpleBeanValida public DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveValidatorMessageTableRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveValidatorMessageTableRenderer.java index 48b449f..b6d8d27 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveValidatorMessageTableRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveValidatorMessageTableRenderer.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.util; */ import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; @@ -51,7 +51,7 @@ public class ObserveValidatorMessageTableRenderer extends SwingValidatorMessageT public DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } 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 c899950..fa442ba 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 @@ -22,8 +22,8 @@ package fr.ird.observe.ui.util.tripMap; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.entities.tripMap.TripMapPoint; @@ -69,7 +69,7 @@ public class TripMapUIHandler { protected TripMapUI view; - private ObserveConfig config; + private ObserveSwingApplicationConfig config; protected ReferencedEnvelope tripArea; protected boolean rendererRunning; @@ -94,7 +94,7 @@ public class TripMapUIHandler { } - public void setConfig(ObserveConfig config) { + public void setConfig(ObserveSwingApplicationConfig config) { this.config = config; JMapPane mapPane = getObserveMapPane(); @@ -111,7 +111,7 @@ public class TripMapUIHandler { try { ((CardLayout) view.getLayout()).first(view); - ObserveContext.get().getObserveMainUI().setBusy(true); + ObserveSwingApplicationContext.get().getObserveMainUI().setBusy(true); ObserveMapPane mapPane = getObserveMapPane(); @@ -158,7 +158,7 @@ public class TripMapUIHandler { } catch (Exception e) { throw new ObserveTechnicalException("Unable to load trip map activity points", e); } finally { - ObserveContext.get().getObserveMainUI().setBusy(false); + ObserveSwingApplicationContext.get().getObserveMainUI().setBusy(false); } } diff --git a/observe-application-swing/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider b/observe-application-swing/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider index 4fe9aed..9b7d106 100644 --- a/observe-application-swing/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider +++ b/observe-application-swing/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider @@ -1 +1 @@ -fr.ird.observe.ObserveApplicationConfigProvider \ No newline at end of file +fr.ird.observe.configuration.ObserveApplicationConfigProvider \ 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 eeccb53..0c79ab5 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 @@ -1,9 +1,9 @@ nuitonutil.error.convertor.noValue= nuitonutil.error.float.convertor= nuitonutil.error.no.convertor= -observe.about.message= -observe.about.translate.content= -observe.about.translate.title= +observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Application de saisie des données observateurs et de consultation de telles données depuis une base <i>Obstuna</i>.</p> <p>Ce projet a été initiée en 2008 par l'unité US 007-OSIRIS de <a href\="http\://www.ird.fr">l'IRD</a> dans le cadre d'un <a href\="http\://www.ird.fr/infor [...] +observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliore [...] +observe.about.translate.title=translate ObServe observe.action.HookSize.create.tip= observe.action.HookSize.delete.tip= observe.action.HookSize.detail.tip= @@ -14,21 +14,21 @@ observe.action.HookType.delete.tip= observe.action.HookType.detail.tip= observe.action.HookType.modify.tip= observe.action.HookType.save.tip= -observe.action.about= -observe.action.about.tip= -observe.action.add.floatingObject= -observe.action.add.floatingObject.tip= -observe.action.add.set= -observe.action.add.set.tip= -observe.action.add.setLongline= -observe.action.add.setLongline.tip= -observe.action.admin.cancel= -observe.action.admin.close= -observe.action.apply= -observe.action.auto.copy.to.clipboard= -observe.action.auto.copy.to.clipboard.tip= -observe.action.back.to.list= -observe.action.back.to.list.tip= +observe.action.about=About +observe.action.about.tip=About ObServe... +observe.action.add.floatingObject=Add FAD +observe.action.add.floatingObject.tip=Add a FAD to the activity +observe.action.add.set=Add a Set +observe.action.add.set.tip=Add the set to the activity +observe.action.add.setLongline=Add the fishing operation +observe.action.add.setLongline.tip=Add the fishing operation associated with this activity +observe.action.admin.cancel=Cancel wizard +observe.action.admin.close=Close wizard +observe.action.apply=Apply +observe.action.auto.copy.to.clipboard=Automatic copy in clipboard +observe.action.auto.copy.to.clipboard.tip=Copy automaticly in clipboard with report result +observe.action.back.to.list=Back to list +observe.action.back.to.list.tip=Go back to the list observe.action.baitHaulingStatus.create.tip= observe.action.baitHaulingStatus.delete.tip= observe.action.baitHaulingStatus.detail.tip= @@ -44,36 +44,36 @@ observe.action.baitType.delete.tip= observe.action.baitType.detail.tip= observe.action.baitType.modify.tip= observe.action.baitType.save.tip= -observe.action.cancel= -observe.action.cancel.create.tip= +observe.action.cancel=Cancel +observe.action.cancel.create.tip=Cancel object creation observe.action.catchFateLongline.create.tip= observe.action.catchFateLongline.delete.tip= observe.action.catchFateLongline.detail.tip= observe.action.catchFateLongline.modify.tip= observe.action.catchFateLongline.save.tip= -observe.action.change.storage= -observe.action.change.storage.tip= -observe.action.choose.db.dump= -observe.action.choose.db.dump.description= -observe.action.choose.db.dump.directory= -observe.action.choose.importGPS= -observe.action.choose.importGPS.description= -observe.action.choose.report.directory= -observe.action.choose.reportFile= -observe.action.choose.reportFile.description= +observe.action.change.storage=Change storage +observe.action.change.storage.tip=To change current storage +observe.action.choose.db.dump=Choose the backup +observe.action.choose.db.dump.description=Database backup (*.sql.gz) +observe.action.choose.db.dump.directory=Choose the backup directory +observe.action.choose.importGPS=Use this file +observe.action.choose.importGPS.description=GPS File (*.gpx) +observe.action.choose.report.directory=Choose reports directory +observe.action.choose.reportFile=Choose the reports directory +observe.action.choose.reportFile.description=Report's file (*.properties) observe.action.choose.sensorUsed.exportData= observe.action.choose.sensorUsed.importData= observe.action.choose.tdr.exportData= observe.action.choose.tdr.importData= -observe.action.close= -observe.action.close.activity.tip= -observe.action.close.maree.tip= -observe.action.close.open= +observe.action.close=Close +observe.action.close.activity.tip=Close the opened activity +observe.action.close.maree.tip=Clse the opened maree +observe.action.close.open=Close observe.action.close.open.tip= -observe.action.close.route.tip= -observe.action.close.storage= -observe.action.close.storage.tip= -observe.action.close.synchro.tip= +observe.action.close.route.tip=Close road +observe.action.close.storage=Close storage +observe.action.close.storage.tip=Close current storage +observe.action.close.synchro.tip=close window observe.action.closeAndCreate= observe.action.closeAndCreate.activity= observe.action.closeAndCreate.activity.tip= @@ -82,20 +82,20 @@ observe.action.closeAndCreate.maree.tip= observe.action.closeAndCreate.route= observe.action.closeAndCreate.route.tip= observe.action.closeAndCreate.tip= -observe.action.commandline.configure.ui= -observe.action.commandline.create.id= -observe.action.commandline.disable.main.ui= -observe.action.commandline.help= -observe.action.commandline.help.ui= -observe.action.commandline.launch.admin.ui= +observe.action.commandline.configure.ui=Configure application +observe.action.commandline.create.id=Générer des topiaIds.\nDeux paramètres sont nécessaires \: le FQN de la classe et le nombre d'id à générer. +observe.action.commandline.disable.main.ui=Do NOT launch main gui +observe.action.commandline.help=Show help +observe.action.commandline.help.ui=Show gui help +observe.action.commandline.launch.admin.ui=Launch a administration task observe.action.commandline.launch.h2.server.mode= observe.action.commandline.launch.obstuna.admin.ui= -observe.action.commandline.use.jmx= -observe.action.configuration= -observe.action.configuration.tip= -observe.action.configure= -observe.action.continue= -observe.action.copy= +observe.action.commandline.use.jmx=Add JMX support +observe.action.configuration=Preferences +observe.action.configuration.tip=Change preferences +observe.action.configure=Configure +observe.action.continue=Continue +observe.action.copy=Copy observe.action.copy.column.headers= observe.action.copy.column.headers.tip= observe.action.copy.row.headers= @@ -105,23 +105,23 @@ observe.action.country.delete.tip= observe.action.country.detail.tip= observe.action.country.modify.tip= observe.action.country.save.tip= -observe.action.create= -observe.action.create.activity= -observe.action.create.activity.tip= +observe.action.create=Create +observe.action.create.activity=Create a new activity +observe.action.create.activity.tip=Create a new activity observe.action.create.entry.tip= -observe.action.create.gearUseFeaturesLongline= -observe.action.create.gearUseFeaturesLongline.tip= -observe.action.create.gearUseFeaturesSeine= -observe.action.create.gearUseFeaturesSeine.tip= -observe.action.create.maree= -observe.action.create.maree.tip= +observe.action.create.gearUseFeaturesLongline=Create a new gear use feature +observe.action.create.gearUseFeaturesLongline.tip=Create a new gear use feature +observe.action.create.gearUseFeaturesSeine=Create a new gear use feature +observe.action.create.gearUseFeaturesSeine.tip=Create a new gear use feature +observe.action.create.maree=Create a new maree +observe.action.create.maree.tip=Create a new maree observe.action.create.nonTargetCatch= observe.action.create.nonTargetCatch.tip= observe.action.create.nonTargetSample= observe.action.create.nonTargetSample.tip= observe.action.create.objectObservedSpecies= observe.action.create.objectObservedSpecies.tip= -observe.action.create.route= +observe.action.create.route=Create a new road observe.action.create.route.tip= observe.action.create.schoolEstimate= observe.action.create.schoolEstimate.tip= @@ -133,81 +133,81 @@ observe.action.create.targetSample= observe.action.create.targetSample.tip= observe.action.create.targetSampleCapture= observe.action.create.targetSampleCapture.tip= -observe.action.db.locale.es.tip= -observe.action.db.locale.fr.tip= -observe.action.db.locale.uk.tip= -observe.action.delete= +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 +observe.action.delete=Delete observe.action.delete.activity.tip= observe.action.delete.entry.tip= observe.action.delete.floatingObject.tip= observe.action.delete.maree.tip= observe.action.delete.route.tip= observe.action.delete.set.tip= -observe.action.delete.tip= -observe.action.detail= +observe.action.delete.tip=Delete +observe.action.detail=Details observe.action.detectionMode.create.tip= observe.action.detectionMode.delete.tip= observe.action.detectionMode.detail.tip= observe.action.detectionMode.modify.tip= observe.action.detectionMode.save.tip= -observe.action.do.backup= -observe.action.do.backup.tip= +observe.action.do.backup=Backup local database +observe.action.do.backup.tip=Make a backup of local database before applying modifications. observe.action.encounterType.create.tip= observe.action.encounterType.delete.tip= observe.action.encounterType.detail.tip= observe.action.encounterType.modify.tip= observe.action.encounterType.save.tip= -observe.action.exit= -observe.action.exit.tip= -observe.action.fpaZone.create.tip= -observe.action.fpaZone.delete.tip= -observe.action.fpaZone.detail.tip= -observe.action.fpaZone.modify.tip= -observe.action.fpaZone.save.tip= -observe.action.gear.create.tip= -observe.action.gear.delete.tip= -observe.action.gear.detail.tip= -observe.action.gear.modify.tip= -observe.action.gear.save.tip= -observe.action.gearCaracteristic.create.tip= -observe.action.gearCaracteristic.delete.tip= -observe.action.gearCaracteristic.detail.tip= -observe.action.gearCaracteristic.modify.tip= -observe.action.gearCaracteristic.save.tip= -observe.action.gearCaracteristicType.create.tip= -observe.action.gearCaracteristicType.delete.tip= -observe.action.gearCaracteristicType.detail.tip= -observe.action.gearCaracteristicType.modify.tip= -observe.action.gearCaracteristicType.save.tip= -observe.action.goDown= -observe.action.goDown.tip= -observe.action.goUp= -observe.action.goUp.tip= -observe.action.goto.next.stage= -observe.action.goto.next.stage.tip= -observe.action.goto.open.activity= -observe.action.goto.open.activity.short= -observe.action.goto.open.activity.tip= -observe.action.goto.open.maree= -observe.action.goto.open.other.activity= -observe.action.goto.open.other.activity.tip= -observe.action.goto.open.other.maree= -observe.action.goto.open.other.maree.tip= -observe.action.goto.open.other.route= -observe.action.goto.open.other.route.tip= -observe.action.goto.open.program.short= -observe.action.goto.open.program.tip= -observe.action.goto.open.route= -observe.action.goto.open.route.short= -observe.action.goto.open.route.tip= -observe.action.goto.open.set.short= +observe.action.exit=Quit +observe.action.exit.tip=quit Observe +observe.action.fpaZone.create.tip=Create an FPA zone +observe.action.fpaZone.delete.tip=Delete the selected FPA zone +observe.action.fpaZone.detail.tip=View details about the selected FPA zone +observe.action.fpaZone.modify.tip=Edit the selected FPA zone +observe.action.fpaZone.save.tip=Save modifications +observe.action.gear.create.tip=Create an gear +observe.action.gear.delete.tip=Delete the selected gear +observe.action.gear.detail.tip=View details about the selected gear +observe.action.gear.modify.tip=Edit the selected gear +observe.action.gear.save.tip=Save modifications +observe.action.gearCaracteristic.create.tip=Create an gear caracteristic +observe.action.gearCaracteristic.delete.tip=Delete the selected gear caracteristic +observe.action.gearCaracteristic.detail.tip=View details about the selected gear caracteristic +observe.action.gearCaracteristic.modify.tip=Edit the selected gear caracteristic +observe.action.gearCaracteristic.save.tip=Save modifications +observe.action.gearCaracteristicType.create.tip=Create an gear caracteristic type +observe.action.gearCaracteristicType.delete.tip=Delete the selected gear caracteristic type +observe.action.gearCaracteristicType.detail.tip=View details about the selected gear caracteristic type +observe.action.gearCaracteristicType.modify.tip=Edit the selected gear caracteristic type +observe.action.gearCaracteristicType.save.tip=Save modifications +observe.action.goDown=Down... +observe.action.goDown.tip=Go down in navigation tree +observe.action.goUp=Up... +observe.action.goUp.tip=Go up in navigation tree +observe.action.goto.next.stage=Next step +observe.action.goto.next.stage.tip=Go to next step +observe.action.goto.open.activity=Go to opened activity +observe.action.goto.open.activity.short=Open activity +observe.action.goto.open.activity.tip=Go to opened activity +observe.action.goto.open.maree=Got to opened trip +observe.action.goto.open.other.activity=Go to opened activity in other road +observe.action.goto.open.other.activity.tip=Got to opened activity in other road +observe.action.goto.open.other.maree=Go to opened trip in other program +observe.action.goto.open.other.maree.tip=Got to opened trip in other program +observe.action.goto.open.other.route=Go to opened road in other trip +observe.action.goto.open.other.route.tip=Go to opened road in other trip +observe.action.goto.open.program.short=Open program +observe.action.goto.open.program.tip=Go to opened program +observe.action.goto.open.route=Go to opened route +observe.action.goto.open.route.short=Open route +observe.action.goto.open.route.tip=Go to opened route +observe.action.goto.open.set.short=Open set observe.action.goto.open.set.tip= -observe.action.goto.open.trip.short= -observe.action.goto.open.trip.tip= -observe.action.goto.previous.stage= -observe.action.goto.previous.stage.tip= -observe.action.goto.referentiel.short= -observe.action.goto.referentiel.tip= +observe.action.goto.open.trip.short=Open trip +observe.action.goto.open.trip.tip=go to opened trip +observe.action.goto.previous.stage=Previous step +observe.action.goto.previous.stage.tip=go to previous step +observe.action.goto.referentiel.short=Referentiel +observe.action.goto.referentiel.tip=Go to referentiel observe.action.goto.selected.activity= observe.action.goto.selected.activity.tip= observe.action.goto.selected.maree= @@ -239,8 +239,8 @@ observe.action.hookType.delete.tip= observe.action.hookType.detail.tip= observe.action.hookType.modify.tip= observe.action.hookType.save.tip= -observe.action.info.storage= -observe.action.info.storage.tip= +observe.action.info.storage=Storage details +observe.action.info.storage.tip=Show storage informations observe.action.itemHorizontalPosition.create.tip= observe.action.itemHorizontalPosition.delete.tip= observe.action.itemHorizontalPosition.detail.tip= @@ -271,14 +271,14 @@ observe.action.lineType.delete.tip= observe.action.lineType.detail.tip= observe.action.lineType.modify.tip= observe.action.lineType.save.tip= -observe.action.load.from.file= -observe.action.load.from.file.tip= -observe.action.locale.es= -observe.action.locale.es.tip= -observe.action.locale.fr= -observe.action.locale.fr.tip= -observe.action.locale.uk= -observe.action.locale.uk.tip= +observe.action.load.from.file=Import backup +observe.action.load.from.file.tip=Load a storage from a database backup +observe.action.locale.es=Spain +observe.action.locale.es.tip=Change application's language in spanish +observe.action.locale.fr=French +observe.action.locale.fr.tip=Change application's language in french +observe.action.locale.uk=English +observe.action.locale.uk.tip=Change application's language in english observe.action.maturityStatus.create.tip= observe.action.maturityStatus.delete.tip= observe.action.maturityStatus.detail.tip= @@ -289,8 +289,8 @@ observe.action.mitigationType.delete.tip= observe.action.mitigationType.detail.tip= observe.action.mitigationType.modify.tip= observe.action.mitigationType.save.tip= -observe.action.modify= -observe.action.new.entry= +observe.action.modify=Modify +observe.action.new.entry=Add observe.action.new.entry.tip= observe.action.objectFate.create.tip= observe.action.objectFate.delete.tip= @@ -351,15 +351,15 @@ observe.action.reasonForNullSet.delete.tip= observe.action.reasonForNullSet.detail.tip= observe.action.reasonForNullSet.modify.tip= observe.action.reasonForNullSet.save.tip= -observe.action.reload.application= -observe.action.reload.storage= -observe.action.reload.storage.tip= -observe.action.reload.ui= -observe.action.reloadDefaultConfiguration= -observe.action.reloadDefaultConfiguration.tip= -observe.action.reloadResources= -observe.action.reloadResources.tip= -observe.action.reopen= +observe.action.reload.application=reload application +observe.action.reload.storage=Reload storage +observe.action.reload.storage.tip=Reload current storage +observe.action.reload.ui=Reload GUI +observe.action.reloadDefaultConfiguration=Reload default resources +observe.action.reloadDefaultConfiguration.tip=Reload default resources +observe.action.reloadResources=Reload i18n +observe.action.reloadResources.tip=Reload i18n translations +observe.action.reopen=Re-open observe.action.reopen.activity.tip= observe.action.reopen.maree.tip= observe.action.reopen.route.tip= @@ -370,7 +370,7 @@ observe.action.reopen.selected.maree.tip= observe.action.reopen.selected.route= observe.action.reopen.selected.route.tip= observe.action.reopen.tip= -observe.action.reset= +observe.action.reset=Reset observe.action.reset.entry.tip= observe.action.reset.ersId.tip= observe.action.reset.formsUrl.tip= @@ -379,18 +379,18 @@ observe.action.reset.new.entry.tip= observe.action.reset.picturesReferences.tip= observe.action.reset.reportsUrl.tip= observe.action.reset.supportVesselName.tip= -observe.action.reset.tip= +observe.action.reset.tip=Cancel modifications observe.action.reset.well.tip= -observe.action.restart.application= -observe.action.restart.application.tip= -observe.action.save= -observe.action.save.all.tip= -observe.action.save.entry.tip= -observe.action.save.tip= -observe.action.save.to.file= -observe.action.save.to.file.tip= -observe.action.selectNode= -observe.action.selectNode.tip= +observe.action.restart.application=Restart +observe.action.restart.application.tip=Restart application +observe.action.save=Save +observe.action.save.all.tip=Save all modifications +observe.action.save.entry.tip=Save modifications +observe.action.save.tip=Save modifications +observe.action.save.to.file=Backup storage +observe.action.save.to.file.tip=Make a backup of opened storage +observe.action.selectNode=Select a node +observe.action.selectNode.tip=Select a node observe.action.sensorBrand.create.tip= observe.action.sensorBrand.delete.tip= observe.action.sensorBrand.detail.tip= @@ -416,12 +416,12 @@ observe.action.sex.delete.tip= observe.action.sex.detail.tip= observe.action.sex.modify.tip= observe.action.sex.save.tip= -observe.action.show.technical.informations.tip= -observe.action.show.unique.keys.tip= -observe.action.show.usages.tip= +observe.action.show.technical.informations.tip=Show technical informations +observe.action.show.unique.keys.tip=Show all natural ids for this type of object +observe.action.show.usages.tip=Show all usages of this object observe.action.showConfig.title= -observe.action.site= -observe.action.site.tip= +observe.action.site=Site +observe.action.site.tip=Go to ObServe's website observe.action.sizeMeasureType.create.tip= observe.action.sizeMeasureType.delete.tip= observe.action.sizeMeasureType.detail.tip= @@ -464,24 +464,24 @@ observe.action.stop.h2.web.server= observe.action.stop.h2.web.server.tip= observe.action.stop.server.mode= observe.action.stop.server.mode.tip= -observe.action.storage.apply= -observe.action.storage.apply.tip= -observe.action.storage.applyAction= -observe.action.storage.cancel= -observe.action.storage.cancel.tip= +observe.action.storage.apply=Apply +observe.action.storage.apply.tip=Apply configured storage +observe.action.storage.applyAction=Change storage +observe.action.storage.cancel=Cancel change storage +observe.action.storage.cancel.tip=Cancel change of storage observe.action.surroundingActivity.create.tip= observe.action.surroundingActivity.delete.tip= observe.action.surroundingActivity.detail.tip= observe.action.surroundingActivity.modify.tip= observe.action.surroundingActivity.save.tip= -observe.action.synchro.apply.modifications= -observe.action.synchro.cancel.tip= -observe.action.synchro.copy.tip= -observe.action.synchro.launch.operation= -observe.action.synchro.prepare.operation= -observe.action.synchro.report.reset.tip= -observe.action.test.remote= -observe.action.test.remote.tip= +observe.action.synchro.apply.modifications=Apply modifications +observe.action.synchro.cancel.tip=Cancel +observe.action.synchro.copy.tip=Copy result of report in clipboard +observe.action.synchro.launch.operation=Launch operation < %1$S > +observe.action.synchro.prepare.operation=Prepare operation < %1$s > +observe.action.synchro.report.reset.tip=Reset selected report. +observe.action.test.remote=Test connexion +observe.action.test.remote.tip=Click here to validate remote connexion observe.action.transmittingBuoyOperation.create.tip= observe.action.transmittingBuoyOperation.delete.tip= observe.action.transmittingBuoyOperation.detail.tip= @@ -507,9 +507,9 @@ observe.action.vesselActivityLongline.delete.tip= observe.action.vesselActivityLongline.detail.tip= observe.action.vesselActivityLongline.modify.tip= observe.action.vesselActivityLongline.save.tip= -observe.action.vesselActivitySeine.create.tip= -observe.action.vesselActivitySeine.delete.tip= -observe.action.vesselActivitySeine.detail.tip= +observe.action.vesselActivitySeine.create.tip=Create a new boat activity +observe.action.vesselActivitySeine.delete.tip=Delete selected boat activity +observe.action.vesselActivitySeine.detail.tip=Show detail of selected boat activity observe.action.vesselActivitySeine.modify.tip= observe.action.vesselActivitySeine.save.tip= observe.action.vesselSizeCategory.create.tip= @@ -537,34 +537,34 @@ observe.action.wind.delete.tip= observe.action.wind.detail.tip= observe.action.wind.modify.tip= observe.action.wind.save.tip= -observe.activityLongline.coordinate= -observe.activityLongline.fpaZone= -observe.activityLongline.message.active.found= -observe.activityLongline.message.active.found.for.other.trip= -observe.activityLongline.message.creating= -observe.activityLongline.message.no.active.found= -observe.activityLongline.message.no.active.found.for.other.trip= -observe.activityLongline.message.not.open= -observe.activityLongline.message.updating= -observe.activityLongline.seaSurfaceTemperature= -observe.activityLongline.timeStamp= -observe.activityLongline.title= -observe.activityLongline.vesselActivityLongline= -observe.activityLonglines.title= -observe.activityObservedSystem.availableObservedSystem= -observe.activityObservedSystem.selectedObservedSystem= -observe.activitySeine.message.active.found= -observe.activitySeine.message.active.found.for.other.route= -observe.activitySeine.message.creating= -observe.activitySeine.message.no.active.found= -observe.activitySeine.message.no.active.found.for.other.route= -observe.activitySeine.message.not.open= -observe.activitySeine.message.updating= -observe.activitySeine.tab.general= -observe.activitySeine.tab.measurements= -observe.activitySeine.title= +observe.activityLongline.coordinate=Coordinates +observe.activityLongline.fpaZone=FPA Zone +observe.activityLongline.message.active.found=An activity is opened. +observe.activityLongline.message.active.found.for.other.trip=An activity is opened in another trip. +observe.activityLongline.message.creating=Creating an activity +observe.activityLongline.message.no.active.found=No opened activity found, you can create a new one, or open an existing one. +observe.activityLongline.message.no.active.found.for.other.trip=No opened activity found on current trip. +observe.activityLongline.message.not.open=Activity is not opened, no edit possible. +observe.activityLongline.message.updating=Updating an activity +observe.activityLongline.seaSurfaceTemperature=SST (°c) +observe.activityLongline.timeStamp=timestamp +observe.activityLongline.title=Activity +observe.activityLongline.vesselActivityLongline=Vessel activity +observe.activityLonglines.title=Activities +observe.activityObservedSystem.availableObservedSystem=Available observed systems +observe.activityObservedSystem.selectedObservedSystem=Selected observed systems +observe.activitySeine.message.active.found=An activity is opened. +observe.activitySeine.message.active.found.for.other.route=An activity is opened in another route. +observe.activitySeine.message.creating=Creating an activity +observe.activitySeine.message.no.active.found=No opened activity found, you can create a new one, or open an existing one. +observe.activitySeine.message.no.active.found.for.other.route=No opened activity found on current route. +observe.activitySeine.message.not.open=Activity is not opened, no edit possible. +observe.activitySeine.message.updating=Updating an activity +observe.activitySeine.tab.general=General caracteristics +observe.activitySeine.tab.measurements=Measurements +observe.activitySeine.title=Activity observe.activitySeineObservedSystem.title= -observe.activitySeines.title= +observe.activitySeines.title=Activities observe.admin.resume.no.operation.done= observe.admin.resume.operation.canceled= observe.admin.resume.operation.done= @@ -572,162 +572,162 @@ observe.admin.resume.operation.failed= observe.admin.resume.operation.need.fix= observe.admin.resume.operation.not.started= observe.admin.resume.operation.running= -observe.application.config= -observe.baitsComposition.action.create= -observe.baitsComposition.action.create.tip= -observe.baitsComposition.baitSettingStatus= -observe.baitsComposition.baitType= -observe.baitsComposition.individualSize= -observe.baitsComposition.individualWeight= -observe.baitsComposition.proportion= -observe.baitsComposition.proportionSum= -observe.baitsComposition.table.baitSettingStatus= -observe.baitsComposition.table.baitSettingStatus.tip= -observe.baitsComposition.table.baitType= -observe.baitsComposition.table.baitType.tip= -observe.baitsComposition.table.individualSize= -observe.baitsComposition.table.individualSize.tip= -observe.baitsComposition.table.individualWeight= -observe.baitsComposition.table.individualWeight.tip= -observe.baitsComposition.table.proportion= -observe.baitsComposition.table.proportion.tip= -observe.baitsComposition.title= -observe.basket.cant.delete.message= -observe.basket.cant.delete.title= +observe.application.config=ObServe Configuration +observe.baitsComposition.action.create=Insert this bait +observe.baitsComposition.action.create.tip=Insert this bait +observe.baitsComposition.baitSettingStatus=Bait setting status +observe.baitsComposition.baitType=Bait type +observe.baitsComposition.individualSize=Size +observe.baitsComposition.individualWeight=Weight +observe.baitsComposition.proportion=Proportion +observe.baitsComposition.proportionSum=Proportion sum +observe.baitsComposition.table.baitSettingStatus=Status +observe.baitsComposition.table.baitSettingStatus.tip=Bait setting status +observe.baitsComposition.table.baitType=Type +observe.baitsComposition.table.baitType.tip=Bait type +observe.baitsComposition.table.individualSize=Size +observe.baitsComposition.table.individualSize.tip=Individual size +observe.baitsComposition.table.individualWeight=Weight +observe.baitsComposition.table.individualWeight.tip=Individual weight +observe.baitsComposition.table.proportion=Proportion +observe.baitsComposition.table.proportion.tip=Proportion +observe.baitsComposition.title=Baits +observe.basket.cant.delete.message=The current basket can not be deleted since it used by other data. +observe.basket.cant.delete.title=Can't delete basket observe.basket.invalid.nextFloatline1Length= -observe.branchLine.cant.delete.message= -observe.branchLine.cant.delete.title= -observe.branchline.baitHaulingStatus= -observe.branchline.baitSettingStatus= -observe.branchline.baitType= -observe.branchline.comment= -observe.branchline.depthRecorder= -observe.branchline.hookLost= -observe.branchline.hookOffset= -observe.branchline.hookSize= -observe.branchline.hookType= +observe.branchLine.cant.delete.message=The current branchline can not be deleted since it used by other data. +observe.branchLine.cant.delete.title=Can't delete branchline +observe.branchline.baitHaulingStatus=Bait hauling status +observe.branchline.baitSettingStatus=Bait setting status +observe.branchline.baitType=Bait type +observe.branchline.comment=Comment +observe.branchline.depthRecorder=Depth recorder +observe.branchline.hookLost=Hook lost +observe.branchline.hookOffset=Hook offset +observe.branchline.hookSize=Hook size +observe.branchline.hookType=Hook type observe.branchline.message.modified= observe.branchline.message.modified.but.invalid= -observe.branchline.snapWeight= -observe.branchline.swivelWeight= +observe.branchline.snapWeight=Snap weight (kg) +observe.branchline.swivelWeight=Swivel weight (kg) observe.branchline.tab.general= observe.branchline.tab.hookAndBait= -observe.branchline.timeSinceContact= -observe.branchline.timer= -observe.branchline.timerTimeOnBoard= -observe.branchline.title= -observe.branchline.topType= -observe.branchline.traceCutOff= -observe.branchline.tracelineType= -observe.branchline.weightedSnap= -observe.branchline.weightedSwivel= -observe.branchlinesComposition.action.create= -observe.branchlinesComposition.action.create.tip= -observe.branchlinesComposition.length= -observe.branchlinesComposition.proportion= -observe.branchlinesComposition.proportionSum= -observe.branchlinesComposition.table.length= -observe.branchlinesComposition.table.length.tip= -observe.branchlinesComposition.table.proportion= -observe.branchlinesComposition.table.proportion.tip= -observe.branchlinesComposition.table.topType= -observe.branchlinesComposition.table.topType.tip= -observe.branchlinesComposition.table.tracelineType= -observe.branchlinesComposition.table.tracelineType.tip= -observe.branchlinesComposition.title= -observe.branchlinesComposition.topType= -observe.branchlinesComposition.tracelineType= -observe.broughtOnDeck.comment= -observe.catchLongline.acquisitionMode= -observe.catchLongline.acquisitionMode.grouped= -observe.catchLongline.acquisitionMode.individual= -observe.catchLongline.action.create= -observe.catchLongline.action.create.tip= +observe.branchline.timeSinceContact=Time since contact +observe.branchline.timer=Timer +observe.branchline.timerTimeOnBoard=Time on board +observe.branchline.title=Branchline detail +observe.branchline.topType=Top part type +observe.branchline.traceCutOff=Trace cut off +observe.branchline.tracelineType=Traceline type +observe.branchline.weightedSnap=Weighted snap +observe.branchline.weightedSwivel=Weighted swivel +observe.branchlinesComposition.action.create=Insert this branchline +observe.branchlinesComposition.action.create.tip=Insert this branchline +observe.branchlinesComposition.length=Length +observe.branchlinesComposition.proportion=Proportion +observe.branchlinesComposition.proportionSum=Proportion sum +observe.branchlinesComposition.table.length=Length +observe.branchlinesComposition.table.length.tip=Length +observe.branchlinesComposition.table.proportion=Proportion +observe.branchlinesComposition.table.proportion.tip=Proportion +observe.branchlinesComposition.table.topType=Top part type +observe.branchlinesComposition.table.topType.tip=Top part type +observe.branchlinesComposition.table.tracelineType=Traceline type +observe.branchlinesComposition.table.tracelineType.tip=Traceline type +observe.branchlinesComposition.title=Branchlines +observe.branchlinesComposition.topType=Top part type +observe.branchlinesComposition.tracelineType=Traceline type +observe.broughtOnDeck.comment=Only species brought on deck can be sampled +observe.catchLongline.acquisitionMode=Acquisition mode +observe.catchLongline.acquisitionMode.grouped=Batch +observe.catchLongline.acquisitionMode.individual=Individual +observe.catchLongline.action.create=Insert this catch +observe.catchLongline.action.create.tip=Insert this catch observe.catchLongline.action.new= observe.catchLongline.action.new.tip= -observe.catchLongline.action.reset.photoReferences.tip= -observe.catchLongline.availablePredator= -observe.catchLongline.basket= -observe.catchLongline.beatDiameter= -observe.catchLongline.branchline= -observe.catchLongline.catchFateLongline= -observe.catchLongline.catchHealthness= -observe.catchLongline.comment= -observe.catchLongline.count= -observe.catchLongline.depredated= -observe.catchLongline.discardHealthness= -observe.catchLongline.gonadeWeight= -observe.catchLongline.hookPosition= -observe.catchLongline.hookWhenDiscarded= -observe.catchLongline.locationOnLongline= -observe.catchLongline.maturityStatus= -observe.catchLongline.photoReferences= -observe.catchLongline.predator= +observe.catchLongline.action.reset.photoReferences.tip=Reset photo references +observe.catchLongline.availablePredator=Avaiable predators +observe.catchLongline.basket=Bakset +observe.catchLongline.beatDiameter=Beat diameter +observe.catchLongline.branchline=Branchline +observe.catchLongline.catchFateLongline=Fate +observe.catchLongline.catchHealthness=Catch healthness +observe.catchLongline.comment=Comment +observe.catchLongline.count=Count +observe.catchLongline.depredated=Depredated +observe.catchLongline.discardHealthness=Discard healthness +observe.catchLongline.gonadeWeight=Gonade weigth (g) +observe.catchLongline.hookPosition=Hook position +observe.catchLongline.hookWhenDiscarded=Discarded with hook +observe.catchLongline.locationOnLongline=Location on longline +observe.catchLongline.maturityStatus=Sexual maturity +observe.catchLongline.photoReferences=Photo references +observe.catchLongline.predator=Predators observe.catchLongline.resetBranchline= observe.catchLongline.resetBranchline.tip= observe.catchLongline.saveBranchline= observe.catchLongline.saveBranchline.tip= -observe.catchLongline.section= -observe.catchLongline.selectedPredator= -observe.catchLongline.sex= -observe.catchLongline.speciesCatch= -observe.catchLongline.stomacFullness= +observe.catchLongline.section=Section +observe.catchLongline.selectedPredator=Selected predators +observe.catchLongline.sex=Sex +observe.catchLongline.speciesCatch=Species +observe.catchLongline.stomacFullness=Stomac fullness observe.catchLongline.tab.branchline= -observe.catchLongline.tab.caracteristics= -observe.catchLongline.tab.depredated= -observe.catchLongline.tab.foodAndSexual= -observe.catchLongline.tab.sizeMeasures= -observe.catchLongline.tab.weightMeasures= -observe.catchLongline.title= -observe.catchLongline.totalWeight= -observe.catchlongline.table.acquisitionMode= -observe.catchlongline.table.acquisitionMode.tip= +observe.catchLongline.tab.caracteristics=Caracteristics +observe.catchLongline.tab.depredated=Depredation +observe.catchLongline.tab.foodAndSexual=Food and sexual maturity +observe.catchLongline.tab.sizeMeasures=Sizes +observe.catchLongline.tab.weightMeasures=Weights +observe.catchLongline.title=Catches +observe.catchLongline.totalWeight=Total weight (kg) +observe.catchlongline.table.acquisitionMode=Acquisition mode +observe.catchlongline.table.acquisitionMode.tip=Acquisition mode observe.catchlongline.table.basketHaulingId= observe.catchlongline.table.basketHaulingId.tip= observe.catchlongline.table.branchlineHaulingId= observe.catchlongline.table.branchlineHaulingId.tip= -observe.catchlongline.table.catchFateLongline= -observe.catchlongline.table.catchFateLongline.tip= -observe.catchlongline.table.catchHealthness= -observe.catchlongline.table.catchHealthness.tip= -observe.catchlongline.table.comment= -observe.catchlongline.table.comment.tip= -observe.catchlongline.table.count= -observe.catchlongline.table.count.tip= -observe.catchlongline.table.depredated= -observe.catchlongline.table.depredated.tip= -observe.catchlongline.table.discardHealthness= -observe.catchlongline.table.discardHealthness.tip= +observe.catchlongline.table.catchFateLongline=Fate +observe.catchlongline.table.catchFateLongline.tip=Fate +observe.catchlongline.table.catchHealthness=Catch healthness +observe.catchlongline.table.catchHealthness.tip=Catch healthness +observe.catchlongline.table.comment=Comment +observe.catchlongline.table.comment.tip=Comment +observe.catchlongline.table.count=Count +observe.catchlongline.table.count.tip=Count +observe.catchlongline.table.depredated=Depredated +observe.catchlongline.table.depredated.tip=Depredated +observe.catchlongline.table.discardHealthness=Discard healthness +observe.catchlongline.table.discardHealthness.tip=Discard healthness observe.catchlongline.table.sectionHaulingId= observe.catchlongline.table.sectionHaulingId.tip= -observe.catchlongline.table.size= -observe.catchlongline.table.size.tip= -observe.catchlongline.table.sizeMeasureType= -observe.catchlongline.table.sizeMeasureType.tip= -observe.catchlongline.table.speciesCatch= -observe.catchlongline.table.speciesCatch.tip= -observe.catchlongline.table.weight= -observe.catchlongline.table.weight.tip= -observe.catchlongline.table.weightMeasureType= -observe.catchlongline.table.weightMeasureType.tip= -observe.choice.cancel= -observe.choice.confirm.delete= -observe.choice.continue= -observe.choice.create.fin.veille.activity= +observe.catchlongline.table.size=Size (cm) +observe.catchlongline.table.size.tip=Size (cm) +observe.catchlongline.table.sizeMeasureType=Measure type +observe.catchlongline.table.sizeMeasureType.tip=Measure type +observe.catchlongline.table.speciesCatch=Species +observe.catchlongline.table.speciesCatch.tip=Species +observe.catchlongline.table.weight=Measure (kg) +observe.catchlongline.table.weight.tip=Measure (kg) +observe.catchlongline.table.weightMeasureType=Measure type +observe.catchlongline.table.weightMeasureType.tip=Measure type +observe.choice.cancel=Cancel +observe.choice.confirm.delete=Confirm delete +observe.choice.continue=Continue +observe.choice.create.fin.veille.activity=Create end activity observe.choice.create.fin.veille.activity.and.continue= -observe.choice.createLocalStorage= -observe.choice.doNotSave= -observe.choice.doNothing= +observe.choice.createLocalStorage=Create local storage +observe.choice.doNotSave=Do not save +observe.choice.doNothing=Do nothing observe.choice.not.create.fin.veille.activity.and.continue= -observe.choice.quit= -observe.choice.save= -observe.choice.useRemoteStorage= +observe.choice.quit=Quit +observe.choice.save=Save +observe.choice.useRemoteStorage=Use a remote storage observe.common.acquisitionMode= observe.common.acquisitionMode.count= observe.common.acquisitionMode.individu= -observe.common.activities= -observe.common.activities.list= -observe.common.activity= +observe.common.activities=Activities +observe.common.activities.list=List of activities +observe.common.activity=Activity observe.common.activityLongline= observe.common.activitySeine= observe.common.baitHaulingStatus= @@ -736,7 +736,7 @@ observe.common.baitSettingStatus= observe.common.baitType= observe.common.baitsComposition= observe.common.basket= -observe.common.birdsObservation= +observe.common.birdsObservation=Birds observe.common.boolean.false= observe.common.boolean.null= observe.common.boolean.true= @@ -756,8 +756,8 @@ observe.common.catchWeight= observe.common.catchWeightComputed.computed.tip= observe.common.catchWeightComputed.observed.tip= observe.common.changeDate= -observe.common.code= -observe.common.codeAndStatus= +observe.common.code=Code +observe.common.codeAndStatus=Code / Status observe.common.coefficients= observe.common.comment= observe.common.comment.activity= @@ -774,7 +774,7 @@ observe.common.currentFpaZone= observe.common.dataEntryOperator= observe.common.date= observe.common.daysAtSeaCount= -observe.common.departureHarbour= +observe.common.departureHarbour=Departure harbour observe.common.description= observe.common.detailledActivitiesObservation= observe.common.detectionMode= @@ -800,7 +800,7 @@ observe.common.gaugeLabel= observe.common.gear= observe.common.gearCaracteristic= observe.common.gearCaracteristicType= -observe.common.gearType= +observe.common.gearType=Gear caracteristic type observe.common.gearUseFeaturesLongline= observe.common.gearUseFeaturesSeine= observe.common.gender= @@ -835,9 +835,9 @@ observe.common.label5= observe.common.label6= observe.common.label7= observe.common.label8= -observe.common.landingHarbour= +observe.common.landingHarbour=Landing harbour observe.common.lastName= -observe.common.latitude= +observe.common.latitude=Latitude observe.common.length= observe.common.length.computed.tip= observe.common.length.inf= @@ -850,7 +850,7 @@ observe.common.lightsticksColor= observe.common.lightsticksType= observe.common.lineType= observe.common.locode= -observe.common.longitude= +observe.common.longitude=Longitude observe.common.lowerValueUpperValue= observe.common.mammalsObservation= observe.common.maturityStatus= @@ -885,12 +885,12 @@ observe.common.objectOperation= observe.common.objectSchoolEstimate= observe.common.objectType= observe.common.objectsObservation= -observe.common.observedSystem= +observe.common.observedSystem=Observed system observe.common.observedSystemDistance= observe.common.observer= observe.common.observerLabel= observe.common.obsolete.entity= -observe.common.ocean= +observe.common.ocean=Ocean observe.common.ocean/label1= observe.common.ocean/label2= observe.common.ocean/label3= @@ -925,7 +925,7 @@ observe.common.reasonForNullSet= observe.common.reportsUrl= observe.common.resume= observe.common.route= -observe.common.routes.list= +observe.common.routes.list=List of routes observe.common.samplesObservation= observe.common.schoolEstimate= observe.common.schoolType= @@ -960,7 +960,7 @@ observe.common.settingShape= observe.common.sex= observe.common.sizeMeasure= observe.common.sizeMeasureType= -observe.common.species= +observe.common.species=Species observe.common.species/scientificLabel= observe.common.speciesFate= observe.common.speciesFaune= @@ -973,7 +973,7 @@ observe.common.startDate= observe.common.startDateFinProgram= observe.common.startDateFinValidite= observe.common.startLogValue= -observe.common.status= +observe.common.status=Status observe.common.step.description= observe.common.stomacFullness= observe.common.storage.not.valid= @@ -1004,12 +1004,12 @@ observe.common.transmittingBuoyType= observe.common.tripLongline= observe.common.tripSeine= observe.common.tripType= -observe.common.trips.list= +observe.common.trips.list=List of trips observe.common.typeTransmittingBuoyOperation= observe.common.undefined= observe.common.undefined.tip= observe.common.uri= -observe.common.vessel= +observe.common.vessel=Boat observe.common.vessel/label1= observe.common.vessel/label2= observe.common.vessel/label3= @@ -1019,7 +1019,7 @@ observe.common.vessel/label6= observe.common.vessel/label7= observe.common.vessel/label8= observe.common.vesselActivityLongline= -observe.common.vesselActivitySeine= +observe.common.vesselActivitySeine=Boat Activity observe.common.vesselActivitySeine.comment= observe.common.vesselActivitySeine/label1= observe.common.vesselActivitySeine/label2= @@ -1045,48 +1045,48 @@ observe.common.well= observe.common.wind= observe.common.yearService= observe.comon.exist.on.remote= -observe.config.category.changeStorage= -observe.config.category.changeStorage.description= -observe.config.category.directories= -observe.config.category.directories.description= -observe.config.category.gps= -observe.config.category.gps.description= -observe.config.category.h2= -observe.config.category.h2.description= +observe.config.category.changeStorage=Data sources +observe.config.category.changeStorage.description=To change Data sources +observe.config.category.directories=Directories +observe.config.category.directories.description=Directories used by application +observe.config.category.gps=GPS +observe.config.category.gps.description=GPS Configuration +observe.config.category.h2=Local data source +observe.config.category.h2.description=Configuration of local data source observe.config.category.map= observe.config.category.map.description= observe.config.category.observation= observe.config.category.observation.description= -observe.config.category.obstuna= -observe.config.category.obstuna.description= -observe.config.category.other= -observe.config.category.other.description= +observe.config.category.obstuna=Remote data source +observe.config.category.obstuna.description=Configuration of remote data source +observe.config.category.other=Other... +observe.config.category.other.description=Other properties observe.config.category.speciesList.longline= observe.config.category.speciesList.longline.description= observe.config.category.speciesList.seine= observe.config.category.speciesList.seine.description= -observe.config.category.synchro= -observe.config.category.synchro.description= -observe.config.configFileName.description= -observe.config.db.locale= -observe.config.defaultBackupDirectory.description= -observe.config.defaultCreationMode= -observe.config.defaultDataDirectory.description= -observe.config.defaultDbMode= +observe.config.category.synchro=Admin Tasks +observe.config.category.synchro.description=Administrations tasks to perform on data sources +observe.config.configFileName.description=Configuration filename +observe.config.db.locale=Language of data source +observe.config.defaultBackupDirectory.description=Default directory where are stored backup of data sources +observe.config.defaultCreationMode=Default creation mode of new local data source +observe.config.defaultDataDirectory.description=Default user directory +observe.config.defaultDbMode=Err \:509 observe.config.defaultGpsMaxDelay= -observe.config.defaultGpsMaxSpeed= -observe.config.defaultI18nDirectory.description= -observe.config.defaultInitialDbDump.description= -observe.config.defaultLocalDbDirectory.description= +observe.config.defaultGpsMaxSpeed=Maximum speed +observe.config.defaultI18nDirectory.description=Default i18n directory where to store i18n resources +observe.config.defaultInitialDbDump.description=Default location of initial database +observe.config.defaultLocalDbDirectory.description=Default directory where to store local data source observe.config.defaultMapDirectory.description= -observe.config.defaultReportDirectory.description= -observe.config.defaultResourcesDirectory.description= -observe.config.defaultTmpDirectory.description= -observe.config.defaultValidationReportDirectory.description= -observe.config.devMode= -observe.config.h2.can.migrate.description= -observe.config.h2.login.description= -observe.config.h2.password.description= +observe.config.defaultReportDirectory.description=Default directory where to store report definition files +observe.config.defaultResourcesDirectory.description=Default user resources directory +observe.config.defaultTmpDirectory.description=Default temporary directory used by application and clean at each launch. +observe.config.defaultValidationReportDirectory.description=Default validation report directory +observe.config.devMode=Dev mode +observe.config.h2.can.migrate.description=Flag to know if you can migrate h2 data sources +observe.config.h2.login.description=H2 Login +observe.config.h2.password.description=H2 Password observe.config.h2.serverPort.description= observe.config.logConfigurationFile.description= observe.config.map.background.description= @@ -1109,14 +1109,18 @@ observe.config.observation.mammiferes= observe.config.observation.mensurations= observe.config.observation.oiseaux= observe.config.observation.rejetsThons= -observe.config.obstuna.login.description= -observe.config.obstuna.password.description= -observe.config.obstuna.url.description= -observe.config.obstuna.useSsl.description= -observe.config.pg.can.migrate.description= -observe.config.showMigrationProgression= -observe.config.showMigrationSql= -observe.config.showSql= +observe.config.obstuna.login.description=Remote login +observe.config.obstuna.password.description=Remote password +observe.config.obstuna.url.description=URL of remote data source +observe.config.obstuna.useSsl.description=Flag sets to true when your are using remote with ssl +observe.config.pg.can.migrate.description=Flat sets to true when you can migrate remote data sources +observe.config.server.dataBaseName.description= +observe.config.server.login.description= +observe.config.server.password.description= +observe.config.server.url.description= +observe.config.showMigrationProgression=Show migration progression +observe.config.showMigrationSql=Show migration sql queries +observe.config.showSql=Show sql observe.config.speciesList.longline.catch= observe.config.speciesList.longline.encounter= observe.config.speciesList.seine.nonTargetCatch= @@ -1124,32 +1128,32 @@ observe.config.speciesList.seine.objectObservedSpecies= observe.config.speciesList.seine.objectSchoolEstimate= observe.config.speciesList.seine.schoolEstimate= observe.config.speciesList.seine.targetCatch= -observe.config.ui.autoPopupNumberEditor= -observe.config.ui.changeSynchroSrc= -observe.config.ui.fullscreen= -observe.config.ui.loadLocalStorage= -observe.config.ui.locale= -observe.config.ui.showNumberEditorButton= -observe.config.ui.showTimeEditorSlider= -observe.config.ui.storeRemoteStorage= +observe.config.ui.autoPopupNumberEditor=Flag sets to true when number editor show automaticly popup +observe.config.ui.changeSynchroSrc=Flag sets to true if you can change local source in admin tasks +observe.config.ui.fullscreen=Flag sets to true to lauch application in full screen mode +observe.config.ui.loadLocalStorage=Flag sets to true to load local data source when application starts +observe.config.ui.locale=Application's language +observe.config.ui.showNumberEditorButton=Flag sets to true to show button to invoke popup on number's editors +observe.config.ui.showTimeEditorSlider=Show timer slider +observe.config.ui.storeRemoteStorage=Flag sets to true to store in config a remote connexion (except passwords) observe.content.mode.create.tip= observe.content.mode.read.tip= observe.content.mode.update.tip= -observe.encounter.action.create= -observe.encounter.action.create.tip= -observe.encounter.count= -observe.encounter.distance= -observe.encounter.encounterType= -observe.encounter.species= -observe.encounter.table.count= -observe.encounter.table.count.tip= -observe.encounter.table.distance= -observe.encounter.table.distance.tip= -observe.encounter.table.encouterType= -observe.encounter.table.encouterType.tip= -observe.encounter.table.species= -observe.encounter.table.species.tip= -observe.encounter.title= +observe.encounter.action.create=Insert this encounter +observe.encounter.action.create.tip=Insert this encounter +observe.encounter.count=Count +observe.encounter.distance=Distance (m) +observe.encounter.encounterType=Type +observe.encounter.species=species +observe.encounter.table.count=Count +observe.encounter.table.count.tip=Count +observe.encounter.table.distance=Distance (m) +observe.encounter.table.distance.tip=Distance (m) +observe.encounter.table.encouterType=Type +observe.encounter.table.encouterType.tip=Type +observe.encounter.table.species=Species +observe.encounter.table.species.tip=Species +observe.encounter.title=Encounters observe.entity.message.updating= observe.error.can.not.create.directory= observe.error.no.activity.6= @@ -1162,104 +1166,104 @@ observe.error.speciesList.seine.objectSchoolEstimate.notFound= observe.error.speciesList.seine.targetCatch.notFound= observe.error.storage.could.not.backup.unsane.local.db= observe.error.storage.could.not.load.local.db= -observe.floatingObject.message.creating= -observe.floatingObject.message.updating= -observe.floatingObject.title= +observe.floatingObject.message.creating=Creating a floating object +observe.floatingObject.message.updating=updating a floating object +observe.floatingObject.title=DCP observe.floatingObjectTransmittingBuoyOperation.title= -observe.floatlinesComposition.action.create= -observe.floatlinesComposition.action.create.tip= -observe.floatlinesComposition.length= -observe.floatlinesComposition.lineType= -observe.floatlinesComposition.proportion= -observe.floatlinesComposition.proportionSum= -observe.floatlinesComposition.table.length= -observe.floatlinesComposition.table.length.tip= -observe.floatlinesComposition.table.lineType= -observe.floatlinesComposition.table.lineType.tip= -observe.floatlinesComposition.table.proportion= -observe.floatlinesComposition.table.proportion.tip= -observe.floatlinesComposition.title= -observe.gear.availableGearCaracteristic= -observe.gear.gearCaracteristic= -observe.gear.gearCaracteristicType= -observe.gear.selectedGearCaracteristic= -observe.gear.tab.gearCaracteristic= -observe.gear.tab.general= -observe.gear.unit= -observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement= -observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip= -observe.gearUseFeaturesLongline.comment= -observe.gearUseFeaturesLongline.gear= -observe.gearUseFeaturesLongline.number= -observe.gearUseFeaturesLongline.tab.general= -observe.gearUseFeaturesLongline.tab.measurements= -observe.gearUseFeaturesLongline.table.comment= -observe.gearUseFeaturesLongline.table.comment.tip= -observe.gearUseFeaturesLongline.table.gear= -observe.gearUseFeaturesLongline.table.gear.tip= -observe.gearUseFeaturesLongline.table.gearCaracteristic= -observe.gearUseFeaturesLongline.table.gearCaracteristic.tip= -observe.gearUseFeaturesLongline.table.number= -observe.gearUseFeaturesLongline.table.number.tip= -observe.gearUseFeaturesLongline.table.usedInTrip= -observe.gearUseFeaturesLongline.table.usedInTrip.tip= -observe.gearUseFeaturesLongline.table.value= -observe.gearUseFeaturesLongline.table.value.tip= -observe.gearUseFeaturesLongline.title= -observe.gearUseFeaturesLongline.usedInTrip= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip= -observe.gearUseFeaturesSeine.comment= -observe.gearUseFeaturesSeine.gear= -observe.gearUseFeaturesSeine.number= -observe.gearUseFeaturesSeine.tab.general= -observe.gearUseFeaturesSeine.tab.measurements= -observe.gearUseFeaturesSeine.table.comment= -observe.gearUseFeaturesSeine.table.comment.tip= -observe.gearUseFeaturesSeine.table.gear= -observe.gearUseFeaturesSeine.table.gear.tip= -observe.gearUseFeaturesSeine.table.gearCaracteristic= -observe.gearUseFeaturesSeine.table.gearCaracteristic.tip= -observe.gearUseFeaturesSeine.table.number= -observe.gearUseFeaturesSeine.table.number.tip= -observe.gearUseFeaturesSeine.table.usedInTrip= -observe.gearUseFeaturesSeine.table.usedInTrip.tip= -observe.gearUseFeaturesSeine.table.value= -observe.gearUseFeaturesSeine.table.value.tip= -observe.gearUseFeaturesSeine.title= -observe.gearUseFeaturesSeine.usedInTrip= +observe.floatlinesComposition.action.create=Insert this floatline +observe.floatlinesComposition.action.create.tip=Insert this floatline +observe.floatlinesComposition.length=Length +observe.floatlinesComposition.lineType=Line type +observe.floatlinesComposition.proportion=Proportion +observe.floatlinesComposition.proportionSum=Proportion sum +observe.floatlinesComposition.table.length=Length +observe.floatlinesComposition.table.length.tip=Length +observe.floatlinesComposition.table.lineType=Type +observe.floatlinesComposition.table.lineType.tip=Line type +observe.floatlinesComposition.table.proportion=Proportion +observe.floatlinesComposition.table.proportion.tip=Proportion +observe.floatlinesComposition.title=Floatines +observe.gear.availableGearCaracteristic=Available caracteristics +observe.gear.gearCaracteristic=Gear caracteristic +observe.gear.gearCaracteristicType=Gear caracteristic type +observe.gear.selectedGearCaracteristic=Selected caracteristics +observe.gear.tab.gearCaracteristic=Caracteristics of the gear +observe.gear.tab.general=General caracteristics +observe.gear.unit=Unit +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement=Delete selected measurement +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip=Delete selected measurement +observe.gearUseFeaturesLongline.comment=Comment +observe.gearUseFeaturesLongline.gear=Gear +observe.gearUseFeaturesLongline.number=Number +observe.gearUseFeaturesLongline.tab.general=General +observe.gearUseFeaturesLongline.tab.measurements=Measurements +observe.gearUseFeaturesLongline.table.comment=Comment +observe.gearUseFeaturesLongline.table.comment.tip=Comment +observe.gearUseFeaturesLongline.table.gear=Gear +observe.gearUseFeaturesLongline.table.gear.tip=Gear +observe.gearUseFeaturesLongline.table.gearCaracteristic=Caracteristic +observe.gearUseFeaturesLongline.table.gearCaracteristic.tip=Gear caracteristic +observe.gearUseFeaturesLongline.table.number=Number +observe.gearUseFeaturesLongline.table.number.tip=Number +observe.gearUseFeaturesLongline.table.usedInTrip=Used +observe.gearUseFeaturesLongline.table.usedInTrip.tip=Used in trip +observe.gearUseFeaturesLongline.table.value=Value +observe.gearUseFeaturesLongline.table.value.tip=Caracteristic value +observe.gearUseFeaturesLongline.title=Gears +observe.gearUseFeaturesLongline.usedInTrip=Used in trip +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement=Delete selected measurement +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip=Delete selected measurement +observe.gearUseFeaturesSeine.comment=Comment +observe.gearUseFeaturesSeine.gear=Gear +observe.gearUseFeaturesSeine.number=Number +observe.gearUseFeaturesSeine.tab.general=General +observe.gearUseFeaturesSeine.tab.measurements=Measurements +observe.gearUseFeaturesSeine.table.comment=Comment +observe.gearUseFeaturesSeine.table.comment.tip=Comment +observe.gearUseFeaturesSeine.table.gear=Gear +observe.gearUseFeaturesSeine.table.gear.tip=Gear +observe.gearUseFeaturesSeine.table.gearCaracteristic=Caracteristic +observe.gearUseFeaturesSeine.table.gearCaracteristic.tip=Gear caracteristic +observe.gearUseFeaturesSeine.table.number=Number +observe.gearUseFeaturesSeine.table.number.tip=Number +observe.gearUseFeaturesSeine.table.usedInTrip=Used +observe.gearUseFeaturesSeine.table.usedInTrip.tip=Used in trip +observe.gearUseFeaturesSeine.table.value=Value +observe.gearUseFeaturesSeine.table.value.tip=Caracteristic value +observe.gearUseFeaturesSeine.title=Gears +observe.gearUseFeaturesSeine.usedInTrip=Used in trip observe.harbour.coordinates= observe.harbour.locode= observe.harbour.name= -observe.hooksComposition.action.create= -observe.hooksComposition.action.create.tip= -observe.hooksComposition.hookOffset= -observe.hooksComposition.hookSize= -observe.hooksComposition.hookType= -observe.hooksComposition.proportion= -observe.hooksComposition.proportionSum= -observe.hooksComposition.table.hookOffset= -observe.hooksComposition.table.hookOffset.tip= -observe.hooksComposition.table.hookSize= -observe.hooksComposition.table.hookSize.tip= -observe.hooksComposition.table.hookType= -observe.hooksComposition.table.hookType.tip= -observe.hooksComposition.table.proportion= -observe.hooksComposition.table.proportion.tip= -observe.hooksComposition.title= -observe.info.selected.validators= -observe.info.validation.credentials= -observe.init.local.db.detected= -observe.init.no.initial.dump.detected= -observe.init.no.local.db.detected= -observe.init.storage.done= -observe.label.coefficients.info= +observe.hooksComposition.action.create=Insert this hook +observe.hooksComposition.action.create.tip=Insert this hook +observe.hooksComposition.hookOffset=Offset +observe.hooksComposition.hookSize=Size +observe.hooksComposition.hookType=Type +observe.hooksComposition.proportion=Proportion +observe.hooksComposition.proportionSum=Proportion sum +observe.hooksComposition.table.hookOffset=Offset +observe.hooksComposition.table.hookOffset.tip=Offset +observe.hooksComposition.table.hookSize=Size +observe.hooksComposition.table.hookSize.tip=Size +observe.hooksComposition.table.hookType=Type +observe.hooksComposition.table.hookType.tip=Type +observe.hooksComposition.table.proportion=Proportion +observe.hooksComposition.table.proportion.tip=Proportion +observe.hooksComposition.title=Hooks +observe.info.selected.validators=You must select at least one validator to continue. +observe.info.validation.credentials=To validate referentiel (resp. data), You must have rw credentials. +observe.init.local.db.detected=%1$s detected. +observe.init.no.initial.dump.detected=Internal data source %1$s not detected. +observe.init.no.local.db.detected=Local data source %1$s not detected. +observe.init.storage.done=Init of Persistent Service done. +observe.label.coefficients.info=TODO Expliquer la syntaxe des coefficients observe.label.lengthWeightFormula.info= -observe.label.usage.data.title= -observe.label.usage.referentiel.title= +observe.label.usage.data.title=Data '%1$s' (%2$d occurrences) +observe.label.usage.referentiel.title=Referentiel '%1$s' (%2$d occurrences) observe.label.weightLengthFormula.info= -observe.lengthWeightParameter.tab.general= -observe.lengthWeightParameter.tab.other= +observe.lengthWeightParameter.tab.general=General caracteristics +observe.lengthWeightParameter.tab.other=Other caracteristics observe.list.HookSize= observe.list.HookType= observe.list.baitHaulingStatus= @@ -1321,83 +1325,88 @@ observe.list.vesselType= observe.list.weightCategory= observe.list.weightMeasureType= observe.list.wind= -observe.longlineDetailComposition.action.deleteAllSections= -observe.longlineDetailComposition.action.deleteAllSections.tip= -observe.longlineDetailComposition.action.deleteSelectedBasket= -observe.longlineDetailComposition.action.deleteSelectedBasket.tip= -observe.longlineDetailComposition.action.deleteSelectedBranchline= -observe.longlineDetailComposition.action.deleteSelectedBranchline.tip= -observe.longlineDetailComposition.action.deleteSelectedSection= -observe.longlineDetailComposition.action.deleteSelectedSection.tip= -observe.longlineDetailComposition.action.deleteSelectedSectionTemplate= -observe.longlineDetailComposition.action.deleteSelectedSectionTemplate.tip= -observe.longlineDetailComposition.action.generateAllSections= -observe.longlineDetailComposition.action.generateAllSections.tip= -observe.longlineDetailComposition.action.insertAfterSelectedBasket= -observe.longlineDetailComposition.action.insertAfterSelectedBasket.tip= -observe.longlineDetailComposition.action.insertAfterSelectedBranchline= -observe.longlineDetailComposition.action.insertAfterSelectedBranchline.tip= -observe.longlineDetailComposition.action.insertAfterSelectedSection= -observe.longlineDetailComposition.action.insertAfterSelectedSection.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedBasket= -observe.longlineDetailComposition.action.insertBeforeSelectedBasket.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedBranchline= -observe.longlineDetailComposition.action.insertBeforeSelectedBranchline.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedSection= -observe.longlineDetailComposition.action.insertBeforeSelectedSection.tip= -observe.longlineDetailComposition.baskets= -observe.longlineDetailComposition.basketsTable.floatline1Length= -observe.longlineDetailComposition.basketsTable.floatline1Length.tip= -observe.longlineDetailComposition.basketsTable.floatline2Length= -observe.longlineDetailComposition.basketsTable.floatline2Length.tip= -observe.longlineDetailComposition.basketsTable.haulingIdentifier= -observe.longlineDetailComposition.basketsTable.haulingIdentifier.tip= -observe.longlineDetailComposition.basketsTable.settingIdentifier= -observe.longlineDetailComposition.basketsTable.settingIdentifier.tip= -observe.longlineDetailComposition.branchlines= -observe.longlineDetailComposition.branchlinesTable.branchlineLength= -observe.longlineDetailComposition.branchlinesTable.branchlineLength.tip= -observe.longlineDetailComposition.branchlinesTable.haulingIdentifier= -observe.longlineDetailComposition.branchlinesTable.haulingIdentifier.tip= -observe.longlineDetailComposition.branchlinesTable.settingIdentifier= -observe.longlineDetailComposition.branchlinesTable.settingIdentifier.tip= -observe.longlineDetailComposition.branchlinesTable.tracelineLength= -observe.longlineDetailComposition.branchlinesTable.tracelineLength.tip= -observe.longlineDetailComposition.canGenerate= +observe.longlineDetailComposition.action.deleteAllSections=Remove all +observe.longlineDetailComposition.action.deleteAllSections.tip=Remove all sections - baskets - branchlines +observe.longlineDetailComposition.action.deleteSelectedBasket=Delete basket +observe.longlineDetailComposition.action.deleteSelectedBasket.tip=Delete selected basket +observe.longlineDetailComposition.action.deleteSelectedBranchline=Delete branchline +observe.longlineDetailComposition.action.deleteSelectedBranchline.tip=Delete selected branchline +observe.longlineDetailComposition.action.deleteSelectedSection=Delete section +observe.longlineDetailComposition.action.deleteSelectedSection.tip=Delete selected section +observe.longlineDetailComposition.action.deleteSelectedSectionTemplate=Delete section template +observe.longlineDetailComposition.action.deleteSelectedSectionTemplate.tip=Delete selected section template +observe.longlineDetailComposition.action.generateAllSections=Generate all +observe.longlineDetailComposition.action.generateAllSections.tip=Generate all sections - baskets and branchlines +observe.longlineDetailComposition.action.insertAfterSelectedBasket=Insert after +observe.longlineDetailComposition.action.insertAfterSelectedBasket.tip=Insert after selected basket +observe.longlineDetailComposition.action.insertAfterSelectedBranchline=Insert after +observe.longlineDetailComposition.action.insertAfterSelectedBranchline.tip=Insert after selected branchline +observe.longlineDetailComposition.action.insertAfterSelectedSection=Insert after +observe.longlineDetailComposition.action.insertAfterSelectedSection.tip=Insert after selected section +observe.longlineDetailComposition.action.insertBeforeSelectedBasket=Insert before +observe.longlineDetailComposition.action.insertBeforeSelectedBasket.tip=Insert before selected basket +observe.longlineDetailComposition.action.insertBeforeSelectedBranchline=Insert before +observe.longlineDetailComposition.action.insertBeforeSelectedBranchline.tip=Insert before selected branchline +observe.longlineDetailComposition.action.insertBeforeSelectedSection=Insert before +observe.longlineDetailComposition.action.insertBeforeSelectedSection.tip=Insert before selected section +observe.longlineDetailComposition.baskets=Baskets +observe.longlineDetailComposition.basketsTable.floatline1Length=Floatline 1 length (m) +observe.longlineDetailComposition.basketsTable.floatline1Length.tip=Floatline 1 length (m) +observe.longlineDetailComposition.basketsTable.floatline2Length=Floatline 2 length (m) +observe.longlineDetailComposition.basketsTable.floatline2Length.tip=Floatline 2 length (m) +observe.longlineDetailComposition.basketsTable.haulingIdentifier=Hauling Id +observe.longlineDetailComposition.basketsTable.haulingIdentifier.tip=Hauling Identifier +observe.longlineDetailComposition.basketsTable.settingIdentifier=Setting Identifier +observe.longlineDetailComposition.basketsTable.settingIdentifier.tip=Setting Id +observe.longlineDetailComposition.branchlines=Branchlines +observe.longlineDetailComposition.branchlinesTable.branchlineLength=Branchline length (m) +observe.longlineDetailComposition.branchlinesTable.branchlineLength.tip=Branchline length (m) +observe.longlineDetailComposition.branchlinesTable.haulingIdentifier=Hauling Id +observe.longlineDetailComposition.branchlinesTable.haulingIdentifier.tip=Hauling Identifier +observe.longlineDetailComposition.branchlinesTable.settingIdentifier=Setting Identifier +observe.longlineDetailComposition.branchlinesTable.settingIdentifier.tip=Setting Id +observe.longlineDetailComposition.branchlinesTable.tracelineLength=Traceline length (m) +observe.longlineDetailComposition.branchlinesTable.tracelineLength.tip=Traceline length (m) +observe.longlineDetailComposition.canGenerate=Can generate observe.longlineDetailComposition.firstTemplate.template.notCompilant.basketCount= -observe.longlineDetailComposition.message.updating= -observe.longlineDetailComposition.sectionTemplatesTable.identifier= -observe.longlineDetailComposition.sectionTemplatesTable.identifier.tip= -observe.longlineDetailComposition.sectionTemplatesTable.value= -observe.longlineDetailComposition.sectionTemplatesTable.value.tip= -observe.longlineDetailComposition.sections= -observe.longlineDetailComposition.sectionsTable.haulingIdentifier= -observe.longlineDetailComposition.sectionsTable.haulingIdentifier.tip= -observe.longlineDetailComposition.sectionsTable.settingIdentifier= -observe.longlineDetailComposition.sectionsTable.settingIdentifier.tip= -observe.longlineDetailComposition.sectionsTable.template= -observe.longlineDetailComposition.sectionsTable.template.tip= -observe.longlineDetailComposition.tab.branchlineDetail= -observe.longlineDetailComposition.tab.composition= -observe.longlineDetailComposition.tab.generate= -observe.longlineDetailComposition.title= +observe.longlineDetailComposition.message.updating=Updating composition details +observe.longlineDetailComposition.sectionTemplatesTable.identifier=Identifier +observe.longlineDetailComposition.sectionTemplatesTable.identifier.tip=Unique section template identifier +observe.longlineDetailComposition.sectionTemplatesTable.value=Value +observe.longlineDetailComposition.sectionTemplatesTable.value.tip=Template value +observe.longlineDetailComposition.sections=Sections +observe.longlineDetailComposition.sectionsTable.haulingIdentifier=Hauling Id +observe.longlineDetailComposition.sectionsTable.haulingIdentifier.tip=Hauling Identifier +observe.longlineDetailComposition.sectionsTable.settingIdentifier=Setting Id +observe.longlineDetailComposition.sectionsTable.settingIdentifier.tip=Setting Identifier +observe.longlineDetailComposition.sectionsTable.template=Template +observe.longlineDetailComposition.sectionsTable.template.tip=Template used to generate baskets floatline lengths +observe.longlineDetailComposition.tab.branchlineDetail=Branchline detail +observe.longlineDetailComposition.tab.composition=Composition +observe.longlineDetailComposition.tab.generate=generation +observe.longlineDetailComposition.title=Detailed composition observe.longlineDetailComposition.title.section.cant.use.firstTemplate= -observe.longlineGlobalComposition.availableMitigationType= -observe.longlineGlobalComposition.message.updating= -observe.longlineGlobalComposition.mitigationType= -observe.longlineGlobalComposition.selectedMitigationType= -observe.longlineGlobalComposition.tab.baitsComposition= -observe.longlineGlobalComposition.tab.branchlinesComposition= -observe.longlineGlobalComposition.tab.floatlinesComposition= -observe.longlineGlobalComposition.tab.hooksComposition= -observe.longlineGlobalComposition.tab.mitigationType= -observe.longlineGlobalComposition.title= +observe.longlineGlobalComposition.availableMitigationType=Available mitigations +observe.longlineGlobalComposition.message.updating=Updating global composition +observe.longlineGlobalComposition.mitigationType=Mitigation +observe.longlineGlobalComposition.selectedMitigationType=Selected mitigations +observe.longlineGlobalComposition.tab.baitsComposition=Baits +observe.longlineGlobalComposition.tab.branchlinesComposition=Branchlines +observe.longlineGlobalComposition.tab.floatlinesComposition=Floatines +observe.longlineGlobalComposition.tab.hooksComposition=Hooks +observe.longlineGlobalComposition.tab.mitigationType=Mitigation +observe.longlineGlobalComposition.title=Global composition observe.map.action.exportPng= observe.map.action.exportPng.tip= observe.map.action.zoomIt= observe.map.action.zoomIt.tip= observe.map.east= +observe.map.export.chooseFile.image= observe.map.export.chooseFile.ok= +observe.map.export.chooseFile.overwrite= +observe.map.export.chooseFile.overwrite.cancel= +observe.map.export.chooseFile.overwrite.ok= +observe.map.export.chooseFile.overwrite.title= observe.map.export.chooseFile.png= observe.map.export.chooseFile.title= observe.map.export.overwrite= @@ -1426,19 +1435,19 @@ observe.map.seine.activity.schollType.object= observe.map.seine.harbour.departure= observe.map.seine.harbour.landing= observe.map.south= -observe.map.waitLoading= +observe.map.waitLoading=< Please wait while loading the map > observe.map.west= observe.measurement.delete.message= -observe.menu.actions= -observe.menu.application.locale= -observe.menu.configuration= -observe.menu.configuration.tip= -observe.menu.db.locale= -observe.menu.file= -observe.menu.help= -observe.menu.locale= -observe.menu.navigation= -observe.menu.storage= +observe.menu.actions=Actions +observe.menu.application.locale=Application +observe.menu.configuration=Configuration +observe.menu.configuration.tip=To configure application +observe.menu.db.locale=Storage +observe.menu.file=File +observe.menu.help=Help +observe.menu.locale=Languages +observe.menu.navigation=Navigation +observe.menu.storage=Storage observe.message.can.not.write.data= observe.message.cant.add.echantillonRejetThon= observe.message.cant.add.echantillonTargetCatch= @@ -1446,14 +1455,14 @@ observe.message.cant.add.nonTargetSample= observe.message.consolidate.operation.done= observe.message.consolidate.save.changes= observe.message.creating.referentiel= -observe.message.db.closed= -observe.message.db.loaded= -observe.message.db.loading= -observe.message.db.none.loaded= -observe.message.db.none.loaded.tip= -observe.message.delete= -observe.message.delete.directory= -observe.message.delete.new= +observe.message.db.closed=%1$s was closed +observe.message.db.loaded=%1$s was loaded +observe.message.db.loading=%1$s loading... +observe.message.db.none.loaded=< No data source loaded > +observe.message.db.none.loaded.tip=No data source loaded... +observe.message.delete=Confirm to delete object\:\n\n '%1$s' - '%2$s'\n +observe.message.delete.directory=Delete directory %1$s +observe.message.delete.new=Confirm to delete object\:\n\n '%1$s'\n observe.message.detected.accepted.interval= observe.message.detected.rejected.interval= observe.message.exportData.delete.remote.maree= @@ -1484,7 +1493,7 @@ observe.message.no.accepted.intervalle.detected= observe.message.no.activity.detected= observe.message.no.activity.for.route= observe.message.no.activity.for.trip= -observe.message.no.local.db.found= +observe.message.no.local.db.found=Local data source does not exist (location %1$s).\n\nYou can create it or connect to a remote data source. observe.message.no.open.maree.detected= observe.message.no.report.selected= observe.message.no.route.detected= @@ -1498,7 +1507,7 @@ observe.message.quit.valid.edit= observe.message.referentiel.editable= observe.message.referentiel.home= observe.message.referentiel.no.editable= -observe.message.save.configuration= +observe.message.save.configuration=Save configuration in file %1$s observe.message.select.report= observe.message.server.info= observe.message.show.usage.for.delete= @@ -1536,8 +1545,9 @@ observe.message.validation.start.maree= observe.message.validation.start.referentiel= observe.message.validation.use.storage= observe.message.warning.will.be.delete= -observe.navigationMenu.moveTrip= -observe.navigationMenu.noAction= +observe.model.version= +observe.navigationMenu.moveTrip=Change program +observe.navigationMenu.noAction=< No action > observe.nonTargetCatch.message.table.will.delete.nonTargetSample= observe.nonTargetCatch.table.catchWeight= observe.nonTargetCatch.table.catchWeight.tip= @@ -1582,9 +1592,9 @@ observe.obstuna.action.security= observe.obstuna.action.security.description= observe.obstuna.action.update= observe.obstuna.action.update.description= -observe.person.country= -observe.program.tab.general= -observe.program.tab.observations= +observe.person.country=Nationality +observe.program.tab.general=General caracteristics +observe.program.tab.observations=Observations observe.route.message.active.found= observe.route.message.active.found.for.other.trip= observe.route.message.creating= @@ -1592,8 +1602,8 @@ observe.route.message.no.active.found= observe.route.message.no.active.found.for.other.trip= observe.route.message.not.open= observe.route.message.updating= -observe.route.title= -observe.routes.title= +observe.route.title=Route +observe.routes.title=Routes observe.runner.config.loaded= observe.runner.config.migrate.file= observe.runner.context.loaded= @@ -1618,10 +1628,10 @@ observe.schoolEstimate.table.speciesThon= observe.schoolEstimate.table.speciesThon.tip= observe.schoolEstimate.table.weight= observe.schoolEstimate.table.weight.tip= -observe.section.cant.delete.message= -observe.section.cant.delete.title= -observe.sectionTemplate.delete.message= -observe.sections.delete.message= +observe.section.cant.delete.message=The current section can not be deleted since it used by other data. +observe.section.cant.delete.title=Can't delete section +observe.sectionTemplate.delete.message=Confirm to delete current template. +observe.sections.delete.message=Confirm to delete all sections. observe.security.referentiel= observe.security.referentiel.tip= observe.security.role= @@ -1632,78 +1642,78 @@ observe.security.unused= observe.security.unused.tip= observe.security.utilisateur= observe.security.utilisateur.tip= -observe.sensorUsed.action.create= -observe.sensorUsed.action.create.tip= -observe.sensorUsed.action.reset.dataLocation.tip= -observe.sensorUsed.action.reset.sensorSerialNo.tip= -observe.sensorUsed.data= -observe.sensorUsed.dataLocation= -observe.sensorUsed.dataLocation.tip= -observe.sensorUsed.delete.data.message= -observe.sensorUsed.deleteData= -observe.sensorUsed.deleteData.tip= -observe.sensorUsed.exportData= -observe.sensorUsed.exportData.tip= -observe.sensorUsed.importData= -observe.sensorUsed.importData.tip= -observe.sensorUsed.message.data.exported= -observe.sensorUsed.message.data.imported= -observe.sensorUsed.sensorBrand= -observe.sensorUsed.sensorDataFormat= -observe.sensorUsed.sensorSerialNo= -observe.sensorUsed.sensorType= -observe.sensorUsed.table.data= -observe.sensorUsed.table.data.tip= -observe.sensorUsed.table.dataLocation= -observe.sensorUsed.table.dataLocation.tip= -observe.sensorUsed.table.sensorBrand= -observe.sensorUsed.table.sensorBrand.tip= -observe.sensorUsed.table.sensorDataFormat= -observe.sensorUsed.table.sensorDataFormat.tip= -observe.sensorUsed.table.sensorSerialNo= -observe.sensorUsed.table.sensorSerialNo.tip= -observe.sensorUsed.table.sensorType= -observe.sensorUsed.table.sensorType.tip= -observe.sensorUsed.title= -observe.setLongline.action.reset.homeId.tip= -observe.setLongline.basketsPerSectionCount= -observe.setLongline.branchlinesPerBasketCount= -observe.setLongline.haulingBreaks= -observe.setLongline.haulingDirectionSameAsSetting= -observe.setLongline.haulingEndCoordinates= -observe.setLongline.haulingEndTimeStamp= -observe.setLongline.haulingStartCoordinates= -observe.setLongline.haulingStartTimeStamp= -observe.setLongline.homeId= -observe.setLongline.lightsticksColor= -observe.setLongline.lightsticksPerBasketCount= -observe.setLongline.lightsticksType= -observe.setLongline.lineType= -observe.setLongline.maxDepthTargeted= -observe.setLongline.message.creating= -observe.setLongline.message.updating= -observe.setLongline.monitored= -observe.setLongline.number= -observe.setLongline.settingEndCoordinates= -observe.setLongline.settingEndTimeStamp= -observe.setLongline.settingShape= -observe.setLongline.settingStartCoordinates= -observe.setLongline.settingStartTimeStamp= -observe.setLongline.settingVesselSpeed= -observe.setLongline.shooterSpeed= -observe.setLongline.shooterUsed= -observe.setLongline.snapWeight= -observe.setLongline.swivelWeight= -observe.setLongline.tab.hauling= -observe.setLongline.tab.setting= -observe.setLongline.tab.settingCaracteristics= -observe.setLongline.timeBetweenHooks= -observe.setLongline.title= -observe.setLongline.totalBasketsCount= -observe.setLongline.totalHooksCount= -observe.setLongline.totalSectionsCount= -observe.setLongline.weightedSnap= -observe.setLongline.weightedSwivel= +observe.sensorUsed.action.create=Insert the sensor +observe.sensorUsed.action.create.tip=Insert this new sensor used +observe.sensorUsed.action.reset.dataLocation.tip=Reset data location +observe.sensorUsed.action.reset.sensorSerialNo.tip=Reset serial no +observe.sensorUsed.data=Data +observe.sensorUsed.dataLocation=Data location +observe.sensorUsed.dataLocation.tip=Data file location +observe.sensorUsed.delete.data.message=Confirm to delete the data file +observe.sensorUsed.deleteData=Delete +observe.sensorUsed.deleteData.tip=Delete the data file +observe.sensorUsed.exportData=Export +observe.sensorUsed.exportData.tip=Export data file +observe.sensorUsed.importData=Import +observe.sensorUsed.importData.tip=Import the data file +observe.sensorUsed.message.data.exported=the data file was exported at %s. +observe.sensorUsed.message.data.imported=the data file %s was imported +observe.sensorUsed.sensorBrand=Brand +observe.sensorUsed.sensorDataFormat=Data format +observe.sensorUsed.sensorSerialNo=Serial no +observe.sensorUsed.sensorType=Type +observe.sensorUsed.table.data=Data +observe.sensorUsed.table.data.tip=Data +observe.sensorUsed.table.dataLocation=Data location +observe.sensorUsed.table.dataLocation.tip=Data location +observe.sensorUsed.table.sensorBrand=Brand +observe.sensorUsed.table.sensorBrand.tip=Sensor brand +observe.sensorUsed.table.sensorDataFormat=Data format +observe.sensorUsed.table.sensorDataFormat.tip=Data format +observe.sensorUsed.table.sensorSerialNo=Serial no +observe.sensorUsed.table.sensorSerialNo.tip=Sensor serial no +observe.sensorUsed.table.sensorType=Type +observe.sensorUsed.table.sensorType.tip=Sensor type +observe.sensorUsed.title=Sensors ursed +observe.setLongline.action.reset.homeId.tip=Reset home id +observe.setLongline.basketsPerSectionCount=Baskets per section count +observe.setLongline.branchlinesPerBasketCount=Hooks per basket count +observe.setLongline.haulingBreaks=Number of cuts +observe.setLongline.haulingDirectionSameAsSetting=Direction same as setting +observe.setLongline.haulingEndCoordinates=Hauling end coordinates +observe.setLongline.haulingEndTimeStamp=End timestamp +observe.setLongline.haulingStartCoordinates=Hauling start coordinates +observe.setLongline.haulingStartTimeStamp=Start timestamp +observe.setLongline.homeId=Home id +observe.setLongline.lightsticksColor=Lightsticks color +observe.setLongline.lightsticksPerBasketCount=lightsticks per basket count +observe.setLongline.lightsticksType=Lightsticks type +observe.setLongline.lineType=Line type +observe.setLongline.maxDepthTargeted=Max depth targeted (m) +observe.setLongline.message.creating=Creating fishing operation +observe.setLongline.message.updating=Updating fishing operation +observe.setLongline.monitored=Monitored +observe.setLongline.number=Number +observe.setLongline.settingEndCoordinates=Setting end coordinates +observe.setLongline.settingEndTimeStamp=End timestamp +observe.setLongline.settingShape=Setting shape +observe.setLongline.settingStartCoordinates=Setting start coordinates +observe.setLongline.settingStartTimeStamp=Start timestamp +observe.setLongline.settingVesselSpeed=Vessel spped (kts) +observe.setLongline.shooterSpeed=Shooter speed (kts) +observe.setLongline.shooterUsed=Shooter used +observe.setLongline.snapWeight=Snap weight (kg) +observe.setLongline.swivelWeight=swivel weight (kg) +observe.setLongline.tab.hauling=Hauling +observe.setLongline.tab.setting=Setting +observe.setLongline.tab.settingCaracteristics=Caracteristics +observe.setLongline.timeBetweenHooks=time between hooks +observe.setLongline.title=Fishing operation +observe.setLongline.totalBasketsCount=Total baskets count +observe.setLongline.totalHooksCount=Total hooks count +observe.setLongline.totalSectionsCount=Total sections count +observe.setLongline.weightedSnap=Weighted snap +observe.setLongline.weightedSwivel=Weighted swvel observe.setSeine.currentDirection= observe.setSeine.currentMeasureDepth= observe.setSeine.currentSpeed= @@ -1727,18 +1737,18 @@ observe.setSeine.sonarUsed= observe.setSeine.sonarUsedAvantSet= observe.setSeine.startTime= observe.setSeine.supportVesselName= -observe.setSeine.tab.general= -observe.setSeine.tab.measurements= +observe.setSeine.tab.general=General caracteristics +observe.setSeine.tab.measurements=Measurements observe.setSeine.targetDiscarded= -observe.setSeine.title= -observe.species.availableOcean= -observe.species.selectedOcean= -observe.species.tab.general= -observe.species.tab.other= -observe.speciesList.availableSpecies= -observe.speciesList.selectedSpecies= -observe.speciesList.tab.general= -observe.speciesList.tab.species= +observe.setSeine.title=Set +observe.species.availableOcean=Available oceans +observe.species.selectedOcean=Selected oceans +observe.species.tab.general=General caracteristics +observe.species.tab.other=Other caracteristics +observe.speciesList.availableSpecies=Available species +observe.speciesList.selectedSpecies=Selected species +observe.speciesList.tab.general=General caracteristics +observe.speciesList.tab.species=Species observe.storage.action.canMigrate= observe.storage.connexionStatut.failed= observe.storage.connexionStatut.failed.description= @@ -1754,6 +1764,8 @@ observe.storage.creationMode.importLocalStorage= observe.storage.creationMode.importLocalStorage.description= observe.storage.creationMode.importRemoteStorage= observe.storage.creationMode.importRemoteStorage.description= +observe.storage.creationMode.importServerStorage= +observe.storage.creationMode.importServerStorage.description= observe.storage.creationMode.internalDump= observe.storage.creationMode.internalDump.description= observe.storage.dataPolicy.readData= @@ -1770,6 +1782,8 @@ observe.storage.dbMode.useLocal= observe.storage.dbMode.useLocal.description= observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= +observe.storage.dbMode.useServer= +observe.storage.dbMode.useServer.description= observe.storage.error.dbVersionMismatch= observe.storage.importExternalDump.config= observe.storage.importExternalDump.description= @@ -1791,9 +1805,10 @@ observe.storage.label.import.data= observe.storage.label.import.local= observe.storage.label.import.referentiel= observe.storage.label.import.remote= -observe.storage.label.local= +observe.storage.label.local=Local database observe.storage.label.reference.import.db= observe.storage.label.remote= +observe.storage.label.rest= observe.storage.label.synchro= observe.storage.label.synchro.incoming= observe.storage.label.synchro.referentiel= @@ -1847,6 +1862,7 @@ observe.storage.required.rw.on.data= observe.storage.security.administrateur= observe.storage.selected.dbMode= observe.storage.selectedCreationMode= +observe.storage.server.dataBase= observe.storage.showMigrationProgression= observe.storage.showMigrationSql= observe.storage.step.backup= @@ -1872,13 +1888,19 @@ observe.storage.store.remote.config= observe.storage.store.remote.config.tip= observe.storage.useRemoteStorage.config= observe.storage.useRemoteStorage.description= +observe.storage.useServerStorage.config= +observe.storage.useServerStorage.description= observe.synchro.add.object= observe.synchro.common.activity= +observe.synchro.common.exist= observe.synchro.common.latitude= observe.synchro.common.longitude= +observe.synchro.common.maree= +observe.synchro.common.program= observe.synchro.common.quadrant= observe.synchro.common.reference= observe.synchro.common.select= +observe.synchro.common.selected= observe.synchro.common.vitesse= observe.synchro.config.data.mode= observe.synchro.config.data.storage= @@ -2030,67 +2052,67 @@ observe.targetSample.table.speciesThon= observe.targetSample.table.speciesThon.tip= observe.targetSample.table.totalWeight= observe.targetSample.table.totalWeight.tip= -observe.tdr.action.create= -observe.tdr.action.create.tip= -observe.tdr.action.reset.dataLocation.tip= -observe.tdr.action.reset.homeId.tip= -observe.tdr.action.reset.serialNo.tip= -observe.tdr.availableSpecies= -observe.tdr.basket= -observe.tdr.branchline= -observe.tdr.data= -observe.tdr.dataLocation= -observe.tdr.dataLocation.tip= -observe.tdr.delete.data.message= -observe.tdr.deleteData= -observe.tdr.deleteData.tip= -observe.tdr.deployementEnd= -observe.tdr.deployementStart= +observe.tdr.action.create=Insert this recorder +observe.tdr.action.create.tip=Insert this recorder +observe.tdr.action.reset.dataLocation.tip=Reset data location +observe.tdr.action.reset.homeId.tip=Reset homeId +observe.tdr.action.reset.serialNo.tip=Reset serail no +observe.tdr.availableSpecies=Available species +observe.tdr.basket=Basket +observe.tdr.branchline=Branchline +observe.tdr.data=Data +observe.tdr.dataLocation=Data location +observe.tdr.dataLocation.tip=Data location +observe.tdr.delete.data.message=Confirm to delete saved data +observe.tdr.deleteData=Delete +observe.tdr.deleteData.tip=Delete data +observe.tdr.deployementEnd=Deployement end +observe.tdr.deployementStart=Deployement start observe.tdr.enableTimestamp= observe.tdr.enableTimestamp.tip= -observe.tdr.exportData= -observe.tdr.exportData.tip= -observe.tdr.fishingEnd= -observe.tdr.fishingEndDepth= -observe.tdr.fishingStart= -observe.tdr.fishingStartDepth= -observe.tdr.floatline1Length= -observe.tdr.floatline2Length= -observe.tdr.homeId= -observe.tdr.importData= -observe.tdr.importData.tip= -observe.tdr.itemHorizontalPosition= -observe.tdr.itemVerticalPosition= -observe.tdr.locationOnLongline= -observe.tdr.maxFishingDepth= -observe.tdr.meanDeployementDepth= -observe.tdr.meanFishingDepth= -observe.tdr.medianDeployementDepth= -observe.tdr.medianFishingDepth= -observe.tdr.message.data.imported= -observe.tdr.minFishingDepth= -observe.tdr.section= -observe.tdr.selectedSpecies= -observe.tdr.sensorBrand= -observe.tdr.serialNo= -observe.tdr.species= -observe.tdr.tab.caracteristics= -observe.tdr.tab.keyData= +observe.tdr.exportData=Export +observe.tdr.exportData.tip=Export data +observe.tdr.fishingEnd=Fishing End +observe.tdr.fishingEndDepth=Depth at fishing end (m) +observe.tdr.fishingStart=Fishing start +observe.tdr.fishingStartDepth=Depth at fishing start (m) +observe.tdr.floatline1Length=Floatline 1 length (m) +observe.tdr.floatline2Length=Floatline 2 ength (m) +observe.tdr.homeId=Home id +observe.tdr.importData=Import +observe.tdr.importData.tip=Import data +observe.tdr.itemHorizontalPosition=Element position on main line +observe.tdr.itemVerticalPosition=Element position on branchline +observe.tdr.locationOnLongline=Location on longline +observe.tdr.maxFishingDepth=Maximum fishing depth (m) +observe.tdr.meanDeployementDepth=Mean deployement depth (m) +observe.tdr.meanFishingDepth=Maximum fishing depth (m) +observe.tdr.medianDeployementDepth=Median deployement depth (m) +observe.tdr.medianFishingDepth=Median fishing depth (m) +observe.tdr.message.data.imported=Data file (%s) was imported. +observe.tdr.minFishingDepth=Minimum fishing depth (m) +observe.tdr.section=Section +observe.tdr.selectedSpecies=Selected species +observe.tdr.sensorBrand=Brand +observe.tdr.serialNo=Serial No +observe.tdr.species=Species +observe.tdr.tab.caracteristics=Caracteristics +observe.tdr.tab.keyData=Data keys observe.tdr.tab.localisation= -observe.tdr.tab.species= -observe.tdr.tab.timestamp= -observe.tdr.table.data= -observe.tdr.table.homeId= -observe.tdr.table.homeId.tip= -observe.tdr.table.sensorBrand= -observe.tdr.table.sensorBrand.tip= -observe.tdr.table.serialNo= -observe.tdr.table.serialNo.tip= -observe.tdr.title= -observe.title.about= -observe.title.can.not.delete.referentiel= +observe.tdr.tab.species=Associated species +observe.tdr.tab.timestamp=Timestamps +observe.tdr.table.data=Data +observe.tdr.table.homeId=Home id +observe.tdr.table.homeId.tip=Home id +observe.tdr.table.sensorBrand=Brand +observe.tdr.table.sensorBrand.tip=Brand +observe.tdr.table.serialNo=Serial no +observe.tdr.table.serialNo.tip=Serial no +observe.tdr.title=Depth recorders +observe.title.about=About +observe.title.can.not.delete.referentiel=Impossible to delete a referentiel data... observe.title.can.not.export.obstuna= -observe.title.change.storage= +observe.title.change.storage=Change storage observe.title.choose.db.dump= observe.title.choose.db.dump.directory= observe.title.choose.importGPS= @@ -2167,153 +2189,153 @@ observe.title.content.vesselx= observe.title.content.weightCategory= observe.title.content.weightMeasureTypes= observe.title.content.windSpeeds= -observe.title.create.local.db= -observe.title.delete= -observe.title.error.dialog= -observe.title.exportData= -observe.title.exportData.tip= +observe.title.create.local.db=Loading local database +observe.title.delete=Confirm a delete +observe.title.error.dialog=An error occurs\! +observe.title.exportData=Export datas +observe.title.exportData.tip=Export datas to Obstuna observe.title.h2.server.parameters= -observe.title.import.localDB= -observe.title.importGPS= -observe.title.importGPS.tip= -observe.title.load.remote.db= -observe.title.need.confirm= -observe.title.need.confirm.to.desactivate.referentiel= -observe.title.no.local.db.found= -observe.title.report= -observe.title.report.tip= -observe.title.save.localDB= -observe.title.save.remoteDB= -observe.title.show.usage= +observe.title.import.localDB=Import a local database from a backup +observe.title.importGPS=GPS Import +observe.title.importGPS.tip=Import a GPS file +observe.title.load.remote.db=Load remote database +observe.title.need.confirm=Need a confirmation... +observe.title.need.confirm.to.desactivate.referentiel=Need a confirmation to disable a referentiel data... +observe.title.no.local.db.found=No local database found. +observe.title.report=Help to generat reports +observe.title.report.tip=Help to generate reports +observe.title.save.localDB=Save local storage to a file +observe.title.save.remoteDB=Save remote database to a file +observe.title.show.usage=Show usages observe.title.speciesList.not.found= -observe.title.storage.info= -observe.title.synchronize= -observe.title.synchronize.tip= -observe.title.technical.informations= -observe.title.unique.key= -observe.title.validate= -observe.title.validate.tip= -observe.title.welcome.admin= -observe.tree.activityLongline= -observe.tree.activityLongline.unsaved= -observe.tree.activitySeine= -observe.tree.activitySeine.unsaved= -observe.tree.baitHaulingStatus= -observe.tree.baitSettingStatus= -observe.tree.baitType= -observe.tree.catchFateLongline= -observe.tree.catchLongline= -observe.tree.country= -observe.tree.detectionMode= -observe.tree.encounter= +observe.title.storage.info=Storage details +observe.title.synchronize=Synchronize +observe.title.synchronize.tip=Synchronize objectOperation on local database +observe.title.technical.informations=Technical information of %1$s +observe.title.unique.key=Unique keys used in a referentiel +observe.title.validate=Validate datas +observe.title.validate.tip=Validate datas of a storage +observe.title.welcome.admin=Observe Admin +observe.tree.activityLongline=Activity +observe.tree.activityLongline.unsaved=New activity +observe.tree.activitySeine=Activity +observe.tree.activitySeine.unsaved=New activity +observe.tree.baitHaulingStatus=Bait hauling status +observe.tree.baitSettingStatus=Bait setting status +observe.tree.baitType=Bait type +observe.tree.catchFateLongline=Catch fate +observe.tree.catchLongline=Catches +observe.tree.country=Country +observe.tree.detectionMode=Detection mode +observe.tree.encounter=Encounter observe.tree.encounterType= -observe.tree.floatingObject.unsaved= -observe.tree.fpaZone= -observe.tree.gear= -observe.tree.gearCaracteristic= -observe.tree.gearCaracteristicType= +observe.tree.floatingObject.unsaved=New DCP +observe.tree.fpaZone=Fpa zone +observe.tree.gear=Gear +observe.tree.gearCaracteristic=Gear caracteristic +observe.tree.gearCaracteristicType=Gear caracteristic type observe.tree.gearUseFeaturesLongline= -observe.tree.gearUseFeaturesSeine= -observe.tree.harbour= -observe.tree.healthness= -observe.tree.hookPosition= -observe.tree.hookSize= -observe.tree.hookType= -observe.tree.itemHorizontalPosition= -observe.tree.itemVerticalPosition= -observe.tree.lengthWeightParameter= -observe.tree.lightsticksColor= -observe.tree.lightsticksType= -observe.tree.lineType= -observe.tree.longlineDetailComposition= -observe.tree.longlineGlobalComposition= -observe.tree.maturityStatus= -observe.tree.mitigationType= -observe.tree.nonTargetCatch= -observe.tree.nonTargetSample= -observe.tree.objectFate= -observe.tree.objectObservedSpecies= -observe.tree.objectOperation= -observe.tree.objectSchoolEstimate= -observe.tree.objectType= -observe.tree.observedSystem= -observe.tree.ocean= -observe.tree.organism= -observe.tree.person= -observe.tree.program= -observe.tree.reasonForDiscard= -observe.tree.reasonForNoFishing= -observe.tree.reasonForNullSet= -observe.tree.reference.common= -observe.tree.reference.longline= -observe.tree.reference.seine= -observe.tree.route= -observe.tree.route.unsaved= -observe.tree.schoolEstimate= -observe.tree.sensorBrand= -observe.tree.sensorDataFormat= -observe.tree.sensorType= -observe.tree.sensorUsed= +observe.tree.gearUseFeaturesSeine=GearUseFeaturesSeine +observe.tree.harbour=Harbour +observe.tree.healthness=Healthness +observe.tree.hookPosition=Hook position +observe.tree.hookSize=Hook size +observe.tree.hookType=Hook type +observe.tree.itemHorizontalPosition=Item horizontal position +observe.tree.itemVerticalPosition=Item vertical position +observe.tree.lengthWeightParameter=Length-weight relationship +observe.tree.lightsticksColor=Lightsticks color +observe.tree.lightsticksType=Lightsticks type +observe.tree.lineType=Line type +observe.tree.longlineDetailComposition=Detailed composition +observe.tree.longlineGlobalComposition=Global composition +observe.tree.maturityStatus=Maturity status +observe.tree.mitigationType=Mitigation type +observe.tree.nonTargetCatch=Non target catch +observe.tree.nonTargetSample=Non target sample +observe.tree.objectFate=ObjectFate +observe.tree.objectObservedSpecies=Object observed species +observe.tree.objectOperation=Object operation +observe.tree.objectSchoolEstimate=Object school estimate +observe.tree.objectType=Object type +observe.tree.observedSystem=Observed system +observe.tree.ocean=Ocean +observe.tree.organism=Organisme +observe.tree.person=Person +observe.tree.program=Program +observe.tree.reasonForDiscard=Reason for discard +observe.tree.reasonForNoFishing=Reason for no fishing +observe.tree.reasonForNullSet=Reason for null set +observe.tree.reference.common=Common Referential +observe.tree.reference.longline=Longline Referential +observe.tree.reference.seine=Seine Referential +observe.tree.route=Road +observe.tree.route.unsaved=New route +observe.tree.schoolEstimate=School estimate +observe.tree.sensorBrand=Sensor brand +observe.tree.sensorDataFormat=Sensor data format +observe.tree.sensorType=Sensor type +observe.tree.sensorUsed=Sensor used observe.tree.setLongline= -observe.tree.setLongline.unsaved= +observe.tree.setLongline.unsaved=New fishing operation observe.tree.setSeine= -observe.tree.setSeine.unsaved= -observe.tree.settingShape= -observe.tree.sex= -observe.tree.sizeMeasureType= -observe.tree.species= -observe.tree.speciesFate= -observe.tree.speciesGroup= -observe.tree.speciesList= -observe.tree.speciesStatus= -observe.tree.stomacFullness= -observe.tree.surroundingActivity= -observe.tree.targetCatch= -observe.tree.targetDiscarded= -observe.tree.targetSample= -observe.tree.targetSampleCapture= -observe.tree.tdr= -observe.tree.transmittingBuoyOperation= -observe.tree.transmittingBuoyType= -observe.tree.tripLongline.unsaved= -observe.tree.tripSeine.unsaved= -observe.tree.tripType= -observe.tree.vessel= -observe.tree.vesselActivityLongline= -observe.tree.vesselActivitySeine= -observe.tree.vesselSizeCategory= -observe.tree.vesselType= -observe.tree.weightCategory= -observe.tree.weightMeasureType= -observe.tree.wind= -observe.tripLongline.captain= -observe.tripLongline.dataEntryOperator= -observe.tripLongline.endDate= -observe.tripLongline.homeId= -observe.tripLongline.message.active.found= -observe.tripLongline.message.active.found.for.other.program= -observe.tripLongline.message.creating= -observe.tripLongline.message.no.active.found= -observe.tripLongline.message.not.open= -observe.tripLongline.message.updating= -observe.tripLongline.observer= -observe.tripLongline.ocean= -observe.tripLongline.startDate= +observe.tree.setSeine.unsaved=New set +observe.tree.settingShape=Setting shape +observe.tree.sex=Sex +observe.tree.sizeMeasureType=Size measure type +observe.tree.species=Species +observe.tree.speciesFate=Species fate +observe.tree.speciesGroup=Species group +observe.tree.speciesList=Species list +observe.tree.speciesStatus=Species status +observe.tree.stomacFullness=Stomac fullness +observe.tree.surroundingActivity=Surrounding activity +observe.tree.targetCatch=Target catch +observe.tree.targetDiscarded=Target discarded +observe.tree.targetSample=Target sample +observe.tree.targetSampleCapture=Target sample capture +observe.tree.tdr=TDR +observe.tree.transmittingBuoyOperation=Transmitting buoy operation +observe.tree.transmittingBuoyType=Transmitting buoy type +observe.tree.tripLongline.unsaved=New trip +observe.tree.tripSeine.unsaved=New trip +observe.tree.tripType=Trip type +observe.tree.vessel=Boat +observe.tree.vesselActivityLongline=Boat activity +observe.tree.vesselActivitySeine=Boat Activity +observe.tree.vesselSizeCategory=Boat size category +observe.tree.vesselType=Boat type +observe.tree.weightCategory=Weight category +observe.tree.weightMeasureType=Weight measure type +observe.tree.wind=Wind +observe.tripLongline.captain=Capitain +observe.tripLongline.dataEntryOperator=Data entry operator +observe.tripLongline.endDate=End date +observe.tripLongline.homeId=Home id +observe.tripLongline.message.active.found=A trip is opened. +observe.tripLongline.message.active.found.for.other.program=A trip is opened in another program. +observe.tripLongline.message.creating=Creating a trip +observe.tripLongline.message.no.active.found=No opened trip found, you can create a new one or open an existing one. +observe.tripLongline.message.not.open=Current trip is not opened, no edit possible. +observe.tripLongline.message.updating=Updating a trip +observe.tripLongline.observer=Observer +observe.tripLongline.ocean=Ocean +observe.tripLongline.startDate=Start date observe.tripLongline.tab.general= observe.tripLongline.tab.map= -observe.tripLongline.title= -observe.tripLongline.totalFishingOperationsNumber= -observe.tripLongline.tripType= -observe.tripLongline.vessel= -observe.tripSeine.message.active.found= -observe.tripSeine.message.active.found.for.other.program= -observe.tripSeine.message.creating= -observe.tripSeine.message.no.active.found= -observe.tripSeine.message.not.open= -observe.tripSeine.message.updating= -observe.tripSeine.tab.general= -observe.tripSeine.tab.map= -observe.tripSeine.title= +observe.tripLongline.title=Trip +observe.tripLongline.totalFishingOperationsNumber=Total fishing operation count +observe.tripLongline.tripType=Trip type +observe.tripLongline.vessel=Vessel +observe.tripSeine.message.active.found=A trip is opened. +observe.tripSeine.message.active.found.for.other.program=A trip is opened in another program. +observe.tripSeine.message.creating=Creating a trip +observe.tripSeine.message.no.active.found=No opened trip found, you can create a new one or open an existing one. +observe.tripSeine.message.not.open=Current trip is not opened, no edit possible. +observe.tripSeine.message.updating=Updating a trip +observe.tripSeine.tab.general=Caracteristics +observe.tripSeine.tab.map=Map +observe.tripSeine.title=Trip observe.validation.model.type.all= observe.validation.model.type.all.description= observe.validation.model.type.data= @@ -2325,11 +2347,12 @@ observe.validation.report.entities.with.messages= observe.validation.report.entity= observe.validation.report.scopes= observe.validation.report.title= -observe.vessel.tab.general= -observe.vessel.tab.other= -observe.view.message= -observe.view.navigation= +observe.vessel.tab.general=General caracteristics +observe.vessel.tab.other=Other caracteristics +observe.view.message=Messages +observe.view.navigation=Navigation observe.view.server= -observe.warning.nimbus.landf= -observe.warning.no.ui= +observe.warning.nimbus.landf=Could not use Look and Fell Nimbus, need at least version 1.6u10 of java. +observe.warning.no.ui=No gui environment found +observeweb.configuration.description= ui.main.body.synchro.action.copy.to.clipBoard= 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 eeccb53..14f800b 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 @@ -1,9 +1,9 @@ nuitonutil.error.convertor.noValue= nuitonutil.error.float.convertor= nuitonutil.error.no.convertor= -observe.about.message= -observe.about.translate.content= -observe.about.translate.title= +observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Aplicación de adquisición Application de datos de observadores y de consulta de estos datos desde una base <i>Obstuna</i>.</p> <p>Este projecto se ha iniciado en 2009 por la unidad US 007-OSIRIS del <a href\="http\://www.ird.fr">IRD</a> dentro del marco de <a href\="http\://ww [...] +observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliore [...] +observe.about.translate.title=Traducir ObServe observe.action.HookSize.create.tip= observe.action.HookSize.delete.tip= observe.action.HookSize.detail.tip= @@ -14,21 +14,21 @@ observe.action.HookType.delete.tip= observe.action.HookType.detail.tip= observe.action.HookType.modify.tip= observe.action.HookType.save.tip= -observe.action.about= -observe.action.about.tip= -observe.action.add.floatingObject= -observe.action.add.floatingObject.tip= -observe.action.add.set= -observe.action.add.set.tip= -observe.action.add.setLongline= -observe.action.add.setLongline.tip= -observe.action.admin.cancel= -observe.action.admin.close= -observe.action.apply= -observe.action.auto.copy.to.clipboard= -observe.action.auto.copy.to.clipboard.tip= -observe.action.back.to.list= -observe.action.back.to.list.tip= +observe.action.about=A cerca de +observe.action.about.tip=A cerca de ObServe... +observe.action.add.floatingObject=Añadir un DCP +observe.action.add.floatingObject.tip=Añadir un objeto flotante a la actividad +observe.action.add.set=Añadir un lance +observe.action.add.set.tip=Añadir el lance de la actividad +observe.action.add.setLongline=Añadir la operación de pesca +observe.action.add.setLongline.tip=Añadir la operación de pesca asociada a esta actividad +observe.action.admin.cancel=Anular el asintente +observe.action.admin.close=Cerrar el asistente +observe.action.apply=Aplicar +observe.action.auto.copy.to.clipboard=Copia automatica al portapapeles +observe.action.auto.copy.to.clipboard.tip=Puesta a punto automáticamente el contenido del portapapeles con los resultados +observe.action.back.to.list=Volver a la lista +observe.action.back.to.list.tip=Volver a la lista de datos observe.action.baitHaulingStatus.create.tip= observe.action.baitHaulingStatus.delete.tip= observe.action.baitHaulingStatus.detail.tip= @@ -44,121 +44,121 @@ observe.action.baitType.delete.tip= observe.action.baitType.detail.tip= observe.action.baitType.modify.tip= observe.action.baitType.save.tip= -observe.action.cancel= -observe.action.cancel.create.tip= +observe.action.cancel=Cancelar +observe.action.cancel.create.tip=Cancelar la creación del objeto observe.action.catchFateLongline.create.tip= observe.action.catchFateLongline.delete.tip= observe.action.catchFateLongline.detail.tip= observe.action.catchFateLongline.modify.tip= observe.action.catchFateLongline.save.tip= -observe.action.change.storage= -observe.action.change.storage.tip= -observe.action.choose.db.dump= -observe.action.choose.db.dump.description= -observe.action.choose.db.dump.directory= -observe.action.choose.importGPS= -observe.action.choose.importGPS.description= -observe.action.choose.report.directory= -observe.action.choose.reportFile= -observe.action.choose.reportFile.description= +observe.action.change.storage=Cambiar el origen de datos +observe.action.change.storage.tip=Para cambiar el origen de datos de la aplicación +observe.action.choose.db.dump=Elegir la copia de seguridad +observe.action.choose.db.dump.description=Copia de seguridad de la base (*.sql.gz) +observe.action.choose.db.dump.directory=Elegir el directorio de la copia de seguridad +observe.action.choose.importGPS=Usar este archivo +observe.action.choose.importGPS.description=Archivo GPS (*.gpx) +observe.action.choose.report.directory=Elegir el directorio de los informes +observe.action.choose.reportFile=Elegir el archivo de definición de informe +observe.action.choose.reportFile.description=Archivo de definición (*.properties) observe.action.choose.sensorUsed.exportData= observe.action.choose.sensorUsed.importData= observe.action.choose.tdr.exportData= observe.action.choose.tdr.importData= -observe.action.close= -observe.action.close.activity.tip= -observe.action.close.maree.tip= -observe.action.close.open= -observe.action.close.open.tip= -observe.action.close.route.tip= -observe.action.close.storage= -observe.action.close.storage.tip= -observe.action.close.synchro.tip= -observe.action.closeAndCreate= -observe.action.closeAndCreate.activity= -observe.action.closeAndCreate.activity.tip= -observe.action.closeAndCreate.maree= -observe.action.closeAndCreate.maree.tip= -observe.action.closeAndCreate.route= -observe.action.closeAndCreate.route.tip= +observe.action.close=Cerrar +observe.action.close.activity.tip=Cierre de la actividad abierta +observe.action.close.maree.tip=Cierre de la marea abierta +observe.action.close.open=Cierre +observe.action.close.open.tip=Cierre de los datos abiertos +observe.action.close.route.tip=Cierre de la ruta abierta +observe.action.close.storage=Cerrar el origen de datos +observe.action.close.storage.tip=Cerrar el origen de datos usado actualmente +observe.action.close.synchro.tip=Cerrar la ventana +observe.action.closeAndCreate=Cerrar y crear +observe.action.closeAndCreate.activity=Actividad siguiente +observe.action.closeAndCreate.activity.tip=Cierre de la actividad actual y creación de una nueva +observe.action.closeAndCreate.maree=Marea siguiente +observe.action.closeAndCreate.maree.tip=Cierre de la marea actual y creación de una nueva +observe.action.closeAndCreate.route=Ruta siguiente +observe.action.closeAndCreate.route.tip=Cierre de la ruta actual y creación de una nueva observe.action.closeAndCreate.tip= -observe.action.commandline.configure.ui= +observe.action.commandline.configure.ui=Configurara la aplicación observe.action.commandline.create.id= -observe.action.commandline.disable.main.ui= -observe.action.commandline.help= -observe.action.commandline.help.ui= -observe.action.commandline.launch.admin.ui= -observe.action.commandline.launch.h2.server.mode= -observe.action.commandline.launch.obstuna.admin.ui= -observe.action.commandline.use.jmx= -observe.action.configuration= -observe.action.configuration.tip= -observe.action.configure= -observe.action.continue= -observe.action.copy= -observe.action.copy.column.headers= -observe.action.copy.column.headers.tip= -observe.action.copy.row.headers= -observe.action.copy.row.headers.tip= -observe.action.country.create.tip= -observe.action.country.delete.tip= -observe.action.country.detail.tip= -observe.action.country.modify.tip= -observe.action.country.save.tip= -observe.action.create= -observe.action.create.activity= -observe.action.create.activity.tip= -observe.action.create.entry.tip= +observe.action.commandline.disable.main.ui=No ejecutar la interfaz grafica +observe.action.commandline.help=Mostrar la ayuda +observe.action.commandline.help.ui=Mostrar el manual de usuario (modo grafico) +observe.action.commandline.launch.admin.ui=Ejecutar una operación de administración +observe.action.commandline.launch.h2.server.mode=Ejecutar ObServe en modo servidor +observe.action.commandline.launch.obstuna.admin.ui=Ejecutar una operación de administración sobre Obstuna +observe.action.commandline.use.jmx=Mostrar el soporte JMX +observe.action.configuration=Configuración +observe.action.configuration.tip=Modificar la configuración +observe.action.configure=Configurar +observe.action.continue=Continuar +observe.action.copy=Copiar en el portapeles +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.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 +observe.action.country.modify.tip=Modificar el país seleccionado +observe.action.country.save.tip=Guardar las modificaciones del país +observe.action.create=Crear +observe.action.create.activity=Crear una nueva actividad +observe.action.create.activity.tip=Crear una nueva actividad para la ruta actual +observe.action.create.entry.tip=Crear una nueva entrada observe.action.create.gearUseFeaturesLongline= observe.action.create.gearUseFeaturesLongline.tip= observe.action.create.gearUseFeaturesSeine= observe.action.create.gearUseFeaturesSeine.tip= -observe.action.create.maree= -observe.action.create.maree.tip= -observe.action.create.nonTargetCatch= -observe.action.create.nonTargetCatch.tip= -observe.action.create.nonTargetSample= -observe.action.create.nonTargetSample.tip= +observe.action.create.maree=Crear nueva marea +observe.action.create.maree.tip=Crear nueva marea para el programa actual +observe.action.create.nonTargetCatch=Insertar esta especie/peso/objectFate +observe.action.create.nonTargetCatch.tip=Insertar esta especie/peso/objectFate +observe.action.create.nonTargetSample=Insertar este muestreo +observe.action.create.nonTargetSample.tip=Insertar muestreo de fauna asociada observe.action.create.objectObservedSpecies= -observe.action.create.objectObservedSpecies.tip= -observe.action.create.route= -observe.action.create.route.tip= -observe.action.create.schoolEstimate= -observe.action.create.schoolEstimate.tip= -observe.action.create.targetCatch= -observe.action.create.targetCatch.tip= -observe.action.create.targetDiscarded= -observe.action.create.targetDiscarded.tip= -observe.action.create.targetSample= -observe.action.create.targetSample.tip= -observe.action.create.targetSampleCapture= -observe.action.create.targetSampleCapture.tip= -observe.action.db.locale.es.tip= -observe.action.db.locale.fr.tip= -observe.action.db.locale.uk.tip= -observe.action.delete= -observe.action.delete.activity.tip= -observe.action.delete.entry.tip= -observe.action.delete.floatingObject.tip= -observe.action.delete.maree.tip= -observe.action.delete.route.tip= -observe.action.delete.set.tip= -observe.action.delete.tip= -observe.action.detail= -observe.action.detectionMode.create.tip= -observe.action.detectionMode.delete.tip= -observe.action.detectionMode.detail.tip= -observe.action.detectionMode.modify.tip= -observe.action.detectionMode.save.tip= -observe.action.do.backup= -observe.action.do.backup.tip= +observe.action.create.objectObservedSpecies.tip=Insertar la especie de fauna observada +observe.action.create.route=Crear una nueva ruta +observe.action.create.route.tip=Crear nueva ruta para la marea actual +observe.action.create.schoolEstimate=Insertar estimación +observe.action.create.schoolEstimate.tip=Insertar la nueva estimación en la tabla +observe.action.create.targetCatch=Insertar esta captura/categoria +observe.action.create.targetCatch.tip=Insertar esta captura/categoria +observe.action.create.targetDiscarded=Insertar descarte/categoría/razón +observe.action.create.targetDiscarded.tip=Insertar descarte/categoría/razón +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.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 +observe.action.delete=Eliminar +observe.action.delete.activity.tip=Eliminar la actividad +observe.action.delete.entry.tip=Cancelar la edición de la entrada actual +observe.action.delete.floatingObject.tip=Eliminar el objeto flotante actual +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.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 +observe.action.detectionMode.detail.tip=Ver los detalles del modo de detección seleccionado +observe.action.detectionMode.modify.tip=Modificar el modo de detección seleccionado +observe.action.detectionMode.save.tip=Guardar las modificaciones del modo de detección +observe.action.do.backup=Guardar la base local +observe.action.do.backup.tip=Hacer copia de seguridad de la base local antes de aplicar los cambios observe.action.encounterType.create.tip= observe.action.encounterType.delete.tip= observe.action.encounterType.detail.tip= observe.action.encounterType.modify.tip= observe.action.encounterType.save.tip= -observe.action.exit= -observe.action.exit.tip= +observe.action.exit=Salir +observe.action.exit.tip=Salir de ObServe observe.action.fpaZone.create.tip= observe.action.fpaZone.delete.tip= observe.action.fpaZone.detail.tip= @@ -179,41 +179,41 @@ observe.action.gearCaracteristicType.delete.tip= observe.action.gearCaracteristicType.detail.tip= observe.action.gearCaracteristicType.modify.tip= observe.action.gearCaracteristicType.save.tip= -observe.action.goDown= -observe.action.goDown.tip= -observe.action.goUp= -observe.action.goUp.tip= -observe.action.goto.next.stage= -observe.action.goto.next.stage.tip= -observe.action.goto.open.activity= -observe.action.goto.open.activity.short= -observe.action.goto.open.activity.tip= -observe.action.goto.open.maree= -observe.action.goto.open.other.activity= -observe.action.goto.open.other.activity.tip= -observe.action.goto.open.other.maree= -observe.action.goto.open.other.maree.tip= -observe.action.goto.open.other.route= -observe.action.goto.open.other.route.tip= -observe.action.goto.open.program.short= -observe.action.goto.open.program.tip= -observe.action.goto.open.route= -observe.action.goto.open.route.short= -observe.action.goto.open.route.tip= -observe.action.goto.open.set.short= -observe.action.goto.open.set.tip= -observe.action.goto.open.trip.short= -observe.action.goto.open.trip.tip= -observe.action.goto.previous.stage= -observe.action.goto.previous.stage.tip= -observe.action.goto.referentiel.short= -observe.action.goto.referentiel.tip= -observe.action.goto.selected.activity= -observe.action.goto.selected.activity.tip= -observe.action.goto.selected.maree= -observe.action.goto.selected.maree.tip= -observe.action.goto.selected.route= -observe.action.goto.selected.route.tip= +observe.action.goDown=Descender hacia ... +observe.action.goDown.tip=Descender hacia etapas porteriores +observe.action.goUp=Ascender hacia... +observe.action.goUp.tip=Ascender hacia etapas anteriores +observe.action.goto.next.stage=Siguiente +observe.action.goto.next.stage.tip=Etapa siguiente +observe.action.goto.open.activity=Acceder a la actividad abierta +observe.action.goto.open.activity.short=Actividad abierta +observe.action.goto.open.activity.tip=Acceder a la actividad abierta +observe.action.goto.open.maree=Acceder a la marea abierta +observe.action.goto.open.other.activity=Acceder a la actividad abierta en otra ruta +observe.action.goto.open.other.activity.tip=Accder a la actividad abierta (en otra ruta) +observe.action.goto.open.other.maree=Acceder a la marea abierta en otro programa +observe.action.goto.open.other.maree.tip=Acceder a la marea abierta (en otro programa) +observe.action.goto.open.other.route=Acceder a la ruta abierta en otra marea +observe.action.goto.open.other.route.tip=Acceder a la route abierta (en otre marea) +observe.action.goto.open.program.short=Programa abierto +observe.action.goto.open.program.tip=Acceder al programa abierto +observe.action.goto.open.route=Acceder a la route abierta +observe.action.goto.open.route.short=Ruta abierta +observe.action.goto.open.route.tip=Acceder a la ruta abierta +observe.action.goto.open.set.short=Lance abierto +observe.action.goto.open.set.tip=Acceder al lance abierto +observe.action.goto.open.trip.short=Marea abierta +observe.action.goto.open.trip.tip=Acceder a la marea abierta +observe.action.goto.previous.stage=Anterior +observe.action.goto.previous.stage.tip=Acceder a la etapa anterior +observe.action.goto.referentiel.short=Referencial +observe.action.goto.referentiel.tip=Acceder al referencial +observe.action.goto.selected.activity=Acceder a la actividad +observe.action.goto.selected.activity.tip=Acceder a la actividad seleccionada +observe.action.goto.selected.maree=Acceder a la marea +observe.action.goto.selected.maree.tip=Acceder a la marea seleccionada +observe.action.goto.selected.route=Acceder a la ruta +observe.action.goto.selected.route.tip=Acceder a la ruta seleccionada observe.action.harbour.create.tip= observe.action.harbour.delete.tip= observe.action.harbour.detail.tip= @@ -239,8 +239,8 @@ observe.action.hookType.delete.tip= observe.action.hookType.detail.tip= observe.action.hookType.modify.tip= observe.action.hookType.save.tip= -observe.action.info.storage= -observe.action.info.storage.tip= +observe.action.info.storage=Información del origen de datos +observe.action.info.storage.tip=Ver las informaciones del origen de datos actualmente usado observe.action.itemHorizontalPosition.create.tip= observe.action.itemHorizontalPosition.delete.tip= observe.action.itemHorizontalPosition.detail.tip= @@ -251,11 +251,11 @@ observe.action.itemVerticalPosition.delete.tip= observe.action.itemVerticalPosition.detail.tip= observe.action.itemVerticalPosition.modify.tip= observe.action.itemVerticalPosition.save.tip= -observe.action.lengthWeightParameter.create.tip= -observe.action.lengthWeightParameter.delete.tip= -observe.action.lengthWeightParameter.detail.tip= -observe.action.lengthWeightParameter.modify.tip= -observe.action.lengthWeightParameter.save.tip= +observe.action.lengthWeightParameter.create.tip=Crear un nuevo valor de talla-peso +observe.action.lengthWeightParameter.delete.tip=Eliminar el valor de talla-peso seleccionado +observe.action.lengthWeightParameter.detail.tip=Ver los detalles de los valores talla-peso +observe.action.lengthWeightParameter.modify.tip=Modificar los valores talla-peso +observe.action.lengthWeightParameter.save.tip=Guardar las modificaciones de los valores talla-peso observe.action.lightsticksColor.create.tip= observe.action.lightsticksColor.delete.tip= observe.action.lightsticksColor.detail.tip= @@ -271,14 +271,14 @@ observe.action.lineType.delete.tip= observe.action.lineType.detail.tip= observe.action.lineType.modify.tip= observe.action.lineType.save.tip= -observe.action.load.from.file= -observe.action.load.from.file.tip= -observe.action.locale.es= -observe.action.locale.es.tip= -observe.action.locale.fr= -observe.action.locale.fr.tip= -observe.action.locale.uk= -observe.action.locale.uk.tip= +observe.action.load.from.file=Importar una copia de seguridad +observe.action.load.from.file.tip=Cargar una base local desde una copia de seguridad +observe.action.locale.es=Español +observe.action.locale.es.tip=Cambiar el idioma de la applicación al español +observe.action.locale.fr=Francés +observe.action.locale.fr.tip=Cambiar el idioma de la applicación al francés +observe.action.locale.uk=Inglés +observe.action.locale.uk.tip=Cambiar el idioma de la applicación al inglés observe.action.maturityStatus.create.tip= observe.action.maturityStatus.delete.tip= observe.action.maturityStatus.detail.tip= @@ -289,108 +289,108 @@ observe.action.mitigationType.delete.tip= observe.action.mitigationType.detail.tip= observe.action.mitigationType.modify.tip= observe.action.mitigationType.save.tip= -observe.action.modify= -observe.action.new.entry= -observe.action.new.entry.tip= -observe.action.objectFate.create.tip= -observe.action.objectFate.delete.tip= -observe.action.objectFate.detail.tip= -observe.action.objectFate.modify.tip= -observe.action.objectFate.save.tip= -observe.action.objectOperation.create.tip= -observe.action.objectOperation.delete.tip= -observe.action.objectOperation.detail.tip= -observe.action.objectOperation.modify.tip= -observe.action.objectOperation.save.tip= -observe.action.objectType.create.tip= -observe.action.objectType.delete.tip= -observe.action.objectType.detail.tip= -observe.action.objectType.modify.tip= -observe.action.objectType.save.tip= -observe.action.observedSystem.create.tip= -observe.action.observedSystem.delete.tip= -observe.action.observedSystem.detail.tip= -observe.action.observedSystem.modify.tip= -observe.action.observedSystem.save.tip= -observe.action.ocean.create.tip= -observe.action.ocean.delete.tip= -observe.action.ocean.detail.tip= -observe.action.ocean.modify.tip= -observe.action.ocean.save.tip= -observe.action.open.screen= -observe.action.openLink.formsUrl.tip= -observe.action.openLink.reportsUrl.tip= -observe.action.organism.create.tip= -observe.action.organism.delete.tip= -observe.action.organism.detail.tip= -observe.action.organism.modify.tip= -observe.action.organism.save.tip= -observe.action.person.create.tip= -observe.action.person.delete.tip= -observe.action.person.detail.tip= -observe.action.person.modify.tip= -observe.action.person.save.tip= -observe.action.program.create.tip= -observe.action.program.delete.tip= -observe.action.program.detail.tip= -observe.action.program.modify.tip= -observe.action.program.save.tip= -observe.action.quitHelp.tip= -observe.action.reasonForDiscard.create.tip= -observe.action.reasonForDiscard.delete.tip= -observe.action.reasonForDiscard.detail.tip= -observe.action.reasonForDiscard.modify.tip= -observe.action.reasonForDiscard.save.tip= -observe.action.reasonForNoFishing.create.tip= -observe.action.reasonForNoFishing.delete.tip= -observe.action.reasonForNoFishing.detail.tip= -observe.action.reasonForNoFishing.modify.tip= -observe.action.reasonForNoFishing.save.tip= -observe.action.reasonForNullSet.create.tip= -observe.action.reasonForNullSet.delete.tip= -observe.action.reasonForNullSet.detail.tip= -observe.action.reasonForNullSet.modify.tip= -observe.action.reasonForNullSet.save.tip= -observe.action.reload.application= -observe.action.reload.storage= -observe.action.reload.storage.tip= -observe.action.reload.ui= -observe.action.reloadDefaultConfiguration= -observe.action.reloadDefaultConfiguration.tip= -observe.action.reloadResources= -observe.action.reloadResources.tip= -observe.action.reopen= -observe.action.reopen.activity.tip= -observe.action.reopen.maree.tip= -observe.action.reopen.route.tip= -observe.action.reopen.selected.activity= -observe.action.reopen.selected.activity.tip= -observe.action.reopen.selected.maree= -observe.action.reopen.selected.maree.tip= -observe.action.reopen.selected.route= -observe.action.reopen.selected.route.tip= -observe.action.reopen.tip= -observe.action.reset= -observe.action.reset.entry.tip= -observe.action.reset.ersId.tip= -observe.action.reset.formsUrl.tip= +observe.action.modify=Modificar +observe.action.new.entry=Nuevo +observe.action.new.entry.tip=Crear una nueva entrada +observe.action.objectFate.create.tip=Crear un nuevo devenir de objeto +observe.action.objectFate.delete.tip=Eliminar el devenir de objeto seleccionado +observe.action.objectFate.detail.tip=Ver detalles de devenir de objeto seleccionado +observe.action.objectFate.modify.tip=Modificar el devenir de objeto seleccionado +observe.action.objectFate.save.tip=Guardar modificaciones de devenir de objeto +observe.action.objectOperation.create.tip=Crear una nueva operación de objeto +observe.action.objectOperation.delete.tip=Eliminar la operación de objeto seleccionada +observe.action.objectOperation.detail.tip=Ver los detalles de la operación de objeto seleccionada +observe.action.objectOperation.modify.tip=Modificar la operación de objeto seleccionada +observe.action.objectOperation.save.tip=Guardar las modificaciones de la operación de objeto +observe.action.objectType.create.tip=Crera un nuevo tipo de objeto +observe.action.objectType.delete.tip=Eliminar el tipo de objeto seleccionado +observe.action.objectType.detail.tip=Ver los detalles del tipo de objeto seleccionado +observe.action.objectType.modify.tip=Modificar el tipo de objeto seleccionado +observe.action.objectType.save.tip=Guardar las modificaciones de tipo de objeto +observe.action.observedSystem.create.tip=Crear un nuevo sistema observado +observe.action.observedSystem.delete.tip=Eliminar el sistema observado seleccionado +observe.action.observedSystem.detail.tip=Ver los detalles del sistema observado seleccionado +observe.action.observedSystem.modify.tip=Modificar el sistema observado seleccionado +observe.action.observedSystem.save.tip=Guardar las modificaciones del sistema observado +observe.action.ocean.create.tip=Crear un nuevo océano +observe.action.ocean.delete.tip=Eliminar el océano seleccionado +observe.action.ocean.detail.tip=Ver los detalles del océano seleccionado +observe.action.ocean.modify.tip=Modificar el océano seleccionado +observe.action.ocean.save.tip=Guardar las modificaciones del océano +observe.action.open.screen=Abrir pantalla <%1$s> +observe.action.openLink.formsUrl.tip=Acceder a los formularios en un navegador web +observe.action.openLink.reportsUrl.tip=Acceder a los informes en un navegador web +observe.action.organism.create.tip=Crear un nuevo organismo +observe.action.organism.delete.tip=Eliminar el organismo seleccionado +observe.action.organism.detail.tip=Ver los detalles del organismo +observe.action.organism.modify.tip=Modificar el organismo seleccionado +observe.action.organism.save.tip=Guardar las modificaciones del organismo +observe.action.person.create.tip=Crear un nuevo observador +observe.action.person.delete.tip=Eliminar el observador seleccionado +observe.action.person.detail.tip=Ver los detalles del observador seleccionado +observe.action.person.modify.tip=Modificar el observador seleccionado +observe.action.person.save.tip=Guardar las modificaciones del observador +observe.action.program.create.tip=Crear un nuevo programa +observe.action.program.delete.tip=Eliminar el programa seleccionado +observe.action.program.detail.tip=Ver los detalles del programa seleccionado +observe.action.program.modify.tip=Modificar el programa seleccionado +observe.action.program.save.tip=Guardar las modificaciones del programa +observe.action.quitHelp.tip=Salir de la pantalla de ayuda +observe.action.reasonForDiscard.create.tip=Crear una nueva razón de descarte +observe.action.reasonForDiscard.delete.tip=Eliminar la razón de descarte seleccionada +observe.action.reasonForDiscard.detail.tip=Ver los detalles de la razón de descarte seleccionada +observe.action.reasonForDiscard.modify.tip=Modificar la razón de descarte seleccionada +observe.action.reasonForDiscard.save.tip=Guardar las modificaciones de la razón de descarte +observe.action.reasonForNoFishing.create.tip=Crear un nueva causa de non coup de senne +observe.action.reasonForNoFishing.delete.tip=Eliminar la causa del lance nulo seleccionado +observe.action.reasonForNoFishing.detail.tip=Ver los detalles de la cause del lance nulo seleccionado +observe.action.reasonForNoFishing.modify.tip=Modificar la cuasa del lance nulo seleccionado +observe.action.reasonForNoFishing.save.tip=Guardar las modificaciones +observe.action.reasonForNullSet.create.tip=Crear una nueva causa de lance nulo +observe.action.reasonForNullSet.delete.tip=Eliminar la causa de lance nulo seleccionada +observe.action.reasonForNullSet.detail.tip=Ver los detalles de la causa de lance nulo seleccionado +observe.action.reasonForNullSet.modify.tip=Modificar la causa de lance nulo seleccionado +observe.action.reasonForNullSet.save.tip=Guardar las modificaciones de la causa de lance nulo +observe.action.reload.application=Reinicializar la aplicación +observe.action.reload.storage=Recargar el origen de datos +observe.action.reload.storage.tip=Cerrar y reabrir el origen de datos +observe.action.reload.ui=Recargar la interfaz gráfica +observe.action.reloadDefaultConfiguration=Configuración por defecto +observe.action.reloadDefaultConfiguration.tip=Restablecer la configuración por defecto +observe.action.reloadResources=Recargar las traducciones +observe.action.reloadResources.tip=Recargar las traducciones i18n +observe.action.reopen=Reabrir +observe.action.reopen.activity.tip=Reabrir la actividad +observe.action.reopen.maree.tip=Reabrir la marea +observe.action.reopen.route.tip=Reabrir la ruta +observe.action.reopen.selected.activity=Reabrir la actividad +observe.action.reopen.selected.activity.tip=Reabrir la actividad seleccionada +observe.action.reopen.selected.maree=Reabrir la marea +observe.action.reopen.selected.maree.tip=Reabrir la marea seleccionada +observe.action.reopen.selected.route=Reabrir la ruta +observe.action.reopen.selected.route.tip=Reabrir la ruta seleccionada +observe.action.reopen.tip=Reabrir la base de datos +observe.action.reset=Cancelar +observe.action.reset.entry.tip=Cancelar la introducción de datos actual. +observe.action.reset.ersId.tip=Reiniciar Id ERS +observe.action.reset.formsUrl.tip=Reiniciar la URL de los formularios observe.action.reset.homeId.tip= -observe.action.reset.new.entry.tip= +observe.action.reset.new.entry.tip=Cancelar la creación de la entrada observe.action.reset.picturesReferences.tip= -observe.action.reset.reportsUrl.tip= +observe.action.reset.reportsUrl.tip=Reiniciar la URL de los informes observe.action.reset.supportVesselName.tip= -observe.action.reset.tip= +observe.action.reset.tip=Cancelar las modificaciones observe.action.reset.well.tip= -observe.action.restart.application= -observe.action.restart.application.tip= -observe.action.save= -observe.action.save.all.tip= -observe.action.save.entry.tip= -observe.action.save.tip= -observe.action.save.to.file= -observe.action.save.to.file.tip= -observe.action.selectNode= -observe.action.selectNode.tip= +observe.action.restart.application=Reiniciar +observe.action.restart.application.tip=Reiniciar la aplicación +observe.action.save=Grabar +observe.action.save.all.tip=Guardar todas las modificaciones +observe.action.save.entry.tip=Guardar la edición en curso - Sauver l'entrée en cours d'édition +observe.action.save.tip=Guardar las modificaciones +observe.action.save.to.file=Guardar la base de datos +observe.action.save.to.file.tip=Hacer una copia de seguridad de la base de datos abierta +observe.action.selectNode=Seleccionar el nodo +observe.action.selectNode.tip=Seleccionar el nodo observe.action.sensorBrand.create.tip= observe.action.sensorBrand.delete.tip= observe.action.sensorBrand.detail.tip= @@ -416,136 +416,136 @@ observe.action.sex.delete.tip= observe.action.sex.detail.tip= observe.action.sex.modify.tip= observe.action.sex.save.tip= -observe.action.show.technical.informations.tip= -observe.action.show.unique.keys.tip= -observe.action.show.usages.tip= -observe.action.showConfig.title= -observe.action.site= -observe.action.site.tip= +observe.action.show.technical.informations.tip=Ver la información técnica +observe.action.show.unique.keys.tip=Ver la tabla de todas las claves métier usadas por este refencial +observe.action.show.usages.tip=Ver todos los usos de este referencial +observe.action.showConfig.title=Configuración +observe.action.site=Sitio web +observe.action.site.tip=Acceder al sitio web de la apliación observe.action.sizeMeasureType.create.tip= observe.action.sizeMeasureType.delete.tip= observe.action.sizeMeasureType.detail.tip= observe.action.sizeMeasureType.modify.tip= observe.action.sizeMeasureType.save.tip= -observe.action.species.create.tip= -observe.action.species.delete.tip= -observe.action.species.detail.tip= -observe.action.species.modify.tip= -observe.action.species.save.tip= -observe.action.speciesFate.create.tip= -observe.action.speciesFate.delete.tip= -observe.action.speciesFate.detail.tip= -observe.action.speciesFate.modify.tip= -observe.action.speciesFate.save.tip= -observe.action.speciesGroupSpecies.create.tip= -observe.action.speciesGroupSpecies.delete.tip= -observe.action.speciesGroupSpecies.detail.tip= -observe.action.speciesGroupSpecies.modify.tip= -observe.action.speciesGroupSpecies.save.tip= +observe.action.species.create.tip=Crear una nueva especie de fauna +observe.action.species.delete.tip=Eliminar la especie de fauna seleccionada +observe.action.species.detail.tip=Ver detalles de la especie de fauna seleccionada +observe.action.species.modify.tip=Modificar la especie de fauna seleccionada +observe.action.species.save.tip=Guardar las modificaciones de especie de fauna +observe.action.speciesFate.create.tip=Crear un nuevo objectFate de fauna +observe.action.speciesFate.delete.tip=Eliminar el objectFate de fauna seleccionado +observe.action.speciesFate.detail.tip=Ver detalles de objectFate de fauna seleccionado +observe.action.speciesFate.modify.tip=Modificar el objectFate de fauna seleccionado +observe.action.speciesFate.save.tip=Guardar las modificaciones de objectFate de fauna +observe.action.speciesGroupSpecies.create.tip=Crear un nuevo grupo de especie de fauna +observe.action.speciesGroupSpecies.delete.tip=Eliminar un grupo de especie de fauna seleccionada +observe.action.speciesGroupSpecies.detail.tip=Ver los detalles del grupo de especie de faune seleccionada +observe.action.speciesGroupSpecies.modify.tip=Modificar el grupo de especie de fauna seleccionada +observe.action.speciesGroupSpecies.save.tip=Guardar las modificaciones del grupo de especie de fauna observe.action.speciesList.create.tip= observe.action.speciesList.delete.tip= observe.action.speciesList.detail.tip= observe.action.speciesList.modify.tip= -observe.action.speciesStatus.create.tip= -observe.action.speciesStatus.delete.tip= -observe.action.speciesStatus.detail.tip= -observe.action.speciesStatus.modify.tip= -observe.action.speciesStatus.save.tip= -observe.action.start.h2.web.server= -observe.action.start.h2.web.server.tip= -observe.action.start.server.mode= -observe.action.start.server.mode.tip= +observe.action.speciesStatus.create.tip=Crear un nuevo estado de especie +observe.action.speciesStatus.delete.tip=Eliminar el estado de especie seleccionado +observe.action.speciesStatus.detail.tip=Ver los detalles de estado de especie seleccionado +observe.action.speciesStatus.modify.tip=Modificar el estado de especie seleccionado +observe.action.speciesStatus.save.tip=Guardar las modificaciones de estado de especie +observe.action.start.h2.web.server=Iniciar modo servidor Web (H2) +observe.action.start.h2.web.server.tip=Puesta en marcha del servidor web H2 +observe.action.start.server.mode=Iniciar modo servidor +observe.action.start.server.mode.tip=Puesta en marcha de la base local en modo servidor observe.action.stomacFullness.create.tip= observe.action.stomacFullness.delete.tip= observe.action.stomacFullness.detail.tip= observe.action.stomacFullness.modify.tip= observe.action.stomacFullness.save.tip= -observe.action.stop.h2.web.server= -observe.action.stop.h2.web.server.tip= -observe.action.stop.server.mode= -observe.action.stop.server.mode.tip= -observe.action.storage.apply= -observe.action.storage.apply.tip= -observe.action.storage.applyAction= -observe.action.storage.cancel= -observe.action.storage.cancel.tip= -observe.action.surroundingActivity.create.tip= -observe.action.surroundingActivity.delete.tip= -observe.action.surroundingActivity.detail.tip= -observe.action.surroundingActivity.modify.tip= -observe.action.surroundingActivity.save.tip= -observe.action.synchro.apply.modifications= -observe.action.synchro.cancel.tip= -observe.action.synchro.copy.tip= -observe.action.synchro.launch.operation= -observe.action.synchro.prepare.operation= -observe.action.synchro.report.reset.tip= -observe.action.test.remote= -observe.action.test.remote.tip= -observe.action.transmittingBuoyOperation.create.tip= -observe.action.transmittingBuoyOperation.delete.tip= -observe.action.transmittingBuoyOperation.detail.tip= -observe.action.transmittingBuoyOperation.modify.tip= -observe.action.transmittingBuoyOperation.save.tip= -observe.action.transmittingBuoyType.create.tip= -observe.action.transmittingBuoyType.delete.tip= -observe.action.transmittingBuoyType.detail.tip= -observe.action.transmittingBuoyType.modify.tip= -observe.action.transmittingBuoyType.save.tip= +observe.action.stop.h2.web.server=Terminar modo servidor Web (H2) +observe.action.stop.h2.web.server.tip=Parar el servidor web H2 +observe.action.stop.server.mode=Terminar modo servidor +observe.action.stop.server.mode.tip=Parar el modo servidor de la base local +observe.action.storage.apply=Utilizar +observe.action.storage.apply.tip=Utilizar el origen de datos configuarado +observe.action.storage.applyAction=Cambiar el origen de datos +observe.action.storage.cancel=Cancelar el cambio del origen de datos +observe.action.storage.cancel.tip=Cancelar el cambio del origen de datos +observe.action.surroundingActivity.create.tip=Crear una nueva actividad circundante +observe.action.surroundingActivity.delete.tip=Eliminar la actividad circundante seleccionada +observe.action.surroundingActivity.detail.tip=Ver los detalles de la actividad circundante seleccionada +observe.action.surroundingActivity.modify.tip=Modificar la actividad circundante seleccionada +observe.action.surroundingActivity.save.tip=Guardar las modificaciones de la actividad circundante +observe.action.synchro.apply.modifications=Aplicar las modificaciones +observe.action.synchro.cancel.tip=Cancelar +observe.action.synchro.copy.tip=Copiar el informe en el portapapeles +observe.action.synchro.launch.operation=Comenzar la operación < %1$s > +observe.action.synchro.prepare.operation=Prepara la operación <%1$s> +observe.action.synchro.report.reset.tip=Deseleccionar el informe actual +observe.action.test.remote=Comprobar la conexión +observe.action.test.remote.tip=Pulsar para comprobar la conexión con el servidor remoto +observe.action.transmittingBuoyOperation.create.tip=Crear una nueva operación de baliza +observe.action.transmittingBuoyOperation.delete.tip=Eliminar la operación de baliza seleccionada +observe.action.transmittingBuoyOperation.detail.tip=Ver los detalles de la operación de baliza seleccionada +observe.action.transmittingBuoyOperation.modify.tip=Modificar la operación de baliza seleccionada +observe.action.transmittingBuoyOperation.save.tip=Guardar las modificaciones de operación de baliza +observe.action.transmittingBuoyType.create.tip=Crear un nuevo tipo de baliza +observe.action.transmittingBuoyType.delete.tip=Eliminar el tipo de baliza seleccionado +observe.action.transmittingBuoyType.detail.tip=Ver los detalles del tipo de baliza seleccionado +observe.action.transmittingBuoyType.modify.tip=Modificar el tipo de baliza seleccionado +observe.action.transmittingBuoyType.save.tip=Guardar las modificaciones del tipo de baliza observe.action.tripType.create.tip= observe.action.tripType.delete.tip= observe.action.tripType.detail.tip= observe.action.tripType.modify.tip= observe.action.tripType.save.tip= -observe.action.vessel.create.tip= -observe.action.vessel.delete.tip= -observe.action.vessel.detail.tip= -observe.action.vessel.modify.tip= -observe.action.vessel.save.tip= +observe.action.vessel.create.tip=Crear un nuevo barco +observe.action.vessel.delete.tip=Eliminar el barco seleccionado +observe.action.vessel.detail.tip=Ver los detalles del barco seleccionado +observe.action.vessel.modify.tip=Modificar el barco seleccionado +observe.action.vessel.save.tip=Guardar las modificaciones del barco observe.action.vesselActivityLongline.create.tip= observe.action.vesselActivityLongline.delete.tip= observe.action.vesselActivityLongline.detail.tip= observe.action.vesselActivityLongline.modify.tip= observe.action.vesselActivityLongline.save.tip= -observe.action.vesselActivitySeine.create.tip= -observe.action.vesselActivitySeine.delete.tip= -observe.action.vesselActivitySeine.detail.tip= -observe.action.vesselActivitySeine.modify.tip= -observe.action.vesselActivitySeine.save.tip= -observe.action.vesselSizeCategory.create.tip= -observe.action.vesselSizeCategory.delete.tip= -observe.action.vesselSizeCategory.detail.tip= -observe.action.vesselSizeCategory.modify.tip= -observe.action.vesselSizeCategory.save.tip= -observe.action.vesselType.create.tip= -observe.action.vesselType.delete.tip= -observe.action.vesselType.detail.tip= -observe.action.vesselType.modify.tip= -observe.action.vesselType.save.tip= -observe.action.weightCategory.create.tip= -observe.action.weightCategory.delete.tip= -observe.action.weightCategory.detail.tip= -observe.action.weightCategory.modify.tip= -observe.action.weightCategory.save.tip= +observe.action.vesselActivitySeine.create.tip=Crear una nueva actividad del barco +observe.action.vesselActivitySeine.delete.tip=Eliminar la actividad del barco seleccionada +observe.action.vesselActivitySeine.detail.tip=Ver los detalles de la actividad del barco seleccionada +observe.action.vesselActivitySeine.modify.tip=Modificar la actividad del barco seleccionada +observe.action.vesselActivitySeine.save.tip=Guardar las modificaciones de la actividad del barco +observe.action.vesselSizeCategory.create.tip=Crear una nueva categoria de barco +observe.action.vesselSizeCategory.delete.tip=Eliminar la categoria de barco seleccionada +observe.action.vesselSizeCategory.detail.tip=Ver los detalles de la categoria de barco seleccionada +observe.action.vesselSizeCategory.modify.tip=Modificar el barco seleccionado +observe.action.vesselSizeCategory.save.tip=Guardar las modificaciones de la categoria de barco +observe.action.vesselType.create.tip=Crear un nuevo tipo de barco +observe.action.vesselType.delete.tip=Eliminar el tipo de barco seleccioando +observe.action.vesselType.detail.tip=Ver los detalles del tipo de barco seleccionado +observe.action.vesselType.modify.tip=Modificar el tipo de barco seleccionado +observe.action.vesselType.save.tip=Guardar las modificaciones del tipo de barco +observe.action.weightCategory.create.tip=Crear una nueva categoria de peso +observe.action.weightCategory.delete.tip=Eliminar la categoriea de peso seleccionada +observe.action.weightCategory.detail.tip=Ver los detalles de la categoria de peso seleccionada +observe.action.weightCategory.modify.tip=Modificar la categoria de peso seleccionada +observe.action.weightCategory.save.tip=Guardar las modificaciones de la categoria de peso observe.action.weightMeasureType.create.tip= observe.action.weightMeasureType.delete.tip= observe.action.weightMeasureType.detail.tip= observe.action.weightMeasureType.modify.tip= observe.action.weightMeasureType.save.tip= -observe.action.wind.create.tip= -observe.action.wind.delete.tip= -observe.action.wind.detail.tip= -observe.action.wind.modify.tip= -observe.action.wind.save.tip= +observe.action.wind.create.tip=Crear una nueva velocidad de viento +observe.action.wind.delete.tip=Eliminar la velocidad de viento seleccionada +observe.action.wind.detail.tip=Ver los detalles de velocidad de viento seleccionados +observe.action.wind.modify.tip=Modificar la velocidad de viento seleccionada +observe.action.wind.save.tip=Guardar las modificaciones de velocidad de viento observe.activityLongline.coordinate= observe.activityLongline.fpaZone= -observe.activityLongline.message.active.found= -observe.activityLongline.message.active.found.for.other.trip= -observe.activityLongline.message.creating= -observe.activityLongline.message.no.active.found= -observe.activityLongline.message.no.active.found.for.other.trip= -observe.activityLongline.message.not.open= -observe.activityLongline.message.updating= +observe.activityLongline.message.active.found=Actividad abierta +observe.activityLongline.message.active.found.for.other.trip=Existe una actividad abierta en otra ruta. +observe.activityLongline.message.creating=Actividad en proceso de creación. +observe.activityLongline.message.no.active.found=Ninguna actividad abierta, puede crear una nueva o reabrir una. +observe.activityLongline.message.no.active.found.for.other.trip=Ninguna actividad abierta en esta ruta. +observe.activityLongline.message.not.open=La actividad no está abierta, imposible modificar. +observe.activityLongline.message.updating=Se está modificando la actividad actual. observe.activityLongline.seaSurfaceTemperature= observe.activityLongline.timeStamp= observe.activityLongline.title= @@ -553,26 +553,26 @@ observe.activityLongline.vesselActivityLongline= observe.activityLonglines.title= observe.activityObservedSystem.availableObservedSystem= observe.activityObservedSystem.selectedObservedSystem= -observe.activitySeine.message.active.found= -observe.activitySeine.message.active.found.for.other.route= -observe.activitySeine.message.creating= -observe.activitySeine.message.no.active.found= -observe.activitySeine.message.no.active.found.for.other.route= -observe.activitySeine.message.not.open= -observe.activitySeine.message.updating= +observe.activitySeine.message.active.found=Actividad abierta +observe.activitySeine.message.active.found.for.other.route=Existe una actividad abierta en otra ruta. +observe.activitySeine.message.creating=Actividad en proceso de creación. +observe.activitySeine.message.no.active.found=Ninguna actividad abierta, puede crear una nueva o reabrir una. +observe.activitySeine.message.no.active.found.for.other.route=Ninguna actividad abierta en esta ruta. +observe.activitySeine.message.not.open=La actividad no está abierta, imposible modificar. +observe.activitySeine.message.updating=Se está modificando la actividad actual. observe.activitySeine.tab.general= observe.activitySeine.tab.measurements= observe.activitySeine.title= observe.activitySeineObservedSystem.title= observe.activitySeines.title= -observe.admin.resume.no.operation.done= -observe.admin.resume.operation.canceled= -observe.admin.resume.operation.done= -observe.admin.resume.operation.failed= -observe.admin.resume.operation.need.fix= -observe.admin.resume.operation.not.started= -observe.admin.resume.operation.running= -observe.application.config= +observe.admin.resume.no.operation.done=Ninguna operación realizada +observe.admin.resume.operation.canceled=operación cancelada +observe.admin.resume.operation.done=operacion realizada +observe.admin.resume.operation.failed=la operación no realizada +observe.admin.resume.operation.need.fix=la operación nesista correcciones +observe.admin.resume.operation.not.started=operación no empezada +observe.admin.resume.operation.running=operación en curso... +observe.application.config=Configuración de ObServe observe.baitsComposition.action.create= observe.baitsComposition.action.create.tip= observe.baitsComposition.baitSettingStatus= @@ -637,7 +637,7 @@ observe.branchlinesComposition.table.tracelineType.tip= observe.branchlinesComposition.title= observe.branchlinesComposition.topType= observe.branchlinesComposition.tracelineType= -observe.broughtOnDeck.comment= +observe.broughtOnDeck.comment=Sólo las especies subidas a bordo se pueden muestrear. observe.catchLongline.acquisitionMode= observe.catchLongline.acquisitionMode.grouped= observe.catchLongline.acquisitionMode.individual= @@ -657,7 +657,7 @@ observe.catchLongline.count= observe.catchLongline.depredated= observe.catchLongline.discardHealthness= observe.catchLongline.gonadeWeight= -observe.catchLongline.hookPosition= +observe.catchLongline.hookPosition=Posición del gancho observe.catchLongline.hookWhenDiscarded= observe.catchLongline.locationOnLongline= observe.catchLongline.maturityStatus= @@ -710,93 +710,93 @@ observe.catchlongline.table.weight= observe.catchlongline.table.weight.tip= observe.catchlongline.table.weightMeasureType= observe.catchlongline.table.weightMeasureType.tip= -observe.choice.cancel= -observe.choice.confirm.delete= -observe.choice.continue= -observe.choice.create.fin.veille.activity= -observe.choice.create.fin.veille.activity.and.continue= -observe.choice.createLocalStorage= -observe.choice.doNotSave= -observe.choice.doNothing= -observe.choice.not.create.fin.veille.activity.and.continue= -observe.choice.quit= -observe.choice.save= -observe.choice.useRemoteStorage= -observe.common.acquisitionMode= -observe.common.acquisitionMode.count= -observe.common.acquisitionMode.individu= -observe.common.activities= +observe.choice.cancel=Cancelar +observe.choice.confirm.delete=Eliminar +observe.choice.continue=Continuar +observe.choice.create.fin.veille.activity=Crear la actividad de fin de guardia +observe.choice.create.fin.veille.activity.and.continue=Crear la actividad de fin de guardia y continuar +observe.choice.createLocalStorage=Crear la base local +observe.choice.doNotSave=No grabar +observe.choice.doNothing=No hacer nada +observe.choice.not.create.fin.veille.activity.and.continue=No crear la actividad de fin de guardia y continuar +observe.choice.quit=Cerrar +observe.choice.save=Grabar +observe.choice.useRemoteStorage=Usar la base de datos remota +observe.common.acquisitionMode=Modo de entrada de datos +observe.common.acquisitionMode.count=Entrada por grupo de tallas +observe.common.acquisitionMode.individu=Entrada por individuo +observe.common.activities=Actividades observe.common.activities.list= -observe.common.activity= +observe.common.activity=Actividad observe.common.activityLongline= observe.common.activitySeine= observe.common.baitHaulingStatus= -observe.common.baitObservation= +observe.common.baitObservation=Carnada observe.common.baitSettingStatus= observe.common.baitType= observe.common.baitsComposition= observe.common.basket= -observe.common.birdsObservation= -observe.common.boolean.false= -observe.common.boolean.null= -observe.common.boolean.true= +observe.common.birdsObservation=Pájaros +observe.common.boolean.false=No +observe.common.boolean.null=Indeterminado +observe.common.boolean.true=Si observe.common.branchline= observe.common.branchlineLength= observe.common.branchlinesComposition= -observe.common.brand= +observe.common.brand=Marca observe.common.brandName= -observe.common.broughtOnDeck= -observe.common.capacity= -observe.common.capacityLabel= +observe.common.broughtOnDeck=Izado a bordo +observe.common.capacity=Capacidad de transporte +observe.common.capacityLabel=Texto capacidad observe.common.captain= -observe.common.caracteristics= +observe.common.caracteristics=Características observe.common.catchFateLongline= observe.common.catchLongline= -observe.common.catchWeight= -observe.common.catchWeightComputed.computed.tip= -observe.common.catchWeightComputed.observed.tip= -observe.common.changeDate= -observe.common.code= -observe.common.codeAndStatus= -observe.common.coefficients= -observe.common.comment= -observe.common.comment.activity= -observe.common.comment.floatingObject= -observe.common.comment.nonTargetCatch= -observe.common.comment.nonTargetSample= -observe.common.comment.set= -observe.common.comment.targetCatch= -observe.common.comment.targetDiscarded= -observe.common.comment.targetSample= -observe.common.count= -observe.common.country= +observe.common.catchWeight=Peso estimado (en t) +observe.common.catchWeightComputed.computed.tip=Peso estimado calculado +observe.common.catchWeightComputed.observed.tip=Peso estimado observado +observe.common.changeDate=Fecha de carga +observe.common.code=Identificación +observe.common.codeAndStatus=Código +observe.common.coefficients=Coeficientes +observe.common.comment=Comentarios +observe.common.comment.activity=Comentario de la actividad +observe.common.comment.floatingObject=Comentarios de objeto +observe.common.comment.nonTargetCatch=Comentarios de otras especies +observe.common.comment.nonTargetSample=Comentarios de muestreo de otras especies +observe.common.comment.set=Comentarios del lance +observe.common.comment.targetCatch=Comentarios de captura +observe.common.comment.targetDiscarded=Comentarios de descarte +observe.common.comment.targetSample=Comentarios de muestreo de atún +observe.common.count=Número +observe.common.country=País observe.common.currentFpaZone= observe.common.dataEntryOperator= -observe.common.date= -observe.common.daysAtSeaCount= +observe.common.date=Día de observación +observe.common.daysAtSeaCount=Numero de días en el mar observe.common.departureHarbour= -observe.common.description= -observe.common.detailledActivitiesObservation= -observe.common.detectionMode= -observe.common.directory= +observe.common.description=Descripción +observe.common.detailledActivitiesObservation=Actividades detalladas +observe.common.detectionMode=Modo de detección +observe.common.directory=Carpeta observe.common.encounter= observe.common.encounterType= -observe.common.endDate= -observe.common.endLogValue= -observe.common.equation= -observe.common.ersId= +observe.common.endDate=Fecha de fin +observe.common.endLogValue=Corredera de tarde (millas) +observe.common.equation=Relación talla-peso +observe.common.ersId=Id ERS observe.common.faoCode= -observe.common.file= -observe.common.firstName= -observe.common.flagCountry= +observe.common.file=Archivo +observe.common.firstName=Número +observe.common.flagCountry=Badera observe.common.floatingObject= observe.common.floatline1Length= observe.common.floatline2Length= observe.common.floatlineLengths= observe.common.floatlinesComposition= -observe.common.formsUrl= +observe.common.formsUrl=URL de los formularios observe.common.fpaZone= -observe.common.gaugeLabel= +observe.common.gaugeLabel=Texto «Capacidad» observe.common.gear= observe.common.gearCaracteristic= observe.common.gearCaracteristicType= @@ -804,8 +804,8 @@ observe.common.gearType= observe.common.gearUseFeaturesLongline= observe.common.gearUseFeaturesSeine= observe.common.gender= -observe.common.generateReport= -observe.common.global.progression.description= +observe.common.generateReport=Generar un informe de validación +observe.common.global.progression.description=Progresión global observe.common.gps.activity= observe.common.gps.gpsPoint= observe.common.gps.gpsPointInterval= @@ -813,84 +813,84 @@ observe.common.gpsPointInterval= observe.common.harbour= observe.common.haulingIdentifier= observe.common.healthness= -observe.common.heureobservation= +observe.common.heureobservation=Hora de la observación observe.common.homeId= -observe.common.homeIdFAOWormsId= +observe.common.homeIdFAOWormsId=Código 3L / FAO / Worms observe.common.hookPosition= observe.common.hookSize= observe.common.hookType= observe.common.hooksComposition= observe.common.id= observe.common.inconnu= -observe.common.iso2Code= -observe.common.iso3Code= +observe.common.iso2Code=Código ISO-2 +observe.common.iso3Code=Código ISO-3 observe.common.itemHorizontalPosition= observe.common.itemVerticalPosition= -observe.common.keelCodeFlotte= -observe.common.label1= -observe.common.label2= -observe.common.label3= -observe.common.label4= -observe.common.label5= -observe.common.label6= -observe.common.label7= -observe.common.label8= +observe.common.keelCodeFlotte=Código de Quilla / Flota +observe.common.label1=Texto en inglés +observe.common.label2=Texto en francés +observe.common.label3=Nombre +observe.common.label4=Texto 4 +observe.common.label5=Texto 5 +observe.common.label6=Texto 6 +observe.common.label7=Texto 7 +observe.common.label8=Texto 8 observe.common.landingHarbour= -observe.common.lastName= -observe.common.latitude= -observe.common.length= -observe.common.length.computed.tip= -observe.common.length.inf= -observe.common.length.observed.tip= -observe.common.lengthMeasureType= -observe.common.lengthWeightFormula= +observe.common.lastName=Nombre +observe.common.latitude=Latitude +observe.common.length=Longitud eslora total +observe.common.length.computed.tip=Longitud calculada +observe.common.length.inf=Longitud (cm inf.) +observe.common.length.observed.tip=Longitud observada +observe.common.lengthMeasureType=Tipo de medida +observe.common.lengthWeightFormula=Relación de peso observe.common.lengthWeightParameter= -observe.common.libelles= +observe.common.libelles=Textos observe.common.lightsticksColor= observe.common.lightsticksType= observe.common.lineType= observe.common.locode= -observe.common.longitude= +observe.common.longitude=Longitude observe.common.lowerValueUpperValue= -observe.common.mammalsObservation= +observe.common.mammalsObservation=Mamiferos observe.common.maturityStatus= -observe.common.meanLength= -observe.common.meanLengthComputed.computed.tip= -observe.common.meanLengthComputed.observed.tip= -observe.common.meanValues= -observe.common.meanWeight= -observe.common.meanWeightComputed.computed.tip= -observe.common.meanWeightComputed.observed.tip= -observe.common.measureType= -observe.common.measureType.ld1= -observe.common.measureType.lf= -observe.common.measureType.unknown= -observe.common.minLengthMax= -observe.common.minWeightMax= +observe.common.meanLength=Talla media (en cm) +observe.common.meanLengthComputed.computed.tip=La talla media se ha calculado +observe.common.meanLengthComputed.observed.tip=La talla media se ha observado +observe.common.meanValues=Valores medios +observe.common.meanWeight=Peso medio (en Kg) +observe.common.meanWeightComputed.computed.tip=El peso medio se calculó +observe.common.meanWeightComputed.observed.tip=El peso medio se observó +observe.common.measureType=Tipo de medida +observe.common.measureType.ld1=LD1 +observe.common.measureType.lf=LF +observe.common.measureType.unknown=Desconocido +observe.common.minLengthMax=Talla min-max (en cm) +observe.common.minWeightMax=Peso min-max (en Kg) observe.common.mitigationType= observe.common.name= -observe.common.needComment= +observe.common.needComment=Se requiere un comentario observe.common.nextFpaZone= -observe.common.no.balise= +observe.common.no.balise=Ninguna baliza observe.common.nocode= -observe.common.nonCoupSenne= -observe.common.nonTargetCatch= +observe.common.nonCoupSenne=Razón de no lance +observe.common.nonTargetCatch=Fauna asociada conservada o descartada observe.common.nonTargetLength= -observe.common.nonTargetObservation= -observe.common.nonTargetSample= +observe.common.nonTargetObservation=Fauna asociada +observe.common.nonTargetSample=Muestreo fauna asociada observe.common.none= -observe.common.objectFate= +observe.common.objectFate=Devenir de objeto observe.common.objectObservedSpecies= -observe.common.objectOperation= +observe.common.objectOperation=Operación sobre la baliza observe.common.objectSchoolEstimate= -observe.common.objectType= -observe.common.objectsObservation= -observe.common.observedSystem= -observe.common.observedSystemDistance= +observe.common.objectType=Tipo de objeto +observe.common.objectsObservation=Objeto flotante +observe.common.observedSystem=Sistema observado +observe.common.observedSystemDistance=Distancia al sistema observado (millas con 1 decimal) observe.common.observer= observe.common.observerLabel= -observe.common.obsolete.entity= -observe.common.ocean= +observe.common.obsolete.entity=El referencial %1$s está desactivado. +observe.common.ocean=Océano observe.common.ocean/label1= observe.common.ocean/label2= observe.common.ocean/label3= @@ -901,53 +901,53 @@ observe.common.ocean/label7= observe.common.ocean/label8= observe.common.oceanForSpecies= observe.common.oldCode3L= -observe.common.operation.resume= -observe.common.organism= -observe.common.ownership= +observe.common.operation.resume=Resumen de operaciones +observe.common.organism=Organismo +observe.common.ownership=Pertenece a observe.common.person= -observe.common.picturesReferences= -observe.common.power= +observe.common.picturesReferences=Referencia de foto +observe.common.power=Potencia del motor principal observe.common.previousFpaZone= observe.common.program= -observe.common.program.observation.value.0= -observe.common.program.observation.value.1= -observe.common.program.observation.value.2= -observe.common.program.observation.value.3= -observe.common.program.observation.value.4= -observe.common.program.observation.value.5= -observe.common.program.observation.value.6= -observe.common.program.observation.value.7= -observe.common.program.observation.value.8= -observe.common.program.observation.value.9= -observe.common.reasonForDiscard= +observe.common.program.observation.value.0=no observado +observe.common.program.observation.value.1=observado +observe.common.program.observation.value.2=valor 2 no definido +observe.common.program.observation.value.3=valor 3 no definido +observe.common.program.observation.value.4=valor 4 no definido +observe.common.program.observation.value.5=valor 5 no definido +observe.common.program.observation.value.6=valor 6 no definido +observe.common.program.observation.value.7=valor 7 no definido +observe.common.program.observation.value.8=valor 8 no definido +observe.common.program.observation.value.9=valor 9 no definido +observe.common.reasonForDiscard=Razon de descarte observe.common.reasonForNoFishing= observe.common.reasonForNullSet= -observe.common.reportsUrl= -observe.common.resume= +observe.common.reportsUrl=URL del informe +observe.common.resume=Resumen de la configuración observe.common.route= -observe.common.routes.list= -observe.common.samplesObservation= -observe.common.schoolEstimate= -observe.common.schoolType= -observe.common.scientificLabel= -observe.common.seaSurfaceTemperature= -observe.common.searchMaximum= +observe.common.routes.list=Lista de rutas +observe.common.samplesObservation=Medidas +observe.common.schoolEstimate=Estimación del banco +observe.common.schoolType=Tipo de banco +observe.common.scientificLabel=Texto científico +observe.common.seaSurfaceTemperature=Temperatura en superficie (°) +observe.common.searchMaximum=Velocidad máxima de prospección observe.common.section= -observe.common.select.gps.import.file= -observe.common.select.gps.import.file.tip= -observe.common.select.gps.maxDelay= -observe.common.select.gps.maxDelay.tip= -observe.common.select.gps.maxSpeed= -observe.common.select.gps.maxSpeed.tip= -observe.common.select.report.file= -observe.common.select.report.file.tip= -observe.common.select.validate.context= -observe.common.select.validate.context.tip= -observe.common.select.validate.mode= -observe.common.select.validate.mode.tip= -observe.common.select.validate.scope= -observe.common.select.validate.scope.tip= -observe.common.selected.validators= +observe.common.select.gps.import.file=Importar archivo +observe.common.select.gps.import.file.tip=Elegir el archivo de trace GPS a importar +observe.common.select.gps.maxDelay=Tiempos máximos (mn) +observe.common.select.gps.maxDelay.tip=Demora máxima permitida entre 2 puntos gps (en minutos) +observe.common.select.gps.maxSpeed=Velocidad máxima (nd) +observe.common.select.gps.maxSpeed.tip=Velocidad maxima permitida entre 2 puntos (en nudos) +observe.common.select.report.file=Archivo de definición de informes +observe.common.select.report.file.tip=Elegir el archivo de definición de informes +observe.common.select.validate.context=Contexto de validación +observe.common.select.validate.context.tip=Elegir el contexto de validación +observe.common.select.validate.mode=Tipo de datos a validar +observe.common.select.validate.mode.tip=Elegir el tipo de datos a validar +observe.common.select.validate.scope=Nivel de validación +observe.common.select.validate.scope.tip=Elegir el o los niveles de validación +observe.common.selected.validators=Número de validadores detectados \: %1$s observe.common.sensorBrand= observe.common.sensorDataFormat= observe.common.sensorPosition= @@ -957,45 +957,45 @@ observe.common.setLongline= observe.common.setSeine= observe.common.settingIdentifier= observe.common.settingShape= -observe.common.sex= +observe.common.sex=Sexo observe.common.sizeMeasure= observe.common.sizeMeasureType= -observe.common.species= +observe.common.species=Especie observe.common.species/scientificLabel= -observe.common.speciesFate= -observe.common.speciesFaune= -observe.common.speciesGroup= +observe.common.speciesFate=Devenir de fauna +observe.common.speciesFaune=Especie de fauna +observe.common.speciesGroup=Grupo de especie de fauna observe.common.speciesList= -observe.common.speciesStatus= -observe.common.speciesThon= -observe.common.speedRange= -observe.common.startDate= -observe.common.startDateFinProgram= -observe.common.startDateFinValidite= -observe.common.startLogValue= -observe.common.status= -observe.common.step.description= +observe.common.speciesStatus=Estado de especie +observe.common.speciesThon=Especie +observe.common.speedRange=Texto velocidad del viento +observe.common.startDate=Fecha de comienzo +observe.common.startDateFinProgram=Comienzo - Fin de programa +observe.common.startDateFinValidite=Comienzo - Fin de validez +observe.common.startLogValue=Corredera de mañana (millas) +observe.common.status=Estado +observe.common.step.description=Descripción de la etapa observe.common.stomacFullness= -observe.common.storage.not.valid= -observe.common.supportVesselName= -observe.common.surroundingActivity= -observe.common.taille= -observe.common.taillePoids.caracteristics= -observe.common.targetCatch= -observe.common.targetDiscarded= -observe.common.targetDiscardsObservation= +observe.common.storage.not.valid=Origen de datos no configurada +observe.common.supportVesselName=Nombre del supply +observe.common.surroundingActivity=Actividad circundante +observe.common.taille=Talla (cm) +observe.common.taillePoids.caracteristics=Características Talla-Peso +observe.common.targetCatch=Captura de atún +observe.common.targetDiscarded=Descarte de atún +observe.common.targetDiscardsObservation=Descartes de atún observe.common.targetLength= -observe.common.targetSample= -observe.common.targetSampleCapture= +observe.common.targetSample=Muestreo atún descartado +observe.common.targetSampleCapture=Muestreo atún capturado observe.common.tdr= observe.common.tdrRecord= observe.common.time= -observe.common.topiaCreateDate= -observe.common.topiaId= -observe.common.topiaVersion= -observe.common.totalCount= -observe.common.totalCountComputed.computed.tip= -observe.common.totalCountComputed.observed.tip= +observe.common.topiaCreateDate=Fecha de creación +observe.common.topiaId=Técnicas de identificación +observe.common.topiaVersion=Versión +observe.common.totalCount=Número estimado +observe.common.totalCountComputed.computed.tip=El número estimado se calculo +observe.common.totalCountComputed.observed.tip=El número estimado se observo observe.common.totalWeight= observe.common.tracelineLength= observe.common.transmittingBuoy= @@ -1004,12 +1004,12 @@ observe.common.transmittingBuoyType= observe.common.tripLongline= observe.common.tripSeine= observe.common.tripType= -observe.common.trips.list= -observe.common.typeTransmittingBuoyOperation= -observe.common.undefined= -observe.common.undefined.tip= -observe.common.uri= -observe.common.vessel= +observe.common.trips.list=Lista de mareas +observe.common.typeTransmittingBuoyOperation=Tipo de operación sobre baliza +observe.common.undefined=- +observe.common.undefined.tip=< no definido > +observe.common.uri=URI +observe.common.vessel=Barco observe.common.vessel/label1= observe.common.vessel/label2= observe.common.vessel/label3= @@ -1019,8 +1019,8 @@ observe.common.vessel/label6= observe.common.vessel/label7= observe.common.vessel/label8= observe.common.vesselActivityLongline= -observe.common.vesselActivitySeine= -observe.common.vesselActivitySeine.comment= +observe.common.vesselActivitySeine=Actividad del barco +observe.common.vesselActivitySeine.comment=Solo la actividad %1$s permite introducir un lance observe.common.vesselActivitySeine/label1= observe.common.vesselActivitySeine/label2= observe.common.vesselActivitySeine/label3= @@ -1029,65 +1029,65 @@ observe.common.vesselActivitySeine/label5= observe.common.vesselActivitySeine/label6= observe.common.vesselActivitySeine/label7= observe.common.vesselActivitySeine/label8= -observe.common.vesselSizeCategory= -observe.common.vesselSpeed= -observe.common.vesselType= -observe.common.waveHeight= -observe.common.weight= -observe.common.weight.computed.tip= -observe.common.weight.ind= -observe.common.weight.observed.tip= -observe.common.weightCategory= -observe.common.weightLengthFormula= +observe.common.vesselSizeCategory=Capacidad +observe.common.vesselSpeed=Velocidad del barco (nd) +observe.common.vesselType=Pesquería +observe.common.waveHeight=Texto descriptivo de «altura media de la ola» +observe.common.weight=Peso (en t) +observe.common.weight.computed.tip=Peso calculado +observe.common.weight.ind=Peso del ejemplar (en Kg) +observe.common.weight.observed.tip=Peso observado +observe.common.weightCategory=Categoría de peso +observe.common.weightLengthFormula=Relación de tallas observe.common.weightMeasure= observe.common.weightMeasureType= -observe.common.well= -observe.common.wind= -observe.common.yearService= -observe.comon.exist.on.remote= -observe.config.category.changeStorage= -observe.config.category.changeStorage.description= -observe.config.category.directories= -observe.config.category.directories.description= -observe.config.category.gps= -observe.config.category.gps.description= -observe.config.category.h2= -observe.config.category.h2.description= +observe.common.well=Cuba +observe.common.wind=Fuerza del viento +observe.common.yearService=año de entrada en servicio +observe.comon.exist.on.remote=%1$s (ya existente) +observe.config.category.changeStorage=Origen de datos +observe.config.category.changeStorage.description=Opciones de cambio del origen de datos +observe.config.category.directories=Directorios +observe.config.category.directories.description=Directorios de la aplicación +observe.config.category.gps=GPS +observe.config.category.gps.description=Configuración GPS +observe.config.category.h2=Base local +observe.config.category.h2.description=Configuración de la base locale observe.config.category.map= observe.config.category.map.description= -observe.config.category.observation= -observe.config.category.observation.description= -observe.config.category.obstuna= -observe.config.category.obstuna.description= -observe.config.category.other= -observe.config.category.other.description= +observe.config.category.observation=Calificacion de las observaciones +observe.config.category.observation.description=Gestion de los indicadores de calificación de los programas +observe.config.category.obstuna=Base remota +observe.config.category.obstuna.description=Configuración de la base remota +observe.config.category.other=Otro +observe.config.category.other.description=Otras opciones observe.config.category.speciesList.longline= observe.config.category.speciesList.longline.description= observe.config.category.speciesList.seine= observe.config.category.speciesList.seine.description= -observe.config.category.synchro= -observe.config.category.synchro.description= -observe.config.configFileName.description= -observe.config.db.locale= -observe.config.defaultBackupDirectory.description= -observe.config.defaultCreationMode= -observe.config.defaultDataDirectory.description= -observe.config.defaultDbMode= -observe.config.defaultGpsMaxDelay= -observe.config.defaultGpsMaxSpeed= -observe.config.defaultI18nDirectory.description= -observe.config.defaultInitialDbDump.description= -observe.config.defaultLocalDbDirectory.description= +observe.config.category.synchro=Acciones sobre la base +observe.config.category.synchro.description=Configuración de acciones sobre la base +observe.config.configFileName.description=Nombre del archivo de configuración +observe.config.db.locale=Idioma del referencial +observe.config.defaultBackupDirectory.description=Carpeta por defecto para copia de seguridad de bases locales +observe.config.defaultCreationMode=Modo de creación de la base local por defecto +observe.config.defaultDataDirectory.description=Directorio por defecto de los recursos de usuario de la aplicación +observe.config.defaultDbMode=Modo de conexión creado por defecto +observe.config.defaultGpsMaxDelay=Número de minutos máximos por defectro entre 2 puntos gps +observe.config.defaultGpsMaxSpeed=Velocidad máxima por defecto entre 2 puntos pgs +observe.config.defaultI18nDirectory.description=Directorio por defecto de recursos de traducción de la aplicación +observe.config.defaultInitialDbDump.description=Base empotrada creada durante la primera importación de una base remota +observe.config.defaultLocalDbDirectory.description=Directorio de almacenamiento de la base local observe.config.defaultMapDirectory.description= -observe.config.defaultReportDirectory.description= -observe.config.defaultResourcesDirectory.description= -observe.config.defaultTmpDirectory.description= -observe.config.defaultValidationReportDirectory.description= +observe.config.defaultReportDirectory.description=Directorio por defecto de los informes de la aplicación +observe.config.defaultResourcesDirectory.description=Directorio de almacenamiento de los recursos de usuario como las traducciones o la consultas de informes +observe.config.defaultTmpDirectory.description=Directorio temporal por defecto +observe.config.defaultValidationReportDirectory.description=Directorio por defecto de almacenamiento de los informes de validación observe.config.devMode= -observe.config.h2.can.migrate.description= -observe.config.h2.login.description= -observe.config.h2.password.description= -observe.config.h2.serverPort.description= +observe.config.h2.can.migrate.description=Autorizar la actualización de las bases locales (h2) +observe.config.h2.login.description=Login h2 +observe.config.h2.password.description=Contraseña h2 +observe.config.h2.serverPort.description=Puerto del servidor h2 observe.config.logConfigurationFile.description= observe.config.map.background.description= observe.config.map.layer1.description= @@ -1101,22 +1101,26 @@ observe.config.map.layer7.description= observe.config.map.layer8.description= observe.config.map.layer9.description= observe.config.map.style.description= -observe.config.observation.activitysDetaillees= -observe.config.observation.fauneAssociee= -observe.config.observation.floatingObject= -observe.config.observation.gleure= -observe.config.observation.mammiferes= -observe.config.observation.mensurations= -observe.config.observation.oiseaux= -observe.config.observation.rejetsThons= -observe.config.obstuna.login.description= -observe.config.obstuna.password.description= -observe.config.obstuna.url.description= -observe.config.obstuna.useSsl.description= -observe.config.pg.can.migrate.description= -observe.config.showMigrationProgression= -observe.config.showMigrationSql= -observe.config.showSql= +observe.config.observation.activitysDetaillees=Observación de actividades detalladas +observe.config.observation.fauneAssociee=Observación de Fauna asociada +observe.config.observation.floatingObject=Observación de objetos flotantes +observe.config.observation.gleure=Observación de carnada +observe.config.observation.mammiferes=Observación de mamiferos +observe.config.observation.mensurations=Observación de mendiciones +observe.config.observation.oiseaux=Observaciones de pájaros +observe.config.observation.rejetsThons=Observación de descartes de atún +observe.config.obstuna.login.description=Nombre de usuario para conectarse a la base Obstuna +observe.config.obstuna.password.description=Contraseña para conectarse a la base Obstuna +observe.config.obstuna.url.description=Url de conexión a la base Obstuna +observe.config.obstuna.useSsl.description=Drapeau pour permettre l'utilisation du mode ssl pour la connexion à Obstuna +observe.config.pg.can.migrate.description=Autorizar la actualización de las bases remotas (debe ser el propietario de la base) +observe.config.server.dataBaseName.description= +observe.config.server.login.description= +observe.config.server.password.description= +observe.config.server.url.description= +observe.config.showMigrationProgression=Mostar los logs de actualización de una base de datos +observe.config.showMigrationSql=Mostrar en los logs las consultas realizadas durante la actualización de una base de datos +observe.config.showSql=Mostrar en los los todas las consultas sql ejecutadas observe.config.speciesList.longline.catch= observe.config.speciesList.longline.encounter= observe.config.speciesList.seine.nonTargetCatch= @@ -1124,17 +1128,17 @@ observe.config.speciesList.seine.objectObservedSpecies= observe.config.speciesList.seine.objectSchoolEstimate= observe.config.speciesList.seine.schoolEstimate= observe.config.speciesList.seine.targetCatch= -observe.config.ui.autoPopupNumberEditor= -observe.config.ui.changeSynchroSrc= -observe.config.ui.fullscreen= -observe.config.ui.loadLocalStorage= -observe.config.ui.locale= -observe.config.ui.showNumberEditorButton= +observe.config.ui.autoPopupNumberEditor=Para mostrar automáticamente el editor numérico durante la edición de un número +observe.config.ui.changeSynchroSrc=Pour autoriser la sélection de la base source dans les opérations sur base +observe.config.ui.fullscreen=Para mostrar en modo pantalla completa la aplicación +observe.config.ui.loadLocalStorage=Cambiar la base local al iniciar la aplicación +observe.config.ui.locale=Idioma de la aplicación (fr_FR, en_GB o es_ES) +observe.config.ui.showNumberEditorButton=Para mostrar el botón que permite usar el editor numérico a la izquierda de cada campo numérico observe.config.ui.showTimeEditorSlider= -observe.config.ui.storeRemoteStorage= -observe.content.mode.create.tip= -observe.content.mode.read.tip= -observe.content.mode.update.tip= +observe.config.ui.storeRemoteStorage=Para activar la copia de seguridad de la configuración del origen de datos remota +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.encounter.action.create= observe.encounter.action.create.tip= observe.encounter.count= @@ -1150,10 +1154,10 @@ observe.encounter.table.encouterType.tip= observe.encounter.table.species= observe.encounter.table.species.tip= observe.encounter.title= -observe.entity.message.updating= -observe.error.can.not.create.directory= -observe.error.no.activity.6= -observe.error.open.first.db= +observe.entity.message.updating=Se está modificando el objeto actual '%1$s'. +observe.error.can.not.create.directory=¡Imposible crear el directorio %1$s\! +observe.error.no.activity.6=La actividad con código 6 no se ha encontrado en la base de datos. +observe.error.open.first.db=La base está siendo utilizada por otra aplicación.\nPor favor, cierre la aplicación H2 y vuelva a intentarlo. observe.error.speciesList.longline.catch.notFound= observe.error.speciesList.longline.depredator.notFound= observe.error.speciesList.longline.encounter.notFound= @@ -1162,8 +1166,8 @@ observe.error.speciesList.seine.objectSchoolEstimate.notFound= observe.error.speciesList.seine.targetCatch.notFound= observe.error.storage.could.not.backup.unsane.local.db= observe.error.storage.could.not.load.local.db= -observe.floatingObject.message.creating= -observe.floatingObject.message.updating= +observe.floatingObject.message.creating=Objeto en proceso de creación. +observe.floatingObject.message.updating=Se está modificando el objeto flotante actual. observe.floatingObject.title= observe.floatingObjectTransmittingBuoyOperation.title= observe.floatlinesComposition.action.create= @@ -1222,6 +1226,8 @@ observe.gearUseFeaturesSeine.table.gearCaracteristic= observe.gearUseFeaturesSeine.table.gearCaracteristic.tip= observe.gearUseFeaturesSeine.table.number= observe.gearUseFeaturesSeine.table.number.tip= +observe.gearUseFeaturesSeine.table.size= +observe.gearUseFeaturesSeine.table.size.tip= observe.gearUseFeaturesSeine.table.usedInTrip= observe.gearUseFeaturesSeine.table.usedInTrip.tip= observe.gearUseFeaturesSeine.table.value= @@ -1247,17 +1253,17 @@ observe.hooksComposition.table.hookType.tip= observe.hooksComposition.table.proportion= observe.hooksComposition.table.proportion.tip= observe.hooksComposition.title= -observe.info.selected.validators= -observe.info.validation.credentials= -observe.init.local.db.detected= -observe.init.no.initial.dump.detected= -observe.init.no.local.db.detected= -observe.init.storage.done= -observe.label.coefficients.info= -observe.label.lengthWeightFormula.info= -observe.label.usage.data.title= -observe.label.usage.referentiel.title= -observe.label.weightLengthFormula.info= +observe.info.selected.validators=Es necesario seleccionar un validador para continuar. +observe.info.validation.credentials=Para validar el referencial (resp. los datos), debe tener los derechos de lectura y escritura correspondientes. +observe.init.local.db.detected=%1$s detectado. +observe.init.no.initial.dump.detected=Base empotrada %1$s no detectada. +observe.init.no.local.db.detected=Base local %1$s no detectada. +observe.init.storage.done=Inicialización del servicio de persistencia terminado. +observe.label.coefficients.info=Los coeficientes de relaciones son de la forma lastName\=valor y están separados por \: (ejemplo \: a\=1\:b\=2\:c\=3) +observe.label.lengthWeightFormula.info=La relación talla-peso permite calcular el peso a partir de la talla, debe contener la variable L +observe.label.usage.data.title=Datos '%1$s' (%2$d ocurrencias) +observe.label.usage.referentiel.title=Referencial '%1$s' (%2$d ocurrencias) +observe.label.weightLengthFormula.info=la relación talla-peso permite calcular la talla a partir del peso, debe contener la varible P observe.lengthWeightParameter.tab.general= observe.lengthWeightParameter.tab.other= observe.list.HookSize= @@ -1266,8 +1272,8 @@ observe.list.baitHaulingStatus= observe.list.baitSettingStatus= observe.list.baitType= observe.list.catchFateLongline= -observe.list.country= -observe.list.detectionMode= +observe.list.country=Paíises registrados +observe.list.detectionMode=Modos de detección registradas observe.list.encounterType= observe.list.fpaZone= observe.list.gear= @@ -1280,47 +1286,47 @@ observe.list.hookSize= observe.list.hookType= observe.list.itemHorizontalPosition= observe.list.itemVerticalPosition= -observe.list.lengthWeightParameter= +observe.list.lengthWeightParameter=Parámetros talla-peso de Fauna observe.list.lightsticksColor= observe.list.lightsticksType= observe.list.lineType= observe.list.maturityStatus= observe.list.mitigationType= -observe.list.objectFate= -observe.list.objectOperation= -observe.list.objectType= -observe.list.observedSystem= -observe.list.ocean= -observe.list.operation= -observe.list.organism= -observe.list.person= -observe.list.program= -observe.list.reasonForDiscard= -observe.list.reasonForNoFishing= -observe.list.reasonForNullSet= +observe.list.objectFate=Devenir de objetos registrados +observe.list.objectOperation=Operaciones con objeto registradas +observe.list.objectType=Tipos de objeto registrado +observe.list.observedSystem=Sistemas observados registrados +observe.list.ocean=Océanos registrados +observe.list.operation=Operaciones de baliza registradas +observe.list.organism=Organismos registrados +observe.list.person=Observadores registrados +observe.list.program=Programas registrados +observe.list.reasonForDiscard=Razones de descarte registradas +observe.list.reasonForNoFishing=Causas de no pesca registradas +observe.list.reasonForNullSet=Causas de lance nulo registradas observe.list.sensorBrand= observe.list.sensorDataFormat= observe.list.sensorType= observe.list.settingShape= -observe.list.sex= +observe.list.sex=Sexo registradas observe.list.sizeMeasureType= -observe.list.speciesFate= -observe.list.speciesFaune= -observe.list.speciesGroupSpecies= +observe.list.speciesFate=Devenir de fauna registrados +observe.list.speciesFaune=Especies de fauna registradas +observe.list.speciesGroupSpecies=Grupos de especies de fauna registradas observe.list.speciesList= -observe.list.speciesStatus= +observe.list.speciesStatus=Estado de especies registradas observe.list.stomacFullness= -observe.list.surroundingActivity= +observe.list.surroundingActivity=Lista de actividades circundantes observe.list.transmittingBuoyType= observe.list.tripType= -observe.list.vessel= +observe.list.vessel=Lista de barcos registrados observe.list.vesselActivityLongline= observe.list.vesselActivitySeine= -observe.list.vesselSizeCategory= -observe.list.vesselType= -observe.list.weightCategory= +observe.list.vesselSizeCategory=Lista de categorías de barcos registrados +observe.list.vesselType=Tipos de barco registrados +observe.list.weightCategory=Categorías de peso registradas observe.list.weightMeasureType= -observe.list.wind= +observe.list.wind=Fuerzas de viento registradas observe.longlineDetailComposition.action.deleteAllSections= observe.longlineDetailComposition.action.deleteAllSections.tip= observe.longlineDetailComposition.action.deleteSelectedBasket= @@ -1397,7 +1403,12 @@ observe.map.action.exportPng.tip= observe.map.action.zoomIt= observe.map.action.zoomIt.tip= observe.map.east= +observe.map.export.chooseFile.image= observe.map.export.chooseFile.ok= +observe.map.export.chooseFile.overwrite= +observe.map.export.chooseFile.overwrite.cancel= +observe.map.export.chooseFile.overwrite.ok= +observe.map.export.chooseFile.overwrite.title= observe.map.export.chooseFile.png= observe.map.export.chooseFile.title= observe.map.export.overwrite= @@ -1429,209 +1440,210 @@ observe.map.south= observe.map.waitLoading= observe.map.west= observe.measurement.delete.message= -observe.menu.actions= -observe.menu.application.locale= -observe.menu.configuration= -observe.menu.configuration.tip= -observe.menu.db.locale= -observe.menu.file= -observe.menu.help= -observe.menu.locale= -observe.menu.navigation= -observe.menu.storage= -observe.message.can.not.write.data= -observe.message.cant.add.echantillonRejetThon= -observe.message.cant.add.echantillonTargetCatch= -observe.message.cant.add.nonTargetSample= -observe.message.consolidate.operation.done= -observe.message.consolidate.save.changes= -observe.message.creating.referentiel= -observe.message.db.closed= -observe.message.db.loaded= -observe.message.db.loading= -observe.message.db.none.loaded= -observe.message.db.none.loaded.tip= -observe.message.delete= -observe.message.delete.directory= -observe.message.delete.new= -observe.message.detected.accepted.interval= -observe.message.detected.rejected.interval= -observe.message.exportData.delete.remote.maree= -observe.message.exportData.not.possible= -observe.message.exportData.operation.needFix= -observe.message.exportData.prepare.data= -observe.message.exportData.replicate.maree= -observe.message.goto.site= -observe.message.h2.server.login= -observe.message.h2.server.password= -observe.message.h2.server.url= -observe.message.help.usage= -observe.message.historical.data= -observe.message.importGPS.apply.point= -observe.message.importGPS.apply.points= -observe.message.importGPS.detect.point= -observe.message.importGPS.detect.points= -observe.message.importGPS.detected.point= -observe.message.importGPS.no.activity.selected= -observe.message.importGPS.no.detected.point= -observe.message.importGPS.no.invalid.interval= -observe.message.importGPS.nothing.to.do= -observe.message.importGPS.operation.needFix= -observe.message.importGPS.prepare.importFile= -observe.message.loaded.tip= -observe.message.need.fin.veille.activity= -observe.message.no.accepted.intervalle.detected= -observe.message.no.activity.detected= +observe.menu.actions=Acciones +observe.menu.application.locale=Aplicación +observe.menu.configuration=Configuración +observe.menu.configuration.tip=Menú de configuración +observe.menu.db.locale=Referencial +observe.menu.file=Archivo +observe.menu.help=Ayuda +observe.menu.locale=Idiomas +observe.menu.navigation=Navegación +observe.menu.storage=Origen de datos +observe.message.can.not.write.data=No tiene autorización para escribir los datos de observadores en este origen de datos. +observe.message.cant.add.echantillonRejetThon=Imposible añadir los muestreos de descartes de atunes (no hay descartes de atunes izados a bordo). +observe.message.cant.add.echantillonTargetCatch=Imposible añadir los muestreos de atunes (no hay captura de atunes) +observe.message.cant.add.nonTargetSample=Imposible añadir los muestreos (no hay descartes de fauna +observe.message.consolidate.operation.done=Operación de calculo de datos terminada en %1$s. +observe.message.consolidate.save.changes=Guardar las modificaciones de la(s) %1$s marea(s) modificada(s). +observe.message.creating.referentiel=Objeto en proceso de creación. +observe.message.db.closed=%1$s ha sido cerrado +observe.message.db.loaded=%1$s cargado +observe.message.db.loading=%1$s cargando +observe.message.db.none.loaded=No hay origen de datos cargado +observe.message.db.none.loaded.tip=No hay origen de datos cargado... +observe.message.delete=Confirmar la eliminación del objeto \:\n\n '%1$s' - '%2$s'\n +observe.message.delete.directory=Eliminación del directorio %1$s +observe.message.delete.new=Confirme la eliminación del objeto \:\n\n '%1$s'\n +observe.message.detected.accepted.interval=Intervalo de punto gps aceptado detectado \: %1$s +observe.message.detected.rejected.interval=Intervalo de punto gps rechazado detectado \: %1$s +observe.message.exportData.delete.remote.maree=Eliminación de la marea (%1$s) del programa (%2$s) de la base remota. +observe.message.exportData.not.possible=La exportación no es posible (vea el mensaje anterior). +observe.message.exportData.operation.needFix=Seleccione las mareas a exportar. +observe.message.exportData.prepare.data=Preparación de los datos a exportar... +observe.message.exportData.replicate.maree=Duplicación de la marea (%1$s) del programa (%2$s) hacia la base remota. +observe.message.goto.site=Acceder al sitio de d'Observe (%1$s) +observe.message.h2.server.login=Iniciar sesión +observe.message.h2.server.password=Contraseña +observe.message.h2.server.url=Url de acceso al servidor +observe.message.help.usage=Ayuda de Observe v %1$s +observe.message.historical.data=Datos históricos (puede cerrarse incluso sin validar) +observe.message.importGPS.apply.point=Integrar datos gps %1$s en %2$s +observe.message.importGPS.apply.points=Integar los datos gps en actividad seleccionada de la marea abierta +observe.message.importGPS.detect.point=Detección del punto gps de la actividad %1$s +observe.message.importGPS.detect.points=Detección de puntos gps para las actividades de la marea abierta +observe.message.importGPS.detected.point=Punto gps detectadao %1$s +observe.message.importGPS.no.activity.selected=Ninguna actividad seleccionada +observe.message.importGPS.no.detected.point=No detectado punto gps de la actividad. +observe.message.importGPS.no.invalid.interval=<No se utiliza ningún intervalo de puntos.> +observe.message.importGPS.nothing.to.do=Ningún dato a importar +observe.message.importGPS.operation.needFix=Se requieren correcciones para la importación GPS +observe.message.importGPS.prepare.importFile=Preparación de importación GPS \:\n - archivo a usar \: %1$s \n - tiempo máximo \: %2$s\n - velocidad máxima \: %3$s +observe.message.loaded.tip=La %1$s cargada,\n\nPuede cargar la base haciendo clic aquí. +observe.message.need.fin.veille.activity=Ninguna actividad de fin de guardia registrada en la ruta a cerrar.\n Puede \:\n\n\t- Cancelar el cierre y continuar con la ruta\n\t- Crear la actividad de fin de guardia e ir a ella.\n\t- Crear la actividad de fin de guardia y a continuación cerra la ruta\n\t- Continuar con el cierra de la ruta sin crear la actividad de fin de guardia. +observe.message.no.accepted.intervalle.detected=No se detecta ningún intervalo aceptable de punto gps +observe.message.no.activity.detected=No se encuentra actividad en la marea abierta. observe.message.no.activity.for.route= observe.message.no.activity.for.trip= -observe.message.no.local.db.found= -observe.message.no.open.maree.detected= -observe.message.no.report.selected= -observe.message.no.route.detected= -observe.message.no.route.for.maree= -observe.message.no.species.selected= -observe.message.no.trip.for.program= -observe.message.no.usage.for.entity= -observe.message.no.validation.detected= -observe.message.quit.invalid.edit= -observe.message.quit.valid.edit= -observe.message.referentiel.editable= -observe.message.referentiel.home= -observe.message.referentiel.no.editable= -observe.message.save.configuration= -observe.message.select.report= -observe.message.server.info= -observe.message.show.usage.for.delete= -observe.message.show.usage.for.delete2= -observe.message.show.usage.for.desactivated= -observe.message.show.usage.for.desactivated2= -observe.message.show.usage.for.desactivated3= -observe.message.show.usages= -observe.message.synchro.build.diff= -observe.message.synchro.create.temporary.db.to.resolve.obsoletes= -observe.message.synchro.local.modification= -observe.message.synchro.no.local.modification= -observe.message.synchro.no.referentiel.conflict= -observe.message.synchro.obsolete.data.to.duplicate= -observe.message.synchro.operation.canceled= -observe.message.synchro.operation.done= -observe.message.synchro.operation.failed= -observe.message.synchro.operation.needFix= -observe.message.synchro.ref.is.updtodate= -observe.message.synchro.referentiel.was.added= -observe.message.synchro.referentiel.was.modified= -observe.message.synchro.referentiel.was.removed= -observe.message.table.editBean.modified= -observe.message.table.editBean.modified.but.invalid= +observe.message.no.local.db.found=No existe la base local (ruta %1$s).\n\nPuede crear la base local o conectase a una base remota. +observe.message.no.open.maree.detected=No se encuentra ninguna marea abierta. +observe.message.no.report.selected=Ningún informe seleccionado +observe.message.no.route.detected=Ninguna ruta detectada en la marea abierta +observe.message.no.route.for.maree=Ninguna ruta en la marea actual +observe.message.no.species.selected=Ninguna especie seleccionada +observe.message.no.trip.for.program=Ninguna marea para el programa actual +observe.message.no.usage.for.entity=Ningún usuario encontrado. +observe.message.no.validation.detected=Ningún validador encontrado. +observe.message.quit.invalid.edit=¡Datos no validos, no se pueden guardar\!\n\nNota\: Si continúa se cancelarán todas las modificaciones. +observe.message.quit.valid.edit=¡Los datos han sido modificados y son válidos\! +observe.message.referentiel.editable=El referencial es editable. +observe.message.referentiel.home=< Referencial > +observe.message.referentiel.no.editable=No tiene permisos para editar el referencial. +observe.message.save.configuration=Guardar la configuración en el archivo %1$s +observe.message.select.report=Seleccione informe +observe.message.server.info=Inforamción modo servidor +observe.message.show.usage.for.delete=El referencial %1$s "%2$s" no se puede eliminar. +observe.message.show.usage.for.delete2=Los objetos están usando actualmente las referencias que se enumeran a continuación. +observe.message.show.usage.for.desactivated=El referencial %1$s "%2$s" se desactivará. +observe.message.show.usage.for.desactivated2=Los objetos están usando actualmente las referencias que se enumeran a continuación.. +observe.message.show.usage.for.desactivated3=Estos objetos deben usar otro referencial (no desactivado) para poder actualizarse. +observe.message.show.usages=Listas de usos de referenciales %1$s \: '%2$s' +observe.message.synchro.build.diff=Construcción del diferencial de referenciales desde\: %1$s +observe.message.synchro.create.temporary.db.to.resolve.obsoletes=Se han detectado elementos obsoletos, para resolverso se creará una base temporal +observe.message.synchro.local.modification=Los datos que han sido modificados en la base local deben ser guardados. +observe.message.synchro.no.local.modification=No se han modificado datos en la base local, no es necesario guardar. +observe.message.synchro.no.referentiel.conflict=El referencial de la base local no está actualizado (pero conflicto detectado). +observe.message.synchro.obsolete.data.to.duplicate=Elemento a recopiar en la base temporal +observe.message.synchro.operation.canceled=Operación cancelada +observe.message.synchro.operation.done=Operación terminada el %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$tS +observe.message.synchro.operation.failed=Error en la operación +observe.message.synchro.operation.needFix=La operación requiere corecciones. +observe.message.synchro.ref.is.updtodate=El referencial de la base local está actualizado, no se requieren correciones. +observe.message.synchro.referentiel.was.added=Se han añadido los datos al referencial remoto (%1$d objeto(s)) +observe.message.synchro.referentiel.was.modified=Se han modificado los datos en el referencial remoto (%1$d objeto(s)) +observe.message.synchro.referentiel.was.removed=Se han eliminado datos del referencial remoto (%1$d objeto(s)) +observe.message.table.editBean.modified=El registro actual se ha modificado y es válido. +observe.message.table.editBean.modified.but.invalid=El registro actual se ha modificado pero no es válido. observe.message.updating.floatingObject= -observe.message.updating.referentiel= -observe.message.validation.detected= -observe.message.validation.not.save.report= -observe.message.validation.nothing.to.do= -observe.message.validation.operation.done= -observe.message.validation.operation.needFix= -observe.message.validation.prepare.validators= -observe.message.validation.save.report= -observe.message.validation.start.maree= -observe.message.validation.start.referentiel= -observe.message.validation.use.storage= -observe.message.warning.will.be.delete= +observe.message.updating.referentiel=Se está actualizando el objeto. +observe.message.validation.detected=Se ha encontrado el validador para el tipo %1$s +observe.message.validation.not.save.report=No hay informe que guardar. +observe.message.validation.nothing.to.do=Los datos son válidos y no necesitan corrección. +observe.message.validation.operation.done=Ha terminado la operación de validación de %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$ts. +observe.message.validation.operation.needFix=Los datos no son válidos y necesitan ser corregidos. +observe.message.validation.prepare.validators=Detección de validadores +observe.message.validation.save.report=El informe de validación se ha guardado en el archivo %1$s +observe.message.validation.start.maree=Validación de la marea '%1$s' (%2$s) +observe.message.validation.start.referentiel=Validación del referencial de tipo '%1$s' (%2$s entidades) +observe.message.validation.use.storage=Se realizará la validación de %1$s +observe.message.warning.will.be.delete=%1$s\n\nAtención, la exportación reemplazará la marea existente. +observe.model.version= observe.navigationMenu.moveTrip= observe.navigationMenu.noAction= -observe.nonTargetCatch.message.table.will.delete.nonTargetSample= -observe.nonTargetCatch.table.catchWeight= -observe.nonTargetCatch.table.catchWeight.tip= -observe.nonTargetCatch.table.comment= -observe.nonTargetCatch.table.comment.tip= -observe.nonTargetCatch.table.deleteExtraMessage= -observe.nonTargetCatch.table.meanLength= -observe.nonTargetCatch.table.meanLength.tip= -observe.nonTargetCatch.table.meanWeight= -observe.nonTargetCatch.table.meanWeight.tip= -observe.nonTargetCatch.table.reasonForDiscard= -observe.nonTargetCatch.table.reasonForDiscard.tip= -observe.nonTargetCatch.table.speciesFate= -observe.nonTargetCatch.table.speciesFate.tip= -observe.nonTargetCatch.table.speciesFaune= -observe.nonTargetCatch.table.speciesFaune.tip= -observe.nonTargetCatch.table.totalCount= -observe.nonTargetCatch.table.totalCount.tip= -observe.nonTargetSample.table.count= -observe.nonTargetSample.table.count.tip= -observe.nonTargetSample.table.gender= -observe.nonTargetSample.table.gender.tip= -observe.nonTargetSample.table.length= -observe.nonTargetSample.table.length.tip= -observe.nonTargetSample.table.meanWeight= -observe.nonTargetSample.table.meanWeight.tip= -observe.nonTargetSample.table.picturesReferences= -observe.nonTargetSample.table.picturesReferences.tip= -observe.nonTargetSample.table.speciesFaune= -observe.nonTargetSample.table.speciesFaune.tip= -observe.objectObservedSpecies.table.count= -observe.objectObservedSpecies.table.count.tip= -observe.objectObservedSpecies.table.speciesFaune= -observe.objectObservedSpecies.table.speciesFaune.tip= -observe.objectObservedSpecies.table.speciesStatus= -observe.objectObservedSpecies.table.speciesStatus.tip= -observe.obstuna.action.create= -observe.obstuna.action.create.description= -observe.obstuna.action.drop= -observe.obstuna.action.drop.description= -observe.obstuna.action.security= -observe.obstuna.action.security.description= -observe.obstuna.action.update= -observe.obstuna.action.update.description= -observe.person.country= +observe.nonTargetCatch.message.table.will.delete.nonTargetSample=¡Confirmar la eliminación de los objetos de la copia de seguridad.\!\n\n Las especies siguientes no estarán disponibles en los muestreos\:\n%1$s\nComo consecuencia se suprimiràn los muestreos siguientes \:\n%2$s +observe.nonTargetCatch.table.catchWeight=Peso +observe.nonTargetCatch.table.catchWeight.tip=Peso estimados (en t) +observe.nonTargetCatch.table.comment=Comentario +observe.nonTargetCatch.table.comment.tip=Comentario +observe.nonTargetCatch.table.deleteExtraMessage=\nLa eliminación de una captura de fauna puede tener como consecuencia la eliminación de muestreo(s) de la especie. +observe.nonTargetCatch.table.meanLength=Talla +observe.nonTargetCatch.table.meanLength.tip=Talla media (en cm) +observe.nonTargetCatch.table.meanWeight=Peso medio +observe.nonTargetCatch.table.meanWeight.tip=Peso medio (en Kg) +observe.nonTargetCatch.table.reasonForDiscard=Razón del descarte +observe.nonTargetCatch.table.reasonForDiscard.tip=Razón del descarte +observe.nonTargetCatch.table.speciesFate=Devenir +observe.nonTargetCatch.table.speciesFate.tip=Devenir de fauna +observe.nonTargetCatch.table.speciesFaune=Especie +observe.nonTargetCatch.table.speciesFaune.tip=Especie +observe.nonTargetCatch.table.totalCount=Número +observe.nonTargetCatch.table.totalCount.tip=Número estimado +observe.nonTargetSample.table.count=Grupo de tallas +observe.nonTargetSample.table.count.tip=Grupo de tallas +observe.nonTargetSample.table.gender=Sexo +observe.nonTargetSample.table.gender.tip=Sexo +observe.nonTargetSample.table.length=Talla +observe.nonTargetSample.table.length.tip=Talla +observe.nonTargetSample.table.meanWeight=Peso +observe.nonTargetSample.table.meanWeight.tip=Peso del individuo +observe.nonTargetSample.table.picturesReferences=Ref. a foto +observe.nonTargetSample.table.picturesReferences.tip=Referencia a foto +observe.nonTargetSample.table.speciesFaune=Especie +observe.nonTargetSample.table.speciesFaune.tip=Especie +observe.objectObservedSpecies.table.count=Número +observe.objectObservedSpecies.table.count.tip=Número +observe.objectObservedSpecies.table.speciesFaune=Especie +observe.objectObservedSpecies.table.speciesFaune.tip=Especie +observe.objectObservedSpecies.table.speciesStatus=Estado +observe.objectObservedSpecies.table.speciesStatus.tip=Estado +observe.obstuna.action.create=Creación de Obstuna +observe.obstuna.action.create.description=Creación de una nueva base remota Obstuna +observe.obstuna.action.drop=Destrucción de Obstuna +observe.obstuna.action.drop.description=Destrucción de una base remota Obstuna +observe.obstuna.action.security=Actualización de seguridad de Obstuna +observe.obstuna.action.security.description=Actualización de securidad de una base remota Obstuna +observe.obstuna.action.update=Actualización de Obstuna +observe.obstuna.action.update.description=Actualización de una base remota Obstuna +observe.person.country=Nacionalidad observe.program.tab.general= observe.program.tab.observations= -observe.route.message.active.found= -observe.route.message.active.found.for.other.trip= -observe.route.message.creating= -observe.route.message.no.active.found= +observe.route.message.active.found=Ruta abierta. +observe.route.message.active.found.for.other.trip=Existe una ruta abierta en otra marea. +observe.route.message.creating=Ruta en proceso de creación. +observe.route.message.no.active.found=Ninguna ruta abierta, puede crear una nueva o reabrir una. observe.route.message.no.active.found.for.other.trip= -observe.route.message.not.open= -observe.route.message.updating= +observe.route.message.not.open=la ruta actual no está abierta, no se pueden hacer modificaciones. +observe.route.message.updating=Se está modificando la ruta actual. observe.route.title= observe.routes.title= -observe.runner.config.loaded= -observe.runner.config.migrate.file= -observe.runner.context.loaded= +observe.runner.config.loaded=Configuración de Observe v. %1$s cargada. +observe.runner.config.migrate.file=El fichero de configuración %1$s ha sido reemplazado por \n%2$s\nvers\n%3$s +observe.runner.context.loaded=Finlazada la inicialización del contexto en %1$s. observe.runner.copy.default.logConfigurationFile.file= observe.runner.copy.default.map.file= -observe.runner.copy.default.report.file= -observe.runner.copy.default.ui.file= -observe.runner.create.directory= -observe.runner.exists.directory= -observe.runner.i18n.loaded= -observe.runner.init= -observe.runner.load.database= -observe.runner.loaded= -observe.runner.loading.ui.configuration= -observe.runner.quit.withno.ui= -observe.runner.start= -observe.runner.ui.loaded= -observe.runner.user.directories.loaded= -observe.schoolEstimate.table.meanWeight= -observe.schoolEstimate.table.meanWeight.tip= -observe.schoolEstimate.table.speciesThon= -observe.schoolEstimate.table.speciesThon.tip= -observe.schoolEstimate.table.weight= -observe.schoolEstimate.table.weight.tip= +observe.runner.copy.default.report.file=Creación del archivo de informes %1$s. +observe.runner.copy.default.ui.file=Creación del archivo de - Création du fichier de cosmétique %1$s. +observe.runner.create.directory=Creación del directorio %1$s +observe.runner.exists.directory=El directorio %1$s existe. +observe.runner.i18n.loaded=Servicio de traducción cargado en el idioma %1$s. +observe.runner.init=Inicialización d'ObServe %1$s %2$s +observe.runner.load.database=Cargando el origen de datos +observe.runner.loaded=Se ha cargado ObServe v %1$s +observe.runner.loading.ui.configuration=Chargement du fichier de cosmétique %1$s +observe.runner.quit.withno.ui=Cierre de la aplicación sin abrir la interfaz gráfica +observe.runner.start=Inicio de ObServe %1$s %2$s +observe.runner.ui.loaded=Finalizada la inicialización de la interfaz gráfica +observe.runner.user.directories.loaded=Se ha inicializado el directorio del usuario (%1$s). +observe.schoolEstimate.table.meanWeight=Peso medio (en Kg) +observe.schoolEstimate.table.meanWeight.tip=Peso medio (en Kg) +observe.schoolEstimate.table.speciesThon=Especie +observe.schoolEstimate.table.speciesThon.tip=Especie de atún (no se puede modificar una vez se haya creado la estimación) +observe.schoolEstimate.table.weight=Peso (en t) +observe.schoolEstimate.table.weight.tip=Peso (en t) observe.section.cant.delete.message= observe.section.cant.delete.title= observe.sectionTemplate.delete.message= observe.sections.delete.message= -observe.security.referentiel= -observe.security.referentiel.tip= -observe.security.role= -observe.security.role.tip= -observe.security.technicien= -observe.security.technicien.tip= -observe.security.unused= -observe.security.unused.tip= -observe.security.utilisateur= -observe.security.utilisateur.tip= +observe.security.referentiel=Referencial +observe.security.referentiel.tip=Tiene permiso de solo lectura sobre el referencial (ningún permiso sobre los datos) +observe.security.role=Rol +observe.security.role.tip=Nombre del rol de la base +observe.security.technicien=Técnico +observe.security.technicien.tip=El rol tiene todos los permisos sobre el referencial y los datos +observe.security.unused=No utilizado +observe.security.unused.tip=No usar este rol +observe.security.utilisateur=Usuario +observe.security.utilisateur.tip=El rol tiene permisos de lectura sobre el referencial y los datos observe.sensorUsed.action.create= observe.sensorUsed.action.create.tip= observe.sensorUsed.action.reset.dataLocation.tip= @@ -1666,7 +1678,7 @@ observe.sensorUsed.table.sensorType= observe.sensorUsed.table.sensorType.tip= observe.sensorUsed.title= observe.setLongline.action.reset.homeId.tip= -observe.setLongline.basketsPerSectionCount= +observe.setLongline.basketsPerSectionCount=Número de cestas por sección observe.setLongline.branchlinesPerBasketCount= observe.setLongline.haulingBreaks= observe.setLongline.haulingDirectionSameAsSetting= @@ -1680,7 +1692,7 @@ observe.setLongline.lightsticksPerBasketCount= observe.setLongline.lightsticksType= observe.setLongline.lineType= observe.setLongline.maxDepthTargeted= -observe.setLongline.message.creating= +observe.setLongline.message.creating=Lance en proceso de creación. observe.setLongline.message.updating= observe.setLongline.monitored= observe.setLongline.number= @@ -1710,12 +1722,12 @@ observe.setSeine.currentSpeed= observe.setSeine.endPursingTimeStamp= observe.setSeine.endSetTimeStamp= observe.setSeine.maxGearDepth= -observe.setSeine.message.creating= -observe.setSeine.message.information.schoolType= -observe.setSeine.message.no.nonTargetDiscarded= -observe.setSeine.message.no.targetCatch= -observe.setSeine.message.no.targetDiscarded= -observe.setSeine.message.updating= +observe.setSeine.message.creating=Lance en proceso de creación. +observe.setSeine.message.information.schoolType=Tipo de banco calculado a partir de los sistemas observados de su actividad. +observe.setSeine.message.no.nonTargetDiscarded=El lance no tiene descartes de fauna. +observe.setSeine.message.no.targetCatch=Para los muestreos de atunes capturados, se necesita al menos una captura. +observe.setSeine.message.no.targetDiscarded=Para muestreos de atunes, se necesita al menos un descarte de atún izado a bordo. +observe.setSeine.message.updating=Se está modificando el lance actual. observe.setSeine.nonTargetDiscarded= observe.setSeine.reasonForNullSet= observe.setSeine.schoolMeanDepth= @@ -1724,7 +1736,7 @@ observe.setSeine.schoolTopDepth= observe.setSeine.schoolType= observe.setSeine.schoolType.not.fill= observe.setSeine.sonarUsed= -observe.setSeine.sonarUsedAvantSet= +observe.setSeine.sonarUsedAvantSet=Utilización del sonar antes del lance observe.setSeine.startTime= observe.setSeine.supportVesselName= observe.setSeine.tab.general= @@ -1739,7 +1751,7 @@ observe.speciesList.availableSpecies= observe.speciesList.selectedSpecies= observe.speciesList.tab.general= observe.speciesList.tab.species= -observe.storage.action.canMigrate= +observe.storage.action.canMigrate=Actualización de la base (versión actual %1$s) observe.storage.connexionStatut.failed= observe.storage.connexionStatut.failed.description= observe.storage.connexionStatut.success= @@ -1754,6 +1766,8 @@ observe.storage.creationMode.importLocalStorage= observe.storage.creationMode.importLocalStorage.description= observe.storage.creationMode.importRemoteStorage= observe.storage.creationMode.importRemoteStorage.description= +observe.storage.creationMode.importServerStorage= +observe.storage.creationMode.importServerStorage.description= observe.storage.creationMode.internalDump= observe.storage.creationMode.internalDump.description= observe.storage.dataPolicy.readData= @@ -1770,148 +1784,158 @@ observe.storage.dbMode.useLocal= observe.storage.dbMode.useLocal.description= observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= -observe.storage.error.dbVersionMismatch= -observe.storage.importExternalDump.config= -observe.storage.importExternalDump.description= +observe.storage.dbMode.useServer= +observe.storage.dbMode.useServer.description= +observe.storage.error.dbVersionMismatch=La versión de la base remota (%s)no es compatible con la versión del modelo (%s). +observe.storage.importExternalDump.config=Selección de la copia de seguridad a utilizar +observe.storage.importExternalDump.description=Seleccione el archivo de una copia de seguridad (*.sql.gz). observe.storage.importExternalDumpData.config= -observe.storage.importExternalDumpReferentiel.config= -observe.storage.importRemoteStorage.config= -observe.storage.importRemoteStorage.description= +observe.storage.importExternalDumpReferentiel.config=Seleccione la copia de seguridad que contiene el referencial a importar +observe.storage.importRemoteStorage.config=Seleccione la base remota a importar +observe.storage.importRemoteStorage.description=Configurar la conección hacia una base remota.\nAntes de continuar, debe validad la conexión. observe.storage.importRemoteStorageData.config= -observe.storage.importRemoteStorageReferentiel.config= -observe.storage.internalDump.last.modified= -observe.storage.internalDump.not.exist= -observe.storage.label.backup= +observe.storage.importRemoteStorageReferentiel.config=Escoja la base remota que contenga el referencial a importar +observe.storage.internalDump.last.modified=(última importación \: %1$td/%1$tm/%1$tY à %1$tH\:%1$tM) +observe.storage.internalDump.not.exist=No hay base de embarque. +observe.storage.label.backup=Base temporal para backup observe.storage.label.data.import.db= observe.storage.label.db.to.create= observe.storage.label.db.to.drop= observe.storage.label.db.to.update= observe.storage.label.db.to.update.security= observe.storage.label.import.data= -observe.storage.label.import.local= -observe.storage.label.import.referentiel= -observe.storage.label.import.remote= -observe.storage.label.local= +observe.storage.label.import.local=Base local de importación +observe.storage.label.import.referentiel=Base remota de importación +observe.storage.label.import.remote=Base remota de importación +observe.storage.label.local=Base local observe.storage.label.reference.import.db= -observe.storage.label.remote= -observe.storage.label.synchro= -observe.storage.label.synchro.incoming= -observe.storage.label.synchro.referentiel= -observe.storage.locale.db= +observe.storage.label.remote=Base remota +observe.storage.label.rest= +observe.storage.label.synchro=Base de sincronización +observe.storage.label.synchro.incoming=Base origen <%1$s> +observe.storage.label.synchro.referentiel=Base central <%1$s> +observe.storage.locale.db=(local) observe.storage.message.provider.detected= -observe.storage.no.creationMode= -observe.storage.no.creationMode.required= -observe.storage.no.dbMode= +observe.storage.no.creationMode=No se ha seleccionado ningún modo de creación +observe.storage.no.creationMode.required=No requerido. +observe.storage.no.dbMode=Ningún tipo de origen de datos seleccionado observe.storage.noImportData.config= -observe.storage.noImportReferentiel.config= -observe.storage.remote.db= -observe.storage.remote.login= -observe.storage.remote.password= -observe.storage.remote.url= -observe.storage.remote.useSll= -observe.storage.report.action.backup.local= -observe.storage.report.action.backup.remote= -observe.storage.report.action.connect.local= -observe.storage.report.action.connect.remote= -observe.storage.report.action.create.local= +observe.storage.noImportReferentiel.config=Sin configuración +observe.storage.remote.db=(remoto) +observe.storage.remote.login=Login +observe.storage.remote.password=Contraseña +observe.storage.remote.url=Url +observe.storage.remote.useSll=¿modo ssl? +observe.storage.report.action.backup.local=Copia de seguridad de la base local +observe.storage.report.action.backup.remote=Copia de seguridad de la base remota +observe.storage.report.action.connect.local=Conexión a una base local +observe.storage.report.action.connect.remote=Conexión a una base remota +observe.storage.report.action.create.local=Creación de la base local observe.storage.report.action.data.import.backup= -observe.storage.report.action.import.backup= -observe.storage.report.action.import.internal= +observe.storage.report.action.import.backup=Importar de una copia de seguridad \: +observe.storage.report.action.import.internal=Importar de el último referencial \: observe.storage.report.action.import.remote.data= -observe.storage.report.action.import.remote.referentiel= -observe.storage.report.action.migrate= +observe.storage.report.action.import.remote.referentiel=Imporatar el referencial de una base remota \: +observe.storage.report.action.migrate=Politica de actualización observe.storage.report.action.no.data.import= -observe.storage.report.action.no.referentiel.import= -observe.storage.report.action.referentiel.import.backup= -observe.storage.report.can.migrate= -observe.storage.report.can.not.migrate= -observe.storage.report.no.create.mode= -observe.storage.report.security.owner= -observe.storage.report.security.readers= -observe.storage.report.security.referentiels= -observe.storage.report.security.techniciens= -observe.storage.report.selected.all.data= +observe.storage.report.action.no.referentiel.import=No importar referencial +observe.storage.report.action.referentiel.import.backup=Importar referencial desde una copia de seguridad +observe.storage.report.can.migrate=Actualizar si es necesario (version actual \: %1$s) +observe.storage.report.can.not.migrate=No es posible actualizar +observe.storage.report.no.create.mode=No se requiere modo de creación de la base +observe.storage.report.security.owner=Propietario \: %1$s +observe.storage.report.security.readers=Lecturas \: %1$s +observe.storage.report.security.referentiels=Teferenciales \: %1$s +observe.storage.report.security.techniciens=Técnicos \: %1$s +observe.storage.report.selected.all.data=Se han exportado todos los datos del observador (%1$s marea(s)). observe.storage.report.selected.all.data.to.import= -observe.storage.report.selected.backup.file= -observe.storage.report.selected.data= +observe.storage.report.selected.backup.file=Ruta de la copia de seguridad \: +observe.storage.report.selected.data=%1$s marea(s) exportada observe.storage.report.selected.data.for.import= -observe.storage.report.selected.data.referentiel= -observe.storage.report.selected.data.to.export= +observe.storage.report.selected.data.referentiel=Se exportará el referencial +observe.storage.report.selected.data.to.export=Datos a exportar \: observe.storage.report.selected.data.to.import= -observe.storage.report.selected.localStorageFile= -observe.storage.report.selected.no.data= +observe.storage.report.selected.localStorageFile=Ruta de la base local \: +observe.storage.report.selected.no.data=No hay datos del observador par exportar observe.storage.report.selected.no.data.to.import= -observe.storage.report.selected.remoteStorage= -observe.storage.report.selected.security= -observe.storage.required.rw.on.data= -observe.storage.security.administrateur= -observe.storage.selected.dbMode= -observe.storage.selectedCreationMode= -observe.storage.showMigrationProgression= -observe.storage.showMigrationSql= -observe.storage.step.backup= -observe.storage.step.backup.description= -observe.storage.step.config= -observe.storage.step.config.description= +observe.storage.report.selected.remoteStorage=Información sobre la conexión remota a usar \: +observe.storage.report.selected.security=Seguridad +observe.storage.required.rw.on.data=No tiene los permisos necesarios para realizar esta operación.\n\nDebe tener permios de lectura y escritura de los datos del obaservador. +observe.storage.security.administrateur=Propietario de la base +observe.storage.selected.dbMode=Tipo de origen de datos seleccionado +observe.storage.selectedCreationMode=Modo de creación seleccionada +observe.storage.server.dataBase= +observe.storage.showMigrationProgression=Mostrar el progreso de las actualizaciones +observe.storage.showMigrationSql=Mostrar las consultas sql de las actualizaciones +observe.storage.step.backup=Copia de seguridad +observe.storage.step.backup.description=Guardadar la base local antes de cambiar el origen de datos +observe.storage.step.config=Configuracion +observe.storage.step.config.description=Configurar el origen de datos seleccionado observe.storage.step.configData= observe.storage.step.configData.description= -observe.storage.step.configReferentiel= -observe.storage.step.configReferentiel.description= -observe.storage.step.confirm= -observe.storage.step.confirm.description= -observe.storage.step.creationMode= -observe.storage.step.dbMode= -observe.storage.step.dbMode.description= -observe.storage.step.dbMode.detail= -observe.storage.step.label= -observe.storage.step.roles= -observe.storage.step.roles.description= -observe.storage.step.selectData= -observe.storage.step.selectData.description= -observe.storage.store.remote.config= -observe.storage.store.remote.config.tip= -observe.storage.useRemoteStorage.config= -observe.storage.useRemoteStorage.description= -observe.synchro.add.object= -observe.synchro.common.activity= -observe.synchro.common.latitude= -observe.synchro.common.longitude= -observe.synchro.common.quadrant= -observe.synchro.common.reference= -observe.synchro.common.select= -observe.synchro.common.vitesse= +observe.storage.step.configReferentiel=Referencial +observe.storage.step.configReferentiel.description=Configurar la importación del referencial +observe.storage.step.confirm=Resumén +observe.storage.step.confirm.description=Resumén de las operaciones a efectuar. +observe.storage.step.creationMode=Creación de la base local +observe.storage.step.dbMode=Modo +observe.storage.step.dbMode.description=Elegir el modo de conexión +observe.storage.step.dbMode.detail=Tipo de origen de datos +observe.storage.step.label=Etapa %1$d/%2$d \: %3$s +observe.storage.step.roles=Seguridad +observe.storage.step.roles.description=Configuración de la seguridad +observe.storage.step.selectData=Selección de datos +observe.storage.step.selectData.description=Seleccionar los datos a exportar en la copia de seguridad +observe.storage.store.remote.config=Mantener la configuración +observe.storage.store.remote.config.tip=Mantener los parámetros de configuración del origen de datos remota (excepto la contraseña por motivos de seguridad) +observe.storage.useRemoteStorage.config=Configurar la base remota a usar +observe.storage.useRemoteStorage.description=Configure la conexión a la base remota\nAntes de continuar, debe validar la conexión. +observe.storage.useServerStorage.config= +observe.storage.useServerStorage.description= +observe.synchro.add.object=Añadir el referencial %1$s +observe.synchro.common.activity=Actividad +observe.synchro.common.exist=Mareas en la base remota +observe.synchro.common.latitude=Latitud +observe.synchro.common.longitude=Longitud +observe.synchro.common.maree=Marea +observe.synchro.common.program=Programa +observe.synchro.common.quadrant=Cuadrante +observe.synchro.common.reference=Referencia +observe.synchro.common.select=... +observe.synchro.common.selected=Marea a exportar +observe.synchro.common.vitesse=Velocidad observe.synchro.config.data.mode= observe.synchro.config.data.storage= observe.synchro.config.export.required.read.data= observe.synchro.config.export.required.read.referentiel= -observe.synchro.config.export.required.write.data= -observe.synchro.config.importGPS= -observe.synchro.config.referentiel.mode= -observe.synchro.config.referentiel.storage= -observe.synchro.config.report= -observe.synchro.config.source.storage= -observe.synchro.config.validate= -observe.synchro.config.validation.report= -observe.synchro.configuration= -observe.synchro.continue.with.no.save.report= +observe.synchro.config.export.required.write.data=Debe tener derechos de escritura sobre los datos de la base remota +observe.synchro.config.importGPS=Configurar el archivo de importación GPS +observe.synchro.config.referentiel.mode=Modo de importación del referencial +observe.synchro.config.referentiel.storage=Configuración de la base de referencia +observe.synchro.config.report=Configuración de los imformes +observe.synchro.config.source.storage=Configuración de la base origen +observe.synchro.config.validate=Configuración de la validación +observe.synchro.config.validation.report=Informe de validación +observe.synchro.configuration=Configuración de las operaciones +observe.synchro.continue.with.no.save.report=Continuar sin guardar el informe observe.synchro.import.data.fromBackup= observe.synchro.import.data.fromRemoteStorage= -observe.synchro.importGPS.invalidIntervals.list= -observe.synchro.message.all.obsolete.entities.fixed= -observe.synchro.message.need.save.for.synchro.operation= -observe.synchro.message.need.save.for.validation.operation= -observe.synchro.message.obsolete.entities.fixed= -observe.synchro.message.obsolote.entity.ref.found= -observe.synchro.message.obsolote.entity.refs.found= -observe.synchro.message.saveLocal.skip= +observe.synchro.importGPS.invalidIntervals.list=Lista de los intervalos de puntos gps no usables +observe.synchro.message.all.obsolete.entities.fixed=No hay mas referencias a los objetos obsoletos. +observe.synchro.message.need.save.for.synchro.operation=La operación de sincronización de referenciales ha generado cambios +observe.synchro.message.need.save.for.validation.operation=la operación de validación de datos ha generado modificaciones. +observe.synchro.message.obsolete.entities.fixed=Los referenciales %1$s han sido eliminados +observe.synchro.message.obsolote.entity.ref.found=%1$s \: "%2$s" (1 referncia) +observe.synchro.message.obsolote.entity.refs.found=%1$s \: "%2$s" (%3$d referencias) +observe.synchro.message.saveLocal.skip=No es necesario realizar copia de seguidad de la base local observe.synchro.no.data.import= -observe.synchro.no.local.storage= -observe.synchro.no.referentiel.import= -observe.synchro.no.remote.storage= -observe.synchro.obsolete.entities.list= -observe.synchro.obsolete.entity.fix= -observe.synchro.obsolete.entity.label= -observe.synchro.obsolete.entity.to.change.label= +observe.synchro.no.local.storage=No hay base origen definida +observe.synchro.no.referentiel.import=No importar el referencial +observe.synchro.no.remote.storage=No hay base de referencia definida +observe.synchro.obsolete.entities.list=La lista de entidades de referenciales está obsoleta +observe.synchro.obsolete.entity.fix=Cambiar las referencias del objeto seleccionado +observe.synchro.obsolete.entity.label=%1$s \: "%2$s" +observe.synchro.obsolete.entity.to.change.label=Objeto obsoleto observe.synchro.operation.canceled= observe.synchro.operation.consolidate= observe.synchro.operation.consolidate.description= @@ -2194,27 +2218,27 @@ observe.title.unique.key= observe.title.validate= observe.title.validate.tip= observe.title.welcome.admin= -observe.tree.activityLongline= +observe.tree.activityLongline=Actividad observe.tree.activityLongline.unsaved= -observe.tree.activitySeine= +observe.tree.activitySeine=Actividad observe.tree.activitySeine.unsaved= observe.tree.baitHaulingStatus= observe.tree.baitSettingStatus= observe.tree.baitType= observe.tree.catchFateLongline= observe.tree.catchLongline= -observe.tree.country= -observe.tree.detectionMode= +observe.tree.country=País +observe.tree.detectionMode=Modo de detección observe.tree.encounter= observe.tree.encounterType= -observe.tree.floatingObject.unsaved= +observe.tree.floatingObject.unsaved=Nuevo DCP observe.tree.fpaZone= observe.tree.gear= observe.tree.gearCaracteristic= observe.tree.gearCaracteristicType= observe.tree.gearUseFeaturesLongline= observe.tree.gearUseFeaturesSeine= -observe.tree.harbour= +observe.tree.harbour=Puerto observe.tree.healthness= observe.tree.hookPosition= observe.tree.hookSize= @@ -2229,63 +2253,63 @@ observe.tree.longlineDetailComposition= observe.tree.longlineGlobalComposition= observe.tree.maturityStatus= observe.tree.mitigationType= -observe.tree.nonTargetCatch= -observe.tree.nonTargetSample= -observe.tree.objectFate= +observe.tree.nonTargetCatch=Fauna asociada conservada o descartada +observe.tree.nonTargetSample=Muestreo fauna asociada +observe.tree.objectFate=Devenir de objeto observe.tree.objectObservedSpecies= -observe.tree.objectOperation= +observe.tree.objectOperation=Operación sobre la baliza observe.tree.objectSchoolEstimate= -observe.tree.objectType= -observe.tree.observedSystem= -observe.tree.ocean= -observe.tree.organism= -observe.tree.person= -observe.tree.program= -observe.tree.reasonForDiscard= -observe.tree.reasonForNoFishing= -observe.tree.reasonForNullSet= +observe.tree.objectType=Tipo de objeto +observe.tree.observedSystem=Sistema observado +observe.tree.ocean=Océano +observe.tree.organism=Organismo +observe.tree.person=Observador +observe.tree.program=Programa +observe.tree.reasonForDiscard=Razon de descarte +observe.tree.reasonForNoFishing=Razón de no lance de Cerco +observe.tree.reasonForNullSet=Causa de lance nulo observe.tree.reference.common= observe.tree.reference.longline= observe.tree.reference.seine= -observe.tree.route= -observe.tree.route.unsaved= -observe.tree.schoolEstimate= +observe.tree.route=Ruta +observe.tree.route.unsaved=Nueva ruta +observe.tree.schoolEstimate=Estimación del banco observe.tree.sensorBrand= observe.tree.sensorDataFormat= observe.tree.sensorType= observe.tree.sensorUsed= observe.tree.setLongline= -observe.tree.setLongline.unsaved= +observe.tree.setLongline.unsaved=Nuevo Lance observe.tree.setSeine= -observe.tree.setSeine.unsaved= +observe.tree.setSeine.unsaved=Nuevo Lance observe.tree.settingShape= -observe.tree.sex= +observe.tree.sex=Sexo observe.tree.sizeMeasureType= -observe.tree.species= -observe.tree.speciesFate= -observe.tree.speciesGroup= +observe.tree.species=Especie +observe.tree.speciesFate=Devenir de fauna +observe.tree.speciesGroup=Grupo de especie de fauna observe.tree.speciesList= -observe.tree.speciesStatus= +observe.tree.speciesStatus=Estado de especie observe.tree.stomacFullness= -observe.tree.surroundingActivity= -observe.tree.targetCatch= -observe.tree.targetDiscarded= -observe.tree.targetSample= -observe.tree.targetSampleCapture= +observe.tree.surroundingActivity=Actividad circundante +observe.tree.targetCatch=Captura de atún +observe.tree.targetDiscarded=Descarte de atún +observe.tree.targetSample=Muestreo atún descartado +observe.tree.targetSampleCapture=Muestreo atún capturado observe.tree.tdr= observe.tree.transmittingBuoyOperation= observe.tree.transmittingBuoyType= -observe.tree.tripLongline.unsaved= -observe.tree.tripSeine.unsaved= +observe.tree.tripLongline.unsaved=Nueva marea +observe.tree.tripSeine.unsaved=Nueva marea observe.tree.tripType= -observe.tree.vessel= +observe.tree.vessel=Barco observe.tree.vesselActivityLongline= -observe.tree.vesselActivitySeine= -observe.tree.vesselSizeCategory= -observe.tree.vesselType= -observe.tree.weightCategory= +observe.tree.vesselActivitySeine=Actividad del barco +observe.tree.vesselSizeCategory=Capacidad +observe.tree.vesselType=Pesquería +observe.tree.weightCategory=Categoría de peso observe.tree.weightMeasureType= -observe.tree.wind= +observe.tree.wind=Fuerza del viento observe.tripLongline.captain= observe.tripLongline.dataEntryOperator= observe.tripLongline.endDate= @@ -2312,7 +2336,7 @@ observe.tripSeine.message.no.active.found= observe.tripSeine.message.not.open= observe.tripSeine.message.updating= observe.tripSeine.tab.general= -observe.tripSeine.tab.map= +observe.tripSeine.tab.map=Mapa observe.tripSeine.title= observe.validation.model.type.all= observe.validation.model.type.all.description= @@ -2332,4 +2356,5 @@ observe.view.navigation= observe.view.server= observe.warning.nimbus.landf= observe.warning.no.ui= +observeweb.configuration.description= ui.main.body.synchro.action.copy.to.clipBoard= 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 eeccb53..5e32df1 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 @@ -1,9 +1,9 @@ nuitonutil.error.convertor.noValue= nuitonutil.error.float.convertor= nuitonutil.error.no.convertor= -observe.about.message= -observe.about.translate.content= -observe.about.translate.title= +observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Application de saisie des données observateurs et de consultation de telles données depuis une base <i>Obstuna</i>.</p> <p>Ce projet a été initiée en 2008 par l'unité US 007-OSIRIS de <a href\="http\://www.ird.fr">l'IRD</a> dans le cadre d'un <a href\="http\://www.ird.fr/infor [...] +observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliore [...] +observe.about.translate.title=Traduire ObServe observe.action.HookSize.create.tip= observe.action.HookSize.delete.tip= observe.action.HookSize.detail.tip= @@ -14,798 +14,798 @@ observe.action.HookType.delete.tip= observe.action.HookType.detail.tip= observe.action.HookType.modify.tip= observe.action.HookType.save.tip= -observe.action.about= -observe.action.about.tip= -observe.action.add.floatingObject= -observe.action.add.floatingObject.tip= -observe.action.add.set= -observe.action.add.set.tip= -observe.action.add.setLongline= -observe.action.add.setLongline.tip= -observe.action.admin.cancel= -observe.action.admin.close= -observe.action.apply= -observe.action.auto.copy.to.clipboard= -observe.action.auto.copy.to.clipboard.tip= -observe.action.back.to.list= -observe.action.back.to.list.tip= -observe.action.baitHaulingStatus.create.tip= -observe.action.baitHaulingStatus.delete.tip= -observe.action.baitHaulingStatus.detail.tip= -observe.action.baitHaulingStatus.modify.tip= -observe.action.baitHaulingStatus.save.tip= -observe.action.baitSettingStatus.create.tip= -observe.action.baitSettingStatus.delete.tip= -observe.action.baitSettingStatus.detail.tip= -observe.action.baitSettingStatus.modify.tip= -observe.action.baitSettingStatus.save.tip= -observe.action.baitType.create.tip= -observe.action.baitType.delete.tip= -observe.action.baitType.detail.tip= -observe.action.baitType.modify.tip= -observe.action.baitType.save.tip= -observe.action.cancel= -observe.action.cancel.create.tip= -observe.action.catchFateLongline.create.tip= -observe.action.catchFateLongline.delete.tip= -observe.action.catchFateLongline.detail.tip= -observe.action.catchFateLongline.modify.tip= -observe.action.catchFateLongline.save.tip= -observe.action.change.storage= -observe.action.change.storage.tip= -observe.action.choose.db.dump= -observe.action.choose.db.dump.description= -observe.action.choose.db.dump.directory= -observe.action.choose.importGPS= -observe.action.choose.importGPS.description= -observe.action.choose.report.directory= -observe.action.choose.reportFile= -observe.action.choose.reportFile.description= -observe.action.choose.sensorUsed.exportData= -observe.action.choose.sensorUsed.importData= -observe.action.choose.tdr.exportData= -observe.action.choose.tdr.importData= -observe.action.close= -observe.action.close.activity.tip= -observe.action.close.maree.tip= -observe.action.close.open= -observe.action.close.open.tip= -observe.action.close.route.tip= -observe.action.close.storage= -observe.action.close.storage.tip= -observe.action.close.synchro.tip= -observe.action.closeAndCreate= -observe.action.closeAndCreate.activity= -observe.action.closeAndCreate.activity.tip= -observe.action.closeAndCreate.maree= -observe.action.closeAndCreate.maree.tip= -observe.action.closeAndCreate.route= -observe.action.closeAndCreate.route.tip= -observe.action.closeAndCreate.tip= -observe.action.commandline.configure.ui= -observe.action.commandline.create.id= -observe.action.commandline.disable.main.ui= -observe.action.commandline.help= -observe.action.commandline.help.ui= -observe.action.commandline.launch.admin.ui= -observe.action.commandline.launch.h2.server.mode= -observe.action.commandline.launch.obstuna.admin.ui= -observe.action.commandline.use.jmx= -observe.action.configuration= -observe.action.configuration.tip= -observe.action.configure= -observe.action.continue= -observe.action.copy= -observe.action.copy.column.headers= -observe.action.copy.column.headers.tip= -observe.action.copy.row.headers= -observe.action.copy.row.headers.tip= -observe.action.country.create.tip= -observe.action.country.delete.tip= -observe.action.country.detail.tip= -observe.action.country.modify.tip= -observe.action.country.save.tip= -observe.action.create= -observe.action.create.activity= -observe.action.create.activity.tip= -observe.action.create.entry.tip= -observe.action.create.gearUseFeaturesLongline= -observe.action.create.gearUseFeaturesLongline.tip= -observe.action.create.gearUseFeaturesSeine= -observe.action.create.gearUseFeaturesSeine.tip= -observe.action.create.maree= -observe.action.create.maree.tip= -observe.action.create.nonTargetCatch= -observe.action.create.nonTargetCatch.tip= -observe.action.create.nonTargetSample= -observe.action.create.nonTargetSample.tip= -observe.action.create.objectObservedSpecies= -observe.action.create.objectObservedSpecies.tip= -observe.action.create.route= -observe.action.create.route.tip= -observe.action.create.schoolEstimate= -observe.action.create.schoolEstimate.tip= -observe.action.create.targetCatch= -observe.action.create.targetCatch.tip= -observe.action.create.targetDiscarded= -observe.action.create.targetDiscarded.tip= -observe.action.create.targetSample= -observe.action.create.targetSample.tip= -observe.action.create.targetSampleCapture= -observe.action.create.targetSampleCapture.tip= -observe.action.db.locale.es.tip= -observe.action.db.locale.fr.tip= -observe.action.db.locale.uk.tip= -observe.action.delete= -observe.action.delete.activity.tip= -observe.action.delete.entry.tip= -observe.action.delete.floatingObject.tip= -observe.action.delete.maree.tip= -observe.action.delete.route.tip= -observe.action.delete.set.tip= -observe.action.delete.tip= -observe.action.detail= -observe.action.detectionMode.create.tip= -observe.action.detectionMode.delete.tip= -observe.action.detectionMode.detail.tip= -observe.action.detectionMode.modify.tip= -observe.action.detectionMode.save.tip= -observe.action.do.backup= -observe.action.do.backup.tip= -observe.action.encounterType.create.tip= -observe.action.encounterType.delete.tip= -observe.action.encounterType.detail.tip= -observe.action.encounterType.modify.tip= -observe.action.encounterType.save.tip= -observe.action.exit= -observe.action.exit.tip= -observe.action.fpaZone.create.tip= -observe.action.fpaZone.delete.tip= -observe.action.fpaZone.detail.tip= -observe.action.fpaZone.modify.tip= -observe.action.fpaZone.save.tip= -observe.action.gear.create.tip= -observe.action.gear.delete.tip= -observe.action.gear.detail.tip= -observe.action.gear.modify.tip= -observe.action.gear.save.tip= -observe.action.gearCaracteristic.create.tip= -observe.action.gearCaracteristic.delete.tip= -observe.action.gearCaracteristic.detail.tip= -observe.action.gearCaracteristic.modify.tip= -observe.action.gearCaracteristic.save.tip= -observe.action.gearCaracteristicType.create.tip= -observe.action.gearCaracteristicType.delete.tip= -observe.action.gearCaracteristicType.detail.tip= -observe.action.gearCaracteristicType.modify.tip= -observe.action.gearCaracteristicType.save.tip= -observe.action.goDown= -observe.action.goDown.tip= -observe.action.goUp= -observe.action.goUp.tip= -observe.action.goto.next.stage= -observe.action.goto.next.stage.tip= -observe.action.goto.open.activity= -observe.action.goto.open.activity.short= -observe.action.goto.open.activity.tip= -observe.action.goto.open.maree= -observe.action.goto.open.other.activity= -observe.action.goto.open.other.activity.tip= -observe.action.goto.open.other.maree= -observe.action.goto.open.other.maree.tip= -observe.action.goto.open.other.route= -observe.action.goto.open.other.route.tip= -observe.action.goto.open.program.short= -observe.action.goto.open.program.tip= -observe.action.goto.open.route= -observe.action.goto.open.route.short= -observe.action.goto.open.route.tip= -observe.action.goto.open.set.short= -observe.action.goto.open.set.tip= -observe.action.goto.open.trip.short= -observe.action.goto.open.trip.tip= -observe.action.goto.previous.stage= -observe.action.goto.previous.stage.tip= -observe.action.goto.referentiel.short= -observe.action.goto.referentiel.tip= -observe.action.goto.selected.activity= -observe.action.goto.selected.activity.tip= -observe.action.goto.selected.maree= -observe.action.goto.selected.maree.tip= -observe.action.goto.selected.route= -observe.action.goto.selected.route.tip= -observe.action.harbour.create.tip= -observe.action.harbour.delete.tip= -observe.action.harbour.detail.tip= -observe.action.harbour.modify.tip= -observe.action.harbour.save.tip= -observe.action.healthness.create.tip= -observe.action.healthness.delete.tip= -observe.action.healthness.detail.tip= -observe.action.healthness.modify.tip= -observe.action.healthness.save.tip= -observe.action.hookPosition.create.tip= -observe.action.hookPosition.delete.tip= -observe.action.hookPosition.detail.tip= -observe.action.hookPosition.modify.tip= -observe.action.hookPosition.save.tip= -observe.action.hookSize.create.tip= -observe.action.hookSize.delete.tip= -observe.action.hookSize.detail.tip= -observe.action.hookSize.modify.tip= -observe.action.hookSize.save.tip= -observe.action.hookType.create.tip= -observe.action.hookType.delete.tip= -observe.action.hookType.detail.tip= -observe.action.hookType.modify.tip= -observe.action.hookType.save.tip= -observe.action.info.storage= -observe.action.info.storage.tip= -observe.action.itemHorizontalPosition.create.tip= -observe.action.itemHorizontalPosition.delete.tip= -observe.action.itemHorizontalPosition.detail.tip= -observe.action.itemHorizontalPosition.modify.tip= -observe.action.itemHorizontalPosition.save.tip= -observe.action.itemVerticalPosition.create.tip= -observe.action.itemVerticalPosition.delete.tip= -observe.action.itemVerticalPosition.detail.tip= -observe.action.itemVerticalPosition.modify.tip= -observe.action.itemVerticalPosition.save.tip= -observe.action.lengthWeightParameter.create.tip= -observe.action.lengthWeightParameter.delete.tip= -observe.action.lengthWeightParameter.detail.tip= -observe.action.lengthWeightParameter.modify.tip= -observe.action.lengthWeightParameter.save.tip= -observe.action.lightsticksColor.create.tip= -observe.action.lightsticksColor.delete.tip= -observe.action.lightsticksColor.detail.tip= -observe.action.lightsticksColor.modify.tip= -observe.action.lightsticksColor.save.tip= -observe.action.lightsticksType.create.tip= -observe.action.lightsticksType.delete.tip= -observe.action.lightsticksType.detail.tip= -observe.action.lightsticksType.modify.tip= -observe.action.lightsticksType.save.tip= -observe.action.lineType.create.tip= -observe.action.lineType.delete.tip= -observe.action.lineType.detail.tip= -observe.action.lineType.modify.tip= -observe.action.lineType.save.tip= -observe.action.load.from.file= -observe.action.load.from.file.tip= -observe.action.locale.es= -observe.action.locale.es.tip= -observe.action.locale.fr= -observe.action.locale.fr.tip= -observe.action.locale.uk= -observe.action.locale.uk.tip= -observe.action.maturityStatus.create.tip= -observe.action.maturityStatus.delete.tip= -observe.action.maturityStatus.detail.tip= -observe.action.maturityStatus.modify.tip= -observe.action.maturityStatus.save.tip= -observe.action.mitigationType.create.tip= -observe.action.mitigationType.delete.tip= -observe.action.mitigationType.detail.tip= -observe.action.mitigationType.modify.tip= -observe.action.mitigationType.save.tip= -observe.action.modify= -observe.action.new.entry= -observe.action.new.entry.tip= -observe.action.objectFate.create.tip= -observe.action.objectFate.delete.tip= -observe.action.objectFate.detail.tip= -observe.action.objectFate.modify.tip= -observe.action.objectFate.save.tip= -observe.action.objectOperation.create.tip= -observe.action.objectOperation.delete.tip= -observe.action.objectOperation.detail.tip= -observe.action.objectOperation.modify.tip= -observe.action.objectOperation.save.tip= -observe.action.objectType.create.tip= -observe.action.objectType.delete.tip= -observe.action.objectType.detail.tip= -observe.action.objectType.modify.tip= -observe.action.objectType.save.tip= -observe.action.observedSystem.create.tip= -observe.action.observedSystem.delete.tip= -observe.action.observedSystem.detail.tip= -observe.action.observedSystem.modify.tip= -observe.action.observedSystem.save.tip= -observe.action.ocean.create.tip= -observe.action.ocean.delete.tip= -observe.action.ocean.detail.tip= -observe.action.ocean.modify.tip= -observe.action.ocean.save.tip= -observe.action.open.screen= -observe.action.openLink.formsUrl.tip= -observe.action.openLink.reportsUrl.tip= -observe.action.organism.create.tip= -observe.action.organism.delete.tip= -observe.action.organism.detail.tip= -observe.action.organism.modify.tip= -observe.action.organism.save.tip= -observe.action.person.create.tip= -observe.action.person.delete.tip= -observe.action.person.detail.tip= -observe.action.person.modify.tip= -observe.action.person.save.tip= -observe.action.program.create.tip= -observe.action.program.delete.tip= -observe.action.program.detail.tip= -observe.action.program.modify.tip= -observe.action.program.save.tip= -observe.action.quitHelp.tip= -observe.action.reasonForDiscard.create.tip= -observe.action.reasonForDiscard.delete.tip= -observe.action.reasonForDiscard.detail.tip= -observe.action.reasonForDiscard.modify.tip= -observe.action.reasonForDiscard.save.tip= -observe.action.reasonForNoFishing.create.tip= -observe.action.reasonForNoFishing.delete.tip= -observe.action.reasonForNoFishing.detail.tip= -observe.action.reasonForNoFishing.modify.tip= -observe.action.reasonForNoFishing.save.tip= -observe.action.reasonForNullSet.create.tip= -observe.action.reasonForNullSet.delete.tip= -observe.action.reasonForNullSet.detail.tip= -observe.action.reasonForNullSet.modify.tip= -observe.action.reasonForNullSet.save.tip= -observe.action.reload.application= -observe.action.reload.storage= -observe.action.reload.storage.tip= -observe.action.reload.ui= -observe.action.reloadDefaultConfiguration= -observe.action.reloadDefaultConfiguration.tip= -observe.action.reloadResources= -observe.action.reloadResources.tip= -observe.action.reopen= -observe.action.reopen.activity.tip= -observe.action.reopen.maree.tip= -observe.action.reopen.route.tip= -observe.action.reopen.selected.activity= -observe.action.reopen.selected.activity.tip= -observe.action.reopen.selected.maree= -observe.action.reopen.selected.maree.tip= -observe.action.reopen.selected.route= -observe.action.reopen.selected.route.tip= -observe.action.reopen.tip= -observe.action.reset= -observe.action.reset.entry.tip= -observe.action.reset.ersId.tip= -observe.action.reset.formsUrl.tip= -observe.action.reset.homeId.tip= -observe.action.reset.new.entry.tip= -observe.action.reset.picturesReferences.tip= -observe.action.reset.reportsUrl.tip= -observe.action.reset.supportVesselName.tip= -observe.action.reset.tip= -observe.action.reset.well.tip= -observe.action.restart.application= -observe.action.restart.application.tip= -observe.action.save= -observe.action.save.all.tip= -observe.action.save.entry.tip= -observe.action.save.tip= -observe.action.save.to.file= -observe.action.save.to.file.tip= -observe.action.selectNode= -observe.action.selectNode.tip= -observe.action.sensorBrand.create.tip= -observe.action.sensorBrand.delete.tip= -observe.action.sensorBrand.detail.tip= -observe.action.sensorBrand.modify.tip= -observe.action.sensorBrand.save.tip= -observe.action.sensorDataFormat.create.tip= -observe.action.sensorDataFormat.delete.tip= -observe.action.sensorDataFormat.detail.tip= -observe.action.sensorDataFormat.modify.tip= -observe.action.sensorDataFormat.save.tip= -observe.action.sensorType.create.tip= -observe.action.sensorType.delete.tip= -observe.action.sensorType.detail.tip= -observe.action.sensorType.modify.tip= -observe.action.sensorType.save.tip= -observe.action.settingShape.create.tip= -observe.action.settingShape.delete.tip= -observe.action.settingShape.detail.tip= -observe.action.settingShape.modify.tip= -observe.action.settingShape.save.tip= -observe.action.sex.create.tip= -observe.action.sex.delete.tip= -observe.action.sex.detail.tip= -observe.action.sex.modify.tip= -observe.action.sex.save.tip= -observe.action.show.technical.informations.tip= -observe.action.show.unique.keys.tip= -observe.action.show.usages.tip= -observe.action.showConfig.title= -observe.action.site= -observe.action.site.tip= -observe.action.sizeMeasureType.create.tip= -observe.action.sizeMeasureType.delete.tip= -observe.action.sizeMeasureType.detail.tip= -observe.action.sizeMeasureType.modify.tip= -observe.action.sizeMeasureType.save.tip= -observe.action.species.create.tip= -observe.action.species.delete.tip= -observe.action.species.detail.tip= -observe.action.species.modify.tip= -observe.action.species.save.tip= -observe.action.speciesFate.create.tip= -observe.action.speciesFate.delete.tip= -observe.action.speciesFate.detail.tip= -observe.action.speciesFate.modify.tip= -observe.action.speciesFate.save.tip= -observe.action.speciesGroupSpecies.create.tip= -observe.action.speciesGroupSpecies.delete.tip= -observe.action.speciesGroupSpecies.detail.tip= -observe.action.speciesGroupSpecies.modify.tip= -observe.action.speciesGroupSpecies.save.tip= -observe.action.speciesList.create.tip= -observe.action.speciesList.delete.tip= -observe.action.speciesList.detail.tip= -observe.action.speciesList.modify.tip= -observe.action.speciesStatus.create.tip= -observe.action.speciesStatus.delete.tip= -observe.action.speciesStatus.detail.tip= -observe.action.speciesStatus.modify.tip= -observe.action.speciesStatus.save.tip= -observe.action.start.h2.web.server= -observe.action.start.h2.web.server.tip= -observe.action.start.server.mode= -observe.action.start.server.mode.tip= -observe.action.stomacFullness.create.tip= -observe.action.stomacFullness.delete.tip= -observe.action.stomacFullness.detail.tip= -observe.action.stomacFullness.modify.tip= -observe.action.stomacFullness.save.tip= -observe.action.stop.h2.web.server= -observe.action.stop.h2.web.server.tip= -observe.action.stop.server.mode= -observe.action.stop.server.mode.tip= -observe.action.storage.apply= -observe.action.storage.apply.tip= -observe.action.storage.applyAction= -observe.action.storage.cancel= -observe.action.storage.cancel.tip= -observe.action.surroundingActivity.create.tip= -observe.action.surroundingActivity.delete.tip= -observe.action.surroundingActivity.detail.tip= -observe.action.surroundingActivity.modify.tip= -observe.action.surroundingActivity.save.tip= -observe.action.synchro.apply.modifications= -observe.action.synchro.cancel.tip= -observe.action.synchro.copy.tip= -observe.action.synchro.launch.operation= -observe.action.synchro.prepare.operation= -observe.action.synchro.report.reset.tip= -observe.action.test.remote= -observe.action.test.remote.tip= -observe.action.transmittingBuoyOperation.create.tip= -observe.action.transmittingBuoyOperation.delete.tip= -observe.action.transmittingBuoyOperation.detail.tip= -observe.action.transmittingBuoyOperation.modify.tip= -observe.action.transmittingBuoyOperation.save.tip= -observe.action.transmittingBuoyType.create.tip= -observe.action.transmittingBuoyType.delete.tip= -observe.action.transmittingBuoyType.detail.tip= -observe.action.transmittingBuoyType.modify.tip= -observe.action.transmittingBuoyType.save.tip= -observe.action.tripType.create.tip= -observe.action.tripType.delete.tip= -observe.action.tripType.detail.tip= -observe.action.tripType.modify.tip= -observe.action.tripType.save.tip= -observe.action.vessel.create.tip= -observe.action.vessel.delete.tip= -observe.action.vessel.detail.tip= -observe.action.vessel.modify.tip= -observe.action.vessel.save.tip= -observe.action.vesselActivityLongline.create.tip= -observe.action.vesselActivityLongline.delete.tip= -observe.action.vesselActivityLongline.detail.tip= -observe.action.vesselActivityLongline.modify.tip= -observe.action.vesselActivityLongline.save.tip= -observe.action.vesselActivitySeine.create.tip= -observe.action.vesselActivitySeine.delete.tip= -observe.action.vesselActivitySeine.detail.tip= -observe.action.vesselActivitySeine.modify.tip= -observe.action.vesselActivitySeine.save.tip= -observe.action.vesselSizeCategory.create.tip= -observe.action.vesselSizeCategory.delete.tip= -observe.action.vesselSizeCategory.detail.tip= -observe.action.vesselSizeCategory.modify.tip= -observe.action.vesselSizeCategory.save.tip= -observe.action.vesselType.create.tip= -observe.action.vesselType.delete.tip= -observe.action.vesselType.detail.tip= -observe.action.vesselType.modify.tip= -observe.action.vesselType.save.tip= -observe.action.weightCategory.create.tip= -observe.action.weightCategory.delete.tip= -observe.action.weightCategory.detail.tip= -observe.action.weightCategory.modify.tip= -observe.action.weightCategory.save.tip= -observe.action.weightMeasureType.create.tip= -observe.action.weightMeasureType.delete.tip= -observe.action.weightMeasureType.detail.tip= -observe.action.weightMeasureType.modify.tip= -observe.action.weightMeasureType.save.tip= -observe.action.wind.create.tip= -observe.action.wind.delete.tip= -observe.action.wind.detail.tip= -observe.action.wind.modify.tip= -observe.action.wind.save.tip= -observe.activityLongline.coordinate= -observe.activityLongline.fpaZone= -observe.activityLongline.message.active.found= -observe.activityLongline.message.active.found.for.other.trip= -observe.activityLongline.message.creating= -observe.activityLongline.message.no.active.found= -observe.activityLongline.message.no.active.found.for.other.trip= -observe.activityLongline.message.not.open= -observe.activityLongline.message.updating= -observe.activityLongline.seaSurfaceTemperature= -observe.activityLongline.timeStamp= -observe.activityLongline.title= -observe.activityLongline.vesselActivityLongline= -observe.activityLonglines.title= -observe.activityObservedSystem.availableObservedSystem= -observe.activityObservedSystem.selectedObservedSystem= -observe.activitySeine.message.active.found= -observe.activitySeine.message.active.found.for.other.route= -observe.activitySeine.message.creating= -observe.activitySeine.message.no.active.found= -observe.activitySeine.message.no.active.found.for.other.route= -observe.activitySeine.message.not.open= -observe.activitySeine.message.updating= -observe.activitySeine.tab.general= -observe.activitySeine.tab.measurements= -observe.activitySeine.title= -observe.activitySeineObservedSystem.title= -observe.activitySeines.title= -observe.admin.resume.no.operation.done= -observe.admin.resume.operation.canceled= -observe.admin.resume.operation.done= -observe.admin.resume.operation.failed= -observe.admin.resume.operation.need.fix= -observe.admin.resume.operation.not.started= -observe.admin.resume.operation.running= -observe.application.config= -observe.baitsComposition.action.create= -observe.baitsComposition.action.create.tip= -observe.baitsComposition.baitSettingStatus= -observe.baitsComposition.baitType= -observe.baitsComposition.individualSize= -observe.baitsComposition.individualWeight= -observe.baitsComposition.proportion= -observe.baitsComposition.proportionSum= -observe.baitsComposition.table.baitSettingStatus= -observe.baitsComposition.table.baitSettingStatus.tip= -observe.baitsComposition.table.baitType= -observe.baitsComposition.table.baitType.tip= -observe.baitsComposition.table.individualSize= -observe.baitsComposition.table.individualSize.tip= -observe.baitsComposition.table.individualWeight= -observe.baitsComposition.table.individualWeight.tip= -observe.baitsComposition.table.proportion= -observe.baitsComposition.table.proportion.tip= -observe.baitsComposition.title= -observe.basket.cant.delete.message= -observe.basket.cant.delete.title= -observe.basket.invalid.nextFloatline1Length= -observe.branchLine.cant.delete.message= -observe.branchLine.cant.delete.title= -observe.branchline.baitHaulingStatus= -observe.branchline.baitSettingStatus= -observe.branchline.baitType= -observe.branchline.comment= -observe.branchline.depthRecorder= -observe.branchline.hookLost= -observe.branchline.hookOffset= -observe.branchline.hookSize= -observe.branchline.hookType= -observe.branchline.message.modified= -observe.branchline.message.modified.but.invalid= -observe.branchline.snapWeight= -observe.branchline.swivelWeight= -observe.branchline.tab.general= -observe.branchline.tab.hookAndBait= -observe.branchline.timeSinceContact= -observe.branchline.timer= -observe.branchline.timerTimeOnBoard= -observe.branchline.title= -observe.branchline.topType= -observe.branchline.traceCutOff= -observe.branchline.tracelineType= -observe.branchline.weightedSnap= -observe.branchline.weightedSwivel= -observe.branchlinesComposition.action.create= -observe.branchlinesComposition.action.create.tip= -observe.branchlinesComposition.length= -observe.branchlinesComposition.proportion= -observe.branchlinesComposition.proportionSum= -observe.branchlinesComposition.table.length= -observe.branchlinesComposition.table.length.tip= -observe.branchlinesComposition.table.proportion= -observe.branchlinesComposition.table.proportion.tip= -observe.branchlinesComposition.table.topType= -observe.branchlinesComposition.table.topType.tip= -observe.branchlinesComposition.table.tracelineType= -observe.branchlinesComposition.table.tracelineType.tip= -observe.branchlinesComposition.title= -observe.branchlinesComposition.topType= -observe.branchlinesComposition.tracelineType= -observe.broughtOnDeck.comment= -observe.catchLongline.acquisitionMode= -observe.catchLongline.acquisitionMode.grouped= -observe.catchLongline.acquisitionMode.individual= -observe.catchLongline.action.create= -observe.catchLongline.action.create.tip= -observe.catchLongline.action.new= -observe.catchLongline.action.new.tip= -observe.catchLongline.action.reset.photoReferences.tip= -observe.catchLongline.availablePredator= -observe.catchLongline.basket= -observe.catchLongline.beatDiameter= -observe.catchLongline.branchline= -observe.catchLongline.catchFateLongline= -observe.catchLongline.catchHealthness= -observe.catchLongline.comment= -observe.catchLongline.count= -observe.catchLongline.depredated= -observe.catchLongline.discardHealthness= -observe.catchLongline.gonadeWeight= -observe.catchLongline.hookPosition= -observe.catchLongline.hookWhenDiscarded= -observe.catchLongline.locationOnLongline= -observe.catchLongline.maturityStatus= -observe.catchLongline.photoReferences= -observe.catchLongline.predator= -observe.catchLongline.resetBranchline= -observe.catchLongline.resetBranchline.tip= -observe.catchLongline.saveBranchline= -observe.catchLongline.saveBranchline.tip= -observe.catchLongline.section= -observe.catchLongline.selectedPredator= -observe.catchLongline.sex= -observe.catchLongline.speciesCatch= -observe.catchLongline.stomacFullness= -observe.catchLongline.tab.branchline= -observe.catchLongline.tab.caracteristics= -observe.catchLongline.tab.depredated= -observe.catchLongline.tab.foodAndSexual= -observe.catchLongline.tab.sizeMeasures= -observe.catchLongline.tab.weightMeasures= -observe.catchLongline.title= -observe.catchLongline.totalWeight= -observe.catchlongline.table.acquisitionMode= -observe.catchlongline.table.acquisitionMode.tip= -observe.catchlongline.table.basketHaulingId= -observe.catchlongline.table.basketHaulingId.tip= -observe.catchlongline.table.branchlineHaulingId= -observe.catchlongline.table.branchlineHaulingId.tip= -observe.catchlongline.table.catchFateLongline= -observe.catchlongline.table.catchFateLongline.tip= -observe.catchlongline.table.catchHealthness= -observe.catchlongline.table.catchHealthness.tip= -observe.catchlongline.table.comment= -observe.catchlongline.table.comment.tip= -observe.catchlongline.table.count= -observe.catchlongline.table.count.tip= -observe.catchlongline.table.depredated= -observe.catchlongline.table.depredated.tip= -observe.catchlongline.table.discardHealthness= -observe.catchlongline.table.discardHealthness.tip= -observe.catchlongline.table.sectionHaulingId= -observe.catchlongline.table.sectionHaulingId.tip= -observe.catchlongline.table.size= -observe.catchlongline.table.size.tip= -observe.catchlongline.table.sizeMeasureType= -observe.catchlongline.table.sizeMeasureType.tip= -observe.catchlongline.table.speciesCatch= -observe.catchlongline.table.speciesCatch.tip= -observe.catchlongline.table.weight= -observe.catchlongline.table.weight.tip= -observe.catchlongline.table.weightMeasureType= -observe.catchlongline.table.weightMeasureType.tip= -observe.choice.cancel= -observe.choice.confirm.delete= -observe.choice.continue= -observe.choice.create.fin.veille.activity= -observe.choice.create.fin.veille.activity.and.continue= -observe.choice.createLocalStorage= -observe.choice.doNotSave= -observe.choice.doNothing= -observe.choice.not.create.fin.veille.activity.and.continue= -observe.choice.quit= -observe.choice.save= -observe.choice.useRemoteStorage= -observe.common.acquisitionMode= -observe.common.acquisitionMode.count= -observe.common.acquisitionMode.individu= -observe.common.activities= -observe.common.activities.list= -observe.common.activity= +observe.action.about=À propos +observe.action.about.tip=À propos d'ObServe... +observe.action.add.floatingObject=Ajouter un DCP +observe.action.add.floatingObject.tip=Ajouter un objet flottant à l'activité +observe.action.add.set=Ajouter la calée +observe.action.add.set.tip=Ajouter la calée de l'activité +observe.action.add.setLongline=Ajouter l'opération de pêche +observe.action.add.setLongline.tip=Ajouter l'opération de pêche associée à cette activité +observe.action.admin.cancel=Annulation de l'assistant +observe.action.admin.close=Fermeture de l'assistant +observe.action.apply=Appliquer +observe.action.auto.copy.to.clipboard=Copie automatique dans le presse-papier +observe.action.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le contenu du presse-papier avec les résultats +observe.action.back.to.list=Retour à la liste +observe.action.back.to.list.tip=Retour à la liste des données +observe.action.baitHaulingStatus.create.tip=Créer un nouveau status de l'appât au virage +observe.action.baitHaulingStatus.delete.tip=Supprimer le status de l'appât au virage sélectionné +observe.action.baitHaulingStatus.detail.tip=Voir les détails du status de l'appât au virage sélectionné +observe.action.baitHaulingStatus.modify.tip=Modifier le status de l'appât au virage sélectionné +observe.action.baitHaulingStatus.save.tip=Sauver les modifications du status de l'appât au virage +observe.action.baitSettingStatus.create.tip=Créer un nouveau status de l'appât au filage +observe.action.baitSettingStatus.delete.tip=Supprimer le status de l'appât au filage sélectionné +observe.action.baitSettingStatus.detail.tip=Voir les détails du status de l'appât au filage sélectionné +observe.action.baitSettingStatus.modify.tip=Modifier le status de l'appât au filage sélectionné +observe.action.baitSettingStatus.save.tip=Sauver les modifications du status de l'appât au filage +observe.action.baitType.create.tip=Créer un nouveau type d'appât +observe.action.baitType.delete.tip=Supprimer le type d'appât sélectionné +observe.action.baitType.detail.tip=Voir les détails du type d'appât sélectionné +observe.action.baitType.modify.tip=Modifier le type d'appât sélectionné +observe.action.baitType.save.tip=Sauver les modifications du type d'appât +observe.action.cancel=Annuler +observe.action.cancel.create.tip=Annuler la création de l'objet +observe.action.catchFateLongline.create.tip=Créer un nouveau devenir capture +observe.action.catchFateLongline.delete.tip=Supprimer le devenir capture sélectionné +observe.action.catchFateLongline.detail.tip=Voir les détails du devenir capture sélectionné +observe.action.catchFateLongline.modify.tip=Modifier le devenir capture sélectionné +observe.action.catchFateLongline.save.tip=Sauver les modifications du devenir capture +observe.action.change.storage=Changer la source de données +observe.action.change.storage.tip=Pour changer la source de données de l'application +observe.action.choose.db.dump=Choisir la sauvegarde +observe.action.choose.db.dump.description=Sauvegarde de base (*.sql.gz) +observe.action.choose.db.dump.directory=Choisir le répertoire de sauvegarde +observe.action.choose.importGPS=Utiliser ce fichier +observe.action.choose.importGPS.description=Fichier GPS (*.gpx) +observe.action.choose.report.directory=Choisir le répertoire des rapports +observe.action.choose.reportFile=Choisir le fichier de définition de report +observe.action.choose.reportFile.description=Fichier de définition (*.properties) +observe.action.choose.sensorUsed.exportData=Exporter le fichier de données +observe.action.choose.sensorUsed.importData=Importer le fichier de données +observe.action.choose.tdr.exportData=Exporter le fichier de données +observe.action.choose.tdr.importData=Importer le fichier de données +observe.action.close=Fermer +observe.action.close.activity.tip=Clôturer l'activité ouverte +observe.action.close.maree.tip=Clôturer la marée ouverte +observe.action.close.open=Clôturer +observe.action.close.open.tip=Clotûrer la données ouverte +observe.action.close.route.tip=Clôturer la route ouverte +observe.action.close.storage=Fermer la source de données +observe.action.close.storage.tip=Fermer la source de données actuellement utilisée +observe.action.close.synchro.tip=Fermer la fenêtre +observe.action.closeAndCreate=Clôturer et créer +observe.action.closeAndCreate.activity=Activité suivante +observe.action.closeAndCreate.activity.tip=Clôturer l'activite courante et en créer une nouvelle +observe.action.closeAndCreate.maree=Marée suivante +observe.action.closeAndCreate.maree.tip=Clôturer la marée courante et en créer une nouvelle +observe.action.closeAndCreate.route=Route suivante +observe.action.closeAndCreate.route.tip=Clôturer la route courante et en créer une nouvelle +observe.action.closeAndCreate.tip=Clôturer l'élément courant et en créer un nouveau +observe.action.commandline.configure.ui=Configurer l'application +observe.action.commandline.create.id=Générer des topiaIds.\nDeux paramètres sont nécessaires\:\n\tLe FQN de la classe\n\tLe nombre d'id à générer. +observe.action.commandline.disable.main.ui=Ne pas lancer l'interface graphique +observe.action.commandline.help=Afficher l'aide +observe.action.commandline.help.ui=Afficher le manuel utilisateur (mode graphique) +observe.action.commandline.launch.admin.ui=Lancer une opération d'administration +observe.action.commandline.launch.h2.server.mode=Lancer ObServe en mode serveur +observe.action.commandline.launch.obstuna.admin.ui=Lancer une opération d'administration sur Obstuna +observe.action.commandline.use.jmx=Ajouter le support JMX +observe.action.configuration=Configuration +observe.action.configuration.tip=Modifier la configuration +observe.action.configure=Configurer +observe.action.continue=Continuer +observe.action.copy=Copier dans le presse-papier +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.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é +observe.action.country.modify.tip=Modifier le pays sélectionné +observe.action.country.save.tip=Sauver les modifications du pays +observe.action.create=Créer +observe.action.create.activity=Créer une nouvelle activité +observe.action.create.activity.tip=Créer une nouvelle activité pour la route courante +observe.action.create.entry.tip=Créer une nouvelle entrée +observe.action.create.gearUseFeaturesLongline=Créer un équipement +observe.action.create.gearUseFeaturesLongline.tip=Créer un nouvel équipement +observe.action.create.gearUseFeaturesSeine=Créer un équipement +observe.action.create.gearUseFeaturesSeine.tip=Créer un nouvel équipement +observe.action.create.maree=Créer une nouvelle marée +observe.action.create.maree.tip=Créer une nouvelle marée pour le programme courant +observe.action.create.nonTargetCatch=Insérer cette espèce / poids / devenir +observe.action.create.nonTargetCatch.tip=Insérer cette espèce / poids / devenir +observe.action.create.nonTargetSample=Insérer cet échantillon +observe.action.create.nonTargetSample.tip=Insérer cet échantillon de faune accessoire +observe.action.create.objectObservedSpecies=Insérer +observe.action.create.objectObservedSpecies.tip=Insérer l'espèce faune observée +observe.action.create.route=Créer une nouvelle route +observe.action.create.route.tip=Créer une nouvelle route pour la marée courante +observe.action.create.schoolEstimate=Insérer cette estimation +observe.action.create.schoolEstimate.tip=Insérer la nouvelle estimation dans la table +observe.action.create.targetCatch=Insérer cette capture / catégorie +observe.action.create.targetCatch.tip=Insérer cette capture / catégorie +observe.action.create.targetDiscarded=Insérer ce rejet / catégorie / raison +observe.action.create.targetDiscarded.tip=Insérer ce rejet / catégorie / raison +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.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 +observe.action.delete=Supprimer +observe.action.delete.activity.tip=Supprimer l'activité +observe.action.delete.entry.tip=Supprimer l'entrée en cours d'édition +observe.action.delete.floatingObject.tip=Supprimer l'objet flottant courant +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.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é +observe.action.detectionMode.detail.tip=Voir les détails du mode détection sélectionné +observe.action.detectionMode.modify.tip=Modifier le mode de détection sélectionné +observe.action.detectionMode.save.tip=Sauver les modifications du mode de détection +observe.action.do.backup=Sauver la base locale +observe.action.do.backup.tip=Effectuer une sauvegarde dela base locale avant d'appliquer les changements +observe.action.encounterType.create.tip=Créer un nouveau type de rencontre +observe.action.encounterType.delete.tip=Supprimer le type de rencontre sélectionné +observe.action.encounterType.detail.tip=Voir les détails du type de rencontre sélectionné +observe.action.encounterType.modify.tip=Modifier le type de rencontre sélectionné +observe.action.encounterType.save.tip=Sauver les modifications du type de rencontre +observe.action.exit=Quitter +observe.action.exit.tip=Quitter ObServe +observe.action.fpaZone.create.tip=Créer une nouvelle zone FPA +observe.action.fpaZone.delete.tip=Supprimer la zone FPA sélectionnée +observe.action.fpaZone.detail.tip=Voir les détails de la zone FPA sélectionnée +observe.action.fpaZone.modify.tip=Modifier la zone FPA sélectionnée +observe.action.fpaZone.save.tip=Sauver les modifications de la zone FPA +observe.action.gear.create.tip=Créer un nouvel équipment +observe.action.gear.delete.tip=Supprimer l'équipment sélectionné +observe.action.gear.detail.tip=Voir les détails de l'équipment sélectionné +observe.action.gear.modify.tip=Modifier l'équipment sélectionné +observe.action.gear.save.tip=Sauver les modifications de l'équipment +observe.action.gearCaracteristic.create.tip=Créer une nouvelle caractéristique +observe.action.gearCaracteristic.delete.tip=Supprimer la caractéristique sélectionnée +observe.action.gearCaracteristic.detail.tip=Voir les détails de la caractéristique sélectionnée +observe.action.gearCaracteristic.modify.tip=Modifier la caractéristique sélectionnée +observe.action.gearCaracteristic.save.tip=Sauver les modifications de la caractéristique +observe.action.gearCaracteristicType.create.tip=Créer un nouveau type de caractéristique +observe.action.gearCaracteristicType.delete.tip=Supprimer le type de caractéristique sélectionné +observe.action.gearCaracteristicType.detail.tip=Voir les détails du type de caractéristique sélectionné +observe.action.gearCaracteristicType.modify.tip=Modifier le type de caractéristique sélectionné +observe.action.gearCaracteristicType.save.tip=Sauver les modifications du type de caractéristique +observe.action.goDown=Descendre vers ... +observe.action.goDown.tip=Descendre dans la navigation +observe.action.goUp=Remonter vers ... +observe.action.goUp.tip=Remonter dans la navigation +observe.action.goto.next.stage=Suivant +observe.action.goto.next.stage.tip=Accéder à l'étape suivante +observe.action.goto.open.activity=Accéder à l'activité ouverte +observe.action.goto.open.activity.short=Activité ouverte +observe.action.goto.open.activity.tip=Accéder à l'activité ouverte +observe.action.goto.open.maree=Accéder à la marée ouverte +observe.action.goto.open.other.activity=Accéder à l'activité ouverte dans une autre route +observe.action.goto.open.other.activity.tip=Accéder à l'activité ouverte (dans une autre route) +observe.action.goto.open.other.maree=Accéder à la marée ouverte dans un autre program +observe.action.goto.open.other.maree.tip=Accéder à la marée ouverte (dans un autre program) +observe.action.goto.open.other.route=Accéder à la route ouverte dans une autre marée +observe.action.goto.open.other.route.tip=Accéder à la route ouverte (dans une autre marée) +observe.action.goto.open.program.short=Program ouvert +observe.action.goto.open.program.tip=Accéder au programme ouvert +observe.action.goto.open.route=Accéder à la route ouverte +observe.action.goto.open.route.short=Route ouverte +observe.action.goto.open.route.tip=Accéder à la route ouverte +observe.action.goto.open.set.short=Calée ouverte +observe.action.goto.open.set.tip=Accéder à la calée ouverte +observe.action.goto.open.trip.short=Marée ouverte +observe.action.goto.open.trip.tip=Accéder à la marée ouverte +observe.action.goto.previous.stage=Précédent +observe.action.goto.previous.stage.tip=Accèder à l'étape précédente +observe.action.goto.referentiel.short=Référentiel +observe.action.goto.referentiel.tip=Accéder au référentiel +observe.action.goto.selected.activity=Accéder à l'activité +observe.action.goto.selected.activity.tip=Accéder à l'activité sélectionnée +observe.action.goto.selected.maree=Accéder à la marée +observe.action.goto.selected.maree.tip=Accéder à la marée sélectionnée +observe.action.goto.selected.route=Accéder à la route +observe.action.goto.selected.route.tip=Accéder à la route sélectionnée +observe.action.harbour.create.tip=Créer un nouveau port +observe.action.harbour.delete.tip=Supprimer le port sélectionné +observe.action.harbour.detail.tip=Voir les détails du port sélectionné +observe.action.harbour.modify.tip=Modifier le port sélectionné +observe.action.harbour.save.tip=Sauver les modifications du port +observe.action.healthness.create.tip=Créer un nouveau statut de capture +observe.action.healthness.delete.tip=Supprimer le statut de santé sélectionné +observe.action.healthness.detail.tip=Voir les détails du statut de santé sélectionné +observe.action.healthness.modify.tip=Modifier le statut de santé sélectionné +observe.action.healthness.save.tip=Sauver les modifications du statut de santé +observe.action.hookPosition.create.tip=Créer une nouvelle position d'hameçon +observe.action.hookPosition.delete.tip=Supprimer la position d'hameçon sélectionnée +observe.action.hookPosition.detail.tip=Voir les détails de la position d'hameçon sélectionnée +observe.action.hookPosition.modify.tip=Modifier la position d'hameçon sélectionnée +observe.action.hookPosition.save.tip=Sauver les modifications de la position d'hameçon +observe.action.hookSize.create.tip=Créer une nouvelle taille d'hameçon +observe.action.hookSize.delete.tip=Supprimer la taille d'hameçon sélectionné +observe.action.hookSize.detail.tip=Voir les détails de la taille d'hameçon sélectionné +observe.action.hookSize.modify.tip=Modifier la taille d'hameçon sélectionné +observe.action.hookSize.save.tip=Sauver les modifications du type de hameçon +observe.action.hookType.create.tip=Créer un nouveau type d'hameçon +observe.action.hookType.delete.tip=Supprimer le type d'hameçon sélectionné +observe.action.hookType.detail.tip=Voir les détails du type d'hameçon sélectionné +observe.action.hookType.modify.tip=Modifier le type d'hameçon sélectionné +observe.action.hookType.save.tip=Sauver les modifications du type d'hameçon +observe.action.info.storage=Informations sur la source de données +observe.action.info.storage.tip=Voir les informations sur la source de données actuellement utilisée +observe.action.itemHorizontalPosition.create.tip=Créer une nouvelle localisation de l'élément sur la ligne mère +observe.action.itemHorizontalPosition.delete.tip=Supprimer la localisation de l'élément sur la ligne mère sélectionnée +observe.action.itemHorizontalPosition.detail.tip=Voir les détails de la localisation de l'élément sur la ligne mère sélectionnée +observe.action.itemHorizontalPosition.modify.tip=Modifier la localisation de l'élément sur la ligne mère sélectionnée +observe.action.itemHorizontalPosition.save.tip=Sauver les modifications de la localisation de l'élément sur la ligne mère +observe.action.itemVerticalPosition.create.tip=Créer une nouvelle localisation de l'élément sur l'avançon +observe.action.itemVerticalPosition.delete.tip=Supprimer la localisation de l'élément sur l'avançon sélectionnée +observe.action.itemVerticalPosition.detail.tip=Voir les détails de la localisation de l'élément sur l'avançon sélectionnée +observe.action.itemVerticalPosition.modify.tip=Modifier la localisation de l'élément sur l'avançon sélectionnée +observe.action.itemVerticalPosition.save.tip=Sauver les modifications de la localisation de l'élément sur l'avançon +observe.action.lengthWeightParameter.create.tip=Créer un nouveau paramétrage taille-poids +observe.action.lengthWeightParameter.delete.tip=Supprimer le paramétrage taille-poids sélectionné +observe.action.lengthWeightParameter.detail.tip=Voir les détails du paramétrage taille-poids +observe.action.lengthWeightParameter.modify.tip=Modifier le paramétrage taille-poids +observe.action.lengthWeightParameter.save.tip=Sauver les modifications du paramétrage taille-poids +observe.action.lightsticksColor.create.tip=Créer une nouvelle couleur de baton lumineux +observe.action.lightsticksColor.delete.tip=Supprimer la couleur de baton lumineux sélectionnée +observe.action.lightsticksColor.detail.tip=Voir les détails de la couleur de baton lumineux sélectionnée +observe.action.lightsticksColor.modify.tip=Modifier la couleur de baton lumineux sélectionnée +observe.action.lightsticksColor.save.tip=Sauver les modifications de la couleur de baton lumineux +observe.action.lightsticksType.create.tip=Créer un nouveau type de baton lumineux +observe.action.lightsticksType.delete.tip=Supprimer le type de baton lumineux sélectionné +observe.action.lightsticksType.detail.tip=Voir les détails du type de baton lumineux sélectionné +observe.action.lightsticksType.modify.tip=Modifier le type de baton lumineux sélectionné +observe.action.lightsticksType.save.tip=Sauver les modifications du type de baton lumineux +observe.action.lineType.create.tip=Créer un nouveau type de ligne +observe.action.lineType.delete.tip=Supprimer le type de ligne sélectionné +observe.action.lineType.detail.tip=Voir les détails du type de ligne sélectionné +observe.action.lineType.modify.tip=Modifier le type de ligne sélectionné +observe.action.lineType.save.tip=Sauver les modifications du type de ligne +observe.action.load.from.file=Importer une sauvegarde +observe.action.load.from.file.tip=Charger une base locale depuis un fichier de sauvegarde +observe.action.locale.es=Espagnol +observe.action.locale.es.tip=Changer la langue de l'application en espagnol +observe.action.locale.fr=Français +observe.action.locale.fr.tip=Changer la langue de l'application en français +observe.action.locale.uk=Anglais +observe.action.locale.uk.tip=Changer la langue de l'application en anglais +observe.action.maturityStatus.create.tip=Créer une nouvelle maturité +observe.action.maturityStatus.delete.tip=Supprimer le maturité sélectionnée +observe.action.maturityStatus.detail.tip=Voir les détails de la maturité sélectionnée +observe.action.maturityStatus.modify.tip=Modifier la maturité sélectionnée +observe.action.maturityStatus.save.tip=Sauver les modifications de la maturité +observe.action.mitigationType.create.tip=Créer un nouveau type de mesure d'atténuation +observe.action.mitigationType.delete.tip=Supprimer le type de mesure d'atténuation sélectionné +observe.action.mitigationType.detail.tip=Voir les détails du type de mesure d'atténuation sélectionné +observe.action.mitigationType.modify.tip=Modifier le type de mesure d'atténuation sélectionné +observe.action.mitigationType.save.tip=Sauver les modifications du type de mesure d'atténuation +observe.action.modify=Modifier +observe.action.new.entry=Nouveau +observe.action.new.entry.tip=Créer une nouvelle entrée +observe.action.objectFate.create.tip=Créer un nouveau devenir objet +observe.action.objectFate.delete.tip=Supprimer le devenir objet sélectionné +observe.action.objectFate.detail.tip=Voir les détails du devenir objet sélectionné +observe.action.objectFate.modify.tip=Modifier le devenir objet sélectionné +observe.action.objectFate.save.tip=Sauver les modifications du devenir objet +observe.action.objectOperation.create.tip=Créer une nouvelle opération objet +observe.action.objectOperation.delete.tip=Supprimer l'opération objet sélectionné +observe.action.objectOperation.detail.tip=Voir les détails de l'opération objet sélectionnée +observe.action.objectOperation.modify.tip=Modifier l'opération objet sélectionnée +observe.action.objectOperation.save.tip=Sauver les modifications de l'opération objet +observe.action.objectType.create.tip=Créer un nouveau type d'objet +observe.action.objectType.delete.tip=Supprimer le type d'objet sélectionné +observe.action.objectType.detail.tip=Voir les détails du type d'objet sélectionné +observe.action.objectType.modify.tip=Modifier le type d'objet sélectionné +observe.action.objectType.save.tip=Sauver les modifications du type d'objet +observe.action.observedSystem.create.tip=Créer un nouveau système observé +observe.action.observedSystem.delete.tip=Supprimer le système observé sélectionné +observe.action.observedSystem.detail.tip=Voir les détails du système observé sélectionné +observe.action.observedSystem.modify.tip=Modifier le système observé sélectionné +observe.action.observedSystem.save.tip=Sauver les modifications du système observé +observe.action.ocean.create.tip=Créer un nouvel océan +observe.action.ocean.delete.tip=Supprimer l'océan sélectionné +observe.action.ocean.detail.tip=Voir les détails sur l'océan sélectionné +observe.action.ocean.modify.tip=Modifier l'océan sélectionné +observe.action.ocean.save.tip=Sauver les modifications sur l'ocean +observe.action.open.screen=Ouverture de l'écran <%1$s> +observe.action.openLink.formsUrl.tip=Accéder aux formulaires dans un navigateur web +observe.action.openLink.reportsUrl.tip=Accéder aux rapports dans un navigateur web +observe.action.organism.create.tip=Créer un nouvel organisme +observe.action.organism.delete.tip=Supprimer l'organisme sélectionné +observe.action.organism.detail.tip=Voir les détaile de l'organisme +observe.action.organism.modify.tip=Modifier l'organisme sélectionné +observe.action.organism.save.tip=Sauver les modifications de l'organisme +observe.action.person.create.tip=Créer un nouvelle personne +observe.action.person.delete.tip=Supprimer la personne sélectionnée +observe.action.person.detail.tip=Voir les détails de la personne sélectionnée +observe.action.person.modify.tip=Modifier la personne sélectionnée +observe.action.person.save.tip=Sauver les modifications sur la personne +observe.action.program.create.tip=Créer un nouveau programme +observe.action.program.delete.tip=Supprimer le programme sélectionné +observe.action.program.detail.tip=Voir les détails du programme sélectionné +observe.action.program.modify.tip=Modifier le programme sélectionné +observe.action.program.save.tip=Sauver les modifications sur le programme +observe.action.quitHelp.tip=Quitter l'écran d'aide +observe.action.reasonForDiscard.create.tip=Créer une nouvelle raison de rejet +observe.action.reasonForDiscard.delete.tip=Supprimer la raison de rejet sélectionnée +observe.action.reasonForDiscard.detail.tip=voir les détail de la raison de rejet sélectionnée +observe.action.reasonForDiscard.modify.tip=Modifier la raison de rejet sélectionnée +observe.action.reasonForDiscard.save.tip=Sauver les modifications du raison de rejet +observe.action.reasonForNoFishing.create.tip=Créer une nouvelle raison de non coup de senne +observe.action.reasonForNoFishing.delete.tip=Supprimer la raison de non coup de senne sélectionné +observe.action.reasonForNoFishing.detail.tip=Voir les détails de la raison de non coup de senne sélectionnée +observe.action.reasonForNoFishing.modify.tip=Modifier la raison de non coup de senne sélectionnée +observe.action.reasonForNoFishing.save.tip=Sauver les modifications de la raison de non coup de senne +observe.action.reasonForNullSet.create.tip=Créer une nouvelle cause de coup nul +observe.action.reasonForNullSet.delete.tip=Supprimer la cause de coup nul sélectionnée +observe.action.reasonForNullSet.detail.tip=Voir les détails de la cause de coup nul sélectionnée +observe.action.reasonForNullSet.modify.tip=Modifier la cause de coup nul sélectionnée +observe.action.reasonForNullSet.save.tip=Sauver les modifications du cause de coup nul +observe.action.reload.application=Redémarrer l'application +observe.action.reload.storage=Recharger la source de données +observe.action.reload.storage.tip=Ferme et réouvre la source de données +observe.action.reload.ui=Recharger l'interface graphique +observe.action.reloadDefaultConfiguration=Configuration par défaut +observe.action.reloadDefaultConfiguration.tip=Rétablir la configuration par défaut +observe.action.reloadResources=Resources par défaut +observe.action.reloadResources.tip=Rétablir les ressources par défaut (toute modification sera perdue) +observe.action.reopen=Réouvrir +observe.action.reopen.activity.tip=Réouvrir l'activité +observe.action.reopen.maree.tip=Réouvrir la marée +observe.action.reopen.route.tip=Réouvrir la route +observe.action.reopen.selected.activity=Réouvrir l'activité +observe.action.reopen.selected.activity.tip=Réouvrir l'activité sélectionnée +observe.action.reopen.selected.maree=Réouvrir la marée +observe.action.reopen.selected.maree.tip=Réouvrir la marée sélectionnée +observe.action.reopen.selected.route=Réouvrir la route +observe.action.reopen.selected.route.tip=Réouvrir la route sélectionnée +observe.action.reopen.tip=Réouvrir la donnée +observe.action.reset=Annuler +observe.action.reset.entry.tip=Réinitialiser l'entré en cours d'édition +observe.action.reset.ersId.tip=Réinitialiser l'id ERS +observe.action.reset.formsUrl.tip=Réinitialiser l'url des formulaires +observe.action.reset.homeId.tip=Réinitialiser +observe.action.reset.new.entry.tip=Annuler la création de la nouvelle entrée +observe.action.reset.picturesReferences.tip=Réinitialiser +observe.action.reset.reportsUrl.tip=Réinitialiser l'url des rapports +observe.action.reset.supportVesselName.tip=Réinitialiser +observe.action.reset.tip=Annuler les modifications +observe.action.reset.well.tip=Réinitialiser +observe.action.restart.application=Redémarrer +observe.action.restart.application.tip=Redémarrer l'application +observe.action.save=Enregistrer +observe.action.save.all.tip=Sauver toutes les modifications +observe.action.save.entry.tip=Sauver l'entrée en cours d'édition +observe.action.save.tip=Sauver les modifications +observe.action.save.to.file=Sauver la base +observe.action.save.to.file.tip=Effectuer une sauvegarde de la base ouverte +observe.action.selectNode=Sélectionner le noeud +observe.action.selectNode.tip=Sélectionner le noeud +observe.action.sensorBrand.create.tip=Créer une nouvelle marque de capteur +observe.action.sensorBrand.delete.tip=Supprimer la marque de capteur sélectionnée +observe.action.sensorBrand.detail.tip=Voir les détails de la marque de capteur sélectionnée +observe.action.sensorBrand.modify.tip=Modifier la marque de capteur sélectionnée +observe.action.sensorBrand.save.tip=Sauver les modifications de la marque de capteur +observe.action.sensorDataFormat.create.tip=Créer un nouveau format de données de capteur +observe.action.sensorDataFormat.delete.tip=Supprimer le format de données de capteur sélectionné +observe.action.sensorDataFormat.detail.tip=Voir les détails du format de données de capteur sélectionné +observe.action.sensorDataFormat.modify.tip=Modifier le format de données de capteur sélectionné +observe.action.sensorDataFormat.save.tip=Sauver les modifications du format de données de capteur +observe.action.sensorType.create.tip=Créer un nouveau type de capteur +observe.action.sensorType.delete.tip=Supprimer le type de capteur sélectionné +observe.action.sensorType.detail.tip=Voir les détails du type de capteur sélectionné +observe.action.sensorType.modify.tip=Modifier le type de capteur sélectionné +observe.action.sensorType.save.tip=Sauver les modifications du type de capteur +observe.action.settingShape.create.tip=Créer une nouvelle forme au filage +observe.action.settingShape.delete.tip=Supprimer la forme au filage sélectionnée +observe.action.settingShape.detail.tip=Voir les détails de la forme au filage sélectionnée +observe.action.settingShape.modify.tip=Modifier la forme au filage sélectionnée +observe.action.settingShape.save.tip=Sauver les modifications de la forme au filage +observe.action.sex.create.tip=Créer un nouveau sexe +observe.action.sex.delete.tip=Supprimer le sexe sélectionné +observe.action.sex.detail.tip=Voir les détails du sexe sélectionné +observe.action.sex.modify.tip=Modifier le sexe sélectionné +observe.action.sex.save.tip=Sauver les modifications du sexe +observe.action.show.technical.informations.tip=Voir les information techniques +observe.action.show.unique.keys.tip=Voir le tableau de toutes les clefs métier utilisées pour ce référentiel +observe.action.show.usages.tip=Voir toutes les utilisations de ce référentiel +observe.action.showConfig.title=Configuration +observe.action.site=Site internet +observe.action.site.tip=Accéder au site de l'application sur internet +observe.action.sizeMeasureType.create.tip=Créer un nouveau type de mesure de taille +observe.action.sizeMeasureType.delete.tip=Supprimer le type de mesure de taille sélectionné +observe.action.sizeMeasureType.detail.tip=Voir les détails du type de mesure de taille sélectionné +observe.action.sizeMeasureType.modify.tip=Modifier le type de mesure de taille sélectionné +observe.action.sizeMeasureType.save.tip=Sauver les modifications du type de mesure de taille +observe.action.species.create.tip=Créer une nouvelle espèce +observe.action.species.delete.tip=Supprimer l'espèce sélectionnée +observe.action.species.detail.tip=Voir les détails de l'espèce sélectionnée +observe.action.species.modify.tip=Modifier l'espèce sélectionnée +observe.action.species.save.tip=Sauver les modifications de l'espèce +observe.action.speciesFate.create.tip=Créer un nouveau devenir +observe.action.speciesFate.delete.tip=Supprimer le devenir sélectionné +observe.action.speciesFate.detail.tip=Voir les détails du devenir sélectionné +observe.action.speciesFate.modify.tip=Modifier le devenir sélectionné +observe.action.speciesFate.save.tip=Sauver les modifications du devenir +observe.action.speciesGroupSpecies.create.tip=Créer un nouveau groupe d'espèce +observe.action.speciesGroupSpecies.delete.tip=Supprimer le groupe d'espèce sélectionné +observe.action.speciesGroupSpecies.detail.tip=Voir les détails du groupe d'espèce sélectionné +observe.action.speciesGroupSpecies.modify.tip=Modifier le groupe d'espèce sélectionné +observe.action.speciesGroupSpecies.save.tip=Sauver les modifications du groupe d'espèce +observe.action.speciesList.create.tip=Créer une nouvelle liste d'espèce +observe.action.speciesList.delete.tip=Supprimer la liste d'espèce sélectionnée +observe.action.speciesList.detail.tip=Voir les détails de la liste d'espèce sélectionnée +observe.action.speciesList.modify.tip=Modifier la liste d'espèce sélectionnée +observe.action.speciesStatus.create.tip=Créer un nouveau statut d'espèce +observe.action.speciesStatus.delete.tip=Supprimer le statut d'espèce sélectionné +observe.action.speciesStatus.detail.tip=Voir les détails du statut d'espèce sélectionné +observe.action.speciesStatus.modify.tip=Modifier le statut d'espèce sélectionné +observe.action.speciesStatus.save.tip=Sauver les modifications du statut d'espèce +observe.action.start.h2.web.server=Démarrer le serveur web +observe.action.start.h2.web.server.tip=Démarrer le serveur web H2 +observe.action.start.server.mode=Mode serveur +observe.action.start.server.mode.tip=Démarrer la base locale en mode serveur +observe.action.stomacFullness.create.tip=Créer un nouveau niveau de remplissage de l'estomac +observe.action.stomacFullness.delete.tip=Supprimer le niveau de remplissage de l'estomac sélectionné +observe.action.stomacFullness.detail.tip=Voir les détails du niveau de remplissage de l'estomac sélectionné +observe.action.stomacFullness.modify.tip=Modifier le niveau de remplissage de l'estomac sélectionné +observe.action.stomacFullness.save.tip=Sauver les modifications du niveau de remplissage de l'estomac +observe.action.stop.h2.web.server=Arrêter le serveur web +observe.action.stop.h2.web.server.tip=Arrêter le serveur web H2 +observe.action.stop.server.mode=Arrêter le mode serveur +observe.action.stop.server.mode.tip=Arrêter le mode serveur de la base locale +observe.action.storage.apply=Utiliser +observe.action.storage.apply.tip=Utiliser la source de données configurée +observe.action.storage.applyAction=Changement de source de données +observe.action.storage.cancel=Annuler le changement de source de données +observe.action.storage.cancel.tip=Annuler le changement de source de données +observe.action.surroundingActivity.create.tip=Créer un nouvelle activité environnante +observe.action.surroundingActivity.delete.tip=Supprimer l'activité environnante sélectionnée +observe.action.surroundingActivity.detail.tip=Voir les détails de l'activité environnante sélectionnée +observe.action.surroundingActivity.modify.tip=Modifier l'activité environnante sélectionnée +observe.action.surroundingActivity.save.tip=Sauver les modifications de l'activité environnante +observe.action.synchro.apply.modifications=Appliquer les modifications +observe.action.synchro.cancel.tip=Annuler +observe.action.synchro.copy.tip=Copier le rapport dans le presse-papier +observe.action.synchro.launch.operation=Démarrer l'opération < %1$s > +observe.action.synchro.prepare.operation=Préparer l'opération <%1$s> +observe.action.synchro.report.reset.tip=Déselectionner le report courant. +observe.action.test.remote=Valider la connexion +observe.action.test.remote.tip=Cliquer pour valider la connexion au serveur distant +observe.action.transmittingBuoyOperation.create.tip=Créer une nouvelle opération sur balise +observe.action.transmittingBuoyOperation.delete.tip=Supprimer l'opération sur balise sélectionné +observe.action.transmittingBuoyOperation.detail.tip=Voir les détails de l'opération sur balise sélectionnée +observe.action.transmittingBuoyOperation.modify.tip=Modifier l'opération sur balise sélectionnée +observe.action.transmittingBuoyOperation.save.tip=Sauver les modifications de l'opération sur balise +observe.action.transmittingBuoyType.create.tip=Créer un nouveau type de balise +observe.action.transmittingBuoyType.delete.tip=Supprimer le type de balise sélectionné +observe.action.transmittingBuoyType.detail.tip=Voir les détails du type de balise sélectionné +observe.action.transmittingBuoyType.modify.tip=Modifier le type de balise sélectionné +observe.action.transmittingBuoyType.save.tip=Sauver les modifications du type de balise +observe.action.tripType.create.tip=Créer un nouveau type de marée +observe.action.tripType.delete.tip=Supprimer le type de marée sélectionné +observe.action.tripType.detail.tip=Voir les détails du type de marée sélectionné +observe.action.tripType.modify.tip=Modifier le type de marée sélectionné +observe.action.tripType.save.tip=Sauver les modifications du type de marée +observe.action.vessel.create.tip=Créer un nouveau bateau +observe.action.vessel.delete.tip=Supprimer le bateau sélectionné +observe.action.vessel.detail.tip=Voir les détails du bateau sélectionné +observe.action.vessel.modify.tip=Modifier le bateau sélectionné +observe.action.vessel.save.tip=Sauver les modifications sur le bateau +observe.action.vesselActivityLongline.create.tip=Créer un nouveau type d'activité +observe.action.vesselActivityLongline.delete.tip=Supprimer le type d'activité sélectionné +observe.action.vesselActivityLongline.detail.tip=Voir les détails du type d'activité sélectionné +observe.action.vesselActivityLongline.modify.tip=Modifier le type d'activité sélectionné +observe.action.vesselActivityLongline.save.tip=Sauver les modifications du type d'activité +observe.action.vesselActivitySeine.create.tip=Créer une nouvelle activité vessel +observe.action.vesselActivitySeine.delete.tip=Supprimer l'activité vessel sélectionnée +observe.action.vesselActivitySeine.detail.tip=Voir les détails de l'activité vessel sélectionnée +observe.action.vesselActivitySeine.modify.tip=Modifier l'activité de vessel sélectionnée +observe.action.vesselActivitySeine.save.tip=Sauver les modifications de l'activité vessel +observe.action.vesselSizeCategory.create.tip=Créer une nouvelle catégorie de vessel +observe.action.vesselSizeCategory.delete.tip=Supprimer le catégorie de vessel sélectionnée +observe.action.vesselSizeCategory.detail.tip=Voir les détails de la catégorie de vessel sélectionnée +observe.action.vesselSizeCategory.modify.tip=Modifier le vessel sélectionné +observe.action.vesselSizeCategory.save.tip=Sauver les modifications de la catégorie de vessel +observe.action.vesselType.create.tip=Créer un nouveau type de vessel +observe.action.vesselType.delete.tip=Supprimer le type de vessel sélectionné +observe.action.vesselType.detail.tip=Voir les détails du type de vessel sélectionné +observe.action.vesselType.modify.tip=Modifier le type de vessel sélectionné +observe.action.vesselType.save.tip=Sauver les modifications du type de vessel +observe.action.weightCategory.create.tip=Créer une nouvelle catégorie de poids +observe.action.weightCategory.delete.tip=Supprimer la catégorie de poids sélectionnée +observe.action.weightCategory.detail.tip=Voir les détails de la catégorie de poids sélectionnée +observe.action.weightCategory.modify.tip=Modifier la catégorie de poids sélectionnée +observe.action.weightCategory.save.tip=Sauver les modifications de la catégorie de poids +observe.action.weightMeasureType.create.tip=Créer un nouveau type de mesure de poids +observe.action.weightMeasureType.delete.tip=Supprimer le type de mesure de poids sélectionné +observe.action.weightMeasureType.detail.tip=Voir les détails du type de mesure de poids sélectionné +observe.action.weightMeasureType.modify.tip=Modifier le type de mesure de poids sélectionné +observe.action.weightMeasureType.save.tip=Sauver les modifications du type de mesure de poids +observe.action.wind.create.tip=Créer un nouveau vent Beaufort +observe.action.wind.delete.tip=Supprimer le vent Beaufort sélectionné +observe.action.wind.detail.tip=Voir les détails du vent Beaufort sélectionné +observe.action.wind.modify.tip=Modifier le vent Beaufort sélectionné +observe.action.wind.save.tip=Sauver les modifications du vent Beaufort +observe.activityLongline.coordinate=Coordonnées +observe.activityLongline.fpaZone=Zone FPA +observe.activityLongline.message.active.found=Une activité est ouverte. +observe.activityLongline.message.active.found.for.other.trip=Une activité ouverte existe dans une autre marée. +observe.activityLongline.message.creating=L'activité est en cours de création. +observe.activityLongline.message.no.active.found=Aucune activité ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrire une. +observe.activityLongline.message.no.active.found.for.other.trip=Aucune activité ouverte sur la marée ouverte +observe.activityLongline.message.not.open=L'opération de pêche n'est pas ouverte, aucune modification possible. +observe.activityLongline.message.updating=L'activité est en cours de modification. +observe.activityLongline.seaSurfaceTemperature=Température surface (°c) +observe.activityLongline.timeStamp=Horodatage +observe.activityLongline.title=Activité +observe.activityLongline.vesselActivityLongline=Activité bateau +observe.activityLonglines.title=Activités +observe.activityObservedSystem.availableObservedSystem=Systèmes observés disponibles +observe.activityObservedSystem.selectedObservedSystem=Systèmes observés sélectionnés +observe.activitySeine.message.active.found=Une activité est ouverte. +observe.activitySeine.message.active.found.for.other.route=Une activité ouverte existe dans une autre route. +observe.activitySeine.message.creating=L'activité est en cours de création. +observe.activitySeine.message.no.active.found=Aucune activité ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrire une. +observe.activitySeine.message.no.active.found.for.other.route=Aucune activité ouverte sur la route ouverte +observe.activitySeine.message.not.open=L'activité n'est pas ouverte, aucune modification possible. +observe.activitySeine.message.updating=L'activité est en cours de modification. +observe.activitySeine.tab.general=Caractéristiques générales +observe.activitySeine.tab.measurements=Mesures +observe.activitySeine.title=Activité +observe.activitySeineObservedSystem.title=Système observé +observe.activitySeines.title=Activités +observe.admin.resume.no.operation.done=Aucune opération réalisée. +observe.admin.resume.operation.canceled=opération annulée +observe.admin.resume.operation.done=opération réussie +observe.admin.resume.operation.failed=opération échouée +observe.admin.resume.operation.need.fix=opération nécessitant des corrections +observe.admin.resume.operation.not.started=opération non démarrée +observe.admin.resume.operation.running=opération en cours... +observe.application.config=configuration d'ObServe +observe.baitsComposition.action.create=Inserer cet appât +observe.baitsComposition.action.create.tip=Inserer cet appât +observe.baitsComposition.baitSettingStatus=État au filage +observe.baitsComposition.baitType=Type d'appât +observe.baitsComposition.individualSize=Taille (cm) +observe.baitsComposition.individualWeight=Poids (kg) +observe.baitsComposition.proportion=Proportion (%) +observe.baitsComposition.proportionSum=Somme des proportions d'appâts (%) +observe.baitsComposition.table.baitSettingStatus=Statut +observe.baitsComposition.table.baitSettingStatus.tip=Statut au filage +observe.baitsComposition.table.baitType=Type d'appât +observe.baitsComposition.table.baitType.tip=Type d'appât +observe.baitsComposition.table.individualSize=Taille (cm) +observe.baitsComposition.table.individualSize.tip=Taille (cm) +observe.baitsComposition.table.individualWeight=Poids (kg) +observe.baitsComposition.table.individualWeight.tip=Poids (kg) +observe.baitsComposition.table.proportion=Proportion (%) +observe.baitsComposition.table.proportion.tip=Proportion (%) +observe.baitsComposition.title=Composition des appâts +observe.basket.cant.delete.message=Le panier ne peut pas être supprimé car il est utilisé dans des données. +observe.basket.cant.delete.title=Impossible de supprimer le panier +observe.basket.invalid.nextFloatline1Length=La longueur d'orin 2 (%s) n'est pas égale à la longueur d'orin 1 du panier suivant (%s) +observe.branchLine.cant.delete.message=L'avançon ne peut pas être supprimé car il est utilisé dans des données. +observe.branchLine.cant.delete.title=Impossible de supprimer l'avançon +observe.branchline.baitHaulingStatus=Statut appât au virage +observe.branchline.baitSettingStatus=Statut appât au filage +observe.branchline.baitType=Type d'appât +observe.branchline.comment=Commentaire +observe.branchline.depthRecorder=Enregistreur de profondeur +observe.branchline.hookLost=Hameçon perdu +observe.branchline.hookOffset=Offset hameçon (°) +observe.branchline.hookSize=Taille d'hameçon +observe.branchline.hookType=Type d'hameçon +observe.branchline.message.modified=L'avançon en cours d'édition a été modifié et est valide. +observe.branchline.message.modified.but.invalid=L'avançon en cours d'édition a été modifié, mais n'est pas valide. +observe.branchline.snapWeight=Poids snap (kg) +observe.branchline.swivelWeight=Poids émerillon (kg) +observe.branchline.tab.general=Généralités +observe.branchline.tab.hookAndBait=Hameçon et appât +observe.branchline.timeSinceContact=Temps depuis déclenchement +observe.branchline.timer=Horloge +observe.branchline.timerTimeOnBoard=Horodatage de montée à bord +observe.branchline.title=Détail de l'avançon +observe.branchline.topType=Type partie supérieure +observe.branchline.traceCutOff=Bas de ligne coupé +observe.branchline.tracelineType=Type bas de ligne +observe.branchline.weightedSnap=Snap plombé +observe.branchline.weightedSwivel=Émerillon plombé +observe.branchlinesComposition.action.create=Inserer cet avançon +observe.branchlinesComposition.action.create.tip=Inserer cet avançon +observe.branchlinesComposition.length=Longueur (m) +observe.branchlinesComposition.proportion=Proportion (%) +observe.branchlinesComposition.proportionSum=Somme des proportions d'avançons (%) +observe.branchlinesComposition.table.length=Longueur (m) +observe.branchlinesComposition.table.length.tip=Longueur (m) +observe.branchlinesComposition.table.proportion=Proportion (%) +observe.branchlinesComposition.table.proportion.tip=Proportion (%) +observe.branchlinesComposition.table.topType=Type partie supérieure +observe.branchlinesComposition.table.topType.tip=Type partie supérieure +observe.branchlinesComposition.table.tracelineType=Type basse de ligne +observe.branchlinesComposition.table.tracelineType.tip=Type bas de ligne +observe.branchlinesComposition.title=Composition des avançons +observe.branchlinesComposition.topType=Type partie supérieure +observe.branchlinesComposition.tracelineType=Type bas de ligne +observe.broughtOnDeck.comment=Seules les espèces montées sur le pont pourront être échantillonnées +observe.catchLongline.acquisitionMode=Mode de saisie +observe.catchLongline.acquisitionMode.grouped=Groupé +observe.catchLongline.acquisitionMode.individual=Par individu +observe.catchLongline.action.create=Insérer cette capture +observe.catchLongline.action.create.tip=Insérer cette capture +observe.catchLongline.action.new=Nouvelle capture +observe.catchLongline.action.new.tip=Créér une nouvelle capture +observe.catchLongline.action.reset.photoReferences.tip=Réinitiliser les références photo +observe.catchLongline.availablePredator=Prédateurs disponibles +observe.catchLongline.basket=Panier +observe.catchLongline.beatDiameter=Diamètre de la morsure +observe.catchLongline.branchline=Avançon +observe.catchLongline.catchFateLongline=Devenir +observe.catchLongline.catchHealthness=Santé à la capture +observe.catchLongline.comment=Commentaire +observe.catchLongline.count=Nombre +observe.catchLongline.depredated=Victime de déprédation +observe.catchLongline.discardHealthness=Santé au rejet +observe.catchLongline.gonadeWeight=Poids des gonades (g) +observe.catchLongline.hookPosition=Position de l'hameçon +observe.catchLongline.hookWhenDiscarded=Rejeté avec hameçon +observe.catchLongline.locationOnLongline=Position sur la ligne +observe.catchLongline.maturityStatus=Maturité sexuelle +observe.catchLongline.photoReferences=Références photo +observe.catchLongline.predator=Prédateurs +observe.catchLongline.resetBranchline=Annuler +observe.catchLongline.resetBranchline.tip=Annuler les modifications sur l'avançon +observe.catchLongline.saveBranchline=Enregister l'avançon +observe.catchLongline.saveBranchline.tip=Enregister les modifications sur l'avançon +observe.catchLongline.section=Section +observe.catchLongline.selectedPredator=Prédateurs sélectionnés +observe.catchLongline.sex=Sexe +observe.catchLongline.speciesCatch=Espèce +observe.catchLongline.stomacFullness=État de l'estomac +observe.catchLongline.tab.branchline=Avançon +observe.catchLongline.tab.caracteristics=Caractéristiques +observe.catchLongline.tab.depredated=Déprédation +observe.catchLongline.tab.foodAndSexual=Alimentation et maturité sexuelle +observe.catchLongline.tab.sizeMeasures=Tailles (cm) +observe.catchLongline.tab.weightMeasures=Poids (kg) +observe.catchLongline.title=Captures +observe.catchLongline.totalWeight=Poids total (kg) +observe.catchlongline.table.acquisitionMode=Mode +observe.catchlongline.table.acquisitionMode.tip=Mode de saisie +observe.catchlongline.table.basketHaulingId=N° panier +observe.catchlongline.table.basketHaulingId.tip=Numéro de virage du panier +observe.catchlongline.table.branchlineHaulingId=N° avançon +observe.catchlongline.table.branchlineHaulingId.tip=Numéro de virage de l'avançon +observe.catchlongline.table.catchFateLongline=Devenir +observe.catchlongline.table.catchFateLongline.tip=Devenir +observe.catchlongline.table.catchHealthness=État +observe.catchlongline.table.catchHealthness.tip=État à la capture +observe.catchlongline.table.comment=Commentaire +observe.catchlongline.table.comment.tip=Commentaire +observe.catchlongline.table.count=Nombre +observe.catchlongline.table.count.tip=Nombre +observe.catchlongline.table.depredated=Déprédation +observe.catchlongline.table.depredated.tip=Victime de déprédation +observe.catchlongline.table.discardHealthness=Santé au rejet +observe.catchlongline.table.discardHealthness.tip=Santé au rejet +observe.catchlongline.table.sectionHaulingId=N° section +observe.catchlongline.table.sectionHaulingId.tip=Numéro de virage de la section +observe.catchlongline.table.size=Mesure (cm) +observe.catchlongline.table.size.tip=Mesure (cm) +observe.catchlongline.table.sizeMeasureType=Type de mesure +observe.catchlongline.table.sizeMeasureType.tip=Type de mesure +observe.catchlongline.table.speciesCatch=Espèce +observe.catchlongline.table.speciesCatch.tip=Espèce +observe.catchlongline.table.weight=Mesure (kg) +observe.catchlongline.table.weight.tip=Mesure (kg) +observe.catchlongline.table.weightMeasureType=Type de mesure +observe.catchlongline.table.weightMeasureType.tip=Type de mesure +observe.choice.cancel=Annuler +observe.choice.confirm.delete=Supprimer +observe.choice.continue=Continuer +observe.choice.create.fin.veille.activity=Créer l'activité de fin de veille +observe.choice.create.fin.veille.activity.and.continue=Créer l'activité de fin de veille et continuer +observe.choice.createLocalStorage=Créer la base locale +observe.choice.doNotSave=Ne pas enregistrer +observe.choice.doNothing=Ne rien faire +observe.choice.not.create.fin.veille.activity.and.continue=Ne pas créer l'activité de fin de veille et continuer +observe.choice.quit=Fermer +observe.choice.save=Enregistrer +observe.choice.useRemoteStorage=Utiliser une base distante +observe.common.acquisitionMode=Mode de saisie +observe.common.acquisitionMode.count=Saisie par nombre +observe.common.acquisitionMode.individu=Saisie par individu +observe.common.activities=Activités +observe.common.activities.list=Liste des activités +observe.common.activity=Activité observe.common.activityLongline= observe.common.activitySeine= observe.common.baitHaulingStatus= -observe.common.baitObservation= +observe.common.baitObservation=Gleure observe.common.baitSettingStatus= observe.common.baitType= observe.common.baitsComposition= observe.common.basket= -observe.common.birdsObservation= -observe.common.boolean.false= -observe.common.boolean.null= -observe.common.boolean.true= +observe.common.birdsObservation=Oiseaux +observe.common.boolean.false=Non +observe.common.boolean.null=Indéterminé +observe.common.boolean.true=Oui observe.common.branchline= observe.common.branchlineLength= observe.common.branchlinesComposition= -observe.common.brand= -observe.common.brandName= -observe.common.broughtOnDeck= -observe.common.capacity= -observe.common.capacityLabel= -observe.common.captain= -observe.common.caracteristics= +observe.common.brand=Marque +observe.common.brandName=Marque +observe.common.broughtOnDeck=Monté sur le pont +observe.common.capacity=Capacité transport (m³) +observe.common.capacityLabel=Libellé capacité +observe.common.captain=Capitaine +observe.common.caracteristics=Caractéristiques observe.common.catchFateLongline= observe.common.catchLongline= -observe.common.catchWeight= -observe.common.catchWeightComputed.computed.tip= -observe.common.catchWeightComputed.observed.tip= -observe.common.changeDate= -observe.common.code= -observe.common.codeAndStatus= -observe.common.coefficients= -observe.common.comment= -observe.common.comment.activity= -observe.common.comment.floatingObject= -observe.common.comment.nonTargetCatch= -observe.common.comment.nonTargetSample= -observe.common.comment.set= -observe.common.comment.targetCatch= -observe.common.comment.targetDiscarded= -observe.common.comment.targetSample= -observe.common.count= -observe.common.country= -observe.common.currentFpaZone= -observe.common.dataEntryOperator= -observe.common.date= -observe.common.daysAtSeaCount= -observe.common.departureHarbour= -observe.common.description= -observe.common.detailledActivitiesObservation= -observe.common.detectionMode= -observe.common.directory= +observe.common.catchWeight=Poids estimé (en t) +observe.common.catchWeightComputed.computed.tip=Le poids estimé a été calculé (%s) +observe.common.catchWeightComputed.observed.tip=Le poids estimé a été observé +observe.common.changeDate=Date changement pavillon +observe.common.code=Identifiant +observe.common.codeAndStatus=Code / Statut +observe.common.coefficients=Coefficients +observe.common.comment=Commentaire +observe.common.comment.activity=Commentaire de l'activité +observe.common.comment.floatingObject=Commentaire sur l'objet flottant +observe.common.comment.nonTargetCatch=Commentaire de la faune accessoire +observe.common.comment.nonTargetSample=Commentaire de l'échantillonage faune +observe.common.comment.set=Commentaire de la calée +observe.common.comment.targetCatch=Commentaire de la capture +observe.common.comment.targetDiscarded=Commentaire du rejet +observe.common.comment.targetSample=Commentaire de l'échantillonage thon +observe.common.count=Nombre +observe.common.country=Pays +observe.common.currentFpaZone=Zone FPA actuelle +observe.common.dataEntryOperator=Saisisseur +observe.common.date=Jour d'observation +observe.common.daysAtSeaCount=Nombre de jours à l'eau +observe.common.departureHarbour=Port de départ +observe.common.description=Description +observe.common.detailledActivitiesObservation=Activités détaillées +observe.common.detectionMode=Mode détection +observe.common.directory=Répertoire observe.common.encounter= observe.common.encounterType= -observe.common.endDate= -observe.common.endLogValue= -observe.common.equation= -observe.common.ersId= +observe.common.endDate=Fin de validité +observe.common.endLogValue=Loch du soir (milles) +observe.common.equation=Relation Taille-Poids +observe.common.ersId=Id ERS observe.common.faoCode= -observe.common.file= -observe.common.firstName= -observe.common.flagCountry= +observe.common.file=Fichier +observe.common.firstName=Prénom +observe.common.flagCountry=Pavillon observe.common.floatingObject= observe.common.floatline1Length= observe.common.floatline2Length= observe.common.floatlineLengths= observe.common.floatlinesComposition= -observe.common.formsUrl= +observe.common.formsUrl=URL des formulaires observe.common.fpaZone= -observe.common.gaugeLabel= +observe.common.gaugeLabel=Libellé jauge observe.common.gear= observe.common.gearCaracteristic= observe.common.gearCaracteristicType= -observe.common.gearType= +observe.common.gearType=Type d'engin observe.common.gearUseFeaturesLongline= observe.common.gearUseFeaturesSeine= observe.common.gender= -observe.common.generateReport= -observe.common.global.progression.description= +observe.common.generateReport=Générer un rapport de validation +observe.common.global.progression.description=Progression globale observe.common.gps.activity= observe.common.gps.gpsPoint= observe.common.gps.gpsPointInterval= @@ -813,84 +813,84 @@ observe.common.gpsPointInterval= observe.common.harbour= observe.common.haulingIdentifier= observe.common.healthness= -observe.common.heureobservation= +observe.common.heureobservation=Heure d'observation observe.common.homeId= -observe.common.homeIdFAOWormsId= +observe.common.homeIdFAOWormsId=Code 3L / FAO / Worms observe.common.hookPosition= observe.common.hookSize= observe.common.hookType= observe.common.hooksComposition= observe.common.id= observe.common.inconnu= -observe.common.iso2Code= -observe.common.iso3Code= +observe.common.iso2Code=code ISO-2 +observe.common.iso3Code=Code ISO-3 observe.common.itemHorizontalPosition= observe.common.itemVerticalPosition= -observe.common.keelCodeFlotte= -observe.common.label1= -observe.common.label2= -observe.common.label3= -observe.common.label4= -observe.common.label5= -observe.common.label6= -observe.common.label7= -observe.common.label8= -observe.common.landingHarbour= -observe.common.lastName= -observe.common.latitude= -observe.common.length= -observe.common.length.computed.tip= -observe.common.length.inf= -observe.common.length.observed.tip= -observe.common.lengthMeasureType= -observe.common.lengthWeightFormula= +observe.common.keelCodeFlotte=Code quille /Code flotte +observe.common.label1=Libellé anglais +observe.common.label2=Libellé français +observe.common.label3=Libellé espagnol +observe.common.label4=Libellé 4 +observe.common.label5=Libellé 5 +observe.common.label6=Libellé 6 +observe.common.label7=Libellé 7 +observe.common.label8=Libellé 8 +observe.common.landingHarbour=Port d'arrivée +observe.common.lastName=Nom +observe.common.latitude=Latitude +observe.common.length=Longueur hors tout +observe.common.length.computed.tip=La longueur a été calculée +observe.common.length.inf=Longueur (cm inf.) +observe.common.length.observed.tip=La longueur a été observée +observe.common.lengthMeasureType=Type de mensuration +observe.common.lengthWeightFormula=Relation Poids observe.common.lengthWeightParameter= -observe.common.libelles= +observe.common.libelles=Libellés observe.common.lightsticksColor= observe.common.lightsticksType= observe.common.lineType= observe.common.locode= -observe.common.longitude= -observe.common.lowerValueUpperValue= -observe.common.mammalsObservation= +observe.common.longitude=Longitude +observe.common.lowerValueUpperValue=Borne min-max +observe.common.mammalsObservation=Mammifères observe.common.maturityStatus= -observe.common.meanLength= -observe.common.meanLengthComputed.computed.tip= -observe.common.meanLengthComputed.observed.tip= -observe.common.meanValues= -observe.common.meanWeight= -observe.common.meanWeightComputed.computed.tip= -observe.common.meanWeightComputed.observed.tip= -observe.common.measureType= -observe.common.measureType.ld1= -observe.common.measureType.lf= -observe.common.measureType.unknown= -observe.common.minLengthMax= -observe.common.minWeightMax= +observe.common.meanLength=Taille moyenne (en cm) +observe.common.meanLengthComputed.computed.tip=La taille moyenne a été calculée (%s) +observe.common.meanLengthComputed.observed.tip=La taille moyenne a été observée +observe.common.meanValues=Valeurs moyennes +observe.common.meanWeight=Poids moyen (en Kg) +observe.common.meanWeightComputed.computed.tip=Le poids moyen a été calculé (%s) +observe.common.meanWeightComputed.observed.tip=Le poids moyen a été observé +observe.common.measureType=Type de mensuration +observe.common.measureType.ld1=LD1 +observe.common.measureType.lf=LF +observe.common.measureType.unknown=Inconnu +observe.common.minLengthMax=Taille min-max (en cm) +observe.common.minWeightMax=Poids min-max (en Kg) observe.common.mitigationType= observe.common.name= -observe.common.needComment= -observe.common.nextFpaZone= -observe.common.no.balise= +observe.common.needComment=Nécessite un commentaire +observe.common.nextFpaZone=Zone FPA pénétrée +observe.common.no.balise=Aucune balise lue observe.common.nocode= -observe.common.nonCoupSenne= -observe.common.nonTargetCatch= +observe.common.nonCoupSenne=Non coup de senne +observe.common.nonTargetCatch=Faune accessoire conservée ou rejetée observe.common.nonTargetLength= -observe.common.nonTargetObservation= -observe.common.nonTargetSample= +observe.common.nonTargetObservation=Faune associée +observe.common.nonTargetSample=Echantillon faune accessoire observe.common.none= -observe.common.objectFate= -observe.common.objectObservedSpecies= -observe.common.objectOperation= +observe.common.objectFate=Devenir de l'objet +observe.common.objectObservedSpecies=Faune observée +observe.common.objectOperation=Opération sur l'objet observe.common.objectSchoolEstimate= -observe.common.objectType= -observe.common.objectsObservation= -observe.common.observedSystem= -observe.common.observedSystemDistance= -observe.common.observer= +observe.common.objectType=Type d'objet +observe.common.objectsObservation=Objet flottants +observe.common.observedSystem=Système observé +observe.common.observedSystemDistance=Distance système observé (en milles avec 1 décimale) +observe.common.observer=Observateur observe.common.observerLabel= -observe.common.obsolete.entity= -observe.common.ocean= +observe.common.obsolete.entity=Le référentiel %1$s est désactivé. +observe.common.ocean=Océan observe.common.ocean/label1= observe.common.ocean/label2= observe.common.ocean/label3= @@ -899,55 +899,55 @@ observe.common.ocean/label5= observe.common.ocean/label6= observe.common.ocean/label7= observe.common.ocean/label8= -observe.common.oceanForSpecies= +observe.common.oceanForSpecies=Liste des océans observe.common.oldCode3L= -observe.common.operation.resume= -observe.common.organism= -observe.common.ownership= +observe.common.operation.resume=Résumé des opérations +observe.common.organism=Organisme +observe.common.ownership=Appartenance observe.common.person= -observe.common.picturesReferences= -observe.common.power= -observe.common.previousFpaZone= +observe.common.picturesReferences=Référence Photo +observe.common.power=Puissance moteur principal +observe.common.previousFpaZone=Zone FPA quitée observe.common.program= -observe.common.program.observation.value.0= -observe.common.program.observation.value.1= -observe.common.program.observation.value.2= -observe.common.program.observation.value.3= -observe.common.program.observation.value.4= -observe.common.program.observation.value.5= -observe.common.program.observation.value.6= -observe.common.program.observation.value.7= -observe.common.program.observation.value.8= -observe.common.program.observation.value.9= -observe.common.reasonForDiscard= +observe.common.program.observation.value.0=non observé +observe.common.program.observation.value.1=observé +observe.common.program.observation.value.2=valeur 2 non définie +observe.common.program.observation.value.3=valeur 3 non définie +observe.common.program.observation.value.4=valeur 4 non définie +observe.common.program.observation.value.5=valeur 5 non définie +observe.common.program.observation.value.6=valeur 6 non définie +observe.common.program.observation.value.7=valeur 7 non définie +observe.common.program.observation.value.8=valeur 8 non définie +observe.common.program.observation.value.9=valeur 9 non définie +observe.common.reasonForDiscard=Raison rejet observe.common.reasonForNoFishing= observe.common.reasonForNullSet= -observe.common.reportsUrl= -observe.common.resume= +observe.common.reportsUrl=URL de rapport +observe.common.resume=Résumé de la configuration observe.common.route= -observe.common.routes.list= -observe.common.samplesObservation= -observe.common.schoolEstimate= -observe.common.schoolType= -observe.common.scientificLabel= -observe.common.seaSurfaceTemperature= -observe.common.searchMaximum= +observe.common.routes.list=Liste des routes +observe.common.samplesObservation=Mensurations +observe.common.schoolEstimate=Estimation banc +observe.common.schoolType=Type de banc +observe.common.scientificLabel=Libellé scientifique +observe.common.seaSurfaceTemperature=Température surface (°) +observe.common.searchMaximum=Vitesse maximale observe.common.section= -observe.common.select.gps.import.file= -observe.common.select.gps.import.file.tip= -observe.common.select.gps.maxDelay= -observe.common.select.gps.maxDelay.tip= -observe.common.select.gps.maxSpeed= -observe.common.select.gps.maxSpeed.tip= -observe.common.select.report.file= -observe.common.select.report.file.tip= -observe.common.select.validate.context= -observe.common.select.validate.context.tip= -observe.common.select.validate.mode= -observe.common.select.validate.mode.tip= -observe.common.select.validate.scope= -observe.common.select.validate.scope.tip= -observe.common.selected.validators= +observe.common.select.gps.import.file=Fichier à importer +observe.common.select.gps.import.file.tip=Choisir le fichier de trace GPS à importer +observe.common.select.gps.maxDelay=Temps maximum (mn) +observe.common.select.gps.maxDelay.tip=Renseigner le délais maximum autorisée entre 2 points gps (en minutes) +observe.common.select.gps.maxSpeed=Vitesse maximum (nd) +observe.common.select.gps.maxSpeed.tip=Renseigner la vitesse maximum autorisée entre 2 points gps (en noeud) +observe.common.select.report.file=Fichier de définition de reports +observe.common.select.report.file.tip=Choisir le fichier de définition des reports +observe.common.select.validate.context=Contexte de validation +observe.common.select.validate.context.tip=Choisir le context de validation +observe.common.select.validate.mode=Type de données à valider +observe.common.select.validate.mode.tip=Choisir le type de données à valider +observe.common.select.validate.scope=Niveau de validation +observe.common.select.validate.scope.tip=Choisir le ou les niveaux de validation +observe.common.selected.validators=Nombre de validateurs détectés \: %1$s observe.common.sensorBrand= observe.common.sensorDataFormat= observe.common.sensorPosition= @@ -957,59 +957,59 @@ observe.common.setLongline= observe.common.setSeine= observe.common.settingIdentifier= observe.common.settingShape= -observe.common.sex= +observe.common.sex=Sexe observe.common.sizeMeasure= observe.common.sizeMeasureType= -observe.common.species= +observe.common.species=Espèce observe.common.species/scientificLabel= -observe.common.speciesFate= -observe.common.speciesFaune= -observe.common.speciesGroup= +observe.common.speciesFate=Devenir espèce +observe.common.speciesFaune=Espèce de faune +observe.common.speciesGroup=Groupe espèce observe.common.speciesList= -observe.common.speciesStatus= -observe.common.speciesThon= -observe.common.speedRange= -observe.common.startDate= -observe.common.startDateFinProgram= -observe.common.startDateFinValidite= -observe.common.startLogValue= -observe.common.status= -observe.common.step.description= +observe.common.speciesStatus=Statut faune observée +observe.common.speciesThon=Espèce de thon +observe.common.speedRange=Libellé vitesse vent +observe.common.startDate=Début de validité +observe.common.startDateFinProgram=Début - Fin du programme +observe.common.startDateFinValidite=Début - fin de validité +observe.common.startLogValue=Loch du matin (milles) +observe.common.status=Statut +observe.common.step.description=Description de l'étape observe.common.stomacFullness= -observe.common.storage.not.valid= -observe.common.supportVesselName= -observe.common.surroundingActivity= -observe.common.taille= -observe.common.taillePoids.caracteristics= -observe.common.targetCatch= -observe.common.targetDiscarded= -observe.common.targetDiscardsObservation= +observe.common.storage.not.valid=Source de données non configurée +observe.common.supportVesselName=Nom supply +observe.common.surroundingActivity=Activité environnante +observe.common.taille=Taille (cm) +observe.common.taillePoids.caracteristics=Caractéristiques Taille-Poids +observe.common.targetCatch=Capture cible +observe.common.targetDiscarded=Rejet de thon +observe.common.targetDiscardsObservation=Rejets thon observe.common.targetLength= -observe.common.targetSample= -observe.common.targetSampleCapture= +observe.common.targetSample=Echantillon thon rejeté +observe.common.targetSampleCapture=Echantillon thon capturé observe.common.tdr= observe.common.tdrRecord= observe.common.time= -observe.common.topiaCreateDate= -observe.common.topiaId= -observe.common.topiaVersion= -observe.common.totalCount= -observe.common.totalCountComputed.computed.tip= -observe.common.totalCountComputed.observed.tip= -observe.common.totalWeight= +observe.common.topiaCreateDate=Date de création +observe.common.topiaId=Identifiant technique +observe.common.topiaVersion=Version +observe.common.totalCount=Nombre estimé +observe.common.totalCountComputed.computed.tip=Le nombre estimé a été calculé (%s) +observe.common.totalCountComputed.observed.tip=Le nombre estimé a été observé +observe.common.totalWeight=Poids observe.common.tracelineLength= observe.common.transmittingBuoy= -observe.common.transmittingBuoyOperation= -observe.common.transmittingBuoyType= +observe.common.transmittingBuoyOperation=Opération balise +observe.common.transmittingBuoyType=Type de balise observe.common.tripLongline= observe.common.tripSeine= observe.common.tripType= -observe.common.trips.list= -observe.common.typeTransmittingBuoyOperation= -observe.common.undefined= -observe.common.undefined.tip= -observe.common.uri= -observe.common.vessel= +observe.common.trips.list=Liste des marées +observe.common.typeTransmittingBuoyOperation=Type d'opération sur balise +observe.common.undefined=< non défini > +observe.common.undefined.tip=< non défini > +observe.common.uri=URI +observe.common.vessel=Bateau observe.common.vessel/label1= observe.common.vessel/label2= observe.common.vessel/label3= @@ -1019,8 +1019,8 @@ observe.common.vessel/label6= observe.common.vessel/label7= observe.common.vessel/label8= observe.common.vesselActivityLongline= -observe.common.vesselActivitySeine= -observe.common.vesselActivitySeine.comment= +observe.common.vesselActivitySeine=Activité bateau +observe.common.vesselActivitySeine.comment=Seule l'activité %1$s permet de saisir une calée. observe.common.vesselActivitySeine/label1= observe.common.vesselActivitySeine/label2= observe.common.vesselActivitySeine/label3= @@ -1029,386 +1029,390 @@ observe.common.vesselActivitySeine/label5= observe.common.vesselActivitySeine/label6= observe.common.vesselActivitySeine/label7= observe.common.vesselActivitySeine/label8= -observe.common.vesselSizeCategory= -observe.common.vesselSpeed= -observe.common.vesselType= -observe.common.waveHeight= -observe.common.weight= -observe.common.weight.computed.tip= -observe.common.weight.ind= -observe.common.weight.observed.tip= -observe.common.weightCategory= -observe.common.weightLengthFormula= +observe.common.vesselSizeCategory=Catégorie de bateau +observe.common.vesselSpeed=Vitesse bateau (nd) +observe.common.vesselType=Type de pêcherie +observe.common.waveHeight=Libellé Hauteur moyenne vagues +observe.common.weight=Poids (en t) +observe.common.weight.computed.tip=Le poids a été calculé +observe.common.weight.ind=Poids ind. (en Kg) +observe.common.weight.observed.tip=Le poids a été observé +observe.common.weightCategory=Catégorie de poids +observe.common.weightLengthFormula=Relation Taille observe.common.weightMeasure= observe.common.weightMeasureType= -observe.common.well= -observe.common.wind= -observe.common.yearService= -observe.comon.exist.on.remote= -observe.config.category.changeStorage= -observe.config.category.changeStorage.description= -observe.config.category.directories= -observe.config.category.directories.description= -observe.config.category.gps= -observe.config.category.gps.description= -observe.config.category.h2= -observe.config.category.h2.description= -observe.config.category.map= -observe.config.category.map.description= -observe.config.category.observation= -observe.config.category.observation.description= -observe.config.category.obstuna= -observe.config.category.obstuna.description= -observe.config.category.other= -observe.config.category.other.description= -observe.config.category.speciesList.longline= -observe.config.category.speciesList.longline.description= -observe.config.category.speciesList.seine= -observe.config.category.speciesList.seine.description= -observe.config.category.synchro= -observe.config.category.synchro.description= -observe.config.configFileName.description= -observe.config.db.locale= -observe.config.defaultBackupDirectory.description= -observe.config.defaultCreationMode= -observe.config.defaultDataDirectory.description= -observe.config.defaultDbMode= -observe.config.defaultGpsMaxDelay= -observe.config.defaultGpsMaxSpeed= -observe.config.defaultI18nDirectory.description= -observe.config.defaultInitialDbDump.description= -observe.config.defaultLocalDbDirectory.description= +observe.common.well=Cuve +observe.common.wind=Vent Beaufort +observe.common.yearService=Année de mise en service +observe.comon.exist.on.remote=%1$s (déjà existante) +observe.config.category.changeStorage=Source de données +observe.config.category.changeStorage.description=Options de changement de source de données +observe.config.category.directories=Répertoires +observe.config.category.directories.description=Répertoires de l'application +observe.config.category.gps=GPS +observe.config.category.gps.description=Configuration GPS +observe.config.category.h2=Base locale +observe.config.category.h2.description=Configuration base locale +observe.config.category.map=Carte +observe.config.category.map.description=Configuration des fonds à utiliser pour les cartes +observe.config.category.observation=Qualification des observations +observe.config.category.observation.description=Gestion des indicateurs de qualification des programmes +observe.config.category.obstuna=Base distante +observe.config.category.obstuna.description=Configuration base distante +observe.config.category.other=Autre +observe.config.category.other.description=Autres options +observe.config.category.speciesList.longline=Configuration des listes d'espèces (Palangre) +observe.config.category.speciesList.longline.description=Choisir les listes d'espèces à utiliser dans les formulaire d'une maréee de type palangre +observe.config.category.speciesList.seine=Configuration des listes d'espèces (Senne) +observe.config.category.speciesList.seine.description=Choisir les listes d'espèces à utiliser dans les formulaire d'une maréee de type senne +observe.config.category.synchro=Actions sur base +observe.config.category.synchro.description=Configuration actions sur base +observe.config.configFileName.description=Le nom du fichier de configuration +observe.config.db.locale=La langue du référentiel +observe.config.defaultBackupDirectory.description=Répertoire par défaut où sauvegarder les bases locales +observe.config.defaultCreationMode=Le mode de création de base locale par défaut +observe.config.defaultDataDirectory.description=Répertoire par défault des resources utilisateurs de l'application +observe.config.defaultDbMode=Le mode de connexion a créer par défaut +observe.config.defaultGpsMaxDelay=Le count par défaut de minutes maximum entre dexu points gps +observe.config.defaultGpsMaxSpeed=La vitesse maximum par défaut en tre dexu points gps +observe.config.defaultI18nDirectory.description=Répertoire par défault des resources de traduction de l'application +observe.config.defaultInitialDbDump.description=La base embarquée créee lors de le premier import d'une base distante. +observe.config.defaultLocalDbDirectory.description=Le répertoire où est stockée la base locale. observe.config.defaultMapDirectory.description= -observe.config.defaultReportDirectory.description= -observe.config.defaultResourcesDirectory.description= -observe.config.defaultTmpDirectory.description= -observe.config.defaultValidationReportDirectory.description= -observe.config.devMode= -observe.config.h2.can.migrate.description= -observe.config.h2.login.description= -observe.config.h2.password.description= -observe.config.h2.serverPort.description= -observe.config.logConfigurationFile.description= -observe.config.map.background.description= -observe.config.map.layer1.description= -observe.config.map.layer10.description= -observe.config.map.layer2.description= -observe.config.map.layer3.description= -observe.config.map.layer4.description= -observe.config.map.layer5.description= -observe.config.map.layer6.description= -observe.config.map.layer7.description= -observe.config.map.layer8.description= -observe.config.map.layer9.description= -observe.config.map.style.description= -observe.config.observation.activitysDetaillees= -observe.config.observation.fauneAssociee= -observe.config.observation.floatingObject= -observe.config.observation.gleure= -observe.config.observation.mammiferes= -observe.config.observation.mensurations= -observe.config.observation.oiseaux= -observe.config.observation.rejetsThons= -observe.config.obstuna.login.description= -observe.config.obstuna.password.description= -observe.config.obstuna.url.description= -observe.config.obstuna.useSsl.description= -observe.config.pg.can.migrate.description= -observe.config.showMigrationProgression= -observe.config.showMigrationSql= -observe.config.showSql= -observe.config.speciesList.longline.catch= -observe.config.speciesList.longline.encounter= -observe.config.speciesList.seine.nonTargetCatch= -observe.config.speciesList.seine.objectObservedSpecies= -observe.config.speciesList.seine.objectSchoolEstimate= -observe.config.speciesList.seine.schoolEstimate= -observe.config.speciesList.seine.targetCatch= -observe.config.ui.autoPopupNumberEditor= -observe.config.ui.changeSynchroSrc= -observe.config.ui.fullscreen= -observe.config.ui.loadLocalStorage= -observe.config.ui.locale= -observe.config.ui.showNumberEditorButton= -observe.config.ui.showTimeEditorSlider= -observe.config.ui.storeRemoteStorage= -observe.content.mode.create.tip= -observe.content.mode.read.tip= -observe.content.mode.update.tip= -observe.encounter.action.create= -observe.encounter.action.create.tip= -observe.encounter.count= -observe.encounter.distance= -observe.encounter.encounterType= -observe.encounter.species= -observe.encounter.table.count= -observe.encounter.table.count.tip= -observe.encounter.table.distance= -observe.encounter.table.distance.tip= -observe.encounter.table.encouterType= -observe.encounter.table.encouterType.tip= -observe.encounter.table.species= -observe.encounter.table.species.tip= -observe.encounter.title= -observe.entity.message.updating= -observe.error.can.not.create.directory= -observe.error.no.activity.6= -observe.error.open.first.db= -observe.error.speciesList.longline.catch.notFound= -observe.error.speciesList.longline.depredator.notFound= -observe.error.speciesList.longline.encounter.notFound= -observe.error.speciesList.seine.objectObservedSpecies.notFound= -observe.error.speciesList.seine.objectSchoolEstimate.notFound= -observe.error.speciesList.seine.targetCatch.notFound= -observe.error.storage.could.not.backup.unsane.local.db= -observe.error.storage.could.not.load.local.db= -observe.floatingObject.message.creating= -observe.floatingObject.message.updating= -observe.floatingObject.title= -observe.floatingObjectTransmittingBuoyOperation.title= -observe.floatlinesComposition.action.create= -observe.floatlinesComposition.action.create.tip= -observe.floatlinesComposition.length= -observe.floatlinesComposition.lineType= -observe.floatlinesComposition.proportion= -observe.floatlinesComposition.proportionSum= -observe.floatlinesComposition.table.length= -observe.floatlinesComposition.table.length.tip= -observe.floatlinesComposition.table.lineType= -observe.floatlinesComposition.table.lineType.tip= -observe.floatlinesComposition.table.proportion= -observe.floatlinesComposition.table.proportion.tip= -observe.floatlinesComposition.title= -observe.gear.availableGearCaracteristic= -observe.gear.gearCaracteristic= -observe.gear.gearCaracteristicType= -observe.gear.selectedGearCaracteristic= -observe.gear.tab.gearCaracteristic= -observe.gear.tab.general= -observe.gear.unit= -observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement= -observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip= -observe.gearUseFeaturesLongline.comment= -observe.gearUseFeaturesLongline.gear= -observe.gearUseFeaturesLongline.number= -observe.gearUseFeaturesLongline.tab.general= -observe.gearUseFeaturesLongline.tab.measurements= -observe.gearUseFeaturesLongline.table.comment= -observe.gearUseFeaturesLongline.table.comment.tip= -observe.gearUseFeaturesLongline.table.gear= -observe.gearUseFeaturesLongline.table.gear.tip= -observe.gearUseFeaturesLongline.table.gearCaracteristic= -observe.gearUseFeaturesLongline.table.gearCaracteristic.tip= -observe.gearUseFeaturesLongline.table.number= -observe.gearUseFeaturesLongline.table.number.tip= -observe.gearUseFeaturesLongline.table.usedInTrip= -observe.gearUseFeaturesLongline.table.usedInTrip.tip= -observe.gearUseFeaturesLongline.table.value= -observe.gearUseFeaturesLongline.table.value.tip= -observe.gearUseFeaturesLongline.title= -observe.gearUseFeaturesLongline.usedInTrip= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip= -observe.gearUseFeaturesSeine.comment= -observe.gearUseFeaturesSeine.gear= -observe.gearUseFeaturesSeine.number= -observe.gearUseFeaturesSeine.tab.general= -observe.gearUseFeaturesSeine.tab.measurements= -observe.gearUseFeaturesSeine.table.comment= -observe.gearUseFeaturesSeine.table.comment.tip= -observe.gearUseFeaturesSeine.table.gear= -observe.gearUseFeaturesSeine.table.gear.tip= -observe.gearUseFeaturesSeine.table.gearCaracteristic= -observe.gearUseFeaturesSeine.table.gearCaracteristic.tip= -observe.gearUseFeaturesSeine.table.number= -observe.gearUseFeaturesSeine.table.number.tip= -observe.gearUseFeaturesSeine.table.usedInTrip= -observe.gearUseFeaturesSeine.table.usedInTrip.tip= -observe.gearUseFeaturesSeine.table.value= -observe.gearUseFeaturesSeine.table.value.tip= -observe.gearUseFeaturesSeine.title= -observe.gearUseFeaturesSeine.usedInTrip= -observe.harbour.coordinates= -observe.harbour.locode= -observe.harbour.name= -observe.hooksComposition.action.create= -observe.hooksComposition.action.create.tip= -observe.hooksComposition.hookOffset= -observe.hooksComposition.hookSize= -observe.hooksComposition.hookType= -observe.hooksComposition.proportion= -observe.hooksComposition.proportionSum= -observe.hooksComposition.table.hookOffset= -observe.hooksComposition.table.hookOffset.tip= -observe.hooksComposition.table.hookSize= -observe.hooksComposition.table.hookSize.tip= -observe.hooksComposition.table.hookType= -observe.hooksComposition.table.hookType.tip= -observe.hooksComposition.table.proportion= -observe.hooksComposition.table.proportion.tip= -observe.hooksComposition.title= -observe.info.selected.validators= -observe.info.validation.credentials= -observe.init.local.db.detected= -observe.init.no.initial.dump.detected= -observe.init.no.local.db.detected= -observe.init.storage.done= -observe.label.coefficients.info= -observe.label.lengthWeightFormula.info= -observe.label.usage.data.title= -observe.label.usage.referentiel.title= -observe.label.weightLengthFormula.info= -observe.lengthWeightParameter.tab.general= -observe.lengthWeightParameter.tab.other= +observe.config.defaultReportDirectory.description=Répertoire par défaut des rapports de l'application +observe.config.defaultResourcesDirectory.description=Le répertoire où sont stockées les resources de l'utilisateur comme les traductions ou les requètes de rapports. +observe.config.defaultTmpDirectory.description=Le répertoire temporaire par défaut +observe.config.defaultValidationReportDirectory.description=Le répertoire par défaut où sont stockés les rapports de validation +observe.config.devMode=Mode développeur +observe.config.h2.can.migrate.description=Autoriser la mise à jour des bases locales (h2) +observe.config.h2.login.description=Le login h2 +observe.config.h2.password.description=Le mot de passe h2 +observe.config.h2.serverPort.description=Port du serveur h2 +observe.config.logConfigurationFile.description=Fichier de configuration des logs +observe.config.map.background.description=Couleur du fond de carte +observe.config.map.layer1.description=Fichier (shapeFiles) du premier calque de la carte +observe.config.map.layer10.description=Fichier (shapeFiles) du dixième calque de la carte +observe.config.map.layer2.description=Fichier (shapeFiles) du deuxième calque de la carte +observe.config.map.layer3.description=Fichier (shapeFiles) du troisième calque de la carte +observe.config.map.layer4.description=Fichier (shapeFiles) du quatrième calque de la carte +observe.config.map.layer5.description=Fichier (shapeFiles) du cinquième calque de la carte +observe.config.map.layer6.description=Fichier (shapeFiles) du sixième calque de la carte +observe.config.map.layer7.description=Fichier (shapeFiles) du septième calque de la carte +observe.config.map.layer8.description=Fichier (shapeFiles) du huitième calque de la carte +observe.config.map.layer9.description=Fichier (shapeFiles) du neuvième calque de la carte +observe.config.map.style.description=Fichier des style à appliquer sur les calques de la carte +observe.config.observation.activitysDetaillees=Observation des activités détaillées +observe.config.observation.fauneAssociee=Observation des Faunes associées +observe.config.observation.floatingObject=Observation des objets flottants +observe.config.observation.gleure=Observation des gleures +observe.config.observation.mammiferes=Observation des mammifères +observe.config.observation.mensurations=Observation des mensurations +observe.config.observation.oiseaux=Observation des oiseaux +observe.config.observation.rejetsThons=Observation des rejets thon +observe.config.obstuna.login.description=Le nom d'utilisateur pour se connecter à la base Obstuna +observe.config.obstuna.password.description=Le mote de passe pour se connecter à la base Obstuna +observe.config.obstuna.url.description=L'url de connexion à la base Obstuna +observe.config.obstuna.useSsl.description=Drapeau pour permettre l'utilisation du mode ssl pour la connexion à Obstuna +observe.config.pg.can.migrate.description=Autoriser la mise à jour des bases distantes (il faut être propriétaire de la base) +observe.config.server.dataBaseName.description= +observe.config.server.login.description= +observe.config.server.password.description= +observe.config.server.url.description= +observe.config.showMigrationProgression=Affichier dans les logs la progression de la mise à jour d'une base +observe.config.showMigrationSql=Afficher dans les logs les requêtes jouées lors de la mise à jour d'une base +observe.config.showSql=Afficher dans les logs toutes les requêtes sql exéts +observe.config.speciesList.longline.catch=Espèces pour les captures - TDR +observe.config.speciesList.longline.encounter=Espèces pour les rencontre +observe.config.speciesList.seine.nonTargetCatch=Espèces pour les captures non cible +observe.config.speciesList.seine.objectObservedSpecies=Espèces pour les espèces non cible observées +observe.config.speciesList.seine.objectSchoolEstimate=Espèces pour les estimations banc objet +observe.config.speciesList.seine.schoolEstimate=Espèces pour les estimations +observe.config.speciesList.seine.targetCatch=Espèces pour les captures cible +observe.config.ui.autoPopupNumberEditor=Pour afficher automatiquement l'éditeur numérique lors de l'édition d'un count +observe.config.ui.changeSynchroSrc=Pour autoriser la sélection de la base source dans les opérations sur base +observe.config.ui.fullscreen=Pour afficher l'application en mode pleine écran +observe.config.ui.loadLocalStorage=Charger la base locale au démarrage de l'application +observe.config.ui.locale=Langue utilisée par l'application (fr_FR, en_GB ou es_ES) +observe.config.ui.showNumberEditorButton=Pour afficher le bouton qui permet d'utiliser l'éditeur numérique à gauche de chaque champs numérique +observe.config.ui.showTimeEditorSlider=Pour afficher la réglette d'édition des heures +observe.config.ui.storeRemoteStorage=Pour activer la sauvegarde de la configuration de la source distante +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.encounter.action.create=Insérer cette rencontre +observe.encounter.action.create.tip=Insérer cette rencontre +observe.encounter.count=Nombre +observe.encounter.distance=Distance (m) +observe.encounter.encounterType=Type +observe.encounter.species=Espèce +observe.encounter.table.count=Nombre +observe.encounter.table.count.tip=Nombre +observe.encounter.table.distance=Distance (m) +observe.encounter.table.distance.tip=Distance (m) +observe.encounter.table.encouterType=Type +observe.encounter.table.encouterType.tip=Type de la rencontre +observe.encounter.table.species=Espèce +observe.encounter.table.species.tip=Espèce rencontrée +observe.encounter.title=Rencontres +observe.entity.message.updating=L'objet '%1$s' est en cours de modification. +observe.error.can.not.create.directory=Création du répertoire %1$s impossible\! +observe.error.no.activity.6=L'activité de type 6 n'a pas été trouvée en base. +observe.error.open.first.db=La base est en cours d'utilisation par une autre application.\nVeuillez fermer l'application H2 et réessayer. +observe.error.speciesList.longline.catch.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Palangre) > speciesList.longline.catch) que la liste d'espèces est bien renseignée. +observe.error.speciesList.longline.depredator.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Palangre) > speciesList.longline.depredator) que la liste d'espèces est bien renseignée. +observe.error.speciesList.longline.encounter.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Palangre) > speciesList.longline.encounter) que la liste d'espèces est bien renseignée. +observe.error.speciesList.seine.objectObservedSpecies.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Senne) > speciesList.seine.objectObservedSpecies) que la liste d'espèces est bien renseignée. +observe.error.speciesList.seine.objectSchoolEstimate.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Senne) > speciesList.seine.objectSchoolEstimate) que la liste d'espèces est bien renseignée. +observe.error.speciesList.seine.targetCatch.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Senne) > speciesList.seine.targetCatch) que la liste d'espèces est bien renseignée. +observe.error.storage.could.not.backup.unsane.local.db=Impossible d'enregistrer une base non endommagée +observe.error.storage.could.not.load.local.db=Impossible d'ouvrir la base locale pour la raison suivante \: %s +observe.floatingObject.message.creating=L'objet flottant est en cours de création. +observe.floatingObject.message.updating=L'objet flottant est en cours de modification. +observe.floatingObject.title=Objet flottant +observe.floatingObjectTransmittingBuoyOperation.title=Opération sur balises +observe.floatlinesComposition.action.create=Insérer cet orin +observe.floatlinesComposition.action.create.tip=Insérer cet orin +observe.floatlinesComposition.length=Longueur +observe.floatlinesComposition.lineType=Type +observe.floatlinesComposition.proportion=Proportion (%) +observe.floatlinesComposition.proportionSum=Somme des proportions d'orins (%) +observe.floatlinesComposition.table.length=Longueur (m) +observe.floatlinesComposition.table.length.tip=Longueur (m) +observe.floatlinesComposition.table.lineType=Type +observe.floatlinesComposition.table.lineType.tip=Type +observe.floatlinesComposition.table.proportion=Proportion (%) +observe.floatlinesComposition.table.proportion.tip=Proportion (%) +observe.floatlinesComposition.title=Composition des orins +observe.gear.availableGearCaracteristic=Caractéristiques disponibles +observe.gear.gearCaracteristic=Caractéristiques +observe.gear.gearCaracteristicType=Type de caractéristique +observe.gear.selectedGearCaracteristic=Caractéristiques utilisées +observe.gear.tab.gearCaracteristic=Caractéristiques de l'équipement +observe.gear.tab.general=Caractéristiques générales +observe.gear.unit=Unité +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement=Supprimer +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip=Supprimer la caractéristique +observe.gearUseFeaturesLongline.comment=Commentaire +observe.gearUseFeaturesLongline.gear=Équipement +observe.gearUseFeaturesLongline.number=Nombre +observe.gearUseFeaturesLongline.tab.general=Définition +observe.gearUseFeaturesLongline.tab.measurements=Caractéristiques +observe.gearUseFeaturesLongline.table.comment=Commentaire +observe.gearUseFeaturesLongline.table.comment.tip=Commentaire +observe.gearUseFeaturesLongline.table.gear=Équipement +observe.gearUseFeaturesLongline.table.gear.tip=Équipement +observe.gearUseFeaturesLongline.table.gearCaracteristic=Caractéristique +observe.gearUseFeaturesLongline.table.gearCaracteristic.tip=Caractéristique +observe.gearUseFeaturesLongline.table.number=Nombre +observe.gearUseFeaturesLongline.table.number.tip=Nombre +observe.gearUseFeaturesLongline.table.usedInTrip=Utilisé +observe.gearUseFeaturesLongline.table.usedInTrip.tip=Utilisé dans la marée +observe.gearUseFeaturesLongline.table.value=Valeur +observe.gearUseFeaturesLongline.table.value.tip=Valeur +observe.gearUseFeaturesLongline.title=Équipements +observe.gearUseFeaturesLongline.usedInTrip=Utilisé dans la marée +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement=Supprimer +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip=Supprimer la caractéristique +observe.gearUseFeaturesSeine.comment=Commentaire +observe.gearUseFeaturesSeine.gear=Équipement +observe.gearUseFeaturesSeine.number=Nombre +observe.gearUseFeaturesSeine.tab.general=Définition +observe.gearUseFeaturesSeine.tab.measurements=Caractéristiques +observe.gearUseFeaturesSeine.table.comment=Commentaire +observe.gearUseFeaturesSeine.table.comment.tip=Commentaire +observe.gearUseFeaturesSeine.table.gear=Équipement +observe.gearUseFeaturesSeine.table.gear.tip=Équipement +observe.gearUseFeaturesSeine.table.gearCaracteristic=Caractéristique +observe.gearUseFeaturesSeine.table.gearCaracteristic.tip=Caractéristique +observe.gearUseFeaturesSeine.table.number=Nombre +observe.gearUseFeaturesSeine.table.number.tip=Nombre +observe.gearUseFeaturesSeine.table.usedInTrip=Utilisé +observe.gearUseFeaturesSeine.table.usedInTrip.tip=Utilisé dans la marée +observe.gearUseFeaturesSeine.table.value=Valeur +observe.gearUseFeaturesSeine.table.value.tip=Valeur +observe.gearUseFeaturesSeine.title=Équipements +observe.gearUseFeaturesSeine.usedInTrip=Utilisé dans la marée +observe.harbour.coordinates=Nom +observe.harbour.locode=Locode +observe.harbour.name=Nom +observe.hooksComposition.action.create=Inserer cet hameçon +observe.hooksComposition.action.create.tip=Inserer cet hameçon +observe.hooksComposition.hookOffset=Offset +observe.hooksComposition.hookSize=Taille +observe.hooksComposition.hookType=Type +observe.hooksComposition.proportion=Proportion (%) +observe.hooksComposition.proportionSum=Somme des proportions d'hameçons (%) +observe.hooksComposition.table.hookOffset=Offset (°) +observe.hooksComposition.table.hookOffset.tip=Offset (°) +observe.hooksComposition.table.hookSize=Taille +observe.hooksComposition.table.hookSize.tip=Taille +observe.hooksComposition.table.hookType=Type +observe.hooksComposition.table.hookType.tip=Type +observe.hooksComposition.table.proportion=Proportion (%) +observe.hooksComposition.table.proportion.tip=Proportion (%) +observe.hooksComposition.title=Composition des hameçons +observe.info.selected.validators=Il faut au moins un validateur sélectionné pour continuer. +observe.info.validation.credentials=Pour valider le référentiel (resp. les données), vous devez posséder les droits en lecture-écriture correspondants. +observe.init.local.db.detected=%1$s détectée. +observe.init.no.initial.dump.detected=Base embarquée %1$s non détectée. +observe.init.no.local.db.detected=Base locale %1$s non détectée. +observe.init.storage.done=Initialisation du service de persistance terminé. +observe.label.coefficients.info=Les coefficients des relations sont de la forme nom\=valeur et sont séparé par des \: (exemple \: a\=1\:b\=2\:c\=3) +observe.label.lengthWeightFormula.info=La relation poids permet de calculer le poids à partir de la taille, elle doit contenir la variable L +observe.label.usage.data.title=Donnée '%1$s' (%2$d occurrences) +observe.label.usage.referentiel.title=Référentiel '%1$s' (%2$d occurrences) +observe.label.weightLengthFormula.info=La relation taille permet de calculer la taille à partir du poids, elle doit contenir la variable P +observe.lengthWeightParameter.tab.general=Caractéristiques générales +observe.lengthWeightParameter.tab.other=Autres caractéristiques observe.list.HookSize= observe.list.HookType= -observe.list.baitHaulingStatus= -observe.list.baitSettingStatus= -observe.list.baitType= -observe.list.catchFateLongline= -observe.list.country= -observe.list.detectionMode= -observe.list.encounterType= -observe.list.fpaZone= -observe.list.gear= -observe.list.gearCaracteristic= -observe.list.gearCaracteristicType= -observe.list.harbour= -observe.list.healthness= -observe.list.hookPosition= -observe.list.hookSize= -observe.list.hookType= -observe.list.itemHorizontalPosition= -observe.list.itemVerticalPosition= -observe.list.lengthWeightParameter= -observe.list.lightsticksColor= -observe.list.lightsticksType= -observe.list.lineType= -observe.list.maturityStatus= -observe.list.mitigationType= -observe.list.objectFate= -observe.list.objectOperation= -observe.list.objectType= -observe.list.observedSystem= -observe.list.ocean= -observe.list.operation= -observe.list.organism= -observe.list.person= -observe.list.program= -observe.list.reasonForDiscard= -observe.list.reasonForNoFishing= -observe.list.reasonForNullSet= -observe.list.sensorBrand= -observe.list.sensorDataFormat= -observe.list.sensorType= -observe.list.settingShape= -observe.list.sex= -observe.list.sizeMeasureType= -observe.list.speciesFate= -observe.list.speciesFaune= -observe.list.speciesGroupSpecies= -observe.list.speciesList= -observe.list.speciesStatus= -observe.list.stomacFullness= -observe.list.surroundingActivity= -observe.list.transmittingBuoyType= -observe.list.tripType= -observe.list.vessel= -observe.list.vesselActivityLongline= -observe.list.vesselActivitySeine= -observe.list.vesselSizeCategory= -observe.list.vesselType= -observe.list.weightCategory= -observe.list.weightMeasureType= -observe.list.wind= -observe.longlineDetailComposition.action.deleteAllSections= -observe.longlineDetailComposition.action.deleteAllSections.tip= -observe.longlineDetailComposition.action.deleteSelectedBasket= -observe.longlineDetailComposition.action.deleteSelectedBasket.tip= -observe.longlineDetailComposition.action.deleteSelectedBranchline= -observe.longlineDetailComposition.action.deleteSelectedBranchline.tip= -observe.longlineDetailComposition.action.deleteSelectedSection= -observe.longlineDetailComposition.action.deleteSelectedSection.tip= -observe.longlineDetailComposition.action.deleteSelectedSectionTemplate= -observe.longlineDetailComposition.action.deleteSelectedSectionTemplate.tip= -observe.longlineDetailComposition.action.generateAllSections= -observe.longlineDetailComposition.action.generateAllSections.tip= -observe.longlineDetailComposition.action.insertAfterSelectedBasket= -observe.longlineDetailComposition.action.insertAfterSelectedBasket.tip= -observe.longlineDetailComposition.action.insertAfterSelectedBranchline= -observe.longlineDetailComposition.action.insertAfterSelectedBranchline.tip= -observe.longlineDetailComposition.action.insertAfterSelectedSection= -observe.longlineDetailComposition.action.insertAfterSelectedSection.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedBasket= -observe.longlineDetailComposition.action.insertBeforeSelectedBasket.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedBranchline= -observe.longlineDetailComposition.action.insertBeforeSelectedBranchline.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedSection= -observe.longlineDetailComposition.action.insertBeforeSelectedSection.tip= -observe.longlineDetailComposition.baskets= -observe.longlineDetailComposition.basketsTable.floatline1Length= -observe.longlineDetailComposition.basketsTable.floatline1Length.tip= -observe.longlineDetailComposition.basketsTable.floatline2Length= -observe.longlineDetailComposition.basketsTable.floatline2Length.tip= -observe.longlineDetailComposition.basketsTable.haulingIdentifier= -observe.longlineDetailComposition.basketsTable.haulingIdentifier.tip= -observe.longlineDetailComposition.basketsTable.settingIdentifier= -observe.longlineDetailComposition.basketsTable.settingIdentifier.tip= -observe.longlineDetailComposition.branchlines= -observe.longlineDetailComposition.branchlinesTable.branchlineLength= -observe.longlineDetailComposition.branchlinesTable.branchlineLength.tip= -observe.longlineDetailComposition.branchlinesTable.haulingIdentifier= -observe.longlineDetailComposition.branchlinesTable.haulingIdentifier.tip= -observe.longlineDetailComposition.branchlinesTable.settingIdentifier= -observe.longlineDetailComposition.branchlinesTable.settingIdentifier.tip= -observe.longlineDetailComposition.branchlinesTable.tracelineLength= -observe.longlineDetailComposition.branchlinesTable.tracelineLength.tip= -observe.longlineDetailComposition.canGenerate= -observe.longlineDetailComposition.firstTemplate.template.notCompilant.basketCount= -observe.longlineDetailComposition.message.updating= -observe.longlineDetailComposition.sectionTemplatesTable.identifier= -observe.longlineDetailComposition.sectionTemplatesTable.identifier.tip= -observe.longlineDetailComposition.sectionTemplatesTable.value= -observe.longlineDetailComposition.sectionTemplatesTable.value.tip= -observe.longlineDetailComposition.sections= -observe.longlineDetailComposition.sectionsTable.haulingIdentifier= -observe.longlineDetailComposition.sectionsTable.haulingIdentifier.tip= -observe.longlineDetailComposition.sectionsTable.settingIdentifier= -observe.longlineDetailComposition.sectionsTable.settingIdentifier.tip= -observe.longlineDetailComposition.sectionsTable.template= -observe.longlineDetailComposition.sectionsTable.template.tip= -observe.longlineDetailComposition.tab.branchlineDetail= -observe.longlineDetailComposition.tab.composition= -observe.longlineDetailComposition.tab.generate= -observe.longlineDetailComposition.title= -observe.longlineDetailComposition.title.section.cant.use.firstTemplate= -observe.longlineGlobalComposition.availableMitigationType= -observe.longlineGlobalComposition.message.updating= -observe.longlineGlobalComposition.mitigationType= -observe.longlineGlobalComposition.selectedMitigationType= -observe.longlineGlobalComposition.tab.baitsComposition= -observe.longlineGlobalComposition.tab.branchlinesComposition= -observe.longlineGlobalComposition.tab.floatlinesComposition= -observe.longlineGlobalComposition.tab.hooksComposition= -observe.longlineGlobalComposition.tab.mitigationType= -observe.longlineGlobalComposition.title= -observe.map.action.exportPng= -observe.map.action.exportPng.tip= -observe.map.action.zoomIt= -observe.map.action.zoomIt.tip= -observe.map.east= -observe.map.export.chooseFile.ok= -observe.map.export.chooseFile.png= -observe.map.export.chooseFile.title= -observe.map.export.overwrite= -observe.map.export.overwrite.cancel= -observe.map.export.overwrite.ok= -observe.map.export.overwrite.title= -observe.map.export.success= -observe.map.legend.hauling= -observe.map.legend.setting= -observe.map.legend.tripBetweenTwoDays= -observe.map.legend.tripDay= +observe.list.baitHaulingStatus=Liste des statuts de l'appât au virage enregistrés +observe.list.baitSettingStatus=Liste des statuts de l'appât au filage enregistrés +observe.list.baitType=Liste des types d'appât enregistrés +observe.list.catchFateLongline=Liste des devenirs capture enregistrés +observe.list.country=Liste des pays enregistrés +observe.list.detectionMode=Liste des modes de détection enregistrés +observe.list.encounterType=Liste des types de rencontre enregistrés +observe.list.fpaZone=Liste des zones FPA enregistrées +observe.list.gear=Liste des équipements enregistrées +observe.list.gearCaracteristic=Liste des caractéristiques d'équipement enregistrées +observe.list.gearCaracteristicType=Liste des types de caractéristique enregistrés +observe.list.harbour=Liste des ports enregistrés +observe.list.healthness=Liste des états de santé enregistrés +observe.list.hookPosition=Liste des positions d'hameçon enregistrées +observe.list.hookSize=Liste des tailles d'hameçon enregistrées +observe.list.hookType=Liste des types d'hameçon enregistrées +observe.list.itemHorizontalPosition=Liste des localisations de l'élément sur la ligne mère enregistrées +observe.list.itemVerticalPosition=Liste des localisations de l'élément sur l'avançon enregistrées +observe.list.lengthWeightParameter=Liste des paramétrages taille-poids thons +observe.list.lightsticksColor=Liste des couleurs de cyalumes enregistrées +observe.list.lightsticksType=Liste des types de cyalumes enregistrés +observe.list.lineType=Liste des types de ligne enregistrés +observe.list.maturityStatus=Liste des maturités enregistrées +observe.list.mitigationType=Listes des types de mesure d'atténuation enregistrés +observe.list.objectFate=Liste des devenirs objet enregistrés +observe.list.objectOperation=Liste des opérations objet enregistrées +observe.list.objectType=Liste des types d'opération enregistrés +observe.list.observedSystem=Liste des systèmes observés enregistrés +observe.list.ocean=Liste des océans enregistrés +observe.list.operation=Liste des opérations sur balise enregistrées +observe.list.organism=Liste des organismes enregistrés +observe.list.person=Liste des personnes enregistrés +observe.list.program=Liste des programmes enregistrés +observe.list.reasonForDiscard=Liste des raisons de rejet enregistrées +observe.list.reasonForNoFishing=Liste des non coup de senne enregistrées +observe.list.reasonForNullSet=Liste des causes coup nul enregistrées +observe.list.sensorBrand=Liste des marques de capteur enregistrées +observe.list.sensorDataFormat=Liste des formats de données de capteur enregistrés +observe.list.sensorType=Liste des types de capteur enregistrés +observe.list.settingShape=Liste des formes au filage enregistrées +observe.list.sex=Liste des sexes enregistrés +observe.list.sizeMeasureType=Liste des types de mesure de taille enregistrés +observe.list.speciesFate=Liste des devenirs de faune enregistrés +observe.list.speciesFaune=[devrait s'appeler speciesNonTarget ou nonTargetSpecies] +observe.list.speciesGroupSpecies=Liste des groupes d'espèce de faune enregistrés +observe.list.speciesList=Liste des listes de favoris d'espèces enregistrées +observe.list.speciesStatus=Liste des statuts d'espèce enregistrés +observe.list.stomacFullness=Liste des niveaux de remplissage de l'estomac enregistrés +observe.list.surroundingActivity=Liste des activités environnantes +observe.list.transmittingBuoyType=Liste des types de balise enregistrées +observe.list.tripType=Liste des types de marée enregistrés +observe.list.vessel=Liste des bateaux enregistrés +observe.list.vesselActivityLongline=Liste des activités bateau enregistrées +observe.list.vesselActivitySeine=Lise des activités bateau enregistrées +observe.list.vesselSizeCategory=Liste des catégories de bateaux enregistrées +observe.list.vesselType=Liste des types de bateaux enregistrés +observe.list.weightCategory=Liste des catégories poids enregistrées +observe.list.weightMeasureType=Liste des types de mesure de poids enregistrés +observe.list.wind=Liste des vents Beaufort enregistrés +observe.longlineDetailComposition.action.deleteAllSections=Tout supprimer +observe.longlineDetailComposition.action.deleteAllSections.tip=Supprimer toutes les section - paniers et avançons +observe.longlineDetailComposition.action.deleteSelectedBasket=Supprimer +observe.longlineDetailComposition.action.deleteSelectedBasket.tip=Supprimer le panier sélectionné +observe.longlineDetailComposition.action.deleteSelectedBranchline=Supprimer +observe.longlineDetailComposition.action.deleteSelectedBranchline.tip=Supprimer l'avançon sélectionné +observe.longlineDetailComposition.action.deleteSelectedSection=Supprimer +observe.longlineDetailComposition.action.deleteSelectedSection.tip=Supprimer la section sélectionnée +observe.longlineDetailComposition.action.deleteSelectedSectionTemplate=Supprimer +observe.longlineDetailComposition.action.deleteSelectedSectionTemplate.tip=Supprimer la template sélectionnée +observe.longlineDetailComposition.action.generateAllSections=Tout générer +observe.longlineDetailComposition.action.generateAllSections.tip=Générer toutes les sections - paniers et avançons +observe.longlineDetailComposition.action.insertAfterSelectedBasket=Insérer après +observe.longlineDetailComposition.action.insertAfterSelectedBasket.tip=Insérer après le panier sélectionné +observe.longlineDetailComposition.action.insertAfterSelectedBranchline=Insérer après +observe.longlineDetailComposition.action.insertAfterSelectedBranchline.tip=Insérer après l'avançon sélectionné +observe.longlineDetailComposition.action.insertAfterSelectedSection=Insérer après +observe.longlineDetailComposition.action.insertAfterSelectedSection.tip=Insérer après la section sélectionnée +observe.longlineDetailComposition.action.insertBeforeSelectedBasket=Insérer avant +observe.longlineDetailComposition.action.insertBeforeSelectedBasket.tip=Insérer avant le panier sélectionné +observe.longlineDetailComposition.action.insertBeforeSelectedBranchline=Insérer avant +observe.longlineDetailComposition.action.insertBeforeSelectedBranchline.tip=Insérer avant l'avançon sélectionné +observe.longlineDetailComposition.action.insertBeforeSelectedSection=Insérer avant +observe.longlineDetailComposition.action.insertBeforeSelectedSection.tip=Insérer avant la section sélectionnée +observe.longlineDetailComposition.baskets=Paniers +observe.longlineDetailComposition.basketsTable.floatline1Length=Orin 1 (m) +observe.longlineDetailComposition.basketsTable.floatline1Length.tip=Longueur Orin 1 (m) +observe.longlineDetailComposition.basketsTable.floatline2Length=Orin 2 (m) +observe.longlineDetailComposition.basketsTable.floatline2Length.tip=Longueur Orin 1 (m) +observe.longlineDetailComposition.basketsTable.haulingIdentifier=Id Virage +observe.longlineDetailComposition.basketsTable.haulingIdentifier.tip=Identifiant Virage +observe.longlineDetailComposition.basketsTable.settingIdentifier=Id Filage +observe.longlineDetailComposition.basketsTable.settingIdentifier.tip=Identifiant Filage +observe.longlineDetailComposition.branchlines=Avançons +observe.longlineDetailComposition.branchlinesTable.branchlineLength=Avançon (m) +observe.longlineDetailComposition.branchlinesTable.branchlineLength.tip=Longueur Avançon (m) +observe.longlineDetailComposition.branchlinesTable.haulingIdentifier=Id Virage +observe.longlineDetailComposition.branchlinesTable.haulingIdentifier.tip=Identifiant Virage +observe.longlineDetailComposition.branchlinesTable.settingIdentifier=Id Filage +observe.longlineDetailComposition.branchlinesTable.settingIdentifier.tip=Identifiant Filage +observe.longlineDetailComposition.branchlinesTable.tracelineLength=Partie basse (m) +observe.longlineDetailComposition.branchlinesTable.tracelineLength.tip=Longueur basse (m) +observe.longlineDetailComposition.canGenerate=Autoriser la génération +observe.longlineDetailComposition.firstTemplate.template.notCompilant.basketCount=La template à utiliser %s n'est pas compatible avec le nombre de paniers par section (%s) +observe.longlineDetailComposition.message.updating=Composition détaillée de la palangre en cours de modification +observe.longlineDetailComposition.sectionTemplatesTable.identifier=Identifiant +observe.longlineDetailComposition.sectionTemplatesTable.identifier.tip=Identifiant +observe.longlineDetailComposition.sectionTemplatesTable.value=Template +observe.longlineDetailComposition.sectionTemplatesTable.value.tip=Template +observe.longlineDetailComposition.sections=Sections +observe.longlineDetailComposition.sectionsTable.haulingIdentifier=Id Virage +observe.longlineDetailComposition.sectionsTable.haulingIdentifier.tip=Identifiant Virage +observe.longlineDetailComposition.sectionsTable.settingIdentifier=Id Filage +observe.longlineDetailComposition.sectionsTable.settingIdentifier.tip=Identifiant Filage +observe.longlineDetailComposition.sectionsTable.template=Template +observe.longlineDetailComposition.sectionsTable.template.tip=Template +observe.longlineDetailComposition.tab.branchlineDetail=Détail avançon +observe.longlineDetailComposition.tab.composition=Composition +observe.longlineDetailComposition.tab.generate=Définition des modèles +observe.longlineDetailComposition.title=Schéma de palangre +observe.longlineDetailComposition.title.section.cant.use.firstTemplate=Impossible d'utiliser le premier modèle lors de la génération +observe.longlineGlobalComposition.availableMitigationType=Atténuations disponibles +observe.longlineGlobalComposition.message.updating=Composition globale de la palangre en cours de modification +observe.longlineGlobalComposition.mitigationType=Atténuations +observe.longlineGlobalComposition.selectedMitigationType=Atténuations sélectionnées +observe.longlineGlobalComposition.tab.baitsComposition=Appâts +observe.longlineGlobalComposition.tab.branchlinesComposition=Avançons +observe.longlineGlobalComposition.tab.floatlinesComposition=Orins +observe.longlineGlobalComposition.tab.hooksComposition=Hameçons +observe.longlineGlobalComposition.tab.mitigationType=Atténuations +observe.longlineGlobalComposition.title=Composition globale de la palangre +observe.map.action.exportPng=Exporter +observe.map.action.exportPng.tip=Exporter la carte au format PNG +observe.map.action.zoomIt=Centrer +observe.map.action.zoomIt.tip=Centrer la carte sur la marée +observe.map.east=Est +observe.map.export.chooseFile.ok=Exporter +observe.map.export.chooseFile.png=image PNG +observe.map.export.chooseFile.title=Exporter la carte +observe.map.export.overwrite=Le fichier existe déjà. Voulez-vous le remplacer ? +observe.map.export.overwrite.cancel=Annuler +observe.map.export.overwrite.ok=Remplacer +observe.map.export.overwrite.title=Attention +observe.map.export.success=Carte exportée (%s) +observe.map.legend.hauling=Virage +observe.map.legend.setting=Filage +observe.map.legend.tripBetweenTwoDays=Trajet entre deux jours +observe.map.legend.tripDay=Trajet d'une journée observe.map.longLine.activity= observe.map.longLine.activity.hauling.end= observe.map.longLine.activity.hauling.start= @@ -1417,329 +1421,330 @@ observe.map.longLine.activity.setting.end= observe.map.longLine.activity.setting.start= observe.map.longLine.activity.station= observe.map.longLine.seine.harbour= -observe.map.miles= -observe.map.north= +observe.map.miles=milles +observe.map.north=Nord observe.map.seine.activity= observe.map.seine.activity.inHarbour= observe.map.seine.activity.schollType.free= observe.map.seine.activity.schollType.object= observe.map.seine.harbour.departure= observe.map.seine.harbour.landing= -observe.map.south= -observe.map.waitLoading= -observe.map.west= -observe.measurement.delete.message= -observe.menu.actions= -observe.menu.application.locale= -observe.menu.configuration= -observe.menu.configuration.tip= -observe.menu.db.locale= -observe.menu.file= -observe.menu.help= -observe.menu.locale= -observe.menu.navigation= -observe.menu.storage= -observe.message.can.not.write.data= -observe.message.cant.add.echantillonRejetThon= -observe.message.cant.add.echantillonTargetCatch= -observe.message.cant.add.nonTargetSample= -observe.message.consolidate.operation.done= -observe.message.consolidate.save.changes= -observe.message.creating.referentiel= -observe.message.db.closed= -observe.message.db.loaded= -observe.message.db.loading= -observe.message.db.none.loaded= -observe.message.db.none.loaded.tip= -observe.message.delete= -observe.message.delete.directory= -observe.message.delete.new= -observe.message.detected.accepted.interval= -observe.message.detected.rejected.interval= -observe.message.exportData.delete.remote.maree= -observe.message.exportData.not.possible= -observe.message.exportData.operation.needFix= -observe.message.exportData.prepare.data= -observe.message.exportData.replicate.maree= -observe.message.goto.site= -observe.message.h2.server.login= -observe.message.h2.server.password= -observe.message.h2.server.url= -observe.message.help.usage= -observe.message.historical.data= -observe.message.importGPS.apply.point= -observe.message.importGPS.apply.points= -observe.message.importGPS.detect.point= -observe.message.importGPS.detect.points= -observe.message.importGPS.detected.point= -observe.message.importGPS.no.activity.selected= -observe.message.importGPS.no.detected.point= -observe.message.importGPS.no.invalid.interval= -observe.message.importGPS.nothing.to.do= -observe.message.importGPS.operation.needFix= -observe.message.importGPS.prepare.importFile= -observe.message.loaded.tip= -observe.message.need.fin.veille.activity= -observe.message.no.accepted.intervalle.detected= -observe.message.no.activity.detected= -observe.message.no.activity.for.route= -observe.message.no.activity.for.trip= -observe.message.no.local.db.found= -observe.message.no.open.maree.detected= -observe.message.no.report.selected= -observe.message.no.route.detected= -observe.message.no.route.for.maree= -observe.message.no.species.selected= -observe.message.no.trip.for.program= -observe.message.no.usage.for.entity= -observe.message.no.validation.detected= -observe.message.quit.invalid.edit= -observe.message.quit.valid.edit= -observe.message.referentiel.editable= -observe.message.referentiel.home= -observe.message.referentiel.no.editable= -observe.message.save.configuration= -observe.message.select.report= -observe.message.server.info= -observe.message.show.usage.for.delete= -observe.message.show.usage.for.delete2= -observe.message.show.usage.for.desactivated= -observe.message.show.usage.for.desactivated2= -observe.message.show.usage.for.desactivated3= -observe.message.show.usages= -observe.message.synchro.build.diff= -observe.message.synchro.create.temporary.db.to.resolve.obsoletes= -observe.message.synchro.local.modification= -observe.message.synchro.no.local.modification= -observe.message.synchro.no.referentiel.conflict= -observe.message.synchro.obsolete.data.to.duplicate= -observe.message.synchro.operation.canceled= -observe.message.synchro.operation.done= -observe.message.synchro.operation.failed= -observe.message.synchro.operation.needFix= -observe.message.synchro.ref.is.updtodate= -observe.message.synchro.referentiel.was.added= -observe.message.synchro.referentiel.was.modified= -observe.message.synchro.referentiel.was.removed= -observe.message.table.editBean.modified= -observe.message.table.editBean.modified.but.invalid= -observe.message.updating.floatingObject= -observe.message.updating.referentiel= -observe.message.validation.detected= -observe.message.validation.not.save.report= -observe.message.validation.nothing.to.do= -observe.message.validation.operation.done= -observe.message.validation.operation.needFix= -observe.message.validation.prepare.validators= -observe.message.validation.save.report= -observe.message.validation.start.maree= -observe.message.validation.start.referentiel= -observe.message.validation.use.storage= -observe.message.warning.will.be.delete= -observe.navigationMenu.moveTrip= -observe.navigationMenu.noAction= -observe.nonTargetCatch.message.table.will.delete.nonTargetSample= -observe.nonTargetCatch.table.catchWeight= -observe.nonTargetCatch.table.catchWeight.tip= -observe.nonTargetCatch.table.comment= -observe.nonTargetCatch.table.comment.tip= -observe.nonTargetCatch.table.deleteExtraMessage= -observe.nonTargetCatch.table.meanLength= -observe.nonTargetCatch.table.meanLength.tip= -observe.nonTargetCatch.table.meanWeight= -observe.nonTargetCatch.table.meanWeight.tip= -observe.nonTargetCatch.table.reasonForDiscard= -observe.nonTargetCatch.table.reasonForDiscard.tip= -observe.nonTargetCatch.table.speciesFate= -observe.nonTargetCatch.table.speciesFate.tip= -observe.nonTargetCatch.table.speciesFaune= -observe.nonTargetCatch.table.speciesFaune.tip= -observe.nonTargetCatch.table.totalCount= -observe.nonTargetCatch.table.totalCount.tip= -observe.nonTargetSample.table.count= -observe.nonTargetSample.table.count.tip= -observe.nonTargetSample.table.gender= -observe.nonTargetSample.table.gender.tip= -observe.nonTargetSample.table.length= -observe.nonTargetSample.table.length.tip= -observe.nonTargetSample.table.meanWeight= -observe.nonTargetSample.table.meanWeight.tip= -observe.nonTargetSample.table.picturesReferences= -observe.nonTargetSample.table.picturesReferences.tip= -observe.nonTargetSample.table.speciesFaune= -observe.nonTargetSample.table.speciesFaune.tip= -observe.objectObservedSpecies.table.count= -observe.objectObservedSpecies.table.count.tip= -observe.objectObservedSpecies.table.speciesFaune= -observe.objectObservedSpecies.table.speciesFaune.tip= -observe.objectObservedSpecies.table.speciesStatus= -observe.objectObservedSpecies.table.speciesStatus.tip= -observe.obstuna.action.create= -observe.obstuna.action.create.description= -observe.obstuna.action.drop= -observe.obstuna.action.drop.description= -observe.obstuna.action.security= -observe.obstuna.action.security.description= -observe.obstuna.action.update= -observe.obstuna.action.update.description= -observe.person.country= -observe.program.tab.general= -observe.program.tab.observations= -observe.route.message.active.found= -observe.route.message.active.found.for.other.trip= -observe.route.message.creating= -observe.route.message.no.active.found= -observe.route.message.no.active.found.for.other.trip= -observe.route.message.not.open= -observe.route.message.updating= -observe.route.title= -observe.routes.title= -observe.runner.config.loaded= -observe.runner.config.migrate.file= -observe.runner.context.loaded= -observe.runner.copy.default.logConfigurationFile.file= +observe.map.south=Sud +observe.map.waitLoading=< Veuillez patienter pendant le chargement de la carte > +observe.map.west=Ouest +observe.measurement.delete.message=Supprimer la caractéristique sélectionnée +observe.menu.actions=Actions +observe.menu.application.locale=Application +observe.menu.configuration=Configuration +observe.menu.configuration.tip=Menu de configuration +observe.menu.db.locale=Référentiel +observe.menu.file=Fichier +observe.menu.help=Aide +observe.menu.locale=Langues +observe.menu.navigation=Navigation +observe.menu.storage=Source de données +observe.message.can.not.write.data=Vous n'êtes pas autorisé à écrire des données observateurs sur cette source de données. +observe.message.cant.add.echantillonRejetThon=<html><body><strong>Impossible d'ajouter des échantillons de rejet thons</strong>(pas de rejet thon monté sur le pont)</body></html> +observe.message.cant.add.echantillonTargetCatch=<html><body><strong>Impossible d'ajouter des échantillons thons</strong> (pas de capture thon)</body></html> +observe.message.cant.add.nonTargetSample=<html><body><strong>Impossible d'ajouter des échantillons</strong>(pas de rejet faune)</body></html> +observe.message.consolidate.operation.done=Opération de calcul des données terminée à %1$s. +observe.message.consolidate.save.changes=Sauvegarde des modifications sur la(es) %1$s marée(s) modifiée(s). +observe.message.creating.referentiel=L'objet est en cours de création. +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 +observe.message.db.none.loaded=Aucune source de données chargée +observe.message.db.none.loaded.tip=Aucune source de données chargée... +observe.message.delete=Confirmer la suppression de l'objet \:\n\n '%1$s' - '%2$s'\n +observe.message.delete.directory=Suppresion du répertoire %1$s +observe.message.delete.new=Confirmer la suppression de l'objet \:\n\n '%1$s'\n +observe.message.detected.accepted.interval=Intervalle de point gps acceptable détecté \: %1$s +observe.message.detected.rejected.interval=Intervalle de point gps rejecté détecté \: %1$s +observe.message.exportData.delete.remote.maree=Suppression de la marée (%1$s) du programme (%2$s) de la base distante. +observe.message.exportData.not.possible=L'opération d'export n'est pas possible (voir les messages précédents). +observe.message.exportData.operation.needFix=Veuillez sélectionner les marées à exporter. +observe.message.exportData.prepare.data=Préparation des données à exporter... +observe.message.exportData.replicate.maree=Duplication de la marée (%1$s) du programme (%2$s) vers la base distante. +observe.message.goto.site=Accéder au site d'Observe (%1$s) +observe.message.h2.server.login=Login +observe.message.h2.server.password=Mot de passe +observe.message.h2.server.url=Url d'accès au serveur +observe.message.help.usage=Aide d'ObServe v %1$s +observe.message.historical.data=Donnée historique (peut-être clôturé même si non valide) +observe.message.importGPS.apply.point=Intégration données gps %1$s pour %2$s +observe.message.importGPS.apply.points=Intégration des données gps dans les activités sélectionnées de la marée ouverte +observe.message.importGPS.detect.point=Détection du point gps pour l'activité %1$s +observe.message.importGPS.detect.points=Détection de points gps pour les activités de la marée ouverte +observe.message.importGPS.detected.point=Point gps détecté %1$s +observe.message.importGPS.no.activity.selected=Aucune activité sélectionnée +observe.message.importGPS.no.detected.point=Pas de point gps détecté pour l'activité +observe.message.importGPS.no.invalid.interval=< Aucun intervalle de points non utilisables > +observe.message.importGPS.nothing.to.do=Aucune donnée à importer +observe.message.importGPS.operation.needFix=L'opération d'import GPS requière des corrections +observe.message.importGPS.prepare.importFile=Préparation de l'import GPS \:\n - fichier à utiliser \: %1$s \n - temps maximum \: %2$s\n - vitesse maximum \: %3$s +observe.message.loaded.tip=La %1$s est chargée,\n\nVous pouvez changer de base en cliquant ici. +observe.message.need.fin.veille.activity=Aucune activité de fin de veille enregistrée sur la route à clotûrer.\nVous pouvez \:\n\n\t- Annuler la fermeture et rester sur la route\n\t- Créer l'activité de fin de veille et vous y rendre\n\t- Créer l'activité de fin de veille, la clôturer puis clôturer la route\n\t- Continuer la clôture de la route sans créer cette activité de fin de veille. +observe.message.no.accepted.intervalle.detected=Aucun intervalle de point gps acceptable détecté +observe.message.no.activity.detected=Aucune activité détectée pour la marée ouverte +observe.message.no.activity.for.route=< Aucune activité pour la route courante > +observe.message.no.activity.for.trip=< Aucune activité pour la marée courante > +observe.message.no.local.db.found=La base locale n'existe pas (emplacement %1$s).\n\nVous pouvez à ce stade créer la base locale ou vous connecter à une base distante. +observe.message.no.open.maree.detected=Aucune marée ouverte détectée +observe.message.no.report.selected=< Aucun report sélectionné > +observe.message.no.route.detected=Aucune route détectée sur la marée ouverte +observe.message.no.route.for.maree=< Aucune route pour la marée courante > +observe.message.no.species.selected=Pas d'espèce sélectionnée +observe.message.no.trip.for.program=< Aucune marée pour le programme courant > +observe.message.no.usage.for.entity=Aucune utilisation trouvée. +observe.message.no.validation.detected=Aucun validateur détecté. +observe.message.quit.invalid.edit=Les données ne sont pas valides et ne peuvent pas être sauvées\!\n\nNote\: le fait de continuer annulera toutes les modifications. +observe.message.quit.valid.edit=Les données ont été modifiées et sont valides\! +observe.message.referentiel.editable=Le référentiel est éditable. +observe.message.referentiel.home=< Référentiel > +observe.message.referentiel.no.editable=Vous n'êtes pas autorisé à éditer le référentiel. +observe.message.save.configuration=Sauvegarde de la configuration dans le fichier %1$s +observe.message.select.report=Choisissez une requête +observe.message.server.info=La base locale %1$s est démarrée en mode serveur. +observe.message.show.usage.for.delete=Le référentiel %1$s "%2$s" ne peut pas être supprimé. +observe.message.show.usage.for.delete2=Des objets utilisent actuellement cet entité dont les références sont citées plus bas. +observe.message.show.usage.for.desactivated=Le référentiel %1$s "%2$s" va être désactivé. +observe.message.show.usage.for.desactivated2=Des objets utilisent actuellement cet entité dont les références sont citées plus bas. +observe.message.show.usage.for.desactivated3=Ces objets devront utiliser un autre référentiel (non désactivé) pour pouvoir être mis à jour. +observe.message.show.usages=Listes des utilisations du référentiel %1$s \: '%2$s' +observe.message.synchro.build.diff=Construction du différentiel de référentiel depuis %1$s +observe.message.synchro.create.temporary.db.to.resolve.obsoletes=Des entités obsolètes ont été détectées, création d'une base temporaire pour les résoudre. +observe.message.synchro.local.modification=Des données ont été modifiées et la base locale doit être sauvée. +observe.message.synchro.no.local.modification=Aucune donnée de la base locale n'a été modifiée, sauvegarde non requise. +observe.message.synchro.no.referentiel.conflict=Le référentiel de votre base locale n'est pas à jour (mais aucun conflit détecté). +observe.message.synchro.obsolete.data.to.duplicate=Objet %s à recopier dans la base temporaire. +observe.message.synchro.operation.canceled=L'opération a été annulée +observe.message.synchro.operation.done=Opération terminée le %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$tS +observe.message.synchro.operation.failed=L'opération a échouée +observe.message.synchro.operation.needFix=L'opération requière des corrections. +observe.message.synchro.ref.is.updtodate=Le référentiel de la base locale est à jour, aucune correction requise. +observe.message.synchro.referentiel.was.added=Des données ont été ajoutées au référentiel distant (%1$d objet(s)) +observe.message.synchro.referentiel.was.modified=Des données ont été modifiées sur le référentiel distant (%1$d objet(s)) +observe.message.synchro.referentiel.was.removed=Des données ont été supprimées du réferentiel distant (%1$d objet(s)) +observe.message.table.editBean.modified=L'entrée en cours d'édition a été modifiée et est valide. +observe.message.table.editBean.modified.but.invalid=L'entrée en cours d'édition a été modifiée, mais n'est pas valide. +observe.message.updating.floatingObject=L'objet flottant est en cours de modification. +observe.message.updating.referentiel=L'objet est en cours de mise à jour. +observe.message.validation.detected=Validateur détecté pour le type %1$s +observe.message.validation.not.save.report=Pas de rapport à sauvegarder. +observe.message.validation.nothing.to.do=Les données sont valides et ne nécessitent pas de correction. +observe.message.validation.operation.done=L'opération de validation terminé le %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$ts. +observe.message.validation.operation.needFix=Vos données ne sont valides et nécessitent des corrections. +observe.message.validation.prepare.validators=Détection des validateurs +observe.message.validation.save.report=Le rapport de validation a été sauvegardé dans le fichier %1$s +observe.message.validation.start.maree=Validation de la marée '%1$s' (%2$s) +observe.message.validation.start.referentiel=Validation du référentiel de type '%1$s' (%2$s entités) +observe.message.validation.use.storage=La validation sera effectuée sur %1$s +observe.message.warning.will.be.delete=%1$s\n\nAttention, l'export remplacera la marée existante. +observe.model.version= +observe.navigationMenu.moveTrip=Réallocation du programme +observe.navigationMenu.noAction=< Aucune action définie > +observe.nonTargetCatch.message.table.will.delete.nonTargetSample=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonages \:\n%1$s\nCela entrainera la suppression des échantillonages suivants \:\n%2$s +observe.nonTargetCatch.table.catchWeight=Poids +observe.nonTargetCatch.table.catchWeight.tip=Poids estimé (en t) +observe.nonTargetCatch.table.comment=Com +observe.nonTargetCatch.table.comment.tip=Commentaire +observe.nonTargetCatch.table.deleteExtraMessage=\nLe fait de supprimer une capture de faune peut entrainer la suppression d'échantillonnage(s) sur l'espèce. +observe.nonTargetCatch.table.meanLength=Taille +observe.nonTargetCatch.table.meanLength.tip=Taille moyenne (en cm) +observe.nonTargetCatch.table.meanWeight=Poids moy +observe.nonTargetCatch.table.meanWeight.tip=Poids moyen (en Kg) +observe.nonTargetCatch.table.reasonForDiscard=Raison rejet +observe.nonTargetCatch.table.reasonForDiscard.tip=Raison rejet +observe.nonTargetCatch.table.speciesFate=Devenir +observe.nonTargetCatch.table.speciesFate.tip=Devenir faune +observe.nonTargetCatch.table.speciesFaune=Espèce de faune +observe.nonTargetCatch.table.speciesFaune.tip=Espèce de faune +observe.nonTargetCatch.table.totalCount=Nombre +observe.nonTargetCatch.table.totalCount.tip=Nombre estimé +observe.nonTargetSample.table.count=Effectif +observe.nonTargetSample.table.count.tip=Effectif +observe.nonTargetSample.table.gender=Sex +observe.nonTargetSample.table.gender.tip=Sex +observe.nonTargetSample.table.length=Longueur +observe.nonTargetSample.table.length.tip=Longueur +observe.nonTargetSample.table.meanWeight=Poids ind. +observe.nonTargetSample.table.meanWeight.tip=Poids individuel (en Kg) +observe.nonTargetSample.table.picturesReferences=Ref photo +observe.nonTargetSample.table.picturesReferences.tip=référence photo +observe.nonTargetSample.table.speciesFaune=Espèce faune +observe.nonTargetSample.table.speciesFaune.tip=Espèce faune +observe.objectObservedSpecies.table.count=Nombre +observe.objectObservedSpecies.table.count.tip=Nombre +observe.objectObservedSpecies.table.speciesFaune=Espèce de faune +observe.objectObservedSpecies.table.speciesFaune.tip=Espèce de faune +observe.objectObservedSpecies.table.speciesStatus=Statut Espèce +observe.objectObservedSpecies.table.speciesStatus.tip=Statut Espèce +observe.obstuna.action.create=Création d'obstuna +observe.obstuna.action.create.description=Création d'une nouvelle base distante obstuna +observe.obstuna.action.drop=Destruction d'obstuna +observe.obstuna.action.drop.description=Destruction d'une base distante obstuna +observe.obstuna.action.security=Mise à jour de la sécurité d'obstuna +observe.obstuna.action.security.description=Mise à jour de la sécurité d'une base distante obstuna +observe.obstuna.action.update=Mise à jour d'obstuna +observe.obstuna.action.update.description=Mise à jour d'une base distante obstuna +observe.person.country=Nationalité +observe.program.tab.general=Caractértistiques générales +observe.program.tab.observations=Observations +observe.route.message.active.found=Une route est ouverte. +observe.route.message.active.found.for.other.trip=Une route ouverte existe dans une autre marée. +observe.route.message.creating=La route est en cours de création. +observe.route.message.no.active.found=Aucune route ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrir une. +observe.route.message.no.active.found.for.other.trip=Aucune route ouverte sur la marée ouverte +observe.route.message.not.open=La route courante n'est pas ouverte, aucune modification possible. +observe.route.message.updating=La route est en cours de modification. +observe.route.title=Route +observe.routes.title=Routes +observe.runner.config.loaded=Configuration d'ObServe v. %1$s chargée. +observe.runner.config.migrate.file=Le fichier de configuration %1$s a été déplacée de \n%2$s\nvers\n%3$s +observe.runner.context.loaded=Initialisation du contexte terminée en %1$s. +observe.runner.copy.default.logConfigurationFile.file=Création du fichier de configuration des logs $1. observe.runner.copy.default.map.file= -observe.runner.copy.default.report.file= -observe.runner.copy.default.ui.file= -observe.runner.create.directory= -observe.runner.exists.directory= -observe.runner.i18n.loaded= -observe.runner.init= -observe.runner.load.database= -observe.runner.loaded= -observe.runner.loading.ui.configuration= -observe.runner.quit.withno.ui= -observe.runner.start= -observe.runner.ui.loaded= -observe.runner.user.directories.loaded= -observe.schoolEstimate.table.meanWeight= -observe.schoolEstimate.table.meanWeight.tip= -observe.schoolEstimate.table.speciesThon= -observe.schoolEstimate.table.speciesThon.tip= -observe.schoolEstimate.table.weight= -observe.schoolEstimate.table.weight.tip= -observe.section.cant.delete.message= -observe.section.cant.delete.title= -observe.sectionTemplate.delete.message= -observe.sections.delete.message= -observe.security.referentiel= -observe.security.referentiel.tip= -observe.security.role= -observe.security.role.tip= -observe.security.technicien= -observe.security.technicien.tip= -observe.security.unused= -observe.security.unused.tip= -observe.security.utilisateur= -observe.security.utilisateur.tip= -observe.sensorUsed.action.create= -observe.sensorUsed.action.create.tip= -observe.sensorUsed.action.reset.dataLocation.tip= -observe.sensorUsed.action.reset.sensorSerialNo.tip= -observe.sensorUsed.data= -observe.sensorUsed.dataLocation= -observe.sensorUsed.dataLocation.tip= -observe.sensorUsed.delete.data.message= -observe.sensorUsed.deleteData= -observe.sensorUsed.deleteData.tip= -observe.sensorUsed.exportData= -observe.sensorUsed.exportData.tip= -observe.sensorUsed.importData= -observe.sensorUsed.importData.tip= -observe.sensorUsed.message.data.exported= -observe.sensorUsed.message.data.imported= -observe.sensorUsed.sensorBrand= -observe.sensorUsed.sensorDataFormat= -observe.sensorUsed.sensorSerialNo= -observe.sensorUsed.sensorType= -observe.sensorUsed.table.data= -observe.sensorUsed.table.data.tip= -observe.sensorUsed.table.dataLocation= -observe.sensorUsed.table.dataLocation.tip= -observe.sensorUsed.table.sensorBrand= -observe.sensorUsed.table.sensorBrand.tip= -observe.sensorUsed.table.sensorDataFormat= -observe.sensorUsed.table.sensorDataFormat.tip= -observe.sensorUsed.table.sensorSerialNo= -observe.sensorUsed.table.sensorSerialNo.tip= -observe.sensorUsed.table.sensorType= -observe.sensorUsed.table.sensorType.tip= -observe.sensorUsed.title= -observe.setLongline.action.reset.homeId.tip= -observe.setLongline.basketsPerSectionCount= -observe.setLongline.branchlinesPerBasketCount= -observe.setLongline.haulingBreaks= -observe.setLongline.haulingDirectionSameAsSetting= -observe.setLongline.haulingEndCoordinates= -observe.setLongline.haulingEndTimeStamp= -observe.setLongline.haulingStartCoordinates= -observe.setLongline.haulingStartTimeStamp= -observe.setLongline.homeId= -observe.setLongline.lightsticksColor= -observe.setLongline.lightsticksPerBasketCount= -observe.setLongline.lightsticksType= -observe.setLongline.lineType= -observe.setLongline.maxDepthTargeted= -observe.setLongline.message.creating= -observe.setLongline.message.updating= -observe.setLongline.monitored= -observe.setLongline.number= -observe.setLongline.settingEndCoordinates= -observe.setLongline.settingEndTimeStamp= -observe.setLongline.settingShape= -observe.setLongline.settingStartCoordinates= -observe.setLongline.settingStartTimeStamp= -observe.setLongline.settingVesselSpeed= -observe.setLongline.shooterSpeed= -observe.setLongline.shooterUsed= -observe.setLongline.snapWeight= -observe.setLongline.swivelWeight= -observe.setLongline.tab.hauling= -observe.setLongline.tab.setting= -observe.setLongline.tab.settingCaracteristics= -observe.setLongline.timeBetweenHooks= -observe.setLongline.title= -observe.setLongline.totalBasketsCount= -observe.setLongline.totalHooksCount= -observe.setLongline.totalSectionsCount= -observe.setLongline.weightedSnap= -observe.setLongline.weightedSwivel= -observe.setSeine.currentDirection= -observe.setSeine.currentMeasureDepth= -observe.setSeine.currentSpeed= -observe.setSeine.endPursingTimeStamp= -observe.setSeine.endSetTimeStamp= -observe.setSeine.maxGearDepth= -observe.setSeine.message.creating= +observe.runner.copy.default.report.file=Création du fichier de reports %1$s. +observe.runner.copy.default.ui.file=Création du fichier de cosmétique %1$s. +observe.runner.create.directory=Création du répertoire %1$s +observe.runner.exists.directory=Le répertoire %1$s existe. +observe.runner.i18n.loaded=Service de traduction chargé dans la langue %1$s. +observe.runner.init=Initialisation d'ObServe %1$s %2$s +observe.runner.load.database=Chargement de la source de données +observe.runner.loaded=ObServe v %1$s est chargé +observe.runner.loading.ui.configuration=Chargement du fichier de cosmétique %1$s +observe.runner.quit.withno.ui=Fermeture de l'application sans ouvrir l'interface graphique +observe.runner.start=Démarrage d'ObServe %1$s %2$s +observe.runner.ui.loaded=Initialisation de l'interface graphique terminée. +observe.runner.user.directories.loaded=Le répertoire utilisateur a été initialisé (%1$s). +observe.schoolEstimate.table.meanWeight=Poids moyen (en Kg) +observe.schoolEstimate.table.meanWeight.tip=Poids moyen (en Kg) +observe.schoolEstimate.table.speciesThon=Espèce de thon +observe.schoolEstimate.table.speciesThon.tip=Espèce de thon (ne peut pas être modifié une fois l'estimation crée) +observe.schoolEstimate.table.weight=Poids (en t) +observe.schoolEstimate.table.weight.tip=Poids (en t) +observe.section.cant.delete.message=La section ne peut pas être supprimée car elle est utilisée dans des données. +observe.section.cant.delete.title=Impossible de supprimer la section +observe.sectionTemplate.delete.message=Confirmer la suppression de la template sélectionnée. +observe.sections.delete.message=Confirmer la suppression de toutes les sections. +observe.security.referentiel=Référentiel +observe.security.referentiel.tip=Rôle de lecture seule du référentiel (aucun droit sur les données) +observe.security.role=Rôle +observe.security.role.tip=Nom du rôle de la base +observe.security.technicien=Technicien +observe.security.technicien.tip=Rôle ayant tous les droits sur le référentiel et les données +observe.security.unused=Non utilisé +observe.security.unused.tip=Ne pas utiliser ce rôle +observe.security.utilisateur=Utilisateur +observe.security.utilisateur.tip=Rôle ayant les droits de lecture sur le référentiel et les données +observe.sensorUsed.action.create=Insérer ce capteur +observe.sensorUsed.action.create.tip=Insérer ce capteur +observe.sensorUsed.action.reset.dataLocation.tip=Réinitialiser +observe.sensorUsed.action.reset.sensorSerialNo.tip=Réinitialiser +observe.sensorUsed.data=Fichier de données +observe.sensorUsed.dataLocation=Hébergement +observe.sensorUsed.dataLocation.tip=Hébergement du fichier de données +observe.sensorUsed.delete.data.message=Confirmer la suppression du fichier de données +observe.sensorUsed.deleteData=Supprimer +observe.sensorUsed.deleteData.tip=Supprimer le fichier de données +observe.sensorUsed.exportData=Exporter +observe.sensorUsed.exportData.tip=Exporter le fichier de données enregistré +observe.sensorUsed.importData=Importer +observe.sensorUsed.importData.tip=Importer un fichier de données +observe.sensorUsed.message.data.exported=Le fichier de données a été exporté (%s). +observe.sensorUsed.message.data.imported=Le fichier de données %s a été importé. +observe.sensorUsed.sensorBrand=Marque +observe.sensorUsed.sensorDataFormat=Format de données +observe.sensorUsed.sensorSerialNo=Numéro de série +observe.sensorUsed.sensorType=Type +observe.sensorUsed.table.data=Fichier +observe.sensorUsed.table.data.tip=Fichier de données présent ? +observe.sensorUsed.table.dataLocation=Hébergement +observe.sensorUsed.table.dataLocation.tip=Hébergement du fichier de données +observe.sensorUsed.table.sensorBrand=Marque +observe.sensorUsed.table.sensorBrand.tip=Marque de capteur +observe.sensorUsed.table.sensorDataFormat=Format de données +observe.sensorUsed.table.sensorDataFormat.tip=Format de données du capteur +observe.sensorUsed.table.sensorSerialNo=Numéro de série +observe.sensorUsed.table.sensorSerialNo.tip=Numéro de stié du capteur +observe.sensorUsed.table.sensorType=Type +observe.sensorUsed.table.sensorType.tip=Type de capteur +observe.sensorUsed.title=Capteurs +observe.setLongline.action.reset.homeId.tip=Réinitialiser l'id métier +observe.setLongline.basketsPerSectionCount=Nombre de paniers par section +observe.setLongline.branchlinesPerBasketCount=Nombre d'hameçons par panier +observe.setLongline.haulingBreaks=Nombre de coupures +observe.setLongline.haulingDirectionSameAsSetting=Sens du virage identique à celui du filage +observe.setLongline.haulingEndCoordinates=Coordonnées fin de virage +observe.setLongline.haulingEndTimeStamp=Horodatage fin +observe.setLongline.haulingStartCoordinates=Coordonnées début de virage +observe.setLongline.haulingStartTimeStamp=Horodatage début +observe.setLongline.homeId=Id métier +observe.setLongline.lightsticksColor=Couleur de cyalumes +observe.setLongline.lightsticksPerBasketCount=Nombre de cyalumes par panier +observe.setLongline.lightsticksType=Type de cyalumes +observe.setLongline.lineType=Type de ligne +observe.setLongline.maxDepthTargeted=Profondeur maximum ciblée +observe.setLongline.message.creating=L'opération de pêche est en cours de création. +observe.setLongline.message.updating=L'opération de pêche est en cours de modification. +observe.setLongline.monitored=Instrumentée +observe.setLongline.number=Numéro +observe.setLongline.settingEndCoordinates=Coordonnées fin de filage +observe.setLongline.settingEndTimeStamp=Horodatage fin +observe.setLongline.settingShape=Forme du filage +observe.setLongline.settingStartCoordinates=Coordonnées début de filage +observe.setLongline.settingStartTimeStamp=Horodatage début +observe.setLongline.settingVesselSpeed=Vitesse bateau (nd) +observe.setLongline.shooterSpeed=Vitesse shooter (nd) +observe.setLongline.shooterUsed=Shooter utilisé +observe.setLongline.snapWeight=Poids snap (kg) +observe.setLongline.swivelWeight=Poids de l'émerillon (kg) +observe.setLongline.tab.hauling=Virage +observe.setLongline.tab.setting=Filage +observe.setLongline.tab.settingCaracteristics=Caractéristiques +observe.setLongline.timeBetweenHooks=Temps entre hameçons (s) +observe.setLongline.title=Opération de pêche +observe.setLongline.totalBasketsCount=Nombre total de baskets +observe.setLongline.totalHooksCount=Nombre total d'avançons +observe.setLongline.totalSectionsCount=Nombre total de sections +observe.setLongline.weightedSnap=Snap lesté +observe.setLongline.weightedSwivel=Émerillon lesté +observe.setSeine.currentDirection=Direction du courant (°) +observe.setSeine.currentMeasureDepth=Profondeur de mesure du courant (m) +observe.setSeine.currentSpeed=Vitesse du courant (nd) +observe.setSeine.endPursingTimeStamp=Date - Heure de fin coulissage +observe.setSeine.endSetTimeStamp=Date - Heure de fin de validité +observe.setSeine.maxGearDepth=Profondeur maximum (m) +observe.setSeine.message.creating=La calée est en cours de création. observe.setSeine.message.information.schoolType= -observe.setSeine.message.no.nonTargetDiscarded= -observe.setSeine.message.no.targetCatch= -observe.setSeine.message.no.targetDiscarded= -observe.setSeine.message.updating= -observe.setSeine.nonTargetDiscarded= -observe.setSeine.reasonForNullSet= -observe.setSeine.schoolMeanDepth= -observe.setSeine.schoolThickness= -observe.setSeine.schoolTopDepth= -observe.setSeine.schoolType= -observe.setSeine.schoolType.not.fill= -observe.setSeine.sonarUsed= -observe.setSeine.sonarUsedAvantSet= -observe.setSeine.startTime= -observe.setSeine.supportVesselName= -observe.setSeine.tab.general= -observe.setSeine.tab.measurements= -observe.setSeine.targetDiscarded= -observe.setSeine.title= -observe.species.availableOcean= -observe.species.selectedOcean= -observe.species.tab.general= -observe.species.tab.other= -observe.speciesList.availableSpecies= -observe.speciesList.selectedSpecies= -observe.speciesList.tab.general= -observe.speciesList.tab.species= -observe.storage.action.canMigrate= +observe.setSeine.message.no.nonTargetDiscarded=La calée n'a pas de rejet de faune +observe.setSeine.message.no.targetCatch=Pour échantilloner les thons capturés, il faut au moins une capture. +observe.setSeine.message.no.targetDiscarded=Pour échantilloner les thons, il faut au moins un rejet de thon monté sur le pont. +observe.setSeine.message.updating=La calée est en cours de modification. +observe.setSeine.nonTargetDiscarded=Rejet de faune +observe.setSeine.reasonForNullSet=Cause coup nul +observe.setSeine.schoolMeanDepth=Profondeur moyenne (m) +observe.setSeine.schoolThickness=Épaisseur du banc (m) +observe.setSeine.schoolTopDepth=Profondeur sommet (m) +observe.setSeine.schoolType=Type de banc +observe.setSeine.schoolType.not.fill=Non renseigné +observe.setSeine.sonarUsed=Utilisation sonar pendant la calée +observe.setSeine.sonarUsedAvantSet=Utilisation du sonar +observe.setSeine.startTime=Date - Heure de début de validité +observe.setSeine.supportVesselName=Nom supply +observe.setSeine.tab.general=Caractéristiques générales +observe.setSeine.tab.measurements=Mesures +observe.setSeine.targetDiscarded=Rejet de thon +observe.setSeine.title=Calée +observe.species.availableOcean=Océans disponibles +observe.species.selectedOcean=Océans sélectionnés +observe.species.tab.general=Caractéristiques générales +observe.species.tab.other=Autres caractéristiques +observe.speciesList.availableSpecies=Espèces disponibles +observe.speciesList.selectedSpecies=Espèces sélectionnées +observe.speciesList.tab.general=Caractéristiques générales +observe.speciesList.tab.species=Espèces +observe.storage.action.canMigrate=Mettre à jour la base (version courante %1$s) observe.storage.connexionStatut.failed= observe.storage.connexionStatut.failed.description= observe.storage.connexionStatut.success= @@ -1754,6 +1759,8 @@ observe.storage.creationMode.importLocalStorage= observe.storage.creationMode.importLocalStorage.description= observe.storage.creationMode.importRemoteStorage= observe.storage.creationMode.importRemoteStorage.description= +observe.storage.creationMode.importServerStorage= +observe.storage.creationMode.importServerStorage.description= observe.storage.creationMode.internalDump= observe.storage.creationMode.internalDump.description= observe.storage.dataPolicy.readData= @@ -1770,566 +1777,577 @@ observe.storage.dbMode.useLocal= observe.storage.dbMode.useLocal.description= observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= -observe.storage.error.dbVersionMismatch= -observe.storage.importExternalDump.config= -observe.storage.importExternalDump.description= -observe.storage.importExternalDumpData.config= -observe.storage.importExternalDumpReferentiel.config= -observe.storage.importRemoteStorage.config= -observe.storage.importRemoteStorage.description= -observe.storage.importRemoteStorageData.config= -observe.storage.importRemoteStorageReferentiel.config= -observe.storage.internalDump.last.modified= -observe.storage.internalDump.not.exist= -observe.storage.label.backup= -observe.storage.label.data.import.db= -observe.storage.label.db.to.create= -observe.storage.label.db.to.drop= -observe.storage.label.db.to.update= -observe.storage.label.db.to.update.security= -observe.storage.label.import.data= -observe.storage.label.import.local= -observe.storage.label.import.referentiel= -observe.storage.label.import.remote= -observe.storage.label.local= -observe.storage.label.reference.import.db= -observe.storage.label.remote= -observe.storage.label.synchro= -observe.storage.label.synchro.incoming= -observe.storage.label.synchro.referentiel= -observe.storage.locale.db= +observe.storage.dbMode.useServer=Utiliser un serveur distant +observe.storage.dbMode.useServer.description=Utiliser un serveur distant +observe.storage.error.dbVersionMismatch=La version de la base distante (%s) n'est pas compatible avec la version du modèle (%s) +observe.storage.importExternalDump.config=Sélection de la sauvegarde à utiliser +observe.storage.importExternalDump.description=Veuillez sélectionner le fichier d'une sauvegarde (*.sql.gz). +observe.storage.importExternalDumpData.config=Choisir la sauvegarde contenant les données à importer +observe.storage.importExternalDumpReferentiel.config=Choisir la sauvegarde contenant le référentiel à importer +observe.storage.importRemoteStorage.config=Sélection de la base distante à importer +observe.storage.importRemoteStorage.description=Veuillez configurer la connexion vers une base distante.\nAvant de pouvoir poursuivre, vous devez valider la connexion. +observe.storage.importRemoteStorageData.config=Choisir la base distante contenant les données à importer +observe.storage.importRemoteStorageReferentiel.config=Choisir la base distante contenant le référentiel à importer +observe.storage.internalDump.last.modified=(dernier import \: %1$td/%1$tm/%1$tY à %1$tH\:%1$tM) +observe.storage.internalDump.not.exist=Pas de base embarquée. +observe.storage.label.backup=Base temporaire pour backup +observe.storage.label.data.import.db=Base d'import de données +observe.storage.label.db.to.create=Base à créer +observe.storage.label.db.to.drop=Base à vider +observe.storage.label.db.to.update=Base à mettre à jour +observe.storage.label.db.to.update.security=Base à mettre à jour (sécurité) +observe.storage.label.import.data=Base distante d'import de données +observe.storage.label.import.local=Base locale d'import +observe.storage.label.import.referentiel=Base distante d'import +observe.storage.label.import.remote=Base distante d'import +observe.storage.label.local=Base locale +observe.storage.label.reference.import.db=Base d'import de référentiels +observe.storage.label.remote=Base distante +observe.storage.label.rest= +observe.storage.label.synchro=Base de synchronisation +observe.storage.label.synchro.incoming=Base source <%1$s> +observe.storage.label.synchro.referentiel=Base centrale <%1$s> +observe.storage.locale.db=(locale) observe.storage.message.provider.detected= -observe.storage.no.creationMode= -observe.storage.no.creationMode.required= -observe.storage.no.dbMode= -observe.storage.noImportData.config= -observe.storage.noImportReferentiel.config= -observe.storage.remote.db= -observe.storage.remote.login= -observe.storage.remote.password= -observe.storage.remote.url= -observe.storage.remote.useSll= -observe.storage.report.action.backup.local= -observe.storage.report.action.backup.remote= -observe.storage.report.action.connect.local= -observe.storage.report.action.connect.remote= -observe.storage.report.action.create.local= -observe.storage.report.action.data.import.backup= -observe.storage.report.action.import.backup= -observe.storage.report.action.import.internal= -observe.storage.report.action.import.remote.data= -observe.storage.report.action.import.remote.referentiel= -observe.storage.report.action.migrate= -observe.storage.report.action.no.data.import= -observe.storage.report.action.no.referentiel.import= -observe.storage.report.action.referentiel.import.backup= -observe.storage.report.can.migrate= -observe.storage.report.can.not.migrate= -observe.storage.report.no.create.mode= -observe.storage.report.security.owner= -observe.storage.report.security.readers= -observe.storage.report.security.referentiels= -observe.storage.report.security.techniciens= -observe.storage.report.selected.all.data= -observe.storage.report.selected.all.data.to.import= -observe.storage.report.selected.backup.file= -observe.storage.report.selected.data= -observe.storage.report.selected.data.for.import= -observe.storage.report.selected.data.referentiel= -observe.storage.report.selected.data.to.export= -observe.storage.report.selected.data.to.import= -observe.storage.report.selected.localStorageFile= -observe.storage.report.selected.no.data= -observe.storage.report.selected.no.data.to.import= -observe.storage.report.selected.remoteStorage= -observe.storage.report.selected.security= -observe.storage.required.rw.on.data= -observe.storage.security.administrateur= -observe.storage.selected.dbMode= -observe.storage.selectedCreationMode= -observe.storage.showMigrationProgression= -observe.storage.showMigrationSql= -observe.storage.step.backup= -observe.storage.step.backup.description= -observe.storage.step.config= -observe.storage.step.config.description= -observe.storage.step.configData= -observe.storage.step.configData.description= -observe.storage.step.configReferentiel= -observe.storage.step.configReferentiel.description= -observe.storage.step.confirm= -observe.storage.step.confirm.description= -observe.storage.step.creationMode= -observe.storage.step.dbMode= -observe.storage.step.dbMode.description= -observe.storage.step.dbMode.detail= -observe.storage.step.label= -observe.storage.step.roles= -observe.storage.step.roles.description= -observe.storage.step.selectData= -observe.storage.step.selectData.description= -observe.storage.store.remote.config= -observe.storage.store.remote.config.tip= -observe.storage.useRemoteStorage.config= -observe.storage.useRemoteStorage.description= -observe.synchro.add.object= -observe.synchro.common.activity= -observe.synchro.common.latitude= -observe.synchro.common.longitude= -observe.synchro.common.quadrant= -observe.synchro.common.reference= -observe.synchro.common.select= -observe.synchro.common.vitesse= -observe.synchro.config.data.mode= -observe.synchro.config.data.storage= -observe.synchro.config.export.required.read.data= -observe.synchro.config.export.required.read.referentiel= -observe.synchro.config.export.required.write.data= -observe.synchro.config.importGPS= -observe.synchro.config.referentiel.mode= -observe.synchro.config.referentiel.storage= -observe.synchro.config.report= -observe.synchro.config.source.storage= -observe.synchro.config.validate= -observe.synchro.config.validation.report= -observe.synchro.configuration= -observe.synchro.continue.with.no.save.report= -observe.synchro.import.data.fromBackup= -observe.synchro.import.data.fromRemoteStorage= -observe.synchro.importGPS.invalidIntervals.list= -observe.synchro.message.all.obsolete.entities.fixed= -observe.synchro.message.need.save.for.synchro.operation= -observe.synchro.message.need.save.for.validation.operation= -observe.synchro.message.obsolete.entities.fixed= -observe.synchro.message.obsolote.entity.ref.found= -observe.synchro.message.obsolote.entity.refs.found= -observe.synchro.message.saveLocal.skip= -observe.synchro.no.data.import= -observe.synchro.no.local.storage= -observe.synchro.no.referentiel.import= -observe.synchro.no.remote.storage= -observe.synchro.obsolete.entities.list= -observe.synchro.obsolete.entity.fix= -observe.synchro.obsolete.entity.label= -observe.synchro.obsolete.entity.to.change.label= -observe.synchro.operation.canceled= -observe.synchro.operation.consolidate= -observe.synchro.operation.consolidate.description= -observe.synchro.operation.exportData= -observe.synchro.operation.exportData.description= -observe.synchro.operation.failed= -observe.synchro.operation.importGPS= -observe.synchro.operation.importGPS.description= -observe.synchro.operation.needFix= -observe.synchro.operation.report= -observe.synchro.operation.report.description= -observe.synchro.operation.running= -observe.synchro.operation.saveLocal= -observe.synchro.operation.saveLocal.description= -observe.synchro.operation.successed= -observe.synchro.operation.synchronize= -observe.synchro.operation.synchronize.description= -observe.synchro.operation.validate= -observe.synchro.operation.validate.description= -observe.synchro.operations= -observe.synchro.remove.object= -observe.synchro.replaceObsolete.object= -observe.synchro.report.copy.options= -observe.synchro.report.report.description= -observe.synchro.report.result= -observe.synchro.report.select= -observe.synchro.report.variables= -observe.synchro.safe.entity.to.choose.label= -observe.synchro.save.report= -observe.synchro.step.config= -observe.synchro.step.config.description= -observe.synchro.step.consolidate= -observe.synchro.step.consolidate.description= -observe.synchro.step.exportData= -observe.synchro.step.exportData.description= -observe.synchro.step.importGPS= -observe.synchro.step.importGPS.description= -observe.synchro.step.report= -observe.synchro.step.report.description= -observe.synchro.step.saveLocal= -observe.synchro.step.saveLocal.description= -observe.synchro.step.selectData= -observe.synchro.step.selectData.description= -observe.synchro.step.showResume= -observe.synchro.step.showResume.description= -observe.synchro.step.synchronize= -observe.synchro.step.synchronize.description= -observe.synchro.step.validate= -observe.synchro.step.validate.description= -observe.synchro.table.exportData.exist.label= -observe.synchro.table.exportData.exist.label.tip= -observe.synchro.table.exportData.program.label= -observe.synchro.table.exportData.program.label.tip= -observe.synchro.table.exportData.selected= -observe.synchro.table.exportData.selected.tip= -observe.synchro.table.exportData.trip.label= -observe.synchro.table.exportData.trip.label.tip= -observe.synchro.table.importGPS.activity.label= -observe.synchro.table.importGPS.activity.label.tip= -observe.synchro.table.importGPS.activity.latitude= -observe.synchro.table.importGPS.activity.latitude.tip= -observe.synchro.table.importGPS.activity.longitude= -observe.synchro.table.importGPS.activity.longitude.tip= -observe.synchro.table.importGPS.activity.quadrant= -observe.synchro.table.importGPS.activity.quadrant.tip= -observe.synchro.table.importGPS.activity.select= -observe.synchro.table.importGPS.activity.select.tip= -observe.synchro.table.importGPS.activity.vitesse= -observe.synchro.table.importGPS.activity.vitesse.tip= -observe.synchro.table.importGPS.computed.label= -observe.synchro.table.importGPS.computed.label.tip= -observe.synchro.table.importGPS.data.label= -observe.synchro.table.importGPS.data.label.tip= -observe.synchro.table.obsolete.entity.label= -observe.synchro.table.obsolete.entity.label.tip= -observe.synchro.table.obsolete.entity.select= -observe.synchro.table.obsolete.entity.select.tip= -observe.synchro.update.object= -observe.synchro.validate.invalid.data.list= -observe.synchro.validate.message.list= -observe.synchro.validate.save.reportFile= -observe.targetCatch.table.comment= -observe.targetCatch.table.comment.tip= -observe.targetCatch.table.deleteExtraMessage= -observe.targetCatch.table.speciesThon= -observe.targetCatch.table.speciesThon.tip= -observe.targetCatch.table.weight= -observe.targetCatch.table.weight.tip= -observe.targetCatch.table.weightCategory= -observe.targetCatch.table.weightCategory.tip= -observe.targetCatch.table.well= -observe.targetCatch.table.well.tip= -observe.targetDiscarded.message.table.will.delete.targetLength= -observe.targetDiscarded.table.broughtOnDeck= -observe.targetDiscarded.table.broughtOnDeck.tip= -observe.targetDiscarded.table.comment= -observe.targetDiscarded.table.comment.tip= -observe.targetDiscarded.table.deleteExtraMessage= -observe.targetDiscarded.table.reasonForDiscard= -observe.targetDiscarded.table.reasonForDiscard.tip= -observe.targetDiscarded.table.speciesThon= -observe.targetDiscarded.table.speciesThon.tip= -observe.targetDiscarded.table.weight= -observe.targetDiscarded.table.weight.tip= -observe.targetDiscarded.table.weightCategory= -observe.targetDiscarded.table.weightCategory.tip= -observe.targetSample.table.count= -observe.targetSample.table.count.tip= -observe.targetSample.table.length= -observe.targetSample.table.length.tip= -observe.targetSample.table.meanWeight= -observe.targetSample.table.meanWeight.tip= -observe.targetSample.table.measureType= -observe.targetSample.table.measureType.tip= -observe.targetSample.table.speciesThon= -observe.targetSample.table.speciesThon.tip= -observe.targetSample.table.totalWeight= -observe.targetSample.table.totalWeight.tip= -observe.tdr.action.create= -observe.tdr.action.create.tip= -observe.tdr.action.reset.dataLocation.tip= -observe.tdr.action.reset.homeId.tip= -observe.tdr.action.reset.serialNo.tip= -observe.tdr.availableSpecies= -observe.tdr.basket= -observe.tdr.branchline= -observe.tdr.data= -observe.tdr.dataLocation= -observe.tdr.dataLocation.tip= -observe.tdr.delete.data.message= -observe.tdr.deleteData= -observe.tdr.deleteData.tip= -observe.tdr.deployementEnd= -observe.tdr.deployementStart= -observe.tdr.enableTimestamp= -observe.tdr.enableTimestamp.tip= -observe.tdr.exportData= -observe.tdr.exportData.tip= -observe.tdr.fishingEnd= -observe.tdr.fishingEndDepth= -observe.tdr.fishingStart= -observe.tdr.fishingStartDepth= -observe.tdr.floatline1Length= -observe.tdr.floatline2Length= -observe.tdr.homeId= -observe.tdr.importData= -observe.tdr.importData.tip= -observe.tdr.itemHorizontalPosition= -observe.tdr.itemVerticalPosition= -observe.tdr.locationOnLongline= -observe.tdr.maxFishingDepth= -observe.tdr.meanDeployementDepth= -observe.tdr.meanFishingDepth= -observe.tdr.medianDeployementDepth= -observe.tdr.medianFishingDepth= -observe.tdr.message.data.imported= -observe.tdr.minFishingDepth= -observe.tdr.section= -observe.tdr.selectedSpecies= -observe.tdr.sensorBrand= -observe.tdr.serialNo= -observe.tdr.species= -observe.tdr.tab.caracteristics= -observe.tdr.tab.keyData= -observe.tdr.tab.localisation= -observe.tdr.tab.species= -observe.tdr.tab.timestamp= -observe.tdr.table.data= -observe.tdr.table.homeId= -observe.tdr.table.homeId.tip= -observe.tdr.table.sensorBrand= -observe.tdr.table.sensorBrand.tip= -observe.tdr.table.serialNo= -observe.tdr.table.serialNo.tip= -observe.tdr.title= -observe.title.about= -observe.title.can.not.delete.referentiel= -observe.title.can.not.export.obstuna= -observe.title.change.storage= -observe.title.choose.db.dump= -observe.title.choose.db.dump.directory= -observe.title.choose.importGPS= -observe.title.choose.report.directory= -observe.title.choose.reportFile= -observe.title.choose.sensorUsed.exportData= -observe.title.choose.sensorUsed.importData= -observe.title.choose.tdr.exportData= -observe.title.choose.tdr.importData= -observe.title.config.migrate= -observe.title.connect.existingDB= -observe.title.connect.localDB= -observe.title.connect.remoteDB= -observe.title.consolidate= -observe.title.consolidate.tip= +observe.storage.no.creationMode=Aucun mode de création sélectionné +observe.storage.no.creationMode.required=Non requis. +observe.storage.no.dbMode=Aucun type de source de données sélectionné +observe.storage.noImportData.config=< Pas de configuration > +observe.storage.noImportReferentiel.config=< Pas de configuration > +observe.storage.remote.db=(distante) +observe.storage.remote.login=Login +observe.storage.remote.password=Mot de passe +observe.storage.remote.url=Url +observe.storage.remote.useSll=mode ssl ? +observe.storage.report.action.backup.local=Sauvegarde de la base locale +observe.storage.report.action.backup.remote=Sauvegarde de la base distante +observe.storage.report.action.connect.local=Connection à la base locale +observe.storage.report.action.connect.remote=Connexion à une base distante +observe.storage.report.action.create.local=Création de la base locale +observe.storage.report.action.data.import.backup=Import de données depuis une sauvegarde \: +observe.storage.report.action.import.backup=Import depuis une sauvegarde \: +observe.storage.report.action.import.internal=Import depuis une le dernier référentiel téléchargé \: +observe.storage.report.action.import.remote.data=Import de données depuis une base distante \: +observe.storage.report.action.import.remote.referentiel=Import du référentiel depuis une base distante \: +observe.storage.report.action.migrate=Politique de mise à jour +observe.storage.report.action.no.data.import=Pas d'import de données +observe.storage.report.action.no.referentiel.import=Pas d'import de référentiel +observe.storage.report.action.referentiel.import.backup=Import du référentiel depuis une sauvegarde \: +observe.storage.report.can.migrate=Mise à jour si nécessaire (version actuelle \: %1$s) +observe.storage.report.can.not.migrate=Pas de mise à jour possible +observe.storage.report.no.create.mode=Mode de création de base non requis +observe.storage.report.security.owner=Propriétaire \: %1$s +observe.storage.report.security.readers=Lecteurs \: %1$s +observe.storage.report.security.referentiels=Référentiels \: %1$s +observe.storage.report.security.techniciens=Techniciens \: %1$s +observe.storage.report.selected.all.data=Toutes les données observateur sont à exporter (%1$s marée(s)). +observe.storage.report.selected.all.data.to.import=Toutes les données observateur sont à importer (%1$s marée(s)). +observe.storage.report.selected.backup.file=Emplacement de la sauvegarde \: +observe.storage.report.selected.data=%1$s marée(s) à exporter +observe.storage.report.selected.data.for.import=%1$s marée(s) à importer +observe.storage.report.selected.data.referentiel=Le référentiel sera exporté +observe.storage.report.selected.data.to.export=Données à exporter \: +observe.storage.report.selected.data.to.import=Données à importer \: +observe.storage.report.selected.localStorageFile=Emplacement de la base locale \: +observe.storage.report.selected.no.data=Pas de données observateur à exporter +observe.storage.report.selected.no.data.to.import=Pas de données observateur à importer +observe.storage.report.selected.remoteStorage=Informations sur la connexion distance à utiliser \: +observe.storage.report.selected.security=Sécurité +observe.storage.required.rw.on.data=Vous n'avez pas les droits suffisants pour effectuer cette opération.\n\nPour effectuer cette opération vous devez avoir les droits de lecture et d'écriture sur les données observateur. +observe.storage.security.administrateur=Propriétaire de la base +observe.storage.selected.dbMode=Type de source de données sélectionné +observe.storage.selectedCreationMode=Mode de création sélectionné +observe.storage.server.dataBase= +observe.storage.showMigrationProgression=Afficher la progression lors des mises à jour +observe.storage.showMigrationSql=Afficher les requêtes sql lors des mises à jour +observe.storage.step.backup=Sauvegarde +observe.storage.step.backup.description=Sauvegarder la base locale avant de changer de source de données +observe.storage.step.config=Configuration +observe.storage.step.config.description=Configurer la source de données sélectionnée +observe.storage.step.configData=Données +observe.storage.step.configData.description=Configurer l'import de données +observe.storage.step.configReferentiel=Référentiel +observe.storage.step.configReferentiel.description=Configurer l'import du référentiel +observe.storage.step.confirm=Résumé +observe.storage.step.confirm.description=Résumé des opérations à effectuer. +observe.storage.step.creationMode=Création base locale +observe.storage.step.dbMode=Mode +observe.storage.step.dbMode.description=Choisir le mode de connexion +observe.storage.step.dbMode.detail=Type de source de données +observe.storage.step.label=Etape %1$d/%2$d \: %3$s +observe.storage.step.roles=Sécurité +observe.storage.step.roles.description=Mise en place de la sécurité +observe.storage.step.selectData=Sélection données +observe.storage.step.selectData.description=Selectionner les données à exporter dans la sauvegarde +observe.storage.store.remote.config=Conserver le paramétrage +observe.storage.store.remote.config.tip=Conserver le paramétrage de la source de données distante dans votre configuration (sauf les mots de passe pour des raisons de sécurité) +observe.storage.useRemoteStorage.config=Configurer la base distante à utiliser +observe.storage.useRemoteStorage.description=Veuillez configurer votre connexion à la base distante\nAvant de pouvoir poursuivre, vous devez valider la connexion. +observe.storage.useServerStorage.config= +observe.storage.useServerStorage.description= +observe.synchro.add.object=Ajout du référentiel %1$s +observe.synchro.common.activity=Activité +observe.synchro.common.exist=Marée présente sur la base distante +observe.synchro.common.latitude=Latitude +observe.synchro.common.longitude=Longitude +observe.synchro.common.maree=Maréee +observe.synchro.common.program=Program +observe.synchro.common.quadrant=Quadrant +observe.synchro.common.reference=Référence +observe.synchro.common.select=... +observe.synchro.common.selected=Marée à exporter +observe.synchro.common.vitesse=Vitesse +observe.synchro.config.data.mode=Mode d'import des données +observe.synchro.config.data.storage=Configuration de la base de données +observe.synchro.config.export.required.read.data=Vous devez posséder les droits de lecture sur les données de la base distante +observe.synchro.config.export.required.read.referentiel=Vous devez posséder les droits de lecture sur le référentiel de la base distante +observe.synchro.config.export.required.write.data=Vous devez posséder les droits d'écritures sur les données de la base distante +observe.synchro.config.importGPS=Configurer le fichier d'import GPS +observe.synchro.config.referentiel.mode=Mode d'import du référentiel +observe.synchro.config.referentiel.storage=Configuration de la base de référence +observe.synchro.config.report=Configuration des reports +observe.synchro.config.source.storage=Configuration de la base source +observe.synchro.config.validate=Configuration de la validation +observe.synchro.config.validation.report=Rapport de validation +observe.synchro.configuration=Configuration des opérations +observe.synchro.continue.with.no.save.report=Continuer sans sauver de rapport +observe.synchro.import.data.fromBackup=Importer les données depuis une sauvegarde de base locale (*.sql.gz) +observe.synchro.import.data.fromRemoteStorage=Importer les données depuis une base distante +observe.synchro.importGPS.invalidIntervals.list=Liste des intervalles de points gps non utilisables +observe.synchro.message.all.obsolete.entities.fixed=Il n'y a plus de références sur des objets obsolètes. +observe.synchro.message.need.save.for.synchro.operation=L'opération de synchronisation du référentiel a engendrée des modifications. +observe.synchro.message.need.save.for.validation.operation=L'opération de validation des données a engendrée des modifications. +observe.synchro.message.obsolete.entities.fixed=Les références sur %1$s ont été supprimées +observe.synchro.message.obsolote.entity.ref.found=%1$s \: "%2$s" (1 référence) +observe.synchro.message.obsolote.entity.refs.found=%1$s \: "%2$s" (%3$d références) +observe.synchro.message.saveLocal.skip=L'opération de sauvegarde de la base locale n'est pas requise. +observe.synchro.no.data.import=Ne pas importer de données +observe.synchro.no.local.storage=Aucune base source définie +observe.synchro.no.referentiel.import=Ne pas importer de référentiel +observe.synchro.no.remote.storage=Aucune base de référence définie +observe.synchro.obsolete.entities.list=Liste des entités du référentiel obsolètes +observe.synchro.obsolete.entity.fix=Changer les références sur l'objet sélectionné +observe.synchro.obsolete.entity.label=%1$s \: "%2$s" +observe.synchro.obsolete.entity.to.change.label=Objet obsolète +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.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. +observe.synchro.operation.importGPS=Import GPS +observe.synchro.operation.importGPS.description=Importer un fichier de trace GPS +observe.synchro.operation.needFix=L'opération < %1$s > nécessite des corrections. +observe.synchro.operation.report=Tableaux de synthèse +observe.synchro.operation.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement +observe.synchro.operation.running=L'opération < %1$s > est en cours d'exécution... +observe.synchro.operation.saveLocal=Sauvegarde de la base locale +observe.synchro.operation.saveLocal.description=Sauvegarder les modifications effectuées vers la base locale +observe.synchro.operation.successed=L'opération < %1$s > est terminée. +observe.synchro.operation.synchronize=Synchroniser le référentiel +observe.synchro.operation.synchronize.description=Synchroniser le référentiel depuis la base centrale +observe.synchro.operation.validate=Valider les données +observe.synchro.operation.validate.description=Valider les données de la base source +observe.synchro.operations=Opérations à effectuer +observe.synchro.remove.object=Suppression du référentiel %1$s +observe.synchro.replaceObsolete.object=Application du remplacement d'un référentiel obsolète %1$s +observe.synchro.report.copy.options=Options de copie dans le presse-papier +observe.synchro.report.report.description=Description du rapport sélectionné +observe.synchro.report.result=Résultats du rapport +observe.synchro.report.select=Sélection du rapport +observe.synchro.report.variables=Configuration des variables +observe.synchro.safe.entity.to.choose.label=Objets disponibles +observe.synchro.save.report=Sauver le rapport +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.exportData=Exporter +observe.synchro.step.exportData.description=Exporter les données observateurs vers la base centrale +observe.synchro.step.importGPS=Import GPS +observe.synchro.step.importGPS.description=Importer un fichier de trace GPS +observe.synchro.step.report=Tableaux de synthèse +observe.synchro.step.report.description=Aide à la génération du rapport de fin d'embarquement +observe.synchro.step.saveLocal=Sauvegarde locale +observe.synchro.step.saveLocal.description=Sauver les modifications sur votre base source +observe.synchro.step.selectData=Sélection des données +observe.synchro.step.selectData.description=Sélection des données pour effectuer les opérations +observe.synchro.step.showResume=Résumé +observe.synchro.step.showResume.description=Voir un résumé des opérations effectuées +observe.synchro.step.synchronize=Synchronisation Référentiel +observe.synchro.step.synchronize.description=Synchronizer le référentiel depuis la base centrale +observe.synchro.step.validate=Validation +observe.synchro.step.validate.description=Validation des données d'une source de données +observe.synchro.table.exportData.exist.label=E +observe.synchro.table.exportData.exist.label.tip=Marée déjà présente sur la base distante +observe.synchro.table.exportData.program.label=Programme +observe.synchro.table.exportData.program.label.tip=Libellé du programme de la maréee +observe.synchro.table.exportData.selected=... +observe.synchro.table.exportData.selected.tip=Sélectionner - Désélectionner toutes les marées à exporter +observe.synchro.table.exportData.trip.label=Marée +observe.synchro.table.exportData.trip.label.tip=Libellé de la marée +observe.synchro.table.importGPS.activity.label=Activité +observe.synchro.table.importGPS.activity.label.tip=Activité [ quadrant - latitude - longitude ] +observe.synchro.table.importGPS.activity.latitude=Lat. +observe.synchro.table.importGPS.activity.latitude.tip=Latitude (°') +observe.synchro.table.importGPS.activity.longitude=Long. +observe.synchro.table.importGPS.activity.longitude.tip=Longitude (°') +observe.synchro.table.importGPS.activity.quadrant=Quadrant +observe.synchro.table.importGPS.activity.quadrant.tip=Quadrant +observe.synchro.table.importGPS.activity.select=... +observe.synchro.table.importGPS.activity.select.tip=Sélectionner - Désélectionner toutes les activités +observe.synchro.table.importGPS.activity.vitesse=Vitesse +observe.synchro.table.importGPS.activity.vitesse.tip=Vitesse (nd) +observe.synchro.table.importGPS.computed.label=Donnée calculée +observe.synchro.table.importGPS.computed.label.tip=Donnée calculée à partir des traces gps +observe.synchro.table.importGPS.data.label=Donnée saisie +observe.synchro.table.importGPS.data.label.tip=Donnée saisie par l'observateur +observe.synchro.table.obsolete.entity.label=Objet +observe.synchro.table.obsolete.entity.label.tip=L'objet qui utilise la référence sur l'objet obsolète +observe.synchro.table.obsolete.entity.select=... +observe.synchro.table.obsolete.entity.select.tip=Sélectionner - Désélectionner toutes les références +observe.synchro.update.object=Mise à jour du référentiel %1$s à la version %2$s +observe.synchro.validate.invalid.data.list=Liste des objets invalides +observe.synchro.validate.message.list=Liste des messages portant sur l'objet sélectionné +observe.synchro.validate.save.reportFile=Le rapport de validation sera généré ici\n%1$s +observe.targetCatch.table.comment=Com +observe.targetCatch.table.comment.tip=Commentaire +observe.targetCatch.table.deleteExtraMessage=\nLe fait de supprimer une capture thon peut entrainer la suppression d'échantillonnage(s) sur l'espèce. +observe.targetCatch.table.speciesThon=Thon mis en cuve +observe.targetCatch.table.speciesThon.tip=Thon mis en cuve +observe.targetCatch.table.weight=Poids (en t) +observe.targetCatch.table.weight.tip=Poids (en t) +observe.targetCatch.table.weightCategory=Catégorie de poids +observe.targetCatch.table.weightCategory.tip=Catégorie de poids +observe.targetCatch.table.well=Cuve +observe.targetCatch.table.well.tip=Cuve +observe.targetDiscarded.message.table.will.delete.targetLength=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonages \:\n%1$s\nCela entrainera la suppression des échantillonnages suivants \:\n%2$s +observe.targetDiscarded.table.broughtOnDeck=M +observe.targetDiscarded.table.broughtOnDeck.tip=Monté sur le pont ? +observe.targetDiscarded.table.comment=Comm +observe.targetDiscarded.table.comment.tip=Commentaire +observe.targetDiscarded.table.deleteExtraMessage=\nLe fait de supprimer un rejet de thon peut entrainer la suppression d'échantillonnage(s) sur l'espèce. +observe.targetDiscarded.table.reasonForDiscard=Raison rejet +observe.targetDiscarded.table.reasonForDiscard.tip=Raison rejet +observe.targetDiscarded.table.speciesThon=Espèce de thon +observe.targetDiscarded.table.speciesThon.tip=Espèce de thon +observe.targetDiscarded.table.weight=Poids +observe.targetDiscarded.table.weight.tip=Poids (en t) +observe.targetDiscarded.table.weightCategory=Catégorie de poids +observe.targetDiscarded.table.weightCategory.tip=Catégorie de poids +observe.targetSample.table.count=Effectif +observe.targetSample.table.count.tip=Effectif +observe.targetSample.table.length=Longueur +observe.targetSample.table.length.tip=Longueur (cm inf.) +observe.targetSample.table.meanWeight=Poids ind. +observe.targetSample.table.meanWeight.tip=Poids individuel (en Kg) +observe.targetSample.table.measureType=Type de mensuration +observe.targetSample.table.measureType.tip=Le type de mensuration utilisé (LF ou LD1) +observe.targetSample.table.speciesThon=Espèce de thon +observe.targetSample.table.speciesThon.tip=Espèce de thon +observe.targetSample.table.totalWeight=Poids tot. +observe.targetSample.table.totalWeight.tip=Poids total (en t) +observe.tdr.action.create=Insérer le capteur +observe.tdr.action.create.tip=Insérer ce nouveau capteur +observe.tdr.action.reset.dataLocation.tip=Réinitialiser l'hébergement du fichier +observe.tdr.action.reset.homeId.tip=Réinitialiser l'id métier +observe.tdr.action.reset.serialNo.tip=Réinitialiser le numéro se série +observe.tdr.availableSpecies=Espèces disponibles +observe.tdr.basket=Panier +observe.tdr.branchline=Avançon +observe.tdr.data=Données +observe.tdr.dataLocation=Hébergement +observe.tdr.dataLocation.tip=Hébergement du fichier de données +observe.tdr.delete.data.message=Confirmer la suppression du fichier de données +observe.tdr.deleteData=Supprimer +observe.tdr.deleteData.tip=Supprimer le fichier de données +observe.tdr.deployementEnd=Fin déploiement +observe.tdr.deployementStart=Début déploiement +observe.tdr.enableTimestamp=Activer l'horodatage +observe.tdr.enableTimestamp.tip=Activer l'horodatage pour cet enregistreur +observe.tdr.exportData=Exporter +observe.tdr.exportData.tip=Exporter les données enregistrées +observe.tdr.fishingEnd=Fin pêche +observe.tdr.fishingEndDepth=Profondeur en fin de pêche (m) +observe.tdr.fishingStart=Début pêche +observe.tdr.fishingStartDepth=Profondeur en début de pêche (m) +observe.tdr.floatline1Length=Longueur 1 d'orin (m) +observe.tdr.floatline2Length=Longueur 2 d'orin (m) +observe.tdr.homeId=Id métier +observe.tdr.importData=Importer +observe.tdr.importData.tip=Importer un fichier de données +observe.tdr.itemHorizontalPosition=Position sur la ligne +observe.tdr.itemVerticalPosition=Position verticale +observe.tdr.locationOnLongline=Localisation sur la ligne +observe.tdr.maxFishingDepth=Profondeur maximale de pêche (m) +observe.tdr.meanDeployementDepth=Profondeur moyenne de deploiement (m) +observe.tdr.meanFishingDepth=Profondeur moyenne de pêche (m) +observe.tdr.medianDeployementDepth=Profondeur médiane de deploiement (m) +observe.tdr.medianFishingDepth=Profondeur médiane de pêche (m) +observe.tdr.message.data.imported=Le fichier de données %s a été importé. +observe.tdr.minFishingDepth=Profondeur minimale de pêche (m) +observe.tdr.section=Section +observe.tdr.selectedSpecies=Espèces sélectionnées +observe.tdr.sensorBrand=Marque +observe.tdr.serialNo=Numéro de série +observe.tdr.species=Espèces +observe.tdr.tab.caracteristics=Caractéristiques +observe.tdr.tab.keyData=Données clef +observe.tdr.tab.localisation=Localisation +observe.tdr.tab.species=Espèces associées +observe.tdr.tab.timestamp=Horodatage +observe.tdr.table.data=Fichier +observe.tdr.table.homeId=Id +observe.tdr.table.homeId.tip=Identifiant +observe.tdr.table.sensorBrand=Marque +observe.tdr.table.sensorBrand.tip=Marque du capteur +observe.tdr.table.serialNo=N° +observe.tdr.table.serialNo.tip=Numéro de série +observe.tdr.title=Enregistreur de profondeur +observe.title.about=A propos d'ObServe... +observe.title.can.not.delete.referentiel=Impossible de supprimer un référentiel en cours d'utilisation... +observe.title.can.not.export.obstuna=Impossible d'exporter des données d'obstuna... +observe.title.change.storage=Changer la source de données +observe.title.choose.db.dump=Choisir une sauvegarder de base locale +observe.title.choose.db.dump.directory=Choisir le répertoire de destination de la sauvegarde +observe.title.choose.importGPS=Choisir un fichier de trace GPS +observe.title.choose.report.directory=Choisir le répertoire de destination des rapports +observe.title.choose.reportFile=Choisir le fichier de définition des reports +observe.title.choose.sensorUsed.exportData=Choisir l'emplacement du fichier de données à exporter +observe.title.choose.sensorUsed.importData=Choisir le fichier de données à importer +observe.title.choose.tdr.exportData=Choisir l'emplacement du fichier de données à exporter +observe.title.choose.tdr.importData=Choisir le fichier de données à importer +observe.title.config.migrate=Déplacement du fichier de configuration +observe.title.connect.existingDB=Connexion à une source de données existante +observe.title.connect.localDB=Connexion à une source de données locale +observe.title.connect.remoteDB=Connexion à une source de données distante +observe.title.consolidate=Consolider les données observateur +observe.title.consolidate.tip=Consolider les données observateur observe.title.content.HookSizes= observe.title.content.HookTypes= -observe.title.content.baitHaulingStatuss= -observe.title.content.baitSettingStatuss= -observe.title.content.baitTypes= -observe.title.content.catchFateLonglines= -observe.title.content.country= -observe.title.content.detectionModes= -observe.title.content.encounterTypes= -observe.title.content.fpaZones= -observe.title.content.gearCaracteristicTypes= -observe.title.content.gearCaracteristics= -observe.title.content.gears= -observe.title.content.harbours= -observe.title.content.healthnesss= -observe.title.content.hookPositions= -observe.title.content.hookSizes= -observe.title.content.hookTypes= -observe.title.content.itemHorizontalPositions= -observe.title.content.itemVerticalPositions= -observe.title.content.lengthWeightParameters= -observe.title.content.lightsticksColors= -observe.title.content.lightsticksTypes= -observe.title.content.lineTypes= -observe.title.content.maturityStatuss= -observe.title.content.mitigationTypes= -observe.title.content.objectFates= -observe.title.content.objectOperations= -observe.title.content.objectTypes= -observe.title.content.observedSystems= -observe.title.content.oceans= -observe.title.content.organisms= -observe.title.content.persons= -observe.title.content.programs= -observe.title.content.reasonForDiscards= -observe.title.content.reasonForNoFishings= -observe.title.content.reasonForNullSets= -observe.title.content.sensorBrands= -observe.title.content.sensorDataFormats= -observe.title.content.sensorTypes= -observe.title.content.settingShapes= -observe.title.content.sexx= -observe.title.content.sizeMeasureTypes= -observe.title.content.speciesFates= -observe.title.content.speciesGroupSpeciess= -observe.title.content.speciesLists= -observe.title.content.speciesStatuss= -observe.title.content.speciess= -observe.title.content.stomacFullnesss= -observe.title.content.surroundingActivitys= -observe.title.content.transmittingBuoyOperations= -observe.title.content.transmittingBuoyTypes= -observe.title.content.tripTypes= -observe.title.content.vesselActivityLonglines= -observe.title.content.vesselActivitySeines= -observe.title.content.vesselSizeCategoryx= -observe.title.content.vesselTypex= -observe.title.content.vesselx= -observe.title.content.weightCategory= -observe.title.content.weightMeasureTypes= -observe.title.content.windSpeeds= -observe.title.create.local.db= -observe.title.delete= -observe.title.error.dialog= -observe.title.exportData= -observe.title.exportData.tip= -observe.title.h2.server.parameters= -observe.title.import.localDB= -observe.title.importGPS= -observe.title.importGPS.tip= -observe.title.load.remote.db= -observe.title.need.confirm= -observe.title.need.confirm.to.desactivate.referentiel= -observe.title.no.local.db.found= -observe.title.report= -observe.title.report.tip= -observe.title.save.localDB= -observe.title.save.remoteDB= -observe.title.show.usage= -observe.title.speciesList.not.found= -observe.title.storage.info= -observe.title.synchronize= -observe.title.synchronize.tip= -observe.title.technical.informations= -observe.title.unique.key= -observe.title.validate= -observe.title.validate.tip= -observe.title.welcome.admin= -observe.tree.activityLongline= -observe.tree.activityLongline.unsaved= -observe.tree.activitySeine= -observe.tree.activitySeine.unsaved= -observe.tree.baitHaulingStatus= -observe.tree.baitSettingStatus= -observe.tree.baitType= -observe.tree.catchFateLongline= -observe.tree.catchLongline= -observe.tree.country= -observe.tree.detectionMode= -observe.tree.encounter= -observe.tree.encounterType= -observe.tree.floatingObject.unsaved= -observe.tree.fpaZone= -observe.tree.gear= -observe.tree.gearCaracteristic= -observe.tree.gearCaracteristicType= -observe.tree.gearUseFeaturesLongline= -observe.tree.gearUseFeaturesSeine= -observe.tree.harbour= -observe.tree.healthness= -observe.tree.hookPosition= -observe.tree.hookSize= -observe.tree.hookType= -observe.tree.itemHorizontalPosition= -observe.tree.itemVerticalPosition= -observe.tree.lengthWeightParameter= -observe.tree.lightsticksColor= -observe.tree.lightsticksType= -observe.tree.lineType= -observe.tree.longlineDetailComposition= -observe.tree.longlineGlobalComposition= -observe.tree.maturityStatus= -observe.tree.mitigationType= -observe.tree.nonTargetCatch= -observe.tree.nonTargetSample= -observe.tree.objectFate= -observe.tree.objectObservedSpecies= -observe.tree.objectOperation= -observe.tree.objectSchoolEstimate= -observe.tree.objectType= -observe.tree.observedSystem= -observe.tree.ocean= -observe.tree.organism= -observe.tree.person= -observe.tree.program= -observe.tree.reasonForDiscard= -observe.tree.reasonForNoFishing= -observe.tree.reasonForNullSet= -observe.tree.reference.common= -observe.tree.reference.longline= -observe.tree.reference.seine= -observe.tree.route= -observe.tree.route.unsaved= -observe.tree.schoolEstimate= -observe.tree.sensorBrand= -observe.tree.sensorDataFormat= -observe.tree.sensorType= -observe.tree.sensorUsed= -observe.tree.setLongline= -observe.tree.setLongline.unsaved= -observe.tree.setSeine= -observe.tree.setSeine.unsaved= -observe.tree.settingShape= -observe.tree.sex= -observe.tree.sizeMeasureType= -observe.tree.species= -observe.tree.speciesFate= -observe.tree.speciesGroup= -observe.tree.speciesList= -observe.tree.speciesStatus= -observe.tree.stomacFullness= -observe.tree.surroundingActivity= -observe.tree.targetCatch= -observe.tree.targetDiscarded= -observe.tree.targetSample= -observe.tree.targetSampleCapture= -observe.tree.tdr= -observe.tree.transmittingBuoyOperation= -observe.tree.transmittingBuoyType= -observe.tree.tripLongline.unsaved= -observe.tree.tripSeine.unsaved= -observe.tree.tripType= -observe.tree.vessel= -observe.tree.vesselActivityLongline= -observe.tree.vesselActivitySeine= -observe.tree.vesselSizeCategory= -observe.tree.vesselType= -observe.tree.weightCategory= -observe.tree.weightMeasureType= -observe.tree.wind= -observe.tripLongline.captain= -observe.tripLongline.dataEntryOperator= -observe.tripLongline.endDate= -observe.tripLongline.homeId= -observe.tripLongline.message.active.found= -observe.tripLongline.message.active.found.for.other.program= -observe.tripLongline.message.creating= -observe.tripLongline.message.no.active.found= -observe.tripLongline.message.not.open= -observe.tripLongline.message.updating= -observe.tripLongline.observer= -observe.tripLongline.ocean= -observe.tripLongline.startDate= -observe.tripLongline.tab.general= -observe.tripLongline.tab.map= -observe.tripLongline.title= -observe.tripLongline.totalFishingOperationsNumber= -observe.tripLongline.tripType= -observe.tripLongline.vessel= -observe.tripSeine.message.active.found= -observe.tripSeine.message.active.found.for.other.program= -observe.tripSeine.message.creating= -observe.tripSeine.message.no.active.found= -observe.tripSeine.message.not.open= -observe.tripSeine.message.updating= -observe.tripSeine.tab.general= -observe.tripSeine.tab.map= -observe.tripSeine.title= +observe.title.content.baitHaulingStatuss=Gestion des status de l'appât au virage +observe.title.content.baitSettingStatuss=Gestion des status de l'appât au filage +observe.title.content.baitTypes=Gestion des types d'appât +observe.title.content.catchFateLonglines=Gestion des devenirs capture +observe.title.content.country=Gestion des pays +observe.title.content.detectionModes=Gestion des modes de détection +observe.title.content.encounterTypes=Gestion des types de rencontre +observe.title.content.fpaZones=Gestion des zones FPA +observe.title.content.gearCaracteristicTypes=Gestion des types de caractéristiques +observe.title.content.gearCaracteristics=Gestion des caractéristiques d'équipement +observe.title.content.gears=Gestion des équipements +observe.title.content.harbours=GEstion des ports +observe.title.content.healthnesss=Gestion des statuts de santé +observe.title.content.hookPositions=Gestion des positions d'hameçon +observe.title.content.hookSizes=Gestion des tailles d'hameçon +observe.title.content.hookTypes=Gestion des types d'hameçon +observe.title.content.itemHorizontalPositions=Gestion des localisations de l'élément sur la ligne mère +observe.title.content.itemVerticalPositions=Gestion des localisations de l'élément sur l'avançon +observe.title.content.lengthWeightParameters=Gestion des paramétrages taille-poids +observe.title.content.lightsticksColors=Gestion des couleurs de baton lumineux +observe.title.content.lightsticksTypes=Gestion des types de baton lumineux +observe.title.content.lineTypes=Gestion des types de ligne +observe.title.content.maturityStatuss=Gestion des maturité +observe.title.content.mitigationTypes=Gestion des types de mesure d'atténuation +observe.title.content.objectFates=Gestion des devenirs objet +observe.title.content.objectOperations=Gestion des opérations objet +observe.title.content.objectTypes=Gestion des types d'objet +observe.title.content.observedSystems=Gestion des systèmes observés +observe.title.content.oceans=Gestion des océans +observe.title.content.organisms=Gestion des organismes +observe.title.content.persons=Gestion des observateurs +observe.title.content.programs=Gestion des programmes +observe.title.content.reasonForDiscards=Gestion des raisons de rejet +observe.title.content.reasonForNoFishings=Gestion des non coup de senne +observe.title.content.reasonForNullSets=Gestion des causes coup nul +observe.title.content.sensorBrands=Gestion des marques de capteur +observe.title.content.sensorDataFormats=Gestion des formats de données de capteur +observe.title.content.sensorTypes=Gestion des types de capteur +observe.title.content.settingShapes=Gestion des formes au filage +observe.title.content.sexx=Gestion des sexes +observe.title.content.sizeMeasureTypes=Gestion des types de mesure de taille +observe.title.content.speciesFates=Gestion des devenir d'espèces +observe.title.content.speciesGroupSpeciess=Gestion des groupes d'espèces +observe.title.content.speciesLists=Gestion des listes d'espèces +observe.title.content.speciesStatuss=Gestion des statuts d'espèces +observe.title.content.speciess=Gestion des espèces +observe.title.content.stomacFullnesss=Gestion des niveaux de remplissage de l'estomac +observe.title.content.surroundingActivitys=Gestion des activités environnantes +observe.title.content.transmittingBuoyOperations=Gestion des opérations sur balise +observe.title.content.transmittingBuoyTypes=Gestion des types de balise +observe.title.content.tripTypes=Gestion des types de marée +observe.title.content.vesselActivityLonglines=Gestion des types d'activité +observe.title.content.vesselActivitySeines=Gestion des types d'activités +observe.title.content.vesselSizeCategoryx=Gestion des catégories de navires +observe.title.content.vesselTypex=Gestion des types de vessel +observe.title.content.vesselx=Gestion des bateaux +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.delete=Confirmation de suppression +observe.title.error.dialog=Une erreur est survenue\! +observe.title.exportData=Exporter les données +observe.title.exportData.tip=Exporter les données utilisateurs vers obstuna +observe.title.h2.server.parameters=Paramétrage de la base locale en mode serveur +observe.title.import.localDB=Imcporter une base locale depuis une sauvegarde +observe.title.importGPS=Import GPS +observe.title.importGPS.tip=Importer un fichier de trace GPS +observe.title.load.remote.db=Chargement d'une base distante +observe.title.need.confirm=Une confirmation de votre part est requise... +observe.title.need.confirm.to.desactivate.referentiel=Une confirmation de votre part est requise pour désactiver un référentiel... +observe.title.no.local.db.found=Aucune base locale trouvée +observe.title.report=Aide à la génération de rapport +observe.title.report.tip=Aide à la génération du rapport de fin d'embarquement +observe.title.save.localDB=Sauver la base locale vers une fichier +observe.title.save.remoteDB=Sauver la base distante vers un fichier +observe.title.show.usage=Listes des utilisations d'un référentiel... +observe.title.speciesList.not.found=Liste d'espèces non trouvée +observe.title.storage.info=Information sur la source de données +observe.title.synchronize=Synchronisation du référentiel +observe.title.synchronize.tip=Opération de synchronisation du référentiel de la base locale +observe.title.technical.informations=Informations techniques du référentiel %1$s +observe.title.unique.key=Clefs métier du référentiel %1$s +observe.title.validate=Validation des données +observe.title.validate.tip=Valider les données d'une source de données +observe.title.welcome.admin=Observe Administrateur +observe.tree.activityLongline=Activités +observe.tree.activityLongline.unsaved=Nouvelle activité +observe.tree.activitySeine=Activités +observe.tree.activitySeine.unsaved=Nouvelle activité +observe.tree.baitHaulingStatus=Status de l'appât au virage +observe.tree.baitSettingStatus=Status de l'appât au filage +observe.tree.baitType=Type d'appât +observe.tree.catchFateLongline=Devenir capture +observe.tree.catchLongline=Captures +observe.tree.country=Pays +observe.tree.detectionMode=Mode détection +observe.tree.encounter=Rencontres +observe.tree.encounterType=Type de rencontre +observe.tree.floatingObject.unsaved=Nouveau DCP +observe.tree.fpaZone=Zone FPA +observe.tree.gear=Équipement +observe.tree.gearCaracteristic=Caractéristique d'un équipement +observe.tree.gearCaracteristicType=Type de caractéristique d'équipement +observe.tree.gearUseFeaturesLongline=Équipements +observe.tree.gearUseFeaturesSeine=Équipements +observe.tree.harbour=Port +observe.tree.healthness=Status de la capture +observe.tree.hookPosition=Position du hameçon +observe.tree.hookSize=Taille d'hameçon +observe.tree.hookType=Type d'hameçon +observe.tree.itemHorizontalPosition=Localisation de l'élément sur la ligne mère +observe.tree.itemVerticalPosition=Localisation de l'élément sur l'avançon +observe.tree.lengthWeightParameter=Relation Taille-Poids +observe.tree.lightsticksColor=Couleur de baton lumineux +observe.tree.lightsticksType=Type de baton lumineux +observe.tree.lineType=Type de ligne +observe.tree.longlineDetailComposition=Schéma de palangre +observe.tree.longlineGlobalComposition=Composition +observe.tree.maturityStatus=Maturité +observe.tree.mitigationType=Type de mesure d'atténuation +observe.tree.nonTargetCatch=Faune accessoire conservée ou rejetée +observe.tree.nonTargetSample=Echantillon faune accessoire +observe.tree.objectFate=Devenir de l'objet +observe.tree.objectObservedSpecies=Faune observée +observe.tree.objectOperation=Opération sur l'objet +observe.tree.objectSchoolEstimate=Estimation banc objet +observe.tree.objectType=Type d'objet +observe.tree.observedSystem=Système observé +observe.tree.ocean=Océan +observe.tree.organism=Organisme +observe.tree.person=Personne +observe.tree.program=Programme +observe.tree.reasonForDiscard=Raison rejet +observe.tree.reasonForNoFishing=Raison de non coup de Senne +observe.tree.reasonForNullSet=Cause coup nul +observe.tree.reference.common=Référentiel commun +observe.tree.reference.longline=Référentiel Palangre +observe.tree.reference.seine=Référentiel Senne +observe.tree.route=Routes +observe.tree.route.unsaved=Nouvelle route +observe.tree.schoolEstimate=Estimation banc +observe.tree.sensorBrand=Marque de capteur +observe.tree.sensorDataFormat=Format de données de capteur +observe.tree.sensorType=Type de capteur +observe.tree.sensorUsed=Capteurs utilisés +observe.tree.setLongline=Détails de l'opération +observe.tree.setLongline.unsaved=Nouvelle opération de pêche +observe.tree.setSeine=Calée +observe.tree.setSeine.unsaved=Nouvelle calée +observe.tree.settingShape=Forme au filage +observe.tree.sex=Sexe +observe.tree.sizeMeasureType=Type de mesure de taille +observe.tree.species=Espèce +observe.tree.speciesFate=Devenir espèce +observe.tree.speciesGroup=Groupe espèce +observe.tree.speciesList=Liste d'espèces +observe.tree.speciesStatus=Statut faune observée +observe.tree.stomacFullness=Niveau de remplissage de l'estomac +observe.tree.surroundingActivity=Activité environnante +observe.tree.targetCatch=Capture cible +observe.tree.targetDiscarded=Rejet de thon +observe.tree.targetSample=Echantillon thon rejeté +observe.tree.targetSampleCapture=Echantillon thon capturé +observe.tree.tdr=Enregistreurs de profondeur +observe.tree.transmittingBuoyOperation=Opération balise +observe.tree.transmittingBuoyType=Type de balise +observe.tree.tripLongline.unsaved=Nouvelle marée +observe.tree.tripSeine.unsaved=Nouvelle marée +observe.tree.tripType=Type de marée +observe.tree.vessel=Bateau +observe.tree.vesselActivityLongline=Activité bateau +observe.tree.vesselActivitySeine=Activité bateau +observe.tree.vesselSizeCategory=Catégorie de bateau +observe.tree.vesselType=Type de pêcherie +observe.tree.weightCategory=Catégorie de poids +observe.tree.weightMeasureType=Type de mesure de poids +observe.tree.wind=Vent Beaufort +observe.tripLongline.captain=Capitaine +observe.tripLongline.dataEntryOperator=Opérateur de saisie +observe.tripLongline.endDate=Date fin +observe.tripLongline.homeId=Id métier +observe.tripLongline.message.active.found=Une marée est ouverte. +observe.tripLongline.message.active.found.for.other.program=Une marée ouverte existe dans un autre programme. +observe.tripLongline.message.creating=La marée est en cours de création. +observe.tripLongline.message.no.active.found=Aucune marée ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrir une. +observe.tripLongline.message.not.open=La marée courante n'est pas ouverte, aucune modification possible. +observe.tripLongline.message.updating=La maréee est en cours de modification. +observe.tripLongline.observer=Observateur +observe.tripLongline.ocean=Océan +observe.tripLongline.startDate=Date début +observe.tripLongline.tab.general=Caractéristiques +observe.tripLongline.tab.map=Carte +observe.tripLongline.title=Marée +observe.tripLongline.totalFishingOperationsNumber=Nombre total d'opérations de pêche +observe.tripLongline.tripType=Type de marée +observe.tripLongline.vessel=Navire +observe.tripSeine.message.active.found=Une marée est ouverte. +observe.tripSeine.message.active.found.for.other.program=Une marée ouverte existe dans un autre programme. +observe.tripSeine.message.creating=La marée est en cours de création. +observe.tripSeine.message.no.active.found=Aucune marée ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrir une. +observe.tripSeine.message.not.open=La marée courante n'est pas ouverte, aucune modification possible. +observe.tripSeine.message.updating=La maréee est en cours de modification. +observe.tripSeine.tab.general=Caractéristiques +observe.tripSeine.tab.map=Carte +observe.tripSeine.title=Marée observe.validation.model.type.all= observe.validation.model.type.all.description= observe.validation.model.type.data= observe.validation.model.type.data.description= observe.validation.model.type.referentiel= observe.validation.model.type.referentiel.description= -observe.validation.report.contextName= -observe.validation.report.entities.with.messages= -observe.validation.report.entity= -observe.validation.report.scopes= -observe.validation.report.title= -observe.vessel.tab.general= -observe.vessel.tab.other= -observe.view.message= -observe.view.navigation= -observe.view.server= -observe.warning.nimbus.landf= -observe.warning.no.ui= -ui.main.body.synchro.action.copy.to.clipBoard= +observe.validation.report.contextName=Context de validation utilisé \: %1$s +observe.validation.report.entities.with.messages=Nombre d'entités avec des messages \: %1$s +observe.validation.report.entity=Entité %1$s '%2$s' Nombre de messages %3$s (sur %4$s scope(s)). +observe.validation.report.scopes=Scopes de validation utilisés \: %1$s +observe.validation.report.title=Rapport de validation généré le %1$s +observe.vessel.tab.general=Caractéristiques générales +observe.vessel.tab.other=Autres caractéristiques +observe.view.message=Messages +observe.view.navigation=Navigation +observe.view.server=Base locale en mode serveur +observe.warning.nimbus.landf=Le look and Feel Nimbus n'a pas été trouvé, il faut au moins la version 1.6u10 de java. +observe.warning.no.ui=Aucun environnement graphique détecté +observeweb.configuration.description= +ui.main.body.synchro.action.copy.to.clipBoard=Copier le contenu dans le presse-papier diff --git a/observe-application-swing/src/main/resources/observeSwing.conf b/observe-application-swing/src/main/resources/observeSwing.conf new file mode 100644 index 0000000..bb05deb --- /dev/null +++ b/observe-application-swing/src/main/resources/observeSwing.conf @@ -0,0 +1,5 @@ +observe.devMode=${devMode} +observe.build.version=${project.version} +observe.build.date=${buildDate} +observe.build.number=${buildNumber} +observe.model.version=${observe.model.version} \ No newline at end of file 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 d3561b3..2424e7a 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,14 +22,15 @@ package fr.ird.observe.ui.content.impl.longline; * #L% */ -import fr.ird.observe.business.ObserveApplicationContext; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.services.dto.constants.ReferentialLocale; 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.ui.DecoratorService; import jaxx.runtime.validator.swing.SwingValidatorMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -62,7 +63,7 @@ public class LonglineDetailCompositionValidatorServiceTest { public void setUp() throws Exception { ObserveServiceHelper.close(); - ObserveApplicationContext applicationContext = new ObserveApplicationContext(); + ObserveSwingApplicationContext applicationContext = new ObserveSwingApplicationContext(); ObserveServiceHelper.set(applicationContext); DecoratorService decoratorService = new DecoratorService(ReferentialLocale.FR); @@ -99,9 +100,8 @@ public class LonglineDetailCompositionValidatorServiceTest { { // 2 sections, without settingIdentifier - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 2); + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 2); } { @@ -109,9 +109,8 @@ public class LonglineDetailCompositionValidatorServiceTest { sections.get(0).setSettingIdentifier(1); sections.get(1).setSettingIdentifier(2); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 0); + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 0); } @@ -136,82 +135,79 @@ public class LonglineDetailCompositionValidatorServiceTest { basket.setId("11"); sections.get(1).addBasket(basket); } - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 4); + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 4); } - List<BasketDto> basket0 = new ArrayList<>(sections.get(0).getBasket()); - List<BasketDto> basket1 = new ArrayList<>(sections.get(1).getBasket()); { // 2 sections with baskets with settingIdentifier - basket0.get(0).setSettingIdentifier(1); - basket0.get(1).setSettingIdentifier(2); - basket1.get(0).setSettingIdentifier(1); - basket1.get(1).setSettingIdentifier(2); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 0); +// 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); + + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 0); } { // Section 1 - Basket 1 mistmatch floatline1Length with Section 1 - Basket 2 - basket0.get(0).setFloatline1Length(1f); - basket0.get(0).setFloatline2Length(2f); - - basket0.get(1).setFloatline1Length(1f); // should be 2 - basket0.get(1).setFloatline2Length(6f); - - basket1.get(0).setFloatline1Length(6f); - basket1.get(0).setFloatline2Length(11f); - - basket1.get(1).setFloatline1Length(11f); - basket1.get(1).setFloatline2Length(12f); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 1); +// 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); + + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 1); } { // OK d'ont check if last floatline has same length of first floatline for next section - basket0.get(0).setFloatline1Length(1f); - basket0.get(0).setFloatline2Length(2f); - - basket0.get(1).setFloatline1Length(2f); - basket0.get(1).setFloatline2Length(6f); - - basket1.get(0).setFloatline1Length(10f); // Should be 6 - basket1.get(0).setFloatline2Length(11f); - - basket1.get(1).setFloatline1Length(11f); - basket1.get(1).setFloatline2Length(12f); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 0); +// 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); + + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 0); } { // Ok - basket0.get(0).setFloatline1Length(1f); - basket0.get(0).setFloatline2Length(2f); - - basket0.get(1).setFloatline1Length(2f); - basket0.get(1).setFloatline2Length(10f); - - basket1.get(0).setFloatline1Length(10f); - basket1.get(0).setFloatline2Length(11f); - - basket1.get(1).setFloatline1Length(11f); - basket1.get(1).setFloatline2Length(12f); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 0); +// 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); + + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 0); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java index ab5cf7e..025bb3c 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java @@ -142,7 +142,8 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport observeDataSourceConnection.canReadReferential(), observeDataSourceConnection.canWriteReferential(), observeDataSourceConnection.canReadData(), - observeDataSourceConnection.canWriteData() + observeDataSourceConnection.canWriteData(), + observeDataSourceConnection.getVersion() ); return dataSourceConnection; diff --git a/observe-entities/pom.xml b/observe-entities/pom.xml index ff8aebf..bf0c74c 100644 --- a/observe-entities/pom.xml +++ b/observe-entities/pom.xml @@ -151,6 +151,13 @@ <include>*.properties</include> </includes> </resource> + <resource> + <directory>src/main/xmi</directory> + <filtering>true</filtering> + <includes> + <include>*.properties</include> + </includes> + </resource> </resources> <testResources> <testResource> @@ -163,6 +170,55 @@ <plugins> <plugin> + + <artifactId>maven-antrun-plugin</artifactId> + <inherited>false</inherited> + <executions> + + <!-- on recopie le les fichiers de modèle pour appliquer les filtres --> + <execution> + <id>copy model properties</id> + <phase>generate-sources</phase> + <configuration> + <tasks> + <copy verbose="true" failonerror="false" overwrite="true" filtering="true" + todir="${project.build.directory}/xmi"> + <filterset> + <filter value="${observe.model.version}" token="observe.model.version" /> + </filterset> + <fileset dir="${basedir}/src/main/xmi"> + <include name="*.properties"/> + </fileset> + </copy> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + + <execution> + <id>copy model zargo</id> + <phase>generate-sources</phase> + <configuration> + <tasks> + <copy verbose="true" failonerror="false" overwrite="true" + todir="${project.build.directory}/xmi"> + <fileset dir="${basedir}/src/main/xmi"> + <include name="*.zargo"/> + </fileset> + </copy> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + + </executions> + </plugin> + + <plugin> <groupId>org.nuiton.eugene</groupId> <artifactId>eugene-maven-plugin</artifactId> <configuration> @@ -175,9 +231,9 @@ <id>generate-persistence</id> <configuration> <inputs> - <input>zargo:src/main/xmi:observe-common.zargo</input> - <input>zargo:src/main/xmi:observe-seine.zargo</input> - <input>zargo:src/main/xmi:observe-longline.zargo</input> + <input>zargo:target/xmi:observe-common.zargo</input> + <input>zargo:target/xmi:observe-seine.zargo</input> + <input>zargo:target/xmi:observe-longline.zargo</input> </inputs> <!--org.nuiton.eugene.java.JavaInterfaceTransformer,--> <templates> diff --git a/observe-entities/src/main/xmi/observe-common.properties b/observe-entities/src/main/xmi/observe-common.properties index a59d1d4..3308c19 100644 --- a/observe-entities/src/main/xmi/observe-common.properties +++ b/observe-entities/src/main/xmi/observe-common.properties @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -model.tagvalue.version=5.0 +model.tagvalue.version=@observe.model.version@ model.tagvalue.notGenerateToString=true model.tagvalue.generateForeignKeyNames=true model.tagvalue.generatePropertyChangeSupport =true diff --git a/observe-entities/src/main/xmi/observe-longline.properties b/observe-entities/src/main/xmi/observe-longline.properties index 64a0d53..ebc8a7d 100644 --- a/observe-entities/src/main/xmi/observe-longline.properties +++ b/observe-entities/src/main/xmi/observe-longline.properties @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -model.tagvalue.version=5.0 +model.tagvalue.version=@observe.model.version@ model.tagvalue.notGenerateToString=true model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.generateForeignKeyNames=true diff --git a/observe-entities/src/main/xmi/observe-seine.properties b/observe-entities/src/main/xmi/observe-seine.properties index 3d6b241..7b40a04 100644 --- a/observe-entities/src/main/xmi/observe-seine.properties +++ b/observe-entities/src/main/xmi/observe-seine.properties @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -model.tagvalue.version=5.0 +model.tagvalue.version=@observe.model.version@ model.tagvalue.notGenerateToString=true model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.generateForeignKeyNames=true diff --git a/observe-services-configuration-api/pom.xml b/observe-services-configuration-api/pom.xml index 83a1b1c..670870b 100644 --- a/observe-services-configuration-api/pom.xml +++ b/observe-services-configuration-api/pom.xml @@ -29,6 +29,12 @@ <artifactId>guava</artifactId> </dependency> + <!-- Nuiton --> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + </dependency> + <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> diff --git a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java index ef37453..e16c9bc 100644 --- a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java +++ b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.configuration; * #L% */ +import org.nuiton.util.version.Version; + /** * Représente une source de donnée une fois la connexion acceptée. * @@ -56,4 +58,6 @@ public interface ObserveDataSourceConnection { */ boolean canWriteData(); + Version getVersion(); + } diff --git a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java index 73ea41f..a7b52fb 100644 --- a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java +++ b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java @@ -23,6 +23,7 @@ package fr.ird.observe.services.configuration; */ import com.google.common.base.MoreObjects; +import org.nuiton.util.version.Version; import java.util.Objects; @@ -43,16 +44,20 @@ public abstract class ObserveDataSourceConnectionSupport implements ObserveDataS protected final boolean writeData; + protected final Version version; + protected ObserveDataSourceConnectionSupport(String authenticationToken, boolean readReferential, boolean writeReferential, boolean readData, - boolean writeData) { + boolean writeData, + Version version) { this.authenticationToken = authenticationToken; this.writeData = writeData; this.readReferential = readReferential; this.writeReferential = writeReferential; this.readData = readData; + this.version = version; } public String getAuthenticationToken() { @@ -80,6 +85,11 @@ public abstract class ObserveDataSourceConnectionSupport implements ObserveDataS } @Override + public Version getVersion() { + return version; + } + + @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof ObserveDataSourceConnectionSupport)) return false; @@ -100,6 +110,7 @@ public abstract class ObserveDataSourceConnectionSupport implements ObserveDataS .add("writeReferential", writeReferential) .add("readData", readData) .add("writeData", writeData) + .add("version", version) .toString(); } diff --git a/observe-services-configuration-rest/pom.xml b/observe-services-configuration-rest/pom.xml index 4bbbb64..6e7ced9 100644 --- a/observe-services-configuration-rest/pom.xml +++ b/observe-services-configuration-rest/pom.xml @@ -36,6 +36,12 @@ <artifactId>guava</artifactId> </dependency> + <!-- Nuiton --> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + </dependency> + <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java index 2fd0643..1cca594 100644 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java +++ b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.configuration; * #L% */ +import org.nuiton.util.version.Version; + import java.net.URL; /** @@ -38,8 +40,9 @@ public class ObserveDataSourceConnectionRest extends ObserveDataSourceConnection boolean readReferential, boolean writeReferential, boolean readData, - boolean writeData) { - super(authenticationToken, readReferential, writeReferential, readData, writeData); + boolean writeData, + Version version) { + super(authenticationToken, readReferential, writeReferential, readData, writeData, version); this.serverUrl = serverUrl; } diff --git a/observe-services-configuration-topia/pom.xml b/observe-services-configuration-topia/pom.xml index cac2c0e..5787cf8 100644 --- a/observe-services-configuration-topia/pom.xml +++ b/observe-services-configuration-topia/pom.xml @@ -44,10 +44,10 @@ </dependency> <!-- Nuiton --> - <!--dependency> + <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> - </dependency--> + </dependency> <!-- persistence --> <!--dependency> diff --git a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java index 1736bab..26d13c0 100644 --- a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java +++ b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.configuration; * #L% */ +import org.nuiton.util.version.Version; + /** * Created on 04/09/15. * @@ -33,8 +35,9 @@ public class ObserveDataSourceConnectionTopia extends ObserveDataSourceConnectio boolean readReferential, boolean writeReferential, boolean readData, - boolean writeData) { - super(authenticationToken, readReferential, writeReferential, readData, writeData); + boolean writeData, + Version version) { + super(authenticationToken, readReferential, writeReferential, readData, writeData, version); } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java index 0b8d347..c5197de 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java @@ -5,6 +5,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; import org.nuiton.topia.persistence.jdbc.JdbcHelper; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; import java.sql.Connection; import java.sql.DatabaseMetaData; @@ -56,4 +58,37 @@ public class ObserveJdbcHelper extends JdbcHelper { } + public Version getVersion() { + Version version = Version.VZERO; + + Connection connection = null; + PreparedStatement preparedStatement = null; + try { + connection = openConnection(); + // la connexion est reussie, on recherche les droits de + // récupération de la version de la base + preparedStatement = connection.prepareStatement("SELECT version FROM tms_version;"); + ResultSet resultSet = preparedStatement.executeQuery(); + + if (resultSet.next()) { + String versionStr = resultSet.getString(1); + version = Versions.valueOf(versionStr); + } + + return version; + + } catch (SQLException e) { + throw new RuntimeException(e); + } finally { + closeQuietly(preparedStatement); + closeQuietly(connection); + } + + + + + + + } + } 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 1d401b2..53d2820 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 @@ -42,6 +42,7 @@ import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationExce import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.jdbc.JdbcHelper; +import org.nuiton.util.version.Version; import java.io.File; import java.io.IOException; @@ -289,6 +290,12 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS boolean readData; boolean writeData; + Version version; + + ObserveJdbcHelper observeJdbcHelper = new ObserveJdbcHelper(topiaConfiguration); + + version = observeJdbcHelper.getVersion(); + if (dataSourceConfiguration.isH2Database()) { // Sur une base H2, on a le droit de tout lire, mais uniquement d'écrire les données @@ -299,8 +306,6 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } else { - ObserveJdbcHelper observeJdbcHelper = new ObserveJdbcHelper(topiaConfiguration); - // on recherche les droits de l'utilisateur sur cette base //TODO chemit 2010-10-28 : il vaudrait mieux utiliser des fonctions postgres adéquates qui elle sont fiables... @@ -348,7 +353,8 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS readReferential, writeReferential, readData, - writeData); + writeData, + version); return dataSourceConnection; } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveDataSourceConnectionTopiaTaiste.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveDataSourceConnectionTopiaTaiste.java index c106377..735aa5c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveDataSourceConnectionTopiaTaiste.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveDataSourceConnectionTopiaTaiste.java @@ -1,6 +1,7 @@ package fr.ird.observe.services; import fr.ird.observe.services.configuration.ObserveDataSourceConnectionTopia; +import org.nuiton.util.version.Version; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -9,7 +10,7 @@ public class ObserveDataSourceConnectionTopiaTaiste extends ObserveDataSourceCon public ObserveDataSourceConnectionTopiaTaiste(String authenticationToken) { // on se donne tout les droit pour pouvoir tout tester - super(authenticationToken, true, true, true, true); + super(authenticationToken, true, true, true, true, Version.VZERO); } } diff --git a/pom.xml b/pom.xml index cf9b610..7fbc20d 100644 --- a/pom.xml +++ b/pom.xml @@ -151,6 +151,9 @@ <buildDate>${maven.build.timestamp}</buildDate> <devMode>true</devMode> + <!--Modèle version--> + <observe.model.version>5.0</observe.model.version> + </properties> <repositories> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 93fd18f76d2323d59e5d16d63690ee8e1033b9d2 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 22 08:42:10 2015 +0200 utilisation de la classe ObserveSwingDataSource pour gérer les connection au source de données, (refs #7529) --- .../main/java/fr/ird/observe/ObserveRunner.java | 4 - .../observe/ObserveSwingApplicationContext.java | 142 +++------ .../business/report/model/ReportExecute.java | 15 +- .../fr/ird/observe/db/ObserveSwingDataSource.java | 158 ++++++++++ .../main/java/fr/ird/observe/ui/ObserveMainUI.css | 1 + .../fr/ird/observe/ui/ObserveMainUIHandler.java | 42 ++- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 4 +- .../ird/observe/ui/actions/CloseStorageAction.java | 17 +- .../observe/ui/actions/ReloadStorageAction.java | 84 ++---- .../ui/actions/SaveStorageToFileAction.java | 28 +- .../ird/observe/ui/actions/ShowConfigAction.java | 10 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 19 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 10 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 93 +++--- .../ui/admin/consolidate/ConsolidateModel.java | 8 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 8 +- .../ird/observe/ui/admin/export/ExportModel.java | 14 +- .../observe/ui/admin/export/ExportUIHandler.java | 16 +- .../observe/ui/admin/gps/ImportGPSUIHandler.java | 5 +- .../observe/ui/admin/report/ReportUIHandler.java | 23 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 28 +- .../ui/admin/synchronize/SynchronizeModel.java | 20 +- .../ui/admin/synchronize/SynchronizeUIHandler.java | 19 +- .../ui/admin/validate/ValidateUIHandler.java | 11 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 7 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 2 +- .../ui/storage/StorageBackupUILauncher.java | 64 ++-- .../ird/observe/ui/storage/StorageUIHandler.java | 335 +++++++++++++-------- .../fr/ird/observe/ui/storage/StorageUIModel.java | 275 +++++++++-------- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 1 + .../ui/storage/tabs}/DataSelectionModel.java | 255 +++++++--------- .../ird/observe/ui/storage/tabs/SelectDataUI.jaxx | 4 +- .../ui/storage/tabs/StorageTabUIHandler.java | 7 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 17 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 11 +- .../observe-application-swing_en_GB.properties | 2 + .../observe-application-swing_es_ES.properties | 2 + .../observe-application-swing_fr_FR.properties | 2 + .../web/controller/v1/PingServiceController.java | 2 +- .../services/dto/referential/ProgramDtos.java | 30 ++ .../services/dto/referential/ReferentialDtos.java | 124 +++++++- 41 files changed, 1099 insertions(+), 820 deletions(-) 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 3a844fa..0398e30 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 @@ -291,7 +291,6 @@ public abstract class ObserveRunner extends ApplicationRunner { context, ObserveSwingApplicationContext.CONFIG_ENTRY_DEF, ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF, - ObserveSwingApplicationContext.SERVICE_MAIN_FACTORY_ENTRY_DEF, ObserveSwingApplicationContext.DECORATOR_SERVICE_ENTRY_DEF ); @@ -639,9 +638,6 @@ public abstract class ObserveRunner extends ApplicationRunner { // add config ObserveSwingApplicationContext.CONFIG_ENTRY_DEF.setContextValue(instance, config); - // add service main factory - instance.getObserveServiceMainFactory(); - // add actions ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF.setContextValue(instance, new ObserveCLAction()); 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 decdfb3..6f3ab5f 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 @@ -21,22 +21,20 @@ */ package fr.ird.observe; +import com.google.common.base.Preconditions; import fr.ird.observe.business.BinderService; import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.gps.GPSService; import fr.ird.observe.business.validation.ObserveValidator; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.ObserveServiceInitializer; import fr.ird.observe.services.ObserveServiceMainFactory; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; @@ -64,7 +62,6 @@ import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.hibernate.cfg.Environment; import org.nuiton.decorator.Decorator; import javax.swing.ActionMap; @@ -75,6 +72,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; import java.util.Locale; +import java.util.UUID; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -111,13 +109,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { 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 */ - public static final JAXXContextEntryDef<ObserveDataSourceConfiguration> DATA_SOURCE_CONFIGURATION_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveDataSourceConfiguration.class); - - /** the jaxx context entry to store the data source connexion */ - public static final JAXXContextEntryDef<ObserveDataSourceConnection> DATA_SOURCE_CONNECTION_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveDataSourceConnection.class); /** the jaxx context entry to store the decorator service */ public static final JAXXContextEntryDef<BinderService> BINDER_SERVICE_ENTRY_DEF = @@ -141,8 +132,10 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { JAXXUtil.newContextEntryDef(DataContext.class); /** the jaxx context entry to store the data source (says the ui data source) */ - public static final JAXXContextEntryDef<DataSource> DATA_SOURCE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(DataSource.class); + public static final JAXXContextEntryDef<ObserveSwingDataSource> SWING_DATA_SOURCE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveSwingDataSource.class); + + public static final JAXXContextEntryDef<ValidationContext> VALIDATION_CONTEXT_ENTRY_DEF = JAXXUtil.newContextEntryDef(ValidationContext.class); @@ -179,18 +172,16 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { return CONFIG_ENTRY_DEF.getContextValue(this); } - - - public final DataSource getDataSource() { - DataSource dataSource = DATA_SOURCE_ENTRY_DEF.getContextValue(this); + public final ObserveSwingDataSource getDataSource() { + ObserveSwingDataSource dataSource = SWING_DATA_SOURCE_ENTRY_DEF.getContextValue(this); return dataSource; } - public final void setDataSource(DataSource source) { + public final void setDataSource(ObserveSwingDataSource source) { if (source == null) { - DATA_SOURCE_ENTRY_DEF.removeContextValue(this); + SWING_DATA_SOURCE_ENTRY_DEF.removeContextValue(this); } else { - DATA_SOURCE_ENTRY_DEF.setContextValue(this, source); + SWING_DATA_SOURCE_ENTRY_DEF.setContextValue(this, source); } } @@ -215,21 +206,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { return decoratorService; } - public final ObserveServiceMainFactory getObserveServiceMainFactory() { - - ObserveServiceMainFactory serviceMainFactory = SERVICE_MAIN_FACTORY_ENTRY_DEF.getContextValue(this); - - if (serviceMainFactory == null) { - - serviceMainFactory = ObserveServiceMainFactory.get(); - - SERVICE_MAIN_FACTORY_ENTRY_DEF.setContextValue(this, serviceMainFactory); - - } - - return serviceMainFactory; - } - public final ObserveDataSourceConfigurationMainFactory getObserveDataSourceConfigurationMainFactory() { ObserveDataSourceConfigurationMainFactory configurationMainFactory = DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF.getContextValue(this); @@ -245,72 +221,35 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { return configurationMainFactory; } - public final void setObserveDataSourceConfiguration(ObserveDataSourceConfiguration sourceConfiguration) { - DATA_SOURCE_CONFIGURATION_ENTRY_DEF.setContextValue(this, sourceConfiguration); - } - - public final ObserveDataSourceConfiguration getObserveDataSourceConfiguration() { - return DATA_SOURCE_CONFIGURATION_ENTRY_DEF.getContextValue(this); - } - - public final void setObserveDataSourceConnection(ObserveDataSourceConnection connection) { - DATA_SOURCE_CONNECTION_ENTRY_DEF.setContextValue(this, connection); - } - - public final ObserveDataSourceConnection getObserveDataSourceConnection() { - return DATA_SOURCE_CONNECTION_ENTRY_DEF.getContextValue(this); - } - - public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - - return newService(dataSourceConfiguration, null, serviceType); - } - - public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { - - ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(dataSourceConfiguration, dataSourceConnection); - - ObserveServiceMainFactory serviceFactory = getObserveServiceMainFactory(); - - return serviceFactory.newService(observeServiceInitializer, serviceType); - } - - public ObserveServiceInitializer getObserveServiceInitializer() { - - ObserveDataSourceConnection connection = getObserveDataSourceConnection(); - - ObserveDataSourceConfiguration configuration = getObserveDataSourceConfiguration(); - - ObserveServiceInitializer serviceInitializer = getObserveServiceInitializer(configuration, connection); - - return serviceInitializer; - } - - protected ObserveServiceInitializer getObserveServiceInitializer(ObserveDataSourceConfiguration dataSourceConfiguration, ObserveDataSourceConnection dataSourceConnection) { - - Locale locale = getConfig().getLocale(); + public ObserveSwingDataSource createDataSourceH2Temp(String label) { + ObserveDataSourceConfigurationMainFactory configurationMainFactory = getObserveDataSourceConfigurationMainFactory(); File tmpDirectory = getConfig().getTmpDirectory(); - ReferentialLocale referentialLocale = ReferentialLocale.valueOf(locale); - - ObserveDataSourceConfigurationAndConnection configurationAndConnection = new ObserveDataSourceConfigurationAndConnection(dataSourceConfiguration, dataSourceConnection); + File dbDirectory = new File(tmpDirectory, ObserveSwingApplicationConfig.DB_NAME + UUID.randomUUID().toString()); - ObserveServiceInitializer observeServiceInitializer = ObserveServiceInitializer.create( - locale, - referentialLocale, - tmpDirectory, - configurationAndConnection + ObserveDataSourceConfigurationTopiaH2 config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( + label, + dbDirectory, + ObserveSwingApplicationConfig.DB_NAME, + getConfig().getH2Login(), + getConfig().getH2Password(), + false, + false ); - return observeServiceInitializer; + ObserveSwingDataSource result = new ObserveSwingDataSource(config); + + return result; } public <S extends ObserveService> S newService(Class<S> serviceType) { - ObserveServiceMainFactory serviceFactory = getObserveServiceMainFactory(); + ObserveSwingDataSource dataSource = getDataSource(); + + Preconditions.checkNotNull(dataSource, "Aucune source de données configurée"); - S service = serviceFactory.newService(getObserveServiceInitializer(), serviceType); + S service = dataSource.newService(serviceType); return service; } @@ -647,21 +586,16 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { /** * Prepare le storage principal qui servira dans les ui. * - * @param service le service a preparer + * @param dataSource la source de données a preparer */ - public void prepareMainStorage(DataSource service) { - - // le storage principal utilise le cache sur les entites sur - // le referentiel pour mettre a jour de maniere transparent - // les listes de valeuers du référentiel dans les ui - service.getConfig().setUseCache(true); + public void prepareMainStorage(ObserveSwingDataSource dataSource) { // ajout support JMX - if (ObserveServiceHelper.isUseJMX()) { - service.getConfig().getDbConfig().setProperty( - Environment.GENERATE_STATISTICS, - String.valueOf(true)); - } +// if (ObserveServiceHelper.isUseJMX()) { +// service.getConfig().getDbConfig().setProperty( +// Environment.GENERATE_STATISTICS, +// String.valueOf(true)); +// } //FIXME // service.addDataSourceListener(new DataSourceListenerAdapter() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/report/model/ReportExecute.java b/observe-application-swing/src/main/java/fr/ird/observe/business/report/model/ReportExecute.java index 7e416a1..2451881 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/report/model/ReportExecute.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/report/model/ReportExecute.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.business.report.model; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.db.ObserveSwingDataSource; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -52,7 +52,7 @@ public class ReportExecute { protected final Map<String, List<?>> repeatVariablesUniverse; /** la source de données qui permet d'exécuter les requêtes hql. */ - protected DataSource source; + protected ObserveSwingDataSource source; public static final String TRIP_ID_VARIABLE = "tripId"; @@ -73,11 +73,11 @@ public class ReportExecute { return repeatVariablesUniverse.get(key); } - public DataSource getSource() { + public ObserveSwingDataSource getSource() { return source; } - public void setSource(DataSource source) { + public void setSource(ObserveSwingDataSource source) { this.source = source; } @@ -279,12 +279,7 @@ public class ReportExecute { // } } - protected boolean checkDataSource(DataSource source) throws IllegalStateException { - if (source.wasClosed()) { - - // la source de donnée a été fermée - return false; - } + protected boolean checkDataSource(ObserveSwingDataSource source) throws IllegalStateException { if (!source.isOpen()) { throw new IllegalStateException("data source is not opened."); 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 new file mode 100644 index 0000000..eccfbd7 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java @@ -0,0 +1,158 @@ +package fr.ird.observe.db; + +import com.google.common.base.Preconditions; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceInitializer; +import fr.ird.observe.services.ObserveServiceMainFactory; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; +import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.service.DataSourceService; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.io.File; +import java.util.Locale; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserveSwingDataSource extends AbstractSerializableBean { + + public static final String PROPERTY_OPEN = "open"; + + protected final ObserveDataSourceConfiguration configuration; + + protected ObserveDataSourceConnection connection; + + public ObserveSwingDataSource(ObserveDataSourceConfiguration configuration) { + this.configuration = configuration; + this.connection = null; + } + + public ObserveDataSourceConfiguration getConfiguration() { + return configuration; + } + + public ObserveDataSourceConnection getConnection() { + return connection; + } + + public void open() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + Preconditions.checkState(connection == null, "Connection is alredy open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + connection = dataSourceService.open(configuration); + + firePropertyChange(PROPERTY_OPEN, false, true); + } + + public void create(DataSourceCreateConfigurationDto creatDto) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + Preconditions.checkState(connection == null, "Connection is alredy open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + connection = dataSourceService.create(configuration, creatDto); + + firePropertyChange(PROPERTY_OPEN, false, true); + } + + public void close() { + + Preconditions.checkState(connection != null, "Connection is not open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + dataSourceService.close(); + + connection = null; + + firePropertyChange(PROPERTY_OPEN, true, false); + } + + public void destroy() { + + Preconditions.checkState(connection != null, "Connection is not open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + dataSourceService.destroy(); + + connection = null; + + firePropertyChange(PROPERTY_OPEN, true, false); + } + + public boolean isOpen() { + return connection != null; + } + + public <S extends ObserveService> S newService(Class<S> serviceType) { + + ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(); + + ObserveServiceMainFactory serviceFactory = ObserveServiceMainFactory.get(); + + S service = serviceFactory.newService(observeServiceInitializer, serviceType); + return service; + } + + protected ObserveServiceInitializer getObserveServiceInitializer() { + + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + + ObserveSwingApplicationConfig config = context.getConfig(); + + Locale locale = config.getLocale(); + + File tmpDirectory = config.getTmpDirectory(); + + ReferentialLocale referentialLocale = ReferentialLocale.valueOf(locale); + + ObserveDataSourceConfigurationAndConnection configurationAndConnection = new ObserveDataSourceConfigurationAndConnection(configuration, connection); + + ObserveServiceInitializer observeServiceInitializer = ObserveServiceInitializer.create( + locale, + referentialLocale, + tmpDirectory, + configurationAndConnection + ); + + return observeServiceInitializer; + } + + + public void checkCanConnect() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + + Preconditions.checkState(connection == null, "Connection is alredy open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + dataSourceService.checkCanConnect(configuration); + + } + + public boolean isLocal() { + return configuration instanceof ObserveDataSourceConfigurationTopiaH2; + } + + public boolean isRemote() { + return configuration instanceof ObserveDataSourceConfigurationTopiaPG; + } + + public boolean isServeur() { + return configuration instanceof ObserveDataSourceConfigurationRest; + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.css index a328950..736d57e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.css @@ -290,6 +290,7 @@ JSplitPane { icon: {updateStorageSatutIcon(getConfig().isMainStorageOpened())}; _localIcon: {SwingUtil.getUIManagerActionIcon("db-local")}; _remoteIcon: {SwingUtil.getUIManagerActionIcon("db-remote")}; + _serverIcon: {SwingUtil.getUIManagerActionIcon("db-server")}; _noneIcon: {SwingUtil.getUIManagerActionIcon("db-none")}; } 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 53b3b0c..1a896aa 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 @@ -23,12 +23,10 @@ package fr.ird.observe.ui; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.AbstractObserveDto; -import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUI; @@ -87,7 +85,7 @@ public class ObserveMainUIHandler { public void changeNavigationNode(ObserveMainUI ui, TreeSelectionEvent event) { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (source == null || !source.isOpen()) { // no open data source @@ -225,11 +223,12 @@ public class ObserveMainUIHandler { } ObserveTreeHelper treeHelper = new ObserveTreeHelper(); - DataSource source = context.getDataSource(); + ObserveSwingDataSource source = context.getDataSource(); boolean open = context.getDataContext().getEnabled(); if (open) { - treeHelper.createModel(source); + // FIXME + //treeHelper.createModel(source); } else { treeHelper.createEmptyModel(); } @@ -268,11 +267,6 @@ public class ObserveMainUIHandler { public static final String H2_SERVER_URL_PATTERN = "jdbc:h2:%s/%s/obstuna"; - public static DataSource getStorage() { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - return source; - } - // protected static DataService getDataService() { // return ObserveContext.get().getDataService(); // } @@ -320,7 +314,7 @@ public class ObserveMainUIHandler { // scan main ui ObserveMainUI ui = getUI(rootContext); - DataSource mainStorage = rootContext.getDataSource(); + ObserveSwingDataSource mainStorage = rootContext.getDataSource(); ObserveUIMode oldMode = null; String[] ids = null; @@ -396,13 +390,15 @@ public class ObserveMainUIHandler { if (ui.getConfig().isMainStorageOpened()) { - DataSource service = ObserveSwingApplicationContext.get().getDataSource(); - //FIXME -// if (service instanceof H2DataSource) { -// icon = (Icon) ui.storageStatus.getClientProperty("localIcon"); -// } else { + ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSource(); + + if (service.isLocal()) { + icon = (Icon) ui.storageStatus.getClientProperty("localIcon"); + } else if (service.isRemote()){ icon = (Icon) ui.storageStatus.getClientProperty("remoteIcon"); -// } + } else { + icon = (Icon) ui.storageStatus.getClientProperty("serverIcon"); + } } else { icon = (Icon) ui.storageStatus.getClientProperty("noneIcon"); } @@ -412,8 +408,8 @@ public class ObserveMainUIHandler { protected String updateStorageSatutText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - DataSource service = ObserveSwingApplicationContext.get().getDataSource(); - text = service.getShortLabel(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + text = source.getConfiguration().getLabel(); } else { text = t("observe.message.db.none.loaded"); } @@ -423,8 +419,8 @@ public class ObserveMainUIHandler { protected String updateStorageStatutToolTipText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - text = t("observe.message.loaded.tip", source.getLabel()); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + text = t("observe.message.loaded.tip", source.getConfiguration().getLabel()); } else { text = t("observe.message.db.none.loaded.tip"); } 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 7e8c02d..1c7e5cf 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 @@ -23,7 +23,7 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUIMode; import jaxx.runtime.SwingUtil; @@ -61,7 +61,7 @@ public class CloseHelpAction extends AbstractAction { if (oldMode == null) { // on regarde si une base est chargee - DataSource mainStorage = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource mainStorage = ObserveSwingApplicationContext.get().getDataSource(); 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 504a0f0..3440932 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 @@ -23,12 +23,9 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -75,18 +72,12 @@ public class CloseStorageAction extends AbstractAction { ui.setBusy(true); try { - DataSource storage = ObserveMainUIHandler.getStorage(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (log.isDebugEnabled()) { - log.debug(">>> close main storage " + storage); + log.debug(">>> close main storage " + source); } // on doit fermer le storage en cours d'utilisation - storage.doClose(false); - - } catch (DataSourceException ex) { - ErrorDialogUI.showError(ex); - if (log.isErrorEnabled()) { - log.error(ex); - } + source.close(); } finally { ui.setBusy(false); } 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 dc5c598..c1ad2ac 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 @@ -23,12 +23,11 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; @@ -74,7 +73,7 @@ public class ReloadStorageAction extends AbstractAction { boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); - DataSource storage = ObserveMainUIHandler.getStorage(); + ObserveSwingDataSource storage = ObserveSwingApplicationContext.get().getDataSource(); if (canContinue && storage != null) { @@ -84,61 +83,42 @@ public class ReloadStorageAction extends AbstractAction { try { - DataSourceConfig config = storage.getConfig().clone(); + if (log.isDebugEnabled()) { + log.debug(">>> close main storage " + storage); + } + // fermeture du storage courant + storage.close(); + + ObserveSwingApplicationConfig appConfig = ObserveSwingApplicationContext.get().getConfig(); + + if (storage.isLocal()) { + + ObserveDataSourceConfigurationTopiaH2 h2Config = (ObserveDataSourceConfigurationTopiaH2) storage.getConfiguration(); + + h2Config.setCanMigrate(appConfig.isCanMigrateH2()); + } else if (storage.isRemote()) { + ObserveDataSourceConfigurationTopiaPG pgConfig = (ObserveDataSourceConfigurationTopiaPG) storage.getConfiguration(); + pgConfig.setCanMigrate(appConfig.isCanMigrateObstuna()); + } + try { - if (log.isDebugEnabled()) { - log.debug(">>> close main storage " + storage); - } - // fermeture du storage courant - storage.doClose(false); - } catch (DataSourceException e) { + + // on conserve les noeuds a selectionner + ObserveSwingApplicationContext.get().setNodesToReselect(ids); + + // attachement a l'ui + ObserveSwingApplicationContext.get().prepareMainStorage(storage); + + // ouverture du service + storage.open(); + } catch (Exception e) { ErrorDialogUI.showError(e); if (log.isErrorEnabled()) { log.error(e.getMessage(), e); } } - ObserveSwingApplicationConfig appConfig = ObserveSwingApplicationContext.get().getConfig(); - - //FIXME -// if (config instanceof H2DataSourceConfig) { -// -// H2DataSourceConfig h2Config = (H2DataSourceConfig) config; -// h2Config.setCanMigrate(appConfig.isCanMigrateH2()); -// h2Config.detectPolicy(); -// } - - //FIXME -// if (config instanceof PGDataSourceConfig) { -// PGDataSourceConfig pgConfig = (PGDataSourceConfig) config; -// pgConfig.setCanMigrate(appConfig.isCanMigrateObstuna()); -// //TODO Should try to reconnect ? to obtain new credentials ? -//// pgConfig.canConnect(); -//// pgConfig.detectPolicy(); -// } - - //FIXME -// try { -// // creation du service -// storage = -// DataSourceFactory.newService(config, storage.getClass()); -// -// // on conserve les noeuds a selectionner -// ObserveContext.get().setNodesToReselect(ids); -// -// // attachement a l'ui -// ObserveContext.get().prepareMainStorage(storage); -// -// // ouverture du service -// storage.doOpen(); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// } - } finally { ui.setBusy(false); } 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 83123cc..b64b062 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 @@ -23,10 +23,11 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.storage.StorageBackupUILauncher; import jaxx.runtime.SwingUtil; import javax.swing.AbstractAction; @@ -64,13 +65,11 @@ public class SaveStorageToFileAction extends AbstractAction { // on teste que l'utilisateur peut lire-ecrire sur la source de données - DataSource service = ObserveMainUIHandler.getStorage(); + ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSource(); -// boolean local = service.getConfig() instanceof H2DataSourceConfig; + ObserveDataSourceConnection connection = service.getConnection(); + if (!service.isLocal() && !(connection.canReadData() && connection.canWriteData())) { - //FIXME -// if (!local && !(service.canReadData() && service.canWriteData())) { - if (!(service.canReadData() && service.canWriteData())) { UIHelper.askUser( null, t("observe.title.can.not.export.obstuna"), @@ -82,14 +81,13 @@ public class SaveStorageToFileAction extends AbstractAction { return; } - //FIXME -// String title = local ? -// t("observe.title.save.localDB") : -// t("observe.title.save.remoteDB"); -// -// StorageBackupUILauncher launcher = -// new StorageBackupUILauncher(ui, ui, title); -// launcher.start(); + String title = service.isLocal() ? + t("observe.title.save.localDB") : + t("observe.title.save.remoteDB"); + + StorageBackupUILauncher launcher = + new StorageBackupUILauncher(ui, ui, title); + launcher.start(); } } 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 5bd0238..a176494 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 @@ -23,11 +23,11 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; -import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import fr.ird.observe.business.ObserveTechnicalException; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUICallback; @@ -94,7 +94,7 @@ public class ShowConfigAction extends AbstractAction { boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - DataSource dataSource = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSource(); ObserveSwingApplicationConfig config = ui.getConfig(); @@ -114,7 +114,7 @@ public class ShowConfigAction extends AbstractAction { } - protected ObserveConfigUIBuilder buildUI(ObserveSwingApplicationConfig config, DataSource dataSource) throws DataSourceException { + protected ObserveConfigUIBuilder buildUI(ObserveSwingApplicationConfig config, ObserveSwingDataSource dataSource) throws DataSourceException { //FIXME // SpeciesListTableCellEditor editor; 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 7530e39..60e18bb 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 @@ -30,6 +30,9 @@ import fr.ird.observe.business.SendMessageAble; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.gps.GPSService; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; import fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel; @@ -170,9 +173,9 @@ public class AdminTabUIHandler implements SendMessageAble { return gpsService; } - protected DataSource getSource() { + protected ObserveSwingDataSource getSource() { - DataSource source = model.getTmpSource(); + ObserveSwingDataSource source = model.getTmpSource(); if (source == null) { source = model.getSafeLocalSource(false); } @@ -339,7 +342,7 @@ public class AdminTabUIHandler implements SendMessageAble { // } selectionModel.clearSelection(); - DataSource source = tabUI.getModel().getSafeLocalSource(true); + ObserveSwingDataSource source = tabUI.getModel().getSafeLocalSource(true); if (log.isDebugEnabled()) { log.debug("Will treeHelper : " + helper); @@ -365,16 +368,16 @@ public class AdminTabUIHandler implements SendMessageAble { } } - protected DataSource getSource(AdminUIModel model) { + protected ObserveSwingDataSource getSource(AdminUIModel model) { - DataSource source = model.getTmpSource(); + ObserveSwingDataSource source = model.getTmpSource(); if (source == null) { source = model.getSafeLocalSource(false); } return source; } - protected void addStorageServiceLogger(DataSource service) { + protected void addStorageServiceLogger(ObserveSwingDataSource service) { //FIXME // if (!service.containsDataSourceListener(serviceLogger)) { // service.addDataSourceListener(serviceLogger); @@ -387,10 +390,10 @@ public class AdminTabUIHandler implements SendMessageAble { // } } - protected void openSource(DataSource service) throws DataSourceException { + protected void openSource(ObserveSwingDataSource service) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { addStorageServiceLogger(service); if (!service.isOpen()) { - service.doOpen(); + service.open(); } } 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 cc33110..d1143cb 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 @@ -22,8 +22,8 @@ package fr.ird.observe.ui.admin; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUIMode; import fr.ird.observe.ui.UIHelper; @@ -254,7 +254,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad mainUI.removeContextValue(model.getClass()); - DataSource source = model.getPreviousSource(); + ObserveSwingDataSource source = model.getPreviousSource(); if (source == null) { @@ -266,7 +266,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad model.doCloseSource(source, false); // on avait une source avant l'opération et aussi une ui - DataSourceConfig sourceConfig = source.getConfig(); + ObserveDataSourceConfiguration sourceConfig = source.getConfiguration(); //FIXME // if (sourceConfig instanceof H2DataSourceConfig) @@ -279,7 +279,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad // on attache la source a l'ui ObserveSwingApplicationContext.get().prepareMainStorage(source); - source.doOpen(); + source.open(); } catch (Exception e) { 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 cfa086b..af2a398 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 @@ -21,14 +21,15 @@ */ package fr.ird.observe.ui.admin; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.report.model.Report; import fr.ird.observe.business.validation.ValidationModelMode; import fr.ird.observe.business.validation.ValidatorsMap; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.ui.admin.export.ExportModel; import fr.ird.observe.ui.admin.gps.ImportGPSModel; @@ -38,6 +39,7 @@ import fr.ird.observe.ui.admin.synchronize.SynchronizeModel; import fr.ird.observe.ui.admin.validate.ValidateModel; import fr.ird.observe.ui.storage.StorageUIHandler; import fr.ird.observe.ui.storage.StorageUIModel; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.swing.wizard.ext.WizardExtModel; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.lang3.StringUtils; @@ -78,16 +80,16 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { private static final Log log = LogFactory.getLog(AdminUIModel.class); /** la source de données en cours d'utilisation par l'application */ - protected DataSource previousSource; + protected ObserveSwingDataSource previousSource; /** la source de données sur laquel on veut travailler */ - protected DataSource localSource; + protected ObserveSwingDataSource localSource; /** la source de données dite central (contenant le référentiel valide) */ - protected DataSource centralSource; + protected ObserveSwingDataSource centralSource; /** la source de données temporaire */ - protected DataSource tmpSource; + protected ObserveSwingDataSource tmpSource; /** la configuration de la base source */ protected StorageUIModel localSourceModel; @@ -98,16 +100,11 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { /** le controleur pour configurer les sources */ protected StorageUIHandler storageHandler; - /** data service pour effectuer des opérations sur les sources */ - //FIXME -// protected DataService dataService; - /** configuration de l'application */ protected ObserveSwingApplicationConfig config; /** selection des donnees a valider */ - //FIXME -// protected DataSelectionModel selectionDataModel; + protected DataSelectionModel selectionDataModel; /** la liste des modes disponibles en entrée */ protected EnumSet<DbMode> availableIncomingModes; @@ -184,7 +181,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // if (log.isDebugEnabled()) { // log.debug("Will refill selectionModel [" + newStep + "] : " + selectModel); // } - DataSource dataSource = getSafeLocalSource(true); + ObserveSwingDataSource dataSource = getSafeLocalSource(true); //FIXME // populateSelectionModel(dataService, dataSource); } @@ -512,7 +509,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). - DataSource previousSource = ui.getContextValue(DataSource.class); + ObserveSwingDataSource previousSource = ui.getContextValue(ObserveSwingDataSource.class); setPreviousSource(previousSource); startIncomingSourceModel(ui); @@ -528,7 +525,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (log.isDebugEnabled()) { log.debug("Close previous source " + - previousSource.getShortLabel()); + previousSource.getConfiguration().getLabel()); } doCloseSource(previousSource, false); } @@ -662,9 +659,9 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return; } - DataSource previousSource = getPreviousSource(); + ObserveSwingDataSource previousSource = getPreviousSource(); - DataSourceConfig previousSourceConfig = null; + ObserveDataSourceConfiguration previousSourceConfig = null; EnumSet<DbMode> authorizedModes = getIncomingDataSourceMode(); EnumSet<DbMode> modes = EnumSet.noneOf(DbMode.class); @@ -799,30 +796,30 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { super.destroy(); } - public DataSource getPreviousSource() { + public ObserveSwingDataSource getPreviousSource() { return previousSource; } - public void setPreviousSource(DataSource previousSource) { + public void setPreviousSource(ObserveSwingDataSource previousSource) { this.previousSource = previousSource; } - public DataSource getLocalSource() { + public ObserveSwingDataSource getLocalSource() { return localSource; } - public DataSource getCentralSource() { + public ObserveSwingDataSource getCentralSource() { return centralSource; } - public DataSource getTmpSource() { + public ObserveSwingDataSource getTmpSource() { return tmpSource; } - public DataSource getSafeLocalSource(boolean open) { - if (localSource == null || open && localSource.wasClosed()) { + public ObserveSwingDataSource getSafeLocalSource(boolean open) { + if (localSource == null || open && !localSource.isOpen()) { - localSource = createService(getLocalSourceModel()); + localSource = createDataSource(getLocalSourceModel()); } if (open) { @@ -831,10 +828,10 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return localSource; } - public DataSource getSafeCentralSource(boolean open) { - if (centralSource == null || open && centralSource.wasClosed()) { + public ObserveSwingDataSource getSafeCentralSource(boolean open) { + if (centralSource == null || open && !centralSource.isOpen()) { - centralSource = createService(getCentralSourceModel()); + centralSource = createDataSource(getCentralSourceModel()); } if (open) { doOpenSource(centralSource); @@ -842,7 +839,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return centralSource; } - public DataSource getSafeTmpSource(boolean open) { + public ObserveSwingDataSource getSafeTmpSource(boolean open) { if (tmpSource == null) { //FIXME // try { @@ -1030,7 +1027,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } // la base precedente doit etre ouverte - DataSource source = getSafeLocalSource(true); + ObserveSwingDataSource source = getSafeLocalSource(true); // pour valider une base il faut les droits //FIXME @@ -1319,36 +1316,36 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - protected DataSource createService(StorageUIModel model) { + protected ObserveSwingDataSource createDataSource(StorageUIModel model) { - // FIXME -// ObserveDataSourceConfiguration service = storageHandler.newDataSourceConfigurationFromModel( -// model, -// n("observe.storage.label.local") -// ); -// return service; - return null; + ObserveDataSourceConfiguration service = storageHandler.newDataSourceConfigurationFromModel( + model, + n("observe.storage.label.local") + ); + + ObserveSwingDataSource dataSource = new ObserveSwingDataSource(service); + return dataSource; } - protected void doOpenSource(DataSource source) { + protected void doOpenSource(ObserveSwingDataSource source) { if (source != null && !source.isOpen()) { try { - source.doOpen(); - } catch (DataSourceException e) { + source.open(); + } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException e) { throw new IllegalStateException("Could not open " + source, e); } } } - protected void doCloseSource(DataSource source, boolean destroy) { + protected void doCloseSource(ObserveSwingDataSource source, boolean destroy) { - if (source != null && source.isOpen() && !source.wasClosed()) { - try { - source.doClose(destroy); - } catch (DataSourceException e) { - throw new IllegalStateException("Could not close " + source, e); + if (source != null && source.isOpen()) { + if (destroy) { + source.destroy(); + } else { + source.close(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java index 0a3d831..d98f842 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.consolidate; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.SetSeineDto; @@ -39,7 +39,7 @@ import org.nuiton.decorator.Decorator; public class ConsolidateModel extends AdminActionModel { /** la source de données où effectuer la consolidation des données */ - private DataSource source; + private ObserveSwingDataSource source; private Decorator<ProgramDto> programDecorator; @@ -53,11 +53,11 @@ public class ConsolidateModel extends AdminActionModel { super(AdminStep.CONSOLIDATE); } - public DataSource getSource() { + public ObserveSwingDataSource getSource() { return source; } - public void setSource(DataSource source) { + public void setSource(ObserveSwingDataSource source) { this.source = source; } 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 b0a049f..b523e9b 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 @@ -22,7 +22,7 @@ package fr.ird.observe.ui.admin.consolidate; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.SetSeineDto; @@ -40,7 +40,9 @@ import org.nuiton.decorator.Decorator; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.t; @@ -135,7 +137,7 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { // ConsolidateDataService service = // ObserveServiceHelper.getConsolidateDataService(); - DataSource source = getStepModel().getSource(); + ObserveSwingDataSource source = getStepModel().getSource(); String txName = "consolidateData"; //FIXME @@ -202,7 +204,7 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { protected WizardState initDB() throws Exception { // on recupere la source de données - DataSource source = model.getSafeLocalSource(false); + ObserveSwingDataSource source = model.getSafeLocalSource(false); getStepModel().setSource(source); openSource(source); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java index dcce58a..8fa085f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.export; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; @@ -55,9 +55,9 @@ public class ExportModel extends AdminActionModel { protected Decorator<TripLonglineDto> tripLonglineDecorator; - protected DataSource source; + protected ObserveSwingDataSource source; - protected DataSource centralSource; + protected ObserveSwingDataSource centralSource; public ExportModel() { super(AdminStep.EXPORT_DATA); @@ -121,19 +121,19 @@ public class ExportModel extends AdminActionModel { // // } - public DataSource getSource() { + public ObserveSwingDataSource getSource() { return source; } - public void setSource(DataSource source) { + public void setSource(ObserveSwingDataSource source) { this.source = source; } - public DataSource getCentralSource() { + public ObserveSwingDataSource getCentralSource() { return centralSource; } - public void setCentralSource(DataSource centralSource) { + public void setCentralSource(ObserveSwingDataSource centralSource) { this.centralSource = centralSource; } 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 f4b26e7..2a67b31 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 @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.admin.export; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; @@ -39,7 +39,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; -import javax.swing.*; +import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -201,17 +201,17 @@ public class ExportUIHandler extends AdminTabUIHandler { stepModel.setTripSeineDecorator(tripSeineDecorator); stepModel.setTripLonglineDecorator(tripLonglineDecorator); - DataSource centralSource = model.getSafeCentralSource(false); + ObserveSwingDataSource centralSource = model.getSafeCentralSource(false); stepModel.setCentralSource(centralSource); - if (!centralSource.canWriteData()) { + if (!centralSource.getConnection().canWriteData()) { // l'utilisateur n'a pas le droit d'écrire sur la base distante sendMessage(t("observe.message.can.not.write.data")); return WizardState.FAILED; } - DataSource source = getSource(); + ObserveSwingDataSource source = getSource(); stepModel.setSource(source); @@ -265,8 +265,8 @@ public class ExportUIHandler extends AdminTabUIHandler { protected void processTrip(ExportModel stepModel, TripEntry tripEntry) throws Exception { - DataSource centralSource = stepModel.getCentralSource(); - DataSource source = stepModel.getSource(); + ObserveSwingDataSource centralSource = stepModel.getCentralSource(); + ObserveSwingDataSource source = stepModel.getSource(); //FIXME diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java index 554a279..c127444 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java @@ -22,11 +22,12 @@ package fr.ird.observe.ui.admin.gps; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.gps.GPSPoint; import fr.ird.observe.business.gps.GPSPointInterval; import fr.ird.observe.business.gps.GPSRoute; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.ActivitySeineDto; +import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; @@ -93,7 +94,7 @@ public class ImportGPSUIHandler extends AdminTabUIHandler { */ protected Map<ActivitySeineDto, GPSPoint> data; - protected DataSource source; + protected ObserveSwingDataSource source; protected Decorator<ActivitySeineDto> dActivity; 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 ce32612..6c84080 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 @@ -21,13 +21,14 @@ */ package fr.ird.observe.ui.admin.report; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.report.model.DataMatrix; import fr.ird.observe.business.report.model.Report; import fr.ird.observe.business.report.model.ReportExecute; import fr.ird.observe.business.report.model.ReportVariable; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; @@ -46,9 +47,15 @@ import org.nuiton.decorator.Decorator; import org.nuiton.decorator.JXPathDecorator; import org.nuiton.util.TimeLog; -import javax.swing.*; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JComboBox; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JTable; +import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableCellRenderer; -import java.awt.*; +import java.awt.Component; +import java.awt.Font; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; @@ -487,17 +494,17 @@ public class ReportUIHandler extends AdminTabUIHandler { return null; } - DataSource source = getModel().getSafeLocalSource(false); - if (source.wasClosed()) { + ObserveSwingDataSource source = getModel().getSafeLocalSource(false); + if (!source.isOpen()) { // source de donnée fermée, l'executeur n'est plus disponible return null; } try { openSource(source); - } catch (DataSourceException eee) { + } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException eee) { throw new IllegalStateException( - "Could not open data source " + source.getLabel(), eee); + "Could not open data source " + source.getConfiguration().getLabel(), eee); } ReportExecute execute = stepModel.getReportExecute(); 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 e20395e..68944d6 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 @@ -21,27 +21,22 @@ */ package fr.ird.observe.ui.admin.save; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.service.DataSourceDumpProducerService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; import fr.ird.observe.ui.admin.synchronize.SynchronizeModel; -import fr.ird.observe.ui.admin.synchronize.SynchronizeUIHandler; import jaxx.runtime.swing.wizard.ext.WizardState; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.hibernate.jdbc.Work; import java.io.File; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; +import java.io.FileOutputStream; import java.util.Date; import java.util.List; -import java.util.Map; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.t; @@ -60,7 +55,7 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { private static final String UPDATE_VERSION_PATTERN = "UPDATE %1$s SET topiaversion = %2$d WHERE topiaid='%3$s';\n"; - protected DataSource source; + protected ObserveSwingDataSource source; public SaveLocalUIHandler(SaveLocalUI ui) { super(ui); @@ -165,7 +160,14 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { // on effectue une sauvegarde de la base locale File backupFile = stepModel.getBackupFile(); - source.storeDB(backupFile); + DataSourceDumpProducerService dumpService = source.newService(DataSourceDumpProducerService.class); + + byte[] dump = dumpService.getAllDataDump(); + + try (FileOutputStream outputStream = new FileOutputStream(backupFile)) { + IOUtils.write(dump, outputStream); + } + } if (stepModel.containsStepForsave(AdminStep.SYNCHRONIZE)) { @@ -185,14 +187,14 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { SynchronizeModel stepModel = getModel().getSynchronizeReferentielModel(); - DataSource referentielSource = stepModel.getTmpSource(); + ObserveSwingDataSource referentielSource = stepModel.getTmpSource(); if (referentielSource == null) { // pas de base temporaire // on travaille directement sur la base central referentielSource = stepModel.getCentralSource(); } - DataSource targetSource = stepModel.getSource(); + ObserveSwingDataSource targetSource = stepModel.getSource(); //FIXME // DiffState.DiffStateMap diff = stepModel.getDiff(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java index e8ed354..a3eef7d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.synchronize; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.ui.admin.AdminActionModel; import fr.ird.observe.ui.admin.AdminStep; @@ -50,13 +50,13 @@ public class SynchronizeModel extends AdminActionModel { // protected Map<TopiaEntity, Long> versionsToUpdate; /** data source we want to synchronize. */ - protected DataSource source; + protected ObserveSwingDataSource source; /** data source which contains central referentiel. */ - protected DataSource centralSource; + protected ObserveSwingDataSource centralSource; /** temporary source where to make objectOperations. */ - protected DataSource tmpSource; + protected ObserveSwingDataSource tmpSource; public SynchronizeModel() { super(AdminStep.SYNCHRONIZE); @@ -108,27 +108,27 @@ public class SynchronizeModel extends AdminActionModel { // this.versionsToUpdate = versionsToUpdate; // } - public DataSource getSource() { + public ObserveSwingDataSource getSource() { return source; } - public void setSource(DataSource source) { + public void setSource(ObserveSwingDataSource source) { this.source = source; } - public DataSource getCentralSource() { + public ObserveSwingDataSource getCentralSource() { return centralSource; } - public void setCentralSource(DataSource centralSource) { + public void setCentralSource(ObserveSwingDataSource centralSource) { this.centralSource = centralSource; } - public DataSource getTmpSource() { + public ObserveSwingDataSource getTmpSource() { return tmpSource; } - public void setTmpSource(DataSource tmpSource) { + public void setTmpSource(ObserveSwingDataSource tmpSource) { this.tmpSource = tmpSource; } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java index 9f44d69..ac3a0eb 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java @@ -22,18 +22,23 @@ package fr.ird.observe.ui.admin.synchronize; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; +import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.editor.MyDefaultCellEditor; import jaxx.runtime.swing.editor.bean.BeanComboBox; import jaxx.runtime.swing.wizard.ext.WizardState; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; +import org.nuiton.decorator.JXPathDecorator; import javax.swing.DefaultListModel; import javax.swing.JPanel; @@ -42,8 +47,14 @@ import javax.swing.table.DefaultTableCellRenderer; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.SortedMap; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.n; @@ -320,9 +331,9 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { // on cree les sources de données - DataSource source = model.getSafeLocalSource(false); + ObserveSwingDataSource source = model.getSafeLocalSource(false); getStepModel().setSource(source); - DataSource centralSource = model.getSafeCentralSource(false); + ObserveSwingDataSource centralSource = model.getSafeCentralSource(false); getStepModel().setCentralSource(centralSource); openSource(source); @@ -330,7 +341,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { // construction du différentiel sendMessage(t("observe.message.synchro.build.diff", - centralSource.getLabel())); + centralSource.getConfiguration().getLabel())); //FIXME // DiffState.DiffStateMap diff = 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 790e715..7df22ed 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 @@ -22,13 +22,13 @@ package fr.ird.observe.ui.admin.validate; import com.google.common.base.Charsets; -import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveServiceHelper; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.business.validation.ValidationMessageDetector; import fr.ird.observe.business.validation.ValidationModelMode; import fr.ird.observe.business.validation.ValidatorsMap; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.UIHelper; @@ -82,7 +82,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { /** Logger */ private static final Log log = LogFactory.getLog(ValidateUIHandler.class); - protected DataSource source; + protected ObserveSwingDataSource source; protected Decorator<TripSeineDto> dTrip; @@ -360,7 +360,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { ValidatorsMap validators = validationModel.getValidators(); sendMessage(t("observe.message.validation.use.storage", - source.getLabel())); + source.getConfiguration().getLabel())); sendMessage(t("observe.message.validation.prepare.validators")); @@ -395,9 +395,8 @@ public class ValidateUIHandler extends AdminTabUIHandler { // DataSelectionModel dataModel = model.getSelectionDataModel(); ValidationContext context = ObserveServiceHelper.getValidationContext(); - - context.setDataSource(model.getLocalSource()); //FIXME +// context.setDataSource(model.getLocalSource()); // context.setDataContext(model.getDataService().getDataContext()); //FIXME 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 952d7ed..c7106cc 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 @@ -60,12 +60,9 @@ <SwingValidatorMessageTableModel id='errorTableModel' initializer='getContextValue(SwingValidatorMessageTableModel.class)'/> - <!--FIXME--> - <!--<DataService id='dataService'--> - <!--initializer='getContextValue(DataService.class)'/>--> - + <!--FIXME a supprimer a la fin de la migration de service --> <DataSource id='dataSource' - initializer='ObserveSwingApplicationContext.get().getDataSource()'/> + initializer='null'/> <DataContext id='dataContext' javaBean='getContextValue(DataContext.class)'/> 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 34169aa..d3a23f3 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 @@ -27,7 +27,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; import org.nuiton.util.version.Versions; -import java.awt.*; +import java.awt.Window; import static org.nuiton.i18n.I18n.n; 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 88987e4..c7b144d 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 @@ -22,8 +22,10 @@ package fr.ird.observe.ui.storage; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.JAXXContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -41,7 +43,9 @@ import java.util.Set; public class StorageBackupUILauncher extends StorageUILauncher { - /** Logger */ + /** + * Logger + */ static private Log log = LogFactory.getLog(StorageBackupUILauncher.class); public StorageBackupUILauncher(JAXXContext context, @@ -55,23 +59,26 @@ public class StorageBackupUILauncher extends StorageUILauncher { super.init(ui); ui.getBACKUP().getDoBackup().setSelected(true); ui.getBACKUP().getDoBackup().setVisible(false); - DataSource source = getStorage(); + + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); StorageUIModel model = ui.getModel(); model.setCanCreateLocalService(false); - //FIXME -// if (source instanceof H2DataSource) { -// model.setCanUseLocalService(true); -// model.setDbMode(DbMode.USE_LOCAL); -// } else { + if (source.isLocal()) { + model.setCanUseLocalService(true); + model.setDbMode(DbMode.USE_LOCAL); + } else if (source.isRemote()) { model.setCanUseRemoteService(true); model.setDbMode(DbMode.USE_REMOTE); -// } + } else if (source.isServeur()) { + model.setCanUseServerService(true); + model.setDbMode(DbMode.USE_SERVER); + } model.setSteps(StorageStep.BACKUP, - StorageStep.SELECT_DATA, - StorageStep.CONFIRM + StorageStep.SELECT_DATA, + StorageStep.CONFIRM ); ui.setTitle(title); try { @@ -92,30 +99,21 @@ public class StorageBackupUILauncher extends StorageUILauncher { protected void doAction(StorageUI ui) { super.doAction(ui); StorageUIHandler handler = getStorageUIHandler(); - DataSource service = getStorage(); + + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + StorageUIModel storageModel = ui.getModel(); File backupFile = storageModel.getBackupFile(); - //FIXME -// DataSelectionModel dataModel = storageModel.getSelectDataModel(); - Set<String> marees = null; - //FIXME -// if (dataModel != null && !dataModel.isDataFull()) { -// // on renseigne les marees a exporter uniquement si -// // on en a selectionner, de plus si on a selectionne -// // toutes les marees, on le les passe pas : car c un dump -// // complet de la base. -// marees = dataModel.getSelectedData(); -// } - handler.backupLocalDatabase(service, backupFile, marees); - } - protected DataSource getStorage() { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - return source; + DataSelectionModel dataModel = storageModel.getSelectDataModel(); + Set<IdDto> marees = null; + if (dataModel != null && !dataModel.isDataFull()) { + // on renseigne les marees a exporter uniquement si + // on en a selectionner, de plus si on a selectionne + // toutes les marees, on le les passe pas : car c un dump + // complet de la base. + marees = dataModel.getSelectedData(); + } + handler.backupLocalDatabase(source, backupFile, marees); } - - //FIXME -// protected DataService getDataService() { -// return ObserveContext.get().getDataService(); -// } } 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 beb5204..171fd3b 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 @@ -22,26 +22,29 @@ package fr.ird.observe.ui.storage; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import fr.ird.observe.ObserveActionExecutor; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.util.SecurityModel; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.service.DataSourceDumpProducerService; -import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.storage.tabs.RolesTableModel; import fr.ird.observe.ui.storage.tabs.SelectDataUI; import fr.ird.observe.ui.storage.tabs.StorageTabUI; @@ -50,6 +53,7 @@ import jaxx.runtime.context.DefaultApplicationContext.AutoLoad; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.wizard.WizardUILancher; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; @@ -352,30 +356,28 @@ public class StorageUIHandler { log.debug(">>> should destroy local db ? " + destroyLocalBase); } - ObserveDataSourceConfiguration sourceConfiguration = observeContext.getObserveDataSourceConfiguration(); - ObserveDataSourceConnection localConnection = observeContext.getObserveDataSourceConnection(); - ObserveDataSourceConfigurationTopiaH2 localConfiguration = null; + ObserveSwingDataSource currentDataSource = observeContext.getDataSource(); - if (sourceConfiguration instanceof ObserveDataSourceConfigurationTopiaH2) { - localConfiguration = (ObserveDataSourceConfigurationTopiaH2) sourceConfiguration; - } - - DataSourceService localDataSourceService = null; + ObserveSwingDataSource localDataSource = null; + if (currentDataSource != null && currentDataSource.isLocal()) { + localDataSource = currentDataSource; + } boolean localDbIsSane = true; if (destroyLocalBase || model.isDoBackup()) { - if (localConfiguration == null) { + if (localDataSource == null) { try { - localConfiguration = config.getDataSourceConfigurationH2(n("observe.storage.label.local")); + ObserveDataSourceConfigurationTopiaH2 localConfiguration = config.getDataSourceConfigurationH2(n("observe.storage.label.local")); // la base ne doit pas etre mise a jour dans ce cas localConfiguration.setCanMigrate(false); // on charge un storage sur la base locale - localDataSourceService = observeContext.newService(localConfiguration, DataSourceService.class); - localConnection = localDataSourceService.open(localConfiguration); + localDataSource = new ObserveSwingDataSource(localConfiguration); + + localDataSource.open(); } catch (Exception e) { // on a pas reussi à ouvrir la base locale // cela ne doit pas empécher de continuer @@ -391,7 +393,7 @@ public class StorageUIHandler { localDbIsSane = false; // pour la suite on fait comme si il n'y a pas de local storage - localDataSourceService = null; + localDataSource = null; } } } @@ -408,10 +410,10 @@ public class StorageUIHandler { // effectue la backup de la base locale existante File f = model.getBackupFile(); if (log.isDebugEnabled()) { - log.debug(">>> do backup with " + localConfiguration + " in " + f); + log.debug(">>> do backup with " + localDataSource + " in " + f); } try { - DataSourceDumpProducerService dumpProducerService = observeContext.newService(localConfiguration, localConnection, DataSourceDumpProducerService.class); + DataSourceDumpProducerService dumpProducerService = localDataSource.newService(DataSourceDumpProducerService.class); backupLocalDatabase(dumpProducerService, f); } catch (Exception e) { ErrorDialogUI.showError(e); @@ -424,7 +426,7 @@ public class StorageUIHandler { if (destroyLocalBase) { if (log.isDebugEnabled()) { - log.debug(">>> destroy local db " + localConfiguration); + log.debug(">>> destroy local db " + localDataSource); } if (!localDbIsSane) { // la base locale n'est pas saine, on va supprimer directement @@ -443,7 +445,7 @@ public class StorageUIHandler { } } else { try { - localDataSourceService.destroy(); + localDataSource.destroy(); } catch (Exception e) { ErrorDialogUI.showError(e); if (log.isErrorEnabled()) { @@ -455,27 +457,26 @@ public class StorageUIHandler { } // suppression du storage precedent - if (sourceConfiguration != null) { + if (currentDataSource != null) { if (log.isDebugEnabled()) { - log.debug(">>> close main storage " + sourceConfiguration); + log.debug(">>> close main storage " + currentDataSource); } // on doit fermer le storage en cours d'utilisation - DataSourceService dataSourceService = observeContext.newService(DataSourceService.class); - dataSourceService.close(); + currentDataSource.close(); } // suppression du storage local - if (localConfiguration != null && localConfiguration != sourceConfiguration) { + if (localDataSource != null && localDataSource != localDataSource) { // ce cas peut arriver lorsque l'on fait juste une backup // sans vouloir supprimer la base locale if (log.isDebugEnabled()) { - log.debug(">>> close local storage " + localConfiguration); + log.debug(">>> close local storage " + localDataSource); } // on doit fermer le storage local ouvert - localDataSourceService.close(); + localDataSource.close(); } - localConfiguration = null; + localDataSource = null; if (log.isDebugEnabled()) { log.debug("Will create new storage..."); @@ -485,17 +486,16 @@ public class StorageUIHandler { try { - sourceConfiguration = newDataSourceConfigurationFromModel(model, t("observe.storage.label.local")); + ObserveDataSourceConfiguration dataSourceConfiguration = newDataSourceConfigurationFromModel(model, t("observe.storage.label.local")); + currentDataSource = new ObserveSwingDataSource(dataSourceConfiguration); // ouverture du nouveau storage - DataSourceService dataSourceService = observeContext.newService(sourceConfiguration, DataSourceService.class); - ObserveDataSourceConnection sourceConnection = dataSourceService.open(sourceConfiguration); + currentDataSource.open(); - observeContext.setObserveDataSourceConfiguration(sourceConfiguration); - observeContext.setObserveDataSourceConnection(sourceConnection); + observeContext.setDataSource(currentDataSource); if (log.isInfoEnabled()) { - log.info(">>> main storage opened " + sourceConfiguration.getLabel()); + log.info(">>> main storage opened " + currentDataSource.getConfiguration().getLabel()); } if (model.isStoreRemoteConfig()) { @@ -516,7 +516,7 @@ public class StorageUIHandler { } } if (log.isInfoEnabled()) { - log.info(">>> create initial dump with " + localConfiguration + + log.info(">>> create initial dump with " + localDataSource + " in " + f); } try { @@ -600,19 +600,22 @@ public class StorageUIHandler { * <p/> * <b>Note:</b> Si ce paramètre vaut {@code null}, on export tout. * - * @param service le service locale qui encapsule la base locale + * @param dataSource la source de donnée qui encapsule la base locale * @param dst le fichier de sauvegarde - * @param marees les marees a exporter (si {@code null} on exporte tout) + * @param trips les marees a exporter (si {@code null} on exporte tout) */ - public void backupLocalDatabase(DataSource service, + public void backupLocalDatabase(ObserveSwingDataSource dataSource, File dst, - Set<String> marees) { - if (marees == null) { + Set<IdDto> trips) { + + DataSourceDumpProducerService dumpService = dataSource.newService(DataSourceDumpProducerService.class); + + + if (trips == null) { if (log.isInfoEnabled()) { log.info("will export all datas."); } - // FIXME - //backupLocalDatabase(service, dst); + backupLocalDatabase(dumpService, dst); return; } if (dst == null) { @@ -620,55 +623,28 @@ public class StorageUIHandler { "file where to backup can not be null"); } if (log.isInfoEnabled()) { - log.info("will export " + marees.size() + " marees to " + dst); + log.info("will export " + trips.size() + " marees to " + dst); } if (log.isDebugEnabled()) { - log.debug(marees); + log.debug(trips); } // on doit dumper la base distante dans une base h2 et en faire // la sauvegarde - ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); - String[] mareeIds = new String[marees.size()]; + ImmutableSet<String> tripIds = ImmutableSet.copyOf(Iterables.transform(trips, IdDtos.getIdFunction())); - int index = 0; - for (String m : marees) { - mareeIds[index++] = m; - } + byte[] dump = dumpService.getDataDump(tripIds); - DataSource tempStorage = null; - try { - //FIXME -// tempStorage = ObserveServiceHelper.newEmptyTempStorage( -// config, -// t("observe.storage.label.backup"), -// "tmpBackup_" + dst.getName() -// ); -// -// tempStorage.doOpen(); -// -// replicationService.replicateReferentiel(service, tempStorage); -// replicationService.replicateData(service, tempStorage, mareeIds); + try (FileOutputStream fileOutputStream = new FileOutputStream(dst)) { - tempStorage.storeDB(dst); + IOUtils.write(dump, fileOutputStream); - } catch (Exception e) { + } catch (IOException e) { ErrorDialogUI.showError(e); if (log.isErrorEnabled()) { log.error(e); } - } finally { - if (tempStorage != null) { - try { - tempStorage.doClose(true); - } catch (DataSourceException e) { - ErrorDialogUI.showError(e); - if (log.isErrorEnabled()) { - log.error(e); - } - } - } } } @@ -700,6 +676,9 @@ public class StorageUIHandler { case USE_REMOTE: computeConnectRemoteReport(selectDataUI, model, sb); break; + case USE_SERVER: + computeConnectServerReport(selectDataUI, model, sb); + break; } } return sb.toString(); @@ -779,9 +758,16 @@ public class StorageUIHandler { case IMPORT_REMOTE_STORAGE: addTag("h3", sb, t("observe.storage.report.action.import.remote.referentiel")); - //FIXME -// addTag("pre", sb, model.getPgConfig().toString()); + + addTag("pre", sb, model.getPgConfig().toString()); break; + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.referentiel")); + + addTag("pre", sb, model.getRestConfig().toString()); + break; + case EMPTY: break; case IMPORT_LOCAL_STORAGE: @@ -800,10 +786,9 @@ public class StorageUIHandler { addTag("h3", sb, t("observe.storage.report.selected.localStorageFile")); addOpenTag("ul", sb); - //FIXME -// addTag("li", sb, -// model.getH2Config().getDataDirectory().getAbsolutePath() -// ); + addTag("li", sb, + model.getH2Config().getDirectory().getAbsolutePath() + ); addCloseTag("ul", sb); computeCanMigrateAction(model, sb); @@ -819,8 +804,8 @@ public class StorageUIHandler { addTag("hr", sb, ""); addTag("h3", sb, t("observe.storage.report.selected.remoteStorage")); - //FIXME -// addTag("pre", sb, model.getPgConfig().toString()); + + addTag("pre", sb, model.getPgConfig().toString()); computeCanMigrateAction(model, sb); } else { @@ -828,8 +813,7 @@ public class StorageUIHandler { addTag("hr", sb, ""); addTag("h3", sb, t("observe.storage.report.selected.remoteStorage")); - //FIXME -// addTag("pre", sb, model.getPgConfig().toString()); + addTag("pre", sb, model.getPgConfig().toString()); if (ObstunaAdminAction.CREATE == action) { @@ -846,9 +830,14 @@ public class StorageUIHandler { case IMPORT_REMOTE_STORAGE: addTag("h3", sb, - t("observe.storage.report.action.import.remote.referentiel")); - //FIXME -// addTag("pre", sb, model.getCentralSourceModel().getPgConfig().toString()); + t("observe.storage.report.action.import.remote.referentiel")); + addTag("pre", sb, model.getCentralSourceModel().getPgConfig().toString()); + break; + + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.referentiel")); + addTag("pre", sb, model.getCentralSourceModel().getRestConfig().toString()); break; } @@ -874,8 +863,13 @@ public class StorageUIHandler { case IMPORT_REMOTE_STORAGE: addTag("h3", sb, t("observe.storage.report.action.import.remote.data")); - //FIXME -// addTag("pre", sb, model.getDataSourceModel().getPgConfig().toString()); + addTag("pre", sb, model.getDataSourceModel().getPgConfig().toString()); + break; + + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.data")); + addTag("pre", sb, model.getDataSourceModel().getRestConfig().toString()); break; } @@ -900,6 +894,106 @@ public class StorageUIHandler { } } + protected void computeConnectServerReport(SelectDataUI tabUI, + StorageUIModel model, + StringBuilder sb) { + + ObstunaAdminAction action = model.getAdminAction(); + if (action == null) { + addTag("h2", sb, t("observe.storage.report.action.connect.remote")); + addTag("hr", sb, ""); + + addTag("h3", sb, t("observe.storage.report.selected.remoteStorage")); + + addTag("pre", sb, model.getRestConfig().toString()); + + computeCanMigrateAction(model, sb); + } else { + addTag("h2", sb, t(action.getLabel())); + addTag("hr", sb, ""); + + addTag("h3", sb, t("observe.storage.report.selected.remoteStorage")); + addTag("pre", sb, model.getRestConfig().toString()); + + if (ObstunaAdminAction.CREATE == action) { + + if (model.isImportReferentiel()) { + switch (model.getReferentielImportMode()) { + + case IMPORT_EXTERNAL_DUMP: + addTag("h3", sb, + t("observe.storage.report.action.referentiel.import.backup")); + addOpenTag("ul", sb); + addTag("li", sb, model.getCentralSourceModel().getDumpFile().getAbsolutePath()); + addCloseTag("ul", sb); + break; + + case IMPORT_REMOTE_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.remote.referentiel")); + addTag("pre", sb, model.getCentralSourceModel().getPgConfig().toString()); + break; + + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.referentiel")); + addTag("pre", sb, model.getCentralSourceModel().getRestConfig().toString()); + break; + } + + } else { + + addTag("h3", sb, + t("observe.storage.report.action.no.referentiel.import")); + + } + + if (model.isImportData()) { + + switch (model.getDataImportMode()) { + + case IMPORT_EXTERNAL_DUMP: + addTag("h3", sb, + t("observe.storage.report.action.data.import.backup")); + addOpenTag("ul", sb); + addTag("li", sb, model.getDataSourceModel().getDumpFile().getAbsolutePath()); + addCloseTag("ul", sb); + break; + + case IMPORT_REMOTE_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.remote.data")); + addTag("pre", sb, model.getDataSourceModel().getPgConfig().toString()); + break; + + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.data")); + addTag("pre", sb, model.getDataSourceModel().getRestConfig().toString()); + break; + } + + try { + computeImportDataReport(model, sb); + } catch (DataSourceException e) { + throw new RuntimeException("Could not render data to import", e); + } + + } else { + + addTag("h3", sb, + t("observe.storage.report.action.no.data.import")); + + } + + } else { + computeCanMigrateAction(model, sb); + } + + computeSecurityreport(model, sb); + } + } + protected void computeBackupReport(SelectDataUI stepUI, StorageUIModel model, StringBuilder sb) { @@ -1117,7 +1211,7 @@ public class StorageUIHandler { sb.append("</").append(tag).append('>'); } - public void initSelectData(StorageUI ui, DataSource source, boolean selectAll) { + public void initSelectData(StorageUI ui, ObserveSwingDataSource source, boolean selectAll) { StorageUIModel model = ui.getModel(); @@ -1125,20 +1219,19 @@ public class StorageUIHandler { Preconditions.checkState(source != null, "Can't select data on a null dataSource"); - //FIXME -// DataSelectionModel dataModel = new DataSelectionModel(); -// dataModel.setUseData(true); -// dataModel.setUseOpenData(true); -// dataModel.setUseReferentiel(false); -// -// DataSelectionModel.populate(dataModel, ObserveContext.get().getDataService(), source); -// -// if (selectAll) { -// -// dataModel.addAllSelectedData(); -// -// } -// + DataSelectionModel dataModel = new DataSelectionModel(); + dataModel.setUseData(true); + dataModel.setUseOpenData(true); + dataModel.setUseReferentiel(false); + + DataSelectionModel.populate(dataModel, source); + + if (selectAll) { + + dataModel.addAllSelectedData(); + + } + // positionnement du model de selection de données // dans le model du wizard // model.setSelectDataModel(dataModel); @@ -1174,23 +1267,21 @@ public class StorageUIHandler { try { // Creation de la data source de lecture des données à sélectionner - DataSourceConfig dataSourceConfig = model.toImportDataSourceConfig(); - Preconditions.checkState(dataSourceConfig != null, "Can't select data on a null dataSource"); + ObserveSwingDataSource importDataSource = model.toImportDataSourceConfig(); - //FIXME -// DataSource source = DataSourceFactory.newService(dataSourceConfig); -// -// try { -// -// source.doOpen(); -// -// model.checkImportDbVersion(source); -// -// initSelectData(ui, source, false); -// -// } finally { -// source.doClose(false); -// } + Preconditions.checkState(importDataSource != null, "Can't select data on a null dataSource"); + + try { + + importDataSource.open(); + + model.checkImportDbVersion(importDataSource.getConnection()); + + initSelectData(ui, importDataSource, false); + + } finally { + importDataSource.close(); + } } catch (Exception e) { if (log.isErrorEnabled()) { 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 dfbdd55..2914fc0 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 @@ -21,13 +21,10 @@ */ package fr.ird.observe.ui.storage; -import com.google.common.collect.Sets; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.util.SecurityModel; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.db.constantes.DbMode; @@ -38,22 +35,22 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; -import fr.ird.observe.services.dto.ReferenceDto; -import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; 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; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.util.FileUtil; import org.nuiton.util.version.Version; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; @@ -170,7 +167,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { protected boolean canUseServerService = true; /** le modèle de sélection de données (utilisé pour les exports) */ - protected Set<ReferenceDto> selectDataModel; + protected DataSelectionModel selectDataModel; /** le modèle de sécurité (utilisé pour la mise à jour sécurité sur base distante) */ protected SecurityModel securityModel; @@ -229,7 +226,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { StorageStep.BACKUP, StorageStep.CONFIRM ); - selectDataModel = Sets.newHashSet(); + selectDataModel = new DataSelectionModel(); securityModel = new SecurityModel(); connexionStatus = ConnexionStatus.UNTESTED; @@ -264,6 +261,19 @@ public class StorageUIModel extends WizardModel<StorageStep> { EMPTY_PASSWORD, null ); + + PropertyChangeListener clearStatus = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + setConnexionStatus(ConnexionStatus.UNTESTED); + } + }; + + addPropertyChangeListener(REMOTE_URL_ROPERTY_NAME, clearStatus); + addPropertyChangeListener(REMOTE_LOGIN_ROPERTY_NAME, clearStatus); + addPropertyChangeListener(REMOTE_PASSWORD_PROPERTY_NAME, clearStatus); + addPropertyChangeListener(SERVER_DATABASE_PROPERTY_NAME, clearStatus); + addPropertyChangeListener(USE_SSL_PROPERTY_NAME, clearStatus); } /** @@ -406,7 +416,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { * @since 2.0 */ public void initFromPreviousConfig(JAXXContext context, - DataSourceConfig previousConfig) { + ObserveDataSourceConfiguration previousConfig) { if (previousConfig == null) { @@ -685,10 +695,14 @@ public class StorageUIModel extends WizardModel<StorageStep> { return adminAction; } - public Set<ReferenceDto> getSelectDataModel() { + public DataSelectionModel getSelectDataModel() { return selectDataModel; } + public void setSelectDataModel(DataSelectionModel selectDataModel) { + this.selectDataModel = selectDataModel; + } + public CreationMode getReferentielImportMode() { return referentielImportMode; } @@ -879,23 +893,20 @@ public class StorageUIModel extends WizardModel<StorageStep> { } break; case CONFIG: - if (dbMode == DbMode.USE_REMOTE) { -// validate = pgConfig.isValid(); + if (dbMode == DbMode.USE_REMOTE || dbMode == DbMode.USE_SERVER) { + validate = ConnexionStatus.SUCCESS.equals(getConnexionStatus()); //FIXME Il faut savoir si l'utilisateur est le //FIXME propriétaire de la base -// if (validate) { -// if (getAdminAction() != null) { -// -// // il faut des droits rw sur la base distante -// validate = pgConfig.isCanReadReferentiel() && -// pgConfig.isCanWriteReferentiel() && -// pgConfig.isCanWriteData() && -// pgConfig.isCanReadData(); -// } -// } - } else { - //FIXME -// validate = h2Config.isValid(); + if (validate) { + if (getAdminAction() != null) { + + // il faut des droits rw sur la base distante + validate = connection.canReadReferential() && + connection.canWriteReferential() && + connection.canWriteData() && + connection.canReadData(); + } + } } break; case CONFIG_REFERENTIEL: @@ -913,10 +924,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { // external dumb must be filled File dumpFile = centralSourceModel.getDumpFile(); validate = dumpFile != null && - dumpFile.exists() && - dumpFile.getName().endsWith(".sql.gz"); + dumpFile.exists() && + dumpFile.getName().endsWith(".sql.gz"); break; case IMPORT_REMOTE_STORAGE: + case IMPORT_SERVER_STORAGE: // remote db connexion must be valid validate = centralSourceModel.isValid(); @@ -928,10 +940,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } if (validate) { - // must be able to read references - String dbLabel = t("observe.storage.label.reference.import.db"); - //FIXME -// validate = centralSourceModel.toPostgresStorageConfig(dbLabel).isCanReadReferentiel(); + validate = centralSourceModel.getConnection().canReadReferential(); } break; } @@ -953,8 +962,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { // external dumb must be filled File dumpFile = dataSourceModel.getDumpFile(); validate = dumpFile != null && - dumpFile.exists() && - dumpFile.getName().endsWith(".sql.gz"); + dumpFile.exists() && + dumpFile.getName().endsWith(".sql.gz"); break; case IMPORT_REMOTE_STORAGE: // remote db connexion must be valid @@ -964,29 +973,28 @@ public class StorageUIModel extends WizardModel<StorageStep> { // check remote db != remote import db validate = !dataSourceModel.getRemoteUrl().equals(getRemoteUrl()); + } if (validate) { - // must be able to read data - String dbLabel = t("observe.storage.label.data.import.db"); - //FIXME -// validate = dataSourceModel.toPostgresStorageConfig(dbLabel).isCanReadData(); + validate = centralSourceModel.getConnection().canReadData(); + } + break; } break; case BACKUP: validate = !doBackup || - backupFile != null && - !backupFile.exists() && - backupFile.getName().endsWith(".sql.gz"); + backupFile != null && + !backupFile.exists() && + backupFile.getName().endsWith(".sql.gz"); break; case SELECT_DATA: // chemit 20100525 : aucune contrainte dans ce cas - //FIXME -// validate = selectDataModel != null; + validate = !selectDataModel.isEmpty(); break; case ROLES: @@ -1021,13 +1029,12 @@ public class StorageUIModel extends WizardModel<StorageStep> { validate(StorageStep.CONFIG); break; case USE_REMOTE: + case USE_SERVER: result = validate(StorageStep.CONFIG); break; case USE_LOCAL: //TODO A tester... - //FIXME -// result = h2Config.isValid() && -// h2Config.isStorageExists(); + result = h2Config.getDatabaseFile().exists(); break; } } @@ -1183,7 +1190,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (oldValue != dataImportMode) { // reset selected data to import - selectDataModel.clear(); + setSelectDataModel(null); updateUniverse(); } @@ -1511,15 +1518,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { dst.setCanUseLocalService(isCanUseLocalService()); dst.setCanUseRemoteService(isCanUseRemoteService()); dst.setCanUseServerService(isCanUseServerService()); - //FIXME -// pgConfig.copyTo(dst.pgConfig); - //FIXME -// h2Config.copyTo(dst.h2Config); - //FIXME -// dst.setSelectDataModel(getSelectDataModel()); + dst.fromStorageConfig(h2Config); + dst.fromStorageConfig(pgConfig); + dst.fromStorageConfig(restConfig); + dst.setSelectDataModel(getSelectDataModel()); dst.setSecurityModel(getSecurityModel()); - //FIXME -// dst.setPgInstall(getPgInstall()); dst.setAdminAction(getAdminAction()); } @@ -1538,18 +1541,21 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ public boolean testRemote() { - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - DataSourceService dataSourceService = applicationContext.newService(pgConfig, DataSourceService.class); + ObserveSwingDataSource dataSource = new ObserveSwingDataSource(pgConfig); boolean result = false; connexionStatusError = ""; try { - dataSourceService.checkCanConnect(pgConfig); + dataSource.checkCanConnect(); + + dataSource.open(); - ObserveDataSourceConnection dataSourceConnection = dataSourceService.open(pgConfig); + ObserveDataSourceConnection connection = dataSource.getConnection(); - if (dataSourceConnection.getVersion().equals(getModleVersion())) { + Version versionDataSource = connection.getVersion(); + + if (versionDataSource.equals(getModleVersion())) { setConnexionStatus(ConnexionStatus.SUCCESS); @@ -1557,7 +1563,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } else { - connexionStatusError = t("observe.storage.error.dbVersionMismatch", dataSourceConnection.getVersion(), getModleVersion()); + connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, getModleVersion()); setConnexionStatus(ConnexionStatus.FAILED); @@ -1574,6 +1580,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { connexionStatusError = e.getMessage(); setConnexionStatus(ConnexionStatus.FAILED); + } finally { + if (dataSource.isOpen()) { + dataSource.close(); + } } return result; @@ -1583,33 +1593,16 @@ public class StorageUIModel extends WizardModel<StorageStep> { return connexionStatusError; } - public boolean isPgConfigVersionMatch() { - //FIXME -// return getModleVersion().equals(pgConfig.getVersion()); - return false; - } - public void setSecurityModel(SecurityModel securityModel) { this.securityModel = securityModel; } -// public void setPgInstall(PGInstall pgInstall) { -// this.pgInstall = pgInstall; -// if (pgInstall != null) { -// this.pgInstall.init(pgConfig, securityModel, false); -// } -// } - public boolean isShowMigrationSql() { - //FIXME -// return pgConfig.isShowMigrationSql(); - return false; + return pgConfig.isShowMigrationSql(); } public boolean isShowMigrationProgression() { - //FIXME -// return pgConfig.isShowMigrationProgression(); - return false; + return pgConfig.isShowMigrationProgression(); } public void setConnexionStatus(ConnexionStatus connexionStatus) { @@ -1618,9 +1611,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, oldValue, connexionStatus); } - public void checkImportDbVersion(DataSource importDatasource) throws DataSourceException { + public void checkImportDbVersion(ObserveDataSourceConnection connection) { - Version importServiceDbVersion = importDatasource.getDbVersion(); + Version importServiceDbVersion = connection.getVersion(); Version currentDbVersion = getModleVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); @@ -1628,9 +1621,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { } - public DataSourceConfig toImportReferentielSourceConfig() { + public DataSourceCreateConfigurationDto toImportReferentielSourceConfig() { - DataSourceConfig importReferenceConfig; + DataSourceCreateConfigurationDto importReferenceConfig; if (isImportReferentiel()) { @@ -1640,29 +1633,44 @@ public class StorageUIModel extends WizardModel<StorageStep> { case IMPORT_EXTERNAL_DUMP: - // import external dump referentiel + importReferenceConfig = new DataSourceCreateConfigurationDto(); + + try (FileInputStream inputStream = new FileInputStream(dumpFile)) { + + byte[] bytes = IOUtils.toByteArray(inputStream); + + importReferenceConfig.setImportDatabase(bytes); - File tempDirectory; - try { - tempDirectory = FileUtil.createTempDirectory("obstunaReferentielImport", ""); } catch (IOException e) { - throw new RuntimeException("Could not create new temporary directory", e); - } -//FIXME -// importReferenceConfig = DataSourceFactory.newH2ConfigFromDump(dbLabel, -// tempDirectory, -// getCentralSourceModel().toH2StorageConfig(dbLabel).getDbDump(), -// "sa", -// new char[]{'s', 'a'}, -// false); + throw new RuntimeException("Could not read dump file", e); + + } break; case IMPORT_REMOTE_STORAGE: // import referentiel from a remote db - //FIXME -// importReferenceConfig = getCentralSourceModel().toPostgresStorageConfig(dbLabel); + ObserveDataSourceConfigurationTopiaPG pgConfig = getCentralSourceModel().toPGStorageConfig(dbLabel); + + pgConfig.setCanMigrate(false); + + importReferenceConfig = new DataSourceCreateConfigurationDto(); + + importReferenceConfig.setImportReferentialDataSourceConfiguration(pgConfig); + + + break; + + case IMPORT_SERVER_STORAGE: + + // import referentiel from a server db + ObserveDataSourceConfigurationRest restConfig = getCentralSourceModel().toRestStorageConfig(dbLabel); + + importReferenceConfig = new DataSourceCreateConfigurationDto(); + + importReferenceConfig.setImportReferentialDataSourceConfiguration(restConfig); + break; @@ -1670,9 +1678,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { throw new IllegalStateException("Can't come here"); } -//FIXME -// importReferenceConfig.setCanMigrate(false); - importReferenceConfig = null; } else { @@ -1685,9 +1690,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { } - public DataSourceConfig toImportDataSourceConfig() { + public ObserveSwingDataSource toImportDataSourceConfig() { - DataSourceConfig dataSourceConfig; + ObserveSwingDataSource importDataSource; if (isImportData()) { @@ -1697,43 +1702,63 @@ public class StorageUIModel extends WizardModel<StorageStep> { case IMPORT_EXTERNAL_DUMP: - File tempDirectory; - try { - tempDirectory = FileUtil.createTempDirectory("obstunaDataImport", ""); - } catch (IOException e) { - throw new RuntimeException("Could not create new temporary directory", e); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + + importDataSource = context.createDataSourceH2Temp(dbLabel); + + DataSourceCreateConfigurationDto createConfigurationDto = new DataSourceCreateConfigurationDto(); + + try (FileInputStream inputStream = new FileInputStream(dumpFile)) { + + byte[] bytes = IOUtils.toByteArray(inputStream); + + createConfigurationDto.setImportDatabase(bytes); + + importDataSource.create(createConfigurationDto); + + importDataSource.close(); + + } catch (Exception e) { + + throw new RuntimeException("Could not read dump file", e); + } -//FIXME -// dataSourceConfig = DataSourceFactory.newH2ConfigFromDump(dbLabel, -// tempDirectory, -// getDataSourceModel().toH2StorageConfig(dbLabel).getDbDump(), -// "sa", -// new char[]{'s', 'a'}, -// false); break; case IMPORT_REMOTE_STORAGE: -//FIXME -// dataSourceConfig = getDataSourceModel().toPostgresStorageConfig(dbLabel); + + // import referentiel from a remote db + ObserveDataSourceConfigurationTopiaPG pgConfig = getCentralSourceModel().toPGStorageConfig(dbLabel); + + pgConfig.setCanMigrate(false); + + importDataSource = new ObserveSwingDataSource(pgConfig); + + break; + + case IMPORT_SERVER_STORAGE: + + // import referentiel from a server db + ObserveDataSourceConfigurationRest restConfig = getCentralSourceModel().toRestStorageConfig(dbLabel); + + importDataSource = new ObserveSwingDataSource(restConfig); break; default: throw new IllegalStateException("Can't come here"); } - //FIXME -// dataSourceConfig.setCanMigrate(false); - } else { - dataSourceConfig = null; + importDataSource = null; } - //FIXME -// return dataSourceConfig; - return null; + return importDataSource; } + public ObserveDataSourceConnection getConnection() { + return connection; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css index aee7ca0..cfcb07b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css @@ -86,6 +86,7 @@ } #remoteUseSsl { + visible: {DbMode.USE_REMOTE.equals(model.getDbMode())}; text:"observe.storage.remote.useSll"; selected:{model.isUseSsl()}; } diff --git a/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java similarity index 60% rename from observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java rename to observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java index 5877ba4..f20ad4f 100644 --- a/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java @@ -19,36 +19,34 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.db.model; - -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.constants.DataSourceState; -import fr.ird.observe.entities.Entities; -import fr.ird.observe.entities.Trip; -import fr.ird.observe.entities.Trips; -import fr.ird.observe.entities.longline.TripLongline; -import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.entities.referentiel.Programs; -import fr.ird.observe.entities.seine.TripSeine; +package fr.ird.observe.ui.storage.tabs; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramDtos; +import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.ReferentialDtos; +import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.TripSeineService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.util.TopiaEntityHelper; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.TreeMap; /** * Un modèle pour représenter la sélection de données. @@ -59,72 +57,54 @@ import java.util.TreeMap; public class DataSelectionModel implements Serializable { public static void populate(DataSelectionModel model, - DataService service, - DataSource source) throws Exception { + ObserveSwingDataSource source) throws Exception { - source.checkState(DataSourceState.OPEN); + Preconditions.checkState(source.isOpen()); - Map<String, List<String>> datas = new HashMap<String, List<String>>(); + Map<ReferenceDto<ProgramDto>, List<IdDto>> datas = Maps.newHashMap(); - List<Program> programs = service.getAllProgramStub(source); - for (Program program : programs) { + ReferentialService referentialService = source.newService(ReferentialService.class); + TripSeineService tripSeineService = source.newService(TripSeineService.class); + TripLonglineService tripLonglineService = source.newService(TripLonglineService.class); - if (Programs.isProgramSeine(program)) { - List<TripSeine> trips = service.getTripSeineStubByProgram(source, program.getTopiaId()); - populate(model, program, trips, datas); - } + ReferenceSetDto<ProgramDto> programSet = referentialService.getReferentialReferenceSet(ProgramDto.class); - if (Programs.isProgramLongline(program)) { - List<TripLongline> trips = service.getTripLonglineStubByProgram(source, program.getTopiaId()); - populate(model, program, trips, datas); - } - } - model.setDatas(datas); - } + for (ReferenceDto<ProgramDto> program : programSet.getReference()) { - protected static <T extends Trip> void populate(DataSelectionModel model, - Program program, - List<T> trips, - Map<String, List<String>> datas) { + List<IdDto> idDtos = Lists.newArrayList(); - model.cacheEntity(program); + if (ProgramDtos.isProgramSeine(program)) { - if (!trips.isEmpty()) { - List<String> tripIds = new ArrayList<String>(); + idDtos.addAll(tripSeineService.getTripSeineByProgram(program.getId())); - if (model.isUseOpenData()) { + } else if (ProgramDtos.isProgramLongline(program)) { - // ajout de toutes les marées ouvertes ou non - for (T trip : trips) { - trip.setProgram(program); - model.cacheEntity(trip); - tripIds.add(trip.getTopiaId()); - } + idDtos.addAll(tripLonglineService.getTripLonglineStubByProgram(program.getId())); - } else { + } - // ajout de toutes les marées non ouvertes - for (T trip : trips) { - trip.setProgram(program); - if (!trip.isOpen()) { - model.cacheEntity(trip); - tripIds.add(trip.getTopiaId()); - } - } + populate(model, program, idDtos, datas); - } + } + model.setDatas(datas); - if (!tripIds.isEmpty()) { + } - datas.put(program.getTopiaId(), tripIds); - if (log.isDebugEnabled()) { - log.debug("Add program " + program.getLabel1() + " with " + tripIds.size() + " trip(s)."); - } + protected static void populate(DataSelectionModel model, + ReferenceDto<ProgramDto> program, + List<IdDto> trips, + Map<ReferenceDto<ProgramDto>, List<IdDto>> datas) { + if (!trips.isEmpty()) { + + datas.put(program, trips); + if (log.isDebugEnabled()) { + log.debug("Add program " + program.getPropertyValue(ProgramDto.PROPERTY_LABEL1) + " with " + trips.size() + " trip(s)."); } + } } @@ -156,25 +136,16 @@ public class DataSelectionModel implements Serializable { protected boolean useReferentiel; /** la liste des programs utilisables (qui ont des marees) */ - protected transient Map<String, List<String>> datas; - - /** - * Le cache des entités chargées pour construire le modèle de sélection. - * - * Ces entités pourront ensuite être injectées dans les noeuds sans avoir à les recharger. - * - * @since 4.0 - */ - protected final Map<String, ? super TopiaEntity> entityCache; + protected transient Map<ReferenceDto<ProgramDto>, List<IdDto>> datas; /** la liste des marees selectionnee */ - protected transient Set<String> selectedData; + protected transient Set<IdDto> selectedData; /** la liste des referentiels possibles */ - protected final Set<Class<?>> referentiel; + protected final Set<Class<? extends ReferentialDto>> referentiel; /** la liste des referentiels selectionnes */ - protected final Set<Class<?>> selectedReferentiel; + protected final Set<Class<? extends ReferentialDto>> selectedReferentiel; /** nb marees */ protected int nbTrips; @@ -190,12 +161,9 @@ public class DataSelectionModel implements Serializable { public DataSelectionModel() { pcs = new PropertyChangeSupport(this); - Class<?>[] classes = TopiaEntityHelper.getContracts(Entities.REFERENCE_ENTITIES); - List<Class<?>> list = Arrays.asList(classes); - referentiel = new HashSet<Class<?>>(list); - selectedReferentiel = new HashSet<Class<?>>(); + referentiel = Sets.newHashSet(ReferentialDtos.REFERENCE_DTOS); + selectedReferentiel = Sets.newHashSet(); nbReferentiels = referentiel.size(); - entityCache = new TreeMap<String, TopiaEntity>(); } public boolean isUseReferentiel() { @@ -224,13 +192,6 @@ public class DataSelectionModel implements Serializable { return true; } - protected void cacheEntity(TopiaEntity entity) { - entityCache.put(entity.getTopiaId(), entity); - } - - public TopiaEntity getEntityCache(String id) { - return (TopiaEntity) entityCache.get(id); - } public boolean isReferentielEmpty() { return selectedReferentiel.isEmpty(); @@ -248,42 +209,41 @@ public class DataSelectionModel implements Serializable { return selectedData != null && selectedData.size() == nbTrips; } - public Set<Class<?>> getSelectedReferentiel() { + public Set<Class<? extends ReferentialDto>> getSelectedReferentiel() { return selectedReferentiel; } - public Map<String, List<String>> getDatas() { + public Map<ReferenceDto<ProgramDto>, List<IdDto>> getDatas() { if (datas == null) { - datas = new HashMap<String, List<String>>(); + datas = Maps.newHashMap(); } return datas; } - public Set<String> getSelectedData() { + public Set<IdDto> getSelectedData() { if (selectedData == null) { - selectedData = new HashSet<String>(); + selectedData = Sets.newHashSet(); } return selectedData; } - public Map<String, List<String>> getSelectedDataByProgram() { + public Map<ReferenceDto<ProgramDto>, List<IdDto>> getSelectedDataByProgram() { if (datas == null || selectedData == null || selectedData.isEmpty()) { return Collections.emptyMap(); } - Map<String, List<String>> result = - new HashMap<String, List<String>>(datas.size()); + Map<ReferenceDto<ProgramDto>, List<IdDto>> result = Maps.newHashMap(); - for (String m : selectedData) { + for (IdDto idDto : selectedData) { // on recherche son program - for (String p : datas.keySet()) { - if (datas.get(p).contains(m)) { - List<String> trips = result.get(p); - if (trips == null) { - trips = new ArrayList<String>(); - result.put(p, trips); + for (ReferenceDto<ProgramDto> p : datas.keySet()) { + if (datas.get(p).contains(idDto)) { + List<IdDto> idDtos = result.get(p); + if (idDtos == null) { + idDtos = Lists.newArrayList(); + result.put(p, idDtos); } - trips.add(m); + idDtos.add(idDto); break; } } @@ -291,38 +251,32 @@ public class DataSelectionModel implements Serializable { return result; } - public boolean isSelectedData(String id) { + public boolean isSelectedData(IdDto idDto) { - if (Trips.isTripId(id)) { + boolean result; - // recherche directe sur les ids de marees - return getSelectedData().contains(id); - } - - if (id.startsWith(Program.class.getName())) { - // on doit verifier que toutes les marees du program sont sélectionnées - List<String> tripIds = datas.get(id); - if (CollectionUtils.isEmpty(tripIds)) { + if (idDto instanceof ReferenceDto) { - // pas de marées - return false; - } + List<IdDto> trips = datas.get(idDto); + result = ! CollectionUtils.isEmpty(trips); - for (String tripId : tripIds) { - if (!isSelectedData(tripId)) { + for (IdDto trip : trips) { + if (!getSelectedData().contains(trip)) { // au moins une marée non sélectionnée - return false; + result = false; } } + } else { + + // recherche directe sur les ids de marees + result = getSelectedData().contains(idDto); - // toutes les marées sont sélectionnée - return true; } // ne devrait pas arrivée - return false; + return result; } @@ -346,7 +300,7 @@ public class DataSelectionModel implements Serializable { firePropertyChange(PROPERTY_USE_OPEN_DATA, useOpenData); } - public void addSelectedReferentiel(Class<?> type) { + public void addSelectedReferentiel(Class<? extends ReferentialDto> type) { checkReferentielType(type); if (log.isDebugEnabled()) { log.debug("Add referentiel type " + type); @@ -381,13 +335,13 @@ public class DataSelectionModel implements Serializable { firePropertyChange(PROPERTY_SELECTED_REFERENTIEL, selectedReferentiel); } - public void setDatas(Map<String, List<String>> datas) { + public void setDatas(Map<ReferenceDto<ProgramDto>, List<IdDto>> datas) { this.datas = datas; // on compte le count de marées totale int nbTrips = 0; if (datas != null) { - for (List<String> marees : datas.values()) { + for (List<IdDto> marees : datas.values()) { nbTrips += marees.size(); } } @@ -400,26 +354,24 @@ public class DataSelectionModel implements Serializable { firePropertyChange(PROPERTY_DATAS, datas); } - public void addSelectedData(String id) { + public void addSelectedData(IdDto idDto) { - if (Trips.isTripId(id)) { + if (idDto instanceof ReferenceDto) { + + // ajout de toutes les marées du program - // ajout d'une marée if (log.isDebugEnabled()) { - log.debug("Add Trip " + id); + log.debug("Add all trips of program " + idDto.getId()); } - getSelectedData().add(id); - } else if (id.startsWith(Program.class.getName())) { - - // ajout de toutes les marées du program + getSelectedData().addAll(datas.get(idDto)); + } else { + // ajout d'une marée if (log.isDebugEnabled()) { - log.debug("Add all trips of program " + id); + log.debug("Add Trip " + idDto.getId()); } - getSelectedData().addAll(datas.get(id)); + getSelectedData().add(idDto); } - - firePropertyChange(PROPERTY_SELECTED_DATA, selectedData); } @@ -427,28 +379,29 @@ public class DataSelectionModel implements Serializable { if (log.isDebugEnabled()) { log.debug("All all data."); } - for (List<String> p : datas.values()) { + for (List<IdDto> p : datas.values()) { getSelectedData().addAll(p); } firePropertyChange(PROPERTY_SELECTED_DATA, selectedData); } - public void removeSelectedData(String id) { - if (Trips.isTripId(id)) { + public void removeSelectedData(IdDto idDto) { - // ajout d'une marée - if (log.isDebugEnabled()) { - log.debug("Remove maree " + id); - } - getSelectedData().remove(id); - } else if (id.startsWith(Program.class.getName())) { + if (idDto instanceof ReferenceDto) { // ajout de toutes les marées du program if (log.isDebugEnabled()) { - log.debug("Remove all marees of program " + id); + log.debug("Remove all marees of program " + idDto); + } + getSelectedData().removeAll(datas.get(idDto)); + } else { + + // ajout d'une marée + if (log.isDebugEnabled()) { + log.debug("Remove maree " + idDto); } - getSelectedData().removeAll(datas.get(id)); + getSelectedData().remove(idDto); } firePropertyChange(PROPERTY_SELECTED_DATA, selectedData); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/SelectDataUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/SelectDataUI.jaxx index 4d88ef5..02679ae 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/SelectDataUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/SelectDataUI.jaxx @@ -27,7 +27,7 @@ <StorageTabUI> <import> - fr.ird.observe.business.db.DataSource + fr.ird.observe.db.ObserveSwingDataSource fr.ird.observe.ui.storage.StorageStep fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel fr.ird.observe.ui.tree.DataSelectionTreeCellRenderer @@ -45,7 +45,7 @@ public void init() { getHandler().initUI(this); } -public void initTree(DataSource dataSource) { +public void initTree(ObserveSwingDataSource dataSource) { getHandler().initTree(this, dataSource); } ]]> 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 51f0182..b245639 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 @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.storage.tabs; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.db.constantes.DbMode; @@ -396,12 +396,11 @@ public class StorageTabUIHandler { // ui.getModel().setSslCertificatFile(f); // } - public void initTree(SelectDataUI ui, DataSource source) { + public void initTree(SelectDataUI ui, ObserveSwingDataSource source) { StorageUIModel model = ui.getModel(); if (model.isUseSelectData()) { - //FIXME -// DataSelectionModel dataModel = model.getSelectDataModel(); + DataSelectionModel dataModel = model.getSelectDataModel(); ObserveTreeHelper helper = new ObserveTreeHelper(); JTree tree = ui.selectTree; helper.setUI(tree, false, null); 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 f7bbabb..12b682b 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 @@ -25,7 +25,6 @@ import com.google.common.base.Preconditions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.OpenableDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; @@ -46,9 +45,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; -import javax.swing.*; +import javax.swing.Icon; +import javax.swing.UIManager; import javax.swing.tree.DefaultTreeModel; -import java.awt.*; +import java.awt.Color; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -109,11 +109,12 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - if (source != null) { - provider = new ObserveDataProvider(source); - setDataProvider(provider); - } + // FIXME +// DataSource source = ObserveSwingApplicationContext.get().getDataSource(); +// if (source != null) { +// provider = new ObserveDataProvider(source); +// setDataProvider(provider); +// } } return provider; } 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 9f60ebe..152feaf 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 @@ -122,11 +122,12 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { protected ObserveDataProvider getDataProvider() { ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - if (source != null) { - provider = new ObserveDataProvider(source); - setDataProvider(provider); - } + // FIXME +// DataSource source = ObserveSwingApplicationContext.get().getDataSource(); +// if (source != null) { +// provider = new ObserveDataProvider(source); +// setDataProvider(provider); +// } } return provider; } 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 0c79ab5..aceeef5 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 @@ -1834,6 +1834,8 @@ observe.storage.report.action.import.backup= observe.storage.report.action.import.internal= observe.storage.report.action.import.remote.data= observe.storage.report.action.import.remote.referentiel= +observe.storage.report.action.import.server.data= +observe.storage.report.action.import.server.referentiel= observe.storage.report.action.migrate= observe.storage.report.action.no.data.import= observe.storage.report.action.no.referentiel.import= 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 14f800b..ec010ce 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 @@ -1836,6 +1836,8 @@ observe.storage.report.action.import.backup=Importar de una copia de seguridad \ observe.storage.report.action.import.internal=Importar de el último referencial \: observe.storage.report.action.import.remote.data= observe.storage.report.action.import.remote.referentiel=Imporatar el referencial de una base remota \: +observe.storage.report.action.import.server.data= +observe.storage.report.action.import.server.referentiel= observe.storage.report.action.migrate=Politica de actualización observe.storage.report.action.no.data.import= observe.storage.report.action.no.referentiel.import=No importar referencial 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 5e32df1..d85dd79 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 @@ -1829,6 +1829,8 @@ observe.storage.report.action.import.backup=Import depuis une sauvegarde \: observe.storage.report.action.import.internal=Import depuis une le dernier référentiel téléchargé \: observe.storage.report.action.import.remote.data=Import de données depuis une base distante \: observe.storage.report.action.import.remote.referentiel=Import du référentiel depuis une base distante \: +observe.storage.report.action.import.server.data= +observe.storage.report.action.import.server.referentiel= observe.storage.report.action.migrate=Politique de mise à jour observe.storage.report.action.no.data.import=Pas d'import de données observe.storage.report.action.no.referentiel.import=Pas d'import de référentiel diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java index db2972e..2d709d1 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java @@ -33,7 +33,7 @@ import org.debux.webmotion.server.render.Render; public class PingServiceController extends ObserveWebMotionController { public Render ping() { - return renderContent("ping", "text/plain"); + return renderContent("pong", "text/plain"); } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java new file mode 100644 index 0000000..ce96aa0 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java @@ -0,0 +1,30 @@ +package fr.ird.observe.services.dto.referential; + +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.constants.GearType; + +public class ProgramDtos extends AbstractProgramDtos { + + public static boolean isProgramLongLine(ProgramDto programDto) { + return GearType.longline.equals(programDto.getGearType()); + } + + public static boolean isProgramSeine(ProgramDto programDto) { + return GearType.longline.equals(programDto.getGearType()); + } + + public static boolean isProgramLongline(ReferenceDto<ProgramDto> programDtoRef) { + + GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + + return GearType.longline.equals(gearType); + } + + public static boolean isProgramSeine(ReferenceDto<ProgramDto> programDtoRef) { + + GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + + return GearType.longline.equals(gearType); + } + +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java index 85c9cf1..731191d 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java @@ -1,16 +1,122 @@ package fr.ird.observe.services.dto.referential; -import com.google.common.base.Predicate; -import fr.ird.observe.services.dto.constants.ReferenceStatus; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.Iterator; -import java.util.List; +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; +import fr.ird.observe.services.dto.referential.longline.BaitSettingStatusDto; +import fr.ird.observe.services.dto.referential.longline.BaitTypeDto; +import fr.ird.observe.services.dto.referential.longline.CatchFateLonglineDto; +import fr.ird.observe.services.dto.referential.longline.EncounterTypeDto; +import fr.ird.observe.services.dto.referential.longline.HealthnessDto; +import fr.ird.observe.services.dto.referential.longline.HookPositionDto; +import fr.ird.observe.services.dto.referential.longline.HookSizeDto; +import fr.ird.observe.services.dto.referential.longline.HookTypeDto; +import fr.ird.observe.services.dto.referential.longline.ItemHorizontalPositionDto; +import fr.ird.observe.services.dto.referential.longline.ItemVerticalPositionDto; +import fr.ird.observe.services.dto.referential.longline.LightsticksColorDto; +import fr.ird.observe.services.dto.referential.longline.LightsticksTypeDto; +import fr.ird.observe.services.dto.referential.longline.LineTypeDto; +import fr.ird.observe.services.dto.referential.longline.MaturityStatusDto; +import fr.ird.observe.services.dto.referential.longline.MitigationTypeDto; +import fr.ird.observe.services.dto.referential.longline.SensorBrandDto; +import fr.ird.observe.services.dto.referential.longline.SensorDataFormatDto; +import fr.ird.observe.services.dto.referential.longline.SensorTypeDto; +import fr.ird.observe.services.dto.referential.longline.SettingShapeDto; +import fr.ird.observe.services.dto.referential.longline.SizeMeasureTypeDto; +import fr.ird.observe.services.dto.referential.longline.StomacFullnessDto; +import fr.ird.observe.services.dto.referential.longline.TripTypeDto; +import fr.ird.observe.services.dto.referential.longline.VesselActivityLonglineDto; +import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; +import fr.ird.observe.services.dto.referential.seine.DetectionModeDto; +import fr.ird.observe.services.dto.referential.seine.ObjectFateDto; +import fr.ird.observe.services.dto.referential.seine.ObjectOperationDto; +import fr.ird.observe.services.dto.referential.seine.ObjectTypeDto; +import fr.ird.observe.services.dto.referential.seine.ObservedSystemDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForNoFishingDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForNullSetDto; +import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; +import fr.ird.observe.services.dto.referential.seine.SpeciesStatusDto; +import fr.ird.observe.services.dto.referential.seine.SurroundingActivityDto; +import fr.ird.observe.services.dto.referential.seine.TransmittingBuoyOperationDto; +import fr.ird.observe.services.dto.referential.seine.TransmittingBuoyTypeDto; +import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; +import fr.ird.observe.services.dto.referential.seine.WeightCategoryDto; +import fr.ird.observe.services.dto.referential.seine.WindDto; public class ReferentialDtos extends AbstractReferentialDtos { - /** + public static final ImmutableSet<Class<? extends ReferentialDto>> REFERENCE_COMMON_DTOS = ImmutableSet.of( + VesselSizeCategoryDto.class, + CountryDto.class, + HarbourDto.class, + VesselTypeDto.class, + VesselDto.class, + SpeciesGroupDto.class, + SpeciesDto.class, + SexDto.class, + FpaZoneDto.class, + SpeciesListDto.class, + PersonDto.class, + OceanDto.class, + OrganismDto.class, + LengthWeightParameterDto.class, + ProgramDto.class, + GearCaracteristicTypeDto.class, + GearCaracteristicDto.class, + GearDto.class); + + public static final ImmutableSet<Class<? extends ReferentialDto>> REFERENCE_SEINE_DTOS = ImmutableSet.<Class<? extends ReferentialDto>>of( + VesselActivitySeineDto.class, + SurroundingActivityDto.class, + ReasonForNullSetDto.class, + ReasonForNoFishingDto.class, + SpeciesFateDto.class, + ObjectFateDto.class, + WeightCategoryDto.class, + DetectionModeDto.class, + TransmittingBuoyOperationDto.class, + ObjectOperationDto.class, + ReasonForDiscardDto.class, + SpeciesStatusDto.class, + ObservedSystemDto.class, + TransmittingBuoyTypeDto.class, + ObjectTypeDto.class, + WindDto.class); + + public static final ImmutableSet<Class<? extends ReferentialDto>> REFERENCE_LONGLINE_DTOS = ImmutableSet.of( + BaitHaulingStatusDto.class, + BaitSettingStatusDto.class, + BaitTypeDto.class, + CatchFateLonglineDto.class, + EncounterTypeDto.class, + HealthnessDto.class, + HookPositionDto.class, + HookSizeDto.class, + HookTypeDto.class, + ItemVerticalPositionDto.class, + ItemHorizontalPositionDto.class, + LightsticksColorDto.class, + LightsticksTypeDto.class, + LineTypeDto.class, + MaturityStatusDto.class, + MitigationTypeDto.class, + SensorBrandDto.class, + SensorDataFormatDto.class, + SensorTypeDto.class, + SettingShapeDto.class, + SizeMeasureTypeDto.class, + StomacFullnessDto.class, + TripTypeDto.class, + VesselActivityLonglineDto.class, + WeightMeasureTypeDto.class); + + public static final ImmutableSet<Class<? extends ReferentialDto>> REFERENCE_DTOS = ImmutableSet.<Class<? extends ReferentialDto>>builder() + .addAll(REFERENCE_COMMON_DTOS) + .addAll(REFERENCE_SEINE_DTOS) + .addAll(REFERENCE_LONGLINE_DTOS) + .build(); + + /** * Logger. */ private static final Log log = LogFactory.getLog(ReferentialDtos.class); @@ -61,4 +167,4 @@ public class ReferentialDtos extends AbstractReferentialDtos { } }; -} //ReferentialDtos +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit fdde99f88ce4675093e402b44a50818e6193a7d1 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 08:42:39 2015 +0200 commexion au serveur de données (refs #7529) --- .../src/main/filters/observe-ui.properties | 1 + .../observe/ObserveSwingApplicationContext.java | 312 +++++++++------------ .../ObserveSwingApplicationConfigOption.java | 2 +- .../ObserveSwingApplicationConfigProvider.java | 2 +- .../fr/ird/observe/db/ObserveSwingDataSource.java | 166 ++++++++++- .../db/event/ObserveSwingDataSourceEvent.java | 83 ++++++ .../db/event/ObserveSwingDataSourceListener.java | 75 +++++ .../ObserveSwingDataSourceListenerAdapter.java | 56 ++++ .../fr/ird/observe/ui/ObserveMainUIHandler.java | 4 +- .../ui/actions/SaveStorageToFileAction.java | 4 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 12 - .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 9 +- .../observe/ui/admin/export/ExportUIHandler.java | 2 +- .../observe/ui/admin/report/ReportUIHandler.java | 2 +- .../ui/admin/synchronize/SynchronizeUIHandler.java | 2 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../ui/storage/StorageBackupUILauncher.java | 2 +- .../ird/observe/ui/storage/StorageUIHandler.java | 71 +++-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 185 ++++++++---- .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 2 +- .../ui/storage/tabs/StorageTabUIHandler.java | 26 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 95 +++---- .../ird/observe/ui/tree/ObserveDataProvider.java | 10 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 14 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 10 +- .../ui/tree/loadors/AbstractNodeChildLoador.java | 6 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 4 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 4 +- .../loadors/ActivitySeinesNodeChildLoador.java | 4 +- .../loadors/ProgramLonglineNodeChildLoador.java | 4 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 4 +- .../ui/tree/loadors/RootNodeChildLoador.java | 4 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 4 +- .../observe-application-swing_en_GB.properties | 18 +- .../observe-application-swing_es_ES.properties | 18 +- .../observe-application-swing_fr_FR.properties | 99 ++++--- .../src/main/resources/icons/action-db-server.png | Bin 0 -> 923 bytes .../web/controller/v1/PingServiceController.java | 8 +- .../ObserveWebSecurityApplicationContext.java | 2 +- .../ird/observe/services/service/PingService.java | 2 + .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 + .../observe/services/dto/gson/VersionAdapter.java | 31 ++ .../ird/observe/services/TestMethodResource.java | 2 +- 43 files changed, 906 insertions(+), 459 deletions(-) diff --git a/observe-application-swing/src/main/filters/observe-ui.properties b/observe-application-swing/src/main/filters/observe-ui.properties index 80e57c2..7a0608a 100644 --- a/observe-application-swing/src/main/filters/observe-ui.properties +++ b/observe-application-swing/src/main/filters/observe-ui.properties @@ -102,6 +102,7 @@ icon.action.connect_ok=action-connect_ok.png icon.action.close=action-close.png icon.action.db-change=action-db-change.png icon.action.db-local=action-db-local.png +icon.action.db-server=action-db-server.png icon.action.db-none=action-db-none.png icon.action.db-remote=action-db-remote.png icon.action.db-reload=action-db-reload.png 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 6f3ab5f..9f5fc4b 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 @@ -31,6 +31,8 @@ import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.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; @@ -55,6 +57,7 @@ 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.tree.ObserveTreeHelper; import jaxx.runtime.JAXXUtil; import jaxx.runtime.context.DefaultApplicationContext; import jaxx.runtime.context.JAXXContextEntryDef; @@ -590,197 +593,134 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { */ public void prepareMainStorage(ObserveSwingDataSource dataSource) { - // ajout support JMX -// if (ObserveServiceHelper.isUseJMX()) { -// service.getConfig().getDbConfig().setProperty( -// Environment.GENERATE_STATISTICS, -// String.valueOf(true)); -// } - //FIXME -// service.addDataSourceListener(new DataSourceListenerAdapter() { -// -// @Override -// public void onOpening(DataSourceEvent event) { -// DataSource s = event.getSource(); -// UIHelper.displayInfo( -// t("observe.message.db.loading", s.getLabel())); -// } -// -// @Override -// public void onOpened(DataSourceEvent event) { -// -// // le service est disponible, on enregistre les listeners -// DataSource source = event.getSource(); -// -// try { -// openOnUI(source); -// } catch (Exception e) { -// -// // 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 -// if (log.isErrorEnabled()) { -// log.error("Could not obtain open datas from " + source.getLabel(), e); -// } -// ErrorDialogUI.showError(e); -// -// // fermeture de la source -// try { -// source.doClose(false); -// } catch (DataSourceException e1) { -// throw new RuntimeException(e1); -// } -// } -// -// } -// -// @Override -// public void onClosing(DataSourceEvent event) { -// -// super.onClosing(event); -// -// DataSource source = event.getSource(); -// -// // on désenregistre la source du service de données -// getDataService().unregisterDataSource(source); -// -// // on dettache la validation -// getValidationContext().closeDataSource(); -// -// ObserveMainUI mainUI = getObserveMainUI(); -// DataContext dataContext = getDataContext(); -// dataContext.setEnabled(false); -// -// // suppresion des opens dans le context de données -// dataContext.populateOpens(); -// -// mainUI.getTreeHelper().cleanNavigationUI(mainUI); -// -// // on met a jour l'état dans la config -// getConfig().setMainStorageOpened(false); -// } -// -// -// @Override -// public void onClosed(DataSourceEvent event) { -// // le service est indisponible, il faut supprimer toutes les -// // references vers le service -// DataSource source = event.getSource(); -// -// // gestion JMX -//// if (ObserveServiceHelper.isUseJMX()) { -//// -//// dettachHibernateMBean(source); -//// } -// -// ObserveMainUI mainUI = getObserveMainUI(); -// -// // nettoyage de l'ui ( suppression navigation et autres ) -// if (mainUI != null) { -// -// if (log.isDebugEnabled()) { -// log.debug("dispose ui from storage " + -// source.getLabel() + ": " + mainUI.getName()); -// } -// -// mainUI.setMode(ObserveUIMode.NO_DB); -// -// UIHelper.displayInfo( -// t("observe.message.db.closed", source.getLabel())); -// -// } -// } -// -// protected void openOnUI(DataSource source) throws DataSourceException { -// // on rend le service disponible dans le service de données -// getDataService().registerDataSource(source); -// -// // on rend le service disponible dans le service de validation -// getValidationContext().setDataSource(source); -// -// // toutes les données sont chargées, on peut declarer le service -// // comme ouvert dans la configuration -// ObserveSwingApplicationConfig config = getConfig(); -// config.setMainStorageOpened(true); -// config.setMainStorageOpenedLocal(source instanceof H2DataSource); -// -// if (source instanceof H2DataSource) { -// config.setLocalStorageExist(true); -// } -// -// // gestion JMX -//// if (ObserveServiceHelper.isUseJMX()) { -//// createHibernateMBean(source); -//// } -// -// // remplissage de l'ui -// ObserveMainUI mainUI = getObserveMainUI(); -// -// if (mainUI != null) { -// if (log.isDebugEnabled()) { -// log.debug("loading ui for storage " + source.getLabel() + -// ": " + mainUI.getName()); -// } -// -// DataContext dataContext = mainUI.getDataContext(); -// dataContext.setEnabled(true); -// -// ObserveTreeHelper treeHelper = mainUI.getTreeHelper(); -// -// treeHelper.cleanNavigationUI(mainUI); -// -// + + dataSource.addDataSourceListener(new ObserveSwingDataSourceListenerAdapter() { + + @Override + public void onOpening(ObserveSwingDataSourceEvent event) { + ObserveSwingDataSource s = event.getSource(); + UIHelper.displayInfo( + t("observe.message.db.loading", s.getLabel())); + } + + @Override + public void onOpened(ObserveSwingDataSourceEvent event) { + + // le service est disponible, on enregistre les listeners + ObserveSwingDataSource source = event.getSource(); + + try { + openOnUI(source); + } catch (Exception e) { + + // 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 + if (log.isErrorEnabled()) { + log.error("Could not obtain open datas from " + source.getLabel(), e); + } + ErrorDialogUI.showError(e); + + // fermeture de la source + source.close(); + } + + } + + @Override + public void onClosing(ObserveSwingDataSourceEvent event) { + + super.onClosing(event); + + ObserveSwingDataSource source = event.getSource(); + + // on dettache la validation + getValidationContext().closeDataSource(); + + ObserveMainUI mainUI = getObserveMainUI(); + DataContext dataContext = getDataContext(); + dataContext.setEnabled(false); + + // suppresion des opens dans le context de données + dataContext.populateOpens(); + + mainUI.getTreeHelper().cleanNavigationUI(mainUI); + + // on met a jour l'état dans la config + getConfig().setMainStorageOpened(false); + } + + + @Override + public void onClosed(ObserveSwingDataSourceEvent event) { + // le service est indisponible, il faut supprimer toutes les + // references vers le service + ObserveSwingDataSource source = event.getSource(); + + ObserveMainUI mainUI = getObserveMainUI(); + + // nettoyage de l'ui ( suppression navigation et autres ) + if (mainUI != null) { + + if (log.isDebugEnabled()) { + log.debug("dispose ui from storage " + + source.getLabel() + ": " + mainUI.getName()); + } + + mainUI.setMode(ObserveUIMode.NO_DB); + + UIHelper.displayInfo( + t("observe.message.db.closed", source.getLabel())); + + } + } + + protected void openOnUI(ObserveSwingDataSource source) { + // FIXME + // on rend le service disponible dans le service de validation + //getValidationContext().setDataSource(source); + + // toutes les données sont chargées, on peut declarer le service + // comme ouvert dans la configuration + ObserveSwingApplicationConfig config = getConfig(); + config.setMainStorageOpened(true); + config.setMainStorageOpenedLocal(source.isLocal()); + + if (source.isLocal()) { + config.setLocalStorageExist(true); + } + + // remplissage de l'ui + ObserveMainUI mainUI = getObserveMainUI(); + + if (mainUI != null) { + if (log.isDebugEnabled()) { + log.debug("loading ui for storage " + source.getLabel() + + ": " + mainUI.getName()); + } + + DataContext dataContext = mainUI.getDataContext(); + dataContext.setEnabled(true); + + ObserveTreeHelper treeHelper = mainUI.getTreeHelper(); + + treeHelper.cleanNavigationUI(mainUI); + + // FIXME // String[] openIds = getDataService().getOpenIds(source); // mainUI.getDataContext().populateOpens(openIds); -// treeHelper.loadNavigationUI(source, mainUI); -// -// mainUI.setMode(ObserveUIMode.DB); -// -// mainUI.getStatus().setStatus( -// t("observe.message.db.loaded", source.getLabel())); -// -// } -// } -// }); - } + treeHelper.loadNavigationUI(source, mainUI); -// protected void createHibernateMBean(DataSource source) { -// try { -// ObjectName on = createMBean(source); -// if (log.isInfoEnabled()) { -// log.info("attach MBean " + on); -// } -// MBeanServer server = ManagementFactory.getPlatformMBeanServer(); -// // MBean implementation -// StatisticsService stats = new StatisticsService(); -// // Bind the stats to a SessionFactory -// stats.setSessionFactory(((TopiaContextImplementor) source.getRootCtxt()).getHibernateFactory()); -// // Register the Mbean on the server -// server.registerMBean(stats, on); -// } catch (Exception e) { -// if (log.isErrorEnabled()) { -// log.error("Could not attach hibernate session to JMX...", e); -// } -// } -// } + mainUI.setMode(ObserveUIMode.DB); -// public void dettachHibernateMBean(DataSource source) { -// // suppression MBean sur la session hibernate -// try { -// MBeanServer server = ManagementFactory.getPlatformMBeanServer(); -// ObjectName on = createMBean(source); -// if (log.isInfoEnabled()) { -// log.info("dettach MBean " + on); -// } -// // UnRegister the Mbean on the server -// server.unregisterMBean(on); -// } catch (Exception e) { -// if (log.isErrorEnabled()) { -// log.error("Could not dettach hibernate session from JMX...", e); -// } -// } -// } + mainUI.getStatus().setStatus( + t("observe.message.db.loaded", source.getLabel())); + + } + } + }); + } public void registerShareActions(ObserveMainUI ui) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java index 8c5a421..ca2b649 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java @@ -329,7 +329,7 @@ public enum ObserveSwingApplicationConfigOption implements ConfigOptionDef { SERVER_DATABASE_NAME( "server.dataBaseName", n("observe.config.server.dataBaseName.description"), - "", + null, String.class, false, false diff --git a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java index 3e8550c..27e1a7f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java @@ -22,7 +22,7 @@ public class ObserveSwingApplicationConfigProvider implements ApplicationConfigP @Override public String getDescription(Locale locale) { - return l(locale, "observeweb.configuration.description"); + return l(locale, "observe.configuration.description"); } @Override 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 eccfbd7..1b9c1c7 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 @@ -3,6 +3,8 @@ package fr.ird.observe.db; import com.google.common.base.Preconditions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.event.ObserveSwingDataSourceEvent; +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; @@ -19,17 +21,26 @@ import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.jdesktop.beans.AbstractSerializableBean; +import org.nuiton.util.version.Version; +import javax.swing.event.EventListenerList; import java.io.File; import java.util.Locale; +import static org.nuiton.i18n.I18n.t; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ public class ObserveSwingDataSource extends AbstractSerializableBean { - public static final String PROPERTY_OPEN = "open"; + private static final Log log = LogFactory.getLog(ObserveSwingDataSource.class); + + /** le conteneur de listeners */ + protected final EventListenerList listenerList; protected final ObserveDataSourceConfiguration configuration; @@ -37,6 +48,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { public ObserveSwingDataSource(ObserveDataSourceConfiguration configuration) { this.configuration = configuration; + this.listenerList = new EventListenerList(); this.connection = null; } @@ -48,29 +60,83 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { return connection; } + public String getLabel() { + return configuration.getLabel(); + } + + public String getAuthenticationToken() { + String result = null; + if (connection != null) { + result = connection.getAuthenticationToken(); + } + return result; + } + + public boolean canWriteData() { + boolean result = connection != null && connection.canWriteData(); + return result; + } + + public Version getVersion() { + Version result = null; + if (connection != null) { + result = connection.getVersion(); + } + return result; + } + + public boolean canReadReferential() { + boolean result = connection != null && connection.canReadReferential(); + return result; + } + + public boolean canReadData() { + boolean result = connection != null && connection.canReadData(); + return result; + } + + public boolean canWriteReferential() { + boolean result = connection != null && connection.canWriteReferential(); + return result; + } + public void open() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - Preconditions.checkState(connection == null, "Connection is alredy open"); + + Preconditions.checkState(!isOpen(), "Connection is alredy open"); + + fireNewMessage(t("observe.storage.message.opening", getLabel())); + fireOpening(); + DataSourceService dataSourceService = newService(DataSourceService.class); connection = dataSourceService.open(configuration); - firePropertyChange(PROPERTY_OPEN, false, true); + fireNewMessage(t("observe.storage.message.opened", getLabel())); + fireOpened(); } public void create(DataSourceCreateConfigurationDto creatDto) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - Preconditions.checkState(connection == null, "Connection is alredy open"); + + Preconditions.checkState(!isOpen(), "Connection is alredy open"); + + fireNewMessage(t("observe.storage.message.creating", getLabel())); + fireOpening(); DataSourceService dataSourceService = newService(DataSourceService.class); connection = dataSourceService.create(configuration, creatDto); - firePropertyChange(PROPERTY_OPEN, false, true); + fireNewMessage(t("observe.storage.message.created", getLabel())); + fireOpened(); } public void close() { - Preconditions.checkState(connection != null, "Connection is not open"); + Preconditions.checkState(isOpen(), "Connection is not open"); + + fireNewMessage(t("observe.storage.message.closing", getLabel())); + fireClosing(); DataSourceService dataSourceService = newService(DataSourceService.class); @@ -78,12 +144,17 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { connection = null; - firePropertyChange(PROPERTY_OPEN, true, false); + fireNewMessage(t("observe.storage.message.closed", getLabel())); + fireClosed(); + } public void destroy() { - Preconditions.checkState(connection != null, "Connection is not open"); + Preconditions.checkState(isOpen(), "Connection is not open"); + + fireNewMessage(t("observe.storage.message.destroying", getLabel())); + fireClosing(); DataSourceService dataSourceService = newService(DataSourceService.class); @@ -91,7 +162,9 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { connection = null; - firePropertyChange(PROPERTY_OPEN, true, false); + fireNewMessage(t("observe.storage.message.destroyed", getLabel())); + fireClosed(); + } public boolean isOpen() { @@ -151,8 +224,81 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { return configuration instanceof ObserveDataSourceConfigurationTopiaPG; } - public boolean isServeur() { + public boolean isServer() { return configuration instanceof ObserveDataSourceConfigurationRest; } + + public void addDataSourceListener(ObserveSwingDataSourceListener listener) { + listenerList.add(ObserveSwingDataSourceListener.class, listener); + } + + public boolean containsDataSourceListener(ObserveSwingDataSourceListener listener) { + ObserveSwingDataSourceListener[] listeners = getDataSourceListeners(); + for (ObserveSwingDataSourceListener l : listeners) { + if (l.equals(listener)) { + return true; + } + } + return false; + } + + public ObserveSwingDataSourceListener[] getDataSourceListeners() { + return listenerList.getListeners(ObserveSwingDataSourceListener.class); + } + + public void removeDataSourceListener(ObserveSwingDataSourceListener listener) { + listenerList.remove(ObserveSwingDataSourceListener.class, listener); + } + + protected void removeDataSourceListeners() { + // remove all listeners + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + if (log.isInfoEnabled()) { + log.info("removing listener " + listener); + } + removeDataSourceListener(listener); + } + } + + public void fireNewMessage(String message) { + fireNewMessage(message, ObserveSwingDataSourceEvent.MessageLevel.INFO); + } + + public void fireNewMessage(String message, ObserveSwingDataSourceEvent.MessageLevel level) { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this, message, level); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onNewMessage(evt); + } + } + + protected void fireOpening() { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onOpening(evt); + } + } + + protected void fireOpened() { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onOpened(evt); + } + } + + protected void fireClosing() { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onClosing(evt); + } + } + + protected void fireClosed() { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onClosed(evt); + } + } + + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceEvent.java b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceEvent.java new file mode 100644 index 0000000..637247a --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceEvent.java @@ -0,0 +1,83 @@ +/* + * #%L + * ObServe :: Business + * %% + * 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% + */ +package fr.ird.observe.db.event; + +import fr.ird.observe.db.ObserveSwingDataSource; + +import java.util.EventObject; + +/** + * Les évènements produits lors des changements du cycle de vie d'une source + * de données. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public class ObserveSwingDataSourceEvent extends EventObject { + + private static final long serialVersionUID = 1L; + + /** an extra message to be used when using {@link ObserveSwingDataSourceListener#onNewMessage(ObserveSwingDataSourceEvent)}. */ + protected String message; + + public enum MessageLevel { + FATAL, + ERROR, + WARN, + INFO, + DEBUG, + TRACE + } + + protected MessageLevel messageLevel; + + /** + * Constructs a prototypical Event. + * + * @param source The object on which the Event initially occurred. + * @throws IllegalArgumentException if source is null. + */ + public ObserveSwingDataSourceEvent(ObserveSwingDataSource source) { + super(source); + } + + public ObserveSwingDataSourceEvent(ObserveSwingDataSource source, + String message, + MessageLevel messageLevel) { + super(source); + this.message = message; + this.messageLevel = messageLevel; + } + + @Override + public ObserveSwingDataSource getSource() { + return (ObserveSwingDataSource) super.getSource(); + } + + public String getMessage() { + return message; + } + + public MessageLevel getMessageLevel() { + return messageLevel; + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListener.java b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListener.java new file mode 100644 index 0000000..8ae2593 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListener.java @@ -0,0 +1,75 @@ +/* + * #%L + * ObServe :: Business + * %% + * 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% + */ +package fr.ird.observe.db.event; + +import fr.ird.observe.db.ObserveSwingDataSource; + +import java.util.EventListener; + +/** + * Le contrat d'un listener sur une source de données. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public interface ObserveSwingDataSourceListener extends EventListener { + + + /** + * Déclanché avant l'ouverture d'un service (i.e au debut de la méthode + * {@link ObserveSwingDataSource#open()}). + * + * @param event l'evenement de pre-ouverture + */ + void onOpening(ObserveSwingDataSourceEvent event); + + /** + * Déclanché apres une ouverture d'un service (i.e à la fin de la méthode + * {@link ObserveSwingDataSource#open()}). + * + * @param event l'evenement d'ouverture + */ + void onOpened(ObserveSwingDataSourceEvent event); + + /** + * Déclanché avant la fermeture d'un service (i.e au avant la méthode {@link + * ObserveSwingDataSource#close()}). + * + * @param event l'evenement de pre-fermeture + */ + void onClosing(ObserveSwingDataSourceEvent event); + + /** + * Déclanché apres la fermeture d'un service (i.e apres de la méthode {@link + * ObserveSwingDataSource#close()}). + * + * @param event l'evenement de fermeture + */ + void onClosed(ObserveSwingDataSourceEvent event); + + /** + * Déclanché pour envoyer un nouveau message. + * + * @param event l'evenement de message + */ + void onNewMessage(ObserveSwingDataSourceEvent event); +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListenerAdapter.java b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListenerAdapter.java new file mode 100644 index 0000000..1345ab8 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListenerAdapter.java @@ -0,0 +1,56 @@ +/* + * #%L + * ObServe :: Business + * %% + * 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% + */ +package fr.ird.observe.db.event; + +/** + * Un adapteur de {@link ObserveSwingDataSourceListener}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public class ObserveSwingDataSourceListenerAdapter implements ObserveSwingDataSourceListener { + + @Override + public void onOpening(ObserveSwingDataSourceEvent event) { + // ne fait rien + } + + @Override + public void onOpened(ObserveSwingDataSourceEvent event) { + // ne fait rien + } + + @Override + public void onClosing(ObserveSwingDataSourceEvent event) { + // ne fait rien + } + + @Override + public void onClosed(ObserveSwingDataSourceEvent event) { + // ne fait rien + } + + @Override + public void onNewMessage(ObserveSwingDataSourceEvent event) { + // ne fait rien + } +} 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 1a896aa..a2f4a61 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 @@ -409,7 +409,7 @@ public class ObserveMainUIHandler { String text; if (ui.getConfig().isMainStorageOpened()) { ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); - text = source.getConfiguration().getLabel(); + text = source.getLabel(); } else { text = t("observe.message.db.none.loaded"); } @@ -420,7 +420,7 @@ public class ObserveMainUIHandler { String text; if (ui.getConfig().isMainStorageOpened()) { ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); - text = t("observe.message.loaded.tip", source.getConfiguration().getLabel()); + text = t("observe.message.loaded.tip", source.getLabel()); } else { text = t("observe.message.db.none.loaded.tip"); } 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 b64b062..dab2b45 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 @@ -24,7 +24,6 @@ package fr.ird.observe.ui.actions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.StorageBackupUILauncher; @@ -67,8 +66,7 @@ public class SaveStorageToFileAction extends AbstractAction { ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSource(); - ObserveDataSourceConnection connection = service.getConnection(); - if (!service.isLocal() && !(connection.canReadData() && connection.canWriteData())) { + if (!service.isLocal() && !(service.canReadData() && service.canWriteData())) { UIHelper.askUser( null, 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 d1143cb..c5a6a5e 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 @@ -23,7 +23,6 @@ package fr.ird.observe.ui.admin; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUIMode; import fr.ird.observe.ui.UIHelper; @@ -265,17 +264,6 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad model.doCloseSource(source, false); - // on avait une source avant l'opération et aussi une ui - ObserveDataSourceConfiguration sourceConfig = source.getConfiguration(); - - //FIXME -// if (sourceConfig instanceof H2DataSourceConfig) -// source = DataSourceFactory.newService( -// (H2DataSourceConfig) sourceConfig); -// else -// source = DataSourceFactory.newService( -// (PGDataSourceConfig) sourceConfig); - // on attache la source a l'ui ObserveSwingApplicationContext.get().prepareMainStorage(source); 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 af2a398..0481a5a 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 @@ -525,7 +525,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (log.isDebugEnabled()) { log.debug("Close previous source " + - previousSource.getConfiguration().getLabel()); + previousSource.getLabel()); } doCloseSource(previousSource, false); } @@ -1318,12 +1318,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { protected ObserveSwingDataSource createDataSource(StorageUIModel model) { - ObserveDataSourceConfiguration service = storageHandler.newDataSourceConfigurationFromModel( - model, - n("observe.storage.label.local") - ); - - ObserveSwingDataSource dataSource = new ObserveSwingDataSource(service); + ObserveSwingDataSource dataSource = storageHandler.newDataSourceFromModel(model); return dataSource; } 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 2a67b31..5afccf2 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 @@ -205,7 +205,7 @@ public class ExportUIHandler extends AdminTabUIHandler { stepModel.setCentralSource(centralSource); - if (!centralSource.getConnection().canWriteData()) { + if (!centralSource.canWriteData()) { // l'utilisateur n'a pas le droit d'écrire sur la base distante sendMessage(t("observe.message.can.not.write.data")); return WizardState.FAILED; 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 6c84080..a0a06c9 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 @@ -504,7 +504,7 @@ public class ReportUIHandler extends AdminTabUIHandler { openSource(source); } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException eee) { throw new IllegalStateException( - "Could not open data source " + source.getConfiguration().getLabel(), eee); + "Could not open data source " + source.getLabel(), eee); } ReportExecute execute = stepModel.getReportExecute(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java index ac3a0eb..f1d4df6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java @@ -341,7 +341,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { // construction du différentiel sendMessage(t("observe.message.synchro.build.diff", - centralSource.getConfiguration().getLabel())); + centralSource.getLabel())); //FIXME // DiffState.DiffStateMap diff = 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 7df22ed..f22fc0c 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 @@ -360,7 +360,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { ValidatorsMap validators = validationModel.getValidators(); sendMessage(t("observe.message.validation.use.storage", - source.getConfiguration().getLabel())); + source.getLabel())); sendMessage(t("observe.message.validation.prepare.validators")); 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 c7b144d..2d9bbab 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 @@ -71,7 +71,7 @@ public class StorageBackupUILauncher extends StorageUILauncher { } else if (source.isRemote()) { model.setCanUseRemoteService(true); model.setDbMode(DbMode.USE_REMOTE); - } else if (source.isServeur()) { + } else if (source.isServer()) { model.setCanUseServerService(true); model.setDbMode(DbMode.USE_SERVER); } 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 171fd3b..2b69301 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 @@ -36,6 +36,8 @@ import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.db.constantes.DbMode; +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 fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; @@ -69,7 +71,6 @@ import java.io.IOException; import java.util.Date; import java.util.Set; -import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -93,49 +94,45 @@ public class StorageUIHandler { * Le service ne sera pas ouvert. * * @param model le modèle de la source de données - * @param localLabel le label de la source si local * @return le service de persistance initialisé mais non ouvert. */ - public ObserveDataSourceConfiguration newDataSourceConfigurationFromModel( - StorageUIModel model, - String localLabel) { - - ObserveDataSourceConfiguration mainConfiguration = null; + public ObserveSwingDataSource newDataSourceFromModel( + StorageUIModel model) { + ObserveSwingDataSource dataSource = null; + ObserveDataSourceConfiguration configuration; switch (model.getDbMode()) { case CREATE_LOCAL: case USE_LOCAL: - mainConfiguration = model.toH2StorageConfig(localLabel); + configuration = model.toH2StorageConfig(t("observe.storage.label.local")); - // FIXME -// h2Service.addDataSourceListener( -// new DataSourceListenerAdapter() { -// -// @Override -// public void onOpened(DataSourceEvent event) { -// H2DataSource s = (H2DataSource) -// event.getSource(); -// -// ObserveContext context = ObserveContext.get(); -// // la base locale existe desormais -// context.getContextValue(ObserveConfig.class). -// setLocalStorageExist(true); -// -// // le service est en mode normal -// s.getConfig().setCreationMode(null); -// } -// }); + dataSource = new ObserveSwingDataSource(configuration); + + dataSource.addDataSourceListener( + new ObserveSwingDataSourceListenerAdapter() { + + @Override + public void onOpened(ObserveSwingDataSourceEvent event) { + ObserveSwingDataSource source = event.getSource(); + + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + // la base locale existe desormais + context.getConfig().setLocalStorageExist(true); + } + }); break; case USE_REMOTE: - mainConfiguration = model.toPGStorageConfig(localLabel); + configuration = model.toPGStorageConfig(t("observe.storage.label.remote")); + dataSource = new ObserveSwingDataSource(configuration); break; case USE_SERVER: - mainConfiguration = model.toRestStorageConfig(localLabel); + configuration = model.toRestStorageConfig(t("observe.storage.label.server")); + dataSource = new ObserveSwingDataSource(configuration); break; } - return mainConfiguration; + return dataSource; } public void initUI(final StorageUI ui) { @@ -369,7 +366,7 @@ public class StorageUIHandler { if (destroyLocalBase || model.isDoBackup()) { if (localDataSource == null) { try { - ObserveDataSourceConfigurationTopiaH2 localConfiguration = config.getDataSourceConfigurationH2(n("observe.storage.label.local")); + ObserveDataSourceConfigurationTopiaH2 localConfiguration = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); // la base ne doit pas etre mise a jour dans ce cas localConfiguration.setCanMigrate(false); @@ -457,7 +454,7 @@ public class StorageUIHandler { } // suppression du storage precedent - if (currentDataSource != null) { + if (currentDataSource != null && currentDataSource.isOpen()) { if (log.isDebugEnabled()) { log.debug(">>> close main storage " + currentDataSource); } @@ -486,16 +483,18 @@ public class StorageUIHandler { try { - ObserveDataSourceConfiguration dataSourceConfiguration = newDataSourceConfigurationFromModel(model, t("observe.storage.label.local")); - currentDataSource = new ObserveSwingDataSource(dataSourceConfiguration); + currentDataSource = newDataSourceFromModel(model); + + observeContext.setDataSource(currentDataSource); + observeContext.prepareMainStorage(currentDataSource); // ouverture du nouveau storage currentDataSource.open(); - observeContext.setDataSource(currentDataSource); + if (log.isInfoEnabled()) { - log.info(">>> main storage opened " + currentDataSource.getConfiguration().getLabel()); + log.info(">>> main storage opened " + currentDataSource.getLabel()); } if (model.isStoreRemoteConfig()) { @@ -1275,7 +1274,7 @@ public class StorageUIHandler { importDataSource.open(); - model.checkImportDbVersion(importDataSource.getConnection()); + model.checkImportDbVersion(importDataSource); initSelectData(ui, importDataSource, false); 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 2914fc0..0d1cc85 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 @@ -35,14 +35,14 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; -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.ui.storage.tabs.DataSelectionModel; 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; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; @@ -58,7 +58,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -181,6 +180,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { /** la configuration d'un serveur web */ protected ObserveDataSourceConfigurationRest restConfig; + protected String serverUrl; + /** Les information de connextion a la base**/ protected ObserveDataSourceConnection connection; @@ -235,7 +236,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); h2Config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( - n("observe.storage.label.remote"), + t("observe.storage.label.local"), null, ObserveSwingApplicationConfig.DB_NAME, "", @@ -245,7 +246,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { ); pgConfig = configurationMainFactory.createObserveDataSourceConfigurationTopiaPG( - n("observe.storage.label.local"), + t("observe.storage.label.remote"), "", "", EMPTY_PASSWORD, @@ -255,7 +256,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { ); restConfig = configurationMainFactory.createObserveDataSourceConfigurationRest( - n("observe.storage.label.rest"), + t("observe.storage.label.server"), null, "", EMPTY_PASSWORD, @@ -342,9 +343,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { CreationMode mode = config.getDefaultCreationMode(); // on initialise les configuration avec les valeurs par defaul - h2Config = config.getDataSourceConfigurationH2(n("observe.storage.label.remote")); - pgConfig = config.getDataSourceConfigurationPG(n("observe.storage.label.local")); - restConfig = config.getDataSourceConfigurationRest(n("observe.storage.label.rest")); + h2Config = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); + pgConfig = config.getDataSourceConfigurationPG(t("observe.storage.label.remote")); + restConfig = config.getDataSourceConfigurationRest(t("observe.storage.label.server")); if (source != null) { @@ -527,9 +528,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { // on utilise la configuration par defaut // ce cas ne devrait arriver uniquement tant qu'aucune // base locale est crée - h2Config = config.getDataSourceConfigurationH2(n("observe.storage.label.remote")); - pgConfig = config.getDataSourceConfigurationPG(n("observe.storage.label.local")); - restConfig = config.getDataSourceConfigurationRest(n("observe.storage.label.rest")); + h2Config = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); + pgConfig = config.getDataSourceConfigurationPG(t("observe.storage.label.remote")); + restConfig = config.getDataSourceConfigurationRest(t("observe.storage.label.server")); DbMode newDbMode = config.getDefaultDbMode(); if (getAdminAction() != null) { @@ -727,7 +728,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public String getLabel() { String txt; String params; - txt = n("observe.storage.label.import.referentiel"); + txt = t("observe.storage.label.import.referentiel"); if (getDbMode() == DbMode.CREATE_LOCAL) { params = getH2Config().getDirectory().getAbsolutePath(); } else { @@ -757,7 +758,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public String getLabel() { String txt; String params; - txt = n("observe.storage.label.import.data"); + txt = t("observe.storage.label.import.data"); if (getDbMode() == DbMode.CREATE_LOCAL) { params = getH2Config().getDirectory().getAbsolutePath(); } else { @@ -1299,7 +1300,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { url = pgConfig.getJdbcUrl(); break; case USE_SERVER: - url = restConfig.getServerUrl().toString(); + url = serverUrl; break; } } @@ -1334,16 +1335,66 @@ public class StorageUIModel extends WizardModel<StorageStep> { return restConfig; } + public String getDataSourceConfigDetail() { + String result = null; + if (dbMode != null) { + switch (dbMode) { + case USE_LOCAL: + case CREATE_LOCAL: + result = t("observe.storage.detail.local", h2Config.getDbName()); + break; + case USE_REMOTE: + String yes = t("observe.boolean.yes"); + String no = t("observe.boolean.no"); + result = t("observe.storage.detail.remote", + pgConfig.getJdbcUrl(), + pgConfig.getUsername(), + "***", + (pgConfig.isUseSsl() ? yes : no)); + break; + case USE_SERVER: + result = t("observe.storage.detail.server", + restConfig.getServerUrl(), + restConfig.getLogin(), + "***", + restConfig.getOptionalDatabaseName().orNull()); + break; + } + } + return result; + } + + + + public void setRemoteLogin(String remoteLogin) { String oldValue = getRemoteLogin(); - - pgConfig.setUsername(remoteLogin); + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + pgConfig.setUsername(remoteLogin); + break; + case USE_SERVER: + restConfig.setLogin(remoteLogin); + break; + } + } firePgConfigChanged(REMOTE_LOGIN_ROPERTY_NAME, oldValue, remoteLogin); } public void setRemotePassword(char[] remotePassword) { char[] oldValue = getRemotePassword(); - pgConfig.setPassword(remotePassword); + + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + pgConfig.setPassword(remotePassword); + break; + case USE_SERVER: + restConfig.setPassword(remotePassword); + break; + } + } firePgConfigChanged(REMOTE_PASSWORD_PROPERTY_NAME, oldValue, remotePassword); } @@ -1378,12 +1429,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { pgConfig.setJdbcUrl(remoteUrl); break; case USE_SERVER: - URL url = null; - try { - url = new URL(remoteUrl); - } catch (MalformedURLException e) { - } - restConfig.setServerUrl(url); + serverUrl = remoteUrl; break; } } @@ -1398,8 +1444,12 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void setServerDatabase(String database) { String oldValue = getServerDatabase(); - restConfig.setOptionalDatabaseName(database); - firePgConfigChanged(SERVER_DATABASE_PROPERTY_NAME, oldValue, database); + if (StringUtils.isBlank(database)) { + restConfig.setOptionalDatabaseName(null); + } else { + restConfig.setOptionalDatabaseName(database); + } + firePgConfigChanged(SERVER_DATABASE_PROPERTY_NAME, oldValue, restConfig.getOptionalDatabaseName()); } // ---------------------------------------------------------- @@ -1500,7 +1550,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { ObserveDataSourceConfigurationRest result = configurationFactory.createObserveDataSourceConfigurationRest( label, restConfig.getServerUrl(), - restConfig.getLabel(), + restConfig.getLogin(), restConfig.getPassword(), restConfig.getOptionalDatabaseName().orNull() ); @@ -1541,54 +1591,85 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ public boolean testRemote() { - ObserveSwingDataSource dataSource = new ObserveSwingDataSource(pgConfig); - + ObserveDataSourceConfiguration config = null; boolean result = false; connexionStatusError = ""; - try { - dataSource.checkCanConnect(); + if (DbMode.USE_REMOTE.equals(getDbMode())) { + config = pgConfig; + } else if (DbMode.USE_SERVER.equals(getDbMode())) { + try { + URL url = new URL(serverUrl); - dataSource.open(); + restConfig.setServerUrl(url); - ObserveDataSourceConnection connection = dataSource.getConnection(); + config = restConfig; - Version versionDataSource = connection.getVersion(); + } catch (MalformedURLException e) { - if (versionDataSource.equals(getModleVersion())) { + connexionStatusError = t("observe.storage.error.badUrl", serverUrl); - setConnexionStatus(ConnexionStatus.SUCCESS); + setConnexionStatus(ConnexionStatus.FAILED); - result = true; + } - } else { + } - connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, getModleVersion()); + if (config != null) { - setConnexionStatus(ConnexionStatus.FAILED); + ObserveSwingDataSource dataSource = new ObserveSwingDataSource(config); - } + try { + + if (DbMode.USE_SERVER.equals(getDbMode())) { + + PingService pingService = dataSource.newService(PingService.class); + + pingService.ping(); - } catch (DatabaseNotFoundException e) { + } + + dataSource.checkCanConnect(); + + dataSource.open(); + + Version versionDataSource = dataSource.getVersion(); + + if (getModleVersion().equals(versionDataSource)) { + + setConnexionStatus(ConnexionStatus.SUCCESS); + + result = true; + + } else { - connexionStatusError = e.getMessage(); + connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, getModleVersion()); - setConnexionStatus(ConnexionStatus.FAILED); + setConnexionStatus(ConnexionStatus.FAILED); - } catch (DatabaseConnexionNotAuthorizedException e) { + } + + } catch (Exception e) { + + connexionStatusError = e.getMessage(); + + if (log.isErrorEnabled()) { + log.error("Error in test remote", e); + } - connexionStatusError = e.getMessage(); + setConnexionStatus(ConnexionStatus.FAILED); - setConnexionStatus(ConnexionStatus.FAILED); - } finally { - if (dataSource.isOpen()) { - dataSource.close(); + } finally { + if (dataSource.isOpen()) { + dataSource.close(); + } } } return result; } + public String getConnexionStatusError() { return connexionStatusError; } @@ -1611,9 +1692,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, oldValue, connexionStatus); } - public void checkImportDbVersion(ObserveDataSourceConnection connection) { + public void checkImportDbVersion(ObserveSwingDataSource source) { - Version importServiceDbVersion = connection.getVersion(); + Version importServiceDbVersion = source.getVersion(); Version currentDbVersion = getModleVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx index 57d82df..779fd17 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx @@ -144,7 +144,7 @@ public void init() { </row> <row> <cell weighty='1' weightx='1'> - <JPanel id='USE_SERVERE_content' + <JPanel id='USE_SERVER_content' minimumSize='{new Dimension(20,300)}'/> </cell> </row> 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 b245639..b0cee4b 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 @@ -21,11 +21,13 @@ */ package fr.ird.observe.ui.storage.tabs; +import com.google.common.collect.ImmutableSet; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.StorageStep; import fr.ird.observe.ui.storage.StorageUIHandler; @@ -139,6 +141,8 @@ public class StorageTabUIHandler { String id = null; if (model.getDbMode() == DbMode.USE_REMOTE) { id = DbMode.USE_REMOTE.name(); + } else if (model.getDbMode() == DbMode.USE_SERVER) { + id = DbMode.USE_SERVER.name(); } else { if (model.getCreationMode() != null) { id = model.getCreationMode().name(); @@ -300,6 +304,8 @@ public class StorageTabUIHandler { ui.IMPORT_REMOTE_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); } else if (c.equals(ui.USE_REMOTE)) { ui.USE_REMOTE_content.add(ui.remoteConfig, BorderLayout.CENTER); + } else if (c.equals(ui.USE_SERVER)) { + ui.USE_SERVER_content.add(ui.remoteConfig, BorderLayout.CENTER); } } } @@ -341,7 +347,7 @@ public class StorageTabUIHandler { text = t(text); break; case SUCCESS: - text = t(text, ui.model.getPgConfig().toString()); + text = t(text, ui.model.getDataSourceConfigDetail()); break; case FAILED: text = t(text, ui.model.getConnexionStatusError()); @@ -405,13 +411,12 @@ public class StorageTabUIHandler { JTree tree = ui.selectTree; helper.setUI(tree, false, null); - //FIXME -// tree.setModel(helper.createModel(ui, dataModel, source)); + + tree.setModel(helper.createModel(ui, dataModel, source)); DataSelectionTreeSelectionModel selectionModel = ui.getSelectionModel(); selectionModel.initUI(tree); - //FIXME -// selectionModel.setDataModel(dataModel); + selectionModel.setDataModel(dataModel); } } @@ -442,9 +447,8 @@ public class StorageTabUIHandler { ); // on recopie la configuration de la source d'import - //FIXME -// PGDataSourceConfig config = sourceModel.toPostgresStorageConfig("Import référentiel"); -// ui.getModel().getPgConfig().setImportConfig(config); + ObserveDataSourceConfiguration config = sourceModel.toPGStorageConfig("Import référentiel"); + ui.getModel().getCreationConfigurationDto().setImportReferentialDataSourceConfiguration(config); sourceModel.validate(StorageStep.CONFIG); @@ -459,9 +463,9 @@ public class StorageTabUIHandler { sourceModel ); -// // on recopie la configuration de la source d'import -// PGDataSourceConfig config = sourceModel.toPostgresStorageConfig("Import données"); -// ui.getModel().getPgConfig().setImportDataConfig(config); + // on recopie la configuration de la source d'import + ObserveDataSourceConfiguration config = sourceModel.toPGStorageConfig("Import référentiel"); + ui.getModel().getCreationConfigurationDto().setImportDataConfiguration(config, ImmutableSet.<String>of()); sourceModel.validate(StorageStep.CONFIG); 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 ba2333e..8ba4944 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 @@ -22,7 +22,9 @@ package fr.ird.observe.ui.tree; import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -66,8 +68,7 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop private static final long serialVersionUID = -1L; - //FIXME -// protected DataSelectionModel dataModel; + protected DataSelectionModel dataModel; /** * Paths that are currently selected. Will be null if nothing is currently @@ -126,21 +127,20 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop } } - //FIXME -// public void setDataModel(DataSelectionModel dataModel) { -// DataSelectionModel oldModel = this.dataModel; -// if (oldModel != null) { -// oldModel.removePropertyChangeListener(this); -// oldModel.destroy(); -// //TODO Should destroy all other listeners ? -// //TODO this means model is dead... -// } -// this.dataModel = dataModel; -// if (dataModel != null) { -// this.dataModel.addPropertyChangeListener(this); -// } -// updateModel(); -// } + public void setDataModel(DataSelectionModel dataModel) { + DataSelectionModel oldModel = this.dataModel; + if (oldModel != null) { + oldModel.removePropertyChangeListener(this); + oldModel.destroy(); + //TODO Should destroy all other listeners ? + //TODO this means model is dead... + } + this.dataModel = dataModel; + if (dataModel != null) { + this.dataModel.addPropertyChangeListener(this); + } + updateModel(); + } @Override public void setSelectionMode(int mode) { @@ -154,10 +154,9 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop @Override public void setSelectionPath(TreePath path) { - //FIXME -// if (dataModel == null) { -// return; -// } + if (dataModel == null) { + return; + } Object o = path.getLastPathComponent(); ObserveNode node = AbstractObserveTreeCellRenderer.getNode(o); if (node == null) { @@ -229,14 +228,12 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop if (log.isDebugEnabled()) { log.debug("Will remove all referentiels"); } - //FIXME -// dataModel.removeAllSelectedReferentiel(); + dataModel.removeAllSelectedReferentiel(); } else { if (log.isDebugEnabled()) { log.debug("Will add all referentiels"); } - //FIXME -// dataModel.addAllSelectedReferentiel(); + dataModel.addAllSelectedReferentiel(); } return; } @@ -247,14 +244,12 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop if (log.isDebugEnabled()) { log.debug("Will remove referentiel " + internalClass + " to model"); } - //FIXME -// dataModel.removeSelectedReferentiel(internalClass); + dataModel.removeSelectedReferentiel(internalClass); } else { if (log.isDebugEnabled()) { log.debug("Will add referentiel " + internalClass + " to model"); } - //FIXME -// dataModel.addSelectedReferentiel(internalClass); + dataModel.addSelectedReferentiel((Class<? extends ReferentialDto>) internalClass); } return; } @@ -318,19 +313,16 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop @Override public boolean isPathSelected(TreePath path) { - //FIXME -// if (dataModel == null) { -// return false; -// } + if (dataModel == null) { + return false; + } Object o = path.getLastPathComponent(); ObserveNode node = AbstractObserveTreeCellRenderer.getNode(o); if (node != null) { Class<?> internalClass = node.getInternalClass(); if (node.isReferentielNode() && node.isStringNode()) { - //FIXME -// boolean result = dataModel.isReferentielFull(); - boolean result = false; + boolean result = dataModel.isReferentielFull(); if (log.isTraceEnabled()) { log.trace("selectModel use full referentiel " + internalClass + " ? " + result); @@ -338,9 +330,7 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop return result; } if (node.isReferentielNode()) { - //FIXME -// boolean result = dataModel.isSelectedReferentiel(internalClass); - boolean result = false; + boolean result = dataModel.isSelectedReferentiel(internalClass); if (log.isTraceEnabled()) { log.trace("selectModel use referentiel " + internalClass + " ? " + result); @@ -371,13 +361,11 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop @Override public void clearSelection() { - //FIXME -// if (dataModel == null) { -// return; -// } + if (dataModel == null) { + return; + } selection = null; - //FIXME -// dataModel.removeAll(); + dataModel.removeAll(); } @Override @@ -618,15 +606,14 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop @Override public void propertyChange(PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); - //FIXME -// if (DataSelectionModel.PROPERTY_SELECTED_DATA.equals(propertyName) || -// DataSelectionModel.PROPERTY_SELECTED_REFERENTIEL.equals(propertyName)) { -// // la selection a changee -// Object value = evt.getNewValue(); -// if (log.isDebugEnabled()) { -// log.debug("selection data changed " + value); -// } -// } + if (DataSelectionModel.PROPERTY_SELECTED_DATA.equals(propertyName) || + DataSelectionModel.PROPERTY_SELECTED_REFERENTIEL.equals(propertyName)) { + // la selection a changee + Object value = evt.getNewValue(); + if (log.isDebugEnabled()) { + log.debug("selection data changed " + value); + } + } updateModel(); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java index 9313336..a078a82 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import jaxx.runtime.swing.nav.NavDataProvider; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -37,7 +37,7 @@ public class ObserveDataProvider implements NavDataProvider { /** Logger */ static private final Log log = LogFactory.getLog(ObserveDataProvider.class); - protected DataSource dataSource; + protected ObserveSwingDataSource dataSource; //FIXME // protected DataService dataService; @@ -47,11 +47,11 @@ public class ObserveDataProvider implements NavDataProvider { private boolean creating; - public ObserveDataProvider(DataSource dataSource) { + public ObserveDataProvider(ObserveSwingDataSource dataSource) { this.dataSource = dataSource; } - public void setSource(DataSource dataSource) { + public void setSource(ObserveSwingDataSource dataSource) { this.dataSource = dataSource; } @@ -69,7 +69,7 @@ public class ObserveDataProvider implements NavDataProvider { return dataSource != null && dataSource.isOpen();// || selectionModel != null; } - public DataSource getDataSource() { + public ObserveSwingDataSource getDataSource() { return dataSource; } 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 036d4fd..c62b2d4 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 @@ -23,14 +23,20 @@ package fr.ird.observe.ui.tree; */ import com.google.common.base.Preconditions; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.ProgramDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.*; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTree; +import javax.swing.MenuElement; +import javax.swing.SwingUtilities; import javax.swing.tree.TreePath; -import java.awt.*; +import java.awt.Point; +import java.awt.Rectangle; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; @@ -202,7 +208,7 @@ public class ObserveNavigationTreeShowPopupAction { moveTripPopup.removeAll(); // DataService dataService = treeHelper.getDataService(); - DataSource dataSource = treeHelper.getDataProvider().getDataSource(); + ObserveSwingDataSource dataSource = treeHelper.getDataProvider().getDataSource(); String tripId = selectedNode.getId(); 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 152feaf..a583ac0 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 @@ -26,7 +26,7 @@ import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveContext; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.OpenableDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; @@ -159,7 +159,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { return model; } - public TreeModel createModel(DataSource source) { + public TreeModel createModel(ObserveSwingDataSource source) { setDataSource(source); @@ -186,7 +186,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { //FIXME // DataSelectionModel dataModel, Object dataModel, - DataSource source) { + ObserveSwingDataSource source) { setDataSource(source); context.setContextValue(dataModel); @@ -229,7 +229,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { * @param source la source de données * @param mainUI l'ui principale */ - public void loadNavigationUI(DataSource source, ObserveMainUI mainUI) { + public void loadNavigationUI(ObserveSwingDataSource source, ObserveMainUI mainUI) { ObserveNode.count = 0; @@ -543,7 +543,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { } - void setDataSource(DataSource source) { + void setDataSource(ObserveSwingDataSource source) { NavDataProvider provider = null; if (source != null) { provider = new ObserveDataProvider(source); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java index 682ab02..19afb2a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import jaxx.runtime.swing.nav.NavDataProvider; @@ -44,9 +44,9 @@ public abstract class AbstractNodeChildLoador<O> extends NavTreeNodeChildLoador< super(beanType); } - protected DataSource getDataSource(NavDataProvider dataProvider) { + protected ObserveSwingDataSource getDataSource(NavDataProvider dataProvider) { ObserveDataProvider provider = (ObserveDataProvider) dataProvider; - DataSource result = provider.getDataSource(); + ObserveSwingDataSource result = provider.getDataSource(); return result; } 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 484ab92..40b27c8 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 @@ -22,7 +22,7 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.ui.tree.ActivityLonglineNode; import fr.ird.observe.ui.tree.ObserveDataProvider; @@ -50,7 +50,7 @@ public class ActivityLonglinesNodeChildLoador extends AbstractNodeChildLoador<Ac String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + ObserveSwingDataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); //FIXME // List<ActivityLonglineDto> data = getDataService().getActivityLonglineStubByTrip(dataSource, parentId); // return data; 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 0f96c12..65c335d 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.ActivitySeineObservedSystemDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; @@ -115,7 +115,7 @@ public class ActivitySeineNodeChildLoador extends AbstractNodeChildLoador<Floati String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + ObserveSwingDataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); //FIXME // List<FloatingObject> data = getDataService().getFloatinObjectStubByActivitySeine(dataSource, parentId); // return data; 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 94a1d93..0eb1b9e 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.ui.tree.ActivitySeineNode; import fr.ird.observe.ui.tree.ObserveDataProvider; @@ -49,7 +49,7 @@ public class ActivitySeinesNodeChildLoador extends AbstractNodeChildLoador<Activ String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + ObserveSwingDataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); //FIXME // List<ActivitySeineDto> data = getDataService().getActivitySeineStubByRoute(dataSource, parentId); // return data; 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 9a88f0a..da2efb0 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 @@ -22,7 +22,7 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.TripLonglineNode; @@ -76,7 +76,7 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = getDataSource(dataProvider); + ObserveSwingDataSource dataSource = getDataSource(dataProvider); //FIXME // DataService service = getDataService(); // DataSelectionModel selectionModel = getSelectionModel(dataProvider); 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 d7d6dfc..46a0b57 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.TripSeineNode; @@ -73,7 +73,7 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<TripSei String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = getDataSource(dataProvider); + ObserveSwingDataSource dataSource = getDataSource(dataProvider); //FIXME // DataService service = getDataService(); // DataSelectionModel selectionModel = getSelectionModel(dataProvider); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java index cd29821..7f3e9be 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.ui.tree.ObserveNode; @@ -71,7 +71,7 @@ public class RootNodeChildLoador extends AbstractNodeChildLoador<ProgramDto> { String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = getDataSource(dataProvider); + ObserveSwingDataSource dataSource = getDataSource(dataProvider); //FIXME // DataService service = getDataService(); // DataSelectionModel selectionModel = getSelectionModel(dataProvider); 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 9acb6a8..ba4d6f3 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; @@ -55,7 +55,7 @@ public class RoutesNodeChildLoador extends AbstractNodeChildLoador<RouteDto> { String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + ObserveSwingDataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); //FIXME // List<RouteDto> data = getDataService().getRouteStubByTrip(dataSource, parentId); // return data; 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 aceeef5..dfd2c7e 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 @@ -595,6 +595,8 @@ observe.baitsComposition.title=Baits observe.basket.cant.delete.message=The current basket can not be deleted since it used by other data. observe.basket.cant.delete.title=Can't delete basket observe.basket.invalid.nextFloatline1Length= +observe.boolean.no=No +observe.boolean.yes=Yes observe.branchLine.cant.delete.message=The current branchline can not be deleted since it used by other data. observe.branchLine.cant.delete.title=Can't delete branchline observe.branchline.baitHaulingStatus=Bait hauling status @@ -1136,6 +1138,7 @@ observe.config.ui.locale=Application's language observe.config.ui.showNumberEditorButton=Flag sets to true to show button to invoke popup on number's editors observe.config.ui.showTimeEditorSlider=Show timer slider observe.config.ui.storeRemoteStorage=Flag sets to true to store in config a remote connexion (except passwords) +observe.configuration.description= observe.content.mode.create.tip= observe.content.mode.read.tip= observe.content.mode.update.tip= @@ -1784,6 +1787,10 @@ observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= observe.storage.dbMode.useServer= observe.storage.dbMode.useServer.description= +observe.storage.detail.local= +observe.storage.detail.remote= +observe.storage.detail.server= +observe.storage.error.badUrl= observe.storage.error.dbVersionMismatch= observe.storage.importExternalDump.config= observe.storage.importExternalDump.description= @@ -1808,11 +1815,20 @@ observe.storage.label.import.remote= observe.storage.label.local=Local database observe.storage.label.reference.import.db= observe.storage.label.remote= -observe.storage.label.rest= +observe.storage.label.server= observe.storage.label.synchro= observe.storage.label.synchro.incoming= observe.storage.label.synchro.referentiel= observe.storage.locale.db= +observe.storage.message.closed= +observe.storage.message.closing= +observe.storage.message.create= +observe.storage.message.created= +observe.storage.message.creating= +observe.storage.message.destroyed= +observe.storage.message.destroying= +observe.storage.message.opened= +observe.storage.message.opening= observe.storage.message.provider.detected= observe.storage.no.creationMode= observe.storage.no.creationMode.required= 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 ec010ce..082d33d 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 @@ -595,6 +595,8 @@ observe.baitsComposition.title= observe.basket.cant.delete.message= observe.basket.cant.delete.title= observe.basket.invalid.nextFloatline1Length= +observe.boolean.no= +observe.boolean.yes= observe.branchLine.cant.delete.message= observe.branchLine.cant.delete.title= observe.branchline.baitHaulingStatus= @@ -1136,6 +1138,7 @@ observe.config.ui.locale=Idioma de la aplicación (fr_FR, en_GB o es_ES) observe.config.ui.showNumberEditorButton=Para mostrar el botón que permite usar el editor numérico a la izquierda de cada campo numérico observe.config.ui.showTimeEditorSlider= observe.config.ui.storeRemoteStorage=Para activar la copia de seguridad de la configuración del origen de datos remota +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 @@ -1786,6 +1789,10 @@ observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= observe.storage.dbMode.useServer= observe.storage.dbMode.useServer.description= +observe.storage.detail.local= +observe.storage.detail.remote= +observe.storage.detail.server= +observe.storage.error.badUrl= observe.storage.error.dbVersionMismatch=La versión de la base remota (%s)no es compatible con la versión del modelo (%s). observe.storage.importExternalDump.config=Selección de la copia de seguridad a utilizar observe.storage.importExternalDump.description=Seleccione el archivo de una copia de seguridad (*.sql.gz). @@ -1810,11 +1817,20 @@ observe.storage.label.import.remote=Base remota de importación observe.storage.label.local=Base local observe.storage.label.reference.import.db= observe.storage.label.remote=Base remota -observe.storage.label.rest= +observe.storage.label.server= observe.storage.label.synchro=Base de sincronización observe.storage.label.synchro.incoming=Base origen <%1$s> observe.storage.label.synchro.referentiel=Base central <%1$s> observe.storage.locale.db=(local) +observe.storage.message.closed= +observe.storage.message.closing= +observe.storage.message.create= +observe.storage.message.created= +observe.storage.message.creating= +observe.storage.message.destroyed= +observe.storage.message.destroying= +observe.storage.message.opened= +observe.storage.message.opening= observe.storage.message.provider.detected= observe.storage.no.creationMode=No se ha seleccionado ningún modo de creación observe.storage.no.creationMode.required=No requerido. 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 d85dd79..7884eda 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 @@ -595,6 +595,8 @@ observe.baitsComposition.title=Composition des appâts observe.basket.cant.delete.message=Le panier ne peut pas être supprimé car il est utilisé dans des données. observe.basket.cant.delete.title=Impossible de supprimer le panier observe.basket.invalid.nextFloatline1Length=La longueur d'orin 2 (%s) n'est pas égale à la longueur d'orin 1 du panier suivant (%s) +observe.boolean.no=Non +observe.boolean.yes=Oui observe.branchLine.cant.delete.message=L'avançon ne peut pas être supprimé car il est utilisé dans des données. observe.branchLine.cant.delete.title=Impossible de supprimer l'avançon observe.branchline.baitHaulingStatus=Statut appât au virage @@ -1136,6 +1138,7 @@ observe.config.ui.locale=Langue utilisée par l'application (fr_FR, en_GB ou es_ observe.config.ui.showNumberEditorButton=Pour afficher le bouton qui permet d'utiliser l'éditeur numérique à gauche de chaque champs numérique observe.config.ui.showTimeEditorSlider=Pour afficher la réglette d'édition des heures observe.config.ui.storeRemoteStorage=Pour activer la sauvegarde de la configuration de la source distante +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 @@ -1540,7 +1543,7 @@ observe.message.validation.start.maree=Validation de la marée '%1$s' (%2$s) observe.message.validation.start.referentiel=Validation du référentiel de type '%1$s' (%2$s entités) observe.message.validation.use.storage=La validation sera effectuée sur %1$s observe.message.warning.will.be.delete=%1$s\n\nAttention, l'export remplacera la marée existante. -observe.model.version= +observe.model.version=Version du modèle de données observe.navigationMenu.moveTrip=Réallocation du programme observe.navigationMenu.noAction=< Aucune action définie > observe.nonTargetCatch.message.table.will.delete.nonTargetSample=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonages \:\n%1$s\nCela entrainera la suppression des échantillonages suivants \:\n%2$s @@ -1745,40 +1748,50 @@ observe.speciesList.selectedSpecies=Espèces sélectionnées observe.speciesList.tab.general=Caractéristiques générales observe.speciesList.tab.species=Espèces observe.storage.action.canMigrate=Mettre à jour la base (version courante %1$s) -observe.storage.connexionStatut.failed= -observe.storage.connexionStatut.failed.description= -observe.storage.connexionStatut.success= -observe.storage.connexionStatut.success.description= -observe.storage.connexionStatut.untested= -observe.storage.connexionStatut.untested.description= -observe.storage.creationMode.empty= -observe.storage.creationMode.empty.description= -observe.storage.creationMode.externalDump= -observe.storage.creationMode.externalDump.description= -observe.storage.creationMode.importLocalStorage= -observe.storage.creationMode.importLocalStorage.description= -observe.storage.creationMode.importRemoteStorage= -observe.storage.creationMode.importRemoteStorage.description= -observe.storage.creationMode.importServerStorage= -observe.storage.creationMode.importServerStorage.description= -observe.storage.creationMode.internalDump= -observe.storage.creationMode.internalDump.description= -observe.storage.dataPolicy.readData= -observe.storage.dataPolicy.readData.description= -observe.storage.dataPolicy.readReferentiel= -observe.storage.dataPolicy.readReferentiel.description= -observe.storage.dataPolicy.writeData= -observe.storage.dataPolicy.writeData.description= -observe.storage.dataPolicy.writeReferentiel= -observe.storage.dataPolicy.writeReferentiel.description= -observe.storage.dbMode.createLocal= -observe.storage.dbMode.createLocal.description= -observe.storage.dbMode.useLocal= -observe.storage.dbMode.useLocal.description= -observe.storage.dbMode.useRemote= -observe.storage.dbMode.useRemote.description= +observe.storage.connexionStatut.failed=Connexion échouée +observe.storage.connexionStatut.failed.description=La connexion a échouée pour la raison suivante \:\n %1$s +observe.storage.connexionStatut.success=Connexion réussie +observe.storage.connexionStatut.success.description=Information sur la connexion \:\n%1$s. +observe.storage.connexionStatut.untested=Connexion non validée +observe.storage.connexionStatut.untested.description=La connexion n'a jamais été validée, \nou a été modifiée depuis le dernier test de connexion. +observe.storage.creationMode.empty=Générer une base vide +observe.storage.creationMode.empty.description=Générer une nouvelle base locale vide.\nCette base n'aura pas de référentiel et il vous faudra ensuite faire un import de référentiel... +observe.storage.creationMode.externalDump=Charger une sauvegarde de base locale (*.sql.gz) +observe.storage.creationMode.externalDump.description=Créer une nouvelle base locale à partir\nd'une précédente sauvegarde de l'application +observe.storage.creationMode.importLocalStorage=Importer le référentiel d'une base locale +observe.storage.creationMode.importLocalStorage.description=Générer une nouvelle base locale et y importer le référentiel d'une autre base locale. +observe.storage.creationMode.importRemoteStorage=Importer le référentiel d'une base distante +observe.storage.creationMode.importRemoteStorage.description=Générer une nouvelle base locale et y importer le référentiel d'une autre base distante. +observe.storage.creationMode.importServerStorage=Importer le référentiel dun serveur distant +observe.storage.creationMode.importServerStorage.description=Générer une nouvelle base locale et y importer le référentiel d'un serveur distant. +observe.storage.creationMode.internalDump=Charger la base embarquée +observe.storage.creationMode.internalDump.description=Générer une nouvelle base locale à partir\nde la dernière version de la base embarquée. +observe.storage.dataPolicy.data=Données observateur +observe.storage.dataPolicy.no.wrights=Aucun droit. +observe.storage.dataPolicy.read=Lecture +observe.storage.dataPolicy.readData=Lecture données observateur +observe.storage.dataPolicy.readData.description=Autorisation de lire les données observateurs +observe.storage.dataPolicy.readReferentiel=Lecture référentiel +observe.storage.dataPolicy.readReferentiel.description=Autorisation de lire les données du référentiel +observe.storage.dataPolicy.readWrite=Lecture / Ecriture +observe.storage.dataPolicy.referentiel=Référentiel +observe.storage.dataPolicy.write=Ecriture +observe.storage.dataPolicy.writeData=Ecriture données observateur +observe.storage.dataPolicy.writeData.description=Autorisation d'écrire des données observateurs +observe.storage.dataPolicy.writeReferentiel=Ecriture référentiel +observe.storage.dataPolicy.writeReferentiel.description=Autorisation d'écrire des données dans le référentiel +observe.storage.dbMode.createLocal=Créer une base locale +observe.storage.dbMode.createLocal.description=Creer une base locale de type h2 +observe.storage.dbMode.useLocal=Utiliser une base locale +observe.storage.dbMode.useLocal.description=Utiliser une base locale de type h2 +observe.storage.dbMode.useRemote=Utiliser une base distante +observe.storage.dbMode.useRemote.description=Utiliser une base distante de type postgres observe.storage.dbMode.useServer=Utiliser un serveur distant observe.storage.dbMode.useServer.description=Utiliser un serveur distant +observe.storage.detail.local=- Base local \: %1s\n- Login \: %2s +observe.storage.detail.remote=- URL JDBC \: %1s\n- Login \: %2s\n- Mot de passe \: %3s \n- Mode SSL \: %4s +observe.storage.detail.server=- URL serveur \: %1s\n- Login \: %2s\n- Mot de passe \: %3s \n- Base de données \: %4s +observe.storage.error.badUrl=Erreur dans le format de l'URL %s observe.storage.error.dbVersionMismatch=La version de la base distante (%s) n'est pas compatible avec la version du modèle (%s) observe.storage.importExternalDump.config=Sélection de la sauvegarde à utiliser observe.storage.importExternalDump.description=Veuillez sélectionner le fichier d'une sauvegarde (*.sql.gz). @@ -1803,11 +1816,19 @@ observe.storage.label.import.remote=Base distante d'import observe.storage.label.local=Base locale observe.storage.label.reference.import.db=Base d'import de référentiels observe.storage.label.remote=Base distante -observe.storage.label.rest= +observe.storage.label.server=Serveur Distant observe.storage.label.synchro=Base de synchronisation observe.storage.label.synchro.incoming=Base source <%1$s> observe.storage.label.synchro.referentiel=Base centrale <%1$s> observe.storage.locale.db=(locale) +observe.storage.message.closed=La connexion [%1$s] est fermé +observe.storage.message.closing=Fermeture de la connexion [%1$s] +observe.storage.message.created=La source de données [%1$s] est créée +observe.storage.message.creating=Création de la source de données [%1$s] +observe.storage.message.destroyed=La source de données [%1$s] est supprimée +observe.storage.message.destroying=Suppression de la source de données [%1$s] +observe.storage.message.opened=Le service de persistence [%1$s] est ouvert +observe.storage.message.opening=Ouverture de la connexion [%1$s] observe.storage.message.provider.detected= observe.storage.no.creationMode=Aucun mode de création sélectionné observe.storage.no.creationMode.required=Non requis. @@ -1829,8 +1850,8 @@ observe.storage.report.action.import.backup=Import depuis une sauvegarde \: observe.storage.report.action.import.internal=Import depuis une le dernier référentiel téléchargé \: observe.storage.report.action.import.remote.data=Import de données depuis une base distante \: observe.storage.report.action.import.remote.referentiel=Import du référentiel depuis une base distante \: -observe.storage.report.action.import.server.data= -observe.storage.report.action.import.server.referentiel= +observe.storage.report.action.import.server.data=Import de données depuis un serveur distant \: +observe.storage.report.action.import.server.referentiel=Import du référentiel depuis un serveur distant \: observe.storage.report.action.migrate=Politique de mise à jour observe.storage.report.action.no.data.import=Pas d'import de données observe.storage.report.action.no.referentiel.import=Pas d'import de référentiel @@ -1859,7 +1880,7 @@ observe.storage.required.rw.on.data=Vous n'avez pas les droits suffisants pour e observe.storage.security.administrateur=Propriétaire de la base observe.storage.selected.dbMode=Type de source de données sélectionné observe.storage.selectedCreationMode=Mode de création sélectionné -observe.storage.server.dataBase= +observe.storage.server.dataBase=Base de données observe.storage.showMigrationProgression=Afficher la progression lors des mises à jour observe.storage.showMigrationSql=Afficher les requêtes sql lors des mises à jour observe.storage.step.backup=Sauvegarde @@ -1885,8 +1906,8 @@ observe.storage.store.remote.config=Conserver le paramétrage observe.storage.store.remote.config.tip=Conserver le paramétrage de la source de données distante dans votre configuration (sauf les mots de passe pour des raisons de sécurité) observe.storage.useRemoteStorage.config=Configurer la base distante à utiliser observe.storage.useRemoteStorage.description=Veuillez configurer votre connexion à la base distante\nAvant de pouvoir poursuivre, vous devez valider la connexion. -observe.storage.useServerStorage.config= -observe.storage.useServerStorage.description= +observe.storage.useServerStorage.config=Configurer le serveur distant à utiliser +observe.storage.useServerStorage.description=Veuillez configurer votre connexion au serveur distant\nAvant de pouvoir poursuivre, vous devez valider la connexion. observe.synchro.add.object=Ajout du référentiel %1$s observe.synchro.common.activity=Activité observe.synchro.common.exist=Marée présente sur la base distante diff --git a/observe-application-swing/src/main/resources/icons/action-db-server.png b/observe-application-swing/src/main/resources/icons/action-db-server.png new file mode 100644 index 0000000..68f21d3 Binary files /dev/null and b/observe-application-swing/src/main/resources/icons/action-db-server.png differ diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java index 2d709d1..992c4c8 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java @@ -23,17 +23,17 @@ package fr.ird.observe.application.web.controller.v1; */ import fr.ird.observe.application.web.controller.ObserveWebMotionController; -import org.debux.webmotion.server.render.Render; +import fr.ird.observe.services.service.PingService; /** * Created on 06/09/15. * * @author Tony Chemit - chemit@codelutin.com */ -public class PingServiceController extends ObserveWebMotionController { +public class PingServiceController extends ObserveWebMotionController implements PingService { - public Render ping() { - return renderContent("pong", "text/plain"); + public String ping() { + return PING_RESULT; } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java index a6e799e..87c184d 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java @@ -172,7 +172,7 @@ public class ObserveWebSecurityApplicationContext implements Closeable { if (dataSourceConfiguration == null) { // unknown userLogin - database - throw new UnknownObserveWebUserForDatabaseException(userLogin, databaseName); + throw new UnknownObserveWebUserForDatabaseException(databaseName, userLogin); } if (log.isInfoEnabled()) { diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java index c0a6936..282318b 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java @@ -32,6 +32,8 @@ import fr.ird.observe.services.spi.NoDataAccess; */ public interface PingService extends ObserveService { + String PING_RESULT = "Pong"; + @NoDataAccess String ping(); diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java index a2f48c4..383c93e 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java @@ -31,6 +31,7 @@ import com.google.gson.GsonBuilder; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import org.nuiton.util.version.Version; import java.sql.Timestamp; import java.util.Date; @@ -94,6 +95,7 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(ReferenceDto.class, new ReferenceDtoAdapter()); gsonBuilder.registerTypeAdapter(ReferentialReferenceDto.class, new ReferentialReferenceDtoAdapter()); gsonBuilder.registerTypeAdapter(ReportVariable.class, new ReportVariableAdapter()); + gsonBuilder.registerTypeAdapter(Version.class, new VersionAdapter()); gsonBuilder.enableComplexMapKeySerialization(); } return gsonBuilder; diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java new file mode 100644 index 0000000..15c576d --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java @@ -0,0 +1,31 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; + +import java.lang.reflect.Type; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class VersionAdapter implements JsonSerializer<Version>, JsonDeserializer<Version> { + + @Override + public Version deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + + String versionStr = json.getAsString(); + + return Versions.valueOf(versionStr); + } + + @Override + public JsonElement serialize(Version src, Type typeOfSrc, JsonSerializationContext context) { + return context.serialize(src.getVersion()); + } +} diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java b/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java index c71d292..cf61796 100644 --- a/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java @@ -137,7 +137,7 @@ public class TestMethodResource implements TestRule { try { String ping = service.ping(); - if (!"ping".equals(ping)) { + if (!PingService.PING_RESULT.equals(ping)) { serverExist = false; } } catch (Exception e) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit dc602893c5d418d0cf383bca0cff4f35c594c425 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 09:19:03 2015 +0200 ignorer un test et mise à jour des dépendences (refs #7529) --- observe-application-swing/pom.xml | 10 ++++++++++ .../LonglineDetailCompositionValidatorServiceTest.java | 3 +++ 2 files changed, 13 insertions(+) diff --git a/observe-application-swing/pom.xml b/observe-application-swing/pom.xml index 9af2045..4c2464d 100644 --- a/observe-application-swing/pom.xml +++ b/observe-application-swing/pom.xml @@ -91,6 +91,16 @@ </dependency> <dependency> <groupId>${project.groupId}</groupId> + <artifactId>observe-services-configuration-topia</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>observe-services-configuration-rest</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> <artifactId>observe-services-api</artifactId> <version>${project.version}</version> </dependency> 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 2424e7a..818e5f3 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 @@ -36,6 +36,7 @@ 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; @@ -83,6 +84,8 @@ public class LonglineDetailCompositionValidatorServiceTest { } + // FIXME + @Ignore @Test public void testValidateSections() { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 733fcf27ac8f520ed11b51934bbdeefd62e98ae6 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 17:59:04 2015 +0200 creation d'un base local (refs #7529) --- .../main/java/fr/ird/observe/ObserveRunner.java | 2 +- .../observe/ObserveSwingApplicationContext.java | 32 +++ .../ird/observe/ui/storage/StorageUIHandler.java | 52 ++-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 290 ++++++++++++--------- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 14 +- .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 17 ++ .../ui/storage/tabs/StorageTabUIHandler.java | 9 +- .../observe-application-swing_en_GB.properties | 2 + .../observe-application-swing_es_ES.properties | 2 + .../observe-application-swing_fr_FR.properties | 2 + .../DataSourceDumpProducerServiceController.java | 29 +++ .../observe/services/dto/gson/VersionAdapter.java | 9 +- .../services/dto/referential/ProgramDtos.java | 24 +- .../services/ObserveServiceContextTopia.java | 3 + .../EntityToReferentialReferenceDtoBuilder.java | 13 + .../services/dto/ObserveDtosInitializer.java | 284 ++++++++++---------- ...EntityToReferentialReferenceDtoBuilderTest.java | 57 ++++ 17 files changed, 551 insertions(+), 290 deletions(-) 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 0398e30..1158503 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 @@ -506,7 +506,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } protected void detectLocalDataBase(ObserveSwingApplicationConfig config) throws IOException { - boolean hasLocalStorage = config.getLocalDBDirectory().exists(); + boolean hasLocalStorage = new File(config.getLocalDBDirectory(),ObserveSwingApplicationConfig.DB_NAME).exists(); config.setLocalStorageExist(hasLocalStorage); if (!hasLocalStorage) { if (log.isInfoEnabled()) { 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 9f5fc4b..5dc2fd9 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 @@ -37,7 +37,16 @@ import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceMainFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.longline.TripLonglineStubDto; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramDtos; +import fr.ird.observe.services.dto.seine.TripSeineStubDto; +import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.services.service.longline.TripLonglineService; +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; @@ -718,6 +727,29 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { t("observe.message.db.loaded", source.getLabel())); } + + if (log.isInfoEnabled()) { + ReferentialService referentialService = source.newService(ReferentialService.class); + TripSeineService tripSeineService = source.newService(TripSeineService.class); + TripLonglineService tripLonglineService = source.newService(TripLonglineService.class); + + ReferenceSetDto<ProgramDto> programDtoRefs = referentialService.getReferentialReferenceSet(ProgramDto.class); + for (ReferenceDto<ProgramDto> programDtoRef : programDtoRefs.getReference()) { + String programName = (String) programDtoRef.getPropertyValue("label"); + log.info("- " + programName); + if (ProgramDtos.isProgramSeine(programDtoRef)) { + List<TripSeineStubDto> tripSeines = tripSeineService.getTripSeineByProgram(programDtoRef.getId()); + for (TripSeineStubDto tripSeine :tripSeines) { + log.info(" - " + tripSeine.getVesselLabel() + " " + tripSeine.getStartDate() + " - " + tripSeine.getEndDate()); + } + } else if (ProgramDtos.isProgramLongline(programDtoRef)) { + List<TripLonglineStubDto> tripLonglines = tripLonglineService.getTripLonglineStubByProgram(programDtoRef.getId()); + for (TripLonglineStubDto tripLongline :tripLonglines) { + log.info(" - " + tripLongline.getVesselLabel() + " " + tripLongline.getStartDate() + " - " + tripLongline.getEndDate()); + } + } + } + } } }); } 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 2b69301..fc0c6a0 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 @@ -41,6 +41,7 @@ import fr.ird.observe.db.event.ObserveSwingDataSourceListenerAdapter; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.service.DataSourceDumpProducerService; @@ -488,21 +489,9 @@ public class StorageUIHandler { observeContext.setDataSource(currentDataSource); observeContext.prepareMainStorage(currentDataSource); - // ouverture du nouveau storage - currentDataSource.open(); - - - - if (log.isInfoEnabled()) { - log.info(">>> main storage opened " + currentDataSource.getLabel()); - } - - if (model.isStoreRemoteConfig()) { - storeRemoteConfig(context, model); - } - if (model.getDbMode() == DbMode.CREATE_LOCAL && - model.getCreationMode() == - CreationMode.IMPORT_REMOTE_STORAGE) { + if (DbMode.CREATE_LOCAL.equals(model.getDbMode()) + && (CreationMode.IMPORT_REMOTE_STORAGE.equals(model.getCreationMode()) || CreationMode.IMPORT_SERVER_STORAGE.equals(model.getCreationMode())) + && config.isLocalStorageExist()) { // si on a creer la base locale a partir d'un import d'une base // distante, on sauvegarde la base locale comme dump initial // il s'agit d'un dump du référentiel @@ -511,12 +500,12 @@ public class StorageUIHandler { // on supprime le dump sql de la base embarquée if (!f.delete()) { throw new IllegalStateException("could not delete " + - f); + f); } } if (log.isInfoEnabled()) { log.info(">>> create initial dump with " + localDataSource + - " in " + f); + " in " + f); } try { DataSourceDumpProducerService dumpProducerService = observeContext.newService(DataSourceDumpProducerService.class); @@ -529,6 +518,31 @@ public class StorageUIHandler { } } } + + + if (model.getDbMode() == DbMode.CREATE_LOCAL) { + + DataSourceCreateConfigurationDto creationConfigurationDto = model.getCreationConfigurationDto(); + + currentDataSource.create(creationConfigurationDto); + } else { + // ouverture du nouveau storage + currentDataSource.open(); + } + + + + + + + if (log.isInfoEnabled()) { + log.info(">>> main storage opened " + currentDataSource.getLabel()); + } + + if (model.isStoreRemoteConfig()) { + storeRemoteConfig(context, model); + } + } catch (Exception ex) { ErrorDialogUI.showError(ex); if (log.isErrorEnabled()) { @@ -758,13 +772,13 @@ public class StorageUIHandler { addTag("h3", sb, t("observe.storage.report.action.import.remote.referentiel")); - addTag("pre", sb, model.getPgConfig().toString()); + addTag("pre", sb, model.getDataSourceConfigDetail()); break; case IMPORT_SERVER_STORAGE: addTag("h3", sb, t("observe.storage.report.action.import.server.referentiel")); - addTag("pre", sb, model.getRestConfig().toString()); + addTag("pre", sb, model.getDataSourceConfigDetail()); break; case EMPTY: 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 0d1cc85..dfdd5de 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 @@ -35,6 +35,9 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.service.DataSourceDumpProducerService; +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.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.JAXXContext; @@ -54,6 +57,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -117,6 +121,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { public static final String DATA_IMPORT_MODE_PROPERTY_NAME = "dataImportMode"; + public static final String EDIT_REMOTE_CONFIG_PROPERTY_NAME = "editRemoteConfig"; + + public static final String EDIT_SERVER_CONFIG_PROPERTY_NAME = "editServerConfig"; + public static final String VALID_PROPERTY_NAME = "valid"; private static final char[] EMPTY_PASSWORD = new char[0]; @@ -126,6 +134,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { /** Le dbMode de connexion requis. */ protected DbMode dbMode; + protected boolean editServerConfig; + + protected boolean editRemoteConfig; + /** Un drapeau pour savoir si une base locale existe. */ protected boolean localStorageExist; @@ -816,9 +828,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { case IMPORT_REMOTE_STORAGE: importDataConfig = pgConfig; universe.add(StorageStep.CONFIG); + break; case IMPORT_SERVER_STORAGE: importDataConfig = restConfig; universe.add(StorageStep.CONFIG); + break; } } break; @@ -894,7 +908,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { } break; case CONFIG: - if (dbMode == DbMode.USE_REMOTE || dbMode == DbMode.USE_SERVER) { + if (DbMode.USE_REMOTE.equals(dbMode) + || DbMode.USE_SERVER.equals(dbMode) + || DbMode.CREATE_LOCAL.equals(dbMode) + && (CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode) + || CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode))) { validate = ConnexionStatus.SUCCESS.equals(getConnexionStatus()); //FIXME Il faut savoir si l'utilisateur est le //FIXME propriétaire de la base @@ -1116,6 +1134,14 @@ public class StorageUIModel extends WizardModel<StorageStep> { return dbMode; } + public boolean isEditRemoteConfig() { + return editRemoteConfig; + } + + public boolean isEditServerConfig() { + return editServerConfig; + } + public ObserveDataSourceConfiguration getPreviousDataSourceConfiguration() { return previousDataSourceConfiguration; } @@ -1128,6 +1154,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { DbMode oldValue = this.dbMode; this.dbMode = dbMode; firePropertyChange(DB_MODE_PROPERTY_NAME, oldValue, dbMode); + updateEditConfig(); if (oldValue != dbMode) { // on recalcule l'univers des étapes disponibles @@ -1141,6 +1168,21 @@ public class StorageUIModel extends WizardModel<StorageStep> { firePropertyChange(CAN_MIGRATE_PROPERTY_NAME, null, isCanMigrate()); } + protected void updateEditConfig() { + + boolean oldValueRemote = isEditRemoteConfig(); + editRemoteConfig = DbMode.USE_REMOTE.equals(dbMode) || + DbMode.CREATE_LOCAL.equals(dbMode) && CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode); + firePropertyChange(EDIT_REMOTE_CONFIG_PROPERTY_NAME, oldValueRemote, editRemoteConfig); + + boolean oldValueServer = isEditServerConfig(); + editServerConfig = DbMode.USE_SERVER.equals(dbMode) || + DbMode.CREATE_LOCAL.equals(dbMode) && CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode); + firePropertyChange(EDIT_SERVER_CONFIG_PROPERTY_NAME, oldValueServer, editServerConfig); + + } + + public void setLocalStorageExist(boolean localStorageExist) { boolean oldValue = this.localStorageExist; this.localStorageExist = localStorageExist; @@ -1236,10 +1278,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { CreationMode oldValue = getCreationMode(); this.creationMode = creationMode; firePropertyChange(CREATION_MODE_PROPERTY_NAME, oldValue, creationMode); + updateEditConfig(); if (oldValue != creationMode) { updateUniverse(); } - if (creationMode == CreationMode.IMPORT_REMOTE_STORAGE) { + if (CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode) || CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode)) { //TC-20100308 : dans le cas d'un import du référentiel distant //TC-20100308 : on utilise toujours l'utilisateur referentiel String s = getRemoteLogin(); @@ -1264,45 +1307,45 @@ public class StorageUIModel extends WizardModel<StorageStep> { public String getRemoteLogin() { String login = ""; - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - login = pgConfig.getUsername(); - break; - case USE_SERVER: - login = restConfig.getLogin(); - break; - } + + if (isEditRemoteConfig()) { + + login = pgConfig.getUsername(); + + } else if (isEditServerConfig()) { + + login = restConfig.getLogin(); + } return login; } public char[] getRemotePassword() { char[] password = EMPTY_PASSWORD; - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - password = pgConfig.getPassword(); - break; - case USE_SERVER: - password = restConfig.getPassword(); - break; - } + + if (isEditRemoteConfig()) { + + password = pgConfig.getPassword(); + + } else if (isEditServerConfig()) { + + password = restConfig.getPassword(); + } return password; } public String getRemoteUrl() { String url = ""; - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - url = pgConfig.getJdbcUrl(); - break; - case USE_SERVER: - url = serverUrl; - break; - } + + if (isEditRemoteConfig()) { + + url = pgConfig.getJdbcUrl(); + + } else if (isEditServerConfig()) { + + url = serverUrl; + } return url; } @@ -1337,63 +1380,55 @@ public class StorageUIModel extends WizardModel<StorageStep> { public String getDataSourceConfigDetail() { String result = null; - if (dbMode != null) { - switch (dbMode) { - case USE_LOCAL: - case CREATE_LOCAL: - result = t("observe.storage.detail.local", h2Config.getDbName()); - break; - case USE_REMOTE: - String yes = t("observe.boolean.yes"); - String no = t("observe.boolean.no"); - result = t("observe.storage.detail.remote", - pgConfig.getJdbcUrl(), - pgConfig.getUsername(), - "***", - (pgConfig.isUseSsl() ? yes : no)); - break; - case USE_SERVER: - result = t("observe.storage.detail.server", - restConfig.getServerUrl(), - restConfig.getLogin(), - "***", - restConfig.getOptionalDatabaseName().orNull()); - break; - } + if (isEditRemoteConfig()) { + String yes = t("observe.boolean.yes"); + String no = t("observe.boolean.no"); + result = t("observe.storage.detail.remote", + pgConfig.getJdbcUrl(), + pgConfig.getUsername(), + "***", + (pgConfig.isUseSsl() ? yes : no)); + } else if (isEditServerConfig()) { + result = t("observe.storage.detail.server", + restConfig.getServerUrl(), + restConfig.getLogin(), + "***", + restConfig.getOptionalDatabaseName().orNull()); + } else { + result = t("observe.storage.detail.local", h2Config.getDbName()); } return result; } - - public void setRemoteLogin(String remoteLogin) { + String oldValue = getRemoteLogin(); - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - pgConfig.setUsername(remoteLogin); - break; - case USE_SERVER: - restConfig.setLogin(remoteLogin); - break; - } + + if (isEditRemoteConfig()) { + + pgConfig.setUsername(remoteLogin); + + } else if (isEditServerConfig()) { + + restConfig.setLogin(remoteLogin); + } + firePgConfigChanged(REMOTE_LOGIN_ROPERTY_NAME, oldValue, remoteLogin); } public void setRemotePassword(char[] remotePassword) { char[] oldValue = getRemotePassword(); - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - pgConfig.setPassword(remotePassword); - break; - case USE_SERVER: - restConfig.setPassword(remotePassword); - break; - } + if (isEditRemoteConfig()) { + + pgConfig.setPassword(remotePassword); + + } else if (isEditServerConfig()) { + + restConfig.setPassword(remotePassword); + } firePgConfigChanged(REMOTE_PASSWORD_PROPERTY_NAME, oldValue, remotePassword); @@ -1423,15 +1458,15 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void setRemoteUrl(String remoteUrl) { String oldValue = getRemoteUrl(); - if (dbMode != null) { - switch (dbMode) { - case USE_REMOTE: - pgConfig.setJdbcUrl(remoteUrl); - break; - case USE_SERVER: - serverUrl = remoteUrl; - break; - } + + if (isEditRemoteConfig()) { + + pgConfig.setJdbcUrl(remoteUrl); + + } else if (isEditServerConfig()) { + + serverUrl = remoteUrl; + } firePgConfigChanged(REMOTE_URL_ROPERTY_NAME, oldValue, remoteUrl); } @@ -1472,43 +1507,58 @@ public class StorageUIModel extends WizardModel<StorageStep> { restConfig = sourceConfig; } - public DataSourceCreateConfigurationDto getCreationConfigurationDto() { - - DataSourceCreateConfigurationDto createConfigurationDto = null; - // FIXME -// if (getDbMode() == DbMode.CREATE_LOCAL) { -// switch (getCreationMode()) { -// case EMPTY: -// case IMPORT_EXTERNAL_DUMP: -// // rien a faire -// break; -// case IMPORT_INTERNAL_DUMP: -// -// createConfigurationDto = new DataSourceCreateConfigurationDto(); -// -// -// try { -// result.setDbDump( -// config.getInitialDbDump().toURI().toURL()); -// } catch (MalformedURLException ex) { -// throw new IllegalArgumentException( -// "can not build url for initialDbDump for " + -// "reason " + ex.getMessage(), ex); -// } -// break; -// case IMPORT_LOCAL_STORAGE: -// result.getImportConfig().setShortLabel( -// n("observe.storage.label.import.local")); -// break; -// case IMPORT_REMOTE_STORAGE: -// result.getImportConfig().setShortLabel( -// n("observe.storage.label.import.remote")); -// break; -// } -// -// -// } - return createConfigurationDto; + public DataSourceCreateConfigurationDto getCreationConfigurationDto() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + + DataSourceCreateConfigurationDto result = null; + + if (getDbMode() == DbMode.CREATE_LOCAL) { + result = new DataSourceCreateConfigurationDto(); + + if (CreationMode.IMPORT_EXTERNAL_DUMP.equals(creationMode) || CreationMode.IMPORT_INTERNAL_DUMP.equals(creationMode)) { + + File dumpFile; + + if (CreationMode.IMPORT_EXTERNAL_DUMP.equals(creationMode)) { + dumpFile = getDumpFile(); + } else { + dumpFile = config.getInitialDbDump(); + } + + byte[] dump = Files.readAllBytes(dumpFile.toPath()); + result.setImportDatabase(dump); + + } else { + + ObserveDataSourceConfiguration configSrc = null; + + switch (getCreationMode()) { + case IMPORT_LOCAL_STORAGE: + configSrc = h2Config; + break; + case IMPORT_REMOTE_STORAGE: + configSrc = pgConfig; + break; + case IMPORT_SERVER_STORAGE: + configSrc = restConfig; + break; + } + + if (configSrc != null) { + ObserveSwingDataSource source = new ObserveSwingDataSource(configSrc); + source.open(); + DataSourceDumpProducerService dumpService = source.newService(DataSourceDumpProducerService.class); + byte[] dump = dumpService.getReferentialDump(); + result.setImportDatabase(dump); + + source.close(); + + } + + } + + } + + return result; } public ObserveDataSourceConfigurationTopiaH2 toH2StorageConfig(String label) { @@ -1595,9 +1645,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { boolean result = false; connexionStatusError = ""; - if (DbMode.USE_REMOTE.equals(getDbMode())) { + if (isEditRemoteConfig()) { config = pgConfig; - } else if (DbMode.USE_SERVER.equals(getDbMode())) { + } else if (isEditServerConfig()) { try { URL url = new URL(serverUrl); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css index cfcb07b..4399f7b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css @@ -44,6 +44,14 @@ layout:{new BorderLayout()}; } +#IMPORT_SERVER_STORAGE { + _description:{n("observe.storage.importServerStorage.description")}; +} + +#IMPORT_SERVER_STORAGE_content { + layout:{new BorderLayout()}; +} + #USE_REMOTE { _description:{n("observe.storage.useRemoteStorage.description")}; } @@ -77,16 +85,16 @@ } #serverDataBaseLabel { - visible: {DbMode.USE_SERVER.equals(model.getDbMode())}; + visible: {model.isEditServerConfig()}; } #serverDataBase { - visible: {DbMode.USE_SERVER.equals(model.getDbMode())}; + visible: {model.isEditServerConfig()}; text:{model.getServerDatabase()}; } #remoteUseSsl { - visible: {DbMode.USE_REMOTE.equals(model.getDbMode())}; + visible: {model.isEditRemoteConfig()}; text:"observe.storage.remote.useSll"; selected:{model.isUseSsl()}; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx index 779fd17..aed93d0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx @@ -118,6 +118,23 @@ public void init() { </Table> + <!-- configurer creation base locale et import referentiel depuis un server distant --> + <Table id='IMPORT_SERVER_STORAGE' + fill="both" + constraints='"IMPORT_SERVER_STORAGE"'> + <row> + <cell> + <JLabel text='observe.storage.importServerStorage.config'/> + </cell> + </row> + <row> + <cell weighty='1' weightx='1'> + <JPanel id='IMPORT_SERVER_STORAGE_content'/> + </cell> + </row> + + </Table> + <!-- configurer connexion a base distante --> <Table id='USE_REMOTE' constraints='"USE_REMOTE"' fill='both'> 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 b0cee4b..1a5d591 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 @@ -21,7 +21,6 @@ */ package fr.ird.observe.ui.storage.tabs; -import com.google.common.collect.ImmutableSet; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; @@ -302,6 +301,8 @@ public class StorageTabUIHandler { ui.setDescriptionText(t(text)); if (c.equals(ui.IMPORT_REMOTE_STORAGE)) { ui.IMPORT_REMOTE_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); + } else if (c.equals(ui.IMPORT_SERVER_STORAGE)) { + ui.IMPORT_SERVER_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); } else if (c.equals(ui.USE_REMOTE)) { ui.USE_REMOTE_content.add(ui.remoteConfig, BorderLayout.CENTER); } else if (c.equals(ui.USE_SERVER)) { @@ -448,7 +449,8 @@ public class StorageTabUIHandler { // on recopie la configuration de la source d'import ObserveDataSourceConfiguration config = sourceModel.toPGStorageConfig("Import référentiel"); - ui.getModel().getCreationConfigurationDto().setImportReferentialDataSourceConfiguration(config); + //Fixme + //ui.getModel().getCreationConfigurationDto().setImportReferentialDataSourceConfiguration(config); sourceModel.validate(StorageStep.CONFIG); @@ -465,7 +467,8 @@ public class StorageTabUIHandler { // on recopie la configuration de la source d'import ObserveDataSourceConfiguration config = sourceModel.toPGStorageConfig("Import référentiel"); - ui.getModel().getCreationConfigurationDto().setImportDataConfiguration(config, ImmutableSet.<String>of()); + // Fixme + //ui.getModel().getCreationConfigurationDto().setImportDataConfiguration(config, ImmutableSet.<String>of()); sourceModel.validate(StorageStep.CONFIG); 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 dfd2c7e..edc8d1e 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 @@ -1800,6 +1800,8 @@ observe.storage.importRemoteStorage.config= observe.storage.importRemoteStorage.description= observe.storage.importRemoteStorageData.config= observe.storage.importRemoteStorageReferentiel.config= +observe.storage.importServerStorage.config= +observe.storage.importServerStorage.description= observe.storage.internalDump.last.modified= observe.storage.internalDump.not.exist= observe.storage.label.backup= 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 082d33d..5fa9165 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 @@ -1802,6 +1802,8 @@ observe.storage.importRemoteStorage.config=Seleccione la base remota a importar observe.storage.importRemoteStorage.description=Configurar la conección hacia una base remota.\nAntes de continuar, debe validad la conexión. observe.storage.importRemoteStorageData.config= observe.storage.importRemoteStorageReferentiel.config=Escoja la base remota que contenga el referencial a importar +observe.storage.importServerStorage.config= +observe.storage.importServerStorage.description= observe.storage.internalDump.last.modified=(última importación \: %1$td/%1$tm/%1$tY à %1$tH\:%1$tM) observe.storage.internalDump.not.exist=No hay base de embarque. observe.storage.label.backup=Base temporal para backup 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 7884eda..1ca4299 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 @@ -1801,6 +1801,8 @@ observe.storage.importRemoteStorage.config=Sélection de la base distante à imp observe.storage.importRemoteStorage.description=Veuillez configurer la connexion vers une base distante.\nAvant de pouvoir poursuivre, vous devez valider la connexion. observe.storage.importRemoteStorageData.config=Choisir la base distante contenant les données à importer observe.storage.importRemoteStorageReferentiel.config=Choisir la base distante contenant le référentiel à importer +observe.storage.importServerStorage.config= +observe.storage.importServerStorage.description= observe.storage.internalDump.last.modified=(dernier import \: %1$td/%1$tm/%1$tY à %1$tH\:%1$tM) observe.storage.internalDump.not.exist=Pas de base embarquée. observe.storage.label.backup=Base temporaire pour backup diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceDumpProducerServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceDumpProducerServiceController.java new file mode 100644 index 0000000..d93f13d --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceDumpProducerServiceController.java @@ -0,0 +1,29 @@ +package fr.ird.observe.application.web.controller.v1; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.service.DataSourceDumpProducerService; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class DataSourceDumpProducerServiceController extends ObserveAuthenticatedServiceControllerSupport<DataSourceDumpProducerService> implements DataSourceDumpProducerService{ + + public DataSourceDumpProducerServiceController() { + super(DataSourceDumpProducerService.class); + } + + @Override + public byte[] getReferentialDump() { + return service.getReferentialDump(); + } + + @Override + public byte[] getAllDataDump() { + return service.getAllDataDump(); + } + + @Override + public byte[] getDataDump(ImmutableSet<String> importDataIds) { + return service.getDataDump(importDataIds); + } +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java index 15c576d..7ee9d9d 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java @@ -21,11 +21,16 @@ public class VersionAdapter implements JsonSerializer<Version>, JsonDeserializer String versionStr = json.getAsString(); - return Versions.valueOf(versionStr); + Version version = Versions.valueOf(versionStr); + + return version; } @Override public JsonElement serialize(Version src, Type typeOfSrc, JsonSerializationContext context) { - return context.serialize(src.getVersion()); + + JsonElement jsonElement = context.serialize(src.getVersion()); + + return jsonElement; } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java index ce96aa0..ec2f720 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java @@ -10,21 +10,35 @@ public class ProgramDtos extends AbstractProgramDtos { } public static boolean isProgramSeine(ProgramDto programDto) { - return GearType.longline.equals(programDto.getGearType()); + return GearType.seine.equals(programDto.getGearType()); } public static boolean isProgramLongline(ReferenceDto<ProgramDto> programDtoRef) { - GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + boolean result = false; + + if (programDtoRef.getPropertyNames().contains(ProgramDto.PROPERTY_GEAR_TYPE)) { + + GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + + result = GearType.longline.equals(gearType); + } - return GearType.longline.equals(gearType); + return result; } public static boolean isProgramSeine(ReferenceDto<ProgramDto> programDtoRef) { - GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + boolean result = false; + + if (programDtoRef.getPropertyNames().contains(ProgramDto.PROPERTY_GEAR_TYPE)) { + + GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + + result = GearType.seine.equals(gearType); + } - return GearType.longline.equals(gearType); + return result; } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java index cac1eb6..6ebad2b 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java @@ -135,6 +135,9 @@ public class ObserveServiceContextTopia { public File createTemporaryDirectory(String prefix) { Set<PosixFilePermission> posixFilePermissions = PosixFilePermissions.fromString("rwxr-x---"); FileAttribute<Set<PosixFilePermission>> fileAttribute = PosixFilePermissions.asFileAttribute(posixFilePermissions); + if (! getTemporaryDirectoryRoot().exists()) { + getTemporaryDirectoryRoot().mkdirs(); + } try { return Files.createTempDirectory(getTemporaryDirectoryRoot().toPath(), prefix, fileAttribute).toFile(); } catch (IOException e) { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java index b8af7db..72616eb 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilder.java @@ -22,10 +22,12 @@ package fr.ird.observe.services.builder; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; import fr.ird.observe.entities.referentiel.ReferenceEntity; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.ObserveDtoBinders; +import fr.ird.observe.services.dto.ObserveDtosInitializer; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; @@ -75,6 +77,8 @@ public class EntityToReferentialReferenceDtoBuilder<E extends TopiaEntity, D ext Class referenceDtoType = ObserveServiceTopia.getDtoType(topiaEntity.getClass()); propertyValue = EntityToReferenceDtoBuilder.build(referenceDtoType, referentialLocale, topiaEntity); + } else { + propertyValue = transform(propertyValue); } result.setPropertyValue(referentialLocale, propertyName, (Serializable) propertyValue); @@ -87,4 +91,13 @@ public class EntityToReferentialReferenceDtoBuilder<E extends TopiaEntity, D ext } + protected static Object transform(Object propertyValue) { + Function function = ObserveDtosInitializer.ENTITY_TO_DTO_FUNCTIONS.get(propertyValue.getClass()); + if (function != null) { + propertyValue = function.apply(propertyValue); + } + return propertyValue; + } + + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java index b914890..ebc41b6 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java @@ -234,6 +234,8 @@ import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; import org.nuiton.util.beans.BinderModelBuilder; +import java.util.Map; + /** * Pour initialiser tous les binders. * @@ -867,7 +869,7 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { ProgramDto.PROPERTY_BIRDS_OBSERVATION, ProgramDto.PROPERTY_TARGET_DISCARDS_OBSERVATION, ProgramDto.PROPERTY_GEAR_TYPE); - registerReferentialReferenceDtoBinder(ProgramDto.class, Program.class); + registerReferentialReferenceDtoBinder(ProgramDto.class, Program.class, ProgramDto.PROPERTY_GEAR_TYPE); } @Override @@ -1277,22 +1279,22 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initActivitySeineDto() { registerMainDto(ActivitySeineDto.class, ActivitySeine.class, - ActivitySeineDto.PROPERTY_COMMENT, - ActivitySeineDto.PROPERTY_TIME, - ActivitySeineDto.PROPERTY_LATITUDE, - ActivitySeineDto.PROPERTY_LONGITUDE, - ActivitySeineDto.PROPERTY_VESSEL_SPEED, - ActivitySeineDto.PROPERTY_SEA_SURFACE_TEMPERATURE, - ActivitySeineDto.PROPERTY_ERS_ID, - ActivitySeineDto.PROPERTY_VESSEL_ACTIVITY_SEINE, - ActivitySeineDto.PROPERTY_SURROUNDING_ACTIVITY, - ActivitySeineDto.PROPERTY_DETECTION_MODE, - ActivitySeineDto.PROPERTY_REASON_FOR_NO_FISHING, - ActivitySeineDto.PROPERTY_PREVIOUS_FPA_ZONE, - ActivitySeineDto.PROPERTY_CURRENT_FPA_ZONE, - ActivitySeineDto.PROPERTY_NEXT_FPA_ZONE, - ActivitySeineDto.PROPERTY_WIND, - ActivitySeineDto.PROPERTY_LAST_UPDATE + ActivitySeineDto.PROPERTY_COMMENT, + ActivitySeineDto.PROPERTY_TIME, + ActivitySeineDto.PROPERTY_LATITUDE, + ActivitySeineDto.PROPERTY_LONGITUDE, + ActivitySeineDto.PROPERTY_VESSEL_SPEED, + ActivitySeineDto.PROPERTY_SEA_SURFACE_TEMPERATURE, + ActivitySeineDto.PROPERTY_ERS_ID, + ActivitySeineDto.PROPERTY_VESSEL_ACTIVITY_SEINE, + ActivitySeineDto.PROPERTY_SURROUNDING_ACTIVITY, + ActivitySeineDto.PROPERTY_DETECTION_MODE, + ActivitySeineDto.PROPERTY_REASON_FOR_NO_FISHING, + ActivitySeineDto.PROPERTY_PREVIOUS_FPA_ZONE, + ActivitySeineDto.PROPERTY_CURRENT_FPA_ZONE, + ActivitySeineDto.PROPERTY_NEXT_FPA_ZONE, + ActivitySeineDto.PROPERTY_WIND, + ActivitySeineDto.PROPERTY_LAST_UPDATE ); } @@ -1315,12 +1317,12 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initFloatingObjectDto() { registerMainDto(FloatingObjectDto.class, FloatingObject.class, - FloatingObjectDto.PROPERTY_COMMENT, - FloatingObjectDto.PROPERTY_DAYS_AT_SEA_COUNT, - FloatingObjectDto.PROPERTY_SUPPORT_VESSEL_NAME, - FloatingObjectDto.PROPERTY_OBJECT_FATE, - FloatingObjectDto.PROPERTY_OBJECT_OPERATION, - FloatingObjectDto.PROPERTY_OBJECT_TYPE + FloatingObjectDto.PROPERTY_COMMENT, + FloatingObjectDto.PROPERTY_DAYS_AT_SEA_COUNT, + FloatingObjectDto.PROPERTY_SUPPORT_VESSEL_NAME, + FloatingObjectDto.PROPERTY_OBJECT_FATE, + FloatingObjectDto.PROPERTY_OBJECT_OPERATION, + FloatingObjectDto.PROPERTY_OBJECT_TYPE ); } @@ -1348,8 +1350,8 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initFloatingObjectTransmittingBuoyDto() { registerDto(FloatingObjectTransmittingBuoyDto.class, FloatingObject.class, - FloatingObjectTransmittingBuoyDto.PROPERTY_COMMENT, - FloatingObjectTransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY + FloatingObjectTransmittingBuoyDto.PROPERTY_COMMENT, + FloatingObjectTransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY ); } @@ -1459,23 +1461,23 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initSetSeineDto() { registerMainDto(SetSeineDto.class, SetSeine.class, - SetSeineDto.PROPERTY_COMMENT, - SetSeineDto.PROPERTY_START_TIME, - SetSeineDto.PROPERTY_END_PURSING_TIME_STAMP, - SetSeineDto.PROPERTY_END_SET_TIME_STAMP, - SetSeineDto.PROPERTY_MAX_GEAR_DEPTH, - SetSeineDto.PROPERTY_CURRENT_SPEED, - SetSeineDto.PROPERTY_CURRENT_DIRECTION, - SetSeineDto.PROPERTY_SCHOOL_TOP_DEPTH, - SetSeineDto.PROPERTY_SCHOOL_MEAN_DEPTH, - SetSeineDto.PROPERTY_SCHOOL_THICKNESS, - SetSeineDto.PROPERTY_SONAR_USED, - SetSeineDto.PROPERTY_SUPPORT_VESSEL_NAME, - SetSeineDto.PROPERTY_NON_TARGET_DISCARDED, - SetSeineDto.PROPERTY_CURRENT_MEASURE_DEPTH, - SetSeineDto.PROPERTY_SCHOOL_TYPE, - SetSeineDto.PROPERTY_REASON_FOR_NULL_SET, - SetSeineDto.PROPERTY_LAST_UPDATE + SetSeineDto.PROPERTY_COMMENT, + SetSeineDto.PROPERTY_START_TIME, + SetSeineDto.PROPERTY_END_PURSING_TIME_STAMP, + SetSeineDto.PROPERTY_END_SET_TIME_STAMP, + SetSeineDto.PROPERTY_MAX_GEAR_DEPTH, + SetSeineDto.PROPERTY_CURRENT_SPEED, + SetSeineDto.PROPERTY_CURRENT_DIRECTION, + SetSeineDto.PROPERTY_SCHOOL_TOP_DEPTH, + SetSeineDto.PROPERTY_SCHOOL_MEAN_DEPTH, + SetSeineDto.PROPERTY_SCHOOL_THICKNESS, + SetSeineDto.PROPERTY_SONAR_USED, + SetSeineDto.PROPERTY_SUPPORT_VESSEL_NAME, + SetSeineDto.PROPERTY_NON_TARGET_DISCARDED, + SetSeineDto.PROPERTY_CURRENT_MEASURE_DEPTH, + SetSeineDto.PROPERTY_SCHOOL_TYPE, + SetSeineDto.PROPERTY_REASON_FOR_NULL_SET, + SetSeineDto.PROPERTY_LAST_UPDATE ); } @@ -1499,8 +1501,8 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initSetSeineTargetCatchDto() { registerDto(SetSeineTargetCatchDto.class, SetSeine.class, - SetSeineTargetCatchDto.PROPERTY_TARGET_CATCH, - SetSeineTargetCatchDto.PROPERTY_LAST_UPDATE + SetSeineTargetCatchDto.PROPERTY_TARGET_CATCH, + SetSeineTargetCatchDto.PROPERTY_LAST_UPDATE ); } @@ -1544,11 +1546,11 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { @Override public void initTransmittingBuoyDto() { registerMainDto(TransmittingBuoyDto.class, TransmittingBuoy.class, - TransmittingBuoyDto.PROPERTY_CODE, - TransmittingBuoyDto.PROPERTY_BRAND, - TransmittingBuoyDto.PROPERTY_OWNERSHIP, - TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_OPERATION, - TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_TYPE + TransmittingBuoyDto.PROPERTY_CODE, + TransmittingBuoyDto.PROPERTY_BRAND, + TransmittingBuoyDto.PROPERTY_OWNERSHIP, + TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_OPERATION, + TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_TYPE ); } @@ -1740,101 +1742,109 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { return builder; } - protected static <Source extends IdDto, Target> void addDtoToEntityFunctions(BinderModelBuilder<Source, Target> builder) { - - builder.addFunction(fr.ird.observe.services.dto.constants.GearType.class, new Function<fr.ird.observe.services.dto.constants.GearType, fr.ird.observe.entities.constants.GearType>() { - - @Override - public fr.ird.observe.entities.constants.GearType apply(fr.ird.observe.services.dto.constants.GearType input) { - return fr.ird.observe.entities.constants.GearType.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.ReferenceStatus.class, new Function<fr.ird.observe.services.dto.constants.ReferenceStatus, fr.ird.observe.entities.constants.ReferenceStatus>() { - - @Override - public fr.ird.observe.entities.constants.ReferenceStatus apply(fr.ird.observe.services.dto.constants.ReferenceStatus input) { - return fr.ird.observe.entities.constants.ReferenceStatus.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.seine.Ownership.class, new Function<fr.ird.observe.services.dto.constants.seine.Ownership, fr.ird.observe.entities.constants.seine.Ownership>() { - - @Override - public fr.ird.observe.entities.constants.seine.Ownership apply(fr.ird.observe.services.dto.constants.seine.Ownership input) { - return fr.ird.observe.entities.constants.seine.Ownership.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.seine.SchoolType.class, new Function<fr.ird.observe.services.dto.constants.seine.SchoolType, fr.ird.observe.entities.constants.seine.SchoolType>() { + public static ImmutableMap<Class, Function> DTO_TO_ENTITY_FUNCTIONS = ImmutableMap.<Class, Function>builder() + .put(fr.ird.observe.services.dto.constants.GearType.class, new Function<fr.ird.observe.services.dto.constants.GearType, fr.ird.observe.entities.constants.GearType>() { + + @Override + public fr.ird.observe.entities.constants.GearType apply(fr.ird.observe.services.dto.constants.GearType input) { + return fr.ird.observe.entities.constants.GearType.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.ReferenceStatus.class, new Function<fr.ird.observe.services.dto.constants.ReferenceStatus, fr.ird.observe.entities.constants.ReferenceStatus>() { + + @Override + public fr.ird.observe.entities.constants.ReferenceStatus apply(fr.ird.observe.services.dto.constants.ReferenceStatus input) { + return fr.ird.observe.entities.constants.ReferenceStatus.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.seine.Ownership.class, new Function<fr.ird.observe.services.dto.constants.seine.Ownership, fr.ird.observe.entities.constants.seine.Ownership>() { + + @Override + public fr.ird.observe.entities.constants.seine.Ownership apply(fr.ird.observe.services.dto.constants.seine.Ownership input) { + return fr.ird.observe.entities.constants.seine.Ownership.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.seine.SchoolType.class, new Function<fr.ird.observe.services.dto.constants.seine.SchoolType, fr.ird.observe.entities.constants.seine.SchoolType>() { + + @Override + public fr.ird.observe.entities.constants.seine.SchoolType apply(fr.ird.observe.services.dto.constants.seine.SchoolType input) { + return fr.ird.observe.entities.constants.seine.SchoolType.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation.class, new Function<fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation, fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation>() { + + @Override + public fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation apply(fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation input) { + return fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation.valueOf(input.name()); + } + }) + .put(fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource.class, new Function<fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource, fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource>() { + + @Override + public fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource apply(fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource input) { + return fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource.valueOf(input.name()); + } + }) + .build(); + + public static ImmutableMap<Class, Function> ENTITY_TO_DTO_FUNCTIONS = ImmutableMap.<Class, Function>builder() + .put(fr.ird.observe.entities.constants.GearType.class, new Function<fr.ird.observe.entities.constants.GearType, fr.ird.observe.services.dto.constants.GearType>() { + + @Override + public fr.ird.observe.services.dto.constants.GearType apply(fr.ird.observe.entities.constants.GearType input) { + return fr.ird.observe.services.dto.constants.GearType.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.ReferenceStatus.class, new Function<fr.ird.observe.entities.constants.ReferenceStatus, fr.ird.observe.services.dto.constants.ReferenceStatus>() { + + @Override + public fr.ird.observe.services.dto.constants.ReferenceStatus apply(fr.ird.observe.entities.constants.ReferenceStatus input) { + return fr.ird.observe.services.dto.constants.ReferenceStatus.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.seine.Ownership.class, new Function<fr.ird.observe.entities.constants.seine.Ownership, fr.ird.observe.services.dto.constants.seine.Ownership>() { + + @Override + public fr.ird.observe.services.dto.constants.seine.Ownership apply(fr.ird.observe.entities.constants.seine.Ownership input) { + return fr.ird.observe.services.dto.constants.seine.Ownership.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.seine.SchoolType.class, new Function<fr.ird.observe.entities.constants.seine.SchoolType, fr.ird.observe.services.dto.constants.seine.SchoolType>() { + + @Override + public fr.ird.observe.services.dto.constants.seine.SchoolType apply(fr.ird.observe.entities.constants.seine.SchoolType input) { + return fr.ird.observe.services.dto.constants.seine.SchoolType.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation.class, new Function<fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation, fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation>() { + + @Override + public fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation apply(fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation input) { + return fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation.valueOf(input.name()); + } + }) + .put(fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource.class, new Function<fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource, fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource>() { + + @Override + public fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource apply(fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource input) { + return fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource.valueOf(input.name()); + } + }) + .build(); - @Override - public fr.ird.observe.entities.constants.seine.SchoolType apply(fr.ird.observe.services.dto.constants.seine.SchoolType input) { - return fr.ird.observe.entities.constants.seine.SchoolType.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation.class, new Function<fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation, fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation>() { - @Override - public fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation apply(fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation input) { - return fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation.valueOf(input.name()); - } - }); - builder.addFunction(fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource.class, new Function<fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource, fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource>() { + protected static <Source extends IdDto, Target> void addDtoToEntityFunctions(BinderModelBuilder<Source, Target> builder) { - @Override - public fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource apply(fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource input) { - return fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource.valueOf(input.name()); - } - }); + for(Map.Entry<Class, Function> entry : DTO_TO_ENTITY_FUNCTIONS.entrySet()) { + builder.addFunction(entry.getKey(), entry.getValue()); + } } protected static <Source extends TopiaEntity, Target> void addEntityToDtoFunctions(BinderModelBuilder<Source, Target> builder) { - builder.addFunction(fr.ird.observe.entities.constants.GearType.class, new Function<fr.ird.observe.entities.constants.GearType, fr.ird.observe.services.dto.constants.GearType>() { - - @Override - public fr.ird.observe.services.dto.constants.GearType apply(fr.ird.observe.entities.constants.GearType input) { - return fr.ird.observe.services.dto.constants.GearType.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.ReferenceStatus.class, new Function<fr.ird.observe.entities.constants.ReferenceStatus, fr.ird.observe.services.dto.constants.ReferenceStatus>() { - - @Override - public fr.ird.observe.services.dto.constants.ReferenceStatus apply(fr.ird.observe.entities.constants.ReferenceStatus input) { - return fr.ird.observe.services.dto.constants.ReferenceStatus.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.seine.Ownership.class, new Function<fr.ird.observe.entities.constants.seine.Ownership, fr.ird.observe.services.dto.constants.seine.Ownership>() { - - @Override - public fr.ird.observe.services.dto.constants.seine.Ownership apply(fr.ird.observe.entities.constants.seine.Ownership input) { - return fr.ird.observe.services.dto.constants.seine.Ownership.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.seine.SchoolType.class, new Function<fr.ird.observe.entities.constants.seine.SchoolType, fr.ird.observe.services.dto.constants.seine.SchoolType>() { - - @Override - public fr.ird.observe.services.dto.constants.seine.SchoolType apply(fr.ird.observe.entities.constants.seine.SchoolType input) { - return fr.ird.observe.services.dto.constants.seine.SchoolType.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation.class, new Function<fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation, fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation>() { - - @Override - public fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation apply(fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperation input) { - return fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation.valueOf(input.name()); - } - }); - - builder.addFunction(fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource.class, new Function<fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource, fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource>() { - - @Override - public fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource apply(fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSource input) { - return fr.ird.observe.services.dto.constants.seine.NonTargetCatchComputedValueSource.valueOf(input.name()); - } - }); + for(Map.Entry<Class, Function> entry : ENTITY_TO_DTO_FUNCTIONS.entrySet()) { + builder.addFunction(entry.getKey(), entry.getValue()); + } } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java new file mode 100644 index 0000000..c64795b --- /dev/null +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/builder/EntityToReferentialReferenceDtoBuilderTest.java @@ -0,0 +1,57 @@ +package fr.ird.observe.services.builder; + +import fr.ird.observe.entities.constants.GearType; +import fr.ird.observe.entities.constants.ReferenceStatus; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.entities.referentiel.ProgramImpl; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.util.DateUtil; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class EntityToReferentialReferenceDtoBuilderTest { + + @BeforeClass + public static void setUp() throws Exception { + ObserveServiceTopia.init(); + } + + @Test + public void testCopy() { + + Program program = new ProgramImpl(); + program.setCode("code"); + program.setNeedComment(true); + program.setStatus(ReferenceStatus.enabled); + program.setLabel1("label1"); + program.setLabel2("label2"); + program.setLabel3("label3"); + program.setLabel4("label4"); + program.setLabel5("label5"); + program.setLabel6("label6"); + program.setLabel7("label7"); + program.setLabel8("label8"); + program.setTopiaId("Program1"); + program.setStartDate(DateUtil.createDate(1, 1, 1)); + program.setEndDate(DateUtil.createDate(1, 1, 2)); + program.setGearType(GearType.seine); + program.setTargetDiscardsObservation(1); + + ReferentialReferenceDto<ProgramDto> referenceProgramDto = EntityToReferentialReferenceDtoBuilder.build(ProgramDto.class, ReferentialLocale.FR, program); + + // On vérife que le program a bien été copié + Assert.assertEquals(program.getTopiaId(), referenceProgramDto.getId()); + Assert.assertEquals(program.getCode(), referenceProgramDto.getPropertyValue(ProgramDto.PROPERTY_CODE)); + Assert.assertEquals(program.getLabel2(), referenceProgramDto.getPropertyValue("label")); + Assert.assertEquals(fr.ird.observe.services.dto.constants.GearType.seine, referenceProgramDto.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE)); + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 726eaba6cd46434d131daa36fd081884ef24a374 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Sep 24 09:46:29 2015 +0200 chargement de la base de données local au démarage (refs #7528) --- .../java/fr/ird/observe/ObserveServiceHelper.java | 42 ++++---- .../observe/ObserveSwingApplicationContext.java | 118 ++++++++------------- 2 files changed, 65 insertions(+), 95 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java index e4b7f05..fbb4a49 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java @@ -25,11 +25,15 @@ import fr.ird.observe.business.gps.GPSService; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.business.validation.ValidationService; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.IOException; +import static org.nuiton.i18n.I18n.t; + public class ObserveServiceHelper { /** Logger. */ @@ -96,8 +100,6 @@ public class ObserveServiceHelper { log.debug("Closing service helper..."); } context = null; - //FIXME -// AbstractDataSourceMigration.setApplicationConfigSupplier(null); // application fermée closed = true; @@ -251,26 +253,24 @@ public class ObserveServiceHelper { * @return la service de persistance initialisé (mais non ouvert) * @throws IOException si une erreur d'IO * @throws IllegalStateException si la base locale n'existe pas - * @see DataSource + * @see ObserveSwingDataSource */ - //FIXME -// public static H2DataSource newLocalStorageService(ObserveSwingApplicationConfig config) throws IOException, IllegalStateException { -// -// -// H2DataSourceConfig c = -// config.toH2StorageConfig(n("observe.storage.label.local")); -// -// c.init(); -// -// if (!c.isStorageExists()) { -// throw new IllegalStateException( -// "local base must exist, when using this method (" + -// c.getStorageDirectory() + ')'); -// } -// -// H2DataSource service = DataSourceFactory.newService(c); -// return service; -// } + 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 = new ObserveSwingDataSource(dataSourceConfigurationH2); + + return dataSource; + } + + /** * Teste si la base locale existe. 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 5dc2fd9..ba4b340 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 @@ -44,6 +44,8 @@ import fr.ird.observe.services.dto.longline.TripLonglineStubDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ProgramDtos; import fr.ird.observe.services.dto.seine.TripSeineStubDto; +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.longline.TripLonglineService; import fr.ird.observe.services.service.seine.TripSeineService; @@ -130,15 +132,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { public static final JAXXContextEntryDef<GPSService> GPS_SERVICE_ENTRY_DEF = JAXXUtil.newContextEntryDef(GPSService.class); - //FIXME -// /** the jaxx context entry to store the consolidate data service */ -// public static final JAXXContextEntryDef<ConsolidateDataService> CONSOLIDATE_DATA_SERVICE_ENTRY_DEF = -// JAXXUtil.newContextEntryDef(ConsolidateDataService.class); - //FIXME -// /** the jaxx context entry to store the data service */ -// public static final JAXXContextEntryDef<DataService> DATA_SERVICE_ENTRY_DEF = -// JAXXUtil.newContextEntryDef(DataService.class); - /** the jaxx context entry to store the data service */ public static final JAXXContextEntryDef<DataContext> DATA_CONTEXT_ENTRY_DEF = JAXXUtil.newContextEntryDef(DataContext.class); @@ -329,21 +322,18 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { } // fermeture du context de données - if (getDataSource() != null) { + ObserveSwingDataSource dataSource = getDataSource(); + if (getDataSource() != null && dataSource.isOpen()) { + dataSource.close(); setDataSource(null); } getValidationContext().closeDataSource(); - // fermeture des services de persistances ouverts - //FIXME -// DataSourceFactory.dispose(); - // fermeture du context principal clear(); - //FIXME -// ObserveServiceHelper.close(); + ObserveServiceHelper.close(); } @@ -481,34 +471,28 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { public void initStorage(ObserveSwingApplicationConfig config, ObserveMainUI mainUI, boolean askToCreate) { - try { - if (config.isLocalStorageExist()) { - // une base locale existe, on l'ouvre - loadLocalStorage(); + if (config.isLocalStorageExist()) { + // une base locale existe, on l'ouvre + if (loadLocalStorage()) { // on peut retourner sur cette base mainUI.setMode(ObserveUIMode.DB); - } else { + } + } else { - // on peut retourner sur cette base - mainUI.setMode(ObserveUIMode.NO_DB); + // on peut retourner sur cette base + mainUI.setMode(ObserveUIMode.NO_DB); - if (askToCreate) { + 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")); - } - } catch (Exception e) { - ErrorDialogUI.showError(e); - if (log.isErrorEnabled()) { - log.error(e.getMessage(), e); + // 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, @@ -551,48 +535,35 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { } } - protected void loadLocalStorage() throws Exception { + protected boolean loadLocalStorage() { + boolean success = false; // chargement de la base locale // création de la source de données sur la base locale - //FIXME -// DataSource service = -// ObserveServiceHelper.newLocalStorageService(getConfig()); -// -// // la source sera utilisée dans les ui -// prepareMainStorage(service); -// -// if (log.isInfoEnabled()) { -// log.info(t("observe.init.local.db.detected", service.getLabel())); -// } -// -// // la base locale existe, on l'ouvre -// try { -// service.doOpen(); -// } catch (Exception eee) { -// // la base n'a pas pu être ouverte -// -// Throwable cause = eee.getCause(); -// while (cause != null && cause.getCause() != null) { -// cause = cause.getCause(); -// } -// if (cause != null) { -// if (cause instanceof JdbcSQLException) { -// JdbcSQLException error = (JdbcSQLException) cause; -// if (error.getMessage().contains("Locked")) { -// JOptionPane.showMessageDialog( -// null, -// t("observe.error.open.first.db"), -// t("observe.title.error.dialog"), -// JOptionPane.ERROR_MESSAGE -// ); -// return; -// } -// } -// } -// throw eee; -// } + ObserveSwingDataSource dataSource = ObserveServiceHelper.newLocalStorageService(getConfig()); + + // la source sera utilisée dans les ui + prepareMainStorage(dataSource); + setDataSource(dataSource); + + if (log.isInfoEnabled()) { + log.info(t("observe.init.local.db.detected", dataSource.getLabel())); + } + + // la base locale existe, on l'ouvre + try { + dataSource.open(); + success = true; + } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException e) { + JOptionPane.showMessageDialog( + null, + e.getMessage(), + t("observe.title.error.dialog"), + JOptionPane.ERROR_MESSAGE + ); + } + return success; } /** @@ -686,7 +657,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { } protected void openOnUI(ObserveSwingDataSource source) { - // FIXME // on rend le service disponible dans le service de validation //getValidationContext().setDataSource(source); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 9076109ed64da2e89d50d25fd3b4739558e26c38 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Sep 24 19:06:15 2015 +0200 Fix merge --- .../java/fr/ird/observe/ObserveServiceHelper.java | 1 + .../observe/ObserveSwingApplicationContext.java | 8 +- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 2 - .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 8 +- .../observe/ui/admin/export/ExportUIHandler.java | 2 +- .../ObsoleteEntityListCellRenderer.java | 2 +- .../ird/observe/ui/content/ContentUIHandler.java | 24 +++--- .../observe/ui/content/ContentUIInitializer.java | 87 +++++++++++++--------- .../content/impl/longline/BranchlineUIHandler.java | 15 +--- .../LonglineDetailCompositionUIHandler.java | 8 +- .../LonglineGlobalCompositionUIHandler.java | 10 --- .../impl/longline/SetLonglineUIHandler.java | 11 --- .../ActivitySeineObservedSystemUIHandler.java | 11 --- ...ngObjectTransmittingBuoyOperationUIHandler.java | 16 +--- .../impl/seine/FloatingObjectUIHandler.java | 11 --- .../ui/content/impl/seine/SetSeineUIHandler.java | 11 --- .../ui/content/list/ContentListUIHandler.java | 23 ++---- .../ui/content/open/ContentOpenableUIHandler.java | 10 --- .../ui/content/ref/ContentReferenceUIHandler.java | 31 +++++--- .../ui/content/ref/ReferenceHomeUIHandler.java | 11 --- .../ref/ReferentialContentUIInitializer.java | 17 ----- .../ui/content/ref/UniqueKeyTableModel.java | 2 +- .../ui/content/table/ContentTableUIHandler.java | 23 ++---- .../impl/longline/CatchLonglineUIHandler.java | 14 ++-- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 15 +--- .../ird/observe/ui/storage/StorageUIHandler.java | 2 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 1 - .../configuration/ObserveDataSourceConnection.java | 1 + .../services/dto/referential/ReferentialDtos.java | 10 ++- 29 files changed, 142 insertions(+), 245 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java index fbb4a49..e174736 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java @@ -27,6 +27,7 @@ import fr.ird.observe.business.validation.ValidationService; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.ui.DecoratorService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 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 ba4b340..756316c 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 @@ -23,7 +23,6 @@ package fr.ird.observe; import com.google.common.base.Preconditions; import fr.ird.observe.business.BinderService; -import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.gps.GPSService; import fr.ird.observe.business.validation.ObserveValidator; @@ -49,6 +48,7 @@ import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.services.service.longline.TripLonglineService; import fr.ird.observe.services.service.seine.TripSeineService; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; @@ -141,7 +141,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { JAXXUtil.newContextEntryDef(ObserveSwingDataSource.class); - public static final JAXXContextEntryDef<ValidationContext> VALIDATION_CONTEXT_ENTRY_DEF = JAXXUtil.newContextEntryDef(ValidationContext.class); @@ -574,7 +573,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { public void prepareMainStorage(ObserveSwingDataSource dataSource) { - dataSource.addDataSourceListener(new ObserveSwingDataSourceListenerAdapter() { @Override @@ -709,12 +707,12 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { log.info("- " + programName); if (ProgramDtos.isProgramSeine(programDtoRef)) { List<TripSeineStubDto> tripSeines = tripSeineService.getTripSeineByProgram(programDtoRef.getId()); - for (TripSeineStubDto tripSeine :tripSeines) { + for (TripSeineStubDto tripSeine : tripSeines) { log.info(" - " + tripSeine.getVesselLabel() + " " + tripSeine.getStartDate() + " - " + tripSeine.getEndDate()); } } else if (ProgramDtos.isProgramLongline(programDtoRef)) { List<TripLonglineStubDto> tripLonglines = tripLonglineService.getTripLonglineStubByProgram(programDtoRef.getId()); - for (TripLonglineStubDto tripLongline :tripLonglines) { + for (TripLonglineStubDto tripLongline : tripLonglines) { log.info(" - " + tripLongline.getVesselLabel() + " " + tripLongline.getStartDate() + " - " + tripLongline.getEndDate()); } } 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 ba37f9a..c9b4d70 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 @@ -22,8 +22,6 @@ package fr.ird.observe.ui; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.ui.util.table.ObserveBooleanTableCellRenderer; import jaxx.runtime.FileChooserUtil; 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 60e18bb..eec3d9f 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 @@ -21,29 +21,27 @@ */ package fr.ird.observe.ui.admin; +import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.BinderService; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.ObserveRunner; import fr.ird.observe.business.SendMessageAble; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.gps.GPSService; +import fr.ird.observe.business.validation.ValidationService; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; import fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel; import fr.ird.observe.ui.tree.ObserveTreeHelper; -import fr.ird.observe.business.validation.ValidationService; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JTree; -import javax.swing.tree.TreeModel; import java.io.PrintWriter; import java.io.StringWriter; import java.util.concurrent.Callable; 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 5afccf2..c4f72f2 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 @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.export; -import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java index 2ddca0a..462d322 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.admin.synchronize; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.services.dto.AbstractObserveDto; import org.nuiton.decorator.Decorator; 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 425d75a..ed5acc4 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 @@ -21,13 +21,9 @@ */ package fr.ird.observe.ui.content; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.BinderService; -import fr.ird.observe.services.dto.FormDto; -import fr.ird.observe.services.dto.IdDtos; -import fr.ird.observe.services.service.ReferentialService; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; @@ -35,6 +31,7 @@ import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.actions.shared.AbstractUIAction; import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; @@ -56,8 +53,14 @@ import org.nuiton.decorator.JXPathDecorator; import org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; -import java.awt.*; +import javax.swing.AbstractButton; +import javax.swing.ActionMap; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JToolBar; +import javax.swing.UIManager; +import java.awt.Component; import java.util.ArrayList; import java.util.List; @@ -69,7 +72,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public abstract class ContentUIHandler<E extends AbstractObserveDto> { +public abstract class ContentUIHandler<E extends IdDto> { /** Logger */ static private final Log log = LogFactory.getLog(ContentUIHandler.class); @@ -143,7 +146,7 @@ public abstract class ContentUIHandler<E extends AbstractObserveDto> { errorIcon = UIManager.getIcon("action.error"); } - public static <E extends AbstractObserveDto> ContentUIHandler<E> newHandler(ObserveContentUI<E> ui) { + public static <E extends IdDto> ContentUIHandler<E> newHandler(ObserveContentUI<E> ui) { String uiName = ui.getClass().getName(); String modelName = uiName + "Handler"; @@ -357,7 +360,8 @@ public abstract class ContentUIHandler<E extends AbstractObserveDto> { public void initUI() throws Exception { ContentUIInitializer<E, ObserveContentUI<E>> uiInitializer = new ContentUIInitializer<E, ObserveContentUI<E>>(ui); - uiInitializer.initUI(getDataSource()); + //FIXME + uiInitializer.initUI(); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java index 6516573..1ae7eee 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java @@ -25,17 +25,13 @@ package fr.ird.observe.ui.content; import com.google.common.base.Predicate; import com.google.common.collect.Lists; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.validation.ObserveValidator; +import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.ReferenceDto; -import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.constants.ReferenceStatus; import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialDtos; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.actions.shared.AbstractUIAction; @@ -69,10 +65,25 @@ import org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor; import org.nuiton.jaxx.widgets.select.FilterableDoubleList; import org.nuiton.util.DateUtil; -import javax.swing.*; +import javax.swing.AbstractButton; +import javax.swing.ActionMap; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JScrollBar; +import javax.swing.JSpinner; +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.ListCellRenderer; +import javax.swing.SwingUtilities; import javax.swing.border.LineBorder; import javax.swing.table.TableCellEditor; -import java.awt.*; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusAdapter; @@ -100,7 +111,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 3.7 */ -public class ContentUIInitializer<E extends AbstractObserveDto, UI extends ObserveContentUI<E>> { +public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E>> { public static final String OBSERVE_ACTION = "observeAction"; @@ -198,7 +209,8 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser // initialisation des éditeurs - init(dataSource); + //FIXME +// init(); Set<String> doNotBlockComponentIds = new HashSet<String>(); @@ -212,7 +224,8 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser } if (o instanceof AbstractObserveDto) { - init(dataSource, (AbstractObserveDto) o); + //FIXME +// init((AbstractObserveDto) o); continue; } @@ -322,6 +335,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser final String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_RESET_PROPERTY_NAME); if (propertyName != null) { editor.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { JavaBeanObjectUtil.setProperty(getBean(), propertyName, null); @@ -366,7 +380,9 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser } beanComboBox.setI18nPrefix("observe.common."); beanComboBox.setMinimumSize(new Dimension(0, 24)); - prepareBeanComboBox(beanComboBox); + //FIXME + Class entityClass = null; + prepareBeanComboBox(entityClass, beanComboBox); } @SuppressWarnings("unchecked") @@ -390,6 +406,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser log.debug("addDecorator to list " + jlist.getName()); } + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<AbstractObserveDto> decorator = decoratorService.getDecoratorByType(klass); jlist.putClientProperty("decorator", decorator); } @@ -413,7 +430,9 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser log.info("init list for " + beanList.getBeanType()); } - prepareEntityList(beanList); + //FIXME + Class<? extends IdDto> entityClass = null; + prepareEntityList(entityClass, beanList); } @@ -461,6 +480,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser final String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); if (propertyName != null) { editor.addKeyListener(new KeyAdapter() { + @Override public void keyReleased(KeyEvent e) { JTextField source = (JTextField) e.getSource(); @@ -476,6 +496,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser final String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); if (propertyName != null) { editor.addKeyListener(new KeyAdapter() { + @Override public void keyReleased(KeyEvent e) { JTextArea source = (JTextArea) e.getSource(); @@ -493,6 +514,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser final String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); if (propertyName != null) { editor.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent event) { if (event.getStateChange() == ItemEvent.SELECTED) { @@ -529,6 +551,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser final String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); if (propertyName != null) { editor.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent event) { Boolean newValue = ((JCheckBox) event.getSource()).isSelected(); @@ -553,6 +576,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser final String propertyName = (String) picker.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); if (propertyName != null) { picker.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { JXDatePicker source = (JXDatePicker) e.getSource(); @@ -571,9 +595,11 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser protected void addAutoSelectOnFocus(JTextField jTextField) { jTextField.addFocusListener(new FocusAdapter() { + @Override public void focusGained(final FocusEvent e) { SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { JTextField source = (JTextField) e.getSource(); @@ -605,17 +631,14 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser * Remplit le modèle d'une liste graphique avec la liste des entités d'un * type donné sur un service de persistance donné. * - * @param storageService le service de persistance à utiliser pour - * récupérer les entités - * @param entityClass le type de l'entité - * @param list le component graphique à initialiser + * @param entityClass le type de l'entité + * @param list le component graphique à initialiser * @throws DataSourceException si un problème lors de la récupération * des entités * @since 1.5 */ - protected <E extends AbstractObserveDto> void prepareEntityList(DataSource storageService, - Class<E> entityClass, - FilterableDoubleList<E> list) throws DataSourceException { + protected <E extends AbstractObserveDto> void prepareEntityList(Class<E> entityClass, + FilterableDoubleList<E> list) { ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); @@ -665,17 +688,14 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser * Remplit le modèle d'une liste graphique avec la liste des entités d'un * type donné sur un service de persistance donné. * - * @param storageService le service de persistance à utiliser pour - * récupérer les entités - * @param entityClass le type de l'entité - * @param list le component graphique à initialiser + * @param entityClass le type de l'entité + * @param list le component graphique à initialiser * @throws DataSourceException si un problème lors de la récupération * des entités * @since 1.5 */ - protected <E extends AbstractObserveDto> void prepareEntityList(DataSource storageService, - Class<E> entityClass, - BeanListHeader<E> list) throws DataSourceException { + protected <E extends AbstractObserveDto> void prepareEntityList(Class<E> entityClass, + BeanListHeader<E> list) { ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); @@ -724,18 +744,13 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser * Prépare un component de choix d'entités pour un type d'entité donné et * pour un service de persistance donné. * - * @param <E> le type de l'entité - * @param storageService le service de persistance à utiliser pour récupérer - * les entités - * @param entityClass le type de l'entité - * @param comboBox le component graphique à initialiser + * @param <E> le type de l'entité + * @param entityClass le type de l'entité + * @param comboBox le component graphique à initialiser * @throws DataSourceException si un pb pendant la récupération des * entités */ - protected <E extends AbstractObserveDto> void prepareBeanComboBox( - DataSource storageService, - Class<E> entityClass, - BeanComboBox<E> comboBox) throws DataSourceException { + protected <E extends AbstractObserveDto> void prepareBeanComboBox(Class<E> entityClass, BeanComboBox<E> comboBox) { ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); @@ -786,6 +801,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser final ListCellRenderer renderer = comboBox.getCombobox().getRenderer(); ListCellRenderer toolTipRenderer = new ListCellRenderer() { + @Override public Component getListCellRendererComponent(JList list, Object value, @@ -817,6 +833,7 @@ public class ContentUIInitializer<E extends AbstractObserveDto, UI extends Obser // listen on cache modification BeanComboBoxPropertyChangeListener listener = new BeanComboBoxPropertyChangeListener(entityClass, comboBox) { + @Override public void propertyChange(PropertyChangeEvent evt) { if (log.isDebugEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/BranchlineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/BranchlineUIHandler.java index 04ab5e2..568475e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/BranchlineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/BranchlineUIHandler.java @@ -25,7 +25,6 @@ package fr.ird.observe.ui.content.impl.longline; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.BranchlineDto; import fr.ird.observe.ui.UIHelper; @@ -41,7 +40,7 @@ import org.nuiton.decorator.Decorator; import org.nuiton.i18n.I18n; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; +import javax.swing.JOptionPane; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import java.util.HashSet; @@ -84,7 +83,7 @@ public class BranchlineUIHandler extends ContentUIHandler<BranchlineDto> { getModel().setBranchline(branchline); //FIXME // getLoadBinder().copy(branchline, getBean()); - loadBean(branchline); +// loadBean(branchline); if (branchline == null) { @@ -260,16 +259,6 @@ public class BranchlineUIHandler extends ContentUIHandler<BranchlineDto> { } - @Override - protected FormDto<BranchlineDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<BranchlineDto> loadToReadDto(String id) { - return null; - } - public boolean tryToQuit() { boolean canContinue; 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 2074eb1..56da8e2 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 @@ -25,7 +25,6 @@ package fr.ird.observe.ui.content.impl.longline; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.entities.longline.SectionTemplate; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; @@ -45,7 +44,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; +import javax.swing.JOptionPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.TableModelEvent; @@ -53,10 +52,8 @@ import javax.swing.event.TableModelListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; import static org.nuiton.i18n.I18n.t; @@ -312,7 +309,8 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong this.branchlineDecorator = getDecoratorService().getDecoratorByType(BranchlineDto.class); LonglineDetailCompositionUIInitializer uiInitializer = new LonglineDetailCompositionUIInitializer(getUi()); - uiInitializer.initUI(getDataSource()); + //FIXME +// uiInitializer.initUI(getDataSource()); LonglineDetailCompositionUI ui1 = getUi(); 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 cb6f8db..c9d1708 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 @@ -25,7 +25,6 @@ package fr.ird.observe.ui.content.impl.longline; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; import fr.ird.observe.ui.content.ContentMode; @@ -221,13 +220,4 @@ public class LonglineGlobalCompositionUIHandler extends ContentUIHandler<SetLong getUi().getBaitsCompositionUI().getHandler().afterSave(refresh); } - @Override - protected FormDto<SetLonglineDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<SetLonglineDto> loadToReadDto(String id) { - return null; - } } \ 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 d5ded97..0ed76f6 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 @@ -25,7 +25,6 @@ package fr.ird.observe.ui.content.impl.longline; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; import fr.ird.observe.ui.content.ContentMode; @@ -288,16 +287,6 @@ public class SetLonglineUIHandler extends ContentUIHandler<SetLonglineDto> { } - @Override - protected FormDto<SetLonglineDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<SetLonglineDto> loadToReadDto(String id) { - return null; - } - //FIXME // @Override // protected SetLongline onPreCreate(TopiaContext tx, 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 07434b3..fa39ae2 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 @@ -24,7 +24,6 @@ package fr.ird.observe.ui.content.impl.seine; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.ActivitySeineObservedSystemDto; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; @@ -99,16 +98,6 @@ public class ActivitySeineObservedSystemUIHandler extends ContentUIHandler<Activ super.startEditUI(binding); } - @Override - protected FormDto<ActivitySeineObservedSystemDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<ActivitySeineObservedSystemDto> loadToReadDto(String id) { - return null; - } - //FIXME // @Override // protected boolean doSave(ActivitySeine bean, 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 5e24206..1d7d3f0 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 @@ -24,7 +24,6 @@ package fr.ird.observe.ui.content.impl.seine; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.constants.seine.Ownership; import fr.ird.observe.services.dto.constants.seine.TypeTransmittingBuoyOperation; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; @@ -39,8 +38,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; -import java.awt.*; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import java.awt.GridLayout; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -303,16 +303,6 @@ public class FloatingObjectTransmittingBuoyOperationUIHandler extends ContentUIH resetEditUI(); } - @Override - protected FormDto<FloatingObjectDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<FloatingObjectDto> loadToReadDto(String id) { - return null; - } - protected void changeTypeOperation(TypeTransmittingBuoyOperation typeOperation, boolean reset) { FloatingObjectTransmittingBuoyOperationUI ui = getUi(); 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 dd172d4..165703c 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 @@ -24,7 +24,6 @@ package fr.ird.observe.ui.content.impl.seine; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; import fr.ird.observe.ui.content.ContentMode; @@ -221,16 +220,6 @@ public class FloatingObjectUIHandler extends ContentUIHandler<FloatingObjectDto> } } - @Override - protected FormDto<FloatingObjectDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<FloatingObjectDto> loadToReadDto(String id) { - return null; - } - //FIXME // @Override // protected boolean doDelete(FloatingObject bean, 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 b1ce26d..7c0201b 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 @@ -24,7 +24,6 @@ package fr.ird.observe.ui.content.impl.seine; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.constants.seine.SchoolType; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.SetSeineDto; @@ -355,16 +354,6 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeineDto> { } } - @Override - protected FormDto<SetSeineDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<SetSeineDto> loadToReadDto(String id) { - return null; - } - //FIXME // @Override // protected boolean doDelete(SetSeine bean, diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/ContentListUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/ContentListUIHandler.java index 89b3221..b9aa0c0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/ContentListUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/list/ContentListUIHandler.java @@ -22,9 +22,7 @@ package fr.ird.observe.ui.content.list; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.ui.actions.shared.SelectNodeUIAction; @@ -37,8 +35,14 @@ import jaxx.runtime.swing.editor.bean.BeanListHeader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.*; -import java.awt.*; +import javax.swing.DefaultListCellRenderer; +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; +import java.awt.Color; +import java.awt.Component; import java.awt.event.MouseEvent; import java.util.List; @@ -65,7 +69,6 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends IdDto> ext * * @param bean the container of entities to display * @return the list of entities to display - * @throws DataSourceException if a pb while grabbing data */ protected abstract List<ReferenceDto> getChilds(E bean); @@ -192,16 +195,6 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends IdDto> ext // rien par default } - @Override - protected FormDto<E> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<E> loadToReadDto(String id) { - return null; - } - /** * Un renderer de liste d'entité qui reprendre la cosmétique de l'arbre * de navigation. diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java index b2561da..3ccdb75 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java @@ -23,7 +23,6 @@ package fr.ird.observe.ui.content.open; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.OpenableDto; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; @@ -332,13 +331,4 @@ public abstract class ContentOpenableUIHandler<E extends OpenableDto> extends Co } } - @Override - protected FormDto<E> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<E> loadToReadDto(String id) { - return null; - } } 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 ec56dec..f71bc47 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 @@ -21,9 +21,8 @@ */ package fr.ird.observe.ui.content.ref; -import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.DecoratorService; import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.validation.ValidationContext; @@ -32,10 +31,10 @@ import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.I18nReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.VesselSizeCategoryDto; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; -import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.usage.UsagesUI; import fr.ird.observe.ui.util.SpringUtilities; import jaxx.runtime.JAXXContext; @@ -46,16 +45,28 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; -import javax.swing.*; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JToolBar; +import javax.swing.ListModel; +import javax.swing.SpringLayout; +import javax.swing.SwingUtilities; import javax.swing.border.TitledBorder; -import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; -import java.awt.*; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Font; import java.beans.Introspector; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; @@ -388,7 +399,8 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content public void initUI() throws Exception { ReferentialContentUIInitializer<E, ContentReferenceUI<E>> uiInitializer = new ReferentialContentUIInitializer<E, ContentReferenceUI<E>>(getUi()); - uiInitializer.initUI(getDataSource()); + //FIXME + uiInitializer.initUI(); ContentReferenceUI<E> ui = getUi(); @@ -528,7 +540,8 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content @Override protected void prepareValidationContext() { super.prepareValidationContext(); - BeanListHeader<E> jList = getUi().getListHeader(); + //FIXME + BeanListHeader<E> jList = (BeanListHeader)getUi().getListHeader(); List<E> data = jList.getData(); ValidationContext validationContext = ObserveServiceHelper.get().getValidationContext(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferenceHomeUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferenceHomeUIHandler.java index 6efb0e4..381f935 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferenceHomeUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferenceHomeUIHandler.java @@ -24,7 +24,6 @@ package fr.ird.observe.ui.content.ref; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; @@ -51,14 +50,4 @@ public class ReferenceHomeUIHandler extends ContentUIHandler<ProgramDto> { return source.canWriteReferentiel(); } - @Override - protected FormDto<ProgramDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<ProgramDto> loadToReadDto(String id) { - return null; - } - } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java index 74624ed..e56f645 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java @@ -22,27 +22,10 @@ package fr.ird.observe.ui.content.ref; * #L% */ -import com.google.common.base.Predicate; -import fr.ird.observe.business.DecoratorService; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.services.dto.AbstractObserveDto; -import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.ui.content.ContentUIInitializer; -import fr.ird.observe.ui.content.ObserveContentUI; -import jaxx.runtime.swing.editor.bean.BeanListHeader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.decorator.Decorator; -import org.nuiton.decorator.DecoratorUtil; -import org.nuiton.decorator.JXPathDecorator; - -import javax.swing.JList; -import javax.swing.ListCellRenderer; -import java.util.ArrayList; -import java.util.List; /** * Created on 11/28/14. diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java index 6fa1640..37101e9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.content.ref; -import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveSwingApplicationContext; import javax.swing.table.AbstractTableModel; 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 e40cd5f..b3249d7 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 @@ -22,11 +22,10 @@ package fr.ird.observe.ui.content.table; import com.google.common.collect.Collections2; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ReferenceDtos; import fr.ird.observe.services.dto.ReferenceSetDto; @@ -40,10 +39,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; +import javax.swing.JComponent; +import javax.swing.ListSelectionModel; +import javax.swing.SwingUtilities; import javax.swing.event.ListSelectionEvent; import javax.swing.table.DefaultTableCellRenderer; -import java.awt.*; +import java.awt.Rectangle; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -198,7 +199,8 @@ public abstract class ContentTableUIHandler<E extends IdDto, D extends IdDto> ex // preparation du bean d'édition // dataService.loadEditEntity(dataSource, id, getLoadExecutor()); - loadBean(id); + //FIXME +// loadBean(id); getModel().setMode(mode); @@ -466,15 +468,4 @@ public abstract class ContentTableUIHandler<E extends IdDto, D extends IdDto> ex getTableModel().resetEditBean(); } - //FIXME - @Override - protected FormDto<E> loadToEdit(String id) { - return null; - } - - //FIXME - @Override - protected FormDto<E> loadToReadDto(String id) { - return null; - } } 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 f70b61e..d4a00bb 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 @@ -22,10 +22,9 @@ package fr.ird.observe.ui.content.table.impl.longline; * #L% */ -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.constants.DataContextType; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; @@ -39,12 +38,11 @@ import fr.ird.observe.services.dto.referential.longline.CatchFateLonglineDto; import fr.ird.observe.services.dto.referential.longline.HealthnessDto; import fr.ird.observe.services.dto.referential.longline.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; -import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; -import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; @@ -61,8 +59,6 @@ import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -444,6 +440,12 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto } //FIXME + @Override + protected String getEditBeanIdToLoad() { + return null; + } + + //FIXME // @Override // protected String getEditBeanIdToLoad(DataContext dataContext, DataService dataService, DataSource dataSource) { // return dataContext.getSelectedSetId(); 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 4c4e31c..0215342 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 @@ -21,9 +21,8 @@ */ package fr.ird.observe.ui.content.table.impl.seine; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.seine.SpeciesStatusDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; @@ -33,7 +32,7 @@ import fr.ird.observe.ui.content.table.ContentTableUIHandler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.*; +import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import static org.nuiton.i18n.I18n.n; @@ -101,14 +100,4 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati } - @Override - protected FormDto<FloatingObjectDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<FloatingObjectDto> loadToReadDto(String id) { - return null; - } - } 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 fc0c6a0..cf9df56 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 @@ -27,7 +27,7 @@ import com.google.common.collect.Iterables; import fr.ird.observe.ObserveActionExecutor; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.util.SecurityModel; 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 a583ac0..ed629d5 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,7 +24,6 @@ package fr.ird.observe.ui.tree; import com.google.common.base.Preconditions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.OpenableDto; diff --git a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java index e16c9bc..c151292 100644 --- a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java +++ b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java @@ -58,6 +58,7 @@ public interface ObserveDataSourceConnection { */ boolean canWriteData(); + //FIXME Version of what ? Version getVersion(); } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java index 731191d..44747cf 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java @@ -1,6 +1,8 @@ package fr.ird.observe.services.dto.referential; +import com.google.common.base.Predicate; import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.constants.ReferenceStatus; import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; import fr.ird.observe.services.dto.referential.longline.BaitSettingStatusDto; import fr.ird.observe.services.dto.referential.longline.BaitTypeDto; @@ -42,6 +44,11 @@ import fr.ird.observe.services.dto.referential.seine.TransmittingBuoyTypeDto; import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; import fr.ird.observe.services.dto.referential.seine.WeightCategoryDto; import fr.ird.observe.services.dto.referential.seine.WindDto; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.Iterator; +import java.util.List; public class ReferentialDtos extends AbstractReferentialDtos { @@ -116,7 +123,7 @@ public class ReferentialDtos extends AbstractReferentialDtos { .addAll(REFERENCE_LONGLINE_DTOS) .build(); - /** + /** * Logger. */ private static final Log log = LogFactory.getLog(ReferentialDtos.class); @@ -161,6 +168,7 @@ public class ReferentialDtos extends AbstractReferentialDtos { } public static final Predicate<ReferentialDto> IS_ACTIF_PREDICATE = new Predicate<ReferentialDto>() { + @Override public boolean apply(ReferentialDto input) { return ReferenceStatus.disabled != input.getStatus(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 5abc310859d024220d71073f00f5597f819b79a6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Sep 24 19:07:53 2015 +0200 Renommage getModle en getModel --- .../src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java | 4 ++-- .../src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java | 8 ++++---- .../java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) 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 cf9df56..dbdf8db 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 @@ -1184,7 +1184,7 @@ public class StorageUIHandler { addTag("h3", sb, t("observe.storage.report.action.migrate") + " :"); addOpenTag("ul", sb); if (model.isCanMigrate()) { - Version version = model.getModleVersion(); + Version version = model.getModelVersion(); addTag("li", sb, t("observe.storage.report.can.migrate", version)); if (model.isShowMigrationProgression()) { addTag("li", sb, t("observe.storage.showMigrationProgression")); @@ -1263,7 +1263,7 @@ public class StorageUIHandler { dataSource.doOpen(); Version importServiceDbVersion = dataSource.getDbVersion(); - Version currentDbVersion = model.getModleVersion(); + Version currentDbVersion = model.getModelVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); } 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 dfdd5de..b4fe772 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 @@ -1126,7 +1126,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { return doBackup; } - public Version getModleVersion() { + public Version getModelVersion() { return config == null ? Version.VZERO : config.getModelVersion(); } @@ -1685,7 +1685,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { Version versionDataSource = dataSource.getVersion(); - if (getModleVersion().equals(versionDataSource)) { + if (getModelVersion().equals(versionDataSource)) { setConnexionStatus(ConnexionStatus.SUCCESS); @@ -1693,7 +1693,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } else { - connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, getModleVersion()); + connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, getModelVersion()); setConnexionStatus(ConnexionStatus.FAILED); @@ -1745,7 +1745,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void checkImportDbVersion(ObserveSwingDataSource source) { Version importServiceDbVersion = source.getVersion(); - Version currentDbVersion = getModleVersion(); + Version currentDbVersion = getModelVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); } 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 1a5d591..7dfa946 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 @@ -435,7 +435,7 @@ public class StorageTabUIHandler { protected String updateCanMigrateLabel(ChooseDbModeUI ui, boolean canMigrate) { - String text = t("observe.storage.action.canMigrate", ui.getModel().getModleVersion()); + String text = t("observe.storage.action.canMigrate", ui.getModel().getModelVersion()); return text; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 4ce182de736e5a36450733b6c73fa8d44476ee8b Merge: a5ba588 5abc310 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Sep 24 19:08:16 2015 +0200 Démarage de client swing (termine #7328) estion des data source dans l'application swing (termine #7529) Merge branch 'feature/7528' into develop observe-application-swing/pom.xml | 11 + .../src/main/filters/observe-ui.properties | 1 + .../java/fr/ird/observe/ObserveActionExecutor.java | 22 +- .../main/java/fr/ird/observe/ObserveCLAction.java | 30 +- .../main/java/fr/ird/observe/ObserveConfig.java | 1004 ----- .../main/java/fr/ird/observe/ObserveContext.java | 594 --- .../fr/ird/observe/ObserveResourceManager.java | 20 +- .../main/java/fr/ird/observe/ObserveRunner.java | 74 +- .../{business => }/ObserveServiceHelper.java | 63 +- .../observe/ObserveSwingApplicationContext.java | 764 ++++ .../fr/ird/observe/business/IObserveConfig.java | 4 +- .../business/ObserveApplicationContext.java | 9 +- .../ird/observe/business/db/DataSourceConfig.java | 2 +- .../ird/observe/business/db/DataSourceFactory.java | 2 +- .../db/constants/CommonDataSourceConfigParam.java | 1 + .../business/report/model/ReportExecute.java | 15 +- .../business/validation/ObserveValidator.java | 6 +- .../validation/ValidationMessageDetector.java | 2 +- .../ObserveApplicationConfigProvider.java | 7 +- .../ObserveSwingApplicationConfig.java | 1152 +++++ .../ObserveSwingApplicationConfigOption.java} | 217 +- .../ObserveSwingApplicationConfigProvider.java | 37 + .../fr/ird/observe/db/ObserveSwingDataSource.java | 304 ++ .../constantes}/ConnexionStatus.java | 2 +- .../constants => db/constantes}/CreationMode.java | 28 +- .../db/constants => db/constantes}/DbMode.java | 7 +- .../db/event/ObserveSwingDataSourceEvent.java | 83 + .../db/event/ObserveSwingDataSourceListener.java | 75 + .../ObserveSwingDataSourceListenerAdapter.java} | 41 +- .../src/main/java/fr/ird/observe/package.html | 2 +- .../main/java/fr/ird/observe/ui/ObserveMainUI.css | 1 + .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 4 +- .../fr/ird/observe/ui/ObserveMainUIHandler.java | 51 +- .../java/fr/ird/observe/ui/ObserveUICallback.java | 12 +- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 18 +- .../actions/ChangeApplicationLanguageAction.java | 12 +- .../observe/ui/actions/ChangeDbLanguageAction.java | 12 +- .../observe/ui/actions/ChangeStorageAction.java | 6 +- .../observe/ui/actions/CloseApplicationAction.java | 6 +- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 10 +- .../ird/observe/ui/actions/CloseStorageAction.java | 21 +- .../fr/ird/observe/ui/actions/GotoSiteAction.java | 8 +- .../ui/actions/ImportStorageFromFileAction.java | 9 +- .../ird/observe/ui/actions/LaunchAdminAction.java | 4 +- .../ui/actions/ReloadApplicationAction.java | 8 +- .../actions/ReloadDefaultConfigurationAction.java | 12 +- .../observe/ui/actions/ReloadResourcesAction.java | 8 +- .../observe/ui/actions/ReloadStorageAction.java | 92 +- .../ui/actions/SaveStorageToFileAction.java | 32 +- .../ird/observe/ui/actions/ShowConfigAction.java | 128 +- .../observe/ui/actions/ShowStorageInfoAction.java | 4 +- .../observe/ui/actions/StartServerModeAction.java | 7 +- .../ui/actions/shared/CloseAndCreateUIAction.java | 6 +- .../ui/actions/shared/CloseOpenUIAction.java | 6 +- .../observe/ui/actions/shared/ReOpenUIAction.java | 5 +- .../java/fr/ird/observe/ui/admin/AdminStep.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 6 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 33 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 28 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 107 +- .../observe/ui/admin/config/ConfigUIHandler.java | 2 - .../ui/admin/consolidate/ConsolidateModel.java | 8 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 8 +- .../ird/observe/ui/admin/export/ExportModel.java | 14 +- .../observe/ui/admin/export/ExportUIHandler.java | 12 +- .../ui/admin/gps/GPSActivityTableModel.java | 4 +- .../observe/ui/admin/gps/ImportGPSConfigUI.jaxx | 6 +- .../observe/ui/admin/gps/ImportGPSUIHandler.java | 5 +- .../observe/ui/admin/report/ReportUIHandler.java | 21 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 28 +- .../ObsoleteEntityListCellRenderer.java | 4 +- .../ui/admin/synchronize/SynchronizeModel.java | 20 +- .../ui/admin/synchronize/SynchronizeUIHandler.java | 17 +- .../ui/admin/validate/ValidateConfigUI.jaxx | 6 +- .../validate/ValidateEntityListCellRenderer.java | 4 +- .../observe/ui/admin/validate/ValidateModel.java | 6 +- .../ui/admin/validate/ValidateUIHandler.java | 11 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 15 +- .../ird/observe/ui/content/ContentUIHandler.java | 143 +- .../observe/ui/content/ContentUIInitializer.java | 215 +- .../content/impl/longline/BranchlineUIHandler.java | 15 +- .../impl/longline/LonglineDetailCompositionUI.jaxx | 4 +- .../LonglineDetailCompositionUIHandler.java | 28 +- .../impl/longline/LonglineGlobalCompositionUI.jaxx | 14 +- .../LonglineGlobalCompositionUIHandler.java | 10 - .../impl/longline/SetLonglineUIHandler.java | 11 - .../ActivitySeineObservedSystemUIHandler.java | 11 - ...ngObjectTransmittingBuoyOperationUIHandler.java | 16 +- .../impl/seine/FloatingObjectUIHandler.java | 11 - .../ui/content/impl/seine/SetSeineUIHandler.java | 11 - .../ui/content/list/ContentListUIHandler.java | 23 +- .../ui/content/open/ContentOpenableUIHandler.java | 10 - .../open/impl/longline/TripLonglineUIHandler.java | 5 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 10 +- .../open/impl/seine/TripSeineUIHandler.java | 4 +- .../ui/content/ref/ContentReferenceUIHandler.java | 58 +- .../ui/content/ref/ReferenceHomeUIHandler.java | 11 - .../ui/content/ref/UniqueKeyTableModel.java | 4 +- .../ui/content/table/ContentTableUIHandler.java | 25 +- .../impl/longline/CatchLonglineUIHandler.java | 21 +- .../table/impl/longline/EncounterUIHandler.java | 6 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 12 +- .../table/impl/longline/SensorUsedUIHandler.java | 9 +- .../content/table/impl/longline/TdrUIHandler.java | 16 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 12 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 18 +- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 19 +- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 6 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 10 +- .../table/impl/seine/TargetCatchUIHandler.java | 2 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 2 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 2 +- .../ird/observe/ui/storage/RemoteUILauncher.java | 3 +- .../ui/storage/StorageBackupUILauncher.java | 68 +- .../ird/observe/ui/storage/StorageUIHandler.java | 893 ++-- .../ird/observe/ui/storage/StorageUILauncher.java | 52 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 1213 +++--- .../ird/observe/ui/storage/tabs/ChooseDbModeUI.css | 13 + .../observe/ui/storage/tabs/ChooseDbModeUI.jaxx | 14 +- .../ird/observe/ui/storage/tabs/ConfigDataUI.jaxx | 2 +- .../ui/storage/tabs/ConfigReferentielUI.jaxx | 2 +- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 26 + .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 46 +- .../ui/storage/tabs}/DataSelectionModel.java | 255 +- .../ird/observe/ui/storage/tabs/SelectDataUI.jaxx | 4 +- .../ui/storage/tabs/StorageTabUIHandler.java | 67 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 23 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 95 +- .../ui/tree/NavigationTreeSelectionModel.java | 4 +- .../ird/observe/ui/tree/ObserveDataProvider.java | 10 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 14 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 27 +- .../ui/tree/loadors/AbstractNodeChildLoador.java | 6 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 4 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 4 +- .../loadors/ActivitySeinesNodeChildLoador.java | 4 +- .../loadors/ProgramLonglineNodeChildLoador.java | 4 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 4 +- .../ui/tree/loadors/RootNodeChildLoador.java | 4 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 4 +- .../java/fr/ird/observe/ui/usage/UsagesUI.jaxx | 6 +- .../fr/ird/observe/ui/usage/UsagesUIHandler.java | 4 +- ...ObserveSimpleValidatorMessageTableRenderer.java | 4 +- .../util/ObserveValidatorMessageTableRenderer.java | 4 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 12 +- .../org.nuiton.config.ApplicationConfigProvider | 2 +- .../observe-application-swing_en_GB.properties | 1823 ++++---- .../observe-application-swing_es_ES.properties | 2125 +++++----- .../observe-application-swing_fr_FR.properties | 4405 ++++++++++---------- .../src/main/resources/icons/action-db-server.png | Bin 0 -> 923 bytes .../src/main/resources/observeSwing.conf | 5 + ...glineDetailCompositionValidatorServiceTest.java | 127 +- .../DataSourceDumpProducerServiceController.java | 29 + .../controller/v1/DataSourceServiceController.java | 3 +- .../web/controller/v1/PingServiceController.java | 8 +- .../ObserveWebSecurityApplicationContext.java | 2 +- observe-entities/pom.xml | 62 +- .../src/main/xmi/observe-common.properties | 2 +- .../src/main/xmi/observe-longline.properties | 2 +- .../src/main/xmi/observe-seine.properties | 2 +- .../ird/observe/services/service/PingService.java | 2 + observe-services-configuration-api/pom.xml | 6 + .../configuration/ObserveDataSourceConnection.java | 5 + .../ObserveDataSourceConnectionSupport.java | 13 +- observe-services-configuration-rest/pom.xml | 6 + .../ObserveDataSourceConnectionRest.java | 7 +- observe-services-configuration-topia/pom.xml | 4 +- .../ObserveDataSourceConnectionTopia.java | 7 +- .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 + .../observe/services/dto/gson/VersionAdapter.java | 36 + .../services/dto/referential/ProgramDtos.java | 44 + .../services/dto/referential/ReferentialDtos.java | 116 +- .../ird/observe/services/TestMethodResource.java | 2 +- .../fr/ird/observe/services/ObserveJdbcHelper.java | 35 + .../services/ObserveServiceContextTopia.java | 3 + .../EntityToReferentialReferenceDtoBuilder.java | 13 + .../services/dto/ObserveDtosInitializer.java | 284 +- .../services/service/DataSourceServiceTopia.java | 12 +- .../ObserveDataSourceConnectionTopiaTaiste.java | 3 +- ...EntityToReferentialReferenceDtoBuilderTest.java | 57 + pom.xml | 3 + 181 files changed, 10037 insertions(+), 8317 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm