This is an automated email from the git hooks/post-receive script. New change to branch feature/7677-VerifActionExport in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git omits 8c2515f ajout du service d'action pour l'export de données observateur (see #7677). adds 5898a55 Utilisation de jaxx 2.29 adds a0c5d06 add new topia extension module adds 05018f9 Ajout du module de templates supplémentaires topia adds 5b82180 Correction de tests adds cc4dbf4 Documente la configuration de l'application web adds 099d492 Corrige les blocs de citations de la documentation sur la configuration de l'appli web et ajoute une entrée dans la page d'index adds 607ae50 Use last version of codelutinpom + fix nexus urls adds 31af17e Updates some libraries (See #7803) adds 2052103 Use nuiton-maven-report-plugin 3.0.1 adds 08ac53e Introduction des deux services à utiliser pour effectuer la synchronisation unidirectionnelle de référentiel (See #7739) adds 703305b Ajout de la configuration pour le plugin processor adds e7b3087 Ajout des informations sur les propriétés simples dans le méta-modèle simplifié + les informations sur les noms en base adds e294831 Mettre à plat la notion d'héritage pour tout avoir de disponible dans le méta-modèle allégé adds f894928 Introduction du moteur de synchronisation (reste plus qu'à générer le code sql à partir de la requète produite (See #7739) adds acbf463 Ajout du nom des tables pour les associations many-to-many adds 7083ee6 Introduction des générateurs de requètes sql (RAF celui de remplacement) (See #7739) adds 472c898 Mise en place de la génération des requètes sql et de leur application (See #7739) adds 9a4c7aa Ajout du contrat Iterable sur le méta-modèle adds e5f6f5f Ajout du générateur de reqètes sql de remplacement (See #7739) adds 87ce557 Meilleur nommage dans le méta-modèle adds df3e909 Meilleur nommage dans le méta-modèle + correction de l'algorithme de remplacement adds fddd5a0 Make repeatable test spi annotations adds 3802269 Make possible to use multiple database in tests adds 6c6da46 Make service inheritates ObserveService adds 3c8af4b In sql generator we must to keep same order of parameters values + use default primitive values adds f9f092e Do not treat LastUpdateDate entity as an referential one + add code for replacement sql adds 22900a8 Do not treat LastUpdateDate entity as an referential one adds b1444eb start a test for unidirectional referential synchronization (see #7739) adds 6f0d6a0 Quelques corrections suite au test du moteur de synchronisation (See #7739) adds decdb30 Test du moteur de synchronisation adds 6107eeb Correction des bases de test adds 1ab676f Introduction d'un objet de résultat de la synchronisation + rendre le moteur de synchronisation Callable (See #7739) adds 07f81e0 Test de syncrhonisation mise en place + correction nom de base de test adds 68aa5c7 On n gère pas lors de la synchronisation de la désactivation d'un référentiel (See #7739) adds 0ba6c8b Revue du moteur de synchronisation pour n'effectuer qu'un seule appel au call back utilisateur (See #7739) adds 1ac48da Revue du code du moteur pour au final supprimer la notion de callback au niveau de celui-ci sinon au niveau applicatif ce n'est pas gérable (See #7739) adds e04956c Ajout des services de synchonisation (See #7739) adds afbf4e9 Correction de la configuration du plugin processor (on ne l'applique que sur le module qui en a besoin) adds 1c5dda0 Suppression de la permission d'écrire le référentiel car sinon on est bloqué par le service adds 6a8fd36 Amélioration code de UnidirectionalReferentialSynchronizeCallbackRequests adds 3a9e5d3 Début de migration des interfaces graphiques pour la synchronisation (See #7739) adds 300ca6a Correction du timestamp lors de la génération du sql (je ne comprends pas pk, mais ça fonctionne :() adds a9db994 Amélioration du message de résumé adds bad8e55 Séparation en deux la préparation des requètes sql à jouer et leur application (See #7739) adds 20af7e1 Revue de la gestion des valeurs primitives adds 61b7ec8 correction de traduction adds 8213590 Transformation en référence de référentiel plutôt que de conserver les entitées adds 5b471c8 Correction de la génération de remplacement pour une association many-to-many adds 32ac58a Dernier ajustement d'interface graphique adds 4ada32f Fixes #7739 \o/ Merge branch 'feature/7739' into develop adds c518cfc Corrige la serialisation/deserialisation des heures d'observation des activités seine adds dcdb6e6 Corrige npe lors de l ouverture de l'ecran estimation banc adds 1b4682e Merge branch 'feature/7595_Le_nom_des_activites_absent_en_serveur_distant' into 'develop' adds ad2b05f Corrige le controle de validation concernant les heures d'observation des activités senne adds 03125f6 Rename variable name + fix code style adds b7ec283 Merge branch 'feature/7595_deux_activites_peuvent_avoir_la_meme_heure' into 'develop' adds e122762 Corrige la couleur de rendu des données (marées, routes, activités) dnas les listes lorsque ces données sont clôturées adds c549000 Merge branch 'feature/7591_Correction_route_cloturee_non_grisee' into 'develop' adds dfc56de Corrige la popup d'information sur la source de données en serveur distant adds 4a74f96 Introduit un typage des sources de donnees (SQL, SERVER) adds ba8cad1 Flip equality test on sql datasource adds 2753759 Merge branch 'feature/8382_Information_serveur_distant' into 'develop' adds aaff103 optimize dependencies adds 5ecfc96 fix assembly descriptor adds 5add1b9 Add missing license headers adds 3acf2b0 use commons collections 4 not previous one adds 0913a1e Add missing license headers adds a28f76e use commons collections 4 not previous one adds 0581284 Suppression du code sur l'import gps adds 07ed7a0 optimize dependencies adds 16be1d3 Optimize third-parites adds e0ab45e On peut de nouveau faire des releases \oo/ Merge branch 'feature/fix_nightly_build' into develop new 9c06667 ajout du service d'action pour l'export de données observateur (see #7677). new d04373c Début de réécriture des services de recopie de marées (See #7677) This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (8c2515f) \ N -- N -- N refs/heads/feature/7677-VerifActionExport (d04373c) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 2 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 d04373c5958a1e7cb5cb06d7e62985b1211c16e5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Jul 20 12:18:01 2016 +0200 Début de réécriture des services de recopie de marées (See #7677) commit 9c0666740c4efed6b3e93c7b285060cf2f9247e3 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Mar 30 18:09:53 2016 +0200 ajout du service d'action pour l'export de données observateur (see #7677). Summary of changes: observe-application-swing/pom.xml | 8 - .../src/license/THIRD-PARTY.properties | 63 +- .../src/main/assembly/bin.xml | 8 +- .../fr/ird/observe/ObserveOpenDataManager.java | 22 + .../java/fr/ird/observe/ObserveTextGenerator.java | 22 + .../ObserveSwingApplicationConfig.java | 4 +- .../ObserveSwingApplicationConfigProvider.java | 22 + .../fr/ird/observe/db/ObserveSwingDataSource.java | 38 +- .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 1 - .../main/java/fr/ird/observe/ui/ObserveMainUI.jcss | 4 - .../observe/ui/actions/AbstractObserveAction.java | 22 + .../actions/shared/MoveTripLonglinesUIAction.java | 22 + .../ui/actions/shared/MoveTripSeinesUIAction.java | 22 + .../java/fr/ird/observe/ui/admin/AdminStep.java | 21 - .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 78 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 41 +- .../fr/ird/observe/ui/admin/config/ConfigUI.jaxx | 6 - .../fr/ird/observe/ui/admin/config/ConfigUI.jcss | 6 - .../fr/ird/observe/ui/admin/export/ExportUI.jaxx | 15 +- .../observe/ui/admin/export/ExportUIHandler.java | 38 + .../observe/ui/admin/gps/GPSAbleTableModel.java | 162 ---- .../ui/admin/gps/GPSActivityTableModel.java | 302 ------- .../observe/ui/admin/gps/ImportGPSConfigUI.jaxx | 93 -- .../observe/ui/admin/gps/ImportGPSConfigUI.jcss | 69 -- .../ird/observe/ui/admin/gps/ImportGPSModel.java | 105 --- .../fr/ird/observe/ui/admin/gps/ImportGPSUI.jaxx | 145 --- .../fr/ird/observe/ui/admin/gps/ImportGPSUI.jcss | 66 -- .../observe/ui/admin/gps/ImportGPSUIHandler.java | 607 ------------- .../observe/ui/admin/save/SaveLocalUIHandler.java | 222 +---- .../synchronize/ObsoleteEntityTableModel.java | 158 ---- .../synchronize/ObsoleteReferentialReference.java | 75 ++ ...oleteReferentialReferenceListCellRenderer.java} | 31 +- .../ui/admin/synchronize/SynchronizeModel.java | 129 ++- .../ui/admin/synchronize/SynchronizeUI.jaxx | 64 +- .../ui/admin/synchronize/SynchronizeUI.jcss | 15 +- .../ui/admin/synchronize/SynchronizeUIHandler.java | 978 ++++++--------------- .../validate/ValidationMessageTableModel.java | 22 + .../ui/content/list/ContentListUIHandler.java | 7 +- .../ui/content/ref/ContentReferenceUIHandler.java | 2 +- .../ird/observe/ui/storage/StorageUILauncher.java | 2 +- .../fr/ird/observe/ui/tree/ObserveTreeBridge.java | 2 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 2 +- .../loadors/AbstractDataReferenceChildLoador.java | 22 + .../MoveActivityLonglineNodeMenuPopulator.java | 22 + .../menu/MoveActivitySeineNodeMenuPopulator.java | 22 + .../ui/tree/menu/MoveNodeMenuPopulator.java | 22 + .../ui/tree/menu/MoveRouteNodeMenuPopulator.java | 22 + .../ui/tree/menu/MoveTripNodeMenuPopulator.java | 22 + .../ird/observe/ui/util/DecoratedNodeEntity.java | 22 + .../ui/util/decorator/DataReferenceDecorator.java | 22 + .../decorator/ReferentialReferenceDecorator.java | 22 + ...nlineTableAutotSelectRowAndShowPopupAction.java | 22 + .../main/resources/ftl/connexionTestResult_fr.ftl | 21 + .../ftl/dataSourceConnectionReport_fr.ftl | 21 + .../resources/ftl/dataSourceInformation_fr.ftl | 37 +- .../src/main/resources/ftl/dataSourcePolicy_fr.ftl | 21 + .../ftl/dataSourceSelectModeResume_fr.ftl | 21 + .../ftl/storageModelDataSourceConfiguration_fr.ftl | 21 + .../observe-application-swing_en_GB.properties | 2 + .../observe-application-swing_es_ES.properties | 2 + .../observe-application-swing_fr_FR.properties | 8 +- .../v1/SqlScriptProducerServiceController.java | 22 + .../v1/longline/BranchlineServiceController.java | 22 + .../application/web/injector/DateInjector.java | 22 + .../web/injector/ObserveClassInjector.java | 22 + .../ObserveReferenceSetRequestInjector.java | 22 + .../injector/SqlScriptProducerRequestInjector.java | 22 + observe-entities/pom.xml | 20 +- .../observe/ObserveTopiaApplicationContext.java | 23 +- .../java/fr/ird/observe/RunScriptTopiaSqlWork.java | 22 + .../observe/entities/LastUpdateDateTopiaDao.java | 22 + .../java/fr/ird/observe/entities/TripMapPoint.java | 22 + .../observe/entities/longline/BasketTopiaDao.java | 22 + .../entities/longline/BranchlineTopiaDao.java | 22 + .../observe/entities/longline/SectionTopiaDao.java | 22 + .../observe/entities/referentiel/ProgramImpl.java | 22 + .../observe/entities/seine/NonTargetCatchs.java | 22 + .../observe/entities/seine/NonTargetLenghts.java | 22 + .../ird/observe/entities/seine/TargetCatchs.java | 22 + .../ird/observe/entities/seine/TargetLenghts.java | 22 + .../V4_901_01_add_lastUpdateDate_field-H2.sql | 21 + .../V4_901_01_add_lastUpdateDate_field-PG.sql | 21 + .../V4_902_01_add_lastUpdateDate_table-H2.sql | 21 + .../V4_902_01_add_lastUpdateDate_table-PG.sql | 21 + .../migration/V4_903_01_remove_unit_field-H2.sql | 21 + .../migration/V4_903_01_remove_unit_field-PG.sql | 21 + .../migration/V4_903_02_remove_gender_field-H2.sql | 21 + .../migration/V4_903_02_remove_gender_field-PG.sql | 21 + .../V4_903_03_remove_duplicate_rows-H2.sql | 21 + .../V4_903_03_remove_duplicate_rows-PG.sql | 21 + observe-services-api/pom.xml | 8 + .../services/ObserveSpeciesListConfiguration.java | 22 + .../observe/services/http/ObserveHttpError.java | 22 + .../services/service/BabModelVersionException.java | 22 + .../service/ConcurrentModificationException.java | 22 + .../services/service/ObserveReferentialCache.java | 22 + .../services/service/ReferenceSetsRequest.java | 22 + .../services/service/SqlScriptProducerRequest.java | 22 + .../services/service/SqlScriptProducerService.java | 22 + .../actions/export/ReplicateTripService.java | 27 + .../export/ReplicateTripsExportRequest.java | 77 ++ .../actions/export/ReplicateTripsExportResult.java | 78 ++ .../actions/export/ReplicateTripsImportResult.java | 69 ++ .../actions/synchro/LocalReferentialStates.java | 95 ++ .../actions/synchro/RemoteReferentialDiff.java | 106 +++ ...ionalReferentialSynchronizeCallbackRequest.java | 65 ++ ...onalReferentialSynchronizeCallbackRequests.java | 69 ++ ...tionalReferentialSynchronizeCallbackResult.java | 59 ++ ...ionalReferentialSynchronizeCallbackResults.java | 60 ++ ...nidirectionalReferentialSynchronizeContext.java | 66 ++ ...UnidirectionalReferentialSynchronizeEngine.java | 184 ++++ ...ectionalReferentialSynchronizeLocalService.java | 97 ++ ...ctionalReferentialSynchronizeRemoteService.java | 58 ++ ...nidirectionalReferentialSynchronizeRequest.java | 160 ++++ ...UnidirectionalReferentialSynchronizeResult.java | 140 +++ .../actions/validate/ValidateResultForDtos.java | 22 + .../actions/validate/ValidateServiceUtils.java | 22 + .../service/actions/validate/ValidatorDto.java | 22 + .../service/actions/validate/ValidatorDtos.java | 22 + .../service/longline/BranchlineService.java | 22 + .../service/seine/SchoolEstimateService.java | 2 +- .../fr/ird/observe/services/util/I18nEnumUtil.java | 22 + .../src/license/THIRD-PARTY.properties | 19 - .../ObserveDataSourceConfiguration.java | 2 + ...bserveDataSourceConfigurationAndConnection.java | 22 + .../ObserveDataSourceInformation.java | 22 + ...nfiguration.java => ObserveDataSourceType.java} | 23 +- .../src/license/THIRD-PARTY.properties | 23 - .../ObserveDataSourceConfigurationRest.java | 5 + .../src/license/THIRD-PARTY.properties | 20 - ...ObserveDataSourceConfigurationTopiaSupport.java | 5 + .../observe/services/dto/AbstractReference.java | 22 + .../fr/ird/observe/services/dto/DataReference.java | 22 + .../observe/services/dto/ObserveDbUserDtos.java | 22 + .../services/dto/UnauthorizedException.java | 22 + .../services/dto/constants/ObserveDbRole.java | 22 + .../ird/observe/services/dto/gson/BlobAdapter.java | 22 + .../ird/observe/services/dto/gson/FormAdapter.java | 22 + .../services/dto/gson/ObserveDtoGsonSupplier.java | 4 +- .../observe/services/dto/gson/VersionAdapter.java | 22 + .../gson/reference/DataReferenceSetAdapter.java | 22 + .../reference/ReferentialReferenceSetAdapter.java | 22 + .../services/dto/longline/ActivityLonglineDto.java | 22 + .../observe/services/dto/longline/BasketDto.java | 22 + .../services/dto/longline/BranchlineDto.java | 22 + .../GearUseFeaturesMeasurementLonglineDto.java | 22 + .../dto/longline/LonglinePositionSetDto.java | 22 + .../longline/SetLonglineGlobalCompositionDto.java | 22 + .../dto/reference/DataReferenceSetDefinitions.java | 24 +- .../dto/reference/ReferenceBinderEngine.java | 22 + .../reference/ReferenceBinderEngineSupplier.java | 22 + .../dto/reference/ReferenceSetDefinition.java | 22 + .../ReferentialReferenceSetDefinitions.java | 22 + .../request/ReferenceSetRequestDefinition.java | 22 + .../request/ReferenceSetRequestDefinitions.java | 22 + .../request/ReferenceSetRequestKeyDefinition.java | 22 + .../dto/referential/GearCaracteristicTypeDtos.java | 22 + .../dto/referential/I18nReferentialDto.java | 22 + .../dto/referential/I18nReferentialDtos.java | 22 + .../services/dto/referential/PersonDtos.java | 22 + .../services/dto/referential/ProgramDto.java | 22 + .../services/dto/referential/ProgramDtos.java | 22 + .../services/dto/referential/ReferentialDto.java | 22 + .../services/dto/referential/ReferentialDtos.java | 22 + .../dto/referential/ReferentialReference.java | 22 + .../dto/referential/ReferentialReferences.java | 22 + .../services/dto/referential/SpeciesListDto.java | 22 + .../services/dto/referential/VesselDtos.java | 22 + .../longline/VesselActivityLonglineDtos.java | 22 + .../referential/seine/VesselActivitySeineDtos.java | 22 + .../dto/referential/seine/WeightCategoryDtos.java | 22 + .../observe/services/dto/result/SaveResultDto.java | 22 + .../services/dto/result/SaveResultDtos.java | 22 + .../dto/result/TripChildSaveResultDtos.java | 22 + .../services/dto/seine/ActivitySeineDto.java | 22 + .../services/dto/seine/ActivitySeineStubDto.java | 28 +- .../seine/FloatingObjectTransmittingBuoyDto.java | 22 + .../seine/GearUseFeaturesMeasurementSeineDto.java | 22 + .../ird/observe/services/dto/seine/RouteDto.java | 40 +- .../observe/services/dto/seine/SetSeineDto.java | 22 + .../services/dto/seine/TargetCatchDtos.java | 22 + .../services/dto/seine/TargetLengthDto.java | 22 + .../observe/services/dto/seine/TripSeineDto.java | 22 + .../observe/services/ObserveHttpErrorAdapter.java | 22 + .../services/ObserveServiceRestErrorException.java | 22 + .../service/DataSourceServiceRestTest.java | 2 +- .../service/ReferenceValuesSetServiceRestTest.java | 22 + .../service/ReferentialServiceRestTest.java | 22 + observe-services-topia/pom.xml | 5 +- .../fr/ird/observe/services/ObserveJdbcHelper.java | 22 + .../observe/services/ObserveSecurityHelper.java | 22 + .../ird/observe/services/binder/BinderEngine.java | 22 + .../services/binder/BinderEngineInitializer.java | 22 + .../ird/observe/services/binder/BinderSupport.java | 22 + .../binder/ReferenceBinderEngineSupplierTopia.java | 22 + .../binder/data/ActivityLonglineBinder.java | 22 + .../data/ActivityLonglineEncouterDtoBinder.java | 22 + .../data/ActivityLonglineSensorUsedDtoBinder.java | 22 + .../binder/data/ActivityLonglineStubDtoBinder.java | 22 + .../services/binder/data/ActivitySeineBinder.java | 22 + .../data/ActivitySeineObservedSystemDtoBinder.java | 22 + .../binder/data/ActivitySeineStubDtoBinder.java | 24 +- .../binder/data/BaitsCompositionBinder.java | 22 + .../observe/services/binder/data/BasketBinder.java | 22 + .../services/binder/data/BranchlineBinder.java | 22 + .../binder/data/BranchlinesCompositionBinder.java | 22 + .../services/binder/data/CatchLonglineBinder.java | 22 + .../services/binder/data/DataBinderSupport.java | 22 + .../services/binder/data/EncounterBinder.java | 22 + .../services/binder/data/FloatingObjectBinder.java | 22 + .../FloatingObjectObservedSpeciesDtoBinder.java | 22 + .../FloatingObjectSchoolEstimateDtoBinder.java | 22 + .../FloatingObjectTransmittingBuoyDtoBinder.java | 22 + .../binder/data/FloatlinesCompositionBinder.java | 22 + .../binder/data/GearUseFeaturesLonglineBinder.java | 22 + .../GearUseFeaturesMeasurementLonglineBinder.java | 22 + .../GearUseFeaturesMeasurementSeineBinder.java | 22 + .../binder/data/GearUseFeaturesSeineBinder.java | 22 + .../binder/data/HooksCompositionBinder.java | 22 + .../services/binder/data/NonTargetCatchBinder.java | 22 + .../binder/data/NonTargetLengthBinder.java | 22 + .../binder/data/NonTargetSampleBinder.java | 22 + .../binder/data/ObjectObservedSpeciesBinder.java | 22 + .../binder/data/ObjectSchoolEstimateBinder.java | 22 + .../observe/services/binder/data/RouteBinder.java | 22 + .../services/binder/data/RouteStubDtoBinder.java | 22 + .../services/binder/data/SchoolEstimateBinder.java | 22 + .../services/binder/data/SectionBinder.java | 22 + .../services/binder/data/SensorUsedBinder.java | 22 + .../services/binder/data/SetLonglineBinder.java | 22 + .../binder/data/SetLonglineCatchDtoBinder.java | 22 + .../SetLonglineDetailCompositionDtoBinder.java | 22 + .../SetLonglineGlobalCompositionDtoBinder.java | 22 + .../binder/data/SetLonglineStubDtoBinder.java | 22 + .../binder/data/SetLonglineTdrDtoBinder.java | 22 + .../services/binder/data/SetSeineBinder.java | 22 + .../data/SetSeineNonTargetCatchDtoBinder.java | 22 + .../data/SetSeineSchoolEstimateDtoBinder.java | 22 + .../binder/data/SetSeineTargetCatchDtoBinder.java | 22 + .../services/binder/data/SizeMeasureBinder.java | 22 + .../services/binder/data/TargetCatchBinder.java | 22 + .../services/binder/data/TargetLengthBinder.java | 22 + .../services/binder/data/TargetSampleBinder.java | 22 + .../observe/services/binder/data/TdrBinder.java | 22 + .../binder/data/TransmittingBuoyBinder.java | 22 + .../binder/data/TripLonglineActivityDtoBinder.java | 22 + .../services/binder/data/TripLonglineBinder.java | 22 + .../binder/data/TripLonglineGearUseDtoBinder.java | 22 + .../services/binder/data/TripSeineBinder.java | 22 + .../binder/data/TripSeineGearUseDtoBinder.java | 22 + .../services/binder/data/WeightMeasureBinder.java | 22 + .../referential/BaitHaulingStatusBinder.java | 22 + .../referential/BaitSettingStatusBinder.java | 22 + .../binder/referential/BaitTypeBinder.java | 22 + .../referential/CatchFateLonglineBinder.java | 22 + .../services/binder/referential/CountryBinder.java | 22 + .../binder/referential/DetectionModeBinder.java | 22 + .../binder/referential/EncounterTypeBinder.java | 22 + .../services/binder/referential/FpaZoneBinder.java | 22 + .../services/binder/referential/GearBinder.java | 22 + .../referential/GearCaracteristicBinder.java | 22 + .../referential/GearCaracteristicTypeBinder.java | 22 + .../services/binder/referential/HarbourBinder.java | 22 + .../binder/referential/HealthnessBinder.java | 22 + .../binder/referential/HookPositionBinder.java | 22 + .../binder/referential/HookSizeBinder.java | 22 + .../binder/referential/HookTypeBinder.java | 22 + .../referential/ItemHorizontalPositionBinder.java | 22 + .../referential/ItemVerticalPositionBinder.java | 22 + .../referential/LengthWeightParameterBinder.java | 22 + .../binder/referential/LightsticksColorBinder.java | 22 + .../binder/referential/LightsticksTypeBinder.java | 22 + .../binder/referential/LineTypeBinder.java | 22 + .../binder/referential/MaturityStatusBinder.java | 22 + .../binder/referential/MitigationTypeBinder.java | 22 + .../binder/referential/ObjectFateBinder.java | 22 + .../binder/referential/ObjectOperationBinder.java | 22 + .../binder/referential/ObjectTypeBinder.java | 22 + .../binder/referential/ObservedSystemBinder.java | 22 + .../services/binder/referential/OceanBinder.java | 22 + .../binder/referential/OrganismBinder.java | 22 + .../services/binder/referential/PersonBinder.java | 22 + .../services/binder/referential/ProgramBinder.java | 22 + .../binder/referential/ReasonForDiscardBinder.java | 22 + .../referential/ReasonForNoFishingBinder.java | 22 + .../binder/referential/ReasonForNullSetBinder.java | 22 + .../referential/ReferentialBinderSupport.java | 22 + .../binder/referential/SensorBrandBinder.java | 22 + .../binder/referential/SensorDataFormatBinder.java | 22 + .../binder/referential/SensorTypeBinder.java | 22 + .../binder/referential/SettingShapeBinder.java | 22 + .../services/binder/referential/SexBinder.java | 22 + .../binder/referential/SizeMeasureTypeBinder.java | 22 + .../services/binder/referential/SpeciesBinder.java | 22 + .../binder/referential/SpeciesFateBinder.java | 22 + .../binder/referential/SpeciesGroupBinder.java | 22 + .../binder/referential/SpeciesListBinder.java | 22 + .../binder/referential/SpeciesStatusBinder.java | 22 + .../binder/referential/StomacFullnessBinder.java | 22 + .../referential/SurroundingActivityBinder.java | 22 + .../TransmittingBuoyOperationBinder.java | 22 + .../referential/TransmittingBuoyTypeBinder.java | 22 + .../binder/referential/TripTypeBinder.java | 22 + .../referential/VesselActivityLonglineBinder.java | 22 + .../referential/VesselActivitySeineBinder.java | 22 + .../services/binder/referential/VesselBinder.java | 22 + .../referential/VesselSizeCategoryBinder.java | 22 + .../binder/referential/VesselTypeBinder.java | 22 + .../binder/referential/WeightCategoryBinder.java | 22 + .../referential/WeightMeasureTypeBinder.java | 22 + .../services/binder/referential/WindBinder.java | 22 + .../services/entity/BasketEntitiesExtractor.java | 22 + .../entity/BranchlineEntitiesExtractor.java | 22 + .../observe/services/entity/EntitiesExtractor.java | 22 + .../services/entity/EntitiesSetFactory.java | 22 + .../services/entity/SectionEntitiesExtractor.java | 22 + .../entity/SpeciesListEntitiesExtractor.java | 22 + .../entity/SpeciesListOceanEntitiesExtractor.java | 22 + .../observe/services/entity/TripMapDtoFactory.java | 22 + .../service/SqlScriptProducerServiceTopia.java | 22 + .../actions/export/ReplicateTripServiceTopia.java | 105 +++ .../synchro/DeleteSqlStatementGenerator.java | 63 ++ .../synchro/InsertSqlStatementGenerator.java | 301 +++++++ .../synchro/ReplaceSqlStatementGenerator.java | 152 ++++ ...nalReferentialSynchronizeLocalServiceTopia.java | 248 ++++++ ...alReferentialSynchronizeRemoteServiceTopia.java | 148 ++++ .../synchro/UpdateSqlStatementGenerator.java | 336 +++++++ .../GenerateValidatorDescriptorsFileTool.java | 22 + .../service/longline/BranchlineServiceTopia.java | 22 + .../longline/LonglinePositionSetDtoHelper.java | 22 + .../service/seine/TargetCatchServiceTopia.java | 22 + .../service/actions/validate/validators.json | 21 + .../replication/ReplicateReferentialsTest.java | 22 + .../entities/replication/ReplicateTestSupport.java | 27 +- .../replication/ReplicateTripLonglineTest.java | 27 +- .../replication/ReplicateTripSeineTest.java | 22 + .../services/ApplicationContextResource.java | 73 +- .../ird/observe/services/DataSourceResource.java | 52 +- .../ObserveDataSourceConnectionTopiaTaiste.java | 22 + .../services/binder/BinderEngineMetadataTest.java | 22 + .../observe/services/binder/BinderEngineTest.java | 22 + .../services/binder/ReferenceBinderEngineTest.java | 22 + .../services/service/AbstractServiceTopiaTest.java | 22 + .../service/DataSourceServiceTopiaTest.java | 8 +- .../services/service/MigrateTestsDatabases.java | 22 + .../fr/ird/observe/services/service/RigthTest.java | 22 + .../service/SqlScriptProducerServiceTopiaTest.java | 22 + .../UnidirectionalSynchronizeReferentialTest.java | 198 +++++ .../java/fr/ird/observe/test/DatabaseName.java | 25 +- .../java/fr/ird/observe/test/ObserveFixtures.java | 22 + .../main/java/fr/ird/observe/test/TestHelper.java | 11 - .../test/spi/CopyDatabaseConfiguration.java | 25 + .../test/spi/CopyDatabaseConfigurations.java | 29 +- .../ird/observe/test/spi/DatabaseClassifier.java | 32 +- .../test/spi/DatabaseNameConfiguration.java | 27 + .../test/spi/DatabaseNameConfigurations.java | 29 +- .../test/spi/DatabaseVersionConfiguration.java | 25 + .../test/spi/DatabaseVersionConfigurations.java | 28 +- .../resources/db/4.903/dataForTestLongline.sql.gz | Bin 1622037 -> 1627285 bytes .../resources/db/4.903/dataForTestSeine.sql.gz | Bin 441258 -> 441224 bytes ...aForTestUnidirectionalReferentialSynchro.sql.gz | Bin 0 -> 441247 bytes .../src/main/resources/observetest.properties | 21 + .../LICENSE.txt | 0 .../README.md | 0 observe-topia-extension/pom.xml | 97 ++ .../src/license/THIRD-PARTY.properties | 0 .../support/TopiaMetadataModelSupportImpl.java | 60 ++ .../persistence/metadata/TopiaMetadataEntity.java | 290 ++++++ .../persistence/metadata/TopiaMetadataModel.java | 95 ++ .../metadata/TopiaMetadataModelVisitor.java | 260 ++++++ .../support/TopiaMetadataModelSupport.java | 23 +- .../topia/service/sql/batch/SqlRequests.java | 403 +++++++++ .../service/sql/batch/TopiaSqlBatchService.java | 118 +++ .../batch/TopiaSqlBatchServiceConfiguration.java | 65 ++ .../sql/batch/TopiaSqlBatchServiceImpl.java | 210 +++++ .../sql/batch/actions/AbstractSchemaAction.java | 60 ++ .../sql/batch/actions/AbstractSchemaRequest.java | 106 +++ .../sql/batch/actions/AbstractSqlAction.java | 231 +++++ .../sql/batch/actions/AbstractSqlRequest.java | 114 +++ .../sql/batch/actions/AbstractTablesAction.java | 214 +++++ .../sql/batch/actions/AbstractTablesRequest.java | 122 +++ .../sql/batch/actions/CreateSchemaAction.java | 90 ++ .../sql/batch/actions/CreateSchemaRequest.java | 61 ++ .../sql/batch/actions/DeleteTablesAction.java | 139 +++ .../sql/batch/actions/DeleteTablesRequest.java | 28 +- .../sql/batch/actions/DropSchemaAction.java | 93 ++ .../sql/batch/actions/DropSchemaRequest.java | 60 ++ .../sql/batch/actions/ReplicateTablesAction.java | 144 +++ .../sql/batch/actions/ReplicateTablesRequest.java | 27 +- .../batch/actions/TopiaSqlTableSelectArgument.java | 53 ++ .../sql/batch/actions/UpdateTablesAction.java | 200 +++++ .../sql/batch/actions/UpdateTablesRequest.java | 27 +- .../service/sql/batch/tables/TopiaSqlTable.java | 140 +++ .../service/sql/batch/tables/TopiaSqlTables.java | 408 +++++++++ .../sql/batch/tables/TopiaSqlTablesFactory.java | 200 +++++ .../LICENSE.txt | 0 .../README.md | 0 observe-topia-templates-extension/pom.xml | 146 +++ .../src/license/THIRD-PARTY.properties | 0 .../templates/TopiaMetadataModelGenerator.java | 353 ++++++++ pom.xml | 75 +- src/site/rst/administration-web.rst.vm | 87 ++ src/site/rst/index.rst | 1 + src/site/site_fr.xml | 1 + 404 files changed, 14564 insertions(+), 3300 deletions(-) delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSAbleTableModel.java delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jcss delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSModel.java delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUI.jaxx delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUI.jcss delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java delete mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityTableModel.java create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteReferentialReference.java rename observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/{ObsoleteEntityListCellRenderer.java => ObsoleteReferentialReferenceListCellRenderer.java} (65%) create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripService.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsExportRequest.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsExportResult.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsImportResult.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/LocalReferentialStates.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/RemoteReferentialDiff.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeCallbackRequest.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeCallbackRequests.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeCallbackResult.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeCallbackResults.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeContext.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeEngine.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeLocalService.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeRemoteService.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeRequest.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeResult.java delete mode 100644 observe-services-configuration-api/src/license/THIRD-PARTY.properties copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/{ObserveDataSourceConfiguration.java => ObserveDataSourceType.java} (65%) delete mode 100644 observe-services-configuration-rest/src/license/THIRD-PARTY.properties delete mode 100644 observe-services-configuration-topia/src/license/THIRD-PARTY.properties copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-services-model/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineStubDto.java (57%) create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/DeleteSqlStatementGenerator.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/InsertSqlStatementGenerator.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/ReplaceSqlStatementGenerator.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeLocalServiceTopia.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalReferentialSynchronizeRemoteServiceTopia.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/UpdateSqlStatementGenerator.java create mode 100644 observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalSynchronizeReferentialTest.java copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-test-data/src/main/java/fr/ird/observe/test/spi/CopyDatabaseConfigurations.java (62%) copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-test-data/src/main/java/fr/ird/observe/test/spi/DatabaseClassifier.java (62%) copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-test-data/src/main/java/fr/ird/observe/test/spi/DatabaseNameConfigurations.java (60%) copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-test-data/src/main/java/fr/ird/observe/test/spi/DatabaseVersionConfigurations.java (60%) create mode 100644 observe-test-data/src/main/resources/db/4.903/dataForTestUnidirectionalReferentialSynchro.sql.gz copy {observe-test-data => observe-topia-extension}/LICENSE.txt (100%) copy {observe-services-runner => observe-topia-extension}/README.md (100%) create mode 100644 observe-topia-extension/pom.xml copy {observe-entities => observe-topia-extension}/src/license/THIRD-PARTY.properties (100%) create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaMetadataModelSupportImpl.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/persistence/metadata/TopiaMetadataEntity.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/persistence/metadata/TopiaMetadataModel.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/persistence/metadata/TopiaMetadataModelVisitor.java copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-topia-extension/src/main/java/org/nuiton/topia/persistence/support/TopiaMetadataModelSupport.java (62%) create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/SqlRequests.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchService.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceConfiguration.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSchemaAction.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSchemaRequest.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSqlAction.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSqlRequest.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesRequest.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/CreateSchemaAction.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/CreateSchemaRequest.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesRequest.java (60%) create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DropSchemaAction.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DropSchemaRequest.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesRequest.java (59%) create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/TopiaSqlTableSelectArgument.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java copy observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java => observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesRequest.java (60%) create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTable.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java create mode 100644 observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTablesFactory.java copy {observe-test-data => observe-topia-templates-extension}/LICENSE.txt (100%) copy {observe-services-runner => observe-topia-templates-extension}/README.md (100%) create mode 100644 observe-topia-templates-extension/pom.xml copy {observe-entities => observe-topia-templates-extension}/src/license/THIRD-PARTY.properties (100%) create mode 100644 observe-topia-templates-extension/src/main/java/org/nuiton/topia/templates/TopiaMetadataModelGenerator.java create mode 100644 src/site/rst/administration-web.rst.vm -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7677-VerifActionExport in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 9c0666740c4efed6b3e93c7b285060cf2f9247e3 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Mar 30 18:09:53 2016 +0200 ajout du service d'action pour l'export de données observateur (see #7677). --- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 36 +++--- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 3 +- .../observe/ui/admin/export/ExportUIHandler.java | 135 ++++++--------------- .../controller/v1/DataSourceServiceController.java | 6 - .../replicate/ReplicateServiceController.java | 28 +++++ .../services/service/DataSourceService.java | 9 -- .../actions/replicate/ReplicateService.java | 27 +++++ .../actions/replicate/ReplicateTripResult.java | 31 +++++ .../fr/ird/observe/services/dto/ImportDataDto.java | 60 --------- .../dto/actions/replicate/ReplicateTrip.java | 25 ++++ .../services/service/DataSourceServiceTopia.java | 12 -- .../actions/replicate/ReplicateServiceTopia.java | 99 +++++++++++++++ 12 files changed, 267 insertions(+), 204 deletions(-) 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 324c508..84b13f8 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,17 +21,16 @@ */ package fr.ird.observe.ui.admin; -import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.ImportDataDto; +import fr.ird.observe.services.dto.actions.replicate.ReplicateTrip; import fr.ird.observe.services.service.BabModelVersionException; -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.services.service.SqlScriptProducerRequest; -import fr.ird.observe.services.service.SqlScriptProducerService; +import fr.ird.observe.services.service.actions.replicate.ReplicateService; +import fr.ird.observe.services.service.actions.replicate.ReplicateTripResult; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; @@ -39,6 +38,7 @@ import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel; import fr.ird.observe.ui.tree.ObserveTreeHelper; import jaxx.runtime.swing.wizard.ext.WizardState; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -46,6 +46,7 @@ import javax.swing.JTree; import javax.swing.tree.TreeModel; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.List; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.n; @@ -117,37 +118,34 @@ public class AdminTabUIHandler { return WizardState.FAILED; } - protected void replicateData(ObserveSwingDataSource source, + protected List<ReplicateTripResult> replicateData(ObserveSwingDataSource source, ObserveSwingDataSource target, - String... tripIds) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { + List<String> tripIds) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { - if (tripIds != null && tripIds.length > 0) { + List<ReplicateTripResult> results = Lists.newArrayList(); - openSource(source); + if (CollectionUtils.isNotEmpty(tripIds)) { - SqlScriptProducerService sqlScriptProducerService = source.newSqlScriptProducerService(); + openSource(source); - // on replique les données specifiees - ImmutableSet<String> dataIds = ImmutableSet.<String>copyOf(tripIds); + ReplicateService sourceReplicateService = source.newService(ReplicateService.class); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addDataIds(dataIds); - byte[] dataDump = sqlScriptProducerService.produceSqlScript(request); + List<ReplicateTrip> replicateTrips = sourceReplicateService.exportTrips(tripIds); source.close(); - openSource(target); - DataSourceService dataSourceService = target.newService(DataSourceService.class); + ReplicateService targetReplicateService = target.newService(ReplicateService.class); - ImportDataDto importData = new ImportDataDto(dataDump, dataIds); - - dataSourceService.importData(importData); + results = targetReplicateService.importTrips(replicateTrips); target.close(); } + return results; + } protected void replicateReferentiel(ObserveSwingDataSource 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 9e74a0d..a31455a 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 @@ -929,7 +929,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // pour exporter les données utilisateurs // l'objectOperation de synchronisation de référentiel est nécessaire - getOperations().add(AdminStep.SYNCHRONIZE); + // FIXME Sbavencoff 30/03/20156 desactivation temproraire de la synchro du référentiel */ + //getOperations().add(AdminStep.SYNCHRONIZE); // l'objectOperation de calcul des données est aussi obligatoire getOperations().add(AdminStep.CONSOLIDATE); 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 d6a0891..245b525 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 @@ -25,10 +25,8 @@ import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.services.service.longline.TripLonglineService; -import fr.ird.observe.services.service.seine.TripSeineService; +import fr.ird.observe.services.service.actions.replicate.ReplicateTripResult; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; @@ -49,11 +47,9 @@ import javax.swing.JTable; 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.Date; import java.util.List; -import java.util.concurrent.Callable; +import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -86,25 +82,21 @@ public class ExportUIHandler extends AdminTabUIHandler { final SelectDataUI selectTabUI = (SelectDataUI) ui.getStepUI(AdminStep.SELECT_DATA); - tabUI.getModel().addPropertyChangeListener(AdminUIModel.SELECTION_MODEL_CHANGED_PROPERTY_NAME, new PropertyChangeListener() { - - @Override - public void propertyChange(PropertyChangeEvent evt) { - AdminUIModel model = (AdminUIModel) evt.getSource(); + tabUI.getModel().addPropertyChangeListener(AdminUIModel.SELECTION_MODEL_CHANGED_PROPERTY_NAME, evt -> { + AdminUIModel model1 = (AdminUIModel) evt.getSource(); // if (!getModel().containsStep(tabUI.getStep())) { // // avoid multi-cast // return; // } - //FIXME -// DataSelectionModel value = (DataSelectionModel) evt.getNewValue(); -// if (log.isInfoEnabled()) { -// log.info("selection model changed to " + value); -// } - selectTabUI.getSelectionModel().clearSelection(); - selectTabUI.getSelectionRenderer().setExistingTrips(model.getExportModel().getExistingTrips()); - updateSelectionModel(selectTabUI); + DataSelectionModel value = (DataSelectionModel) evt.getNewValue(); + if (log.isInfoEnabled()) { + log.info("selection model changed to " + value); } + + selectTabUI.getSelectionModel().clearSelection(); + selectTabUI.getSelectionRenderer().setExistingTrips(model1.getExportModel().getExistingTrips()); + updateSelectionModel(selectTabUI); }); // tableau de l'export de données @@ -168,13 +160,7 @@ public class ExportUIHandler extends AdminTabUIHandler { addAdminWorker( ((ExportUI) ui).getPrepareAction().getToolTipText(), - new Callable<WizardState>() { - - @Override - public WizardState call() throws Exception { - return prepareAction(); - } - } + this::prepareAction ); } @@ -187,13 +173,7 @@ public class ExportUIHandler extends AdminTabUIHandler { addAdminWorker( tabUI.getStartAction().getToolTipText(), - new Callable<WizardState>() { - - @Override - public WizardState call() throws Exception { - return doAction(); - } - } + this::doAction ); } @@ -258,83 +238,44 @@ public class ExportUIHandler extends AdminTabUIHandler { ExportModel stepModel = model.getExportModel(); // on filtre les marées sélectionnées pour export - List<TripEntry> tripEntries = stepModel.getSelectedTrips(); - - for (TripEntry tripEntry : tripEntries) { - - processTrip(stepModel, tripEntry); - - } - - sendMessage(t("observe.message.synchro.operation.done", new Date())); - - return WizardState.SUCCESSED; - } - - protected void processTrip(ExportModel stepModel, TripEntry tripEntry) throws Exception { + List<String> tripId = stepModel.getSelectedTrips() + .stream() + .map(TripEntry::getTrip) + .map(DataReference::getId) + .collect(Collectors.toList()); - ObserveSwingDataSource centralSource = stepModel.getCentralSource(); - ObserveSwingDataSource source = stepModel.getSource(); + List<ReplicateTripResult> results = replicateData(stepModel.getSource(), stepModel.getCentralSource(), tripId); - ReferentialReference<ProgramDto> program = tripEntry.getProgram(); - DataReference trip = tripEntry.getTrip(); - String tripId = trip.getId(); + for (ReplicateTripResult result : results) { - String tripDecorated = stepModel.decorate(trip); - String programDecorated = stepModel.decorate(program); + TripEntry tripEntry = stepModel.getSelectedTrips() + .stream() + .filter(t -> result.getTripId().equals(t.getTrip().getId())) + .findFirst().get(); - if (tripEntry.isExist()) { + String tripDecorated = stepModel.decorate(tripEntry.getTrip()); + String programDecorated = stepModel.decorate(tripEntry.getProgram()); - //TODO afficher un message de confirmation pour l'écrasement des marées sur la base distante - // on supprime les marées à écraser de la base distante + if (result.isDeleted()) { - if (log.isInfoEnabled()) { - log.info(tripId + " -- " + t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); + if (log.isInfoEnabled()) { + log.info(tripId + " -- " + t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); + } + sendMessage(t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); } - sendMessage(t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); - - if (TripSeineDto.class.isAssignableFrom(trip.getType())) { - - TripSeineService tripSeineService = centralSource.newService(TripSeineService.class); - - tripSeineService.delete(tripId); - - } else if (TripLonglineDto.class.isAssignableFrom(trip.getType())) { - - TripLonglineService tripLonglineService = centralSource.newService(TripLonglineService.class); - - tripLonglineService.delete(tripId); + if (result.isDuplicated()) { + if (log.isInfoEnabled()) { + log.info(tripId + " -- " + t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); + } + sendMessage(t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); } } - if (log.isInfoEnabled()) { - log.info(tripId + " -- " + t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); - } - sendMessage(t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); - - try { - replicateData(source, centralSource, tripId); - } catch (Exception e) { - //FIXME 20100726 : il faut supprimer tous les objets crées pour cette marée - -// tx = beginTransaction(centralSource, txName); -// -// // on supprime la maree qui n'a pas pu etre importee -// try { -// TopiaDAO<Trip> dao = ObserveDAOHelper.getTripSeineDAO(tx); -// // on recharge la données depuis la base centrale -// m = dao.findByTopiaId(m.getTopiaId()); -// dao.delete(m); -// commitTransaction(centralSource, tx, txName); -// } finally { -// closeTransaction(centralSource, tx, txName); -// } - - throw e; - } + sendMessage(t("observe.message.synchro.operation.done", new Date())); + return WizardState.SUCCESSED; } } 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 65d40ac..c95c772 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 @@ -34,7 +34,6 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConnectionRest; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; -import fr.ird.observe.services.dto.ImportDataDto; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.service.BabModelVersionException; @@ -137,11 +136,6 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport getAnonymousService(dataSourceConfigurationTopia).migrateData(dataSourceConfiguration); } - @Override - public void importData(ImportDataDto importData) { - getAuthenticatedService().importData(importData); - } - protected ObserveDataSourceConfiguration getTopiaDataSourceConfiguration(ObserveDataSourceConfiguration dataSourceConfigurationFromRequest) { Preconditions.checkArgument(dataSourceConfigurationFromRequest instanceof ObserveDataSourceConfigurationRest); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/replicate/ReplicateServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/replicate/ReplicateServiceController.java new file mode 100644 index 0000000..d000c72 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/replicate/ReplicateServiceController.java @@ -0,0 +1,28 @@ +package fr.ird.observe.application.web.controller.v1.actions.replicate; + +import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; +import fr.ird.observe.services.dto.actions.replicate.ReplicateTrip; +import fr.ird.observe.services.service.actions.replicate.ReplicateService; +import fr.ird.observe.services.service.actions.replicate.ReplicateTripResult; + +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ReplicateServiceController extends ObserveAuthenticatedServiceControllerSupport<ReplicateService> implements ReplicateService{ + + public ReplicateServiceController() { + super(ReplicateService.class); + } + + @Override + public List<ReplicateTrip> exportTrips(List<String> tripIds) { + return getAuthenticatedService().exportTrips(tripIds); + } + + @Override + public List<ReplicateTripResult> importTrips(List<ReplicateTrip> replicateTrips) { + return getAuthenticatedService().importTrips(replicateTrips); + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java index 1d66a31..bd951dd 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java @@ -28,13 +28,9 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; -import fr.ird.observe.services.dto.ImportDataDto; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.spi.NoDataAccess; -import fr.ird.observe.services.spi.PostRequest; -import fr.ird.observe.services.spi.Write; -import fr.ird.observe.services.spi.WriteDataPermission; import java.io.Closeable; import java.util.Set; @@ -71,9 +67,4 @@ public interface DataSourceService extends ObserveService, Closeable { void destroy() throws DatabaseDestroyNotAuthorizedException; - @WriteDataPermission - @Write - @PostRequest - void importData(ImportDataDto importData); - } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateService.java new file mode 100644 index 0000000..a4284c0 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateService.java @@ -0,0 +1,27 @@ +package fr.ird.observe.services.service.actions.replicate; + +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.dto.actions.replicate.ReplicateTrip; +import fr.ird.observe.services.spi.PostRequest; +import fr.ird.observe.services.spi.ReadDataPermission; +import fr.ird.observe.services.spi.ReadReferentialPermission; +import fr.ird.observe.services.spi.WriteDataPermission; + +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public interface ReplicateService extends ObserveService { + + @ReadDataPermission + @ReadReferentialPermission + @PostRequest + List<ReplicateTrip> exportTrips(List<String> tripIds); + + @WriteDataPermission + @ReadReferentialPermission + @PostRequest + List<ReplicateTripResult> importTrips(List<ReplicateTrip> replicateTrips); + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateTripResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateTripResult.java new file mode 100644 index 0000000..ba4f01d --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateTripResult.java @@ -0,0 +1,31 @@ +package fr.ird.observe.services.service.actions.replicate; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ReplicateTripResult { + + protected final String tripId; + + protected final boolean deleted; + + protected final boolean duplicated; + + public ReplicateTripResult(String tripId, boolean deleted, boolean duplicated) { + this.tripId = tripId; + this.deleted = deleted; + this.duplicated = duplicated; + } + + public String getTripId() { + return tripId; + } + + public boolean isDeleted() { + return deleted; + } + + public boolean isDuplicated() { + return duplicated; + } +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ImportDataDto.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ImportDataDto.java deleted file mode 100644 index 3c5b1ea..0000000 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/ImportDataDto.java +++ /dev/null @@ -1,60 +0,0 @@ -package fr.ird.observe.services.dto; - -/*- - * #%L - * ObServe :: Services model - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; - -/** - * @author Sylvain Bavencoff - bavencoff@codelutin.com - */ -public class ImportDataDto implements ObserveDto { - - protected byte[] dumpData; - - protected ImmutableSet<String> importDataIds; - - public ImportDataDto() { - this(null, null); - } - - public ImportDataDto(byte[] dumpData, ImmutableSet<String> importDataIds) { - this.dumpData = dumpData; - this.importDataIds = importDataIds; - } - - public byte[] getDumpData() { - return dumpData; - } - - public ImmutableSet<String> getImportDataIds() { - return importDataIds; - } - - public void setDumpData(byte[] dumpData) { - this.dumpData = dumpData; - } - - public void setImportDataIds(ImmutableSet<String> importDataIds) { - this.importDataIds = importDataIds; - } -} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/replicate/ReplicateTrip.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/replicate/ReplicateTrip.java new file mode 100644 index 0000000..391742a --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/actions/replicate/ReplicateTrip.java @@ -0,0 +1,25 @@ +package fr.ird.observe.services.dto.actions.replicate; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ReplicateTrip { + + protected final String tripId; + + protected final byte[] tripContent; + + public ReplicateTrip(String tripId, byte[] tripContent) { + this.tripId = tripId; + this.tripContent = tripContent; + } + + public String getTripId() { + return tripId; + } + + public byte[] getTripContent() { + return tripContent; + } + +} 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 4024e43..0ab73f9 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 @@ -45,7 +45,6 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConnectionTopia; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; -import fr.ird.observe.services.dto.ImportDataDto; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.dto.ObserveDbUserDtos; @@ -504,17 +503,6 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } - @Override - public void importData(ImportDataDto importData) { - if (log.isTraceEnabled()) { - log.trace("importData([" + Joiner.on(", ").join(importData.getImportDataIds()) + "])"); - } - - ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext(); - topiaApplicationContext.executeSqlStatements(importData.getDumpData()); - - } - protected ObserveDataSourceConnectionTopia createDataSourceConnection(ObserveDataSourceInformation dataSourceInformation, String authenticationToken) { ObserveDataSourceConnectionTopia dataSourceConnection = new ObserveDataSourceConnectionTopia( diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateServiceTopia.java new file mode 100644 index 0000000..92741be --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/replicate/ReplicateServiceTopia.java @@ -0,0 +1,99 @@ +package fr.ird.observe.services.service.actions.replicate; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.ObserveTopiaApplicationContext; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.actions.replicate.ReplicateTrip; +import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.SqlScriptProducerService; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.TripSeineService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ReplicateServiceTopia extends ObserveServiceTopia implements ReplicateService { + + private static final Log log = LogFactory.getLog(ReplicateServiceTopia.class); + + @Override + public List<ReplicateTrip> exportTrips(List<String> tripIds) { + if (log.isTraceEnabled()) { + log.trace("exportTrips([" + tripIds.stream().collect(Collectors.joining(", ")) + "])"); + } + + return tripIds + .stream() + .map(this::exportTrip) + .collect(Collectors.toList()); + } + + protected ReplicateTrip exportTrip(String tripId) { + + SqlScriptProducerService dumpProducerService = serviceContext.newService(SqlScriptProducerService.class); + + SqlScriptProducerRequest request = SqlScriptProducerRequest.forPostgres().addDataIds(ImmutableSet.of(tripId)); + + byte[] tripContent = dumpProducerService.produceSqlScript(request); + + return new ReplicateTrip(tripId, tripContent); + + } + + @Override + public List<ReplicateTripResult> importTrips(List<ReplicateTrip> replicateTrips) { + if (log.isTraceEnabled()) { + log.trace("exportTrips([" + replicateTrips.stream().map(ReplicateTrip::getTripId).collect(Collectors.joining(", ")) + "])"); + } + + return replicateTrips + .stream() + .map(this::importTrip) + .collect(Collectors.toList()); + } + + protected ReplicateTripResult importTrip(ReplicateTrip replicateTrip) { + + String tripId = replicateTrip.getTripId(); + + boolean deleted = false; + + boolean duplicated = false; + + if (IdDtos.isTripSeineId(tripId)) { + + TripSeineService tripSeineService = serviceContext.newService(TripSeineService.class); + + deleted = tripSeineService.exists(tripId); + + if (deleted) { + tripSeineService.delete(tripId); + } + + } else if (IdDtos.isTripLonglineId(tripId)) { + + TripLonglineService tripLonglineService = serviceContext.newService(TripLonglineService.class); + + deleted = tripLonglineService.exists(tripId); + + if (deleted) { + tripLonglineService.delete(tripId); + } + + } + + ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext(); + topiaApplicationContext.executeSqlStatements(replicateTrip.getTripContent()); + + duplicated = true; + + return new ReplicateTripResult(tripId, deleted, duplicated); + + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7677-VerifActionExport in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit d04373c5958a1e7cb5cb06d7e62985b1211c16e5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Jul 20 12:18:01 2016 +0200 Début de réécriture des services de recopie de marées (See #7677) --- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 78 +++++++-------- .../fr/ird/observe/ui/admin/export/ExportUI.jaxx | 15 +-- .../observe/ui/admin/export/ExportUIHandler.java | 38 ++++++++ .../actions/export/ReplicateTripService.java | 27 ++++++ .../export/ReplicateTripsExportRequest.java | 77 +++++++++++++++ .../actions/export/ReplicateTripsExportResult.java | 78 +++++++++++++++ .../actions/export/ReplicateTripsImportResult.java | 69 ++++++++++++++ .../actions/export/ReplicateTripServiceTopia.java | 105 +++++++++++++++++++++ 8 files changed, 435 insertions(+), 52 deletions(-) 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 84b13f8..5176bf4 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,16 +21,12 @@ */ package fr.ird.observe.ui.admin; -import com.google.common.collect.Lists; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.actions.replicate.ReplicateTrip; import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; -import fr.ird.observe.services.service.actions.replicate.ReplicateService; -import fr.ird.observe.services.service.actions.replicate.ReplicateTripResult; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; @@ -38,7 +34,6 @@ import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel; import fr.ird.observe.ui.tree.ObserveTreeHelper; import jaxx.runtime.swing.wizard.ext.WizardState; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -46,7 +41,6 @@ import javax.swing.JTree; import javax.swing.tree.TreeModel; import java.io.PrintWriter; import java.io.StringWriter; -import java.util.List; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.n; @@ -118,42 +112,42 @@ public class AdminTabUIHandler { return WizardState.FAILED; } - protected List<ReplicateTripResult> replicateData(ObserveSwingDataSource source, - ObserveSwingDataSource target, - List<String> tripIds) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { - - List<ReplicateTripResult> results = Lists.newArrayList(); - - if (CollectionUtils.isNotEmpty(tripIds)) { - - openSource(source); - - ReplicateService sourceReplicateService = source.newService(ReplicateService.class); - - List<ReplicateTrip> replicateTrips = sourceReplicateService.exportTrips(tripIds); - - source.close(); - - openSource(target); - - ReplicateService targetReplicateService = target.newService(ReplicateService.class); - - results = targetReplicateService.importTrips(replicateTrips); - - target.close(); - - } - - return results; - - } - - protected void replicateReferentiel(ObserveSwingDataSource source, - ObserveSwingDataSource target) { - - //FIXME -// getReplicationService().replicateReferentiel(source, target); - } +// protected List<ReplicateTripResult> replicateData(ObserveSwingDataSource source, +// ObserveSwingDataSource target, +// List<String> tripIds) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { +// +// List<ReplicateTripResult> results = Lists.newArrayList(); +// +// if (CollectionUtils.isNotEmpty(tripIds)) { +// +// openSource(source); +// +// ReplicateService sourceReplicateService = source.newService(ReplicateService.class); +// +// List<ReplicateTrip> replicateTrips = sourceReplicateService.exportTrips(tripIds); +// +// source.close(); +// +// openSource(target); +// +// ReplicateService targetReplicateService = target.newService(ReplicateService.class); +// +// results = targetReplicateService.importTrips(replicateTrips); +// +// target.close(); +// +// } +// +// return results; +// +// } + +// protected void replicateReferentiel(ObserveSwingDataSource source, +// ObserveSwingDataSource target) { +// +// //FIXME +//// getReplicationService().replicateReferentiel(source, target); +// } public void initTabUI(AdminUI ui, AdminTabUI tabUI) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUI.jaxx index f207c17..7b4b0a8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUI.jaxx @@ -33,14 +33,12 @@ </import> - <ExportModel id='stepModel' - initializer='getModel().getExportModel()'/> + <ExportModel id='stepModel' initializer='getModel().getExportModel()'/> <ExportUIHandler id='handler' constructorParams='this'/> <!-- le modèles des activités dont on a pu calculé un point gps --> - <TripToExportTableModel id='tripsModel' - onTableChanged='startAction.setEnabled(tripsModel.hasSelection())'/> + <TripToExportTableModel id='tripsModel' onTableChanged='startAction.setEnabled(tripsModel.hasSelection())'/> <script><![CDATA[ public ExportUI(AdminUI parentContext) { @@ -67,12 +65,10 @@ public void updateState(WizardState newState) { </script> <JPanel id='PENDING_content'> - <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' - weighty='1'> + <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> <row> <cell> - <JButton id="prepareAction" - onActionPerformed="getHandler().doPrepareAction()"/> + <JButton id="prepareAction" onActionPerformed="getHandler().doPrepareAction()"/> </cell> </row> </Table> @@ -86,8 +82,7 @@ public void updateState(WizardState newState) { </JScrollPane> <JPanel constraints='BorderLayout.SOUTH' layout='{new BorderLayout()}'> - <JButton id='startAction' constraints='BorderLayout.CENTER' - onActionPerformed="getHandler().doStartAction()"/> + <JButton id='startAction' constraints='BorderLayout.CENTER' onActionPerformed="getHandler().doStartAction()"/> </JPanel> </JPanel> 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 245b525..13ade10 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,11 +21,17 @@ */ package fr.ird.observe.ui.admin.export; +import com.google.common.collect.Lists; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.actions.replicate.ReplicateTrip; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.BabModelVersionException; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.services.service.actions.replicate.ReplicateService; import fr.ird.observe.services.service.actions.replicate.ReplicateTripResult; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; @@ -40,6 +46,7 @@ import fr.ird.observe.ui.util.decorator.DataReferenceDecorator; import fr.ird.observe.ui.util.decorator.ReferentialReferenceDecorator; import jaxx.runtime.swing.editor.MyDefaultCellEditor; import jaxx.runtime.swing.wizard.ext.WizardState; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -278,4 +285,35 @@ public class ExportUIHandler extends AdminTabUIHandler { return WizardState.SUCCESSED; } + private List<ReplicateTripResult> replicateData(ObserveSwingDataSource source, + ObserveSwingDataSource target, + List<String> tripIds) throws DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { + + List<ReplicateTripResult> results = Lists.newArrayList(); + + if (CollectionUtils.isNotEmpty(tripIds)) { + + openSource(source); + + ReplicateService sourceReplicateService = source.newService(ReplicateService.class); + + List<ReplicateTrip> replicateTrips = sourceReplicateService.exportTrips(tripIds); + + source.close(); + + openSource(target); + + ReplicateService targetReplicateService = target.newService(ReplicateService.class); + + results = targetReplicateService.importTrips(replicateTrips); + + target.close(); + + } + + return results; + + } + + } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripService.java new file mode 100644 index 0000000..9c318b1 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripService.java @@ -0,0 +1,27 @@ +package fr.ird.observe.services.service.actions.export; + +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.spi.PostRequest; +import fr.ird.observe.services.spi.ReadDataPermission; +import fr.ird.observe.services.spi.ReadReferentialPermission; +import fr.ird.observe.services.spi.WriteDataPermission; + +/** + * Created on 20/07/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public interface ReplicateTripService extends ObserveService { + + @ReadDataPermission + @ReadReferentialPermission + @PostRequest + ReplicateTripsExportResult exportTrips(ReplicateTripsExportRequest exportRequest); + + @WriteDataPermission + @ReadReferentialPermission + @PostRequest + ReplicateTripsImportResult importTrips(ReplicateTripsExportResult importRequest); + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsExportRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsExportRequest.java new file mode 100644 index 0000000..f2484ed --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsExportRequest.java @@ -0,0 +1,77 @@ +package fr.ird.observe.services.service.actions.export; + +import com.google.common.collect.ImmutableSet; + +import java.util.Iterator; +import java.util.Objects; + +/** + * Created on 20/07/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ReplicateTripsExportRequest implements Iterable<ReplicateTripsExportRequest.ReplicateTripExportRequest> { + + public static ExportTripsRequestBuilder builder() { + return new ExportTripsRequestBuilder(); + } + + public static class ExportTripsRequestBuilder { + + private final ImmutableSet.Builder<ReplicateTripExportRequest> trips = ImmutableSet.builder(); + + public ExportTripsRequestBuilder addTripToReplicate(String tripId, boolean deleteBeofreImport) { + trips.add(new ReplicateTripExportRequest(tripId, deleteBeofreImport)); + return this; + } + + public ReplicateTripsExportRequest build() { + return new ReplicateTripsExportRequest(trips.build()); + } + + } + + public static class ReplicateTripExportRequest { + + private final String tripId; + + private final boolean deleteBeforeImport; + + public ReplicateTripExportRequest(String tripId, boolean deleteBeforeImport) { + this.tripId = tripId; + this.deleteBeforeImport = deleteBeforeImport; + } + + public String getTripId() { + return tripId; + } + + public boolean isDeleteBeforeImport() { + return deleteBeforeImport; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ReplicateTripExportRequest that = (ReplicateTripExportRequest) o; + return Objects.equals(getTripId(), that.getTripId()); + } + + @Override + public int hashCode() { + return Objects.hash(getTripId()); + } + } + + private final ImmutableSet<ReplicateTripExportRequest> tripsToExport; + + @Override + public Iterator<ReplicateTripExportRequest> iterator() { + return tripsToExport.iterator(); + } + + private ReplicateTripsExportRequest(ImmutableSet<ReplicateTripExportRequest> tripsToExport) { + this.tripsToExport = tripsToExport; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsExportResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsExportResult.java new file mode 100644 index 0000000..0811119 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsExportResult.java @@ -0,0 +1,78 @@ +package fr.ird.observe.services.service.actions.export; + +import com.google.common.collect.ImmutableSet; + +import java.util.Iterator; +import java.util.Objects; + +/** + * Created on 20/07/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ReplicateTripsExportResult implements Iterable<ReplicateTripsExportResult.ReplicateTripExportResult> { + + public static ExportTripsRequestBuilder builder() { + return new ExportTripsRequestBuilder(); + } + + public static class ExportTripsRequestBuilder { + + private final ImmutableSet.Builder<ReplicateTripExportResult> trips = ImmutableSet.builder(); + + public ExportTripsRequestBuilder addTripToReplicate(ReplicateTripsExportRequest.ReplicateTripExportRequest request, byte[] sqlContent) { + trips.add(new ReplicateTripExportResult(request, sqlContent)); + return this; + } + + public ReplicateTripsExportResult build() { + return new ReplicateTripsExportResult(trips.build()); + } + + } + + public static class ReplicateTripExportResult { + + private final ReplicateTripsExportRequest.ReplicateTripExportRequest request; + + private final byte[] sqlContent; + + public ReplicateTripExportResult(ReplicateTripsExportRequest.ReplicateTripExportRequest request, byte[] sqlContent) { + this.request = request; + this.sqlContent = sqlContent; + } + + public ReplicateTripsExportRequest.ReplicateTripExportRequest getRequest() { + return request; + } + + public byte[] getSqlContent() { + return sqlContent; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ReplicateTripExportResult that = (ReplicateTripExportResult) o; + return Objects.equals(getRequest(), that.getRequest()); + } + + @Override + public int hashCode() { + return Objects.hash(getRequest()); + } + + } + + private final ImmutableSet<ReplicateTripExportResult> exportedTrips; + + @Override + public Iterator<ReplicateTripExportResult> iterator() { + return exportedTrips.iterator(); + } + + private ReplicateTripsExportResult(ImmutableSet<ReplicateTripExportResult> exportedTrips) { + this.exportedTrips = exportedTrips; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsImportResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsImportResult.java new file mode 100644 index 0000000..881648f --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripsImportResult.java @@ -0,0 +1,69 @@ +package fr.ird.observe.services.service.actions.export; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.DataReference; + +import java.util.Iterator; + +/** + * Le résultat de l'export de plusieurs marées. + * + * Created on 20/07/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class ReplicateTripsImportResult implements Iterable<ReplicateTripsImportResult.ReplicateTripImportResult> { + + public static ExportTripsResultBuilder builder() { + return new ExportTripsResultBuilder(); + } + + public static class ExportTripsResultBuilder { + + private final ImmutableSet.Builder<ReplicateTripImportResult> trips = ImmutableSet.builder(); + + public ExportTripsResultBuilder addTripResult(DataReference tripReference, boolean deleted) { + trips.add(new ReplicateTripImportResult(tripReference, deleted)); + return this; + } + + public ReplicateTripsImportResult build() { + + return new ReplicateTripsImportResult(trips.build()); + } + + } + + public static class ReplicateTripImportResult { + + private final DataReference tripReference; + + private final boolean deleted; + + public ReplicateTripImportResult(DataReference tripReference, boolean deleted) { + this.tripReference = tripReference; + this.deleted = deleted; + } + + public DataReference getTripReference() { + return tripReference; + } + + public boolean isDeleted() { + return deleted; + } + + } + + private final ImmutableSet<ReplicateTripImportResult> trips; + + @Override + public Iterator<ReplicateTripImportResult> iterator() { + return trips.iterator(); + } + + private ReplicateTripsImportResult(ImmutableSet<ReplicateTripImportResult> trips) { + this.trips = trips; + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java new file mode 100644 index 0000000..261bfc5 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java @@ -0,0 +1,105 @@ +package fr.ird.observe.services.service.actions.export; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.ObserveTopiaApplicationContext; +import fr.ird.observe.entities.Trip; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.binder.BinderEngine; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.SqlScriptProducerService; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.TripSeineService; + +/** + * Created on 20/07/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ReplicateTripServiceTopia extends ObserveServiceTopia implements ReplicateTripService { + + @Override + public ReplicateTripsExportResult exportTrips(ReplicateTripsExportRequest exportRequest) { + + SqlScriptProducerService sqlScriptProducerService = serviceContext.newService(SqlScriptProducerService.class); + + ReplicateTripsExportResult.ExportTripsRequestBuilder resultBuilder = ReplicateTripsExportResult.builder(); + + for (ReplicateTripsExportRequest.ReplicateTripExportRequest replicateTripExportRequest : exportRequest) { + + String tripId = replicateTripExportRequest.getTripId(); + + SqlScriptProducerRequest request = SqlScriptProducerRequest.forPostgres().addDataIds(ImmutableSet.of(tripId)); + + byte[] tripContent = sqlScriptProducerService.produceSqlScript(request); + + resultBuilder.addTripToReplicate(replicateTripExportRequest, tripContent); + + } + + return resultBuilder.build(); + + } + + @Override + public ReplicateTripsImportResult importTrips(ReplicateTripsExportResult importTripsRequest) { + + TripSeineService tripSeineService = serviceContext.newService(TripSeineService.class); + TripLonglineService tripLonglineService = serviceContext.newService(TripLonglineService.class); + ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext(); + + ReplicateTripsImportResult.ExportTripsResultBuilder resultBuilder = ReplicateTripsImportResult.builder(); + + for (ReplicateTripsExportResult.ReplicateTripExportResult importTripRequest : importTripsRequest) { + + String tripId = importTripRequest.getRequest().getTripId(); + boolean deleteBeforeImport = importTripRequest.getRequest().isDeleteBeforeImport(); + + Trip trip; + + if (IdDtos.isTripSeineId(tripId)) { + +// deleted = tripSeineService.exists(tripId); + + if (deleteBeforeImport) { + + //FIXME Do not use this, prefer usage of topai SqlBatchService + tripSeineService.delete(tripId); + + } + + topiaApplicationContext.executeSqlStatements(importTripRequest.getSqlContent()); + + trip = loadEntity(TripLonglineDto.class, tripId); + + } else if (IdDtos.isTripLonglineId(tripId)) { + +// deleted = tripLonglineService.exists(tripId); + + if (deleteBeforeImport) { + + //FIXME Do not use this, prefer usage of topai SqlBatchService + tripLonglineService.delete(tripId); + + } + + topiaApplicationContext.executeSqlStatements(importTripRequest.getSqlContent()); + + trip = loadEntity(TripLonglineDto.class, tripId); + } else { + throw new IllegalStateException("Can't come here!"); + } + + DataReference tripReference = BinderEngine.get().transformEntityToDataReferenceDto(getReferentialLocale(), trip); + + resultBuilder.addTripResult(tripReference, deleteBeforeImport); + + } + + return resultBuilder.build(); + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm