branch feature/7017 updated (a2cc54f -> db5dcd0)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7017 in repository observe. See http://git.codelutin.com/observe.git from a2cc54f ajout d'une usine à service + amélioration de l'abstraction (refs #7017) new db5dcd0 ajout de premiers services et d'une usine de services The 1 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 db5dcd0a296d150eb43f0ed50c8582ef66f9d4bd Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Apr 26 21:11:27 2015 +0200 ajout de premiers services et d'une usine de services Summary of changes: .../src/main/java/fr/ird/observe/DataService.java | 3181 ++++++++++---------- .../fr/ird/observe/ObserveApplicationContext.java | 2 +- .../entities/longline/ActivityLonglineDAOImpl.java | 9 + .../entities/seine/ActivitySeineDAOImpl.java | 9 + .../observe/entities/seine/ActivitySeineImpl.java | 15 +- .../ird/observe/entities/seine/RouteDAOImpl.java | 10 + .../observe/services/AbstractObserveService.java | 223 +- .../main/java/fr/ird/observe/services/Commit.java | 19 + .../services/Longline/TripLonglineServiceImp.java | 66 - .../fr/ird/observe/services/NoTransaction.java | 19 + .../fr/ird/observe/services/ObserveService.java | 27 + .../observe/services/ObserveServiceContext.java | 76 + .../observe/services/ObserveServiceFactory.java | 227 +- .../ird/observe/services/data/OpenableService.java | 25 + .../observe/services/data/OpenableServiceImpl.java | 157 + .../fr/ird/observe/services/data/TripService.java | 31 + .../ird/observe/services/data/TripServiceImpl.java | 134 + .../data/longline/ActivityLonglineService.java | 41 + .../data/longline/ActivityLonglineServiceImpl.java | 206 ++ .../data/longline/CatchLonglineService.java | 42 + .../data/longline/CatchLonglineServiceImpl.java | 136 + .../longline/GearUseFeaturesLonglineService.java | 25 + .../GearUseFeaturesLonglineServiceImpl.java | 92 + .../longline/LonglineDetailCompositionService.java | 12 + .../LonglineDetailCompositionServiceImpl.java | 13 + .../services/data/longline/SensorUsedService.java | 37 + .../data/longline/SensorUsedServiceImpl.java | 84 + .../services/data/longline/SetLonglineService.java | 21 + .../data/longline/SetLonglineServiceImpl.java | 71 + .../observe/services/data/longline/TdrService.java | 37 + .../services/data/longline/TdrServiceImpl.java | 83 + .../data/longline/TripLonglineService.java | 42 + .../data/longline/TripLonglineServiceImpl.java | 201 ++ .../services/data/seine/ActivitySeineService.java | 47 + .../data/seine/ActivitySeineServiceImpl.java | 255 ++ .../services/data/seine/FloatingObjectService.java | 38 + .../seine/FloatingObjectServiceImpl.java | 41 +- .../data/seine/GearUseFeaturesSeineService.java | 25 + .../seine/GearUseFeaturesSeineServiceImpl.java | 90 + .../data/seine/NonTargetSampleService.java | 28 + .../data/seine/NonTargetSampleServiceImpl.java | 116 + .../observe/services/data/seine/RouteService.java | 40 + .../services/data/seine/RouteServiceImpl.java | 237 ++ .../services/data/seine/SetSeineService.java | 38 + .../services/data/seine/SetSeineServiceImpl.java | 206 ++ .../services/data/seine/TargetSampleService.java | 30 + .../data/seine/TargetSampleServiceImpl.java | 142 + .../services/data/seine/TripSeineService.java | 42 + .../services/data/seine/TripSeineServiceImpl.java | 203 ++ .../services}/model/DataSelectionModel.java | 24 +- .../services/referential/ReferentialService.java | 32 + .../referential/ReferentialServiceImpl.java | 103 + .../services/seine/ActivitySeineServiceImpl.java | 65 - .../observe/services/seine/RouteServiceImpl.java | 56 - .../services/seine/SetSeineServiceImpl.java | 58 - .../services/seine/TripSeineServiceImpl.java | 56 - .../main/java/fr/ird/observe/ObserveContext.java | 28 +- .../ird/observe/ui/actions/ShowConfigAction.java | 27 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 28 +- .../ird/observe/ui/admin/config/SelectDataUI.jaxx | 2 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 2 +- .../ird/observe/ui/admin/export/ExportModel.java | 2 +- .../observe/ui/admin/export/ExportUIHandler.java | 18 +- .../observe/ui/admin/report/ReportUIHandler.java | 2 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../ird/observe/ui/content/ContentUIHandler.java | 79 +- .../observe/ui/content/ContentUIInitializer.java | 109 +- .../LonglineDetailCompositionUIHandler.java | 76 +- .../LonglineDetailCompositionUIInitializer.java | 6 +- .../ui/content/impl/seine/SetSeineUIHandler.java | 173 +- .../impl/longline/ActivityLonglinesUIHandler.java | 9 +- .../list/impl/longline/TripLonglinesUIHandler.java | 10 +- .../list/impl/seine/ActivitySeinesUIHandler.java | 9 +- .../content/list/impl/seine/RoutesUIHandler.java | 9 +- .../list/impl/seine/TripSeinesUIHandler.java | 11 +- .../ui/content/open/ContentOpenableUIHandler.java | 80 +- .../impl/longline/ActivityLonglineUIHandler.java | 165 +- .../open/impl/longline/TripLonglineUIHandler.java | 152 +- .../open/impl/seine/ActivitySeineUIHandler.java | 188 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 231 +- .../open/impl/seine/TripSeineUIHandler.java | 150 +- .../ui/content/ref/ContentReferenceUIHandler.java | 36 +- .../ui/content/table/ContentTableUIHandler.java | 8 +- .../content/table/ContentTableUIInitializer.java | 11 +- .../impl/longline/CatchLonglineUIHandler.java | 116 +- .../table/impl/longline/CatchLonglineUIModel.java | 34 - .../GearUseFeaturesLonglineTableModel.java | 7 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 43 +- .../table/impl/longline/SensorUsedUIHandler.java | 10 +- .../content/table/impl/longline/TdrUIHandler.java | 12 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 45 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 19 +- .../table/impl/seine/NonTargetSampleUIHandler.java | 31 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 8 +- .../table/impl/seine/TargetCatchUIHandler.java | 17 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 21 +- .../table/impl/seine/TargetSampleUIHandler.java | 22 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 2 +- .../ui/storage/StorageBackupUILauncher.java | 2 +- .../ird/observe/ui/storage/StorageUIHandler.java | 7 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 2 +- .../ui/storage/tabs/StorageTabUIHandler.java | 3 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 2 +- .../ird/observe/ui/tree/ActivityLonglineNode.java | 13 +- .../fr/ird/observe/ui/tree/ActivitySeineNode.java | 13 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 2 +- .../fr/ird/observe/ui/tree/EntityNodeSupport.java | 30 +- .../observe/ui/tree/FloatingObjectSeineNode.java | 14 +- .../ird/observe/ui/tree/ObserveDataProvider.java | 41 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 32 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 63 +- .../ird/observe/ui/tree/ProgramLonglineNode.java | 14 +- .../fr/ird/observe/ui/tree/ProgramSeineNode.java | 13 +- .../fr/ird/observe/ui/tree/RouteSeineNode.java | 14 +- .../fr/ird/observe/ui/tree/SetLonglineNode.java | 14 +- .../java/fr/ird/observe/ui/tree/SetSeineNode.java | 14 +- .../fr/ird/observe/ui/tree/TripLonglineNode.java | 14 +- .../java/fr/ird/observe/ui/tree/TripSeineNode.java | 14 +- .../actions/ChangeTripProgramActionListener.java | 34 +- .../ui/tree/loadors/AbstractNodeChildLoador.java | 11 +- .../loadors/ActivityLonglineNodeChildLoador.java | 12 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 13 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 18 +- .../loadors/ActivitySeinesNodeChildLoador.java | 12 +- .../loadors/FloatingObjectNodeChildLoador.java | 5 +- .../loadors/ProgramLonglineNodeChildLoador.java | 17 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 17 +- .../loadors/ReferenceCommonNodeChildLoador.java | 7 +- .../loadors/ReferenceLonglineNodeChildLoador.java | 5 +- .../loadors/ReferenceSeineNodeChildLoador.java | 5 +- .../ui/tree/loadors/RootNodeChildLoador.java | 19 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 12 +- .../tree/loadors/SetLonglineNodeChildLoador.java | 5 +- .../ui/tree/loadors/SetSeineNodeChildLoador.java | 5 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 39 +- .../field/VesselActivityFieldValidator.java | 16 +- pom.xml | 2 +- 138 files changed, 6305 insertions(+), 3627 deletions(-) create mode 100644 observe-services/src/main/java/fr/ird/observe/services/Commit.java delete mode 100644 observe-services/src/main/java/fr/ird/observe/services/Longline/TripLonglineServiceImp.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/NoTransaction.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/ObserveService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/ObserveServiceContext.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/OpenableService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/OpenableServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/TripService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/TripServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java rename observe-services/src/main/java/fr/ird/observe/services/{ => data}/seine/FloatingObjectServiceImpl.java (50%) create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineServiceImpl.java rename {observe-business/src/main/java/fr/ird/observe/db => observe-services/src/main/java/fr/ird/observe/services}/model/DataSelectionModel.java (94%) create mode 100644 observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialService.java create mode 100644 observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialServiceImpl.java delete mode 100644 observe-services/src/main/java/fr/ird/observe/services/seine/ActivitySeineServiceImpl.java delete mode 100644 observe-services/src/main/java/fr/ird/observe/services/seine/RouteServiceImpl.java delete mode 100644 observe-services/src/main/java/fr/ird/observe/services/seine/SetSeineServiceImpl.java delete mode 100644 observe-services/src/main/java/fr/ird/observe/services/seine/TripSeineServiceImpl.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 feature/7017 in repository observe. See http://git.codelutin.com/observe.git commit db5dcd0a296d150eb43f0ed50c8582ef66f9d4bd Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Apr 26 21:11:27 2015 +0200 ajout de premiers services et d'une usine de services --- .../src/main/java/fr/ird/observe/DataService.java | 3181 ++++++++++---------- .../fr/ird/observe/ObserveApplicationContext.java | 2 +- .../entities/longline/ActivityLonglineDAOImpl.java | 9 + .../entities/seine/ActivitySeineDAOImpl.java | 9 + .../observe/entities/seine/ActivitySeineImpl.java | 15 +- .../ird/observe/entities/seine/RouteDAOImpl.java | 10 + .../observe/services/AbstractObserveService.java | 223 +- .../main/java/fr/ird/observe/services/Commit.java | 19 + .../services/Longline/TripLonglineServiceImp.java | 66 - .../fr/ird/observe/services/NoTransaction.java | 19 + .../fr/ird/observe/services/ObserveService.java | 27 + .../observe/services/ObserveServiceContext.java | 76 + .../observe/services/ObserveServiceFactory.java | 227 +- .../ird/observe/services/data/OpenableService.java | 25 + .../observe/services/data/OpenableServiceImpl.java | 157 + .../fr/ird/observe/services/data/TripService.java | 31 + .../ird/observe/services/data/TripServiceImpl.java | 134 + .../data/longline/ActivityLonglineService.java | 41 + .../data/longline/ActivityLonglineServiceImpl.java | 206 ++ .../data/longline/CatchLonglineService.java | 42 + .../data/longline/CatchLonglineServiceImpl.java | 136 + .../longline/GearUseFeaturesLonglineService.java | 25 + .../GearUseFeaturesLonglineServiceImpl.java | 92 + .../longline/LonglineDetailCompositionService.java | 12 + .../LonglineDetailCompositionServiceImpl.java | 13 + .../services/data/longline/SensorUsedService.java | 37 + .../data/longline/SensorUsedServiceImpl.java | 84 + .../services/data/longline/SetLonglineService.java | 21 + .../data/longline/SetLonglineServiceImpl.java | 71 + .../observe/services/data/longline/TdrService.java | 37 + .../services/data/longline/TdrServiceImpl.java | 83 + .../data/longline/TripLonglineService.java | 42 + .../data/longline/TripLonglineServiceImpl.java | 201 ++ .../services/data/seine/ActivitySeineService.java | 47 + .../data/seine/ActivitySeineServiceImpl.java | 255 ++ .../services/data/seine/FloatingObjectService.java | 38 + .../seine/FloatingObjectServiceImpl.java | 41 +- .../data/seine/GearUseFeaturesSeineService.java | 25 + .../seine/GearUseFeaturesSeineServiceImpl.java | 90 + .../data/seine/NonTargetSampleService.java | 28 + .../data/seine/NonTargetSampleServiceImpl.java | 116 + .../observe/services/data/seine/RouteService.java | 40 + .../services/data/seine/RouteServiceImpl.java | 237 ++ .../services/data/seine/SetSeineService.java | 38 + .../services/data/seine/SetSeineServiceImpl.java | 206 ++ .../services/data/seine/TargetSampleService.java | 30 + .../data/seine/TargetSampleServiceImpl.java | 142 + .../services/data/seine/TripSeineService.java | 42 + .../services/data/seine/TripSeineServiceImpl.java | 203 ++ .../services}/model/DataSelectionModel.java | 24 +- .../services/referential/ReferentialService.java | 32 + .../referential/ReferentialServiceImpl.java | 103 + .../services/seine/ActivitySeineServiceImpl.java | 65 - .../observe/services/seine/RouteServiceImpl.java | 56 - .../services/seine/SetSeineServiceImpl.java | 58 - .../services/seine/TripSeineServiceImpl.java | 56 - .../main/java/fr/ird/observe/ObserveContext.java | 28 +- .../ird/observe/ui/actions/ShowConfigAction.java | 27 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 28 +- .../ird/observe/ui/admin/config/SelectDataUI.jaxx | 2 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 2 +- .../ird/observe/ui/admin/export/ExportModel.java | 2 +- .../observe/ui/admin/export/ExportUIHandler.java | 18 +- .../observe/ui/admin/report/ReportUIHandler.java | 2 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../ird/observe/ui/content/ContentUIHandler.java | 79 +- .../observe/ui/content/ContentUIInitializer.java | 109 +- .../LonglineDetailCompositionUIHandler.java | 76 +- .../LonglineDetailCompositionUIInitializer.java | 6 +- .../ui/content/impl/seine/SetSeineUIHandler.java | 173 +- .../impl/longline/ActivityLonglinesUIHandler.java | 9 +- .../list/impl/longline/TripLonglinesUIHandler.java | 10 +- .../list/impl/seine/ActivitySeinesUIHandler.java | 9 +- .../content/list/impl/seine/RoutesUIHandler.java | 9 +- .../list/impl/seine/TripSeinesUIHandler.java | 11 +- .../ui/content/open/ContentOpenableUIHandler.java | 80 +- .../impl/longline/ActivityLonglineUIHandler.java | 165 +- .../open/impl/longline/TripLonglineUIHandler.java | 152 +- .../open/impl/seine/ActivitySeineUIHandler.java | 188 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 231 +- .../open/impl/seine/TripSeineUIHandler.java | 150 +- .../ui/content/ref/ContentReferenceUIHandler.java | 36 +- .../ui/content/table/ContentTableUIHandler.java | 8 +- .../content/table/ContentTableUIInitializer.java | 11 +- .../impl/longline/CatchLonglineUIHandler.java | 116 +- .../table/impl/longline/CatchLonglineUIModel.java | 34 - .../GearUseFeaturesLonglineTableModel.java | 7 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 43 +- .../table/impl/longline/SensorUsedUIHandler.java | 10 +- .../content/table/impl/longline/TdrUIHandler.java | 12 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 45 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 19 +- .../table/impl/seine/NonTargetSampleUIHandler.java | 31 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 8 +- .../table/impl/seine/TargetCatchUIHandler.java | 17 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 21 +- .../table/impl/seine/TargetSampleUIHandler.java | 22 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 2 +- .../ui/storage/StorageBackupUILauncher.java | 2 +- .../ird/observe/ui/storage/StorageUIHandler.java | 7 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 2 +- .../ui/storage/tabs/StorageTabUIHandler.java | 3 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 2 +- .../ird/observe/ui/tree/ActivityLonglineNode.java | 13 +- .../fr/ird/observe/ui/tree/ActivitySeineNode.java | 13 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 2 +- .../fr/ird/observe/ui/tree/EntityNodeSupport.java | 30 +- .../observe/ui/tree/FloatingObjectSeineNode.java | 14 +- .../ird/observe/ui/tree/ObserveDataProvider.java | 41 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 32 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 63 +- .../ird/observe/ui/tree/ProgramLonglineNode.java | 14 +- .../fr/ird/observe/ui/tree/ProgramSeineNode.java | 13 +- .../fr/ird/observe/ui/tree/RouteSeineNode.java | 14 +- .../fr/ird/observe/ui/tree/SetLonglineNode.java | 14 +- .../java/fr/ird/observe/ui/tree/SetSeineNode.java | 14 +- .../fr/ird/observe/ui/tree/TripLonglineNode.java | 14 +- .../java/fr/ird/observe/ui/tree/TripSeineNode.java | 14 +- .../actions/ChangeTripProgramActionListener.java | 34 +- .../ui/tree/loadors/AbstractNodeChildLoador.java | 11 +- .../loadors/ActivityLonglineNodeChildLoador.java | 12 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 13 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 18 +- .../loadors/ActivitySeinesNodeChildLoador.java | 12 +- .../loadors/FloatingObjectNodeChildLoador.java | 5 +- .../loadors/ProgramLonglineNodeChildLoador.java | 17 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 17 +- .../loadors/ReferenceCommonNodeChildLoador.java | 7 +- .../loadors/ReferenceLonglineNodeChildLoador.java | 5 +- .../loadors/ReferenceSeineNodeChildLoador.java | 5 +- .../ui/tree/loadors/RootNodeChildLoador.java | 19 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 12 +- .../tree/loadors/SetLonglineNodeChildLoador.java | 5 +- .../ui/tree/loadors/SetSeineNodeChildLoador.java | 5 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 39 +- .../field/VesselActivityFieldValidator.java | 16 +- pom.xml | 2 +- 138 files changed, 6305 insertions(+), 3627 deletions(-) diff --git a/observe-business/src/main/java/fr/ird/observe/DataService.java b/observe-business/src/main/java/fr/ird/observe/DataService.java index 6c13752..aee4dc3 100644 --- a/observe-business/src/main/java/fr/ird/observe/DataService.java +++ b/observe-business/src/main/java/fr/ird/observe/DataService.java @@ -24,7 +24,6 @@ package fr.ird.observe; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import com.google.common.collect.Sets; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; @@ -32,64 +31,12 @@ import fr.ird.observe.db.constants.DataSourceState; import fr.ird.observe.db.util.TopiaExecutor; import fr.ird.observe.db.util.TopiaExecutor2; import fr.ird.observe.entities.Entities; -import fr.ird.observe.entities.EntityMap; -import fr.ird.observe.entities.OpenableEntities; -import fr.ird.observe.entities.OpenableEntity; -import fr.ird.observe.entities.Trip; -import fr.ird.observe.entities.constants.GearType; -import fr.ird.observe.entities.constants.ReferenceLocale; -import fr.ird.observe.entities.longline.ActivityLongline; -import fr.ird.observe.entities.longline.ActivityLonglineDAO; -import fr.ird.observe.entities.longline.ActivityLonglines; -import fr.ird.observe.entities.longline.Basket; -import fr.ird.observe.entities.longline.Branchline; -import fr.ird.observe.entities.longline.CatchLongline; -import fr.ird.observe.entities.longline.GearUseFeaturesLongline; -import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; -import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLonglineImpl; -import fr.ird.observe.entities.longline.Section; -import fr.ird.observe.entities.longline.SensorUsed; -import fr.ird.observe.entities.longline.SizeMeasure; -import fr.ird.observe.entities.longline.SizeMeasureImpl; -import fr.ird.observe.entities.longline.Tdr; -import fr.ird.observe.entities.longline.TripLongline; -import fr.ird.observe.entities.longline.TripLonglineDAO; -import fr.ird.observe.entities.longline.WeightMeasure; -import fr.ird.observe.entities.longline.WeightMeasureImpl; -import fr.ird.observe.entities.referentiel.Gear; -import fr.ird.observe.entities.referentiel.GearCaracteristic; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.LengthWeightParemeterHelper; import fr.ird.observe.entities.referentiel.Ocean; -import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.entities.referentiel.ProgramDAO; import fr.ird.observe.entities.referentiel.ReferenceEntities; import fr.ird.observe.entities.referentiel.Sex; import fr.ird.observe.entities.referentiel.Species; -import fr.ird.observe.entities.referentiel.SpeciesList; -import fr.ird.observe.entities.referentiel.SpeciesListDAO; -import fr.ird.observe.entities.referentiel.longline.SensorType; -import fr.ird.observe.entities.seine.ActivitySeine; -import fr.ird.observe.entities.seine.ActivitySeineDAO; -import fr.ird.observe.entities.seine.ActivitySeines; -import fr.ird.observe.entities.seine.FloatingObject; -import fr.ird.observe.entities.seine.FloatingObjectDAO; -import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; -import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeineImpl; -import fr.ird.observe.entities.seine.GearUseFeaturesSeine; -import fr.ird.observe.entities.seine.NonTargetCatch; -import fr.ird.observe.entities.seine.NonTargetLength; -import fr.ird.observe.entities.seine.NonTargetSample; -import fr.ird.observe.entities.seine.Route; -import fr.ird.observe.entities.seine.RouteDAO; -import fr.ird.observe.entities.seine.Routes; -import fr.ird.observe.entities.seine.SetSeine; -import fr.ird.observe.entities.seine.TargetCatch; -import fr.ird.observe.entities.seine.TargetLength; -import fr.ird.observe.entities.seine.TargetSample; -import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.entities.seine.TripSeineDAO; -import fr.ird.observe.tripMap.TripMapPoint; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -101,7 +48,6 @@ import org.nuiton.topia.event.TopiaTransactionListener; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaId; import org.nuiton.topia.persistence.util.DiffState; import org.nuiton.topia.persistence.util.EntityOperator; import org.nuiton.topia.persistence.util.Loador; @@ -112,11 +58,8 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListenerProxy; import java.beans.PropertyChangeSupport; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.EnumSet; import java.util.HashSet; @@ -145,15 +88,15 @@ public class DataService { protected final PropertyChangeSupport pcs = new PropertyChangeSupport(this); - private boolean skipTransactionListener; +// private boolean skipTransactionListener; private TopiaTransactionListener transactionListener = new TopiaTransactionListener() { public void commit(TopiaTransactionEvent event) { - if (skipTransactionListener) { - return; - } +// if (skipTransactionListener) { +// return; +// } java.util.Set<TopiaEntity> entities = event.getEntities(); @@ -162,7 +105,7 @@ public class DataService { EnumSet.noneOf(ObserveEntityEnum.class); // pour referencer les types openables modifies - boolean touchOpenContext = false; +// boolean touchOpenContext = false; // pour referencer les donnees observers modifiees java.util.Set<TopiaEntity> data = new HashSet<TopiaEntity>(); @@ -217,9 +160,9 @@ public class DataService { // il s'agit d'une donnée utilisateur data.add(entity); - if (OpenableEntities.isOpenable(entity)) { - touchOpenContext = true; - } +// if (OpenableEntities.isOpenable(entity)) { +// touchOpenContext = true; +// } } DataSource source = ObserveServiceHelper.get().getDataSource(); @@ -246,36 +189,35 @@ public class DataService { ); } - if (touchOpenContext) { - fireOpenChanged(source); - } +// if (touchOpenContext) { +// fireOpenChanged(source); +// } } - public void rollback(TopiaTransactionEvent event) { } }; - protected PropertyChangeListener openListener = new PropertyChangeListener() { - - public void propertyChange(PropertyChangeEvent evt) { - DataService source = (DataService) evt.getSource(); - DataContext dataContext = source.getDataContext(); - String[] value = (String[]) evt.getNewValue(); - if (log.isDebugEnabled()) { - log.debug("open context changed in data service, will propagate it to " + dataContext); - log.debug("new open ids : " + Arrays.toString(value)); - } - dataContext.populateOpens(value); - } - }; +// protected PropertyChangeListener openListener = new PropertyChangeListener() { +// +// public void propertyChange(PropertyChangeEvent evt) { +// DataService source = (DataService) evt.getSource(); +// DataContext dataContext = source.getDataContext(); +// String[] value = (String[]) evt.getNewValue(); +// if (log.isDebugEnabled()) { +// log.debug("open context changed in data service, will propagate it to " + dataContext); +// log.debug("new open ids : " + Arrays.toString(value)); +// } +// dataContext.populateOpens(value); +// } +// }; public void registerDataSource(DataSource source) { ObserveServiceHelper.get().setDataSource(source); - addPropertyChangeListener(DataSource.OPEN_PROPERTY_KEY, openListener); +// addPropertyChangeListener(DataSource.OPEN_PROPERTY_KEY, openListener); } @@ -283,7 +225,7 @@ public class DataService { ObserveServiceHelper.get().setDataSource(null); - removePropertyChangeListener(DataSource.OPEN_PROPERTY_KEY, openListener); +// removePropertyChangeListener(DataSource.OPEN_PROPERTY_KEY, openListener); // remove all listeners for the referentiel //FIXMe tchemit 2010-11-30 Perharps we should remove all listeners ? @@ -367,32 +309,30 @@ public class DataService { // ------------------------------------------------------------------------ - public String[] getOpenIds(DataSource source) throws DataSourceException { - - String[] result = null; - TopiaContext tx = beginTransaction(source, "getOpenIds"); - try { - - result = source.getOpenIds(tx); - } finally { - closeTransaction(source, tx, "getOpenIds"); - } - return result; - } +// public String[] getOpenIds(DataSource source) throws DataSourceException { +// +// String[] result = null; +// TopiaContext tx = beginTransaction(source, "getOpenIds"); +// try { +// +// result = source.getOpenIds(tx); +// } finally { +// closeTransaction(source, tx, "getOpenIds"); +// } +// return result; +// } - public <E extends TopiaEntity> List<E> getList(DataSource source, - Class<E> klass) throws DataSourceException { + public <E extends TopiaEntity> List<E> getList(DataSource source, Class<E> klass) throws DataSourceException { List<E> list = getList(source, klass, null, null); return list; } - - public <E extends TopiaEntity> List<E> getList(DataSource source, Class<E> klass, Predicate<E> predicate) throws DataSourceException { - List<E> result = getList(source, klass, predicate, null); - return result; - } +// public <E extends TopiaEntity> List<E> getList(DataSource source, Class<E> klass, Predicate<E> predicate) throws DataSourceException { +// List<E> result = getList(source, klass, predicate, null); +// return result; +// } public <E extends TopiaEntity> List<E> getList(DataSource source, @@ -441,1262 +381,1251 @@ public class DataService { } } +// public <E extends TopiaEntity> EntityMap findAllUsages(DataSource source, +// E entity) throws DataSourceException { +// +// String txName = "findAllUsages"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TopiaDAO<E> dao; +// dao = source.getDAO(tx, entity); +// +// // always get a fresh version of object +// entity = dao.findByTopiaId(entity.getTopiaId()); +// EntityMap result; +// result = new EntityMap(dao.findAllUsages(entity)); +// if (decoratorService != null) { +// // on charge les entites +// for (Class<? extends TopiaEntity> aClass : result.keySet()) { +// Decorator<? extends TopiaEntity> decorator = +// decoratorService.getDecoratorByType(aClass); +// for (TopiaEntity e : result.get(aClass)) { +// decorator.toString(e); +// } +// } +// } +// return result; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + + +// public <E extends OpenableEntity & TopiaEntity> E getOpen(DataSource source, +// Class<E> klass) throws DataSourceException { +// +// if (!source.canReadData()) { +// if (log.isInfoEnabled()) { +// log.info("Can not read data!"); +// } +// return null; +// } +// String txName = "getOpen"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// E result = source.getOpen(tx, klass); +// if (result != null && klass.equals(TripSeine.class)) { +// ((TripSeine) result).getProgram(); +// } +// return result; +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<Program> getAllProgramStub(DataSource source) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return Collections.emptyList(); +// } +// +// String txName = "getAllProgramStub"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// ProgramDAO dao = (ProgramDAO) source.getDAO(tx, Program.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// List<Program> result = dao.findAllStub(referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } +// +// public Program getProgramStub(DataSource source, String programId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return null; +// } +// +// String txName = "getProgramStub"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// ProgramDAO dao = (ProgramDAO) source.getDAO(tx, Program.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// Program result = dao.findStubByTopiaId(programId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<TripSeine> getTripSeineStubByProgram(DataSource source, String programId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return Collections.emptyList(); +// } +// +// String txName = "getTripSeineStubByProgram"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// List<TripSeine> result = dao.findAllStubByProgramId(programId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } +// +// public TripSeine getTripSeineStub(DataSource source, String tripId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return null; +// } +// +// String txName = "getTripSeineStub"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// TripSeine result = dao.findStubByTopiaId(tripId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + + +// public List<Route> getRouteStubByTrip(DataSource source, String tripSeineId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return Collections.emptyList(); +// } +// +// String txName = "getRouteStubByTrip"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// RouteDAO dao = (RouteDAO) source.getDAO(tx, Route.class); +// List<Route> result = dao.findAllStubByTripId(tripSeineId); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } +// +// public Route getRouteStub(DataSource source, String routeId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return null; +// } +// +// String txName = "getRouteStub"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// RouteDAO dao = (RouteDAO) source.getDAO(tx, Route.class); +// Route result = dao.findStubByTopiaId(routeId); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<ActivitySeine> getActivitySeineStubByRoute(DataSource source, String routeId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return Collections.emptyList(); +// } +// +// String txName = "getActivitySeineStubByRoute"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// ActivitySeineDAO dao = (ActivitySeineDAO) source.getDAO(tx, ActivitySeine.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// List<ActivitySeine> result = dao.findAllStubByRouteId(routeId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public ActivitySeine getActivitySeineStub(DataSource source, String activityId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return null; +// } +// +// String txName = "getActivitySeineStub"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// ActivitySeineDAO dao = (ActivitySeineDAO) source.getDAO(tx, ActivitySeine.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// ActivitySeine result = dao.findStubByTopiaId(activityId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<FloatingObject> getFloatinObjectStubByActivitySeine(DataSource source, String activitySeineId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return Collections.emptyList(); +// } +// +// String txName = "getFloatinObjectStubByActivitySeine"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// FloatingObjectDAO dao = (FloatingObjectDAO) source.getDAO(tx, FloatingObject.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// List<FloatingObject> result = dao.findAllStubByActivityId(activitySeineId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public FloatingObject getFloatinObjectStub(DataSource source, String floatingObjectId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return null; +// } +// +// String txName = "getFloatinObjectStub"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// FloatingObjectDAO dao = (FloatingObjectDAO) source.getDAO(tx, FloatingObject.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// FloatingObject result = dao.findStubByTopiaId(floatingObjectId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<TripLongline> getTripLonglineStubByProgram(DataSource source, String programId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return Collections.emptyList(); +// } +// +// String txName = "getTripLonglineStubByProgram"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// List<TripLongline> result = dao.findAllStubByProgramId(programId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// +// } + +// public TripLongline getTripLonglineStub(DataSource source, String tripId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return null; +// } +// +// String txName = "getTripLonglineStub"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// TripLongline result = dao.findStubByTopiaId(tripId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// +// } + +// public List<ActivityLongline> getActivityLonglineStubByTrip(DataSource source, String tripId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return Collections.emptyList(); +// } +// +// String txName = "getActivityLonglineStubByTrip"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// ActivityLonglineDAO dao = (ActivityLonglineDAO) source.getDAO(tx, ActivityLongline.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// List<ActivityLongline> result = dao.findAllStubByTripId(tripId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public ActivityLongline getActivityLonglineStub(DataSource source, String activityId) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return null; +// } +// +// String txName = "getActivityLonglineStub"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// ActivityLonglineDAO dao = (ActivityLonglineDAO) source.getDAO(tx, ActivityLongline.class); +// ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); +// ActivityLongline result = dao.findStubByTopiaId(activityId, referentielLocale); +// return result; +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public Ocean getTripOcean(DataSource source, String tripId) throws DataSourceException { +// +// String txName = "getTripOcean"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); +// TripSeine result = dao.findByTopiaId(tripId); +// return result.getOcean(); +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } - public <E extends TopiaEntity> EntityMap findAllUsages(DataSource source, - E entity) throws DataSourceException { - - String txName = "findAllUsages"; - TopiaContext tx = beginTransaction(source, txName); - try { - TopiaDAO<E> dao; - dao = source.getDAO(tx, entity); - - // always get a fresh version of object - entity = dao.findByTopiaId(entity.getTopiaId()); - EntityMap result; - result = new EntityMap(dao.findAllUsages(entity)); - if (decoratorService != null) { - // on charge les entites - for (Class<? extends TopiaEntity> aClass : result.keySet()) { - Decorator<? extends TopiaEntity> decorator = - decoratorService.getDecoratorByType(aClass); - for (TopiaEntity e : result.get(aClass)) { - decorator.toString(e); - } - } - } - return result; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public <E extends OpenableEntity & TopiaEntity> E getOpen(DataSource source, - Class<E> klass) throws DataSourceException { - - if (!source.canReadData()) { - if (log.isInfoEnabled()) { - log.info("Can not read data!"); - } - return null; - } - String txName = "getOpen"; - TopiaContext tx = beginTransaction(source, txName); - try { - E result = source.getOpen(tx, klass); - if (result != null && klass.equals(TripSeine.class)) { - ((TripSeine) result).getProgram(); - } - return result; - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public List<Program> getAllProgramStub(DataSource source) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return Collections.emptyList(); - } - - String txName = "getAllProgramStub"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - ProgramDAO dao = (ProgramDAO) source.getDAO(tx, Program.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - List<Program> result = dao.findAllStub(referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public Program getProgramStub(DataSource source, String programId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return null; - } - - String txName = "getProgramStub"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - ProgramDAO dao = (ProgramDAO) source.getDAO(tx, Program.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - Program result = dao.findStubByTopiaId(programId, referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public List<TripSeine> getTripSeineStubByProgram(DataSource source, String programId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return Collections.emptyList(); - } - - String txName = "getTripSeineStubByProgram"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - List<TripSeine> result = dao.findAllStubByProgramId(programId, referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public TripSeine getTripSeineStub(DataSource source, String tripId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return null; - } - - String txName = "getTripSeineStub"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - TripSeine result = dao.findStubByTopiaId(tripId, referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public List<Route> getRouteStubByTrip(DataSource source, String tripSeineId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return Collections.emptyList(); - } - - String txName = "getRouteStubByTrip"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - RouteDAO dao = (RouteDAO) source.getDAO(tx, Route.class); - List<Route> result = dao.findAllStubByTripId(tripSeineId); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public Route getRouteStub(DataSource source, String routeId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return null; - } - - String txName = "getRouteStub"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - RouteDAO dao = (RouteDAO) source.getDAO(tx, Route.class); - Route result = dao.findStubByTopiaId(routeId); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public List<ActivitySeine> getActivitySeineStubByRoute(DataSource source, String routeId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return Collections.emptyList(); - } - - String txName = "getActivitySeineStubByRoute"; - TopiaContext tx = beginTransaction(source, txName); + /** + * Recherche d'un {@link LengthWeightParameter} à partir des paramètres donnés. + * <p/> + * La recherche peut ne peut être aussi exacte que les paramètres donnés : + * <p/> + * Dans le cas d'une espèce faune, si non trouvé alors on recherche sur son + * speciesGroup d'espèce. + * <p/> + * Si non trouvé pour l'océan donné (et que celui-ci est non null), alors on + * recherche avec un ocean vide. + * <p/> + * Si non trouvé sur le gender (et que le gender n'est pas indéterminé) , alors + * on recherche avec le gender indéterminé (gender=0). + * + * @param tx la transaction en cours d'utilisation + * @param species l'espèce sur lequel on recherche le paramétrage + * @param ocean l'ocean recherché (peut être null) + * @param sex le sexe recherché (on essayera sans sexe (sexe.code=0) si non trouvé) + * @param date le jour recherché + * @return le paramétrage adéquate + * @throws DataSourceException pour toute erreur + * @since 1.5 + */ + public <P extends LengthWeightParameter> P findLengthWeightParameter( + TopiaContext tx, + Species species, + Ocean ocean, + Sex sex, + Date date) throws DataSourceException { try { - ActivitySeineDAO dao = (ActivitySeineDAO) source.getDAO(tx, ActivitySeine.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - List<ActivitySeine> result = dao.findAllStubByRouteId(routeId, referentielLocale); - return result; + List<P> list = LengthWeightParemeterHelper.findBySpecies( + (TopiaContextImplementor) tx, + species + ); - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } + if (CollectionUtils.isEmpty(list)) { - public ActivitySeine getActivitySeineStub(DataSource source, String activityId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); + // aucun parametrage pour le type donne + return null; } - return null; - } - - String txName = "getActivitySeineStub"; - TopiaContext tx = beginTransaction(source, txName); - - try { - ActivitySeineDAO dao = (ActivitySeineDAO) source.getDAO(tx, ActivitySeine.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - ActivitySeine result = dao.findStubByTopiaId(activityId, referentielLocale); - return result; + // filtrage par ocean + list = LengthWeightParemeterHelper.filterByOcean(list, ocean); - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } + if (CollectionUtils.isEmpty(list) && ocean != null) { - public List<FloatingObject> getFloatinObjectStubByActivitySeine(DataSource source, String activitySeineId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); + // filtre par ocean null + list = LengthWeightParemeterHelper.filterByOcean(list, null); } - return Collections.emptyList(); - } - - String txName = "getFloatinObjectStubByActivitySeine"; - TopiaContext tx = beginTransaction(source, txName); - try { - - FloatingObjectDAO dao = (FloatingObjectDAO) source.getDAO(tx, FloatingObject.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - List<FloatingObject> result = dao.findAllStubByActivityId(activitySeineId, referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } + if (CollectionUtils.isEmpty(list)) { - public FloatingObject getFloatinObjectStub(DataSource source, String floatingObjectId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); + // pas d'ocean adequate + return null; } - return null; - } - - String txName = "getFloatinObjectStub"; - TopiaContext tx = beginTransaction(source, txName); - try { + // filtrage par sexe + list = LengthWeightParemeterHelper.filterBySexe(list, sex); - FloatingObjectDAO dao = (FloatingObjectDAO) source.getDAO(tx, FloatingObject.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - FloatingObject result = dao.findStubByTopiaId(floatingObjectId, referentielLocale); - return result; + if (CollectionUtils.isEmpty(list)) { - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } + Sex unkwonSex = ObserveDAOHelper.getSexDAO(tx).findByCode("0"); - public List<TripLongline> getTripLonglineStubByProgram(DataSource source, String programId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return Collections.emptyList(); - } - - String txName = "getTripLonglineStubByProgram"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - List<TripLongline> result = dao.findAllStubByProgramId(programId, referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - - } - - public TripLongline getTripLonglineStub(DataSource source, String tripId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return null; - } - - String txName = "getTripLonglineStub"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - TripLongline result = dao.findStubByTopiaId(tripId, referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - - } - - public List<ActivityLongline> getActivityLonglineStubByTrip(DataSource source, String tripId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return Collections.emptyList(); - } - - String txName = "getActivityLonglineStubByTrip"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - ActivityLonglineDAO dao = (ActivityLonglineDAO) source.getDAO(tx, ActivityLongline.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - List<ActivityLongline> result = dao.findAllStubByTripId(tripId, referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public ActivityLongline getActivityLonglineStub(DataSource source, String activityId) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return null; - } - - String txName = "getActivityLonglineStub"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - ActivityLonglineDAO dao = (ActivityLonglineDAO) source.getDAO(tx, ActivityLongline.class); - ReferenceLocale referentielLocale = getDecoratorService().getReferentielLocale(); - ActivityLongline result = dao.findStubByTopiaId(activityId, referentielLocale); - return result; - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public Ocean getTripOcean(DataSource source, String tripId) throws DataSourceException { - - String txName = "getTripOcean"; - TopiaContext tx = beginTransaction(source, txName); - try { - TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); - TripSeine result = dao.findByTopiaId(tripId); - return result.getOcean(); - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - /** - * Recherche d'un {@link LengthWeightParameter} à partir des paramètres donnés. - * <p/> - * La recherche peut ne peut être aussi exacte que les paramètres donnés : - * <p/> - * Dans le cas d'une espèce faune, si non trouvé alors on recherche sur son - * speciesGroup d'espèce. - * <p/> - * Si non trouvé pour l'océan donné (et que celui-ci est non null), alors on - * recherche avec un ocean vide. - * <p/> - * Si non trouvé sur le gender (et que le gender n'est pas indéterminé) , alors - * on recherche avec le gender indéterminé (gender=0). - * - * @param tx la transaction en cours d'utilisation - * @param species l'espèce sur lequel on recherche le paramétrage - * @param ocean l'ocean recherché (peut être null) - * @param sex le sexe recherché (on essayera sans sexe (sexe.code=0) si non trouvé) - * @param date le jour recherché - * @return le paramétrage adéquate - * @throws DataSourceException pour toute erreur - * @since 1.5 - */ - public <P extends LengthWeightParameter> P findLengthWeightParameter( - TopiaContext tx, - Species species, - Ocean ocean, - Sex sex, - Date date) throws DataSourceException { - - try { - - List<P> list = LengthWeightParemeterHelper.findBySpecies( - (TopiaContextImplementor) tx, - species - ); - - if (CollectionUtils.isEmpty(list)) { - - // aucun parametrage pour le type donne - return null; - } - - // filtrage par ocean - list = LengthWeightParemeterHelper.filterByOcean(list, ocean); - - if (CollectionUtils.isEmpty(list) && ocean != null) { - - // filtre par ocean null - list = LengthWeightParemeterHelper.filterByOcean(list, null); - } - - if (CollectionUtils.isEmpty(list)) { - - // pas d'ocean adequate - return null; - } - - // filtrage par sexe - list = LengthWeightParemeterHelper.filterBySexe(list, sex); - - if (CollectionUtils.isEmpty(list)) { - - Sex unkwonSex = getUnknownSex(tx); - - if (unkwonSex.equals(sex)) { + if (unkwonSex.equals(sex)) { // filtrage par sexe indetermine list = LengthWeightParemeterHelper.filterBySexe(list, unkwonSex); - } - - - } - - if (CollectionUtils.isEmpty(list)) { - - // pas de sexe adequate - return null; - } - - // filtrage par startDate de validite - list = LengthWeightParemeterHelper.filterByDateDebutValidite(list, - date); - - if (CollectionUtils.isEmpty(list)) { - - // pas de date de debut adequate - return null; - } - - // filtrage par endDate de validite - list = LengthWeightParemeterHelper.filterByDateFinValidite(list, - date); - - if (CollectionUtils.isEmpty(list)) { - - // pas de date de fin adequate - return null; - } - - // au final il ne devrait en rester qu'un - - if (list.size() > 1) { - StringBuilder sb = new StringBuilder("Il existe plusieurs paramétrages possibles pour les données suivantes :"); - sb.append("\nEspece : "); - sb.append(getDecoratorService().decorate(species)); - sb.append("\nOcean : "); - sb.append(getDecoratorService().decorate(ocean)); - sb.append("\nSex : "); - sb.append(getDecoratorService().decorate(sex)); - sb.append("\nDate : ").append(date); - sb.append("\nParamétrages trouvés : "); - for (P p : list) { - sb.append("\n - ").append(getDecoratorService().decorate(p)); - } - throw new DataSourceException(sb.toString(), "findLengthWeightParameter"); - } - - P result = list.get(0); - if (log.isDebugEnabled()) { - StringBuilder sb = new StringBuilder("Paramétrage trouvé pour les données suivantes :"); - sb.append("\nEspece : "); - sb.append(getDecoratorService().decorate(species)); - sb.append("\nOcean : "); - sb.append(getDecoratorService().decorate(ocean)); - sb.append("\nSex : "); - sb.append(getDecoratorService().decorate(sex)); - sb.append("\nDate : ").append(date); - sb.append("\nParamétrage: ").append(getDecoratorService().decorate(result)); - log.debug(sb.toString()); - } - return result; - - } catch (Exception e) { - throw new DataSourceException(e, "findLengthWeightParameter"); - } - } - - protected Sex getUnknownSex(TopiaContext tx) throws TopiaException { - return ObserveDAOHelper.getSexDAO(tx).findByCode("0"); - } - - public int getOpenablePosition(DataSource source, - String containerId, - String childId) throws DataSourceException { - if (childId.startsWith(TripSeine.class.getName())) { - return getTripSeinePosition(source, containerId, childId); - } - if (childId.startsWith(TripLongline.class.getName())) { - return getTripLonglinePosition(source, containerId, childId); - } - if (childId.startsWith(Route.class.getName())) { - return getRoutePosition(source, containerId, childId); - } - if (childId.startsWith(ActivitySeine.class.getName())) { - return getActivitySeinePosition(source, containerId, childId); - } - if (childId.startsWith(ActivityLongline.class.getName())) { - return getActivityLonglinePosition(source, containerId, childId); - } - throw new IllegalStateException("Can not come here!"); - } - - protected int getTripSeinePosition(DataSource source, - String programId, - String tripId) throws DataSourceException { - - String txName = "getTripSeinePosition [" + tripId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); - int pos = dao.findPositionByProgramId(programId, tripId); - return pos; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - protected int getTripLonglinePosition(DataSource source, - String programId, - String tripId) throws DataSourceException { - - String txName = "getTripLonglinePosition [" + tripId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); - int pos = dao.findPositionByProgramId(programId, tripId); - return pos; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - protected int getRoutePosition(DataSource source, - String tripId, - String routeId) throws DataSourceException { - - String txName = "getRoutePosition [" + tripId + "/" + routeId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - TripSeine maree = source.getDAO(tx, TripSeine.class).findByTopiaId(tripId); - Route route = maree.getRouteByTopiaId(routeId); - List<Route> routes = maree.getRoute(); - Routes.sort(routes); - return routes.indexOf(route); - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - protected int getActivitySeinePosition(DataSource source, - String routeId, - String activityId) throws DataSourceException { - - String txName = "getActivitySeinePosition [" + routeId + "/" + activityId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - Route route = source.getDAO(tx, Route.class).findByTopiaId(routeId); - ActivitySeine activitySeine = route.getActivitySeineByTopiaId(activityId); - List<ActivitySeine> activitySeines = route.getActivitySeine(); - ActivitySeines.sort(activitySeines); - return activitySeines.indexOf(activitySeine); - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - protected int getActivityLonglinePosition(DataSource source, - String tripId, - String activityId) throws DataSourceException { - - String txName = "getActivityLonglinePosition [" + tripId + "/" + activityId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - TripLongline trip = source.getDAO(tx, TripLongline.class).findByTopiaId(tripId); - ActivityLongline activity = trip.getActivityLonglineByTopiaId(activityId); - List<ActivityLongline> activities = trip.getActivityLongline(); - ActivityLonglines.sort(activities); - return activities.indexOf(activity); - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public String getTargetSampleId(DataSource source, - String setId, - boolean discarded) throws DataSourceException { - - String txName = "getTargetSampleId [" + setId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); - SetSeine set = dao.findByTopiaId(setId); - List<TargetSample> list = set.getTargetSample(); - if (list == null || list.isEmpty()) { - return null; - } - for (TargetSample targetSample : list) { - if (discarded) { - if (targetSample.getDiscarded() != null && - targetSample.getDiscarded()) { - return targetSample.getTopiaId(); - } - } else if (targetSample.getDiscarded() == null || - !targetSample.getDiscarded()) { - return targetSample.getTopiaId(); - } - } - return null; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public String getNonTargetSampleId(DataSource source, - String setId) throws DataSourceException { - - String txName = "getNonTargetSampleId [" + setId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); - SetSeine set = dao.findByTopiaId(setId); - List<NonTargetSample> list = set.getNonTargetSample(); - if (list == null || list.isEmpty()) { - return null; - } - return list.get(0).getTopiaId(); - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public List<Species> getAvailableEspeceForTargetSample(DataSource source, - String setId, - boolean discarded) throws DataSourceException { - - String txName = "getAvailableEspeceForTargetSample [" + setId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - List<Species> speciess = new ArrayList<Species>(); - - TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); - SetSeine set = dao.findByTopiaId(setId); - - // on recupere la liste des species thon utilisees dans le rejet - Collection<TargetCatch> discardeds = set.getTargetCatch(); - - // on filtre sur les speciess monté sur le pont et rejetée - - if (discardeds != null) { - for (TargetCatch discardedt : discardeds) { - boolean keep; - - if (discarded) { - - // on ne conserve que les speciess des discardeds montees sur le pont et discardedes - keep = discardedt.isDiscarded() && discardedt.getBroughtOnDeck(); - - } else { - - // on ne conserve que les species des discardeds - keep = !discardedt.isDiscarded(); - } - - if (keep && - !speciess.contains(discardedt.getWeightCategory().getSpecies())) { - speciess.add(discardedt.getWeightCategory().getSpecies()); - } - } - } - return speciess; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public List<Species> getAvailableEspeceForNonTargetSample(DataSource source, - String setId) throws DataSourceException { - - String txName = "getAvailableEspeceForNonTargetSample [" + setId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - List<Species> speciess = new ArrayList<Species>(); - - TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); - SetSeine set = dao.findByTopiaId(setId); - - // on recupere la liste des species faune utilisees dans le rejet - Collection<NonTargetCatch> discardeds = set.getNonTargetCatch(); - - if (discardeds != null) { - for (NonTargetCatch discarded : discardeds) { - // on retient toute les speciess (capturées ou rejetées) - if (!speciess.contains(discarded.getSpecies())) { - speciess.add(discarded.getSpecies()); - } - } - } - - return speciess; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public List<Section> getSections(DataSource source, String setLonglineId) throws DataSourceException { - String txName = "getSections [" + setLonglineId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - TopiaDAO<Section> dao = source.getDAO(tx, Section.class); - - List<Section> sections = dao.findAllByProperties(Section.PROPERTY_SET_LONGLINE + "." + Section.TOPIA_ID, setLonglineId); - - if (!sections.isEmpty()) { - - Decorator<Section> sectionDecorator = getDecoratorService().getDecoratorByType(Section.class); - Decorator<Basket> basketDecorator = getDecoratorService().getDecoratorByType(Basket.class); - Decorator<Branchline> branchlineDecorator = getDecoratorService().getDecoratorByType(Branchline.class); - - for (Section section : sections) { - - sectionDecorator.toString(section); - - if (!section.isBasketEmpty()) { - - for (Basket basket : section.getBasket()) { - - basketDecorator.toString(basket); - - if (!basket.isBranchlineEmpty()) { - - for (Branchline branchline : basket.getBranchline()) { - - branchlineDecorator.toString(branchline); - - } - } - - } - } - } - } - - return sections; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - - } - - - public List<Species> loadDecoratedSpecies(DataSource source, String speciesListCode) throws DataSourceException { - String txName = "loadDecoratedSpecies [" + speciesListCode + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - List<Species> speciess = new ArrayList<Species>(); - - SpeciesListDAO dao = (SpeciesListDAO) source.getDAO(tx, SpeciesList.class); - SpeciesList speciesList = dao.findByTopiaId(speciesListCode); - - speciess.addAll(speciesList.getSpecies()); - - Decorator<Species> decorator = getDecoratorService().getDecoratorByType(Species.class); - - for (Species species : speciess) { - decorator.toString(species); - } - - return speciess; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public java.util.Set<String> getSpeciesListSpeciesIds(DataSource source, String speciesListId) throws DataSourceException { - String txName = "getSpeciesListSpeciesIds [" + speciesListId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - - SpeciesListDAO dao = (SpeciesListDAO) source.getDAO(tx, SpeciesList.class); - SpeciesList speciesList = dao.findByTopiaId(speciesListId); - - java.util.Set<String> ids = - Sets.newHashSet( - TopiaEntityHelper.getTopiaIdList( - speciesList.getSpecies())); - - return ids; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public boolean canUseNonTargetSample(DataSource source, - String setId) throws DataSourceException { - - String txName = "canUseNonTargetSample [" + setId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); - SetSeine set = dao.findByTopiaId(setId); - - return set.canUseNonTargetSample(); - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public boolean canUseTargetSample(DataSource source, - String setId, - boolean discarded) throws DataSourceException { - - String txName = "canUseTargetSample [" + setId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - - TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); - SetSeine set = dao.findByTopiaId(setId); - - return set.canUseTargetSample(discarded); - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - - public void getObsoleteEspeceForNonTargetSample(DataSource source, - String setId, - List<Species> speciessUsed, - Collection<Species> speciessToDelete, - List<NonTargetLength> tailleToDelete) throws DataSourceException { - - String txName = "getObsoleteEspeceForNonTargetSample [" + setId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); - SetSeine set = dao.findByTopiaId(setId); - - - if (set.isNonTargetSampleEmpty()) { - return; - } - - NonTargetSample echantillon = set.getNonTargetSample().get(0); - - if (echantillon.isNonTargetLengthEmpty()) { - return; - } - - for (NonTargetLength taille : echantillon.getNonTargetLength()) { - Species tailleEspece = taille.getSpecies(); - if (!speciessUsed.contains(tailleEspece)) { - // l'species n'existe plus dans les rejet faune, - // on doit le supprimer - tailleToDelete.add(taille); - speciessToDelete.add(tailleEspece); - if (log.isDebugEnabled()) { - log.debug("remove obsolote echantillon " + taille + - " for species " + tailleEspece); - } - } - } - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - - } - - - public void getObsoleteEspeceForTargetSample(DataSource source, - String setId, - Collection<Species> speciessUsed, - Collection<Species> speciessToDelete, - List<TargetLength> tailleToDelete, boolean discarded) throws DataSourceException { - - String txName = "getObsoleteEspeceForTargetSample [" + setId + "]"; - TopiaContext tx = beginTransaction(source, txName); - try { - TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); - SetSeine set = dao.findByTopiaId(setId); - - if (set.isTargetSampleEmpty()) { - return; - } - - TargetSample echantillon = set.getTargetSample(discarded); - - if (echantillon == null || echantillon.isTargetLengthEmpty()) { - return; - } - - for (TargetLength taille : echantillon.getTargetLength()) { - Species tailleEspece = taille.getSpecies(); - if (!speciessUsed.contains(tailleEspece)) { - // l'species n'existe plus dans les rejet faune, - // on doit le supprimer - tailleToDelete.add(taille); - speciessToDelete.add(tailleEspece); - if (log.isDebugEnabled()) { - log.debug("remove obsolote echantillon " + taille + - " for species " + tailleEspece); - } - } - } - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public List<Program> getPossibleProgramsForTrip(DataSource source, String tripId) throws DataSourceException { - - final GearType gearType; - - String txName = "getPossibleProgramsForTrip : " + tripId; - TopiaContext tx = beginTransaction(source, txName); - try { - - Trip trip; - - if (tripId.contains(TripSeine.class.getSimpleName())) { - trip = source.getDAO(tx, TripSeine.class).findByTopiaId(tripId); - } else { - trip = source.getDAO(tx, TripLongline.class).findByTopiaId(tripId); - } - - gearType = trip.getProgram().getGearType(); - - ProgramDAO dao = (ProgramDAO) source.getDAO(tx, Program.class); - - List<Program> programs = dao.findAllByGearType(gearType); - - for (Program program : programs) { - decoratorService.decorate(program); - } - - return programs; - - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - - } - - public void moveTripToProgram(DataSource source, String tripId, String programId) throws DataSourceException { - - String txName = "moveTripToProgram : " + tripId + " :: " + programId; - TopiaContext tx = beginTransaction(source, txName); - try { - - Trip trip; - - if (tripId.contains(TripSeine.class.getSimpleName())) { - trip = source.getDAO(tx, TripSeine.class).findByTopiaId(tripId); - } else { - trip = source.getDAO(tx, TripLongline.class).findByTopiaId(tripId); - } - - ProgramDAO dao = (ProgramDAO) source.getDAO(tx, Program.class); - - Program program = dao.findByTopiaId(programId); - - trip.setProgram(program); - - tx.commitTransaction(); - - if (trip.isOpen()) { - - // refresh the dataContext - dataContext.setOpenProgramId(programId); - - } - - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - - } - - public List<SizeMeasure> getCatchLonglineSizeMeasures(DataSource source, CatchLongline bean, final TopiaEntityBinder<SizeMeasure> binder) throws DataSourceException { - - String txName = "getSections : " + bean.getTopiaId(); - TopiaContext tx = beginTransaction(source, txName); - try { - TopiaDAO<CatchLongline> dao = source.getDAO(tx, CatchLongline.class); - CatchLongline catchLongline = dao.findByTopiaId(bean.getTopiaId()); - List<SizeMeasure> result = new ArrayList<SizeMeasure>(); - for (SizeMeasure sizeSource : catchLongline.getSizeMeasure()) { - SizeMeasure target = new SizeMeasureImpl(); - binder.load(sizeSource, target, true); - result.add(target); - } - return result; - - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public List<WeightMeasure> getCatchLonglineWeightMeasures(DataSource source, CatchLongline bean, final TopiaEntityBinder<WeightMeasure> binder) throws DataSourceException { - - String txName = "getSections : " + bean.getTopiaId(); - TopiaContext tx = beginTransaction(source, txName); - try { - TopiaDAO<CatchLongline> dao = source.getDAO(tx, CatchLongline.class); - CatchLongline catchLongline = dao.findByTopiaId(bean.getTopiaId()); - List<WeightMeasure> result = new ArrayList<WeightMeasure>(); - for (WeightMeasure weightSource : catchLongline.getWeightMeasure()) { - WeightMeasure target = new WeightMeasureImpl(); - binder.load(weightSource, target, true); - result.add(target); - } - return result; - - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } + } - public List<GearUseFeaturesMeasurementSeine> getDefaultGearUseFeaturesMeasurementSeine(DataSource source, String gearId) throws DataSourceException { - String txName = "getDefaultGearUseFeaturesMeasurementSeine : " + gearId; - TopiaContext tx = beginTransaction(source, txName); - try { + } - TopiaDAO<Gear> gearDao = source.getDAO(tx, Gear.class); - Gear gear = gearDao.findByTopiaId(gearId); + if (CollectionUtils.isEmpty(list)) { - Collection<GearCaracteristic> gearCaracteristic = gear.getGearCaracteristic(); - List<GearUseFeaturesMeasurementSeine> result = new ArrayList<GearUseFeaturesMeasurementSeine>(); - for (GearCaracteristic caracteristic : gearCaracteristic) { - GearUseFeaturesMeasurementSeine target = new GearUseFeaturesMeasurementSeineImpl(); - target.setGearCaracteristic(caracteristic); - result.add(target); + // pas de sexe adequate + return null; } - return result; - - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } + // filtrage par startDate de validite + list = LengthWeightParemeterHelper.filterByDateDebutValidite(list, + date); - public List<GearUseFeaturesMeasurementSeine> getGearUseFeaturesMeasurementSeine(DataSource source, GearUseFeaturesSeine bean, final TopiaEntityBinder<GearUseFeaturesMeasurementSeine> binder) throws DataSourceException { + if (CollectionUtils.isEmpty(list)) { - String txName = "getGearUseFeaturesMeasurementSeine : " + bean.getTopiaId(); - TopiaContext tx = beginTransaction(source, txName); - try { - TopiaDAO<GearUseFeaturesSeine> dao = source.getDAO(tx, GearUseFeaturesSeine.class); - GearUseFeaturesSeine gearUseFeaturesSeine = dao.findByTopiaId(bean.getTopiaId()); - List<GearUseFeaturesMeasurementSeine> result = new ArrayList<GearUseFeaturesMeasurementSeine>(); - for (GearUseFeaturesMeasurementSeine measurementSource : gearUseFeaturesSeine.getGearUseFeaturesMeasurement()) { - GearUseFeaturesMeasurementSeine target = new GearUseFeaturesMeasurementSeineImpl(); - measurementSource.getGearCaracteristic().getGearCaracteristicType(); - binder.load(measurementSource, target, true); - result.add(target); + // pas de date de debut adequate + return null; } - return result; - - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public List<GearUseFeaturesMeasurementLongline> getDefaultGearUseFeaturesMeasurementLongline(DataSource source, String gearId) throws DataSourceException { - String txName = "getDefaultGearUseFeaturesMeasurementLongline : " + gearId; - TopiaContext tx = beginTransaction(source, txName); - try { + // filtrage par endDate de validite + list = LengthWeightParemeterHelper.filterByDateFinValidite(list, + date); - TopiaDAO<Gear> gearDao = source.getDAO(tx, Gear.class); - Gear gear = gearDao.findByTopiaId(gearId); + if (CollectionUtils.isEmpty(list)) { - Collection<GearCaracteristic> gearCaracteristic = gear.getGearCaracteristic(); - List<GearUseFeaturesMeasurementLongline> result = new ArrayList<GearUseFeaturesMeasurementLongline>(); - for (GearCaracteristic caracteristic : gearCaracteristic) { - GearUseFeaturesMeasurementLongline target = new GearUseFeaturesMeasurementLonglineImpl(); - target.setGearCaracteristic(caracteristic); - result.add(target); + // pas de date de fin adequate + return null; } - return result; + // au final il ne devrait en rester qu'un - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } - - public List<GearUseFeaturesMeasurementLongline> getGearUseFeaturesMeasurementLongline(DataSource source, GearUseFeaturesLongline bean, final TopiaEntityBinder<GearUseFeaturesMeasurementLongline> binder) throws DataSourceException { + if (list.size() > 1) { + StringBuilder sb = new StringBuilder("Il existe plusieurs paramétrages possibles pour les données suivantes :"); + sb.append("\nEspece : "); + sb.append(getDecoratorService().decorate(species)); + sb.append("\nOcean : "); + sb.append(getDecoratorService().decorate(ocean)); + sb.append("\nSex : "); + sb.append(getDecoratorService().decorate(sex)); + sb.append("\nDate : ").append(date); + sb.append("\nParamétrages trouvés : "); + for (P p : list) { + sb.append("\n - ").append(getDecoratorService().decorate(p)); + } + throw new DataSourceException(sb.toString(), "findLengthWeightParameter"); + } - String txName = "getGearUseFeaturesMeasurementLongline : " + bean.getTopiaId(); - TopiaContext tx = beginTransaction(source, txName); - try { - TopiaDAO<GearUseFeaturesLongline> dao = source.getDAO(tx, GearUseFeaturesLongline.class); - GearUseFeaturesLongline gearUseFeaturesLongline = dao.findByTopiaId(bean.getTopiaId()); - List<GearUseFeaturesMeasurementLongline> result = new ArrayList<GearUseFeaturesMeasurementLongline>(); - for (GearUseFeaturesMeasurementLongline measurementSource : gearUseFeaturesLongline.getGearUseFeaturesMeasurement()) { - GearUseFeaturesMeasurementLongline target = new GearUseFeaturesMeasurementLonglineImpl(); - measurementSource.getGearCaracteristic().getGearCaracteristicType(); - binder.load(measurementSource, target, true); - result.add(target); + P result = list.get(0); + if (log.isDebugEnabled()) { + StringBuilder sb = new StringBuilder("Paramétrage trouvé pour les données suivantes :"); + sb.append("\nEspece : "); + sb.append(getDecoratorService().decorate(species)); + sb.append("\nOcean : "); + sb.append(getDecoratorService().decorate(ocean)); + sb.append("\nSex : "); + sb.append(getDecoratorService().decorate(sex)); + sb.append("\nDate : ").append(date); + sb.append("\nParamétrage: ").append(getDecoratorService().decorate(result)); + log.debug(sb.toString()); } return result; - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); + } catch (Exception e) { + throw new DataSourceException(e, "findLengthWeightParameter"); } } - public <E extends TopiaEntity> List<String> getEntityIds(DataSource source, - Class<E> refClass) +// protected Sex getUnknownSex(TopiaContext tx) throws TopiaException { +// return ObserveDAOHelper.getSexDAO(tx).findByCode("0"); +// } + +// public int getOpenablePosition(DataSource source, +// String containerId, +// String childId) throws DataSourceException { +// if (childId.startsWith(TripSeine.class.getName())) { +// return getTripSeinePosition(source, containerId, childId); +// } +// if (childId.startsWith(TripLongline.class.getName())) { +// return getTripLonglinePosition(source, containerId, childId); +// } +// if (childId.startsWith(Route.class.getName())) { +// return getRoutePosition(source, containerId, childId); +// } +// if (childId.startsWith(ActivitySeine.class.getName())) { +// return getActivitySeinePosition(source, containerId, childId); +// } +// if (childId.startsWith(ActivityLongline.class.getName())) { +// return getActivityLonglinePosition(source, containerId, childId); +// } +// throw new IllegalStateException("Can not come here!"); +// } + +// protected int getTripSeinePosition(DataSource source, +// String programId, +// String tripId) throws DataSourceException { +// +// String txName = "getTripSeinePosition [" + tripId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); +// int pos = dao.findPositionByProgramId(programId, tripId); +// return pos; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } +// +// protected int getTripLonglinePosition(DataSource source, +// String programId, +// String tripId) throws DataSourceException { +// +// String txName = "getTripLonglinePosition [" + tripId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); +// int pos = dao.findPositionByProgramId(programId, tripId); +// return pos; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } +// +// protected int getRoutePosition(DataSource source, +// String tripId, +// String routeId) throws DataSourceException { +// +// String txName = "getRoutePosition [" + tripId + "/" + routeId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TripSeine maree = source.getDAO(tx, TripSeine.class).findByTopiaId(tripId); +// Route route = maree.getRouteByTopiaId(routeId); +// List<Route> routes = maree.getRoute(); +// Routes.sort(routes); +// return routes.indexOf(route); +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } +// +// protected int getActivitySeinePosition(DataSource source, +// String routeId, +// String activityId) throws DataSourceException { +// +// String txName = "getActivitySeinePosition [" + routeId + "/" + activityId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// Route route = source.getDAO(tx, Route.class).findByTopiaId(routeId); +// ActivitySeine activitySeine = route.getActivitySeineByTopiaId(activityId); +// List<ActivitySeine> activitySeines = route.getActivitySeine(); +// ActivitySeines.sort(activitySeines); +// return activitySeines.indexOf(activitySeine); +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } +// +// protected int getActivityLonglinePosition(DataSource source, +// String tripId, +// String activityId) throws DataSourceException { +// +// String txName = "getActivityLonglinePosition [" + tripId + "/" + activityId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TripLongline trip = source.getDAO(tx, TripLongline.class).findByTopiaId(tripId); +// ActivityLongline activity = trip.getActivityLonglineByTopiaId(activityId); +// List<ActivityLongline> activities = trip.getActivityLongline(); +// ActivityLonglines.sort(activities); +// return activities.indexOf(activity); +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public String getTargetSampleId(DataSource source, +// String setId, +// boolean discarded) throws DataSourceException { +// +// String txName = "getTargetSampleId [" + setId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); +// SetSeine set = dao.findByTopiaId(setId); +// List<TargetSample> list = set.getTargetSample(); +// if (list == null || list.isEmpty()) { +// return null; +// } +// for (TargetSample targetSample : list) { +// if (discarded) { +// if (targetSample.getDiscarded() != null && +// targetSample.getDiscarded()) { +// return targetSample.getTopiaId(); +// } +// } else if (targetSample.getDiscarded() == null || +// !targetSample.getDiscarded()) { +// return targetSample.getTopiaId(); +// } +// } +// return null; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public String getNonTargetSampleId(DataSource source, +// String setId) throws DataSourceException { +// +// String txName = "getNonTargetSampleId [" + setId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); +// SetSeine set = dao.findByTopiaId(setId); +// List<NonTargetSample> list = set.getNonTargetSample(); +// if (list == null || list.isEmpty()) { +// return null; +// } +// return list.get(0).getTopiaId(); +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<Species> getAvailableEspeceForTargetSample(DataSource source, +// String setId, +// boolean discarded) throws DataSourceException { +// +// String txName = "getAvailableEspeceForTargetSample [" + setId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// List<Species> speciess = new ArrayList<Species>(); +// +// TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); +// SetSeine set = dao.findByTopiaId(setId); +// +// // on recupere la liste des species thon utilisees dans le rejet +// Collection<TargetCatch> discardeds = set.getTargetCatch(); +// +// // on filtre sur les speciess monté sur le pont et rejetée +// +// if (discardeds != null) { +// for (TargetCatch discardedt : discardeds) { +// boolean keep; +// +// if (discarded) { +// +// // on ne conserve que les speciess des discardeds montees sur le pont et discardedes +// keep = discardedt.isDiscarded() && discardedt.getBroughtOnDeck(); +// +// } else { +// +// // on ne conserve que les species des discardeds +// keep = !discardedt.isDiscarded(); +// } +// +// if (keep && +// !speciess.contains(discardedt.getWeightCategory().getSpecies())) { +// speciess.add(discardedt.getWeightCategory().getSpecies()); +// } +// } +// } +// return speciess; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<Species> getAvailableEspeceForNonTargetSample(DataSource source, +// String setId) throws DataSourceException { +// +// String txName = "getAvailableEspeceForNonTargetSample [" + setId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// List<Species> speciess = new ArrayList<Species>(); +// +// TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); +// SetSeine set = dao.findByTopiaId(setId); +// +// // on recupere la liste des species faune utilisees dans le rejet +// Collection<NonTargetCatch> discardeds = set.getNonTargetCatch(); +// +// if (discardeds != null) { +// for (NonTargetCatch discarded : discardeds) { +// // on retient toute les speciess (capturées ou rejetées) +// if (!speciess.contains(discarded.getSpecies())) { +// speciess.add(discarded.getSpecies()); +// } +// } +// } +// +// return speciess; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<Section> getSections(DataSource source, String setLonglineId) throws DataSourceException { +// String txName = "getSections [" + setLonglineId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// TopiaDAO<Section> dao = source.getDAO(tx, Section.class); +// +// List<Section> sections = dao.findAllByProperties(Section.PROPERTY_SET_LONGLINE + "." + Section.TOPIA_ID, setLonglineId); +// +// if (!sections.isEmpty()) { +// +// Decorator<Section> sectionDecorator = getDecoratorService().getDecoratorByType(Section.class); +// Decorator<Basket> basketDecorator = getDecoratorService().getDecoratorByType(Basket.class); +// Decorator<Branchline> branchlineDecorator = getDecoratorService().getDecoratorByType(Branchline.class); +// +// for (Section section : sections) { +// +// sectionDecorator.toString(section); +// +// if (!section.isBasketEmpty()) { +// +// for (Basket basket : section.getBasket()) { +// +// basketDecorator.toString(basket); +// +// if (!basket.isBranchlineEmpty()) { +// +// for (Branchline branchline : basket.getBranchline()) { +// +// branchlineDecorator.toString(branchline); +// +// } +// } +// +// } +// } +// } +// } +// +// return sections; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// +// } + +// public List<Species> loadDecoratedSpecies(DataSource source, String speciesListCode) throws DataSourceException { +// String txName = "loadDecoratedSpecies [" + speciesListCode + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// List<Species> speciess = new ArrayList<Species>(); +// +// SpeciesListDAO dao = (SpeciesListDAO) source.getDAO(tx, SpeciesList.class); +// SpeciesList speciesList = dao.findByTopiaId(speciesListCode); +// +// speciess.addAll(speciesList.getSpecies()); +// +// Decorator<Species> decorator = getDecoratorService().getDecoratorByType(Species.class); +// +// for (Species species : speciess) { +// decorator.toString(species); +// } +// +// return speciess; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + + +// public java.util.Set<String> getSpeciesListSpeciesIds(DataSource source, String speciesListId) throws DataSourceException { +// String txName = "getSpeciesListSpeciesIds [" + speciesListId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// +// SpeciesListDAO dao = (SpeciesListDAO) source.getDAO(tx, SpeciesList.class); +// SpeciesList speciesList = dao.findByTopiaId(speciesListId); +// +// java.util.Set<String> ids = +// Sets.newHashSet( +// TopiaEntityHelper.getTopiaIdList( +// speciesList.getSpecies())); +// +// return ids; +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public boolean canUseNonTargetSample(DataSource source, +// String setId) throws DataSourceException { +// +// String txName = "canUseNonTargetSample [" + setId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); +// SetSeine set = dao.findByTopiaId(setId); +// +// return set.canUseNonTargetSample(); +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public boolean canUseTargetSample(DataSource source, +// String setId, +// boolean discarded) throws DataSourceException { +// +// String txName = "canUseTargetSample [" + setId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); +// SetSeine set = dao.findByTopiaId(setId); +// +// return set.canUseTargetSample(discarded); +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public void getObsoleteEspeceForNonTargetSample(DataSource source, +// String setId, +// List<Species> speciessUsed, +// Collection<Species> speciessToDelete, +// List<NonTargetLength> tailleToDelete) throws DataSourceException { +// +// String txName = "getObsoleteEspeceForNonTargetSample [" + setId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); +// SetSeine set = dao.findByTopiaId(setId); +// +// +// if (set.isNonTargetSampleEmpty()) { +// return; +// } +// +// NonTargetSample echantillon = set.getNonTargetSample().get(0); +// +// if (echantillon.isNonTargetLengthEmpty()) { +// return; +// } +// +// for (NonTargetLength taille : echantillon.getNonTargetLength()) { +// Species tailleEspece = taille.getSpecies(); +// if (!speciessUsed.contains(tailleEspece)) { +// // l'species n'existe plus dans les rejet faune, +// // on doit le supprimer +// tailleToDelete.add(taille); +// speciessToDelete.add(tailleEspece); +// if (log.isDebugEnabled()) { +// log.debug("remove obsolote echantillon " + taille + +// " for species " + tailleEspece); +// } +// } +// } +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// +// } + +// public void getObsoleteEspeceForTargetSample(DataSource source, +// String setId, +// Collection<Species> speciessUsed, +// Collection<Species> speciessToDelete, +// List<TargetLength> tailleToDelete, boolean discarded) throws DataSourceException { +// +// String txName = "getObsoleteEspeceForTargetSample [" + setId + "]"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TopiaDAO<SetSeine> dao = source.getDAO(tx, SetSeine.class); +// SetSeine set = dao.findByTopiaId(setId); +// +// if (set.isTargetSampleEmpty()) { +// return; +// } +// +// TargetSample echantillon = set.getTargetSample(discarded); +// +// if (echantillon == null || echantillon.isTargetLengthEmpty()) { +// return; +// } +// +// for (TargetLength taille : echantillon.getTargetLength()) { +// Species tailleEspece = taille.getSpecies(); +// if (!speciessUsed.contains(tailleEspece)) { +// // l'species n'existe plus dans les rejet faune, +// // on doit le supprimer +// tailleToDelete.add(taille); +// speciessToDelete.add(tailleEspece); +// if (log.isDebugEnabled()) { +// log.debug("remove obsolote echantillon " + taille + +// " for species " + tailleEspece); +// } +// } +// } +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<Program> getPossibleProgramsForTrip(DataSource source, String tripId) throws DataSourceException { +// +// final GearType gearType; +// +// String txName = "getPossibleProgramsForTrip : " + tripId; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// Trip trip; +// +// if (tripId.contains(TripSeine.class.getSimpleName())) { +// trip = source.getDAO(tx, TripSeine.class).findByTopiaId(tripId); +// } else { +// trip = source.getDAO(tx, TripLongline.class).findByTopiaId(tripId); +// } +// +// gearType = trip.getProgram().getGearType(); +// +// ProgramDAO dao = (ProgramDAO) source.getDAO(tx, Program.class); +// +// List<Program> programs = dao.findAllByGearType(gearType); +// +// for (Program program : programs) { +// decoratorService.decorate(program); +// } +// +// return programs; +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// +// } + +// public void moveTripToProgram(DataSource source, String tripId, String programId) throws DataSourceException { +// +// String txName = "moveTripToProgram : " + tripId + " :: " + programId; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// Trip trip; +// +// if (tripId.contains(TripSeine.class.getSimpleName())) { +// trip = source.getDAO(tx, TripSeine.class).findByTopiaId(tripId); +// } else { +// trip = source.getDAO(tx, TripLongline.class).findByTopiaId(tripId); +// } +// +// ProgramDAO dao = (ProgramDAO) source.getDAO(tx, Program.class); +// +// Program program = dao.findByTopiaId(programId); +// +// trip.setProgram(program); +// +// tx.commitTransaction(); +// +// if (trip.isOpen()) { +// +// // refresh the dataContext +// dataContext.setOpenProgramId(programId); +// +// } +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// +// } + +// public List<SizeMeasure> getCatchLonglineSizeMeasures(DataSource source, CatchLongline bean, final TopiaEntityBinder<SizeMeasure> binder) throws DataSourceException { +// +// String txName = "getSections : " + bean.getTopiaId(); +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TopiaDAO<CatchLongline> dao = source.getDAO(tx, CatchLongline.class); +// CatchLongline catchLongline = dao.findByTopiaId(bean.getTopiaId()); +// List<SizeMeasure> result = new ArrayList<SizeMeasure>(); +// for (SizeMeasure sizeSource : catchLongline.getSizeMeasure()) { +// SizeMeasure target = new SizeMeasureImpl(); +// binder.load(sizeSource, target, true); +// result.add(target); +// } +// return result; +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } +// +// public List<WeightMeasure> getCatchLonglineWeightMeasures(DataSource source, CatchLongline bean, final TopiaEntityBinder<WeightMeasure> binder) throws DataSourceException { +// +// String txName = "getSections : " + bean.getTopiaId(); +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TopiaDAO<CatchLongline> dao = source.getDAO(tx, CatchLongline.class); +// CatchLongline catchLongline = dao.findByTopiaId(bean.getTopiaId()); +// List<WeightMeasure> result = new ArrayList<WeightMeasure>(); +// for (WeightMeasure weightSource : catchLongline.getWeightMeasure()) { +// WeightMeasure target = new WeightMeasureImpl(); +// binder.load(weightSource, target, true); +// result.add(target); +// } +// return result; +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<GearUseFeaturesMeasurementSeine> getDefaultGearUseFeaturesMeasurementSeine(DataSource source, String gearId) throws DataSourceException { +// +// String txName = "getDefaultGearUseFeaturesMeasurementSeine : " + gearId; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// TopiaDAO<Gear> gearDao = source.getDAO(tx, Gear.class); +// Gear gear = gearDao.findByTopiaId(gearId); +// +// Collection<GearCaracteristic> gearCaracteristic = gear.getGearCaracteristic(); +// List<GearUseFeaturesMeasurementSeine> result = new ArrayList<GearUseFeaturesMeasurementSeine>(); +// for (GearCaracteristic caracteristic : gearCaracteristic) { +// GearUseFeaturesMeasurementSeine target = new GearUseFeaturesMeasurementSeineImpl(); +// target.setGearCaracteristic(caracteristic); +// result.add(target); +// } +// +// return result; +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<GearUseFeaturesMeasurementSeine> getGearUseFeaturesMeasurementSeine(DataSource source, GearUseFeaturesSeine bean, final TopiaEntityBinder<GearUseFeaturesMeasurementSeine> binder) throws DataSourceException { +// +// String txName = "getGearUseFeaturesMeasurementSeine : " + bean.getTopiaId(); +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TopiaDAO<GearUseFeaturesSeine> dao = source.getDAO(tx, GearUseFeaturesSeine.class); +// GearUseFeaturesSeine gearUseFeaturesSeine = dao.findByTopiaId(bean.getTopiaId()); +// List<GearUseFeaturesMeasurementSeine> result = new ArrayList<GearUseFeaturesMeasurementSeine>(); +// for (GearUseFeaturesMeasurementSeine measurementSource : gearUseFeaturesSeine.getGearUseFeaturesMeasurement()) { +// GearUseFeaturesMeasurementSeine target = new GearUseFeaturesMeasurementSeineImpl(); +// measurementSource.getGearCaracteristic().getGearCaracteristicType(); +// binder.load(measurementSource, target, true); +// result.add(target); +// } +// return result; +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<GearUseFeaturesMeasurementLongline> getDefaultGearUseFeaturesMeasurementLongline(DataSource source, String gearId) throws DataSourceException { +// +// String txName = "getDefaultGearUseFeaturesMeasurementLongline : " + gearId; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// TopiaDAO<Gear> gearDao = source.getDAO(tx, Gear.class); +// Gear gear = gearDao.findByTopiaId(gearId); +// +// Collection<GearCaracteristic> gearCaracteristic = gear.getGearCaracteristic(); +// List<GearUseFeaturesMeasurementLongline> result = new ArrayList<GearUseFeaturesMeasurementLongline>(); +// for (GearCaracteristic caracteristic : gearCaracteristic) { +// GearUseFeaturesMeasurementLongline target = new GearUseFeaturesMeasurementLonglineImpl(); +// target.setGearCaracteristic(caracteristic); +// result.add(target); +// } +// +// return result; +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + +// public List<GearUseFeaturesMeasurementLongline> getGearUseFeaturesMeasurementLongline(DataSource source, GearUseFeaturesLongline bean, final TopiaEntityBinder<GearUseFeaturesMeasurementLongline> binder) throws DataSourceException { +// +// String txName = "getGearUseFeaturesMeasurementLongline : " + bean.getTopiaId(); +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TopiaDAO<GearUseFeaturesLongline> dao = source.getDAO(tx, GearUseFeaturesLongline.class); +// GearUseFeaturesLongline gearUseFeaturesLongline = dao.findByTopiaId(bean.getTopiaId()); +// List<GearUseFeaturesMeasurementLongline> result = new ArrayList<GearUseFeaturesMeasurementLongline>(); +// for (GearUseFeaturesMeasurementLongline measurementSource : gearUseFeaturesLongline.getGearUseFeaturesMeasurement()) { +// GearUseFeaturesMeasurementLongline target = new GearUseFeaturesMeasurementLonglineImpl(); +// measurementSource.getGearCaracteristic().getGearCaracteristicType(); +// binder.load(measurementSource, target, true); +// result.add(target); +// } +// return result; +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } + + public <E extends TopiaEntity> List<String> getEntityIds(DataSource source, Class<E> refClass) throws DataSourceException { String txName = "getEntityIds : " + refClass; @@ -1712,42 +1641,42 @@ public class DataService { } } - public List<TripMapPoint> loadTripMapActivityPoints(DataSource source, String id) throws DataSourceException { - if (!source.canReadData()) { - if (log.isDebugEnabled()) { - log.debug("Can not read data!"); - } - return null; - } - - String txName = "loadTrip"; - TopiaContext tx = beginTransaction(source, txName); - - List<TripMapPoint> tripMapPoints; - - try { - if (Entities.isSeineId(id)) { - TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); - - tripMapPoints = dao.extractTripMapActivityPoints(id); - - } else if (Entities.isLonglineId(id)) { - - TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); - - tripMapPoints = dao.extractTripMapActivityPoints(id); - - } else { - throw new ObserveTechnicalException(String.format("id '%s' is not seine id or longe line id", id)); - } - - } catch (TopiaException e) { - throw new DataSourceException(e, txName); - } finally{ - closeTransaction(source, tx, txName); - } - return tripMapPoints; - } +// public List<TripMapPoint> loadTripMapActivityPoints(DataSource source, String id) throws DataSourceException { +// if (!source.canReadData()) { +// if (log.isDebugEnabled()) { +// log.debug("Can not read data!"); +// } +// return null; +// } +// +// String txName = "loadTrip"; +// TopiaContext tx = beginTransaction(source, txName); +// +// List<TripMapPoint> tripMapPoints; +// +// try { +// if (Entities.isSeineId(id)) { +// TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); +// +// tripMapPoints = dao.extractTripMapActivityPoints(id); +// +// } else if (Entities.isLonglineId(id)) { +// +// TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); +// +// tripMapPoints = dao.extractTripMapActivityPoints(id); +// +// } else { +// throw new ObserveTechnicalException(String.format("id '%s' is not seine id or longe line id", id)); +// } +// +// } catch (TopiaException e) { +// throw new DataSourceException(e, txName); +// } finally{ +// closeTransaction(source, tx, txName); +// } +// return tripMapPoints; +// } // ------------------------------------------------------------------------ @@ -1755,43 +1684,43 @@ public class DataService { // ------------------------------------------------------------------------ - public TopiaEntity loadEntity(DataSource source, - String id, - boolean decorate) throws DataSourceException { - - String txName = "loadEntity : " + id; - TopiaContext tx = beginTransaction(source, txName); - try { - TopiaEntity result = tx.findByTopiaId(id); - //FIXME Find a better way to do this... - if (result instanceof ActivitySeine) { - - // on charge toujours sa calée - ((ActivitySeine) result).getSetSeine(); - } - if (result instanceof ActivityLongline) { - - // on charge toujours sa calée - ((ActivityLongline) result).getSetLongline(); - } - if (decorate) { - Decorator<TopiaEntity> decorator = - getDecoratorService().getDecorator(result); - if (decorator == null) { - if (log.isWarnEnabled()) { - log.warn("Decorateur non trouvé pour l'objet " + result); - } - } else { - decorator.toString(result); - } - } - return result; - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } +// public TopiaEntity loadEntity(DataSource source, +// String id, +// boolean decorate) throws DataSourceException { +// +// String txName = "loadEntity : " + id; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// TopiaEntity result = tx.findByTopiaId(id); +// //FIXME Find a better way to do this... +// if (result instanceof ActivitySeine) { +// +// // on charge toujours sa calée +// ((ActivitySeine) result).getSetSeine(); +// } +// if (result instanceof ActivityLongline) { +// +// // on charge toujours sa calée +// ((ActivityLongline) result).getSetLongline(); +// } +// if (decorate) { +// Decorator<TopiaEntity> decorator = +// getDecoratorService().getDecorator(result); +// if (decorator == null) { +// if (log.isWarnEnabled()) { +// log.warn("Decorateur non trouvé pour l'objet " + result); +// } +// } else { +// decorator.toString(result); +// } +// } +// return result; +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } public <E extends TopiaEntity> void loadEditEntity(DataSource source, @@ -1811,48 +1740,48 @@ public class DataService { } - public <E extends TopiaEntity> List<E> loadEntityAssociation(DataSource source, - Class<E> entityClass, - String property, - String parentId) throws DataSourceException { - - TopiaContext tx = beginTransaction(source, "loadEntitiesWithProperties"); - try { - - Class<TopiaEntity> parentclass = TopiaId.getClassName(parentId); - - TopiaDAO<?> parentDao = source.getDAO(tx, parentclass); - - // get parent entity - TopiaEntity parent = parentDao.findByTopiaId(parentId); - - // get parent operator - EntityOperator<TopiaEntity> operator = - ObserveDAOHelper.getOperator(parentclass); - - // get property from parent - List<E> result = (List<E>) operator.get(property, parent); - - DecoratorService decoratorService = getDecoratorService(); - - if (decoratorService != null) { - - // chargement des rendus - Decorator<E> decorator = - decoratorService.getDecoratorByType(entityClass); - for (E e : result) { - decorator.toString(e); - } - } - return result; - } catch (TopiaException e) { - throw new DataSourceException( - "Can not obtain topiaentity " + - parentId, e, "loadEntitiesWithProperties"); - } finally { - closeTransaction(source, tx, "loadEntitiesWithProperties"); - } - } +// public <E extends TopiaEntity> List<E> loadEntityAssociation(DataSource source, +// Class<E> entityClass, +// String property, +// String parentId) throws DataSourceException { +// +// TopiaContext tx = beginTransaction(source, "loadEntitiesWithProperties"); +// try { +// +// Class<TopiaEntity> parentclass = TopiaId.getClassName(parentId); +// +// TopiaDAO<?> parentDao = source.getDAO(tx, parentclass); +// +// // get parent entity +// TopiaEntity parent = parentDao.findByTopiaId(parentId); +// +// // get parent operator +// EntityOperator<TopiaEntity> operator = +// ObserveDAOHelper.getOperator(parentclass); +// +// // get property from parent +// List<E> result = (List<E>) operator.get(property, parent); +// +// DecoratorService decoratorService = getDecoratorService(); +// +// if (decoratorService != null) { +// +// // chargement des rendus +// Decorator<E> decorator = +// decoratorService.getDecoratorByType(entityClass); +// for (E e : result) { +// decorator.toString(e); +// } +// } +// return result; +// } catch (TopiaException e) { +// throw new DataSourceException( +// "Can not obtain topiaentity " + +// parentId, e, "loadEntitiesWithProperties"); +// } finally { +// closeTransaction(source, tx, "loadEntitiesWithProperties"); +// } +// } public <E extends TopiaEntity, C extends TopiaEntity> void copyAssociation(Class<E> entityType, Class<C> childEntityType, @@ -1877,96 +1806,96 @@ public class DataService { } - public String getSensorUsedDataFilename(DataSource source, SensorUsed sensorUSed) throws DataSourceException { - - String txName = "getSensorUsedDataFilename"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - TripLongline tripLongline = source.getOpen(tx, TripLongline.class); - - StringBuilder filenameBuilder = new StringBuilder("sensorData"); - String code = tripLongline.getVessel().getCode(); - filenameBuilder.append("-").append(code); - - Date startDate = tripLongline.getStartDate(); - filenameBuilder.append("-").append(new SimpleDateFormat("yyyy.MM.dd").format(startDate)); - - SensorType sensorType = sensorUSed.getSensorType(); - if (sensorType != null && sensorType.getCode() != null) { - filenameBuilder.append("-").append(sensorType.getCode()); - } - - String sensorSerialNo = sensorUSed.getSensorSerialNo(); - if (sensorSerialNo != null) { - filenameBuilder.append("-").append(sensorSerialNo); - } - filenameBuilder.append("-").append(sensorUSed.getDataFilename()); - - String filename = filenameBuilder.toString(); - return filename; - - } finally { - - closeTransaction(source, tx, txName); - - } - - } - - public String getTdrDataFilename(DataSource source, Tdr tdr) throws DataSourceException { - - String txName = "getTdrDataFilename"; - TopiaContext tx = beginTransaction(source, txName); - - try { - - TripLongline tripLongline = source.getOpen(tx, TripLongline.class); - - StringBuilder filenameBuilder = new StringBuilder("tdr"); - String code = tripLongline.getVessel().getCode(); - filenameBuilder.append("-").append(code); - - Date startDate = tripLongline.getStartDate(); - filenameBuilder.append("-").append(new SimpleDateFormat("yyyy.MM.dd").format(startDate)); - - String homeId = tdr.getHomeId(); - if (homeId != null) { - filenameBuilder.append("-").append(homeId); - } - - String serialNo = tdr.getSerialNo(); - if (serialNo != null) { - filenameBuilder.append("-").append(serialNo); - } - filenameBuilder.append("-").append(tdr.getDataFilename()); - - String filename = filenameBuilder.toString(); - return filename; - - } finally { - - closeTransaction(source, tx, txName); - - } - - } - - public <E extends TopiaEntity> List<E> loadDecoratedEntities(DataSource source, - Class<E> entityClass) throws DataSourceException { - - String txName = "loadEntities :: " + entityClass.getName(); - TopiaContext tx = beginTransaction(source, txName); - Decorator<E> decorator = getDecoratorService().getDecoratorByType(entityClass); - try { - List<E> result = - source.loadDecoratedEntities(tx, entityClass, decorator); - return result; - } finally { - closeTransaction(source, tx, txName); - } - } +// public String getSensorUsedDataFilename(DataSource source, SensorUsed sensorUSed) throws DataSourceException { +// +// String txName = "getSensorUsedDataFilename"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// TripLongline tripLongline = source.getOpen(tx, TripLongline.class); +// +// StringBuilder filenameBuilder = new StringBuilder("sensorData"); +// String code = tripLongline.getVessel().getCode(); +// filenameBuilder.append("-").append(code); +// +// Date startDate = tripLongline.getStartDate(); +// filenameBuilder.append("-").append(new SimpleDateFormat("yyyy.MM.dd").format(startDate)); +// +// SensorType sensorType = sensorUSed.getSensorType(); +// if (sensorType != null && sensorType.getCode() != null) { +// filenameBuilder.append("-").append(sensorType.getCode()); +// } +// +// String sensorSerialNo = sensorUSed.getSensorSerialNo(); +// if (sensorSerialNo != null) { +// filenameBuilder.append("-").append(sensorSerialNo); +// } +// filenameBuilder.append("-").append(sensorUSed.getDataFilename()); +// +// String filename = filenameBuilder.toString(); +// return filename; +// +// } finally { +// +// closeTransaction(source, tx, txName); +// +// } +// +// } + +// public String getTdrDataFilename(DataSource source, Tdr tdr) throws DataSourceException { +// +// String txName = "getTdrDataFilename"; +// TopiaContext tx = beginTransaction(source, txName); +// +// try { +// +// TripLongline tripLongline = source.getOpen(tx, TripLongline.class); +// +// StringBuilder filenameBuilder = new StringBuilder("tdr"); +// String code = tripLongline.getVessel().getCode(); +// filenameBuilder.append("-").append(code); +// +// Date startDate = tripLongline.getStartDate(); +// filenameBuilder.append("-").append(new SimpleDateFormat("yyyy.MM.dd").format(startDate)); +// +// String homeId = tdr.getHomeId(); +// if (homeId != null) { +// filenameBuilder.append("-").append(homeId); +// } +// +// String serialNo = tdr.getSerialNo(); +// if (serialNo != null) { +// filenameBuilder.append("-").append(serialNo); +// } +// filenameBuilder.append("-").append(tdr.getDataFilename()); +// +// String filename = filenameBuilder.toString(); +// return filename; +// +// } finally { +// +// closeTransaction(source, tx, txName); +// +// } +// +// } + +// public <E extends TopiaEntity> List<E> loadDecoratedEntities(DataSource source, +// Class<E> entityClass) throws DataSourceException { +// +// String txName = "loadEntities :: " + entityClass.getName(); +// TopiaContext tx = beginTransaction(source, txName); +// Decorator<E> decorator = getDecoratorService().getDecoratorByType(entityClass); +// try { +// List<E> result = +// source.loadDecoratedEntities(tx, entityClass, decorator); +// return result; +// } finally { +// closeTransaction(source, tx, txName); +// } +// } public <E extends TopiaEntity> List<E> loadDecoratedEntities(DataSource source, @@ -2171,30 +2100,30 @@ public class DataService { } - public void updateOpenProperty(DataSource source, - String id, - boolean newValue) throws DataSourceException { - - if (!source.canWriteData()) { - - // pas autorisé à écrire des données observer - return; - } - - String txName = "updateOpenProperty :: " + id + " - " + newValue; - TopiaContext tx = null; - try { - tx = beginTransaction(source, txName); - OpenableEntity beanToSave = source.findByTopiaId(tx, id); - beanToSave.setOpen(newValue); - commitTransaction(source, tx, txName); - } catch (TopiaException e) { - throw new DataSourceException( - "Can not update open state for " + id, e, txName); - } finally { - closeTransaction(source, tx, txName); - } - } +// public void updateOpenProperty(DataSource source, +// String id, +// boolean newValue) throws DataSourceException { +// +// if (!source.canWriteData()) { +// +// // pas autorisé à écrire des données observer +// return; +// } +// +// String txName = "updateOpenProperty :: " + id + " - " + newValue; +// TopiaContext tx = null; +// try { +// tx = beginTransaction(source, txName); +// OpenableEntity beanToSave = source.findByTopiaId(tx, id); +// beanToSave.setOpen(newValue); +// commitTransaction(source, tx, txName); +// } catch (TopiaException e) { +// throw new DataSourceException( +// "Can not update open state for " + id, e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// } @SuppressWarnings({"unchecked"}) @@ -2347,11 +2276,11 @@ public class DataService { pcs.removePropertyChangeListener(propertyName, listener); } - public void removePropertyChangeListeners() { - for (PropertyChangeListener listener : pcs.getPropertyChangeListeners()) { - removePropertyChangeListener(listener); - } - } +// public void removePropertyChangeListeners() { +// for (PropertyChangeListener listener : pcs.getPropertyChangeListeners()) { +// removePropertyChangeListener(listener); +// } +// } public <E extends TopiaEntity> void addReferentielPropertyChangeListener(Class<E> entitClass, PropertyChangeListener listener) { ObserveEntityEnum constant = ObserveEntityEnum.valueOf(entitClass); @@ -2360,11 +2289,11 @@ public class DataService { addPropertyChangeListener(propertyName, listener); } - public <E extends TopiaEntity> void addDataPropertyChangeListener(Class<E> entitClass, PropertyChangeListener listener) { - ObserveEntityEnum constant = ObserveEntityEnum.valueOf(entitClass); - String propertyName = getDataPropertyName(constant); - addPropertyChangeListener(propertyName, listener); - } +// public <E extends TopiaEntity> void addDataPropertyChangeListener(Class<E> entitClass, PropertyChangeListener listener) { +// ObserveEntityEnum constant = ObserveEntityEnum.valueOf(entitClass); +// String propertyName = getDataPropertyName(constant); +// addPropertyChangeListener(propertyName, listener); +// } public void removeReferentielPropertyChangeListeners() { for (ObserveEntityEnum constant : Entities.REFERENCE_ENTITIES) { @@ -2417,41 +2346,41 @@ public class DataService { return result.toArray(new PropertyChangeListener[result.size()]); } - protected void fireOpenChanged(DataSource source) { - - String propertyName = DataSource.OPEN_PROPERTY_KEY; - - if (log.isInfoEnabled()) { - log.info("Open context changed, will notifiy listeners [" + propertyName + "]..."); - } - - // obtain all opens ids - try { - - String[] ids = getOpenIds(source); - - String message = Arrays.toString(ids); - - PropertyChangeListener[] listeners = getPropertyChangeListener(propertyName); - if (listeners.length == 0) { - // pas de listener, on ne fait rien - - - if (log.isInfoEnabled()) { - log.info("Open context " + message + ", No listener, skip"); - } - return; - } - - PropertyChangeEvent event = new PropertyChangeEvent(this, propertyName, null, ids); - firePropertyChangedEvent(event, "Open context " + message + " changed", listeners); - - } catch (DataSourceException e) { - if (log.isErrorEnabled()) { - log.error("Could not fire open changed", e); - } - } - } +// public void fireOpenChanged(DataSource source) { +// +// String propertyName = DataSource.OPEN_PROPERTY_KEY; +// +// if (log.isInfoEnabled()) { +// log.info("Open context changed, will notifiy listeners [" + propertyName + "]..."); +// } +// +// // obtain all opens ids +// try { +// +// String[] ids = getOpenIds(source); +// +// String message = Arrays.toString(ids); +// +// PropertyChangeListener[] listeners = getPropertyChangeListener(propertyName); +// if (listeners.length == 0) { +// // pas de listener, on ne fait rien +// +// +// if (log.isInfoEnabled()) { +// log.info("Open context " + message + ", No listener, skip"); +// } +// return; +// } +// +// PropertyChangeEvent event = new PropertyChangeEvent(this, propertyName, null, ids); +// firePropertyChangedEvent(event, "Open context " + message + " changed", listeners); +// +// } catch (DataSourceException e) { +// if (log.isErrorEnabled()) { +// log.error("Could not fire open changed", e); +// } +// } +// } protected void fireReferentielChanged(DataSource source, ObserveEntityEnum... types) { for (ObserveEntityEnum constant : types) { @@ -2515,40 +2444,40 @@ public class DataService { } } - public void deleteTrip(DataSource source, String tripId) throws DataSourceException { - - String txName = "deleteTrip"; - TopiaContext tx = beginTransaction(source, txName); - try { - - if (Entities.isSeineId(tripId)) { - - TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); - TripSeine result = dao.findByTopiaId(tripId); - dao.delete(result); - - } else { - - TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); - TripLongline result = dao.findByTopiaId(tripId); - dao.delete(result); - - } - - skipTransactionListener = true; - try { - - commitTransaction(source, tx, txName); - - } finally { - skipTransactionListener = false; - } - - } catch (Exception e) { - throw new DataSourceException(e, txName); - } finally { - closeTransaction(source, tx, txName); - } - - } +// public void deleteTrip(DataSource source, String tripId) throws DataSourceException { +// +// String txName = "deleteTrip"; +// TopiaContext tx = beginTransaction(source, txName); +// try { +// +// if (Entities.isSeineId(tripId)) { +// +// TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); +// TripSeine result = dao.findByTopiaId(tripId); +// dao.delete(result); +// +// } else { +// +// TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); +// TripLongline result = dao.findByTopiaId(tripId); +// dao.delete(result); +// +// } +// +// skipTransactionListener = true; +// try { +// +// commitTransaction(source, tx, txName); +// +// } finally { +// skipTransactionListener = false; +// } +// +// } catch (Exception e) { +// throw new DataSourceException(e, txName); +// } finally { +// closeTransaction(source, tx, txName); +// } +// +// } } diff --git a/observe-business/src/main/java/fr/ird/observe/ObserveApplicationContext.java b/observe-business/src/main/java/fr/ird/observe/ObserveApplicationContext.java index dccc397..1e92b58 100644 --- a/observe-business/src/main/java/fr/ird/observe/ObserveApplicationContext.java +++ b/observe-business/src/main/java/fr/ird/observe/ObserveApplicationContext.java @@ -108,7 +108,7 @@ public class ObserveApplicationContext extends DefaultApplicationContext { return dataSource; } - public final void setDataSource(DataSource source) { + public void setDataSource(DataSource source) { if (source == null) { DATA_SOURCE_ENTRY_DEF.removeContextValue(this); } else { diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/longline/ActivityLonglineDAOImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/longline/ActivityLonglineDAOImpl.java index b3877f7..5b32193 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/longline/ActivityLonglineDAOImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/longline/ActivityLonglineDAOImpl.java @@ -37,6 +37,15 @@ import java.util.List; public class ActivityLonglineDAOImpl<E extends ActivityLongline> extends ActivityLonglineDAOAbstract<E> { + public int getActivityLonglinePosition(String tripId, String activityId) throws TopiaException { + + //FIXME Search direclty in the return list to avoid a sql query + E activity = findByTopiaId(activityId); + List<E> activities = findAllStubByTripId(tripId, ReferenceLocale.FR); + return activities.indexOf(activity); + + } + public List<E> findAllStubByTripId(String tripId, ReferenceLocale referenceLocale) throws TopiaException { List<E> result = StubSqlQuery.findAll(context, tripId, referenceLocale); diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineDAOImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineDAOImpl.java index 0d81ecf..fc50d37 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineDAOImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineDAOImpl.java @@ -37,6 +37,15 @@ import java.util.List; public class ActivitySeineDAOImpl<E extends ActivitySeine> extends ActivitySeineDAOAbstract<E> { + public int getActivitySeinePosition(String routeId, String activityId) throws TopiaException { + + //FIXME Search direclty in the return list to avoid a sql query + E activity = findByTopiaId(activityId); + List<E> activities = findAllStubByRouteId(routeId, ReferenceLocale.FR); + return activities.indexOf(activity); + + } + public List<E> findAllStubByRouteId(String routeId, ReferenceLocale referenceLocale) throws TopiaException { List<E> result = StubSqlQuery.findAll(context, routeId, referenceLocale); diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineImpl.java index 7093c52..7bfed7a 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/seine/ActivitySeineImpl.java @@ -30,6 +30,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.util.Arrays; +import java.util.Collections; import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -44,13 +45,15 @@ public class ActivitySeineImpl extends ActivitySeineAbstract { public static final String ACTIVITY_FIN_DE_VEILLE = "16"; - public static final String ACTIVITY_DEBUT_DE_PECHE = "7"; + public static final String ACTIVITY_DEBUT_DE_PECHE = "6"; - public static final String ACTIVITY_FIN_DE_PECHE = "6"; + public static final String ACTIVITY_DEBUT_DE_PECHE_ID = "fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.027011527426829218"; + + public static final String ACTIVITY_FIN_DE_PECHE = "7"; public static final String ACTIVITY_CHANGED_ZONE = "21"; - private static final List<String> CALEE_OPERATIONS = Arrays.asList(ACTIVITY_FIN_DE_PECHE); + private static final List<String> CALEE_OPERATIONS = Collections.singletonList(ACTIVITY_DEBUT_DE_PECHE_ID); private static final List<String> DCP_OPERATIONS = Arrays.asList("13", "14", "15"); @@ -58,7 +61,7 @@ public class ActivitySeineImpl extends ActivitySeineAbstract { public static final String PROPERTY_CHANGED_ZONE_OPERATION = "changedZoneOperation"; - public static final String PROPERTY_SET_OPERATION = "setOperation"; +// public static final String PROPERTY_SET_OPERATION = "setOperation"; /** * La valeur du quadrant (utilisé uniquement dans l'interface graphique) : @@ -90,7 +93,7 @@ public class ActivitySeineImpl extends ActivitySeineAbstract { /** @return {@code true} si l'activite concerne une calée */ @Override public boolean isSetOperation() { - return vesselActivitySeine != null && CALEE_OPERATIONS.contains(vesselActivitySeine.getCode()); + return vesselActivitySeine != null && CALEE_OPERATIONS.contains(vesselActivitySeine.getTopiaId()); } /** @return {@code true} si l'activite concerne un système observé */ @@ -148,7 +151,7 @@ public class ActivitySeineImpl extends ActivitySeineAbstract { @Override public boolean isActivityFinDePeche() { - return vesselActivitySeine != null && ACTIVITY_DEBUT_DE_PECHE.equals(vesselActivitySeine.getCode()); + return vesselActivitySeine != null && ACTIVITY_FIN_DE_PECHE.equals(vesselActivitySeine.getCode()); } @Override diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/seine/RouteDAOImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/seine/RouteDAOImpl.java index 0858904..8c16e1c 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/seine/RouteDAOImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/seine/RouteDAOImpl.java @@ -34,6 +34,16 @@ import java.util.List; public class RouteDAOImpl<E extends Route> extends RouteDAOAbstract<E> { + public int getRoutePosition(String tripId, String routeId) throws TopiaException { + + TripSeine maree = context.getDAO(TripSeine.class).findByTopiaId(tripId); + Route route = maree.getRouteByTopiaId(routeId); + List<Route> routes = maree.getRoute(); + Routes.sort(routes); + return routes.indexOf(route); + + } + public List<E> findAllStubByTripId(String tripSeineId) throws TopiaException { List<E> result = StubSqlQuery.findAll(context, tripSeineId); diff --git a/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java b/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java index cadd7ac..b15a574 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java +++ b/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java @@ -1,51 +1,198 @@ package fr.ird.observe.services; -import fr.ird.observe.db.DataSource; +import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import fr.ird.observe.BinderService; +import fr.ird.observe.IObserveConfig; +import fr.ird.observe.ObserveEntityEnum; +import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.entities.Entities; +import fr.ird.observe.entities.EntityMap; +import fr.ird.observe.entities.constants.ReferenceLocale; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com + * @since 4.0 */ -public abstract class AbstractObserveService<E extends TopiaEntity> { - - protected final DataSource dataSource; - - protected final Class<E> entityClass; - - protected abstract TopiaDAO<E> getDao(TopiaContext tx) throws TopiaException; - - protected AbstractObserveService(Class<E> entityClass, DataSource dataSource) { - this.dataSource = dataSource; - this.entityClass = entityClass; - } - -// public E create(E entity) { -// try { -// TopiaContext topiaContext = dataSource.beginTransaction("create entity"); -// -// TopiaDAO<E> dao = ObserveDAOHelper.getDAO(topiaContext, entityClass); -// -// topiaContext.commitTransaction(); -// -// } catch (DataSourceException e) { -// e.printStackTrace(); -// } catch (TopiaException e) { -// e.printStackTrace(); -// } finally { -// -// } -// -// }; -// -// public abstract void update(E entity); -// -// public abstract E findById(String id); -// -// public abstract void delete(E entity); +public abstract class AbstractObserveService implements ObserveService { + + /** Logger. */ + private static final Log log = LogFactory.getLog(AbstractObserveService.class); + + protected ObserveServiceContext serviceContext; + + @Override + public void setServiceContext(ObserveServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + @Override + public <E extends TopiaEntity> EntityMap findAllUsages(E entity) { + + Class<E> entityType = (Class<E>) ObserveEntityEnum.valueOf(entity).getContract(); + + TopiaDAO<E> dao = getDao(entityType); + + // always get a fresh version of object + entity = dao.findByTopiaId(entity.getTopiaId()); + EntityMap result; + result = new EntityMap(dao.findAllUsages(entity)); + // on charge les entites + for (Class<? extends TopiaEntity> aClass : result.keySet()) { + + List topiaEntities = result.get(aClass); + decorate(aClass, topiaEntities); + + } + return result; + + } + + @Override + public <E extends TopiaEntity> List<E> getList(Class<E> klass) { + + List<E> list = getList(klass, null); + return list; + } + + @Override + public <E extends TopiaEntity> List<E> getList(Class<E> klass, Predicate<E> predicate) { + + if (Entities.isDataClass(klass)) { + // on verifie que l'on a le droit de lire la donnee + if (!serviceContext.getDataSource().canReadData()) { + if (log.isDebugEnabled()) { + log.debug("Can not read data, no read credential"); + } + return new ArrayList<E>(); + } + } + + if (Entities.isReferentielClass(klass)) { + // on verifie que l'on a le droit de lire la donnee + if (!serviceContext.getDataSource().canReadReferentiel()) { + if (log.isDebugEnabled()) { + log.debug("Can not read referentiel, no read credential"); + } + return new ArrayList<E>(); + } + } + + List<E> result = getList0(klass, predicate); + + //TC-20100208 : on peut modifier la liste (pour supprimer par + // exemple les entites non active), on doit donc toujours travailler + // sur une copie de la liste + return new ArrayList<E>(result); + + } + + @Override + public void close() { + //TODO + } + + public TopiaContext getTransaction() { + return serviceContext.getTransaction(); + } + + public IObserveConfig getConfig() { + return serviceContext.getConfig(); + } + + public ReferenceLocale getReferentielLocale() { + return serviceContext.getReferentielLocale(); + } + + public Date now() { + return serviceContext.now(); + } + + protected <E extends TopiaEntity> TopiaDAO<E> getDao(Class<E> entityType) { + return serviceContext.getDataSource().getDAO(getTransaction(), entityType); + } + protected <E extends TopiaEntity> E findByTopiaId(Class<E> entityType, String topiaId) { + TopiaDAO<E> dao = serviceContext.getDataSource().getDAO(getTransaction(), entityType); + return dao.findByTopiaId(topiaId); + + } + + protected <O> Decorator<O> getDecoratorByType(Class<O> entityType, String context) { + return serviceContext.getDecoratorService().getDecoratorByType(entityType, context); + } + + + protected <O> void decorate(Class<O> objectType, Collection<O> objects) { + + Decorator<O> decorator = getDecoratorByType(objectType, null); + for (Object object : objects) { + decorator.toString(object); + } + + } + + protected <O> void decorate(Class<O> objectType, O object) { + + Decorator<O> decorator = getDecoratorByType(objectType, null); + decorator.toString(object); + + } + + protected <E extends TopiaEntity> List<E> getList0(Class<E> klass, Predicate<E> predicate) { + + TopiaDAO<E> dao = getDao(klass); + List<E> result = dao.findAll(); + + if (predicate != null) { + + // use a filter + result = Lists.newArrayList(Iterables.filter(result, predicate)); + + } + + return result; + + } + + + protected <E extends TopiaEntity> TopiaEntityBinder<E> loadBinder(String suffix, Class<E> entityType, CreateBinder<E> createBinder) { + + BinderService binderService = ObserveServiceHelper.get().getBinderService(); + + String binderName = getClass().getName() + suffix; + TopiaEntityBinder<E> r = binderService.getTopiaBinder(entityType, binderName); + + if (r == null) { + + BinderModelBuilder<E, E> builder = createBinder.createBinderBuilder(binderService, binderName); + r = binderService.registerTopiaBinder(entityType, builder, binderName); + + } + + return r; + + } + + protected interface CreateBinder<E extends TopiaEntity> { + + BinderModelBuilder<E, E> createBinderBuilder(BinderService binderService, String name); + + } } diff --git a/observe-services/src/main/java/fr/ird/observe/services/Commit.java b/observe-services/src/main/java/fr/ird/observe/services/Commit.java new file mode 100644 index 0000000..f99b536 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/Commit.java @@ -0,0 +1,19 @@ +package fr.ird.observe.services; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Place this on every method that need a commit. + * + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Commit { +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/Longline/TripLonglineServiceImp.java b/observe-services/src/main/java/fr/ird/observe/services/Longline/TripLonglineServiceImp.java deleted file mode 100644 index 1c03529..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/Longline/TripLonglineServiceImp.java +++ /dev/null @@ -1,66 +0,0 @@ -package fr.ird.observe.services.Longline; - -import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.ObserveTechnicalException; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; -import fr.ird.observe.entities.longline.TripLongline; -import fr.ird.observe.entities.longline.TripLonglineDAO; -import fr.ird.observe.services.AbstractObserveService; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; - -/** - * @author Sylvain Bavencoff - bavencoff@codelutin.com - */ -public class TripLonglineServiceImp extends AbstractObserveService<TripLongline> { - - public TripLonglineServiceImp(DataSource dataSource) { - super(TripLongline.class, dataSource); - } - - @Override - protected TopiaDAO<TripLongline> getDao(TopiaContext tx) throws TopiaException { - return ObserveDAOHelper.getTripLonglineDAO(tx); - } - -// @Override - public TripLongline create(TripLongline entity) { - try { - TopiaContext topiaContext = dataSource.beginTransaction("create TripLongline"); - - TripLonglineDAO dao = ObserveDAOHelper.getTripLonglineDAO(topiaContext); - - entity = dao.create(entity); - - } catch (DataSourceException e) { - throw new ObserveTechnicalException("unable to create tripLongLine", e); - } catch (TopiaException e) { - throw new ObserveTechnicalException("unable to create tripLongLine", e); - } - - return entity; - } - -// @Override - public void update(TripLongline entity) { - - getLoadBinder().copyExcluding(getBean(), beanToSave, TripLongline.PROPERTY_ACTIVITY_LONGLINE); - - return beanToSave; - - } - -// @Override - public TripLongline findById(String id) { - return null; - } - -// @Override - public void delete(TripLongline entity) { - TopiaDAO<TripLongline> dao = getDataSource().getDAO(tx, TripLongline.class); - dao.delete(beanToDelete); - - } -} diff --git a/observe-services/src/main/java/fr/ird/observe/services/NoTransaction.java b/observe-services/src/main/java/fr/ird/observe/services/NoTransaction.java new file mode 100644 index 0000000..fc34b8e --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/NoTransaction.java @@ -0,0 +1,19 @@ +package fr.ird.observe.services; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Place this on every method that do not need a transaction. + * + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface NoTransaction { +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/ObserveService.java b/observe-services/src/main/java/fr/ird/observe/services/ObserveService.java new file mode 100644 index 0000000..27e9ac4 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/ObserveService.java @@ -0,0 +1,27 @@ +package fr.ird.observe.services; + + +import com.google.common.base.Predicate; +import fr.ird.observe.entities.EntityMap; +import org.nuiton.topia.persistence.TopiaEntity; + +import java.io.Closeable; +import java.util.List; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface ObserveService extends Closeable { + + <E extends TopiaEntity> EntityMap findAllUsages(E entity); + + <E extends TopiaEntity> List<E> getList(Class<E> klass) ; + + <E extends TopiaEntity> List<E> getList(Class<E> klass, Predicate<E> predicate) ; + + void setServiceContext(ObserveServiceContext serviceContext); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceContext.java b/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceContext.java new file mode 100644 index 0000000..a837b4c --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceContext.java @@ -0,0 +1,76 @@ +package fr.ird.observe.services; + +import fr.ird.observe.DecoratorService; +import fr.ird.observe.IObserveConfig; +import fr.ird.observe.ObserveApplicationContext; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.entities.constants.ReferenceLocale; +import org.nuiton.topia.TopiaContext; + +import java.util.Date; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ObserveServiceContext { + + /** + * Configuration. + */ + protected final IObserveConfig config; + + /** + * Data Source. + */ + protected final DataSource dataSource; + + protected final DecoratorService decoratorService; + + /** + * Current transaction. + */ + protected TopiaContext transaction; + + /** + * Application context. + */ + protected ObserveApplicationContext applicationContext; + + public ObserveServiceContext(ObserveApplicationContext applicationContext, DataSource dataSource) { + this.applicationContext=applicationContext; + this.config = applicationContext.getConfig(); + this.dataSource = dataSource; + this.decoratorService = applicationContext.getDecoratorService(); + } + + public TopiaContext getTransaction() { + return transaction; + } + + public IObserveConfig getConfig() { + return config; + } + + public ReferenceLocale getReferentielLocale() { + return applicationContext.getDecoratorService().getReferentielLocale(); + } + + public Date now() { + return new Date(); + } + + public DecoratorService getDecoratorService() { + return decoratorService; + } + + protected void setTransaction(TopiaContext transaction) { + this.transaction = transaction; + } + + protected DataSource getDataSource() { + return dataSource; + } +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java b/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java index af151ad..fc2b3b5 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java +++ b/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java @@ -1,11 +1,27 @@ package fr.ird.observe.services; import com.google.common.base.Preconditions; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.Sets; +import fr.ird.observe.ObserveApplicationContext; import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.event.DataSourceEvent; -import fr.ird.observe.db.event.DataSourceListenerAdapter; +import fr.ird.observe.db.DataSourceException; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.reflect.ConstructorUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaContext; + +import java.io.Closeable; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.Set; +import java.util.concurrent.ExecutionException; /** * Created on 4/24/15. @@ -13,35 +29,214 @@ import org.apache.commons.lang3.reflect.ConstructorUtils; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class ObserveServiceFactory { +public class ObserveServiceFactory implements Closeable { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ObserveServiceFactory.class); + + protected final ObserveApplicationContext applicationContext; + + protected DataSource dataSource; + + protected final LoadingCache<Class<? extends ObserveService>, ObserveService> services; + + public static ObserveServiceFactory newFactory(ObserveApplicationContext applicationContext) { + return new ObserveServiceFactory(applicationContext); + } + + public static ObserveServiceFactory newFactory(ObserveApplicationContext applicationContext, DataSource dataSource) { + ObserveServiceFactory factory = newFactory(applicationContext); + factory.setDataSource(dataSource); + return factory; + } + + protected ObserveServiceFactory(ObserveApplicationContext applicationContext) { + this.applicationContext = applicationContext; + this.services = CacheBuilder.newBuilder().build(new CacheLoader<Class<? extends ObserveService>, ObserveService>() { + @Override + public ObserveService load(Class<? extends ObserveService> key) throws Exception { + Preconditions.checkNotNull(key, "service key can't be null"); + Preconditions.checkNotNull(dataSource, "can't ask a service if not datasource is setted"); + ObserveService service = createService(key, ObserveServiceFactory.this.applicationContext, ObserveServiceFactory.this.dataSource); + if (log.isDebugEnabled()) { + log.debug("New service " + service); + } + + return service; + } + }); + } + + public DataSource getDataSource() { + return dataSource; + } + + public void setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + } + + public <S extends ObserveService> S getService(Class<S> serviceType) { + if (serviceType == null) { + return null; + } + try { + S s = (S) services.get(serviceType); + return s; + } catch (ExecutionException e) { + throw new ObserveTechnicalException("Could not get service: " + serviceType, e); + } + } + + public void clear() { + services.invalidateAll(); + } - public static <S> S createService(Class<S> serviceType, DataSource dataSource) { + @Override + public void close() { + + for (ObserveService service : services.asMap().values()) { + if (log.isDebugEnabled()) { + log.debug("Close service " + service); + } + IOUtils.closeQuietly(service); + } + services.invalidateAll(); + } + + protected <S extends ObserveService> S createService(Class<S> serviceType, ObserveApplicationContext applicationContext, DataSource dataSource) { Preconditions.checkNotNull(serviceType, "serviceType can't be null"); - Preconditions.checkNotNull(dataSource, "dataSource can't be null"); + Preconditions.checkArgument(serviceType.isInterface(), "serviceType must be an interface"); + Preconditions.checkNotNull(applicationContext, "applicationContext can't be null"); + + ObserveServiceContext serviceContext = new ObserveServiceContext(applicationContext, dataSource); + + S service = newService(serviceType, serviceContext); + return service; + + } + + protected <S extends ObserveService> S createService(Class<S> serviceType, ObserveServiceContext serviceContext) { + + Preconditions.checkNotNull(serviceType, "serviceType can't be null"); + Preconditions.checkArgument(serviceType.isInterface(), "serviceType must be an interface"); + Preconditions.checkNotNull(serviceContext, "serviceContext can't be null"); + + S service = newService(serviceType, serviceContext); + return service; + + } + + protected <S extends ObserveService> S newService(Class<S> serviceType, ObserveServiceContext serviceContext) { + + Class<S> serviceImpl; + try { + //FIXME Cela devrait dépendre de la datasource ? + serviceImpl = (Class<S>) Class.forName(serviceType.getName() + "Impl"); + } catch (ClassNotFoundException e) { + throw new IllegalStateException("Could not find implementation class for " + serviceType); + } try { - S service = ConstructorUtils.invokeConstructor(serviceType, dataSource); + // Instanciate concrete service + S service = ConstructorUtils.invokeConstructor(serviceImpl); + service.setServiceContext(serviceContext); - //FIXME On peut ajouter un état au service pour savoir si la dataSource est encore accessible... - dataSource.addDataSourceListener(new DataSourceListenerAdapter() { - @Override - public void onClosed(DataSourceEvent event) { + // Instanciate transactional proxied service + ServiceInvocationHandler invocationHandler = new ServiceInvocationHandler(serviceContext, service); + S proxyService = (S) Proxy.newProxyInstance(ObserveServiceFactory.class.getClassLoader(), new Class[]{serviceType}, invocationHandler); + + return proxyService; + + } catch (Exception e) { + throw new ObserveTechnicalException("Could not create service: " + serviceType, e); + } + + } + + protected static class ServiceInvocationHandler implements InvocationHandler { + + private final ObserveServiceContext serviceContext; + + private final ObserveService target; + + private final Set<String> methodNamesToByPass; + + protected ServiceInvocationHandler(ObserveServiceContext serviceContext, ObserveService target) { + this.serviceContext = serviceContext; + this.target = target; + this.methodNamesToByPass = Sets.newHashSet( + "equals", + "hashCode", + "finalize", + "toString", + "clone", + "getClass" + ); + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + + Object result; + + if (methodNamesToByPass.contains(method.getName())) { + + result = method.invoke(target, args); + + } else { + + result = invokeMethodWithTransaction(method, args); + + } + + return result; + + } + + protected Object invokeMethodWithTransaction(Method method, Object... args) throws DataSourceException, IllegalAccessException, InvocationTargetException { + + String methodName = method.getName(); + + DataSource source = serviceContext.getDataSource(); + + TopiaContext tx = source.beginTransaction(methodName); + + try { + + serviceContext.setTransaction(tx); + + Object invoke = method.invoke(target, args); + + if (method.isAnnotationPresent(Commit.class)) { + + // do commit + source.commitTransaction(tx, methodName); } - @Override - public void onOpened(DataSourceEvent event) { + return invoke; + + } finally { + + try { + + // always rollback transaction to avoid dirty transactions + source.rollbackTransaction(tx, methodName); + + + } finally { + + serviceContext.setTransaction(null); + source.closeTransaction(tx, methodName); } - }); - return service; + } - } catch (Exception e) { - throw new ObserveTechnicalException("Could not create service: " + serviceType, e); } } + } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/OpenableService.java b/observe-services/src/main/java/fr/ird/observe/services/data/OpenableService.java new file mode 100644 index 0000000..01bef8c --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/OpenableService.java @@ -0,0 +1,25 @@ +package fr.ird.observe.services.data; + +import fr.ird.observe.entities.OpenableEntity; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.TopiaEntity; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface OpenableService extends ObserveService { + + String[] getOpenIds(); + + <E extends OpenableEntity & TopiaEntity> E getOpen(Class<E> klass); + + @Commit + void updateOpenState(String topiaId, boolean openState); + + int getOpenablePosition(String containerId, String childId); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/OpenableServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/OpenableServiceImpl.java new file mode 100644 index 0000000..ec1f06f --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/OpenableServiceImpl.java @@ -0,0 +1,157 @@ +package fr.ird.observe.services.data; + +import fr.ird.observe.entities.OpenableEntity; +import fr.ird.observe.entities.OpenableEntityDAOImpl; +import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.entities.longline.ActivityLonglineDAO; +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.longline.TripLonglineDAO; +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.entities.seine.ActivitySeineDAO; +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.entities.seine.RouteDAO; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.entities.seine.TripSeineDAO; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.TopiaEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class OpenableServiceImpl extends AbstractObserveService implements OpenableService { + + @Override + public String[] getOpenIds() { + + List<String> result = new ArrayList<String>(); + + { + TripSeine trip = getOpen(TripSeine.class); + if (trip != null) { + if (trip.getProgram() != null) { + result.add(trip.getProgram().getTopiaId()); + } + result.add(trip.getTopiaId()); + Route route = getOpen(Route.class); + if (route != null) { + result.add(route.getTopiaId()); + ActivitySeine activity = getOpen(ActivitySeine.class); + if (activity != null) { + result.add(activity.getTopiaId()); + SetSeine set = activity.getSetSeine(); + if (set != null) { + result.add(set.getTopiaId()); + } + } + } + } + } + + { + TripLongline trip = getOpen(TripLongline.class); + if (trip != null) { + if (trip.getProgram() != null) { + result.add(trip.getProgram().getTopiaId()); + } + result.add(trip.getTopiaId()); + ActivityLongline activity = getOpen(ActivityLongline.class); + if (activity != null) { + result.add(activity.getTopiaId()); + SetLongline set = activity.getSetLongline(); + if (set != null) { + result.add(set.getTopiaId()); + } + } + } + } + + return result.toArray(new String[result.size()]); + + } + + @Override + public <E extends OpenableEntity & TopiaEntity> E getOpen(Class<E> klass) { + + OpenableEntityDAOImpl dao = (OpenableEntityDAOImpl) getDao(klass); + E result = (E) dao.findByOpen(true); + return result; + + } + + @Override + public void updateOpenState(String topiaId, boolean openState) { + + OpenableEntity entity = findByTopiaId(OpenableEntity.class, topiaId); + entity.setOpen(openState); + + } + + public int getOpenablePosition(String containerId, String childId) { + if (childId.startsWith(TripSeine.class.getName())) { + return getTripSeinePosition(containerId, childId); + } + if (childId.startsWith(TripLongline.class.getName())) { + return getTripLonglinePosition(containerId, childId); + } + if (childId.startsWith(Route.class.getName())) { + return getRoutePosition(containerId, childId); + } + if (childId.startsWith(ActivitySeine.class.getName())) { + return getActivitySeinePosition(containerId, childId); + } + if (childId.startsWith(ActivityLongline.class.getName())) { + return getActivityLonglinePosition(containerId, childId); + } + throw new IllegalStateException("Can not come here!"); + } + + protected int getTripLonglinePosition(String programId, String tripLonglineId) { + + TripLonglineDAO dao = (TripLonglineDAO) getDao(TripLongline.class); + int pos = dao.findPositionByProgramId(programId, tripLonglineId); + return pos; + + } + + protected int getActivityLonglinePosition(String tripLonglineId, String activityLonglineId) { + + ActivityLonglineDAO dao = (ActivityLonglineDAO) getDao(ActivityLongline.class); + int pos = dao.getActivityLonglinePosition(tripLonglineId, activityLonglineId); + return pos; + + } + + protected int getTripSeinePosition(String programId, String tripSeineId) { + + TripSeineDAO dao = (TripSeineDAO) getDao(TripSeine.class); + int pos = dao.findPositionByProgramId(programId, tripSeineId); + return pos; + + } + + protected int getRoutePosition(String tripSeineId, String routeId) { + + RouteDAO dao = (RouteDAO) getDao(Route.class); + int position = dao.getRoutePosition(tripSeineId, routeId); + return position; + + } + + + protected int getActivitySeinePosition(String routeId, String activitySeineId) { + + ActivitySeineDAO dao = (ActivitySeineDAO) getDao(ActivitySeine.class); + int pos = dao.getActivitySeinePosition(routeId, activitySeineId); + return pos; + + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/TripService.java b/observe-services/src/main/java/fr/ird/observe/services/data/TripService.java new file mode 100644 index 0000000..9595f78 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/TripService.java @@ -0,0 +1,31 @@ +package fr.ird.observe.services.data; + +import fr.ird.observe.entities.referentiel.Ocean; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.tripMap.TripMapPoint; + +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface TripService extends ObserveService { + + List<Program> getPossibleProgramsForTrip(String tripId); + + Ocean getTripOcean(String tripId); + + List<TripMapPoint> loadTripMapActivityPoints(String tripId); + + @Commit + void moveTripToProgram(String tripId, String programId); + + @Commit + void deleteTrip(String tripId); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/TripServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/TripServiceImpl.java new file mode 100644 index 0000000..e50203d --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/TripServiceImpl.java @@ -0,0 +1,134 @@ +package fr.ird.observe.services.data; + +import fr.ird.observe.ObserveTechnicalException; +import fr.ird.observe.entities.Entities; +import fr.ird.observe.entities.Trip; +import fr.ird.observe.entities.constants.GearType; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.longline.TripLonglineDAO; +import fr.ird.observe.entities.referentiel.Ocean; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.entities.referentiel.ProgramDAO; +import fr.ird.observe.entities.referentiel.Programs; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.entities.seine.TripSeineDAO; +import fr.ird.observe.services.AbstractObserveService; +import fr.ird.observe.tripMap.TripMapPoint; + +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class TripServiceImpl extends AbstractObserveService implements TripService { + + @Override + public List<Program> getPossibleProgramsForTrip(String tripId) { + + Trip trip; + + if (tripId.startsWith(TripSeine.class.getSimpleName())) { + trip = findByTopiaId(TripSeine.class, tripId); + } else { + trip = findByTopiaId(TripLongline.class, tripId); + } + + GearType gearType = trip.getProgram().getGearType(); + + ProgramDAO dao = (ProgramDAO) getDao(Program.class); + + List<Program> programs = dao.findAllByGearType(gearType); + + decorate(Program.class, programs); + + Programs.sort(programs); + + return programs; + + } + + @Override + public Ocean getTripOcean(String tripId) { + + Trip trip; + + if (tripId.startsWith(TripSeine.class.getSimpleName())) { + trip = findByTopiaId(TripSeine.class, tripId); + } else { + trip = findByTopiaId(TripLongline.class, tripId); + } + + return trip.getOcean(); + + } + + @Override + public void moveTripToProgram(String tripId, String programId) { + + Trip trip; + + if (tripId.startsWith(TripSeine.class.getSimpleName())) { + trip = findByTopiaId(TripSeine.class, tripId); + } else { + trip = findByTopiaId(TripLongline.class, tripId); + } + + Program program = findByTopiaId(Program.class, programId); + + trip.setProgram(program); + +// if (trip.isOpen()) { +// +// // refresh the dataContext +// dataContext.setOpenProgramId(programId); +// +// } + + } + + @Override + public List<TripMapPoint> loadTripMapActivityPoints(String tripId) { + + List<TripMapPoint> tripMapPoints; + + if (Entities.isSeineId(tripId)) { + TripSeineDAO dao = (TripSeineDAO) getDao(TripSeine.class); + + tripMapPoints = dao.extractTripMapActivityPoints(tripId); + + } else if (Entities.isLonglineId(tripId)) { + + TripLonglineDAO dao = (TripLonglineDAO) getDao(TripLongline.class); + + tripMapPoints = dao.extractTripMapActivityPoints(tripId); + + } else { + throw new ObserveTechnicalException(String.format("id '%s' is not seine id or longe line id", tripId)); + } + + return tripMapPoints; + + } + + @Override + public void deleteTrip(String tripId) { + + if (Entities.isSeineId(tripId)) { + + TripSeineDAO dao = (TripSeineDAO) getDao(TripSeine.class); + TripSeine result = dao.findByTopiaId(tripId); + dao.delete(result); + + } else { + + TripLonglineDAO dao = (TripLonglineDAO) getDao(TripLongline.class); + TripLongline result = dao.findByTopiaId(tripId); + dao.delete(result); + + } + + } +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java new file mode 100644 index 0000000..ed6fbfa --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java @@ -0,0 +1,41 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface ActivityLonglineService extends ObserveService { + + ActivityLongline getActivityLonglineStub(String activityId); + + List<ActivityLongline> getActivityLonglineStubByTrip(String tripId); + + ActivityLongline loadForDisplay(String activityLonglineId); + + ActivityLongline loadForEdit(String activityLonglineId); + + ActivityLongline preCreate(String tripLonglineId); + + @Commit + ActivityLongline save(String tripLonglineId, ActivityLongline toSave); + + @Commit + void delete(String tripLonglineId, String activityLonglineId); + + @NoTransaction + TopiaEntityBinder<ActivityLongline> getBinderForEdit(); + + @NoTransaction + void copyForEdit(ActivityLongline source, ActivityLongline target); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineServiceImpl.java new file mode 100644 index 0000000..d25a0e2 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineServiceImpl.java @@ -0,0 +1,206 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.entities.longline.ActivityLonglineDAO; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ActivityLonglineServiceImpl extends AbstractObserveService implements ActivityLonglineService { + + @Override + public List<ActivityLongline> getActivityLonglineStubByTrip(String tripId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + List<ActivityLongline> result = getDao().findAllStubByTripId(tripId, referentielLocale); + return result; + + } + + @Override + public ActivityLongline getActivityLonglineStub(String activityId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + ActivityLongline result = getDao().findStubByTopiaId(activityId, referentielLocale); + return result; + + } + + @Override + public ActivityLongline loadForDisplay(String activityLonglineId) { + + ActivityLongline loaded = getDao().newInstance(); + ActivityLongline toLoad = getDao().findByTopiaId(activityLonglineId); + copyForEdit(toLoad, loaded); + + return loaded; + + } + + @Override + public ActivityLongline loadForEdit(String activityLonglineId) { + return loadForDisplay(activityLonglineId); + } + + + + @Override + public ActivityLongline preCreate(String tripLonglineId) { + + TripLongline tripLongline = findByTopiaId(TripLongline.class, tripLonglineId); + + ActivityLongline preCreated = getDao().newInstance(); + + preCreated.setOpen(true); + + ActivityLongline lastActivityLongline = tripLongline.getLastActivity(); + + Date timestamp; + + if (lastActivityLongline == null) { + + // première activité, on utilise la date de début de marée (voir http://forge.codelutin.com/issues/6777) + Calendar calendar = Calendar.getInstance(); + calendar.setTime(tripLongline.getStartDate()); + timestamp = calendar.getTime(); + + } else { + + // passage en coordonnées absolue + quadrant + lastActivityLongline.initCoordinates(); + + // on recupère le quadrant de cette activity + // et on l'affecte à la nouvelle activity + Integer quadrant = lastActivityLongline.getQuadrant(); + + preCreated.setQuadrant(quadrant); + + // on reprend la date et l'heure de la dernière activité + timestamp = lastActivityLongline.getTimeStamp(); + } + + preCreated.setTimeStamp(timestamp); + + + return preCreated; + + } + + @Override + public ActivityLongline save(String tripLonglineId, ActivityLongline toSave) { + + ActivityLongline saved; + + if (toSave.getTopiaId() == null) { + + // create + saved = create(tripLonglineId, toSave); + + } else { + + // update + saved = update(toSave); + + } + + return saved; + + } + + @Override + public void delete(String tripLonglineId, String activityLonglineId) { + + ActivityLonglineDAO dao = getDao(); + ActivityLongline toDelete = dao.findByTopiaId(activityLonglineId); + + TripLongline tripLongline = findByTopiaId(TripLongline.class, tripLonglineId); + tripLongline.removeActivityLongline(toDelete); + + } + + @Override + public TopiaEntityBinder<ActivityLongline> getBinderForEdit() { + + TopiaEntityBinder<ActivityLongline> binder = loadBinder("-forEdit", ActivityLongline.class, new CreateBinder<ActivityLongline>() { + + @Override + public BinderModelBuilder<ActivityLongline, ActivityLongline> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<ActivityLongline, ActivityLongline> builder = binderService.newBinderBuilder( + ActivityLongline.class, + ActivityLongline.PROPERTY_QUADRANT, + ActivityLongline.PROPERTY_LATITUDE, + ActivityLongline.PROPERTY_LONGITUDE, + ActivityLongline.PROPERTY_TIME_STAMP, + ActivityLongline.PROPERTY_SEA_SURFACE_TEMPERATURE, + ActivityLongline.PROPERTY_COMMENT, + ActivityLongline.PROPERTY_SET_LONGLINE, + ActivityLongline.PROPERTY_VESSEL_ACTIVITY_LONGLINE, + ActivityLongline.PROPERTY_FPA_ZONE, + ActivityLongline.PROPERTY_OPEN, + ActivityLongline.PROPERTY_ENCOUNTER, + ActivityLongline.PROPERTY_SENSOR_USED); + + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, ActivityLongline.PROPERTY_ENCOUNTER); + + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, ActivityLongline.PROPERTY_SENSOR_USED); + + return builder; + + } + + }); + + return binder; + + } + + @Override + public void copyForEdit(ActivityLongline source, ActivityLongline target) { + + getBinderForEdit().load(source, target, true); + + } + + protected ActivityLongline create(String tripLonglineId, ActivityLongline toCreate) { + + ActivityLonglineDAO dao = getDao(); + ActivityLongline created = dao.create(toCreate); + + TripLongline tripLongline = findByTopiaId(TripLongline.class, tripLonglineId); + tripLongline.addActivityLongline(created); + + return created; + + } + + protected ActivityLongline update(ActivityLongline toUpdate) { + + ActivityLonglineDAO dao = getDao(); + ActivityLongline updated = dao.findByTopiaId(toUpdate.getTopiaId()); + getBinderForEdit().copyExcluding(toUpdate, updated, + ActivityLongline.PROPERTY_ENCOUNTER, + ActivityLongline.PROPERTY_SENSOR_USED); + return updated; + + } + + protected ActivityLonglineDAO getDao() { + return (ActivityLonglineDAO) getDao(ActivityLongline.class); + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java new file mode 100644 index 0000000..a3cb5bc --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java @@ -0,0 +1,42 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.Branchline; +import fr.ird.observe.entities.longline.SizeMeasure; +import fr.ird.observe.entities.longline.WeightMeasure; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface CatchLonglineService extends ObserveService { + + Branchline loadBranchlineForEdit(String branchelineId); + + @Commit + Branchline saveBranchline(Branchline toSave); + + List<SizeMeasure> getCatchLonglineSizeMeasures(String catchLonglineId); + + List<WeightMeasure> getCatchLonglineWeightMeasures(String catchLonglineId); + + @NoTransaction + TopiaEntityBinder<WeightMeasure> getWeightMeasureBinderForEdit(); + + @NoTransaction + TopiaEntityBinder<SizeMeasure> getSizeMeasureBinderForEdit(); + + @NoTransaction + TopiaEntityBinder<Branchline> getBranchlineBinderForEdit(); + + @NoTransaction + void copyBranchlineForEdit(Branchline source, Branchline target); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineServiceImpl.java new file mode 100644 index 0000000..e5777f6 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineServiceImpl.java @@ -0,0 +1,136 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.BinderService; +import fr.ird.observe.ObserveBinderHelper; +import fr.ird.observe.entities.longline.Branchline; +import fr.ird.observe.entities.longline.BranchlineDAO; +import fr.ird.observe.entities.longline.CatchLongline; +import fr.ird.observe.entities.longline.CatchLonglineDAO; +import fr.ird.observe.entities.longline.SizeMeasure; +import fr.ird.observe.entities.longline.SizeMeasureImpl; +import fr.ird.observe.entities.longline.WeightMeasure; +import fr.ird.observe.entities.longline.WeightMeasureImpl; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class CatchLonglineServiceImpl extends AbstractObserveService implements CatchLonglineService { + + @Override + public Branchline loadBranchlineForEdit(String branchelineId) { + + BranchlineDAO dao = (BranchlineDAO) getDao(Branchline.class); + Branchline toLoad = dao.findByTopiaId(branchelineId); + Branchline loaded = dao.newInstance(); + getBranchlineBinderForEdit().load(toLoad, loaded, true); + return loaded; + + } + + @Override + public Branchline saveBranchline(Branchline toSave) { + + BranchlineDAO dao = (BranchlineDAO) getDao(Branchline.class); + Branchline saved = dao.findByTopiaId(toSave.getTopiaId()); + getBranchlineBinderForEdit().load(toSave, saved, true); + return saved; + + } + + @Override + public void copyBranchlineForEdit(Branchline source, Branchline target) { + + getBranchlineBinderForEdit().load(source, target, true); + + } + + @Override + public List<SizeMeasure> getCatchLonglineSizeMeasures(String catchLonglineId) { + + TopiaEntityBinder<SizeMeasure> binder = getSizeMeasureBinderForEdit(); + + CatchLongline catchLongline = getDao().findByTopiaId(catchLonglineId); + List<SizeMeasure> result = new ArrayList<SizeMeasure>(); + for (SizeMeasure sizeSource : catchLongline.getSizeMeasure()) { + SizeMeasure target = new SizeMeasureImpl(); + binder.load(sizeSource, target, true); + result.add(target); + } + return result; + + } + + @Override + public List<WeightMeasure> getCatchLonglineWeightMeasures(String catchLonglineId) { + + TopiaEntityBinder<WeightMeasure> binder = getWeightMeasureBinderForEdit(); + + CatchLongline catchLongline = getDao().findByTopiaId(catchLonglineId); + List<WeightMeasure> result = new ArrayList<WeightMeasure>(); + for (WeightMeasure weightSource : catchLongline.getWeightMeasure()) { + WeightMeasure target = new WeightMeasureImpl(); + binder.load(weightSource, target, true); + result.add(target); + } + + return result; + + } + + @Override + public TopiaEntityBinder<WeightMeasure> getWeightMeasureBinderForEdit() { + + TopiaEntityBinder<WeightMeasure> r = ObserveBinderHelper.getSimpleTopiaBinder(WeightMeasure.class); + return r; + + } + + @Override + public TopiaEntityBinder<SizeMeasure> getSizeMeasureBinderForEdit() { + + TopiaEntityBinder<SizeMeasure> r = ObserveBinderHelper.getSimpleTopiaBinder(SizeMeasure.class); + return r; + + } + + @Override + public TopiaEntityBinder<Branchline> getBranchlineBinderForEdit() { + + TopiaEntityBinder<Branchline> r = loadBinder("-forEdit", Branchline.class, new CreateBinder<Branchline>() { + + @Override + public BinderModelBuilder<Branchline, Branchline> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<Branchline, Branchline> builder = + binderService.newBinderBuilder(Branchline.class, + Branchline.PROPERTY_DEPTH_RECORDER, + Branchline.PROPERTY_HOOK_LOST, + Branchline.PROPERTY_TRACE_CUT_OFF, + Branchline.PROPERTY_TIMER, + Branchline.PROPERTY_TIME_SINCE_CONTACT, + Branchline.PROPERTY_TIMER_TIME_ON_BOARD, + Branchline.PROPERTY_BAIT_HAULING_STATUS); + + return builder; + } + + }); + + return r; + + } + + protected CatchLonglineDAO getDao() { + return (CatchLonglineDAO) getDao(CatchLongline.class); + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java new file mode 100644 index 0000000..6e69121 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java @@ -0,0 +1,25 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface GearUseFeaturesLonglineService extends ObserveService { + + List<GearUseFeaturesMeasurementLongline> getDefaultGearUseFeaturesMeasurementLongline(String gearId); + + List<GearUseFeaturesMeasurementLongline> loadGearUseFeaturesMeasurementLonglineForEdit(String gearUseFeaturesLonglineId); + + @NoTransaction + TopiaEntityBinder<GearUseFeaturesMeasurementLongline> getGearUseFeaturesMeasurementLonglineBinderForEdit(); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineServiceImpl.java new file mode 100644 index 0000000..f5bb483 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineServiceImpl.java @@ -0,0 +1,92 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.longline.GearUseFeaturesLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLonglineDAO; +import fr.ird.observe.entities.referentiel.Gear; +import fr.ird.observe.entities.referentiel.GearCaracteristic; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class GearUseFeaturesLonglineServiceImpl extends AbstractObserveService implements GearUseFeaturesLonglineService { + + @Override + public List<GearUseFeaturesMeasurementLongline> getDefaultGearUseFeaturesMeasurementLongline(String gearId) { + + GearUseFeaturesMeasurementLonglineDAO dao = getDao(); + + Gear gear = findByTopiaId(Gear.class, gearId); + + Collection<GearCaracteristic> gearCaracteristic = gear.getGearCaracteristic(); + List<GearUseFeaturesMeasurementLongline> result = new ArrayList<GearUseFeaturesMeasurementLongline>(); + for (GearCaracteristic caracteristic : gearCaracteristic) { + GearUseFeaturesMeasurementLongline target = dao.newInstance(); + target.setGearCaracteristic(caracteristic); + result.add(target); + } + + return result; + + } + + @Override + public List<GearUseFeaturesMeasurementLongline> loadGearUseFeaturesMeasurementLonglineForEdit(String gearUseFeaturesLonglineId) { + + GearUseFeaturesMeasurementLonglineDAO dao = getDao(); + TopiaEntityBinder<GearUseFeaturesMeasurementLongline> binder = getGearUseFeaturesMeasurementLonglineBinderForEdit(); + + GearUseFeaturesLongline gearUseFeaturesLongline = findByTopiaId(GearUseFeaturesLongline.class, gearUseFeaturesLonglineId); + List<GearUseFeaturesMeasurementLongline> result = new ArrayList<GearUseFeaturesMeasurementLongline>(); + + for (GearUseFeaturesMeasurementLongline measurementSource : gearUseFeaturesLongline.getGearUseFeaturesMeasurement()) { + GearUseFeaturesMeasurementLongline target = dao.newInstance(); + measurementSource.getGearCaracteristic().getGearCaracteristicType(); + binder.load(measurementSource, target, true); + result.add(target); + } + + return result; + + } + + @Override + public TopiaEntityBinder<GearUseFeaturesMeasurementLongline> getGearUseFeaturesMeasurementLonglineBinderForEdit() { + + TopiaEntityBinder<GearUseFeaturesMeasurementLongline> r = loadBinder("-forEdit", GearUseFeaturesMeasurementLongline.class, new CreateBinder<GearUseFeaturesMeasurementLongline>() { + + @Override + public BinderModelBuilder<GearUseFeaturesMeasurementLongline, GearUseFeaturesMeasurementLongline> createBinderBuilder(BinderService binderService, String name) { + + + BinderModelBuilder<GearUseFeaturesMeasurementLongline, GearUseFeaturesMeasurementLongline> builder = + binderService.newBinderBuilder(GearUseFeaturesMeasurementLongline.class, + GearUseFeaturesMeasurementLongline.PROPERTY_GEAR_CARACTERISTIC, + GearUseFeaturesMeasurementLongline.PROPERTY_MEASUREMENT_VALUE); + + return builder; + + } + + }); + + return r; + + } + + protected GearUseFeaturesMeasurementLonglineDAO getDao() { + return (GearUseFeaturesMeasurementLonglineDAO) getDao(GearUseFeaturesMeasurementLongline.class); + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java new file mode 100644 index 0000000..f9891f9 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java @@ -0,0 +1,12 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.services.ObserveService; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface LonglineDetailCompositionService extends ObserveService { +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionServiceImpl.java new file mode 100644 index 0000000..63fa0f9 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionServiceImpl.java @@ -0,0 +1,13 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.services.AbstractObserveService; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class LonglineDetailCompositionServiceImpl extends AbstractObserveService implements LonglineDetailCompositionService { + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java new file mode 100644 index 0000000..af2b697 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java @@ -0,0 +1,37 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.SensorUsed; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface SensorUsedService extends ObserveService { + + String getSensorUsedDataFilename(SensorUsed sensorUsed); + + SensorUsed loadForDisplay(String sensorUsedId); + + SensorUsed loadForEdit(String sensorUsedId); + + SensorUsed preCreate(String setLonglineId); + + @Commit + SensorUsed save(String setLonglineId, SensorUsed toSave); + + @Commit + void delete(String setLonglineId, String sensorUsedId); + + @NoTransaction + TopiaEntityBinder<SensorUsed> getBinderForEdit(); + + @NoTransaction + void copyForEdit(SensorUsed source, SensorUsed target); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedServiceImpl.java new file mode 100644 index 0000000..eb6aa2d --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedServiceImpl.java @@ -0,0 +1,84 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.SensorUsed; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.longline.TripLonglineDAO; +import fr.ird.observe.entities.referentiel.longline.SensorType; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since XXX + */ +public class SensorUsedServiceImpl extends AbstractObserveService implements SensorUsedService { + + @Override + public String getSensorUsedDataFilename(SensorUsed sensorUsed) { + + TripLonglineDAO tripDao = (TripLonglineDAO) getDao(TripLongline.class); + TripLongline tripLongline = tripDao.findByOpen(true); + + StringBuilder filenameBuilder = new StringBuilder("sensorData"); + String code = tripLongline.getVessel().getCode(); + filenameBuilder.append("-").append(code); + + Date startDate = tripLongline.getStartDate(); + filenameBuilder.append("-").append(new SimpleDateFormat("yyyy.MM.dd").format(startDate)); + + SensorType sensorType = sensorUsed.getSensorType(); + if (sensorType != null && sensorType.getCode() != null) { + filenameBuilder.append("-").append(sensorType.getCode()); + } + + String sensorSerialNo = sensorUsed.getSensorSerialNo(); + if (sensorSerialNo != null) { + filenameBuilder.append("-").append(sensorSerialNo); + } + filenameBuilder.append("-").append(sensorUsed.getDataFilename()); + + String filename = filenameBuilder.toString(); + return filename; + + } + + @Override + public SensorUsed loadForDisplay(String sensorUsedId) { + return null; + } + + @Override + public SensorUsed loadForEdit(String sensorUsedId) { + return null; + } + + @Override + public SensorUsed preCreate(String setLonglineId) { + return null; + } + + @Override + public SensorUsed save(String setLonglineId, SensorUsed toSave) { + return null; + } + + @Override + public void delete(String setLonglineId, String sensorUsedId) { + + } + + @Override + public TopiaEntityBinder<SensorUsed> getBinderForEdit() { + return null; + } + + @Override + public void copyForEdit(SensorUsed source, SensorUsed target) { + + } +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java new file mode 100644 index 0000000..6e28f73 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java @@ -0,0 +1,21 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.Section; +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.services.ObserveService; + +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface SetLonglineService extends ObserveService { + + SetLongline loadSet(String setLonglineId); + + List<Section> getSections(String setLonglineId); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineServiceImpl.java new file mode 100644 index 0000000..c02e1bb --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineServiceImpl.java @@ -0,0 +1,71 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.Basket; +import fr.ird.observe.entities.longline.Branchline; +import fr.ird.observe.entities.longline.Section; +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.entities.longline.SetLonglineDAO; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.decorator.Decorator; +import org.nuiton.topia.persistence.TopiaDAO; + +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class SetLonglineServiceImpl extends AbstractObserveService implements SetLonglineService { + + @Override + public SetLongline loadSet(String setLonglineId) { + return null; + } + + public List<Section> getSections(String setLonglineId) { + + TopiaDAO<Section> dao = getDao(Section.class); + + List<Section> sections = dao.findAllByProperties(Section.PROPERTY_SET_LONGLINE + "." + Section.TOPIA_ID, setLonglineId); + + if (!sections.isEmpty()) { + + Decorator<Section> sectionDecorator = getDecoratorByType(Section.class, null); + Decorator<Basket> basketDecorator = getDecoratorByType(Basket.class, null); + Decorator<Branchline> branchlineDecorator = getDecoratorByType(Branchline.class, null); + + for (Section section : sections) { + + sectionDecorator.toString(section); + + if (!section.isBasketEmpty()) { + + for (Basket basket : section.getBasket()) { + + basketDecorator.toString(basket); + + if (!basket.isBranchlineEmpty()) { + + for (Branchline branchline : basket.getBranchline()) { + + branchlineDecorator.toString(branchline); + + } + } + + } + } + } + } + + return sections; + + } + + protected SetLonglineDAO getDao() { + return (SetLonglineDAO) getDao(SetLongline.class); + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrService.java new file mode 100644 index 0000000..afbee3d --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrService.java @@ -0,0 +1,37 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.Tdr; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface TdrService extends ObserveService { + + String getTdrDataFilename(Tdr tdr); + + Tdr loadForDisplay(String tdrId); + + Tdr loadForEdit(String tdrId); + + Tdr preCreate(String tripLonglineId); + + @Commit + Tdr save(String setLonglineId, Tdr toSave); + + @Commit + void delete(String setLonglineId, String tdrId); + + @NoTransaction + TopiaEntityBinder<Tdr> getBinderForEdit(); + + @NoTransaction + void copyForEdit(Tdr source, Tdr target); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrServiceImpl.java new file mode 100644 index 0000000..fa6ae63 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrServiceImpl.java @@ -0,0 +1,83 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.Tdr; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.longline.TripLonglineDAO; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class TdrServiceImpl extends AbstractObserveService implements TdrService { + + public String getTdrDataFilename(Tdr tdr) { + + TripLonglineDAO tripDao = (TripLonglineDAO) getDao(TripLongline.class); + TripLongline tripLongline = tripDao.findByOpen(true); + + StringBuilder filenameBuilder = new StringBuilder("tdr"); + String code = tripLongline.getVessel().getCode(); + filenameBuilder.append("-").append(code); + + Date startDate = tripLongline.getStartDate(); + filenameBuilder.append("-").append(new SimpleDateFormat("yyyy.MM.dd").format(startDate)); + + String homeId = tdr.getHomeId(); + if (homeId != null) { + filenameBuilder.append("-").append(homeId); + } + + String serialNo = tdr.getSerialNo(); + if (serialNo != null) { + filenameBuilder.append("-").append(serialNo); + } + filenameBuilder.append("-").append(tdr.getDataFilename()); + + String filename = filenameBuilder.toString(); + return filename; + + + } + + @Override + public Tdr loadForDisplay(String tdrId) { + return null; + } + + @Override + public Tdr loadForEdit(String tdrId) { + return null; + } + + @Override + public Tdr preCreate(String tripLonglineId) { + return null; + } + + @Override + public Tdr save(String setLonglineId, Tdr toSave) { + return null; + } + + @Override + public void delete(String setLonglineId, String tdrId) { + + } + + @Override + public TopiaEntityBinder<Tdr> getBinderForEdit() { + return null; + } + + @Override + public void copyForEdit(Tdr source, Tdr target) { + + } +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java new file mode 100644 index 0000000..b39e076 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java @@ -0,0 +1,42 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface TripLonglineService extends ObserveService { + + List<TripLongline> getTripLonglineStubByProgram(String programId); + + TripLongline getTripLonglineStub(String tripId); + + List<TripLongline> loadAllByProgramForDisplay(String programId); + + TripLongline loadForDisplay(String tripLonglineId); + + TripLongline loadForEdit(String tripLonglineId); + + TripLongline preCreate(String programId); + + @Commit + TripLongline save(TripLongline toSave); + + @Commit + void delete(String tripLonglineId); + + @NoTransaction + TopiaEntityBinder<TripLongline> getBinderForEdit(); + + @NoTransaction + void copyForEdit(TripLongline source, TripLongline target); +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineServiceImpl.java new file mode 100644 index 0000000..7a93264 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineServiceImpl.java @@ -0,0 +1,201 @@ +package fr.ird.observe.services.data.longline; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.entities.longline.ActivityLonglines; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.longline.TripLonglineDAO; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.DateUtil; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.Date; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class TripLonglineServiceImpl extends AbstractObserveService implements TripLonglineService { + + @Override + public List<TripLongline> getTripLonglineStubByProgram(String programId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + List<TripLongline> result = getDao().findAllStubByProgramId(programId, referentielLocale); + return result; + + } + + @Override + public TripLongline getTripLonglineStub(String tripId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + TripLongline result = getDao().findStubByTopiaId(tripId, referentielLocale); + return result; + + } + + @Override + public List<TripLongline> loadAllByProgramForDisplay(String programId) { + + ReferenceLocale referenceLocale = getReferentielLocale(); + List<TripLongline> loaded = getDao().findAllStubByProgramId(programId, referenceLocale); + return loaded; + + } + + @Override + public TripLongline loadForDisplay(String tripLonglineId) { + + TripLongline loaded = getDao().newInstance(); + TripLongline toLoad = getDao().findByTopiaId(tripLonglineId); + copyForEdit(toLoad, loaded); + + if (!loaded.isActivityLonglineEmpty()) { + + // on force le trie des routes + ActivityLonglines.sort(loaded.getActivityLongline()); + + } + + return loaded; + + } + + @Override + public TripLongline loadForEdit(String tripLonglineId) { + + TripLongline loaded = loadForDisplay(tripLonglineId); + + if (loaded.getEndDate() == null) { + Date date = DateUtil.getEndOfDay(now()); + loaded.setEndDate(date); + } + + return loaded; + + } + + @Override + public TripLongline preCreate(String programId) { + + Program program = findByTopiaId(Program.class, programId); + + TripLongline preCreated = getDao().newInstance(); + + Date date = DateUtil.getDay(now()); + preCreated.setStartDate(date); + preCreated.setEndDate(date); + preCreated.setProgram(program); + + return preCreated; + + } + + @Override + public TripLongline save(TripLongline toSave) { + + Date startDate = DateUtil.getDay(toSave.getStartDate()); + toSave.setStartDate(startDate); + + // mise a jour de la date de fin + toSave.updateDateFin(); + + TripLongline saved; + + if (toSave.getTopiaId() == null) { + + // create + saved = create(toSave); + + } else { + + // update + saved = update(toSave); + + } + + return saved; + + } + + @Override + public void delete(String tripLonglineId) { + + TripLonglineDAO dao = getDao(); + TripLongline toDelete = dao.findByTopiaId(tripLonglineId); + dao.delete(toDelete); + + } + + @Override + public TopiaEntityBinder<TripLongline> getBinderForEdit() { + + TopiaEntityBinder<TripLongline> r = loadBinder("-forEdit", TripLongline.class, new CreateBinder<TripLongline>() { + + @Override + public BinderModelBuilder<TripLongline, TripLongline> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<TripLongline, TripLongline> builder = binderService.newBinderBuilder( + TripLongline.class, + TripLongline.PROPERTY_START_DATE, + TripLongline.PROPERTY_END_DATE, + TripLongline.PROPERTY_TRIP_TYPE, + TripLongline.PROPERTY_HOME_ID, + TripLongline.PROPERTY_COMMENT, + TripLongline.PROPERTY_VESSEL, + TripLongline.PROPERTY_OBSERVER, + TripLongline.PROPERTY_CAPTAIN, + TripLongline.PROPERTY_DATA_ENTRY_OPERATOR, + TripLongline.PROPERTY_TOTAL_FISHING_OPERATIONS_NUMBER, + TripLongline.PROPERTY_OCEAN, + TripLongline.PROPERTY_DEPARTURE_HARBOUR, + TripLongline.PROPERTY_LANDING_HARBOUR, + TripLongline.PROPERTY_PROGRAM, + TripLongline.PROPERTY_ACTIVITY_LONGLINE, + TripLongline.PROPERTY_OPEN); + + // on ajoute la recopie de l'association route + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, TripLongline.PROPERTY_ACTIVITY_LONGLINE); + + return builder; + } + + }); + + return r; + + } + + @Override + public void copyForEdit(TripLongline source, TripLongline target) { + + getBinderForEdit().load(source, target, true); + + } + + protected TripLongline create(TripLongline toCreate) { + + TripLonglineDAO dao = getDao(); + TripLongline created = dao.create(toCreate); + return created; + + } + + protected TripLongline update(TripLongline toUpdate) { + + TripLonglineDAO dao = getDao(); + TripLongline updated = dao.findByTopiaId(toUpdate.getTopiaId()); + getBinderForEdit().copyExcluding(toUpdate, updated, TripLongline.PROPERTY_ACTIVITY_LONGLINE); + return updated; + + } + + protected TripLonglineDAO getDao() { + return (TripLonglineDAO) getDao(TripLongline.class); + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java new file mode 100644 index 0000000..e000e6e --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java @@ -0,0 +1,47 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface ActivitySeineService extends ObserveService { + + ActivitySeine getActivitySeineStub(String activitySeineId); + + List<ActivitySeine> getActivitySeineStubByRoute(String routeId); + + List<ActivitySeine> loadAllByRouteForDisplay(String routeId); + + ActivitySeine loadForDisplay(String activitySeineId); + + ActivitySeine loadForEdit(String activitySeineId); + + ActivitySeine loadForEditObservedSystem(String activitySeineId); + + ActivitySeine preCreate(String tripLonglineId); + + @Commit + ActivitySeine save(String routeId, ActivitySeine toSave); + + @Commit + void updateObservedSystem(ActivitySeine toUpdate); + + @Commit + void delete(String routeId, String activitySeineId); + + @NoTransaction + TopiaEntityBinder<ActivitySeine> getBinderForEdit(); + + @NoTransaction + void copyForEdit(ActivitySeine source, ActivitySeine target); +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineServiceImpl.java new file mode 100644 index 0000000..7478d41 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineServiceImpl.java @@ -0,0 +1,255 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.entities.referentiel.FpaZone; +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.entities.seine.ActivitySeineDAO; +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.DateUtil; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.Date; +import java.util.List; + +/** + * Created on 4/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ActivitySeineServiceImpl extends AbstractObserveService implements ActivitySeineService { + + @Override + public List<ActivitySeine> getActivitySeineStubByRoute(String routeId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + List<ActivitySeine> result = getDao().findAllStubByRouteId(routeId, referentielLocale); + return result; + + } + + @Override + public ActivitySeine getActivitySeineStub(String activityId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + ActivitySeine result = getDao().findStubByTopiaId(activityId, referentielLocale); + return result; + + } + + @Override + public List<ActivitySeine> loadAllByRouteForDisplay(String routeId) { + + List<ActivitySeine> loaded = getDao().findAllStubByRouteId(routeId, getReferentielLocale()); + return loaded; + + } + + @Override + public ActivitySeine loadForDisplay(String activitySeineId) { + + ActivitySeine loaded = getDao().newInstance(); + ActivitySeine toLoad = getDao().findByTopiaId(activitySeineId); + copyForEdit(toLoad, loaded); + + return loaded; + + } + + @Override + public ActivitySeine loadForEdit(String activitySeineId) { + + ActivitySeine loaded = loadForDisplay(activitySeineId); + return loaded; + + } + + @Override + public ActivitySeine loadForEditObservedSystem(String activitySeineId) { + + ActivitySeine toLoad = getDao().findByTopiaId(activitySeineId); + ActivitySeine loaded = getDao().newInstance(); + //TODO + return loaded; + } + + @Override + public ActivitySeine preCreate(String routeId) { + + Route tripLongline = findByTopiaId(Route.class, routeId); + + ActivitySeine preCreated = getDao().newInstance(); + + preCreated.setOpen(true); + + ActivitySeine lastActivitySeine = tripLongline.getLastActivity(); + + Date time; + + FpaZone currentFpaZone = null; + + if (lastActivitySeine == null) { + + // première activité, on utilise l'heure courante + time = new Date(); + + } else { + + // passage en coordonnées absolue + quadrant + lastActivitySeine.initCoordinates(); + + // on recupère le quadrant de cette activity + // et on l'affecte à la nouvelle activity + Integer quadrant = lastActivitySeine.getQuadrant(); + if (quadrant != null) { + + preCreated.setQuadrant(quadrant); + + } + + // on reprend l'heure de la dernière activité + time = lastActivitySeine.getTime(); + + // utilisation des zones fpa de la dernière activité + currentFpaZone = lastActivitySeine.getNextFpaZone(); + if (currentFpaZone == null) { + currentFpaZone = lastActivitySeine.getCurrentFpaZone(); + } + + } + + preCreated.setTime(DateUtil.getTime(time, false, false)); + preCreated.setCurrentFpaZone(currentFpaZone); + + return preCreated; + + } + + @Override + public void updateObservedSystem(ActivitySeine toUpdate) { + + //TODO + } + + @Override + public ActivitySeine save(String routeId, ActivitySeine toSave) { + + ActivitySeine saved; + + if (toSave.getTopiaId() == null) { + + // create + saved = create(routeId, toSave); + + } else { + + // update + saved = update(routeId, toSave); + + } + + return saved; + + } + + @Override + public void delete(String routeId, String activitySeineId) { + + ActivitySeineDAO dao = getDao(); + ActivitySeine toDelete = dao.findByTopiaId(activitySeineId); + + Route route = findByTopiaId(Route.class, routeId); + route.removeActivitySeine(toDelete); + + } + + @Override + public TopiaEntityBinder<ActivitySeine> getBinderForEdit() { + + TopiaEntityBinder<ActivitySeine> binder = loadBinder("-forEdit", ActivitySeine.class, new CreateBinder<ActivitySeine>() { + + @Override + public BinderModelBuilder<ActivitySeine, ActivitySeine> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<ActivitySeine, ActivitySeine> builder = binderService.newBinderBuilder( + ActivitySeine.class, + ActivitySeine.PROPERTY_QUADRANT, + ActivitySeine.PROPERTY_LATITUDE, + ActivitySeine.PROPERTY_LONGITUDE, + ActivitySeine.PROPERTY_ERS_ID, + ActivitySeine.PROPERTY_TIME, + ActivitySeine.PROPERTY_SEA_SURFACE_TEMPERATURE, + ActivitySeine.PROPERTY_REASON_FOR_NO_FISHING, + ActivitySeine.PROPERTY_COMMENT, + ActivitySeine.PROPERTY_VESSEL_SPEED, + ActivitySeine.PROPERTY_OBSERVED_SYSTEM, + ActivitySeine.PROPERTY_OBSERVED_SYSTEM_DISTANCE, + ActivitySeine.PROPERTY_VESSEL_ACTIVITY_SEINE, + ActivitySeine.PROPERTY_SURROUNDING_ACTIVITY, + ActivitySeine.PROPERTY_WIND, + ActivitySeine.PROPERTY_DETECTION_MODE, + ActivitySeine.PROPERTY_SET_SEINE, + ActivitySeine.PROPERTY_FLOATING_OBJECT, + ActivitySeine.PROPERTY_OPEN, + ActivitySeine.PROPERTY_CURRENT_FPA_ZONE, + ActivitySeine.PROPERTY_PREVIOUS_FPA_ZONE, + ActivitySeine.PROPERTY_NEXT_FPA_ZONE); + + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, ActivitySeine.PROPERTY_OBSERVED_SYSTEM); + + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, ActivitySeine.PROPERTY_FLOATING_OBJECT); + + return builder; + + } + + }); + + return binder; + + } + + @Override + public void copyForEdit(ActivitySeine source, ActivitySeine target) { + + getBinderForEdit().load(source, target, true); + + } + + protected ActivitySeine create(String routeId, ActivitySeine toCreate) { + + ActivitySeineDAO dao = getDao(); + ActivitySeine created = dao.create(toCreate); + + Route route = findByTopiaId(Route.class, routeId); + route.addActivitySeine(created); + + return created; + + } + + protected ActivitySeine update(String routeId, ActivitySeine toUpdate) { + + Route route = findByTopiaId(Route.class, routeId); + Date d = DateUtil.getDateAndTime(route.getDate(), toUpdate.getTime(), false, false); + + toUpdate.setTime(d); + + ActivitySeineDAO dao = getDao(); + ActivitySeine updated = dao.findByTopiaId(toUpdate.getTopiaId()); + getBinderForEdit().copyExcluding(toUpdate, updated, + ActivitySeine.PROPERTY_OBSERVED_SYSTEM, + ActivitySeine.PROPERTY_FLOATING_OBJECT); + return updated; + + } + + protected ActivitySeineDAO getDao() { + return (ActivitySeineDAO) getDao(ActivitySeine.class); + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java new file mode 100644 index 0000000..8e9d42a --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java @@ -0,0 +1,38 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.seine.FloatingObject; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.ObserveService; + +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface FloatingObjectService extends ObserveService { + + List<FloatingObject> getFloatinObjectStubByActivitySeine(String activitySeineId); + + FloatingObject getFloatinObjectStub(String id); + + FloatingObject loadForEdit(String floatingObjectId); + + FloatingObject loadForEditTransmittingBuoy(String floatingObjectId); + + FloatingObject preCreate(String routeId); + + @Commit + FloatingObject create(FloatingObject toCreate); + + @Commit + void update(FloatingObject toUpdate); + + @Commit + void updateTransmittingBuoy(FloatingObject toUpdate); + + @Commit + void delete(String floatingObjectId); +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/FloatingObjectServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectServiceImpl.java similarity index 50% rename from observe-services/src/main/java/fr/ird/observe/services/seine/FloatingObjectServiceImpl.java rename to observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectServiceImpl.java index 676b33a..bc1f78f 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/FloatingObjectServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectServiceImpl.java @@ -1,12 +1,11 @@ -package fr.ird.observe.services.seine; +package fr.ird.observe.services.data.seine; -import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.db.DataSource; +import fr.ird.observe.entities.constants.ReferenceLocale; import fr.ird.observe.entities.seine.FloatingObject; +import fr.ird.observe.entities.seine.FloatingObjectDAO; import fr.ird.observe.services.AbstractObserveService; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; + +import java.util.List; /** * Created on 4/24/15. @@ -14,45 +13,65 @@ import org.nuiton.topia.persistence.TopiaDAO; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class FloatingObjectServiceImpl extends AbstractObserveService<FloatingObject> { +public class FloatingObjectServiceImpl extends AbstractObserveService implements FloatingObjectService { + + @Override + public List<FloatingObject> getFloatinObjectStubByActivitySeine(String activitySeineId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + List<FloatingObject> result = getDao().findAllStubByActivityId(activitySeineId, referentielLocale); + return result; - public FloatingObjectServiceImpl(DataSource dataSource) { - super(FloatingObject.class, dataSource); } @Override - protected TopiaDAO<FloatingObject> getDao(TopiaContext tx) throws TopiaException { - return ObserveDAOHelper.getFloatingObjectDAO(tx); + public FloatingObject getFloatinObjectStub(String floatingObjectId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + FloatingObject result = getDao().findStubByTopiaId(floatingObjectId, referentielLocale); + return result; + } + @Override public FloatingObject loadForEdit(String floatingObjectId) { FloatingObject loaded = null; return loaded; } + @Override public FloatingObject loadForEditTransmittingBuoy(String floatingObjectId) { FloatingObject loaded = null; return loaded; } + @Override public FloatingObject preCreate(String routeId) { FloatingObject result = null; return result; } + @Override public FloatingObject create(FloatingObject toCreate) { FloatingObject created = null; return created; } + @Override public void update(FloatingObject toUpdate) { } + @Override public void updateTransmittingBuoy(FloatingObject toUpdate) { } + @Override public void delete(String floatingObjectId) { } + protected FloatingObjectDAO getDao() { + return (FloatingObjectDAO) getDao(FloatingObject.class); + } + } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java new file mode 100644 index 0000000..23a4565 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java @@ -0,0 +1,25 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface GearUseFeaturesSeineService extends ObserveService { + + List<GearUseFeaturesMeasurementSeine> getDefaultGearUseFeaturesMeasurementSeine(String gearId); + + List<GearUseFeaturesMeasurementSeine> loadGearUseFeaturesMeasurementSeineForEdit(String gearUseFeaturesSeineId); + + @NoTransaction + TopiaEntityBinder<GearUseFeaturesMeasurementSeine> getGearUseFeaturesMeasurementSeineBinderForEdit(); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java new file mode 100644 index 0000000..ecb28cd --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java @@ -0,0 +1,90 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.referentiel.Gear; +import fr.ird.observe.entities.referentiel.GearCaracteristic; +import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; +import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeineDAO; +import fr.ird.observe.entities.seine.GearUseFeaturesSeine; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class GearUseFeaturesSeineServiceImpl extends AbstractObserveService implements GearUseFeaturesSeineService { + + @Override + public List<GearUseFeaturesMeasurementSeine> getDefaultGearUseFeaturesMeasurementSeine(String gearId) { + + GearUseFeaturesMeasurementSeineDAO dao = getDao(); + Gear gear = findByTopiaId(Gear.class, gearId); + + Collection<GearCaracteristic> gearCaracteristic = gear.getGearCaracteristic(); + List<GearUseFeaturesMeasurementSeine> result = new ArrayList<GearUseFeaturesMeasurementSeine>(); + for (GearCaracteristic caracteristic : gearCaracteristic) { + GearUseFeaturesMeasurementSeine target = dao.newInstance(); + target.setGearCaracteristic(caracteristic); + result.add(target); + } + + return result; + + } + + @Override + public List<GearUseFeaturesMeasurementSeine> loadGearUseFeaturesMeasurementSeineForEdit(String gearUseFeaturesSeineId) { + + GearUseFeaturesMeasurementSeineDAO dao = getDao(); + TopiaEntityBinder<GearUseFeaturesMeasurementSeine> binder = getGearUseFeaturesMeasurementSeineBinderForEdit(); + + GearUseFeaturesSeine gearUseFeaturesSeine = findByTopiaId(GearUseFeaturesSeine.class, gearUseFeaturesSeineId); + List<GearUseFeaturesMeasurementSeine> result = new ArrayList<GearUseFeaturesMeasurementSeine>(); + + for (GearUseFeaturesMeasurementSeine measurementSource : gearUseFeaturesSeine.getGearUseFeaturesMeasurement()) { + GearUseFeaturesMeasurementSeine target = dao.newInstance(); + measurementSource.getGearCaracteristic().getGearCaracteristicType(); + binder.load(measurementSource, target, true); + result.add(target); + } + + return result; + + } + + @Override + public TopiaEntityBinder<GearUseFeaturesMeasurementSeine> getGearUseFeaturesMeasurementSeineBinderForEdit() { + + TopiaEntityBinder<GearUseFeaturesMeasurementSeine> r = loadBinder("-forEdit", GearUseFeaturesMeasurementSeine.class, new CreateBinder<GearUseFeaturesMeasurementSeine>() { + + @Override + public BinderModelBuilder<GearUseFeaturesMeasurementSeine, GearUseFeaturesMeasurementSeine> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<GearUseFeaturesMeasurementSeine, GearUseFeaturesMeasurementSeine> builder = + binderService.newBinderBuilder(GearUseFeaturesMeasurementSeine.class, + GearUseFeaturesMeasurementSeine.PROPERTY_GEAR_CARACTERISTIC, + GearUseFeaturesMeasurementSeine.PROPERTY_MEASUREMENT_VALUE); + + return builder; + + } + + }); + + return r; + + } + + protected GearUseFeaturesMeasurementSeineDAO getDao() { + return (GearUseFeaturesMeasurementSeineDAO) getDao(GearUseFeaturesMeasurementSeine.class); + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java new file mode 100644 index 0000000..6464335 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java @@ -0,0 +1,28 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.seine.NonTargetLength; +import fr.ird.observe.services.ObserveService; + +import java.util.Collection; +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface NonTargetSampleService extends ObserveService { + + List<Species> getAvailableEspeceForNonTargetSample(String setSeineId); + + String getNonTargetSampleId(String setSeineId); + + boolean canUseNonTargetSample(String setSeineId); + + void getObsoleteEspeceForNonTargetSample(String setSeineId, + List<Species> speciessUsed, + Collection<Species> speciessToDelete, + List<NonTargetLength> tailleToDelete); +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java new file mode 100644 index 0000000..d3c700a --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java @@ -0,0 +1,116 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.seine.NonTargetCatch; +import fr.ird.observe.entities.seine.NonTargetLength; +import fr.ird.observe.entities.seine.NonTargetSample; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.AbstractObserveService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class NonTargetSampleServiceImpl extends AbstractObserveService implements NonTargetSampleService { + + /** Logger. */ + private static final Log log = LogFactory.getLog(NonTargetSampleServiceImpl.class); + + @Override + public List<Species> getAvailableEspeceForNonTargetSample(String setSeineId) { + + List<Species> speciesList = new ArrayList<Species>(); + + SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); + + // on recupere la liste des espèces faune utilisees dans le rejet + Collection<NonTargetCatch> nonTargetCatches = setSeine.getNonTargetCatch(); + + if (nonTargetCatches != null) { + + for (NonTargetCatch nonTargetCatch : nonTargetCatches) { + // on retient toute les espèces (capturées ou rejetées) + if (!speciesList.contains(nonTargetCatch.getSpecies())) { + speciesList.add(nonTargetCatch.getSpecies()); + } + } + + } + + return speciesList; + + } + + @Override + public String getNonTargetSampleId(String setSeineId) { + + SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); + + String nonTargetSampleId; + + if (setSeine.isNonTargetSampleEmpty()) { + + nonTargetSampleId = null; + + } else { + + List<NonTargetSample> nonTargetSamples = setSeine.getNonTargetSample(); + nonTargetSampleId = nonTargetSamples.get(0).getTopiaId(); + + } + + return nonTargetSampleId; + + } + + @Override + public boolean canUseNonTargetSample(String setSeineId) { + + SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); + return setSeine.canUseNonTargetSample(); + + } + + @Override + public void getObsoleteEspeceForNonTargetSample(String setSeineId, + List<Species> speciessUsed, + Collection<Species> speciessToDelete, + List<NonTargetLength> tailleToDelete) { + + SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); + + if (setSeine.isNonTargetSampleEmpty()) { + return; + } + + NonTargetSample echantillon = setSeine.getNonTargetSample().get(0); + + if (echantillon.isNonTargetLengthEmpty()) { + return; + } + + for (NonTargetLength taille : echantillon.getNonTargetLength()) { + Species tailleEspece = taille.getSpecies(); + if (!speciessUsed.contains(tailleEspece)) { + // l'species n'existe plus dans les rejet faune, + // on doit le supprimer + tailleToDelete.add(taille); + speciessToDelete.add(tailleEspece); + if (log.isDebugEnabled()) { + log.debug("remove obsolote echantillon " + taille + " for species " + tailleEspece); + } + } + } + + + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteService.java new file mode 100644 index 0000000..af91248 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteService.java @@ -0,0 +1,40 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface RouteService extends ObserveService { + + List<Route> getRouteStubByTrip(String tripSeineId); + + Route getRouteStub(String routeId); + + Route loadForDisplay(String routeId); + + Route loadForEdit(String routeId); + + Route preCreate(String tripSeineId); + + @Commit + Route save(String tripSeineId, Route toSave); + + @Commit + void delete(String tripSeineId, String routeId); + + @NoTransaction + TopiaEntityBinder<Route> getBinderForEdit(); + + @NoTransaction + void copyForEdit(Route source, Route target); +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteServiceImpl.java new file mode 100644 index 0000000..fc6a459 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteServiceImpl.java @@ -0,0 +1,237 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.entities.seine.ActivitySeines; +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.entities.seine.RouteDAO; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.AbstractObserveService; +import org.apache.commons.lang3.time.DateUtils; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.DateUtil; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.Date; +import java.util.List; + +/** + * Created on 4/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class RouteServiceImpl extends AbstractObserveService implements RouteService { + + @Override + public List<Route> getRouteStubByTrip(String tripSeineId) { + + List<Route> result = getDao().findAllStubByTripId(tripSeineId); + return result; + + } + + @Override + public Route getRouteStub(String routeId) { + + Route result = getDao().findStubByTopiaId(routeId); + return result; + + } + + @Override + public Route loadForDisplay(String routeId) { + + Route loaded = getDao().newInstance(); + Route toLoad = getDao().findByTopiaId(routeId); + copyForEdit(toLoad, loaded); + + if (!loaded.isActivitySeineEmpty()) { + + // on force le trie des activites + ActivitySeines.sort(loaded.getActivitySeine()); + } + + return loaded; + + } + + @Override + public Route loadForEdit(String routeId) { + Route loaded = loadForDisplay(routeId); + return loaded; + } + + @Override + public Route preCreate(String tripSeineId) { + + TripSeine tripLongline = findByTopiaId(TripSeine.class, tripSeineId); + + Route preCreated = getDao().newInstance(); + + preCreated.setOpen(true); + + Route lastRoute = tripLongline.getLastRoute(); + + Date date; + if (lastRoute == null) { + + // aucune route defini, on utilise la date courante + date = now(); + + } else { + + // une route precedente est definie sur la maree + // le jour d'observation est le jour suivant celui de la + // derniere route + date = DateUtils.addDays(lastRoute.getDate(), 1); + + // le loch du matin est le loch du soir de la derniere route + preCreated.setStartLogValue(lastRoute.getEndLogValue()); + } + + preCreated.setDate(DateUtil.getDay(date)); + + return preCreated; + + } + + @Override + public Route save(String tripSeineId, Route toSave) { + + Route saved; + + // on sauvegarde toujours en debut de jour + Date date = DateUtil.getDay(toSave.getDate()); + toSave.setDate(date); + + if (toSave.getTopiaId() == null) { + + // create + saved = create(tripSeineId, toSave); + + } else { + + // update + saved = update(tripSeineId, toSave); + + } + + return saved; + + } + + @Override + public void delete(String tripSeineId, String routeId) { + + RouteDAO dao = getDao(); + Route toDelete = dao.findByTopiaId(routeId); + + TripSeine tripSeine = findByTopiaId(TripSeine.class, tripSeineId); + tripSeine.removeRoute(toDelete); + tripSeine.updateDateFin(); + + dao.delete(toDelete); + + } + + @Override + public TopiaEntityBinder<Route> getBinderForEdit() { + + TopiaEntityBinder<Route> binder = loadBinder("-forEdit", Route.class, new CreateBinder<Route>() { + + @Override + public BinderModelBuilder<Route, Route> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<Route, Route> builder = binderService.newBinderBuilder( + Route.class, + Route.PROPERTY_DATE, + Route.PROPERTY_START_LOG_VALUE, + Route.PROPERTY_END_LOG_VALUE, + Route.PROPERTY_CHECK_LEVEL, + Route.PROPERTY_ACTIVITY_SEINE, + Route.PROPERTY_OPEN, + Route.PROPERTY_COMMENT); + + BinderModelBuilder<ActivitySeine, ActivitySeine> builder2 = binderService.newBinderBuilder( + ActivitySeine.class, + ActivitySeine.PROPERTY_QUADRANT, + ActivitySeine.PROPERTY_LATITUDE, + ActivitySeine.PROPERTY_LONGITUDE, + ActivitySeine.PROPERTY_TIME, + ActivitySeine.PROPERTY_SEA_SURFACE_TEMPERATURE, + ActivitySeine.PROPERTY_REASON_FOR_NO_FISHING, + ActivitySeine.PROPERTY_VESSEL_ACTIVITY_SEINE, + ActivitySeine.PROPERTY_WIND, + ActivitySeine.PROPERTY_OPEN); + + TopiaEntityBinder<ActivitySeine> binder2 = + binderService.registerTopiaBinder(ActivitySeine.class, builder2, name); + + builder.addCollectionBinder(binder2, Route.PROPERTY_ACTIVITY_SEINE); + + return builder; + + } + + }); + + return binder; + + } + + @Override + public void copyForEdit(Route source, Route target) { + + getBinderForEdit().load(source, target, true); + + } + + protected Route create(String tripSeineId, Route toCreate) { + + RouteDAO dao = getDao(); + Route created = dao.create(toCreate); + + TripSeine tripSeine = findByTopiaId(TripSeine.class, tripSeineId); + tripSeine.addRoute(created); + + // on met a jour si necessaire la date de fin de la maree + tripSeine.updateDateFin(); + + return created; + + } + + protected Route update(String tripSeineId, Route toUpdate) { + + RouteDAO dao = getDao(); + Route updated = dao.findByTopiaId(toUpdate.getTopiaId()); + + // on conserve l'ancienne date d'observation + Date oldDate = DateUtil.getDay(toUpdate.getDate()); + + // recopie des propriétés vers le bean a sauver + getBinderForEdit().copyExcluding(toUpdate, updated, Route.PROPERTY_ACTIVITY_SEINE); + + if (!oldDate.equals(toUpdate.getDate())) { + + //FIXME Faire cela avec une requete sql, sinon ca charge trop de données + // le jour a change, il faut mettre à jour les dates des activites et des calees + updated.updateDates(); + + } + + TripSeine tripSeine = findByTopiaId(TripSeine.class, tripSeineId); + + // on met a jour si necessaire la date de fin de la maree + tripSeine.updateDateFin(); + + return updated; + + } + + protected RouteDAO getDao() { + return (RouteDAO) getDao(Route.class); + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java new file mode 100644 index 0000000..b646c2e --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java @@ -0,0 +1,38 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.Date; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface SetSeineService extends ObserveService { + + SetSeine loadSet(String setSeineId); + + Date getRouteDate(String routeId); + + SetSeine loadForEdit(String setSeineId); + + SetSeine preCreate(String routeId, String activitySeineId); + + @Commit + SetSeine save(String activitySeineId, SetSeine toSave); + + @Commit + void delete(String activitySeineId, String setSeineId); + + @NoTransaction + TopiaEntityBinder<SetSeine> getBinderForEdit(); + + @NoTransaction + void copyForEdit(SetSeine source, SetSeine target); +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineServiceImpl.java new file mode 100644 index 0000000..e012079 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineServiceImpl.java @@ -0,0 +1,206 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.constants.seine.SchoolType; +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.entities.seine.NonTargetSample; +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.entities.seine.SetSeineDAO; +import fr.ird.observe.entities.seine.TargetSample; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.DateUtil; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.Date; + +/** + * Created on 4/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class SetSeineServiceImpl extends AbstractObserveService implements SetSeineService { + + @Override + public SetSeine loadSet(String setSeineId) { + return null; + } + + @Override + public Date getRouteDate(String routeId) { + + Route route = findByTopiaId(Route.class, routeId); + Date date = route.getDate(); + return date; + + } + + @Override + public SetSeine loadForEdit(String setSeineId) { + + SetSeine loaded = getDao().newInstance(); + SetSeine toLoad = getDao().findByTopiaId(setSeineId); + copyForEdit(toLoad, loaded); + + //FIXME See why need this ? + if (!loaded.isTargetSampleEmpty()) { + for (TargetSample e : loaded.getTargetSample()) { + e.isTargetLengthEmpty(); + } + } + + //FIXME See why need this ? + if (!loaded.isNonTargetSampleEmpty()) { + for (NonTargetSample e : loaded.getNonTargetSample()) { + e.isNonTargetLengthEmpty(); + } + } + + return loaded; + + } + + + @Override + public SetSeine preCreate(String routeId, String activitySeineId) { + + ActivitySeine activitySeine = findByTopiaId(ActivitySeine.class, activitySeineId); + + // on utilise l'heure de l'activité comme début de calée + Date date = DateUtil.getTime(activitySeine.getTime(), false, false); + + SetSeine preCreated = getDao().newInstance(); + + preCreated.setStartTime(date); + + // pour les dates de fin on utilise la date de la route + Date routeDate = getRouteDate(routeId); + + preCreated.setEndSetTimeStamp(date); + preCreated.setEndPursingTimeStamp(date); + + preCreated.setEndSetDate(routeDate); + preCreated.setEndPursingDate(routeDate); + + // recuperation du type de set a partir de l'activity + SchoolType schoolType = activitySeine.getSchoolType(); + preCreated.setSchoolType(schoolType); + + return preCreated; + + } + + @Override + public SetSeine save(String activitySeineId, SetSeine toSave) { + + SetSeine saved; + + if (toSave.getTopiaId() == null) { + + // create + saved = create(activitySeineId, toSave); + + } else { + + // update + saved = update(toSave); + + } + + return saved; + + } + + + @Override + public void delete(String activitySeineId, String setSeineId) { + + // on doit supprimer physiquement la set + // car il n'y a pas de delete-orphan sur une telle + // relation + SetSeineDAO dao = getDao(); + SetSeine setSeine = dao.findByTopiaId(setSeineId); + dao.delete(setSeine); + + // supprime la reference sur l'activity + ActivitySeine activitySeine = findByTopiaId(ActivitySeine.class, activitySeineId); + activitySeine.setSetSeine(null); + + } + + @Override + public TopiaEntityBinder<SetSeine> getBinderForEdit() { + + TopiaEntityBinder<SetSeine> binder = loadBinder("-forEdit", SetSeine.class, new CreateBinder<SetSeine>() { + + @Override + public BinderModelBuilder<SetSeine, SetSeine> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<SetSeine, SetSeine> builder = binderService.newBinderBuilder( + SetSeine.class, + SetSeine.PROPERTY_COMMENT, + SetSeine.PROPERTY_SUPPORT_VESSEL_NAME, + SetSeine.PROPERTY_START_TIME, + SetSeine.PROPERTY_END_SET_TIME_STAMP, + SetSeine.PROPERTY_END_PURSING_TIME_STAMP, + SetSeine.PROPERTY_CURRENT_DIRECTION, + SetSeine.PROPERTY_CURRENT_SPEED, + SetSeine.PROPERTY_REASON_FOR_NULL_SET, + SetSeine.PROPERTY_SCHOOL_THICKNESS, + SetSeine.PROPERTY_MAX_GEAR_DEPTH, + SetSeine.PROPERTY_SCHOOL_MEAN_DEPTH, + SetSeine.PROPERTY_SCHOOL_TOP_DEPTH, + SetSeine.PROPERTY_CURRENT_MEASURE_DEPTH, + SetSeine.PROPERTY_TARGET_DISCARDED, + SetSeine.PROPERTY_NON_TARGET_DISCARDED, + SetSeine.PROPERTY_SCHOOL_TYPE, + SetSeine.PROPERTY_SONAR_USED, + SetSeine.PROPERTY_TARGET_SAMPLE, + SetSeine.PROPERTY_NON_TARGET_SAMPLE); + + return builder; + + } + + }); + + return binder; + + } + + @Override + public void copyForEdit(SetSeine source, SetSeine target) { + + getBinderForEdit().load(source, target, true); + + } + + protected SetSeineDAO getDao() { + return (SetSeineDAO) getDao(SetSeine.class); + } + + protected SetSeine create(String activitySeineId, SetSeine toCreate) { + + SetSeineDAO dao = getDao(); + SetSeine created = dao.create(toCreate); + + ActivitySeine activitySeine = findByTopiaId(ActivitySeine.class, activitySeineId); + activitySeine.setSetSeine(created); + + return created; + + } + + protected SetSeine update(SetSeine toUpdate) { + + SetSeine updated = getDao().findByTopiaId(toUpdate.getTopiaId()); + getBinderForEdit().copyExcluding(toUpdate, updated, + SetSeine.PROPERTY_TARGET_SAMPLE, + SetSeine.PROPERTY_NON_TARGET_SAMPLE); + return updated; + + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java new file mode 100644 index 0000000..84fb0e4 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java @@ -0,0 +1,30 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.seine.TargetLength; +import fr.ird.observe.services.ObserveService; + +import java.util.Collection; +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface TargetSampleService extends ObserveService { + + List<Species> getAvailableEspeceForTargetSample(String setSeineId, boolean discarded); + + String getTargetSampleId(String setSeineId, boolean discarded); + + boolean canUseTargetSample(String setSeineId, boolean discarded); + + void getObsoleteEspeceForTargetSample(String setSeineId, + Collection<Species> speciessUsed, + Collection<Species> speciessToDelete, + List<TargetLength> tailleToDelete, + boolean discarded); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java new file mode 100644 index 0000000..b9d8aaa --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java @@ -0,0 +1,142 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.entities.seine.TargetCatch; +import fr.ird.observe.entities.seine.TargetLength; +import fr.ird.observe.entities.seine.TargetSample; +import fr.ird.observe.services.AbstractObserveService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * Created on 4/26/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class TargetSampleServiceImpl extends AbstractObserveService implements TargetSampleService { + + /** Logger. */ + private static final Log log = LogFactory.getLog(TargetSampleServiceImpl.class); + + @Override + public List<Species> getAvailableEspeceForTargetSample(String setSeineId, boolean discarded) { + + List<Species> speciesList = new ArrayList<Species>(); + + SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); + + // on recupere la liste des espèces thon utilisees dans le rejet + Collection<TargetCatch> targetCatches = setSeine.getTargetCatch(); + + // on filtre sur les espèces montées sur le pont et rejetées + + if (targetCatches != null) { + + for (TargetCatch targetCatch : targetCatches) { + + boolean keep; + + if (discarded) { + + // on ne conserve que les espèces rejectées montées sur le pont + keep = targetCatch.isDiscarded() && targetCatch.getBroughtOnDeck(); + + } else { + + // on ne conserve que les espèces rejectées + keep = !targetCatch.isDiscarded(); + } + + if (keep && + !speciesList.contains(targetCatch.getWeightCategory().getSpecies())) { + speciesList.add(targetCatch.getWeightCategory().getSpecies()); + } + + } + + } + + return speciesList; + + } + + + @Override + public String getTargetSampleId(String setSeineId, boolean discarded) { + + SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); + + String targetSampleId = null; + + if (!setSeine.isNonTargetSampleEmpty()) { + + List<TargetSample> targetSamples = setSeine.getTargetSample(); + for (TargetSample targetSample : targetSamples) { + + Boolean isDiscarded = targetSample.getDiscarded(); + + if (discarded) { + if (isDiscarded != null && isDiscarded) { + targetSampleId = targetSample.getTopiaId(); + } + } else if (isDiscarded == null || !isDiscarded) { + targetSampleId = targetSample.getTopiaId(); + } + + } + + } + + return targetSampleId; + + } + + @Override + public boolean canUseTargetSample(String setSeineId, boolean discarded) { + + SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); + return setSeine.canUseTargetSample(discarded); + + } + + @Override + public void getObsoleteEspeceForTargetSample(String setSeineId, + Collection<Species> speciessUsed, + Collection<Species> speciessToDelete, + List<TargetLength> tailleToDelete, + boolean discarded) { + + SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); + + if (setSeine.isTargetSampleEmpty()) { + return; + } + + TargetSample echantillon = setSeine.getTargetSample(discarded); + + if (echantillon == null || echantillon.isTargetLengthEmpty()) { + return; + } + + for (TargetLength taille : echantillon.getTargetLength()) { + Species tailleEspece = taille.getSpecies(); + if (!speciessUsed.contains(tailleEspece)) { + // l'species n'existe plus dans les rejet faune, + // on doit le supprimer + tailleToDelete.add(taille); + speciessToDelete.add(tailleEspece); + if (log.isDebugEnabled()) { + log.debug("remove obsolote echantillon " + taille + " for species " + tailleEspece); + } + } + } + + } + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java new file mode 100644 index 0000000..bd16f3e --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java @@ -0,0 +1,42 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.Commit; +import fr.ird.observe.services.NoTransaction; +import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface TripSeineService extends ObserveService { + + List<TripSeine> getTripSeineStubByProgram(String programId); + + TripSeine getTripSeineStub(String tripSeineId); + + List<TripSeine> loadAllByProgramForDisplay(String programId); + + TripSeine loadForDisplay(String tripSeineId); + + TripSeine loadForEdit(String tripSeineId); + + TripSeine preCreate(String programId); + + @Commit + TripSeine save(TripSeine toSave); + + @Commit + void delete(String tripSeineId); + + @NoTransaction + TopiaEntityBinder<TripSeine> getBinderForEdit(); + + @NoTransaction + void copyForEdit(TripSeine source, TripSeine target); +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineServiceImpl.java new file mode 100644 index 0000000..0d99d82 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineServiceImpl.java @@ -0,0 +1,203 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.entities.seine.Routes; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.entities.seine.TripSeineDAO; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.util.DateUtil; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.Date; +import java.util.List; + +/** + * Created on 4/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class TripSeineServiceImpl extends AbstractObserveService implements TripSeineService { + + protected TripSeineDAO getDao() { + return (TripSeineDAO) getDao(TripSeine.class); + } + + @Override + public List<TripSeine> getTripSeineStubByProgram(String programId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + List<TripSeine> result = getDao().findAllStubByProgramId(programId, referentielLocale); + return result; + + } + + @Override + public TripSeine getTripSeineStub(String tripId) { + + ReferenceLocale referentielLocale = getReferentielLocale(); + TripSeine result = getDao().findStubByTopiaId(tripId, referentielLocale); + return result; + + } + + @Override + public List<TripSeine> loadAllByProgramForDisplay(String programId) { + + ReferenceLocale referenceLocale = getReferentielLocale(); + List<TripSeine> loaded = getDao().findAllStubByProgramId(programId, referenceLocale); + return loaded; + + } + + @Override + public TripSeine loadForDisplay(String tripSeineId) { + + TripSeine loaded = getDao().newInstance(); + TripSeine toLoad = getDao().findByTopiaId(tripSeineId); + copyForEdit(toLoad, loaded); + + if (!loaded.isRouteEmpty()) { + + // on force le trie des routes + Routes.sort(loaded.getRoute()); + } + + return loaded; + + } + + @Override + public TripSeine loadForEdit(String tripSeineId) { + + TripSeine loaded = loadForDisplay(tripSeineId); + if (loaded.getEndDate() == null) { + Date date = DateUtil.getEndOfDay(now()); + loaded.setEndDate(date); + } + + return loaded; + + } + + @Override + public TripSeine preCreate(String programId) { + + Program program = findByTopiaId(Program.class, programId); + + TripSeine preCreated = getDao().newInstance(); + + Date date = DateUtil.getDay(now()); + preCreated.setStartDate(date); + preCreated.setEndDate(date); + preCreated.setProgram(program); + + return preCreated; + + } + + @Override + public TripSeine save(TripSeine toSave) { + + // on force toujours la date a etre sans heure, minute,... + Date startDate = DateUtil.getDay(toSave.getStartDate()); + toSave.setStartDate(startDate); + + // mise a jour de la date de fin + toSave.updateDateFin(); + + TripSeine saved; + + if (toSave.getTopiaId() == null) { + + // create + saved = create(toSave); + + } else { + + // update + saved = update(toSave); + + } + + return saved; + + } + + @Override + public void delete(String tripSeineId) { + + TripSeineDAO dao = getDao(); + TripSeine toDelete = dao.findByTopiaId(tripSeineId); + dao.delete(toDelete); + + } + + @Override + public TopiaEntityBinder<TripSeine> getBinderForEdit() { + + TopiaEntityBinder<TripSeine> r = loadBinder("-forEdit", TripSeine.class, new CreateBinder<TripSeine>() { + + @Override + public BinderModelBuilder<TripSeine, TripSeine> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<TripSeine, TripSeine> builder = binderService.newBinderBuilder( + TripSeine.class, + TripSeine.PROPERTY_START_DATE, + TripSeine.PROPERTY_END_DATE, + TripSeine.PROPERTY_FORMS_URL, + TripSeine.PROPERTY_REPORTS_URL, + TripSeine.PROPERTY_COMMENT, + TripSeine.PROPERTY_VESSEL, + TripSeine.PROPERTY_OBSERVER, + TripSeine.PROPERTY_CAPTAIN, + TripSeine.PROPERTY_DATA_ENTRY_OPERATOR, + TripSeine.PROPERTY_OCEAN, + TripSeine.PROPERTY_DEPARTURE_HARBOUR, + TripSeine.PROPERTY_LANDING_HARBOUR, + TripSeine.PROPERTY_PROGRAM, + TripSeine.PROPERTY_ROUTE, + TripSeine.PROPERTY_ERS_ID, + TripSeine.PROPERTY_OPEN); + + // on ajoute la recopie de l'association route + builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, TripSeine.PROPERTY_ROUTE); + + return builder; + } + + }); + + return r; + + } + + @Override + public void copyForEdit(TripSeine source, TripSeine target) { + + getBinderForEdit().load(source, target, true); + + } + + protected TripSeine create(TripSeine toCreate) { + + TripSeineDAO dao = getDao(); + TripSeine created = dao.create(toCreate); + return created; + + } + + protected TripSeine update(TripSeine toUpdate) { + + TripSeineDAO dao = getDao(); + TripSeine updated = dao.findByTopiaId(toUpdate.getTopiaId()); + getBinderForEdit().copyExcluding(toUpdate, updated, TripSeine.PROPERTY_ROUTE); + return updated; + + } + +} diff --git a/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java b/observe-services/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java similarity index 94% rename from observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java rename to observe-services/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java index 5877ba4..abb314a 100644 --- a/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java +++ b/observe-services/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java @@ -19,11 +19,8 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.db.model; +package fr.ird.observe.services.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; @@ -31,6 +28,10 @@ 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; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.longline.TripLonglineService; +import fr.ird.observe.services.data.seine.TripSeineService; +import fr.ird.observe.services.referential.ReferentialService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -58,24 +59,25 @@ import java.util.TreeMap; */ public class DataSelectionModel implements Serializable { - public static void populate(DataSelectionModel model, - DataService service, - DataSource source) throws Exception { + public static void populate(DataSelectionModel model, ObserveServiceFactory services) throws Exception { - source.checkState(DataSourceState.OPEN); +// source.checkState(DataSourceState.OPEN); Map<String, List<String>> datas = new HashMap<String, List<String>>(); - List<Program> programs = service.getAllProgramStub(source); + TripSeineService tripSeineService = services.getService(TripSeineService.class); + TripLonglineService tripLonglineService = services.getService(TripLonglineService.class); + + List<Program> programs = services.getService(ReferentialService.class).getAllProgramStub(); for (Program program : programs) { if (Programs.isProgramSeine(program)) { - List<TripSeine> trips = service.getTripSeineStubByProgram(source, program.getTopiaId()); + List<TripSeine> trips = tripSeineService.getTripSeineStubByProgram(program.getTopiaId()); populate(model, program, trips, datas); } if (Programs.isProgramLongline(program)) { - List<TripLongline> trips = service.getTripLonglineStubByProgram(source, program.getTopiaId()); + List<TripLongline> trips = tripLonglineService.getTripLonglineStubByProgram(program.getTopiaId()); populate(model, program, trips, datas); } diff --git a/observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialService.java b/observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialService.java new file mode 100644 index 0000000..c00066a --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialService.java @@ -0,0 +1,32 @@ +package fr.ird.observe.services.referential; + +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.entities.referentiel.ReferenceEntity; +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.services.ObserveService; + +import java.util.List; +import java.util.Set; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface ReferentialService extends ObserveService { + + List<Program> getAllProgramStub(); + + int getProgramPosition(String programId); + + Program getProgramStub(String programId); + + <E extends ReferenceEntity> List<E> loadAndDecorateList(Class<E> entityType); + + <E extends ReferenceEntity> E loadAndDecorate(Class<E> entityType, String topiaId); + + List<Species> loadDecoratedSpecies(String speciesListCode); + + Set<String> getSpeciesListSpeciesIds(String speciesListId); +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialServiceImpl.java new file mode 100644 index 0000000..99edc58 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialServiceImpl.java @@ -0,0 +1,103 @@ +package fr.ird.observe.services.referential; + +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.entities.referentiel.ProgramDAO; +import fr.ird.observe.entities.referentiel.Programs; +import fr.ird.observe.entities.referentiel.ReferenceEntity; +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.referentiel.SpeciesList; +import fr.ird.observe.services.AbstractObserveService; +import org.apache.commons.collections.CollectionUtils; +import org.nuiton.topia.persistence.util.TopiaEntityHelper; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +/** + * Created on 4/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ReferentialServiceImpl extends AbstractObserveService implements ReferentialService { + + @Override + public List<Program> getAllProgramStub() { + + ProgramDAO dao = (ProgramDAO) getDao(Program.class); + ReferenceLocale referentielLocale = getReferentielLocale(); + List<Program> result = dao.findAllStub(referentielLocale); + return result; + + } + + @Override + public int getProgramPosition(String programId) { + + List<Program> allProgramStub = getAllProgramStub(); + Program programStub = getProgramStub(programId); + int result=0; + if (CollectionUtils.isNotEmpty(allProgramStub)) { + Programs.sort(allProgramStub); + result= allProgramStub.indexOf(programStub); + } + return result; + } + + @Override + public Program getProgramStub(String programId) { + + ProgramDAO dao = (ProgramDAO) getDao(Program.class); + ReferenceLocale referentielLocale = getReferentielLocale(); + Program result = dao.findStubByTopiaId(programId, referentielLocale); + return result; + + } + + @Override + public <E extends ReferenceEntity> List<E> loadAndDecorateList(Class<E> entityType) { + + List<E> entities = getDao(entityType).findAll(); + decorate(entityType, entities); + return Lists.newArrayList(entities); + + } + + @Override + public <E extends ReferenceEntity> E loadAndDecorate(Class<E> entityType, String topiaId) { + + E entity = findByTopiaId(entityType, topiaId); + decorate(entityType, entity); + return entity; + + } + + public List<Species> loadDecoratedSpecies(String speciesListCode) { + + List<Species> speciess = new ArrayList<Species>(); + + SpeciesList speciesList = findByTopiaId(SpeciesList.class, speciesListCode); + + speciess.addAll(speciesList.getSpecies()); + + decorate(Species.class, speciess); + + return speciess; + + } + + + public Set<String> getSpeciesListSpeciesIds(String speciesListId) { + + SpeciesList speciesList = findByTopiaId(SpeciesList.class, speciesListId); + + Set<String> ids = Sets.newHashSet(TopiaEntityHelper.getTopiaIdList(speciesList.getSpecies())); + + return ids; + + } +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/ActivitySeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/ActivitySeineServiceImpl.java deleted file mode 100644 index 05dbef3..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/ActivitySeineServiceImpl.java +++ /dev/null @@ -1,65 +0,0 @@ -package fr.ird.observe.services.seine; - -import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.entities.seine.ActivitySeine; -import fr.ird.observe.services.AbstractObserveService; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; - -import java.util.List; - -/** - * Created on 4/24/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class ActivitySeineServiceImpl extends AbstractObserveService<ActivitySeine> { - - public ActivitySeineServiceImpl(DataSource dataSource) { - super(ActivitySeine.class, dataSource); - } - - @Override - protected TopiaDAO<ActivitySeine> getDao(TopiaContext tx) throws TopiaException { - return ObserveDAOHelper.getActivitySeineDAO(tx); - } - - public List<ActivitySeine> loadAllByRouteForDisplay(String routeId) { - List<ActivitySeine> loaded = null; - return loaded; - } - - public ActivitySeine loadForEdit(String activitySeineId) { - ActivitySeine loaded = null; - return loaded; - } - - public ActivitySeine loadForEditObservedSystem(String activitySeineId) { - ActivitySeine loaded = null; - return loaded; - } - - public ActivitySeine preCreate(String routeId) { - ActivitySeine result = null; - return result; - } - - public ActivitySeine create(ActivitySeine toCreate) { - ActivitySeine created = null; - return created; - } - - public void update(ActivitySeine toUpdate) { - } - - public void updateObservedSystem(ActivitySeine toUpdate) { - - } - - public void delete(String activitySeineId) { - } - -} diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/RouteServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/RouteServiceImpl.java deleted file mode 100644 index 5dbbee4..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/RouteServiceImpl.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ird.observe.services.seine; - -import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.entities.seine.Route; -import fr.ird.observe.services.AbstractObserveService; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; - -import java.util.List; - -/** - * Created on 4/24/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class RouteServiceImpl extends AbstractObserveService<Route> { - - public RouteServiceImpl(DataSource dataSource) { - super(Route.class,dataSource); - } - - @Override - protected TopiaDAO<Route> getDao(TopiaContext tx) throws TopiaException { - return ObserveDAOHelper.getRouteDAO(tx); - } - - public List<Route> loadAllByTripForDisplay(String tripSeineId) { - List<Route> loaded = null; - return loaded; - } - - public Route loadForEdit(String routeId) { - Route loaded = null; - return loaded; - } - - public Route preCreate(String tripSeineId) { - Route preCreated = null; - return preCreated; - } - - public Route create(Route toCreate) { - Route created = null; - return created; - } - - public void update(Route toUpdate) { - } - - public void delete(String routeId) { - } - -} diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/SetSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/SetSeineServiceImpl.java deleted file mode 100644 index 33208ac..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/SetSeineServiceImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -package fr.ird.observe.services.seine; - -import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.entities.seine.SetSeine; -import fr.ird.observe.services.AbstractObserveService; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; - -/** - * Created on 4/24/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class SetSeineServiceImpl extends AbstractObserveService<SetSeine> { - - public SetSeineServiceImpl(DataSource dataSource) { - super(SetSeine.class, dataSource); - } - - @Override - protected TopiaDAO<SetSeine> getDao(TopiaContext tx) throws TopiaException { - return ObserveDAOHelper.getSetSeineDAO(tx); - } - - public SetSeine loadForEdit(String setSeineId) { - SetSeine loaded = null; - return loaded; - } - - public SetSeine loadForEditObservedSystem(String setSeineId) { - SetSeine loaded = null; - return loaded; - } - - public SetSeine preCreate(String routeId) { - SetSeine result = null; - return result; - } - - public SetSeine create(SetSeine toCreate) { - SetSeine created = null; - return created; - } - - public void update(SetSeine toUpdate) { - } - - public void updateObservedSystem(SetSeine toUpdate) { - - } - - public void delete(String setSeineId) { - } - -} diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/TripSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/TripSeineServiceImpl.java deleted file mode 100644 index 86035ba..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/TripSeineServiceImpl.java +++ /dev/null @@ -1,56 +0,0 @@ -package fr.ird.observe.services.seine; - -import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.services.AbstractObserveService; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; - -import java.util.List; - -/** - * Created on 4/24/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class TripSeineServiceImpl extends AbstractObserveService<TripSeine> { - - public TripSeineServiceImpl(DataSource dataSource) { - super(TripSeine.class,dataSource); - } - - @Override - protected TopiaDAO<TripSeine> getDao(TopiaContext tx) throws TopiaException { - return ObserveDAOHelper.getTripSeineDAO(tx); - } - - public List<TripSeine> loadAllByProgramForDisplay(String programId) { - List<TripSeine> loaded = null; - return loaded; - } - - public TripSeine loadForEdit(String tripSeineId) { - TripSeine loaded = null; - return loaded; - } - - public TripSeine preCreate(String programId) { - TripSeine preCreated = null; - return preCreated; - } - - public TripSeine create(TripSeine toCreate) { - TripSeine created = null; - return created; - } - - public void update(TripSeine toUpdate) { - } - - public void delete(String tripSeineId) { - } - -} diff --git a/observe-swing/src/main/java/fr/ird/observe/ObserveContext.java b/observe-swing/src/main/java/fr/ird/observe/ObserveContext.java index da6a48f..750762e 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ObserveContext.java +++ b/observe-swing/src/main/java/fr/ird/observe/ObserveContext.java @@ -28,11 +28,14 @@ import fr.ird.observe.db.constants.DbMode; import fr.ird.observe.db.event.DataSourceEvent; import fr.ird.observe.db.event.DataSourceListenerAdapter; import fr.ird.observe.db.impl.H2DataSource; -import fr.ird.observe.ui.actions.ChangeStorageAction; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.OpenableService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.actions.ChangeStorageAction; import fr.ird.observe.ui.actions.shared.AbstractUIAction; import fr.ird.observe.ui.actions.shared.CancelCreateUIAction; import fr.ird.observe.ui.actions.shared.CloseAndCreateUIAction; @@ -233,6 +236,19 @@ public class ObserveContext extends ObserveApplicationContext { ObserveRunner.getRunner().setReload(true); } + public static ObserveServiceFactory newServiceFactory(DataSource dataSource) { + return ObserveServiceFactory.newFactory(get(), dataSource); + } + + public <S extends ObserveService> S getService(Class<S> serviceType) { + S service = services.getService(serviceType); + return service; + } + + public ObserveServiceFactory getServices() { + return services; + } + public void initStorage(ObserveConfig config, ObserveMainUI mainUI, boolean askToCreate) { @@ -501,7 +517,7 @@ public class ObserveContext extends ObserveApplicationContext { treeHelper.cleanNavigationUI(mainUI); - String[] openIds = getDataService().getOpenIds(source); + String[] openIds = getService(OpenableService.class).getOpenIds(); mainUI.getDataContext().populateOpens(openIds); treeHelper.loadNavigationUI(source, mainUI); @@ -591,4 +607,12 @@ public class ObserveContext extends ObserveApplicationContext { // return on; // } + private final ObserveServiceFactory services = ObserveServiceFactory.newFactory(this); + + @Override + public void setDataSource(DataSource dataSource) { + super.setDataSource(dataSource); + services.close(); + services.setDataSource(dataSource); + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java b/observe-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java index 95fcad1..5b1e2cf 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java @@ -22,7 +22,6 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.DataService; import fr.ird.observe.ObserveConfig; import fr.ird.observe.ObserveConfigOption; import fr.ird.observe.ObserveContext; @@ -31,6 +30,7 @@ import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.referentiel.SpeciesList; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUICallback; @@ -98,14 +98,12 @@ public class ShowConfigAction extends AbstractAction { boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); if (canContinue) { - DataSource dataSource = ObserveContext.get().getDataSource(); - ObserveConfig config = ui.getConfig(); ObserveConfigUIBuilder helper; try { - helper = buildUI(config, dataSource); + helper = buildUI(config); } catch (DataSourceException e) { throw new ObserveTechnicalException("Could not load some data", e); } @@ -118,11 +116,15 @@ public class ShowConfigAction extends AbstractAction { } - protected ObserveConfigUIBuilder buildUI(ObserveConfig config, DataSource dataSource) throws DataSourceException { + protected ObserveConfigUIBuilder buildUI(ObserveConfig config) throws DataSourceException { SpeciesListTableCellEditor editor; SpeciesListsTableCellRenderer renderer; + ObserveContext observeContext = ObserveContext.get(); + + DataSource dataSource = observeContext.getDataSource(); + if (dataSource == null) { editor = null; @@ -130,12 +132,11 @@ public class ShowConfigAction extends AbstractAction { } else { - DataService dataService = ObserveContext.get().getDataService(); - - Decorator<SpeciesList> speciesListDecorator = dataService.getDecoratorService().getDecoratorByType(SpeciesList.class); + Decorator<SpeciesList> speciesListDecorator = observeContext.getDecoratorService().getDecoratorByType(SpeciesList.class); // load species lists - List<SpeciesList> speciesLists = dataService.loadDecoratedEntities(dataSource, SpeciesList.class); + ReferentialService referentialService = observeContext.getService(ReferentialService.class); + List<SpeciesList> speciesLists = referentialService.loadAndDecorateList(SpeciesList.class); Map<String, SpeciesList> speciesListMap = Entities.toIdMap(speciesLists); @@ -222,7 +223,7 @@ public class ShowConfigAction extends AbstractAction { protected void addH2Options(ObserveConfigUIBuilder helper) { helper.addCategory(n("observe.config.category.h2"), - n("observe.config.category.h2.description")); + n("observe.config.category.h2.description")); helper.addOption(ObserveConfigOption.H2_LOGIN); helper.addOption(ObserveConfigOption.H2_PASSWORD); @@ -234,7 +235,7 @@ public class ShowConfigAction extends AbstractAction { protected void addObstunaOptions(ObserveConfigUIBuilder helper) { helper.addCategory(n("observe.config.category.obstuna"), - n("observe.config.category.obstuna.description")); + n("observe.config.category.obstuna.description")); helper.addOption(ObserveConfigOption.OBSTUNA_URL); helper.addOption(ObserveConfigOption.OBSTUNA_LOGIN); @@ -263,7 +264,7 @@ public class ShowConfigAction extends AbstractAction { protected void addGpsOptions(ObserveConfigUIBuilder helper) { helper.addCategory(n("observe.config.category.gps"), - n("observe.config.category.gps.description")); + n("observe.config.category.gps.description")); helper.addOption(ObserveConfigOption.DEFAULT_GPS_MAX_DELAY); helper.addOption(ObserveConfigOption.DEFAULT_GPS_MAX_SPEED); @@ -273,7 +274,7 @@ public class ShowConfigAction extends AbstractAction { protected void addSynchroOptions(ObserveConfigUIBuilder helper) { helper.addCategory(n("observe.config.category.synchro"), - n("observe.config.category.synchro.description")); + n("observe.config.category.synchro.description")); helper.addOption(ObserveConfigOption.CHANGE_SYNCHRO_SRC); helper.addOption(ObserveConfigOption.H2_CAN_MIGRATE); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java index 7dc1127..e5f1f1f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java @@ -35,7 +35,7 @@ import fr.ird.observe.db.ReplicationService; import fr.ird.observe.db.event.DataSourceEvent; import fr.ird.observe.db.event.DataSourceListener; import fr.ird.observe.db.event.DataSourceListenerAdapter; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.gps.GPSService; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index ebbe452..823288e 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -23,6 +23,7 @@ package fr.ird.observe.ui.admin; import fr.ird.observe.DataService; import fr.ird.observe.ObserveConfig; +import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceConfig; @@ -30,10 +31,11 @@ import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DbMode; import fr.ird.observe.db.impl.H2DataSource; import fr.ird.observe.db.impl.PGDataSource; -import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.Trip; import fr.ird.observe.entities.Trips; import fr.ird.observe.report.model.Report; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.ui.admin.export.ExportModel; import fr.ird.observe.ui.admin.gps.ImportGPSModel; @@ -180,7 +182,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (containsOperation(AdminStep.EXPORT_DATA)) { // on doit aussi calculer les ids des marées distantes - computeExistingTrips(dataService, getSafeCentralSource(true)); + DataSource safeCentralSource = getSafeCentralSource(true); + ObserveServiceFactory services = ObserveContext.newServiceFactory(safeCentralSource); + try { + computeExistingTrips(services); + } finally { + services.close(); + } } @@ -189,7 +197,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { log.debug("Will refill selectionModel [" + newStep + "] : " + selectModel); } DataSource dataSource = getSafeLocalSource(true); - populateSelectionModel(dataService, dataSource); + + ObserveServiceFactory services = ObserveContext.newServiceFactory(dataSource); + try { + populateSelectionModel(services); + } finally { + services.close(); + } } }; @@ -1265,9 +1279,9 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - public void populateSelectionModel(DataService dataService, DataSource source) { + public void populateSelectionModel(ObserveServiceFactory services) { try { - DataSelectionModel.populate(getSelectionDataModel(), dataService, source); + DataSelectionModel.populate(getSelectionDataModel(), services); } catch (Exception e) { if (log.isErrorEnabled()) { log.error("could not populate selected model", e); @@ -1280,12 +1294,12 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - protected void computeExistingTrips(DataService dataService, DataSource source) { + protected void computeExistingTrips(ObserveServiceFactory services) { DataSelectionModel selectionModel = new DataSelectionModel(); selectionModel.setUseOpenData(true); try { - DataSelectionModel.populate(selectionModel, dataService, source); + DataSelectionModel.populate(selectionModel, services); } catch (Exception e) { if (log.isErrorEnabled()) { log.error("could not populate selected model", e); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/config/SelectDataUI.jaxx b/observe-swing/src/main/java/fr/ird/observe/ui/admin/config/SelectDataUI.jaxx index c275b5b..f55f2c7 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/config/SelectDataUI.jaxx +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/config/SelectDataUI.jaxx @@ -27,7 +27,7 @@ <fr.ird.observe.ui.admin.AdminTabUI> <import> - fr.ird.observe.db.model.DataSelectionModel + fr.ird.observe.services.model.DataSelectionModel fr.ird.observe.ui.UIHelper fr.ird.observe.ui.admin.AdminUI fr.ird.observe.ui.admin.AdminStep diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java index ba8e371..be55ccb 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java @@ -26,7 +26,7 @@ import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.ActivitySeine; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java index 97e2ca6..29ee79a 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.admin.export; import com.google.common.collect.ImmutableList; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.entities.Trip; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.referentiel.Program; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java index 7f76253..c47c714 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java @@ -22,12 +22,15 @@ package fr.ird.observe.ui.admin.export; import fr.ird.observe.DecoratorService; +import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.Trip; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.TripService; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; @@ -249,12 +252,18 @@ public class ExportUIHandler extends AdminTabUIHandler { ExportModel stepModel = model.getExportModel(); + DataSource centralSource = stepModel.getCentralSource(); + DataSource localSource = stepModel.getSource(); + + ObserveServiceFactory centralServices = ObserveContext.newServiceFactory(centralSource); + ObserveServiceFactory localServices = ObserveContext.newServiceFactory(localSource ); + // on filtre les marées sélectionnées pour export List<TripEntry> tripEntries = stepModel.getSelectedTrips(); for (TripEntry tripEntry : tripEntries) { - processTrip(stepModel, tripEntry); + processTrip(stepModel, tripEntry,localServices, centralServices); } @@ -263,7 +272,7 @@ public class ExportUIHandler extends AdminTabUIHandler { return WizardState.SUCCESSED; } - protected void processTrip(ExportModel stepModel, TripEntry tripEntry) throws Exception { + protected void processTrip(ExportModel stepModel, TripEntry tripEntry, ObserveServiceFactory localServices, ObserveServiceFactory centralServices) throws Exception { DataSource centralSource = stepModel.getCentralSource(); DataSource source = stepModel.getSource(); @@ -284,7 +293,8 @@ public class ExportUIHandler extends AdminTabUIHandler { } sendMessage(t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); - getDataService().deleteTrip(centralSource, tripId); + TripService service = centralServices.getService(TripService.class); + service.deleteTrip(tripId); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java index bef7919..1f62ecb 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.admin.report; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.report.model.DataMatrix; import fr.ird.observe.report.model.Report; import fr.ird.observe.report.model.ReportExecute; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java index 82005cb..f6b84da 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java @@ -27,7 +27,7 @@ import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.ui.UIHelper; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java index 05f636a..3fcbcca 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java @@ -33,13 +33,13 @@ import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.db.util.TopiaExecutor; import fr.ird.observe.db.util.TopiaExecutor2; import fr.ird.observe.entities.referentiel.ReferenceEntity; +import fr.ird.observe.services.ObserveService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.actions.shared.AbstractUIAction; import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; import fr.ird.observe.ui.tree.AbstractObserveTreeCellRenderer; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; -import fr.ird.observe.util.DBHelper; import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.JAXXButtonGroup; @@ -56,7 +56,6 @@ import org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaEntityAbstract; import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.validator.NuitonValidatorScope; @@ -164,9 +163,9 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { } - protected static void attachTopiaContext(DataSource service, TopiaEntityAbstract entity) { - DBHelper.attachTopiaContext(service.getRootCtxt(), entity); - } +// protected static void attachTopiaContext(DataSource service, TopiaEntityAbstract entity) { +// DBHelper.attachTopiaContext(service.getRootCtxt(), entity); +// } public static ObserveTreeHelper getTreeHelper(JAXXContext context) { return context.getContextValue(ObserveTreeHelper.class); @@ -278,10 +277,10 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { model.addMessages((JComponent) ui, fieldName, scope, message); } - public static void removeAllMessages(ContentUI<?> ui, NuitonValidatorScope scope, String fieldName) { - SwingValidatorMessageTableModel model = ui.getErrorTableModel(); - model.removeMessages(ui, fieldName, scope); - } +// public static void removeAllMessages(ContentUI<?> ui, NuitonValidatorScope scope, String fieldName) { +// SwingValidatorMessageTableModel model = ui.getErrorTableModel(); +// model.removeMessages(ui, fieldName, scope); +// } public static void removeAllMessages(ObserveContentUI<?> ui) { SwingValidatorMessageTableModel model = ui.getErrorTableModel(); @@ -361,7 +360,7 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { public void initUI() throws Exception { ContentUIInitializer<E, ObserveContentUI<E>> uiInitializer = new ContentUIInitializer<E, ObserveContentUI<E>>(ui); - uiInitializer.initUI(getDataSource()); + uiInitializer.initUI(ObserveContext.get().getServices()); } @@ -490,11 +489,9 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { // on ne peut redemarrer une edition que si la donnee // est exactement une entites (pas possible sur une liste) ObserveTreeHelper treeHelper = getTreeHelper(ui); -// ObserveNode node = treeHelper.getSelectedNode(); removeAllMessages(ui); -// treeHelper.refreshNode(node, true); treeHelper.reloadSelectedNode(false, true); model.setMode(ContentMode.UPDATE); @@ -505,7 +502,8 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { updateActions(); } - public final void saveUI(boolean refresh) { + //TODO a remplacer par saveUI2 + public void saveUI(boolean refresh) { boolean ok = false; try { ok = doSave(getBean(), @@ -525,6 +523,23 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { } } + public void saveUI2(boolean refresh) { + boolean ok = false; + try { + ok = doSave(getBean()); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e); + } + } finally { + if (ok) { + afterSave(refresh); + } + } + } + + //TODO a remplacer par doSave simple protected boolean doSave(E bean, DataService dataService, DataSource dataSource, @@ -532,6 +547,10 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { return false; } + protected boolean doSave(E bean) throws Exception { + return false; + } + protected void afterSave(boolean refresh) { // mettre les validateurs en mode non modifié @@ -570,7 +589,8 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { } - public final void deleteUI() { + //TODO a remplacer par deleteUI2 + public void deleteUI() { boolean ok = false; ui.stopEdit(); removeAllMessages(ui); @@ -591,6 +611,7 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { } } + //TODO a remplacer par doDelete simple protected boolean doDelete(E bean, DataService dataService, DataSource dataSource, @@ -598,10 +619,30 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { return false; } - protected boolean askToDelete(E bean) { - boolean accept = - UIHelper.confirmForEntityDelete(ui, getBeanType(), bean); + public void deleteUI2() { + boolean ok = false; + ui.stopEdit(); + removeAllMessages(ui); + try { + ok = doDelete(getBean()); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e); + } + } finally { + if (ok) { + afterDelete(); + } + } + } + + protected boolean doDelete(E bean) { + return false; + } + protected boolean askToDelete(E bean) { + boolean accept = UIHelper.confirmForEntityDelete(ui, getBeanType(), bean); return !accept; } @@ -751,6 +792,10 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { return ObserveContext.get().getDataService(); } + protected final <S extends ObserveService> S getService(Class<S> serviceType) { + return ObserveContext.get().getService(serviceType); + } + protected void updateActions() { updateToolbarActions(); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java index aad26b8..7d426a0 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java @@ -27,11 +27,12 @@ import com.google.common.collect.Lists; import fr.ird.observe.DataService; import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.constants.ReferenceStatus; import fr.ird.observe.entities.referentiel.ReferenceEntities; import fr.ird.observe.entities.referentiel.ReferenceEntity; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.actions.shared.AbstractUIAction; import fr.ird.observe.ui.util.BooleanEditor; @@ -133,9 +134,8 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte this.ui = ui; } - protected static void attachTopiaContext(DataSource service, - TopiaEntityAbstract entity) { - DBHelper.attachTopiaContext(service.getRootCtxt(), entity); + protected static void attachTopiaContext(ObserveServiceFactory serviceFactory, TopiaEntityAbstract entity) { + DBHelper.attachTopiaContext(serviceFactory.getDataSource().getRootCtxt(), entity); } public static TableCellEditor newFloatColumnEditor(JTable table) { @@ -197,7 +197,7 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte } - public void initUI(DataSource dataSource) throws Exception { + public void initUI(ObserveServiceFactory serviceFactory) throws Exception { if (log.isDebugEnabled()) { log.debug("ui " + getClass()); @@ -207,7 +207,7 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte // initialisation des éditeurs - init(dataSource); + init(serviceFactory); Set<String> doNotBlockComponentIds = new HashSet<String>(); @@ -221,7 +221,7 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte } if (o instanceof TopiaEntityAbstract) { - init(dataSource, (TopiaEntityAbstract) o); + init(serviceFactory, (TopiaEntityAbstract) o); continue; } @@ -245,17 +245,17 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte } if (o instanceof BeanComboBox<?>) { - init(dataSource, (BeanComboBox<?>) o); + init(serviceFactory, (BeanComboBox<?>) o); continue; } if (o instanceof BeanListHeader<?>) { - init(dataSource, decoratorService, (BeanListHeader<?>) o); + init(serviceFactory, decoratorService, (BeanListHeader<?>) o); continue; } if (o instanceof FilterableDoubleList<?>) { - init(dataSource, (FilterableDoubleList<?>) o); + init(serviceFactory, (FilterableDoubleList<?>) o); continue; } @@ -323,13 +323,13 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte ); } - protected void init(DataSource service) throws DataSourceException { + protected void init(ObserveServiceFactory serviceFactory) { - init(service, (TopiaEntityAbstract) getBean()); + init(serviceFactory, (TopiaEntityAbstract) getBean()); } - protected void init(DataSource service, TopiaEntityAbstract bean) throws DataSourceException { + protected void init(ObserveServiceFactory serviceFactory, TopiaEntityAbstract bean) { if (bean == null) { return; @@ -337,10 +337,10 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte if (log.isDebugEnabled()) { log.debug("init entity " + bean.getClass()); } - attachTopiaContext(service, bean); + attachTopiaContext(serviceFactory, bean); } - protected void init(ActionMap actionMap, AbstractButton editor) throws DataSourceException { + protected void init(ActionMap actionMap, AbstractButton editor) { String actionId = (String) editor.getClientProperty(OBSERVE_ACTION); if (actionId == null) { // le boutton n'est pas commun @@ -376,7 +376,7 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte action.initAction(null, editor); } - protected void init(NumberEditor editor) throws DataSourceException { + protected void init(NumberEditor editor) { if (log.isDebugEnabled()) { log.debug("init number editor " + editor.getName()); } @@ -384,19 +384,18 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte } @SuppressWarnings("unchecked") - protected void init(DataSource dataSource, BeanComboBox beanComboBox) throws DataSourceException { - Class<ReferenceEntity> klass = (Class<ReferenceEntity>) - beanComboBox.getHandler().getBeanType(); + protected void init(ObserveServiceFactory serviceFactory, BeanComboBox beanComboBox) { + Class<ReferenceEntity> klass = (Class<ReferenceEntity>) beanComboBox.getHandler().getBeanType(); if (log.isDebugEnabled()) { log.debug("init combobox for " + klass); } beanComboBox.setI18nPrefix("observe.common."); beanComboBox.setMinimumSize(new Dimension(0, 24)); - prepareBeanComboBox(dataSource, klass, beanComboBox); + prepareBeanComboBox(serviceFactory, klass, beanComboBox); } @SuppressWarnings("unchecked") - protected void init(DataSource dataSource, DecoratorService decoratorService, BeanListHeader beanList) throws DataSourceException { + protected void init(ObserveServiceFactory serviceFactory, DecoratorService decoratorService, BeanListHeader beanList) { beanList.setI18nPrefix("observe.common."); @@ -404,7 +403,7 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte log.info("init list for " + beanList.getBeanType()); } - prepareEntityList(dataSource, beanList.getBeanType(), beanList); + prepareEntityList(serviceFactory, beanList.getBeanType(), beanList); JList jlist = beanList.getList(); @@ -430,7 +429,7 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte } @SuppressWarnings("unchecked") - protected void init(DataSource dataSource, FilterableDoubleList beanList) throws DataSourceException { + protected void init(ObserveServiceFactory serviceFactory, FilterableDoubleList beanList) throws DataSourceException { beanList.setI18nPrefix("observe.common."); @@ -438,7 +437,7 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte log.info("init list for " + beanList.getBeanType()); } - prepareEntityList(dataSource, beanList.getBeanType(), beanList); + prepareEntityList(serviceFactory, beanList.getBeanType(), beanList); } @@ -630,22 +629,19 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte * 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 + * @param serviceFactory 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 TopiaEntity> void prepareEntityList(DataSource storageService, - Class<E> entityClass, - FilterableDoubleList<E> list) throws DataSourceException { + @SuppressWarnings("unchecked") + protected <E extends TopiaEntity> void prepareEntityList(ObserveServiceFactory serviceFactory, Class<E> entityClass, FilterableDoubleList<E> list) { - ObserveContext tx = ObserveContext.get(); + ObserveContext context = ObserveContext.get(); // init list - Decorator<E> decorator = tx.getDecorator(entityClass); + Decorator<E> decorator = context.getDecorator(entityClass); if (log.isDebugEnabled()) { log.debug("Will use decorator " + decorator); } @@ -656,7 +652,8 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte if (ReferenceEntity.class.isAssignableFrom(entityClass)) { Predicate<E> predicate = (Predicate<E>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); - data = tx.getDataService().getList(storageService, entityClass, predicate); + ReferentialService service = serviceFactory.getService(ReferentialService.class); + data = service.getList(entityClass, predicate); } else { data = new ArrayList<E>(); @@ -680,7 +677,9 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte // listen on cache modification EntityDoubleListPropertyChangeListener<E> listener = new EntityDoubleListPropertyChangeListener<E>(entityClass, list); - DataService service = ObserveContext.get().getDataService(); + + //FIXME Remove this + DataService service = context.getDataService(); service.addReferentielPropertyChangeListener(entityClass, listener); } @@ -688,22 +687,19 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte * 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 + * @param serviceFactory 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 TopiaEntity> void prepareEntityList(DataSource storageService, - Class<E> entityClass, - BeanListHeader<E> list) throws DataSourceException { + @SuppressWarnings("unchecked") + protected <E extends TopiaEntity> void prepareEntityList(ObserveServiceFactory serviceFactory, Class<E> entityClass, BeanListHeader<E> list) { - ObserveContext tx = ObserveContext.get(); + ObserveContext context = ObserveContext.get(); // init list - Decorator<E> decorator = tx.getDecorator(entityClass); + Decorator<E> decorator = context.getDecorator(entityClass); if (log.isDebugEnabled()) { log.debug("Will use decorator " + decorator); } @@ -714,7 +710,8 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte if (ReferenceEntity.class.isAssignableFrom(entityClass)) { Predicate<E> predicate = (Predicate<E>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); - data = tx.getDataService().getList(storageService, entityClass, predicate); + ReferentialService service = serviceFactory.getService(ReferentialService.class); + data = service.getList(entityClass, predicate); } else { data = new ArrayList<E>(); @@ -735,9 +732,10 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte list.putClientProperty("data", data); // listen on cache modification - EntityListPropertyChangeListener<E> listener = - new EntityListPropertyChangeListener<E>(entityClass, list); - DataService service = ObserveContext.get().getDataService(); + EntityListPropertyChangeListener<E> listener = new EntityListPropertyChangeListener<E>(entityClass, list); + + //FIXME Remove this!!! + DataService service = context.getDataService(); service.addReferentielPropertyChangeListener(entityClass, listener); } @@ -746,25 +744,19 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte * pour un service de persistance donné. * * @param <E> le type de l'entité - * @param storageService le service de persistance à utiliser pour récupérer + * @param serviceFactory 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 TopiaEntity> void prepareBeanComboBox( - DataSource storageService, - Class<E> entityClass, - BeanComboBox<E> comboBox) throws DataSourceException { + @SuppressWarnings("unchecked") + protected <E extends TopiaEntity> void prepareBeanComboBox(ObserveServiceFactory serviceFactory, Class<E> entityClass, BeanComboBox<E> comboBox) { ObserveContext context = ObserveContext.get(); // init combobox Decorator<E> decorator = context.getDecorator(entityClass); - DataService service = context.getDataService(); - Boolean noLoad = (Boolean) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_NO_LOAD); List<E> data; @@ -780,7 +772,8 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte // get complete data list from service Predicate<E> predicate = (Predicate<E>) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); - data = service.getList(storageService, entityClass, predicate); + ReferentialService service = serviceFactory.getService(ReferentialService.class); + data = service.getList(entityClass, predicate); } @@ -843,7 +836,9 @@ public class ContentUIInitializer<E extends TopiaEntity, UI extends ObserveConte super.propertyChange(evt); } }; - service.addReferentielPropertyChangeListener(entityClass, listener); + + //FIXME Remove this + context.getDataService().addReferentielPropertyChangeListener(entityClass, listener); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java index ac01be8..2227310 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java @@ -24,10 +24,8 @@ package fr.ird.observe.ui.content.impl.longline; import fr.ird.observe.DataService; import fr.ird.observe.ObserveContext; -import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.EntityMap; @@ -39,6 +37,7 @@ import fr.ird.observe.entities.longline.SectionTemplate; import fr.ird.observe.entities.longline.SectionWithTemplate; import fr.ird.observe.entities.longline.SectionWithTemplates; import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.services.data.longline.LonglineDetailCompositionService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; @@ -321,7 +320,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong this.branchlineDecorator = getDecoratorService().getDecoratorByType(Branchline.class); LonglineDetailCompositionUIInitializer uiInitializer = new LonglineDetailCompositionUIInitializer(getUi()); - uiInitializer.initUI(getDataSource()); + uiInitializer.initUI(ObserveContext.get().getServices()); LonglineDetailCompositionUI ui1 = getUi(); @@ -1478,36 +1477,33 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong boolean canDelete = true; if (section.getTopiaId() != null) { - try { - - EntityMap allUsages = getDataService().findAllUsages(getDataSource(), section); - allUsages.remove(SetLongline.class); - if (!allUsages.isEmpty()) { + LonglineDetailCompositionService service = getService(LonglineDetailCompositionService.class); + EntityMap allUsages = service.findAllUsages(section); + allUsages.remove(SetLongline.class); - canDelete = false; + if (!allUsages.isEmpty()) { - } else { + canDelete = false; - if (!section.isBasketEmpty()) { + } else { - for (Basket basket : section.getBasket()) { + if (!section.isBasketEmpty()) { - if (!canDeleteBasket(basket)) { + for (Basket basket : section.getBasket()) { - canDelete = false; - break; + if (!canDeleteBasket(basket)) { - } + canDelete = false; + break; } - } + } } - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not find all usage of selected section", e); } + } return canDelete; @@ -1519,27 +1515,25 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong boolean canDelete = true; if (basket.getTopiaId() != null) { - try { - - EntityMap allUsages = getDataService().findAllUsages(getDataSource(), basket); - allUsages.remove(Section.class); - if (!allUsages.isEmpty()) { + LonglineDetailCompositionService service = getService(LonglineDetailCompositionService.class); + EntityMap allUsages = service.findAllUsages(basket); + allUsages.remove(Section.class); - canDelete = false; + if (!allUsages.isEmpty()) { - } else { + canDelete = false; - if (!basket.isBranchlineEmpty()) { + } else { - for (Branchline branchline : basket.getBranchline()) { + if (!basket.isBranchlineEmpty()) { - if (!canDeleteBranchline(branchline)) { + for (Branchline branchline : basket.getBranchline()) { - canDelete = false; - break; + if (!canDeleteBranchline(branchline)) { - } + canDelete = false; + break; } @@ -1547,9 +1541,8 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not find all usage of selected section", e); } + } return canDelete; @@ -1561,20 +1554,17 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong boolean canDelete = true; if (branchline.getTopiaId() != null) { - try { - - EntityMap allUsages = getDataService().findAllUsages(getDataSource(), branchline); - allUsages.remove(Basket.class); - if (!allUsages.isEmpty()) { + LonglineDetailCompositionService service = getService(LonglineDetailCompositionService.class); + EntityMap allUsages = service.findAllUsages(branchline); + allUsages.remove(Basket.class); - canDelete = false; + if (!allUsages.isEmpty()) { - } + canDelete = false; - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not find all usage of selected branchline", e); } + } return canDelete; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIInitializer.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIInitializer.java index 1dec3b2..9e40047 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIInitializer.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIInitializer.java @@ -23,9 +23,9 @@ package fr.ird.observe.ui.content.impl.longline; */ import fr.ird.observe.DecoratorService; -import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.longline.SectionTemplate; import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.util.table.AutotSelectRowAndShowPopupActionSupport; @@ -58,8 +58,8 @@ public class LonglineDetailCompositionUIInitializer extends ContentUIInitializer } @Override - public void initUI(DataSource dataSource) throws Exception { - super.initUI(dataSource); + public void initUI(ObserveServiceFactory serviceFactory) throws Exception { + super.initUI(serviceFactory); LonglineDetailCompositionUIModel model = ui.getModel(); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java index 5a71b4f..4bb3643 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java @@ -21,19 +21,13 @@ */ package fr.ird.observe.ui.content.impl.seine; -import fr.ird.observe.DataService; -import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; -import fr.ird.observe.db.util.TopiaExecutor2; import fr.ird.observe.entities.constants.seine.SchoolType; import fr.ird.observe.entities.seine.ActivitySeine; -import fr.ird.observe.entities.seine.NonTargetSample; -import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.SetSeine; -import fr.ird.observe.entities.seine.TargetSample; +import fr.ird.observe.services.data.seine.SetSeineService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; @@ -46,10 +40,6 @@ import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; import jaxx.runtime.validator.swing.SwingValidatorUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.util.DateUtil; import org.nuiton.validator.NuitonValidatorScope; @@ -138,6 +128,7 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeine> { getEntityLabel(ActivitySeine.class), t("observe.activitySeine.message.not.open")); return ContentMode.READ; + } @Override @@ -169,33 +160,38 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeine> { } ContentMode mode = computeContentMode(); - DataService dataService = getDataService(); + SetSeine loaded; - SetSeine bean = getBean(); + SetSeineService service = getService(SetSeineService.class); + + String routeId = getDataContext().getSelectedRouteId(); - TopiaEntityBinder<SetSeine> binder = getLoadBinder(); - DataSource source = getDataSource(); if (setId == null) { // creation mode - dataService.preCreate(source, activityId, bean, binder, getPreCreateExecutor()); + loaded = service.preCreate(routeId, activityId); } else { // update mode - dataService.loadEditEntity(source, setId, getLoadExecutor()); + loaded = service.loadForEdit(setId); + } - Route route = (Route) getDataService().loadEntity(source, getDataContext().getSelectedRouteId(), false); + SetSeine bean = getBean(); + service.copyForEdit(loaded, bean); + Date date = service.getRouteDate(routeId); Date time = bean.getStartTime(); - Date date = route.getDate(); - Date dateAndTime = DateUtil.getDateAndTime(date, time, false, false); getUi().getStartTime().setDate(dateAndTime); + UIHelper.processDataBinding(getUi(), + SetSeineUI.BINDING_END_SET_TIME_STAMP_DATE, + SetSeineUI.BINDING_END_PURSING_TIME_STAMP_DATE); + // utilisation du mode requis setContentMode(mode); @@ -208,59 +204,6 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeine> { } @Override - protected SetSeine onPreCreate(TopiaContext tx, Object parent, SetSeine bean) throws TopiaException { - - ActivitySeine parentBean = (ActivitySeine) parent; - - // on utilise l'heure de l'activité comme début de calée - Date date = DateUtil.getTime(parentBean.getTime(), false, false); - - bean.setStartTime(date); - - try { - - // pour les dates de fin on utilise la date de la route - Route route = (Route) getDataService().loadEntity( - getDataSource(), getDataContext().getSelectedRouteId(), false); - - bean.setEndSetTimeStamp(date); - bean.setEndPursingTimeStamp(date); - - bean.setEndSetDate(route.getDate()); - bean.setEndPursingDate(route.getDate()); - - } catch (DataSourceException e) { - throw new TopiaException("Could not obtain route", e); - } - - // recuperation du type de set a partir de l'activity - SchoolType schoolType = parentBean.getSchoolType(); - bean.setSchoolType(schoolType); - return bean; - } - - @Override - protected void onLoad(TopiaContext tx, SetSeine bean) throws TopiaException { - super.onLoad(tx, bean); - SetSeine editBean = getBean(); - getDataContext().getOpenRouteId(); - if (!editBean.isTargetSampleEmpty()) { - for (TargetSample e : editBean.getTargetSample()) { - e.isTargetLengthEmpty(); - } - } - if (!editBean.isNonTargetSampleEmpty()) { - for (NonTargetSample e : editBean.getNonTargetSample()) { - e.isNonTargetLengthEmpty(); - } - } - - UIHelper.processDataBinding(getUi(), - SetSeineUI.BINDING_END_SET_TIME_STAMP_DATE, - SetSeineUI.BINDING_END_PURSING_TIME_STAMP_DATE); - } - - @Override public void startEditUI(String... binding) { ContentUIModel<SetSeine> model = getModel(); boolean create = model.getMode() == ContentMode.CREATE; @@ -294,40 +237,15 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeine> { } @Override - protected boolean doSave(SetSeine bean, - DataService dataService, - DataSource dataSource, - TopiaEntityBinder<SetSeine> binder) throws Exception { + protected boolean doSave(SetSeine bean) { String activityId = getSelectedParentId(); - if (bean.getTopiaId() == null) { - - dataService.create(dataSource, activityId, bean, binder, getCreateExecutor()); - } else { - - dataService.update(dataSource, null, bean, getUpdateExecutor()); - - } + SetSeineService service = getService(SetSeineService.class); + SetSeine saved = service.save(activityId, bean); + bean.setTopiaId(saved.getTopiaId()); return true; - } - - @Override - protected SetSeine onCreate(TopiaContext tx, Object parent, SetSeine editBean) throws TopiaException { - ActivitySeine parentBean = (ActivitySeine) parent; - SetSeine beanToSave = ObserveDAOHelper.getSetSeineDAO(tx).create(); - editBean.setTopiaId(beanToSave.getTopiaId()); - parentBean.setSetSeine(beanToSave); - return beanToSave; - } - - @Override - protected SetSeine onUpdate(TopiaContext tx, Object parentBean, SetSeine beanToSave) throws TopiaException { - getLoadBinder().copyExcluding(getBean(), beanToSave, - SetSeine.PROPERTY_TARGET_SAMPLE, - SetSeine.PROPERTY_NON_TARGET_SAMPLE); - return beanToSave; } @Override @@ -345,6 +263,7 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeine> { boolean create = node.getId() == null; if (create) { + getModel().setMode(ContentMode.UPDATE); // remove old node and recreate new node @@ -353,38 +272,34 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeine> { stopEditUI(); treeHelper.selectNode(node); + } else { + // select ancestor node -// treeHelper.refreshNode(node, false); treeHelper.reloadSelectedNode(false, false); + } + } @Override - protected boolean doDelete(SetSeine bean, - DataService dataService, - DataSource dataSource, - TopiaExecutor2<? extends TopiaEntity, SetSeine> deletor) throws Exception { + protected boolean doDelete(SetSeine bean) { + + boolean result; + if (!askToDelete(bean)) { + + result = false; + + } else { + + String activityId = getSelectedParentId(); + getService(SetSeineService.class).delete(activityId, bean.getTopiaId()); + result = true; - if (askToDelete(bean)) { - return false; } - String activityId = getSelectedParentId(); - dataService.delete(dataSource, activityId, bean, deletor); - return true; - } + return result; - @Override - protected void onDelete(TopiaContext tx, Object parent, SetSeine beanToDelete) throws TopiaException { - ActivitySeine parentBean = (ActivitySeine) parent; - - // on doit supprimer physiquement la set - // car il n'y a pas de delete-orphan sur une telle - // relation - ObserveDAOHelper.getSetSeineDAO(tx).delete(parentBean.getSetSeine()); - // supprime la reference sur l'activity - parentBean.setSetSeine(null); } protected void computeTabValidState(SwingValidatorMessageTableModel errorTableModel) { @@ -435,4 +350,16 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeine> { } + //TODO Supprimer deleteUI et mettre deleteUI2 a la place + @Override + public final void deleteUI() { + deleteUI2(); + } + + //TODO Supprimer saveUI et mettre saveUI2 a la place + @Override + public final void saveUI(boolean refresh) { + saveUI2(refresh); + } + } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java index 9112209..adc7da6 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java @@ -22,13 +22,12 @@ package fr.ird.observe.ui.content.list.impl.longline; * #L% */ -import fr.ird.observe.DataService; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.longline.ActivityLongline; import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.services.data.longline.ActivityLonglineService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.list.ContentListUIHandler; import org.apache.commons.logging.Log; @@ -111,10 +110,8 @@ public class ActivityLonglinesUIHandler extends ContentListUIHandler<TripLonglin @Override protected List<ActivityLongline> getChilds(TripLongline bean) throws DataSourceException { - DataSource source = getDataSource(); - DataService dataService = getDataService(); - - List<ActivityLongline> list = dataService.getActivityLonglineStubByTrip(source, bean.getTopiaId()); + ActivityLonglineService service = getService(ActivityLonglineService.class); + List<ActivityLongline> list = service.getActivityLonglineStubByTrip(bean.getTopiaId()); if (log.isDebugEnabled()) { log.debug("Will use " + list.size() + " activities."); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIHandler.java index 7cbc914..0c2e8b9 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/longline/TripLonglinesUIHandler.java @@ -22,13 +22,12 @@ package fr.ird.observe.ui.content.list.impl.longline; * #L% */ -import fr.ird.observe.DataService; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.services.data.longline.TripLonglineService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.list.ContentListUIHandler; import org.apache.commons.logging.Log; @@ -94,10 +93,8 @@ public class TripLonglinesUIHandler extends ContentListUIHandler<Program, TripLo @Override protected List<TripLongline> getChilds(Program bean) throws DataSourceException { - DataSource source = getDataSource(); - DataService dataService = getDataService(); - - List<TripLongline> list = dataService.getTripLonglineStubByProgram(source, bean.getTopiaId()); + TripLonglineService service = getService(TripLonglineService.class); + List<TripLongline> list = service.getTripLonglineStubByProgram(bean.getTopiaId()); if (log.isDebugEnabled()) { log.debug("Will use " + list.size() + " trips."); @@ -106,5 +103,6 @@ public class TripLonglinesUIHandler extends ContentListUIHandler<Program, TripLo return list; } + } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/ActivitySeinesUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/ActivitySeinesUIHandler.java index 2a1aab7..619cf3e 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/ActivitySeinesUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/ActivitySeinesUIHandler.java @@ -21,13 +21,12 @@ */ package fr.ird.observe.ui.content.list.impl.seine; -import fr.ird.observe.DataService; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.services.data.seine.ActivitySeineService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.list.ContentListUIHandler; import org.apache.commons.logging.Log; @@ -109,10 +108,8 @@ public class ActivitySeinesUIHandler extends ContentListUIHandler<Route, Activit @Override protected List<ActivitySeine> getChilds(Route bean) throws DataSourceException { - DataSource source = getDataSource(); - DataService dataService = getDataService(); - - List<ActivitySeine> list = dataService.getActivitySeineStubByRoute(source, bean.getTopiaId()); + ActivitySeineService service = getService(ActivitySeineService.class); + List<ActivitySeine> list = service.getActivitySeineStubByRoute(bean.getTopiaId()); if (log.isDebugEnabled()) { log.debug("Will use " + list.size() + " activities."); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/RoutesUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/RoutesUIHandler.java index 3a33ceb..29c1fe2 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/RoutesUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/RoutesUIHandler.java @@ -21,13 +21,12 @@ */ package fr.ird.observe.ui.content.list.impl.seine; -import fr.ird.observe.DataService; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.data.seine.RouteService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.list.ContentListUIHandler; import org.apache.commons.logging.Log; @@ -106,10 +105,8 @@ public class RoutesUIHandler extends ContentListUIHandler<TripSeine, Route> { @Override protected List<Route> getChilds(TripSeine bean) throws DataSourceException { - DataSource source = getDataSource(); - DataService dataService = getDataService(); - - List<Route> list = dataService.getRouteStubByTrip(source, bean.getTopiaId()); + RouteService service = getService(RouteService.class); + List<Route> list = service.getRouteStubByTrip(bean.getTopiaId()); if (log.isDebugEnabled()) { log.debug("Will use " + list.size() + " routes."); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIHandler.java index 7eb1ee1..149a47a 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/list/impl/seine/TripSeinesUIHandler.java @@ -21,13 +21,12 @@ */ package fr.ird.observe.ui.content.list.impl.seine; -import fr.ird.observe.DataService; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.data.seine.TripSeineService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.list.ContentListUIHandler; import org.apache.commons.logging.Log; @@ -91,16 +90,14 @@ public class TripSeinesUIHandler extends ContentListUIHandler<Program, TripSeine @Override protected List<TripSeine> getChilds(Program bean) throws DataSourceException { - DataSource source = getDataSource(); - DataService dataService = getDataService(); - - List<TripSeine> list = dataService.getTripSeineStubByProgram(source, bean.getTopiaId()); + TripSeineService service = getService(TripSeineService.class); + List<TripSeine> list = service.getTripSeineStubByProgram(bean.getTopiaId()); if (log.isDebugEnabled()) { log.debug("Will use " + list.size() + " trips."); } return list; - + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java index 3755f64..38138e3 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java @@ -21,13 +21,13 @@ */ package fr.ird.observe.ui.content.open; -import fr.ird.observe.DataService; import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.OpenableEntity; import fr.ird.observe.entities.Trip; +import fr.ird.observe.services.data.OpenableService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; import fr.ird.observe.ui.tree.ObserveNode; @@ -38,6 +38,8 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.validator.NuitonValidatorScope; +import java.util.Arrays; + import static org.nuiton.i18n.I18n.t; /** @@ -53,16 +55,40 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE protected final String closeMessage; - public ContentOpenableUIHandler(ContentOpenableUI<E> ui, - DataContextType parentType, - DataContextType type, - String closeMessage) { + protected ContentOpenableUIHandler(ContentOpenableUI<E> ui, + DataContextType parentType, + DataContextType type, + String closeMessage) { + super(ui, parentType, type); this.closeMessage = closeMessage; + } protected abstract boolean obtainCanReopen(boolean create); + protected void updateOpenState(String beanId, boolean openState) { + OpenableService service = getService(OpenableService.class); + service.updateOpenState(beanId, openState); + } + + protected int getOpenablePosition(String containerId, String beanId) { + OpenableService service = getService(OpenableService.class); + return service.getOpenablePosition(containerId, beanId); + } + + //TODO Supprimer deleteUI et mettre deleteUI2 a la place + @Override + public final void deleteUI() { + deleteUI2(); + } + + //TODO Supprimer saveUI et mettre saveUI2 a la place + @Override + public final void saveUI(boolean refresh) { + saveUI2(refresh); + } + @Override public ContentOpenableUI<E> getUi() { return (ContentOpenableUI<E>) super.getUi(); @@ -98,18 +124,18 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE public final void doOpenData() throws Exception { String id = getBean().getTopiaId(); - getDataService().updateOpenProperty(getDataSource(), id, true); + updateOpenState(id, true); } public final void afterOpenData() { + reloadOpenContext(); + ContentOpenableUI<E> ui = getUi(); // on repaint le parent (le program devient alors ouvert) ObserveTreeHelper treeHelper = getTreeHelper(ui); treeHelper.reloadSelectedNode(true, true); -// ObserveNode node = treeHelper.getSelectedNode(); -// treeHelper.refreshNode(node.getParent(), true); // on chage l'état 'canReopen' du model ui.getModel().setCanReopen(false); @@ -141,12 +167,14 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE } public final boolean doCloseData(String id) throws Exception { - getDataService().updateOpenProperty(getDataSource(), id, false); + updateOpenState(id, false); return true; } public final void afterCloseData() { + reloadOpenContext(); + ContentOpenableUI<E> ui = getUi(); ContentOpenableUIModel<E> model = getModel(); @@ -162,16 +190,22 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE getEntityLabel(bean.getClass()), t(closeMessage)); ObserveTreeHelper treeHelper = getTreeHelper(ui); -// ObserveNode selectedNode = treeHelper.getSelectedNode(); -// if (bean instanceof Trip) { -// // le program peut change d'etat open -// selectedNode = selectedNode.getParent(); -// } -// treeHelper.refreshNode(selectedNode, true); treeHelper.reloadSelectedNode(bean instanceof Trip, true); updateActions(); } + protected void reloadOpenContext() { + + String[] openIds = getService(OpenableService.class).getOpenIds(); + + if (log.isDebugEnabled()) { + log.debug("open context changed in data service, will propagate it to " + getDataContext()); + log.debug("new open ids : " + Arrays.toString(openIds)); + } + getDataContext().populateOpens(openIds); + + } + @Override protected void afterSave(boolean refresh) { @@ -227,11 +261,8 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE treeHelper.selectNode(node); } - // on repaint le noeud et ses enfants -// treeHelper.refreshNode(node, true); + // on reselectionne le noeud et ses enfants treeHelper.reloadSelectedNode(false, true); - -// treeHelper.refreshNode(node, false); } } @@ -262,6 +293,8 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE stopEditUI(); + reloadOpenContext(); + // création d'une nouvelle donnée ObserveTreeHelper treeHelper = getTreeHelper(getUi()); @@ -275,16 +308,11 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE treeHelper.addUnsavedNode(parentNode, getBeanType()); } - protected final void obtainChildPosition(E bean, - DataService dataService, - DataSource dataSource) throws DataSourceException { + protected final void obtainChildPosition(E bean) throws DataSourceException { String containerId = getSelectedParentId(); - int position = dataService.getOpenablePosition(dataSource, - containerId, - bean.getTopiaId() - ); + int position = getOpenablePosition(containerId, bean.getTopiaId()); if (log.isDebugEnabled()) { log.debug("Position of child : " + position); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/ActivityLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/ActivityLonglineUIHandler.java index b41a7c2..7938b31 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/ActivityLonglineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/ActivityLonglineUIHandler.java @@ -22,29 +22,18 @@ package fr.ird.observe.ui.content.open.impl.longline; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.constants.DataContextType; -import fr.ird.observe.db.util.TopiaExecutor2; import fr.ird.observe.entities.longline.ActivityLongline; import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.services.data.longline.ActivityLonglineService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIModel; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.util.Loador; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.validator.NuitonValidatorScope; -import java.util.Calendar; -import java.util.Date; - import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -139,33 +128,31 @@ public class ActivityLonglineUIHandler extends ContentOpenableUIHandler<Activity if (log.isInfoEnabled()) { log.info(prefix + "content mode " + mode); } - ActivityLongline bean = getBean(); - - DataService dataService = getDataService(); boolean create = activityId == null; - Loador<ActivityLongline> binder = getLoadBinder(); - - DataSource source = getDataSource(); - + ActivityLongline loaded; + ActivityLonglineService service = getService(ActivityLonglineService.class); if (create) { // create mode - dataService.preCreate(source, tripId, bean, binder, getPreCreateExecutor()); + loaded = service.preCreate(tripId); } else { // update mode - dataService.loadEditEntity(source, activityId, getLoadExecutor()); + if (mode == ContentMode.UPDATE) { + loaded = service.loadForEdit(activityId); + } else { + loaded = service.loadForDisplay(activityId); + } } - if (log.isDebugEnabled()) { - log.debug(" long - lat = " + bean.getLongitude() + - " - " + bean.getLatitude()); - } + ActivityLongline bean = getBean(); + service.copyForEdit(loaded, bean); + finalizeOpenUI(mode, create); getUi().getCoordinatesEditor().setLatitudeAndLongitude(bean.getLatitude(), bean.getLongitude()); @@ -180,49 +167,6 @@ public class ActivityLonglineUIHandler extends ContentOpenableUIHandler<Activity } @Override - protected ActivityLongline onPreCreate(TopiaContext tx, Object parent, ActivityLongline bean) throws TopiaException { - TripLongline parentBean = (TripLongline) parent; - - bean.setOpen(true); - bean.setLatitude(null); - bean.setLongitude(null); - - Date timestamp; - - ActivityLongline lastActivityLongline = parentBean.getLastActivity(); - if (lastActivityLongline == null) { - - // première activité, on utilise la date de début de marée (voir http://forge.codelutin.com/issues/6777) - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parentBean.getStartDate()); - timestamp = calendar.getTime(); - - } else { - - // passage en coordonnées absolue + quadrant - lastActivityLongline.initCoordinates(); - - // on recupère le quadrant de cette activity - // et on l'affecte à la nouvelle activity - Integer quadrant = lastActivityLongline.getQuadrant(); - if (log.isDebugEnabled()) { - log.debug("use quadrant of previous activity [" + quadrant + "]"); - } - bean.setQuadrant(quadrant); - - // on reprend la date et l'heure de la dernière activité - timestamp = lastActivityLongline.getTimeStamp(); - } - - bean.setTimeStamp(timestamp); - - if (log.isDebugEnabled()) { - log.debug("has pre-created : " + bean); - } - return bean; - } - - @Override public void startEditUI(String... binding) { ActivityLonglineUI ui = getUi(); @@ -255,88 +199,47 @@ public class ActivityLonglineUIHandler extends ContentOpenableUIHandler<Activity } @Override - protected boolean doSave(ActivityLongline bean, - DataService dataService, - DataSource dataSource, - TopiaEntityBinder<ActivityLongline> binder) throws Exception { + protected boolean doSave(ActivityLongline bean) throws Exception { - if (log.isDebugEnabled()) { - log.debug(" long - lat = " + bean.getLongitude() + " - " + bean.getLatitude()); - } - boolean create = bean.getTopiaId() == null; - - String routeId = getSelectedParentId(); + String tripId = getSelectedParentId(); bean.setOpen(true); - if (create) { - bean = dataService.create(dataSource, routeId, bean, binder, getCreateExecutor()); - - } else { - - dataService.update(dataSource, routeId, bean, getUpdateExecutor()); - } + ActivityLonglineService service = getService(ActivityLonglineService.class); + ActivityLongline saved = service.save(tripId, bean); + bean.setTopiaId(saved.getTopiaId()); - obtainChildPosition(bean, dataService, dataSource); + obtainChildPosition(bean); return true; - } - @Override - protected ActivityLongline onCreate(TopiaContext tx, Object parent, ActivityLongline editBean) throws TopiaException { - TripLongline parentBean = (TripLongline) parent; - ActivityLongline beanToSave = ObserveDAOHelper.getActivityLonglineDAO(tx).create(); - editBean.setTopiaId(beanToSave.getTopiaId()); - parentBean.addActivityLongline(beanToSave); - return beanToSave; } @Override - protected ActivityLongline onUpdate(TopiaContext tx, Object parentBean, ActivityLongline beanToSave) throws TopiaException { + protected boolean doDelete(ActivityLongline bean) { - ActivityLongline editBean = getBean(); + boolean result; - if (log.isInfoEnabled()) { - log.info("Final time to use : " + editBean.getTimeStamp()); - } - - getLoadBinder().copyExcluding(editBean, beanToSave, - ActivityLongline.PROPERTY_ENCOUNTER, - ActivityLongline.PROPERTY_SENSOR_USED); - - if (log.isInfoEnabled()) { - log.info("Is activity open ? : " + beanToSave.isOpen()); - } - return beanToSave; - } + if (askToDelete(bean)) { + result = false; + } else { - @Override - protected boolean doDelete(ActivityLongline bean, - DataService dataService, - DataSource dataSource, - TopiaExecutor2<? extends TopiaEntity, ActivityLongline> deletor) throws Exception { + if (log.isInfoEnabled()) { + log.info("Will delete Activity " + bean.getTopiaId()); + } - if (askToDelete(bean)) { - return false; - } - if (log.isInfoEnabled()) { - log.info("Will delete Activity " + bean.getTopiaId()); - } + ActivityLonglineService service = getService(ActivityLonglineService.class); + String tripId = getSelectedParentId(); + service.delete(tripId, bean.getTopiaId()); + if (log.isInfoEnabled()) { + log.info("Delete done for Activity " + bean.getTopiaId()); + } + result = true; - String tripId = getSelectedParentId(); - dataService.delete(dataSource, tripId, bean, deletor); - if (log.isInfoEnabled()) { - log.info("Delete done for Activity " + bean.getTopiaId()); } - return true; - - } + return result; - @Override - protected void onDelete(TopiaContext tx, Object parent, ActivityLongline beanToDelete) { - TripLongline parentBean = (TripLongline) parent; - parentBean.removeActivityLongline(beanToDelete); } @Override diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java index bcf6157..83985f0 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java @@ -22,35 +22,23 @@ package fr.ird.observe.ui.content.open.impl.longline; * #L% */ -import fr.ird.observe.DataService; import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.constants.DataContextType; -import fr.ird.observe.db.util.TopiaExecutor2; -import fr.ird.observe.entities.longline.ActivityLonglines; import fr.ird.observe.entities.longline.TripLongline; -import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.services.Longline.TripLonglineServiceImp; +import fr.ird.observe.services.data.TripService; +import fr.ird.observe.services.data.longline.TripLonglineService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; import fr.ird.observe.ui.content.open.ContentOpenableUIModel; import fr.ird.observe.ui.util.tripMap.TripMapUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; -import org.nuiton.util.DateUtil; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.util.Date; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -66,8 +54,6 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline /** Logger */ static private final Log log = LogFactory.getLog(TripLonglineUIHandler.class); - protected TripLonglineServiceImp service; - protected boolean buildTripMap = true; public TripLonglineUIHandler(TripLonglineUI ui) { @@ -127,10 +113,9 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline @Override public void run() { - TripLonglineUI ui = getUi(); - TripMapUI tripMap = ui.getTripMap(); - - tripMap.getHandler().doOpenMap(ui.getDataSource(), ui.getDataService(), getSelectedId()); + TripService service = getService(TripService.class); + TripMapUI tripMap = getUi().getTripMap(); + tripMap.getHandler().doOpenMap(service, getSelectedId()); } }); buildTripMap = false; @@ -159,12 +144,12 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline log.info(prefix + "mode = " + mode); } - DataService dataService = getDataService(); - - TripLongline bean = getBean(); + TripLongline loaded; - DataSource source = getDataSource(); boolean create = tripId == null; + + TripLonglineService service = getService(TripLonglineService.class); + if (create) { // create mode @@ -172,7 +157,8 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline if (log.isInfoEnabled()) { log.info(prefix + "create a new trip"); } - dataService.preCreate(source, programId, bean, getLoadBinder(), getPreCreateExecutor()); + + loaded = service.preCreate(programId); } else { @@ -180,15 +166,17 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline if (log.isInfoEnabled()) { log.info(prefix + "using existing trip " + tripId); } - dataService.loadEditEntity(source, tripId, getLoadExecutor()); - - if (!bean.isActivityLonglineEmpty()) { - // on force le trie des routes - ActivityLonglines.sort(bean.getActivityLongline()); + if (mode == ContentMode.UPDATE) { + loaded = service.loadForEdit(tripId); + } else { + loaded = service.loadForDisplay(tripId); } + } + TripLongline bean = getBean(); + service.copyForEdit(loaded, bean); getUi().getTripLonglineTabPane().setSelectedIndex(0); buildTripMap = true; @@ -196,21 +184,6 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline } @Override - protected TripLongline onPreCreate(TopiaContext tx, Object parent, TripLongline bean) throws TopiaException { - - Program parentBean = (Program) parent; - Date date = DateUtil.getDay(new Date()); - bean.setStartDate(date); - bean.setEndDate(date); - if (log.isDebugEnabled()) { - log.debug("start date : " + date); - log.debug("program : " + parentBean); - } - bean.setProgram(parentBean); - return bean; - } - - @Override public void startEditUI(String... binding) { TripLonglineUI ui = getUi(); @@ -233,16 +206,6 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline addInfoMessage(t("observe.message.historical.data")); } } - // date is current day - if (model.getMode() == ContentMode.UPDATE) { - if (getBean().getEndDate() == null) { - Date date = DateUtil.getEndOfDay(new Date()); - getBean().setEndDate(date); - if (log.isDebugEnabled()) { - log.debug("date fin " + date); - } - } - } super.startEditUI(TripLonglineUI.BINDING_VESSEL_SELECTED_ITEM, TripLonglineUI.BINDING_OBSERVER_SELECTED_ITEM, @@ -261,85 +224,43 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline } @Override - protected boolean doSave(TripLongline bean, - DataService dataService, - DataSource dataSource, - TopiaEntityBinder<TripLongline> binder) throws Exception { - - String programId = getDataContext().getSelectedProgramId(); - - // on force toujours la date a etre sans heure, minute,... - Date startDate = DateUtil.getDay(bean.getStartDate()); - if (log.isDebugEnabled()) { - log.debug("startDate = " + startDate); - } - bean.setStartDate(startDate); - - // mise a jour de la date de fin - bean.updateDateFin(); - Date endDate = bean.getEndDate(); - if (log.isDebugEnabled()) { - log.debug("endDate = " + endDate); - } + protected boolean doSave(TripLongline bean) throws Exception { bean.setOpen(true); - if (bean.getTopiaId() == null) { - - dataService.create(dataSource, programId, bean, binder, getCreateExecutor()); - - } else { - - dataService.update(dataSource, null, bean, getUpdateExecutor()); - - } + TripLonglineService service = getService(TripLonglineService.class); + TripLongline saved = service.save(bean); + bean.setTopiaId(saved.getTopiaId()); // recuperation de la position de la maree dans le program - obtainChildPosition(bean, dataService, dataSource); + obtainChildPosition(bean); return true; } @Override - protected TripLongline onCreate(TopiaContext tx, Object parent, TripLongline editBean) throws TopiaException { - TripLongline beanToSave = ObserveDAOHelper.getTripLonglineDAO(tx).create(); - editBean.setTopiaId(beanToSave.getTopiaId()); - return beanToSave; - } + protected boolean doDelete(TripLongline bean) { - @Override - protected TripLongline onUpdate(TopiaContext tx, Object parentBean, TripLongline beanToSave) throws TopiaException { + boolean result; - getLoadBinder().copyExcluding(getBean(), beanToSave, TripLongline.PROPERTY_ACTIVITY_LONGLINE); + if (askToDelete(bean)) { - return beanToSave; - } + result = false; - @Override - protected boolean doDelete(TripLongline bean, - DataService dataService, - DataSource dataSource, - TopiaExecutor2<? extends TopiaEntity, TripLongline> deletor) throws Exception { + } else { - if (askToDelete(bean)) { - return false; - } - if (log.isInfoEnabled()) { - log.info("Will delete Trip " + bean.getTopiaId()); - } + if (log.isInfoEnabled()) { + log.info("Will delete Trip " + bean.getTopiaId()); + } + + TripLonglineService service = getService(TripLonglineService.class); + service.delete(bean.getTopiaId()); + result = true; - dataService.delete(dataSource, null, bean, deletor); - if (log.isInfoEnabled()) { - log.info("Delete done for Trip " + bean.getTopiaId()); } - return true; - } - @Override - protected void onDelete(TopiaContext tx, Object parentBean, TripLongline beanToDelete) throws TopiaException { + return result; - TopiaDAO<TripLongline> dao = getDataSource().getDAO(tx, TripLongline.class); - dao.delete(beanToDelete); } @Override @@ -349,4 +270,5 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline return !create && !dataContext.isOpenTrip(); } + } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/ActivitySeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/ActivitySeineUIHandler.java index 933982b..9641102 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/ActivitySeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/ActivitySeineUIHandler.java @@ -21,40 +21,27 @@ */ package fr.ird.observe.ui.content.open.impl.seine; -import fr.ird.observe.DataService; -import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; -import fr.ird.observe.db.util.TopiaExecutor2; -import fr.ird.observe.entities.referentiel.FpaZone; import fr.ird.observe.entities.referentiel.seine.VesselActivitySeine; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.ActivitySeineImpl; import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.referential.ReferentialService; +import fr.ird.observe.services.data.seine.ActivitySeineService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIModel; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; -import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.util.Loador; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; -import org.nuiton.util.DateUtil; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; -import java.util.Date; import java.util.HashSet; -import java.util.List; import java.util.Set; import static org.nuiton.i18n.I18n.n; @@ -173,31 +160,30 @@ public class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySei if (log.isInfoEnabled()) { log.info(prefix + "content mode " + mode); } - ActivitySeine bean = getBean(); - - DataService dataService = getDataService(); boolean create = activityId == null; - Loador<ActivitySeine> binder = getLoadBinder(); - - DataSource source = getDataSource(); + ActivitySeine loaded; + ActivitySeineService service = getService(ActivitySeineService.class); if (create) { // create mode - dataService.preCreate(source, routeId, bean, binder, getPreCreateExecutor()); + loaded = service.preCreate(routeId); } else { // update mode - dataService.loadEditEntity(source, activityId, getLoadExecutor()); + if (mode == ContentMode.UPDATE) { + loaded = service.loadForEdit(activityId); + } else { + loaded = service.loadForDisplay(activityId); + } } - if (log.isDebugEnabled()) { - log.debug(prefix + "long - lat = " + bean.getLongitude() + " - " + bean.getLatitude()); - } + ActivitySeine bean = getBean(); + service.copyForEdit(loaded, bean); SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel(); computeTabValidState(errorTableModel); @@ -213,62 +199,7 @@ public class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySei // on annule la modification engendree par ce binding getModel().setModified(create); - } - - @Override - protected ActivitySeine onPreCreate(TopiaContext tx, - Object parent, - ActivitySeine bean) throws TopiaException { - Route parentBean = (Route) parent; - - bean.setOpen(true); - bean.setLatitude(null); - bean.setLongitude(null); - - Date time; - - FpaZone currentFpaZone = null; - - ActivitySeine lastActivitySeine = parentBean.getLastActivity(); - if (lastActivitySeine == null) { - // première activité, on utilise l'heure courante - time = new Date(); - - } else { - - // passage en coordonnées absolue + quadrant - lastActivitySeine.initCoordinates(); - - // on recupère le quadrant de cette activity - // et on l'affecte à la nouvelle activity - Integer quadrant = lastActivitySeine.getQuadrant(); - if (quadrant != null) { - - if (log.isDebugEnabled()) { - log.debug("use quadrant of previous activity [" + quadrant + "]"); - } - bean.setQuadrant(quadrant); - } - - // on reprend l'heure de la dernière activité - time = lastActivitySeine.getTime(); - - // utilisation des zones fpa de la dernière activité - currentFpaZone = lastActivitySeine.getNextFpaZone(); - if (currentFpaZone == null) { - currentFpaZone = lastActivitySeine.getCurrentFpaZone(); - } - - } - - bean.setTime(DateUtil.getTime(time, false, false)); - bean.setCurrentFpaZone(currentFpaZone); - - if (log.isDebugEnabled()) { - log.debug("has pre-created : " + bean); - } - return bean; } @Override @@ -308,92 +239,50 @@ public class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySei } @Override - protected boolean doSave(ActivitySeine bean, - DataService dataService, - DataSource dataSource, - TopiaEntityBinder<ActivitySeine> binder) throws Exception { + protected boolean doSave(ActivitySeine bean) throws Exception { if (log.isDebugEnabled()) { log.debug(" long - lat = " + bean.getLongitude() + " - " + bean.getLatitude()); } - boolean create = bean.getTopiaId() == null; String routeId = getSelectedParentId(); bean.setOpen(true); - if (create) { - bean = dataService.create(dataSource, routeId, bean, binder, getCreateExecutor()); - - } else { - - dataService.update(dataSource, routeId, bean, getUpdateExecutor()); - } + ActivitySeineService service = getService(ActivitySeineService.class); + ActivitySeine saved = service.save(routeId, bean); + bean.setTopiaId(saved.getTopiaId()); - obtainChildPosition(bean, dataService, dataSource); + obtainChildPosition(bean); return true; } @Override - protected ActivitySeine onCreate(TopiaContext tx, Object parent, ActivitySeine editBean) throws TopiaException { - Route parentBean = (Route) parent; - ActivitySeine beanToSave = ObserveDAOHelper.getActivitySeineDAO(tx).create(); - editBean.setTopiaId(beanToSave.getTopiaId()); - parentBean.addActivitySeine(beanToSave); - return beanToSave; - } - - @Override - protected ActivitySeine onUpdate(TopiaContext tx, Object parentBean, ActivitySeine beanToSave) throws TopiaException { + protected boolean doDelete(ActivitySeine bean) { - ActivitySeine editBean = getBean(); + boolean result; - Route route = (Route) parentBean; - - Date d = DateUtil.getDateAndTime(route.getDate(), editBean.getTime(), false, false); - editBean.setTime(d); + if (askToDelete(bean)) { - if (log.isInfoEnabled()) { - log.info("Final time to use : " + d); - } + result = false; - getLoadBinder().copyExcluding(editBean, beanToSave, - ActivitySeine.PROPERTY_FLOATING_OBJECT, - ActivitySeine.PROPERTY_OBSERVED_SYSTEM); + } else { - if (log.isInfoEnabled()) { - log.info("Is activity open ? : " + beanToSave.isOpen()); - } - return beanToSave; - } + if (log.isInfoEnabled()) { + log.info("Will delete Activity " + bean.getTopiaId()); + } - @Override - protected boolean doDelete(ActivitySeine bean, - DataService dataService, - DataSource dataSource, - TopiaExecutor2<? extends TopiaEntity, ActivitySeine> deletor) throws Exception { + String routeId = getSelectedParentId(); + ActivitySeineService service = getService(ActivitySeineService.class); + service.delete(routeId, bean.getTopiaId()); - if (askToDelete(bean)) { - return false; - } - if (log.isInfoEnabled()) { - log.info("Will delete Activity " + bean.getTopiaId()); - } + result = true; - String routeId = getSelectedParentId(); - dataService.delete(dataSource, routeId, bean, deletor); - if (log.isInfoEnabled()) { - log.info("Delete done for Activity " + bean.getTopiaId()); } - return true; - } + return result; - @Override - protected void onDelete(TopiaContext tx, Object parent, ActivitySeine beanToDelete) { - Route parentBean = (Route) parent; - parentBean.removeActivitySeine(beanToDelete); } @Override @@ -412,18 +301,11 @@ public class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySei public String getActivity6Label() { - try { - List<VesselActivitySeine> activitys = getDataService().getList(getDataSource(), VesselActivitySeine.class); - for (VesselActivitySeine a : activitys) { - if (ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE.equals(a.getCode())) { - String label = getDecoratorService().decorate(a); - return label; - } - } - } catch (DataSourceException ex) { - ErrorDialogUI.showError(ex); - } - throw new IllegalStateException(t("observe.error.no.activity.6")); + ReferentialService service = getService(ReferentialService.class); + VesselActivitySeine vesselActivitySeine = service.loadAndDecorate(VesselActivitySeine.class, ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE_ID); + String label = getDecoratorService().decorate(vesselActivitySeine); + return label; + } protected void computeTabValidState(SwingValidatorMessageTableModel errorTableModel) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java index a2d8cd4..6bbbcc9 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java @@ -21,32 +21,22 @@ */ package fr.ird.observe.ui.content.open.impl.seine; -import fr.ird.observe.DataService; import fr.ird.observe.ObserveContext; -import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.constants.DataContextType; -import fr.ird.observe.db.util.TopiaExecutor2; import fr.ird.observe.entities.referentiel.seine.VesselActivitySeine; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.ActivitySeineImpl; -import fr.ird.observe.entities.seine.ActivitySeines; import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.data.seine.RouteService; import fr.ird.observe.ui.UIHelper; 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.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; -import org.nuiton.util.DateUtil; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.JOptionPane; @@ -61,7 +51,7 @@ import static org.nuiton.i18n.I18n.t; */ public class RouteUIHandler extends ContentOpenableUIHandler<Route> { - public static final String UPDATE_MAREE_NODE = "updateTripNode"; + public static final String UPDATE_TRIP_NODE = "updateTripNode"; /** Logger */ static private Log log = LogFactory.getLog(RouteUIHandler.class); @@ -134,62 +124,32 @@ public class RouteUIHandler extends ContentOpenableUIHandler<Route> { log.info(prefix + "content mode = " + mode); } - DataService dataService = getDataService(); - - Route editBean = getBean(); + Route loaded; boolean create = routeId == null; + RouteService service = getService(RouteService.class); if (create) { // create mode - dataService.preCreate(getDataSource(), tripId, editBean, getLoadBinder(), getPreCreateExecutor()); + loaded = service.preCreate(tripId); } else { // update mode - dataService.loadEditEntity(getDataSource(), routeId, getLoadExecutor()); - - if (!editBean.isActivitySeineEmpty()) { - - // on force le trie des activitys - ActivitySeines.sort(editBean.getActivitySeine()); + if (mode == ContentMode.UPDATE) { + loaded = service.loadForEdit(routeId); + } else { + loaded = service.loadForDisplay(routeId); } - } - - finalizeOpenUI(mode, create); - } - - @Override - protected Route onPreCreate(TopiaContext tx, Object parent, Route bean) throws TopiaException { - - TripSeine parentBean = (TripSeine) parent; - Route lastRoute = parentBean.getLastRoute(); - - Date date; - if (lastRoute == null) { - - // aucune route defini, on utilise la date courante - date = new Date(); - - } else { - - // une route precedente est definie sur la maree - // le jour d'observation est le jour suivant celui de la - // derniere route - date = DateUtils.addDays(lastRoute.getDate(), 1); - // le loch du matin est le loch du soir de la derniere route - bean.setStartLogValue(lastRoute.getEndLogValue()); } - bean.setDate(DateUtil.getDay(date)); + Route bean = getBean(); + service.copyForEdit(loaded, bean); + + finalizeOpenUI(mode, create); - if (log.isInfoEnabled()) { - log.info("Will use date : " + bean.getDate()); - log.info("Will loch matin ast last loch soir : " + bean.getStartLogValue()); - } - return bean; } @Override @@ -231,31 +191,22 @@ public class RouteUIHandler extends ContentOpenableUIHandler<Route> { } @Override - protected boolean doSave(Route bean, - DataService dataService, - DataSource dataSource, - TopiaEntityBinder<Route> binder) throws Exception { + protected boolean doSave(Route bean) throws Exception { - String mareeId = getSelectedParentId(); + String tripId = getSelectedParentId(); if (log.isInfoEnabled()) { log.info("will save route " + bean.getTopiaId()); } - // on sauvegarde toujours en debut de jour - Date date = DateUtil.getDay(bean.getDate()); - bean.setDate(date); - bean.setOpen(true); - - if (bean.getTopiaId() == null) { - dataService.create(dataSource, mareeId, bean, binder, getCreateExecutor()); - } else { + bean.setOpen(true); - dataService.update(dataSource, mareeId, bean, getUpdateExecutor()); - } + RouteService service = getService(RouteService.class); + Route saved = service.save(tripId, bean); + bean.setTopiaId(saved.getTopiaId()); - obtainChildPosition(bean, dataService, dataSource); + obtainChildPosition(bean); return true; } @@ -272,84 +223,79 @@ public class RouteUIHandler extends ContentOpenableUIHandler<Route> { repaintTripNode(); } - @Override - protected Route onCreate(TopiaContext tx, Object parent, Route editBean) throws TopiaException { - - TripSeine parentBean = (TripSeine) parent; - - // creation de la route - Route beanToSave = ObserveDAOHelper.getRouteDAO(tx).create(); - editBean.setTopiaId(beanToSave.getTopiaId()); - - // ajout de la route dans la amree - parentBean.addRoute(beanToSave); - - // on renseigne le jour d'observation car on en a besoin pour - // mettre la date de fin de la maree - beanToSave.setDate(editBean.getDate()); - - // on met a jour si necessaire la date de fin de la maree - updateDateFin(parentBean); - - return beanToSave; - } +// @Override +// protected Route onCreate(TopiaContext tx, Object parent, Route editBean) throws TopiaException { +// +// TripSeine parentBean = (TripSeine) parent; +// +// // creation de la route +// Route beanToSave = ObserveDAOHelper.getRouteDAO(tx).create(); +// editBean.setTopiaId(beanToSave.getTopiaId()); +// +// // ajout de la route dans la amree +// parentBean.addRoute(beanToSave); +// +// // on renseigne le jour d'observation car on en a besoin pour +// // mettre la date de fin de la maree +// beanToSave.setDate(editBean.getDate()); +// +// // on met a jour si necessaire la date de fin de la maree +// updateDateFin(parentBean); +// +// return beanToSave; +// } +// +// @Override +// protected Route onUpdate(TopiaContext tx, Object parent, Route beanToSave) throws TopiaException { +// +// TripSeine parentBean = (TripSeine) parent; +// +// Route editBean = getBean(); +// +// // on conserve l'ancienne date d'observation +// Date oldDate = DateUtil.getDay(beanToSave.getDate()); +// +// // recopie des propriétés vers le bean a sauver +// getLoadBinder().copyExcluding(editBean, beanToSave, Route.PROPERTY_ACTIVITY_SEINE); +// +// if (!oldDate.equals(editBean.getDate())) { +// +// // le jour a change, il faut mettre à jour les dates des activitys +// // et des sets +// beanToSave.updateDates(); +// } +// +// // on met a jour si necessaire la date de fin de la maree +// updateDateFin(parentBean); +// +// return beanToSave; +// } @Override - protected Route onUpdate(TopiaContext tx, Object parent, Route beanToSave) throws TopiaException { + protected boolean doDelete(Route bean) { - TripSeine parentBean = (TripSeine) parent; + boolean result; - Route editBean = getBean(); - - // on conserve l'ancienne date d'observation - Date oldDate = DateUtil.getDay(beanToSave.getDate()); - - // recopie des propriétés vers le bean a sauver - getLoadBinder().copyExcluding(editBean, beanToSave, Route.PROPERTY_ACTIVITY_SEINE); + if (askToDelete(bean)) { - if (!oldDate.equals(editBean.getDate())) { + result = false; - // le jour a change, il faut mettre à jour les dates des activitys - // et des sets - beanToSave.updateDates(); - } + } else { - // on met a jour si necessaire la date de fin de la maree - updateDateFin(parentBean); + if (log.isInfoEnabled()) { + log.info("Will delete Route " + bean.getTopiaId()); + } - return beanToSave; - } + RouteService service = getService(RouteService.class); + String tripId = getSelectedParentId(); + service.delete(tripId, bean.getTopiaId()); - @Override - protected boolean doDelete(Route bean, - DataService dataService, - DataSource dataSource, - TopiaExecutor2<? extends TopiaEntity, Route> deletor) throws Exception { + result = true; - if (askToDelete(bean)) { - return false; } - if (log.isInfoEnabled()) { - log.info("Will delete Route " + bean.getTopiaId()); - } - - String mareeId = getSelectedParentId(); - dataService.delete(dataSource, mareeId, bean, deletor); - if (log.isInfoEnabled()) { - log.info("Delete done for Route " + bean.getTopiaId()); - } - return true; - } - - @Override - protected void onDelete(TopiaContext tx, Object parent, Route beanToDelete) { - TripSeine parentBean = (TripSeine) parent; - // suppression de la route - parentBean.removeRoute(beanToDelete); + return result; - // mise à jour de la date de fin de marée - updateDateFin(parentBean); } @Override @@ -507,9 +453,14 @@ public class RouteUIHandler extends ContentOpenableUIHandler<Route> { } protected void repaintTripNode() { - Boolean updateTripNode = getUi().getContextValue(Boolean.class, UPDATE_MAREE_NODE); - getUi().removeContextValue(Boolean.class, UPDATE_MAREE_NODE); + // on met a jour si necessaire la date de fin de la maree + //FIXME Remettre ça en place +// updateDateFin(parentBean); + + Boolean updateTripNode = getUi().getContextValue(Boolean.class, UPDATE_TRIP_NODE); + + getUi().removeContextValue(Boolean.class, UPDATE_TRIP_NODE); if (updateTripNode == null || !updateTripNode) { return; @@ -522,10 +473,11 @@ public class RouteUIHandler extends ContentOpenableUIHandler<Route> { log.info("Refresh trip node : " + tripNode); } treeHelper.reloadNode(tripNode, false); -// treeHelper.refreshNode(tripNode, false); + } protected void updateDateFin(TripSeine parentBean) { + Date endDate = parentBean.getEndDate(); // on met a jour si necessaire la date de fin de la maree @@ -536,10 +488,11 @@ public class RouteUIHandler extends ContentOpenableUIHandler<Route> { // la date de fin a ete modifiee, il faut : // redessiner le noeud de la maree // le repositionner - getUi().setContextValue(Boolean.TRUE, UPDATE_MAREE_NODE); + getUi().setContextValue(Boolean.TRUE, UPDATE_TRIP_NODE); } else { - getUi().removeContextValue(Boolean.class, UPDATE_MAREE_NODE); + getUi().removeContextValue(Boolean.class, UPDATE_TRIP_NODE); } + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java index 0a59641..234ab99 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java @@ -21,34 +21,23 @@ */ package fr.ird.observe.ui.content.open.impl.seine; -import fr.ird.observe.DataService; import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.constants.DataContextType; -import fr.ird.observe.db.util.TopiaExecutor2; -import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.entities.seine.Routes; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.data.TripService; +import fr.ird.observe.services.data.seine.TripSeineService; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; import fr.ird.observe.ui.content.open.ContentOpenableUIModel; import fr.ird.observe.ui.util.tripMap.TripMapUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaDAO; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; -import org.nuiton.util.DateUtil; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.util.Date; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -71,8 +60,6 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { n("observe.tripSeine.message.not.open")); } - - @Override public TripSeineUI getUi() { return (TripSeineUI) super.getUi(); @@ -124,10 +111,10 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { @Override public void run() { - TripSeineUI ui = getUi(); - TripMapUI tripMap = ui.getTripMap(); - tripMap.getHandler().doOpenMap(ui.getDataSource(), ui.getDataService(), getSelectedId()); + TripService service = getService(TripService.class); + TripMapUI tripMap = getUi().getTripMap(); + tripMap.getHandler().doOpenMap(service, getSelectedId()); } }); buildTripMap = false; @@ -156,11 +143,10 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { log.info(prefix + "mode = " + mode); } - DataService dataService = getDataService(); + TripSeineService service = getService(TripSeineService.class); - TripSeine bean = getBean(); + TripSeine loaded; - DataSource source = getDataSource(); boolean create = tripId == null; if (create) { @@ -169,23 +155,27 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { if (log.isInfoEnabled()) { log.info(prefix + "create a new trip"); } - dataService.preCreate(source, programId, bean, getLoadBinder(), getPreCreateExecutor()); + + + loaded = service.preCreate(programId); + } else { // update mode if (log.isInfoEnabled()) { log.info(prefix + "using existing trip " + tripId); } - dataService.loadEditEntity(source, tripId, getLoadExecutor()); - if (!bean.isRouteEmpty()) { - - // on force le trie des routes - Routes.sort(bean.getRoute()); + if (mode == ContentMode.UPDATE) { + loaded = service.loadForEdit(tripId); + } else { + loaded = service.loadForDisplay(tripId); } } + TripSeine bean = getBean(); + service.copyForEdit(loaded, bean); getUi().getTripSeineTabPane().setSelectedIndex(0); buildTripMap = true; @@ -193,21 +183,6 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { } @Override - protected TripSeine onPreCreate(TopiaContext tx, Object parent, TripSeine bean) throws TopiaException { - - Program parentBean = (Program) parent; - Date date = DateUtil.getDay(new Date()); - bean.setStartDate(date); - bean.setEndDate(date); - if (log.isDebugEnabled()) { - log.debug("start date : " + date); - log.debug("program : " + parentBean); - } - bean.setProgram(parentBean); - return bean; - } - - @Override public void startEditUI(String... binding) { TripSeineUI ui = getUi(); @@ -232,17 +207,6 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { } } - // date is current day - if (model.getMode() == ContentMode.UPDATE) { - if (getBean().getEndDate() == null) { - Date date = DateUtil.getEndOfDay(new Date()); - getBean().setEndDate(date); - if (log.isDebugEnabled()) { - log.debug("end date : " + date); - } - } - } - super.startEditUI(TripSeineUI.BINDING_VESSEL_SELECTED_ITEM, TripSeineUI.BINDING_OBSERVER_SELECTED_ITEM, TripSeineUI.BINDING_CAPTAIN_SELECTED_ITEM, @@ -258,85 +222,41 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { } @Override - protected boolean doSave(TripSeine bean, - DataService dataService, - DataSource dataSource, - TopiaEntityBinder<TripSeine> binder) throws Exception { - - String programId = getDataContext().getSelectedProgramId(); - - // on force toujours la date a etre sans heure, minute,... - Date startDate = DateUtil.getDay(bean.getStartDate()); - if (log.isDebugEnabled()) { - log.debug("startDate = " + startDate); - } - bean.setStartDate(startDate); - - // mise a jour de la date de fin - bean.updateDateFin(); - Date endDate = bean.getEndDate(); - if (log.isDebugEnabled()) { - log.debug("endDate = " + endDate); - } + protected boolean doSave(TripSeine bean) throws Exception { bean.setOpen(true); - if (bean.getTopiaId() == null) { - - dataService.create(dataSource, programId, bean, binder, getCreateExecutor()); - - } else { - - dataService.update(dataSource, null, bean, getUpdateExecutor()); - - } + TripSeineService service = getService(TripSeineService.class); + TripSeine saved = service.save(bean); + bean.setTopiaId(saved.getTopiaId()); // recuperation de la position de la maree dans le program - obtainChildPosition(bean, dataService, dataSource); + obtainChildPosition(bean); return true; } @Override - protected TripSeine onCreate(TopiaContext tx, Object parent, TripSeine editBean) throws TopiaException { - TripSeine beanToSave = ObserveDAOHelper.getTripSeineDAO(tx).create(); - editBean.setTopiaId(beanToSave.getTopiaId()); - return beanToSave; - } - - @Override - protected TripSeine onUpdate(TopiaContext tx, Object parentBean, TripSeine beanToSave) throws TopiaException { + protected boolean doDelete(TripSeine bean) { - getLoadBinder().copyExcluding(getBean(), beanToSave, TripSeine.PROPERTY_ROUTE, TripSeine.PROPERTY_GEAR_USE_FEATURES_SEINE); + boolean result; - return beanToSave; - } + if (askToDelete(bean)) { - @Override - protected boolean doDelete(TripSeine bean, - DataService dataService, - DataSource dataSource, - TopiaExecutor2<? extends TopiaEntity, TripSeine> deletor) throws Exception { + result = false; - if (askToDelete(bean)) { - return false; - } - if (log.isInfoEnabled()) { - log.info("Will delete Trip " + bean.getTopiaId()); - } + } else { - dataService.delete(dataSource, null, bean, deletor); - if (log.isInfoEnabled()) { - log.info("Delete done for Trip " + bean.getTopiaId()); - } - return true; - } + if (log.isInfoEnabled()) { + log.info("Will delete Trip " + bean.getTopiaId()); + } - @Override - protected void onDelete(TopiaContext tx, Object parentBean, TripSeine beanToDelete) throws TopiaException { + TripSeineService service = getService(TripSeineService.class); + service.delete(bean.getTopiaId()); + result = true; - TopiaDAO<TripSeine> dao = getDataSource().getDAO(tx, TripSeine.class); - dao.delete(beanToDelete); + } + return result; } @Override diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java index d0a9398..378451f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java @@ -36,6 +36,7 @@ import fr.ird.observe.entities.referentiel.I18nReferenceEntity; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.referentiel.ReferenceEntity; import fr.ird.observe.entities.referentiel.VesselSizeCategory; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; @@ -229,18 +230,11 @@ public class ContentReferenceUIHandler<E extends ReferenceEntity> extends Conten * @param button le boutton qui a declanche l'action */ public void showUniqueKeys(JButton button) { - List<E> entities; Class<E> beanType = getBeanType(); - try { - entities = getDataService().loadDecoratedEntities(getDataSource(), - beanType); - - } catch (DataSourceException e) { - ErrorDialogUI.showError(e); - return; - } + ReferentialService service = getService(ReferentialService.class); + List<E> entities = service.loadAndDecorateList(beanType); List<Object[]> datas = new ArrayList<Object[]>(entities.size()); @@ -333,22 +327,13 @@ public class ContentReferenceUIHandler<E extends ReferenceEntity> extends Conten } // recherche des utilisation du bean dans la base - EntityMap usages; - try { - usages = getDataService().findAllUsages(getDataSource(), bean); - } catch (DataSourceException e) { - ErrorDialogUI.showError(e); - if (log.isErrorEnabled()) { - log.error(e); - } - return; - } + ReferentialService service = getService(ReferentialService.class); + EntityMap usages = service.findAllUsages(bean); DecoratorService dService = ObserveContext.get().getDecoratorService(); Decorator<?> decorator = dService.getDecoratorByType(bean.getClass()); String type = DecoratorService.getEntityLabel(bean.getClass()); type = t(type); - String message = t("observe.message.show.usages", type, - decorator.toString(bean)); + String message = t("observe.message.show.usages", type, decorator.toString(bean)); ContentReferenceUI<E> ui = getUi(); @@ -407,7 +392,7 @@ public class ContentReferenceUIHandler<E extends ReferenceEntity> extends Conten public void initUI() throws Exception { ReferentialContentUIInitializer<E, ContentReferenceUI<E>> uiInitializer = new ReferentialContentUIInitializer<E, ContentReferenceUI<E>>(getUi()); - uiInitializer.initUI(getDataSource()); + uiInitializer.initUI(ObserveContext.get().getServices()); ContentReferenceUI<E> ui = getUi(); @@ -679,7 +664,8 @@ public class ContentReferenceUIHandler<E extends ReferenceEntity> extends Conten log.debug("entity status was desactivated, looking " + "for usage"); } - EntityMap usages = dataService.findAllUsages(dataSource, bean); + ReferentialService service = getService(ReferentialService.class); + EntityMap usages = service.findAllUsages(bean); if (usages.isEmpty()) { if (log.isInfoEnabled()) { @@ -738,7 +724,9 @@ public class ContentReferenceUIHandler<E extends ReferenceEntity> extends Conten } // recherche des utilisation du bean dans la base - EntityMap usages = dataService.findAllUsages(getDataSource(), bean); + + ReferentialService service = getService(ReferentialService.class); + EntityMap usages = service.findAllUsages(bean); if (usages.isEmpty()) { if (log.isDebugEnabled()) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java index 1c6c060..76e2783 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java @@ -29,6 +29,7 @@ import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.referentiel.Species2; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; @@ -258,7 +259,7 @@ public abstract class ContentTableUIHandler<E extends TopiaEntity, D extends Top ContentTableUIInitializer<E, D, ObserveContentTableUI<E, D>> uiInitializer = new ContentTableUIInitializer<E, D, ObserveContentTableUI<E, D>>(getUi()); - uiInitializer.initUI(getDataSource()); + uiInitializer.initUI(ObserveContext.get().getServices()); } @@ -266,7 +267,10 @@ public abstract class ContentTableUIHandler<E extends TopiaEntity, D extends Top Set<String> speciesIds; try { - speciesIds = getDataService().getSpeciesListSpeciesIds(getDataSource(), speciesListId); + + ReferentialService service = getService(ReferentialService.class); + speciesIds = service.getSpeciesListSpeciesIds(speciesListId); + } catch (Exception e) { UIHelper.displayWarning(t("observe.title.speciesList.not.found"), t(errorMessage)); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIInitializer.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIInitializer.java index f510997..879e5e0 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIInitializer.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIInitializer.java @@ -22,8 +22,8 @@ package fr.ird.observe.ui.content.table; * #L% */ -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.util.BooleanEditor; import jaxx.runtime.SwingUtil; @@ -84,11 +84,11 @@ public class ContentTableUIInitializer<E extends TopiaEntity, D extends TopiaEnt } @Override - public void initUI(DataSource dataSource) throws Exception { + public void initUI(ObserveServiceFactory serviceFactory) throws Exception { - attachTopiaContext(dataSource, (TopiaEntityAbstract) getTableEditBean()); + attachTopiaContext(serviceFactory, (TopiaEntityAbstract) getTableEditBean()); - super.initUI(dataSource); + super.initUI(serviceFactory); ContentTableModel<?, ?> tableModel = ui.getTableModel(); ui.setContextValue(tableModel); @@ -185,8 +185,7 @@ public class ContentTableUIInitializer<E extends TopiaEntity, D extends TopiaEnt } @Override - protected void init(ActionMap actionMap, - AbstractButton editor) throws DataSourceException { + protected void init(ActionMap actionMap, AbstractButton editor) { super.init(actionMap, editor); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java index ae4a399..37a84b4 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java @@ -27,13 +27,10 @@ import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveConfig; import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; -import fr.ird.observe.db.util.TopiaExecutor; -import fr.ird.observe.db.util.TopiaExecutor2; import fr.ird.observe.entities.longline.Basket; import fr.ird.observe.entities.longline.Branchline; import fr.ird.observe.entities.longline.CatchLongline; @@ -48,6 +45,9 @@ import fr.ird.observe.entities.referentiel.longline.CatchFateLongline; import fr.ird.observe.entities.referentiel.longline.Healthness; import fr.ird.observe.entities.referentiel.longline.SizeMeasureType; import fr.ird.observe.entities.referentiel.longline.WeightMeasureType; +import fr.ird.observe.services.data.longline.CatchLonglineService; +import fr.ird.observe.services.data.longline.SetLonglineService; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIInitializer; @@ -63,7 +63,6 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.validator.NuitonValidatorScope; @@ -145,10 +144,6 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C JAXXContextEntryDef<LonglinePositionHelper<CatchLongline>> POSITION_HELPER_ENTRY = UIHelper.newContextEntryDef("CatchLonglineUI-positionHelper", LonglinePositionHelper.class); - private TopiaExecutor<? extends TopiaEntity> branchlineUpdator; - - private TopiaExecutor2<TopiaEntity, Branchline> branchlineUpdateExecutor; - public CatchLonglineUIHandler(CatchLonglineUI ui) { super(ui, DataContextType.SetLongline); } @@ -180,6 +175,8 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C boolean emptySelection = editingRow == -1; + CatchLonglineService service = getService(CatchLonglineService.class); + // load size measures SizeMeasuresTableModel sizeMeasuresTableModel = model.getSizeMeasuresTableModel(); @@ -204,16 +201,12 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C } else { // updating mode: loading from db - try { - - sizes = getDataService().getCatchLonglineSizeMeasures(getDataSource(), bean, sizeMeasuresTableModel.getLoader()); - if (log.isInfoEnabled()) { - log.info("Loaded sizes (" + bean.getTopiaId() + "): " + sizes.size()); - } - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not load size measures", e); + sizes = service.getCatchLonglineSizeMeasures(bean.getTopiaId()); + if (log.isInfoEnabled()) { + log.info("Loaded sizes (" + bean.getTopiaId() + "): " + sizes.size()); } + } // init size measures @@ -243,15 +236,10 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C } else { // updating mode: loading from db - try { - - weights = getDataService().getCatchLonglineWeightMeasures(getDataSource(), bean, weightMeasuresTableModel.getLoader()); - if (log.isInfoEnabled()) { - log.info("Loaded weights (" + bean.getTopiaId() + "): " + weights.size()); - } - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not load weight measures", e); + weights = service.getCatchLonglineWeightMeasures(bean.getTopiaId()); + if (log.isInfoEnabled()) { + log.info("Loaded weights (" + bean.getTopiaId() + "): " + weights.size()); } } @@ -378,6 +366,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C } + ReferentialService service = getService(ReferentialService.class); { // init size measures table JTable table = getUi().getSizeMeasuresTable(); @@ -393,12 +382,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C Decorator<SizeMeasureType> decorator = ObserveContext.get().getDecorator(SizeMeasureType.class); - List<SizeMeasureType> list; - try { - list = getDataService().getList(getDataSource(), SizeMeasureType.class); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not get size measure types", e); - } + List<SizeMeasureType> list = service.loadAndDecorateList(SizeMeasureType.class); UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); @@ -423,12 +407,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C Decorator<WeightMeasureType> decorator = ObserveContext.get().getDecorator(WeightMeasureType.class); - List<WeightMeasureType> list; - try { - list = getDataService().getList(getDataSource(), WeightMeasureType.class); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not get size measure types", e); - } + List<WeightMeasureType> list = service.loadAndDecorateList(WeightMeasureType.class); UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); @@ -469,9 +448,8 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C prepareSpeciesList(speciesListId, getUi().getPredator(), n("observe.error.speciesList.longline.depredator.notFound")); } - CatchLonglineContentTableUIInitializer uiInitializer = new CatchLonglineContentTableUIInitializer(getUi()); - uiInitializer.initUI(getDataSource()); + uiInitializer.initUI(ObserveContext.get().getServices()); getModel().addPropertyChangeListener(CatchLonglineUIModel.PROPERTY_SHOW_INDIVIDUAL_TABS, new PropertyChangeListener() { @Override @@ -516,7 +494,8 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C getModel().getWeightMeasuresTableModel().clear(); // load sections (and baskets and branchlines) - List<Section> sections = dataService.getSections(dataSource, setLongline.getTopiaId()); + SetLonglineService service = getService(SetLonglineService.class); + List<Section> sections = service.getSections(setLongline.getTopiaId()); LonglinePositionHelper<CatchLongline> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); positionHelper.initSections(sections, getTableModel().getData()); @@ -685,17 +664,13 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C log.info("Saved modified branchline"); } - try { - - Branchline branchline = getTableEditBean().getBranchline(); - Branchline beanSaved = getDataService().update(getDataSource(), null, branchline, getBranchlineUpdateExecutor()); - getTableEditBean().setBranchline(beanSaved); - getUi().getBranchlineValidator().setChanged(false); + Branchline branchline = getTableEditBean().getBranchline(); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not save branchline", e); - } + CatchLonglineService service = getService(CatchLonglineService.class); + Branchline beanSaved = service.saveBranchline(branchline); + getTableEditBean().setBranchline(beanSaved); + getUi().getBranchlineValidator().setChanged(false); } @@ -856,11 +831,9 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C branchlineValidator.setBean(branchline); - try { - getDataService().loadEditEntity(getDataSource(), newValue.getTopiaId(), getBranchlineUpdator()); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not load branchline", e); - } + CatchLonglineService service = getService(CatchLonglineService.class); + Branchline loadedBranchline = service.loadBranchlineForEdit(newValue.getTopiaId()); + service.copyBranchlineForEdit(loadedBranchline, getUi().getBranchlineBean()); } @@ -951,41 +924,4 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLongline, C return (CatchLonglineTableModel) super.getTableModel(); } - protected TopiaExecutor<? extends TopiaEntity> getBranchlineUpdator() { - if (branchlineUpdator == null) { - branchlineUpdator = new TopiaExecutor<Branchline>() { - - private final TopiaEntityBinder<Branchline> branchlineLoador = getModel().getBranchlineLoador(); - - @Override - public void execute(TopiaContext tx, Branchline newValue) throws TopiaException { - - Branchline editBean = getUi().getBranchlineBean(); - branchlineLoador.load(newValue, editBean, false); - - } - }; - } - return branchlineUpdator; - } - - protected TopiaExecutor2<TopiaEntity, Branchline> getBranchlineUpdateExecutor() { - if (branchlineUpdateExecutor == null) { - branchlineUpdateExecutor = new TopiaExecutor2<TopiaEntity, Branchline>() { - - private final TopiaEntityBinder<Branchline> branchlineLoador = getModel().getBranchlineLoador(); - - @Override - public Branchline execute(TopiaContext tx, TopiaEntity parentBean, Branchline beanToSave) throws TopiaException { - - Branchline editBean = getUi().getBranchlineBean(); - branchlineLoador.load(editBean, beanToSave, false); - return beanToSave; - - } - }; - } - return branchlineUpdateExecutor; - } - } \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIModel.java index aa35ae2..6e15270 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIModel.java @@ -25,7 +25,6 @@ package fr.ird.observe.ui.content.table.impl.longline; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import fr.ird.observe.BinderService; -import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.entities.longline.Branchline; import fr.ird.observe.entities.longline.CatchLongline; import fr.ird.observe.entities.longline.SetLongline; @@ -33,7 +32,6 @@ import fr.ird.observe.ui.content.table.ContentTableMeta; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIModel; import fr.ird.observe.ui.content.table.ObserveContentTableUI; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderModelBuilder; @@ -113,8 +111,6 @@ public class CatchLonglineUIModel extends ContentTableUIModel<SetLongline, Catch protected boolean branchlineTabValid; - private TopiaEntityBinder<Branchline> branchlineLoador; - public CatchLonglineUIModel(CatchLonglineUI ui) { super(SetLongline.class, CatchLongline.class, @@ -233,34 +229,4 @@ public class CatchLonglineUIModel extends ContentTableUIModel<SetLongline, Catch } - @Override - public void initModel(ObserveContentTableUI<SetLongline, CatchLongline> ui, List<ContentTableMeta<CatchLongline>> contentTableMetas) { - super.initModel(ui, contentTableMetas); - - BinderService binderService = ObserveServiceHelper.get().getBinderService(); - - String binderName = getClass().getName() + "-open"; - - branchlineLoador = binderService.getTopiaBinder(Branchline.class, binderName); - - if (branchlineLoador == null) { - - BinderModelBuilder<Branchline, Branchline> builder = - binderService.newBinderBuilder(Branchline.class, - Branchline.PROPERTY_DEPTH_RECORDER, - Branchline.PROPERTY_HOOK_LOST, - Branchline.PROPERTY_TRACE_CUT_OFF, - Branchline.PROPERTY_TIMER, - Branchline.PROPERTY_TIME_SINCE_CONTACT, - Branchline.PROPERTY_TIMER_TIME_ON_BOARD, - Branchline.PROPERTY_BAIT_HAULING_STATUS); - - branchlineLoador = binderService.registerTopiaBinder(Branchline.class, builder, binderName); - - } - } - - public TopiaEntityBinder<Branchline> getBranchlineLoador() { - return branchlineLoador; - } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineTableModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineTableModel.java index 6cb4dba..c869ab1 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineTableModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineTableModel.java @@ -22,16 +22,13 @@ package fr.ird.observe.ui.content.table.impl.longline; * #L% */ -import fr.ird.observe.entities.referentiel.Gear; -import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; import fr.ird.observe.entities.longline.GearUseFeaturesLongline; +import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.referentiel.Gear; import fr.ird.observe.ui.content.table.ContentTableMeta; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ObserveContentTableUI; -import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesMeasurementLonglinesTableModel; -import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesLonglineUIHandler; -import fr.ird.observe.ui.content.table.impl.longline.GearUseFeaturesLonglineUIModel; import org.apache.commons.collections4.CollectionUtils; import java.util.List; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java index 5380406..dfce5c6 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java @@ -25,17 +25,17 @@ package fr.ird.observe.ui.content.table.impl.longline; import fr.ird.observe.DataService; import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; -import fr.ird.observe.entities.referentiel.Gear; -import fr.ird.observe.entities.referentiel.GearCaracteristic; +import fr.ird.observe.entities.longline.GearUseFeaturesLongline; import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline; import fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLonglineDAO; -import fr.ird.observe.entities.longline.GearUseFeaturesLongline; import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.referentiel.Gear; +import fr.ird.observe.entities.referentiel.GearCaracteristic; +import fr.ird.observe.services.data.longline.GearUseFeaturesLonglineService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; @@ -164,16 +164,13 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip } else { // updating mode: loading from db - try { - - measurements = getDataService().getGearUseFeaturesMeasurementLongline(getDataSource(), bean, measurementsTableModel.getLoader()); - if (log.isInfoEnabled()) { - log.info("Loaded measurements (" + bean.getTopiaId() + "): " + measurements.size()); - } - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not load measurements", e); + GearUseFeaturesLonglineService service = getService(GearUseFeaturesLonglineService.class); + measurements = service.loadGearUseFeaturesMeasurementLonglineForEdit(bean.getTopiaId()); + if (log.isInfoEnabled()) { + log.info("Loaded measurements (" + bean.getTopiaId() + "): " + measurements.size()); } + } // init measurements @@ -253,12 +250,8 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip Decorator<GearCaracteristic> decorator = ObserveContext.get().getDecorator(GearCaracteristic.class); - List<GearCaracteristic> list; - try { - list = getDataService().getList(getDataSource(), GearCaracteristic.class); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not get gear caracteristics", e); - } + GearUseFeaturesLonglineService service = getService(GearUseFeaturesLonglineService.class); + List<GearCaracteristic> list = service.getList(GearCaracteristic.class); UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); UIHelper.setTableColumnEditor(table, 1, new GearUseFeatureMeasurementCellEditor(0)); @@ -369,7 +362,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip if (!selectionEmpty) { - GearUseFeaturesMeasurementLongline data = tableModel.getSelectedRow(); + GearUseFeaturesMeasurementLongline data = tableModel.getSelectedRow(); if (log.isInfoEnabled()) { log.info("Delete: " + data); @@ -540,15 +533,11 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip public List<GearUseFeaturesMeasurementLongline> getDefaultGearUseFeaturesMeasurementLongline(String gearId) { - try { - List<GearUseFeaturesMeasurementLongline> measurements = getDataService().getDefaultGearUseFeaturesMeasurementLongline(getDataSource(), gearId); - if (log.isInfoEnabled()) { - log.info("Create mode, use default measurements: " + measurements.size()); - } - return measurements; - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not create default measurements", e); + List<GearUseFeaturesMeasurementLongline> measurements = getService(GearUseFeaturesLonglineService.class).getDefaultGearUseFeaturesMeasurementLongline(gearId); + if (log.isInfoEnabled()) { + log.info("Create mode, use default measurements: " + measurements.size()); } + return measurements; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java index 1a65d27..f261ed5 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java @@ -30,13 +30,13 @@ import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.longline.ActivityLongline; import fr.ird.observe.entities.longline.SensorUsed; import fr.ird.observe.entities.referentiel.longline.SensorBrand; import fr.ird.observe.entities.referentiel.longline.SensorDataFormat; import fr.ird.observe.entities.referentiel.longline.SensorType; +import fr.ird.observe.services.data.longline.SensorUsedService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.table.ContentTableUIHandler; @@ -186,12 +186,8 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLongline, public void exportData() { - String filename; - try { - filename = getDataService().getSensorUsedDataFilename(getDataSource(), getTableEditBean()); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not obtain sensorUser data export filename", e); - } + SensorUsedService service = getService(SensorUsedService.class); + String filename = service.getSensorUsedDataFilename(getTableEditBean()); File file = JaxxFileChooser .forSaving() diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java index f01592f..f2400fe 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java @@ -37,6 +37,8 @@ import fr.ird.observe.entities.longline.Section; import fr.ird.observe.entities.longline.SetLongline; import fr.ird.observe.entities.longline.Tdr; import fr.ird.observe.entities.referentiel.longline.SensorBrand; +import fr.ird.observe.services.data.longline.SetLonglineService; +import fr.ird.observe.services.data.longline.TdrService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; @@ -268,7 +270,8 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLongline, Tdr> { SetLongline setLongline = super.loadEditBean(mode, dataContext, dataService, dataSource); // load sections (and baskets and branchlines) - List<Section> sections = dataService.getSections(dataSource, setLongline.getTopiaId()); + SetLonglineService service = getService(SetLonglineService.class); + List<Section> sections = service.getSections(setLongline.getTopiaId()); LonglinePositionHelper<Tdr> positionHelper = POSITION_HELPER_ENTRY.getContextValue(getUi()); positionHelper.initSections(sections, getTableModel().getData()); @@ -366,12 +369,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLongline, Tdr> { public void exportData() { - String filename; - try { - filename = getDataService().getTdrDataFilename(getDataSource(), getTableEditBean()); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not obtain tdr data export filename", e); - } + String filename = getService(TdrService.class).getTdrDataFilename(getTableEditBean()); File file = JaxxFileChooser .forSaving() diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java index 5fa35cc..08161ec 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java @@ -25,7 +25,6 @@ package fr.ird.observe.ui.content.table.impl.seine; import fr.ird.observe.DataService; import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveDAOHelper; -import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; @@ -36,6 +35,7 @@ import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeineDAO; import fr.ird.observe.entities.seine.GearUseFeaturesSeine; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.data.seine.GearUseFeaturesSeineService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; @@ -162,16 +162,12 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } else { // updating mode: loading from db - try { - - measurements = getDataService().getGearUseFeaturesMeasurementSeine(getDataSource(), bean, measurementsTableModel.getLoader()); - if (log.isInfoEnabled()) { - log.info("Loaded measurements (" + bean.getTopiaId() + "): " + measurements.size()); - } - - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not load measurements", e); + GearUseFeaturesSeineService service = getService(GearUseFeaturesSeineService.class); + measurements = service.loadGearUseFeaturesMeasurementSeineForEdit(bean.getTopiaId()); + if (log.isInfoEnabled()) { + log.info("Loaded measurements (" + bean.getTopiaId() + "): " + measurements.size()); } + } // init measurements @@ -251,12 +247,8 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei Decorator<GearCaracteristic> decorator = ObserveContext.get().getDecorator(GearCaracteristic.class); - List<GearCaracteristic> list; - try { - list = getDataService().getList(getDataSource(), GearCaracteristic.class); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not get gear caracteristics", e); - } + GearUseFeaturesSeineService service = getService(GearUseFeaturesSeineService.class); + List<GearCaracteristic> list = service.getList(GearCaracteristic.class); UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(list, decorator)); UIHelper.setTableColumnEditor(table, 1, new GearUseFeatureMeasurementCellEditor(0)); @@ -367,7 +359,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei if (!selectionEmpty) { - GearUseFeaturesMeasurementSeine data = tableModel.getSelectedRow(); + GearUseFeaturesMeasurementSeine data = tableModel.getSelectedRow(); if (log.isInfoEnabled()) { log.info("Delete: " + data); @@ -394,12 +386,6 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } - - @Override - protected TripSeine onCreate(TopiaContext tx, Object parentBean, TripSeine editBean) throws TopiaException { - return super.onCreate(tx, parentBean, editBean); - } - @Override protected void onUpdateFinalize(TopiaContext tx, TripSeine bean, Collection<GearUseFeaturesSeine> oldChilds) throws TopiaException { @@ -539,15 +525,12 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei public List<GearUseFeaturesMeasurementSeine> getDefaultGearUseFeaturesMeasurementSeine(String gearId) { - try { - List<GearUseFeaturesMeasurementSeine> measurements = getDataService().getDefaultGearUseFeaturesMeasurementSeine(getDataSource(), gearId); - if (log.isInfoEnabled()) { - log.info("Create mode, use default measurements: " + measurements.size()); - } - return measurements; - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not create default measurements", e); + GearUseFeaturesSeineService service = getService(GearUseFeaturesSeineService.class); + List<GearUseFeaturesMeasurementSeine> measurements = service.getDefaultGearUseFeaturesMeasurementSeine(gearId); + if (log.isInfoEnabled()) { + log.info("Create mode, use default measurements: " + measurements.size()); } + return measurements; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java index 34d7a16..417e8fc 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java @@ -38,6 +38,9 @@ import fr.ird.observe.entities.seine.NonTargetCatch; import fr.ird.observe.entities.seine.NonTargetLength; import fr.ird.observe.entities.seine.NonTargetSample; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.data.TripService; +import fr.ird.observe.services.data.seine.NonTargetSampleService; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; @@ -230,15 +233,13 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non if (mode == ContentMode.UPDATE) { // get current ocean - Ocean ocean = dataService.getTripOcean( - dataSource, dataContext.getSelectedTripId()); + Ocean ocean = getService(TripService.class).getTripOcean(dataContext.getSelectedTripId()); ObserveConfig config = getUi().getContextValue(ObserveConfig.class); String speciesListId = config.getSpeciesListSeineNonTargetCatchId(); // get all species - List<Species> allSpecies = - dataService.loadDecoratedSpecies(dataSource, speciesListId); + List<Species> allSpecies = getService(ReferentialService.class).loadDecoratedSpecies(speciesListId); // filtre par status actif ReferenceEntities.filterReferentielListByStatus(allSpecies); @@ -365,11 +366,11 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non Collection<Species> speciessToDelete = new HashSet<Species>(); List<NonTargetLength> tailleToDelete = new ArrayList<NonTargetLength>(); - getDataService().getObsoleteEspeceForNonTargetSample(getDataSource(), - editBean.getTopiaId(), - speciessUsed, - speciessToDelete, - tailleToDelete); + NonTargetSampleService service = getService(NonTargetSampleService.class); + service.getObsoleteEspeceForNonTargetSample(editBean.getTopiaId(), + speciessUsed, + speciessToDelete, + tailleToDelete); if (!tailleToDelete.isEmpty()) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java index a78c28e..7d3cd34 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java @@ -32,6 +32,7 @@ import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.NonTargetLength; import fr.ird.observe.entities.seine.NonTargetSample; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.data.seine.NonTargetSampleService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; @@ -120,10 +121,14 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam protected String getEditBeanIdToLoad(DataContext dataContext, DataService dataService, DataSource dataSource) throws DataSourceException { + String setId = dataContext.getSelectedSetId(); + // on doit récupérer l'unique échantillonThon de la calée - String id = dataService.getNonTargetSampleId(dataSource, setId); + NonTargetSampleService service = getService(NonTargetSampleService.class); + String id = service.getNonTargetSampleId(setId); return id; + } @Override @@ -132,19 +137,20 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam DataService dataService, DataSource dataSource) throws DataSourceException { - List<Species> speciess; + List<Species> speciesList; String setId = dataContext.getSelectedSetId(); if (mode == ContentMode.UPDATE) { - - speciess = dataService.getAvailableEspeceForNonTargetSample(dataSource, setId); + NonTargetSampleService service = getService(NonTargetSampleService.class); + speciesList = service.getAvailableEspeceForNonTargetSample(setId); } else { - speciess = new ArrayList<Species>(); + speciesList = new ArrayList<Species>(); } - ALL_ESPECES_ENTRY.setContextValue(getUi(), speciess); + + ALL_ESPECES_ENTRY.setContextValue(getUi(), speciesList); // on doit récupérer l'unique échantillonThon de la calée String id = getEditBeanIdToLoad(dataContext, dataService, dataSource); @@ -340,16 +346,9 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam protected ContentMode getContentMode(DataContext dataContext) { ContentMode mode = super.getContentMode(dataContext); - boolean showData = false; - - try { - String setId = getDataContext().getSelectedSetId(); - showData = getDataService().canUseNonTargetSample(getDataSource(), setId); - } catch (DataSourceException e) { - if (log.isErrorEnabled()) { - log.error(e); - } - } + String setId = getDataContext().getSelectedSetId(); + NonTargetSampleService service = getService(NonTargetSampleService.class); + boolean showData = service.canUseNonTargetSample(setId); getUi().getModel().setShowData(showData); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java index b6ae93a..4cc82df 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java @@ -33,6 +33,8 @@ import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.referentiel.Species2; import fr.ird.observe.entities.seine.SchoolEstimate; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.data.TripService; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; @@ -84,15 +86,13 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeine, Sch if (mode == ContentMode.UPDATE) { // get current ocean - Ocean ocean = dataService.getTripOcean( - dataSource, dataContext.getSelectedTripId()); + Ocean ocean = getService(TripService.class).getTripOcean(dataContext.getSelectedTripId()); // get all species from the configured speciesList ObserveConfig config = getUi().getContextValue(ObserveConfig.class); String speciesListId = config.getSpeciesListSeineSchoolEstimateId(); - List<Species> allSpecies = - dataService.loadDecoratedSpecies(dataSource, speciesListId); + List<Species> allSpecies = getService(ReferentialService.class).loadDecoratedSpecies(speciesListId); // filtre par status actif ReferenceEntities.filterReferentielListByStatus(allSpecies); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java index 2068cda..6d0361c 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java @@ -38,6 +38,8 @@ import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TargetCatch; import fr.ird.observe.entities.seine.TargetLength; import fr.ird.observe.entities.seine.TargetSample; +import fr.ird.observe.services.data.TripService; +import fr.ird.observe.services.data.seine.TargetSampleService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; @@ -175,8 +177,7 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Target ReferenceEntities.filterReferentielListByStatus(categorieList); // get current ocean - Ocean ocean = dataService.getTripOcean( - dataSource, dataContext.getSelectedTripId()); + Ocean ocean = getService(TripService.class).getTripOcean(dataContext.getSelectedTripId()); // filtre par ocean categorieList = Species2.filterWeightCategoryByOcean(categorieList, ocean); @@ -258,12 +259,12 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Target List<TargetLength> tailleToDelete = new ArrayList<TargetLength>(); Collection<Species> speciessToDelete = new HashSet<Species>(); - getDataService().getObsoleteEspeceForTargetSample(getDataSource(), - bean.getTopiaId(), - speciessUsed, - speciessToDelete, - tailleToDelete, - false); + TargetSampleService service = getService(TargetSampleService.class); + service.getObsoleteEspeceForTargetSample(bean.getTopiaId(), + speciessUsed, + speciessToDelete, + tailleToDelete, + false); if (!tailleToDelete.isEmpty()) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java index d9a1ae5..22bd908 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java @@ -39,6 +39,9 @@ import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TargetCatch; import fr.ird.observe.entities.seine.TargetLength; import fr.ird.observe.entities.seine.TargetSample; +import fr.ird.observe.services.data.TripService; +import fr.ird.observe.services.data.seine.TargetSampleService; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; @@ -230,13 +233,13 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeine, ReferenceEntities.filterReferentielListByStatus(categorieList); // get current ocean - Ocean ocean = dataService.getTripOcean(dataSource, dataContext.getSelectedTripId()); + Ocean ocean = getService(TripService.class).getTripOcean(dataContext.getSelectedTripId()); // filtre par ocean categorieList = Species2.filterWeightCategoryByOcean(categorieList, ocean); - reasonForDiscardList = new ArrayList<ReasonForDiscard>( - dataService.loadDecoratedEntities(dataSource, ReasonForDiscard.class)); + ReferentialService service = getService(ReferentialService.class); + reasonForDiscardList = service.loadAndDecorateList(ReasonForDiscard.class); // filtre par status actif ReferenceEntities.filterReferentielListByStatus(reasonForDiscardList); @@ -324,12 +327,12 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeine, List<TargetLength> tailleToDelete = new ArrayList<TargetLength>(); java.util.Set<Species> speciessToDelete = new HashSet<Species>(); - getDataService().getObsoleteEspeceForTargetSample(getDataSource(), - bean.getTopiaId(), - speciessUsed, - speciessToDelete, - tailleToDelete, - true); + TargetSampleService service = getService(TargetSampleService.class); + service.getObsoleteEspeceForTargetSample(bean.getTopiaId(), + speciessUsed, + speciessToDelete, + tailleToDelete, + true); if (!tailleToDelete.isEmpty()) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java index 449f10c..b1cbfb3 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java @@ -31,6 +31,7 @@ import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TargetLength; import fr.ird.observe.entities.seine.TargetSample; +import fr.ird.observe.services.data.seine.TargetSampleService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; @@ -127,7 +128,8 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T DataSource dataSource) throws DataSourceException { String setId = dataContext.getSelectedSetId(); // on doit récupérer l'unique échantillonThon de la calée - String id = dataService.getTargetSampleId(dataSource, setId, discarded); + + String id = getService(TargetSampleService.class).getTargetSampleId(setId, discarded); return id; } @@ -142,10 +144,10 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T if (mode == ContentMode.UPDATE) { // on ne charge les speciess uniquement si on est en mode édition - List<Species> speciess = - dataService.getAvailableEspeceForTargetSample(dataSource, setId, discarded); + TargetSampleService service = getService(TargetSampleService.class); + List<Species> speciesList = service.getAvailableEspeceForTargetSample(setId, discarded); - getUi().getSpecies().setData(speciess); + getUi().getSpecies().setData(speciesList); } // on doit récupérer l'unique échantillonThon de la calée @@ -353,16 +355,10 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T protected ContentMode getContentMode(DataContext dataContext) { ContentMode mode = super.getContentMode(dataContext); - boolean showData = false; - try { - String setId = getDataContext().getSelectedSetId(); - showData = getDataService().canUseTargetSample(getDataSource(), setId, discarded); - } catch (DataSourceException e) { - if (log.isErrorEnabled()) { - log.error(e); - } - } + String setId = getDataContext().getSelectedSetId(); + TargetSampleService service = getService(TargetSampleService.class); + boolean showData = service.canUseTargetSample(setId, discarded); getModel().setShowData(showData); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java b/observe-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java index 4832fcb..c46692a 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java @@ -28,7 +28,7 @@ import fr.ird.observe.db.DataSourceFactory; import fr.ird.observe.db.constants.CreationMode; import fr.ird.observe.db.impl.PGDataSource; import fr.ird.observe.db.impl.PGDataSourceConfig; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.db.util.PGInstall; import jaxx.runtime.JAXXContext; import org.apache.commons.logging.Log; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java b/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java index 0993cf8..5983460 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java @@ -26,7 +26,7 @@ import fr.ird.observe.DataService; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.constants.DbMode; import fr.ird.observe.db.impl.H2DataSource; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import jaxx.runtime.JAXXContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index 06ea88c..e34ad30 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -41,11 +41,12 @@ import fr.ird.observe.db.impl.H2DataSource; import fr.ird.observe.db.impl.H2DataSourceConfig; import fr.ird.observe.db.impl.PGDataSource; import fr.ird.observe.db.impl.PGDataSourceConfig; -import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.db.util.PGInstall; import fr.ird.observe.db.util.SecurityModel; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.tabs.RolesTableModel; @@ -1187,8 +1188,8 @@ public class StorageUIHandler { dataModel.setUseData(true); dataModel.setUseOpenData(true); dataModel.setUseReferentiel(false); - - DataSelectionModel.populate(dataModel, ObserveContext.get().getDataService(), source); + ObserveServiceFactory services = ObserveContext.newServiceFactory(source); + DataSelectionModel.populate(dataModel,services); // positionnement du model de selection de données // dans le model du wizard diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index 5b1a8af..e2ba79f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -32,7 +32,7 @@ import fr.ird.observe.db.constants.CreationMode; import fr.ird.observe.db.constants.DbMode; import fr.ird.observe.db.impl.H2DataSourceConfig; import fr.ird.observe.db.impl.PGDataSourceConfig; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.db.util.PGInstall; import fr.ird.observe.db.util.SecurityModel; import jaxx.runtime.JAXXContext; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java index 8c58a17..7883989 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java @@ -23,14 +23,13 @@ package fr.ird.observe.ui.storage.tabs; import com.google.common.base.Preconditions; import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceConfig; import fr.ird.observe.db.constants.ConnexionStatus; import fr.ird.observe.db.constants.CreationMode; import fr.ird.observe.db.constants.DbMode; import fr.ird.observe.db.impl.PGDataSourceConfig; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.StorageStep; import fr.ird.observe.ui.storage.StorageUIHandler; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java index 0886000..fba1ddb 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java @@ -112,7 +112,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel if (provider == null) { DataSource source = ObserveContext.get().getDataSource(); if (source != null) { - provider = new ObserveDataProvider(source); + provider = new ObserveDataProvider(ObserveContext.get().getServices()); setDataProvider(provider); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java index e5aa254..c1b7181 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java @@ -22,10 +22,10 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.longline.ActivityLonglineService; import fr.ird.observe.ui.tree.loadors.ActivityLonglineNodeChildLoador; /** @@ -38,13 +38,14 @@ public class ActivityLonglineNode extends EntityNodeSupport<ActivityLongline> { private static final long serialVersionUID = 1L; - public ActivityLonglineNode(ActivityLongline entity) { - super(ActivityLongline.class, entity, ObserveTreeHelper.getChildLoador(ActivityLonglineNodeChildLoador.class)); + public ActivityLonglineNode(ObserveDataProvider dataProvider, ActivityLongline entity) { + super(dataProvider, ActivityLongline.class, entity, ObserveTreeHelper.getChildLoador(ActivityLonglineNodeChildLoador.class)); } @Override - protected ActivityLongline getEntity(DataService dataService, DataSource source) throws DataSourceException { - return dataService.getActivityLonglineStub(source, id); + protected ActivityLongline getEntity(ObserveServiceFactory services) throws DataSourceException { + ActivityLonglineService service = services.getService(ActivityLonglineService.class); + return service.getActivityLonglineStub(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java index bf12f1a..90949a4 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java @@ -22,10 +22,10 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.seine.ActivitySeineService; import fr.ird.observe.ui.tree.loadors.ActivitySeineNodeChildLoador; /** @@ -38,13 +38,14 @@ public class ActivitySeineNode extends EntityNodeSupport<ActivitySeine> { private static final long serialVersionUID = 1L; - public ActivitySeineNode(ActivitySeine entity) { - super(ActivitySeine.class, entity, ObserveTreeHelper.getChildLoador(ActivitySeineNodeChildLoador.class)); + public ActivitySeineNode(ObserveDataProvider dataProvider, ActivitySeine entity) { + super(dataProvider, ActivitySeine.class, entity, ObserveTreeHelper.getChildLoador(ActivitySeineNodeChildLoador.class)); } @Override - protected ActivitySeine getEntity(DataService dataService, DataSource source) throws DataSourceException { - return dataService.getActivitySeineStub(source, id); + protected ActivitySeine getEntity(ObserveServiceFactory services) throws DataSourceException { + ActivitySeineService service = services.getService(ActivitySeineService.class); + return service.getActivitySeineStub(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java index 93684d4..003fcdc 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.ui.tree; -import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.model.DataSelectionModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java index 123e944..01bcd73 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java @@ -22,11 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.OpenableEntity; +import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.ui.tree.loadors.AbstractNodeChildLoador; import jaxx.runtime.swing.nav.NavBridge; import jaxx.runtime.swing.nav.NavDataProvider; @@ -57,22 +55,23 @@ public abstract class EntityNodeSupport<E extends TopiaEntity> extends ObserveNo */ protected transient E entity; - protected transient DataService dataService; + protected transient ObserveDataProvider dataProvider; private boolean reloadEntity; - protected abstract E getEntity(DataService dataService, DataSource source) throws DataSourceException; + protected abstract E getEntity(ObserveServiceFactory services) throws DataSourceException; - protected EntityNodeSupport(Class<E> internalClass, E entity) { - this(internalClass, entity, null); + protected EntityNodeSupport(ObserveDataProvider dataProvider, Class<E> internalClass, E entity) { + this(dataProvider, internalClass, entity, null); } - protected EntityNodeSupport(Class<E> type, E entity, AbstractNodeChildLoador<?> childLoador) { - this(type, entity, null, childLoador); + protected EntityNodeSupport(ObserveDataProvider dataProvider, Class<E> type, E entity, AbstractNodeChildLoador<?> childLoador) { + this(dataProvider, type, entity, null, childLoador); } - protected EntityNodeSupport(Class<E> type, E entity, String context, AbstractNodeChildLoador<?> childLoador) { + protected EntityNodeSupport(ObserveDataProvider dataProvider, Class<E> type, E entity, String context, AbstractNodeChildLoador<?> childLoador) { super(type, entity.getTopiaId(), context, childLoador, false); + this.dataProvider = dataProvider; setEntity(entity); } @@ -145,8 +144,8 @@ public abstract class EntityNodeSupport<E extends TopiaEntity> extends ObserveNo } try { - entity = getEntity(getDataService(), oProvider.getDataSource()); - } catch (DataSourceException e) { + entity = getEntity(oProvider.getServices()); + } catch (Exception e) { throw new RuntimeException(e); } @@ -154,13 +153,6 @@ public abstract class EntityNodeSupport<E extends TopiaEntity> extends ObserveNo } - private DataService getDataService() { - if (dataService == null) { - dataService = ObserveContext.get().getDataService(); - } - return dataService; - } - public void setReloadEntity(boolean reloadEntity) { this.reloadEntity = reloadEntity; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java index bd90005..3471e0b 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java @@ -22,10 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.seine.FloatingObject; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.seine.FloatingObjectService; import fr.ird.observe.ui.tree.loadors.FloatingObjectNodeChildLoador; /** @@ -38,13 +37,14 @@ public class FloatingObjectSeineNode extends EntityNodeSupport<FloatingObject> { private static final long serialVersionUID = 1L; - public FloatingObjectSeineNode(FloatingObject entity) { - super(FloatingObject.class, entity, ObserveTreeHelper.getChildLoador(FloatingObjectNodeChildLoador.class)); + public FloatingObjectSeineNode(ObserveDataProvider dataProvider, FloatingObject entity) { + super(dataProvider, FloatingObject.class, entity, ObserveTreeHelper.getChildLoador(FloatingObjectNodeChildLoador.class)); } @Override - protected FloatingObject getEntity(DataService dataService, DataSource source) throws DataSourceException { - return dataService.getFloatinObjectStub(source, id); + protected FloatingObject getEntity(ObserveServiceFactory services) { + FloatingObjectService service = services.getService(FloatingObjectService.class); + return service.getFloatinObjectStub(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java index 0df4adf..53839b4 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java @@ -21,10 +21,10 @@ */ package fr.ird.observe.ui.tree; -import fr.ird.observe.ObserveServiceHelper; -import fr.ird.observe.DataService; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.model.DataSelectionModel; import jaxx.runtime.swing.nav.NavDataProvider; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -40,20 +40,14 @@ public class ObserveDataProvider implements NavDataProvider { /** Logger */ static private final Log log = LogFactory.getLog(ObserveDataProvider.class); - protected DataSource dataSource; - - protected DataService dataService; + protected final ObserveServiceFactory services; protected DataSelectionModel selectionModel; private boolean creating; - public ObserveDataProvider(DataSource dataSource) { - this.dataSource = dataSource; - } - - public void setSource(DataSource dataSource) { - this.dataSource = dataSource; + public ObserveDataProvider(ObserveServiceFactory services) { + this.services = services; } public void setSelectionModel(DataSelectionModel selectionModel) { @@ -65,24 +59,14 @@ public class ObserveDataProvider implements NavDataProvider { @Override public boolean isEnabled() { + DataSource dataSource = services.getDataSource(); return dataSource != null && dataSource.isOpen() || selectionModel != null; } - public DataSource getDataSource() { - return dataSource; - } - public DataSelectionModel getSelectionModel() { return selectionModel; } - protected DataService getDataService() { - if (dataService == null) { - dataService = ObserveServiceHelper.getDataService(); - } - return dataService; - } - public boolean isCreating() { return creating; } @@ -91,4 +75,15 @@ public class ObserveDataProvider implements NavDataProvider { this.creating = creating; } + public ObserveServiceFactory getServices() { + return services; + } + + public <S extends ObserveService> S getService(Class<S> serviceType) { + return services.getService(serviceType); + } + + public DataSource getDataSource() { + return services.getDataSource(); + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java index c2e5607..cc11922 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java @@ -23,12 +23,10 @@ package fr.ird.observe.ui.tree; */ import com.google.common.base.Preconditions; -import fr.ird.observe.DataService; -import fr.ird.observe.ObserveTechnicalException; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.ObserveContext; import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.entities.referentiel.Programs; +import fr.ird.observe.services.data.OpenableService; +import fr.ird.observe.services.data.TripService; import fr.ird.observe.ui.tree.actions.ChangeTripProgramActionListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -220,25 +218,17 @@ public class ObserveNavigationTreeShowPopupAction { moveTripPopup.removeAll(); - DataService dataService = treeHelper.getDataService(); - DataSource dataSource = treeHelper.getDataProvider().getDataSource(); + ObserveContext observeContext = ObserveContext.get(); + OpenableService openableService = observeContext.getService(OpenableService.class); + TripService tripService = observeContext.getService(TripService.class); String tripId = selectedNode.getId(); - List<Program> programs; + List<Program> programs = tripService.getPossibleProgramsForTrip(tripId); - try { + String openProgramId = observeContext.getDataContext().getOpenProgramId(); - programs = dataService.getPossibleProgramsForTrip(dataSource, tripId); - Programs.sort(programs); - - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Can't get possible programs for trip " + tripId, e); - } - - String openProgramId = dataService.getDataContext().getOpenProgramId(); - - Decorator<Program> programDecorator = dataService.getDecoratorService().getDecoratorByType(Program.class); + Decorator<Program> programDecorator = observeContext.getDecoratorService().getDecoratorByType(Program.class); for (Program program : programs) { String programId = program.getTopiaId(); @@ -248,8 +238,8 @@ public class ObserveNavigationTreeShowPopupAction { JMenuItem item = new JMenuItem(programDecorator.toString(program)); item.setName(programId); item.addActionListener(new ChangeTripProgramActionListener(treeHelper, - dataService, - dataSource, + openableService, + tripService, tripId, programId)); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index f334560..765efa8 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -22,23 +22,23 @@ package fr.ird.observe.ui.tree; import com.google.common.base.Preconditions; -import fr.ird.observe.DataService; import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.OpenableEntity; import fr.ird.observe.entities.longline.ActivityLongline; import fr.ird.observe.entities.longline.SetLongline; 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.ActivitySeine; import fr.ird.observe.entities.seine.FloatingObject; import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.model.DataSelectionModel; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.tree.loadors.AbstractNodeChildLoador; import fr.ird.observe.ui.tree.loadors.ActivityLonglineNodeChildLoador; @@ -50,7 +50,6 @@ import fr.ird.observe.ui.tree.loadors.ProgramSeineNodeChildLoador; import fr.ird.observe.ui.tree.loadors.RootNodeChildLoador; import fr.ird.observe.ui.tree.loadors.RoutesNodeChildLoador; import jaxx.runtime.JAXXContext; -import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.tree.NavTreeHelper; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; import org.apache.commons.collections.CollectionUtils; @@ -81,9 +80,6 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { /** Logger. */ static private final Log log = LogFactory.getLog(ObserveTreeHelper.class); - /** le service de récupération de données. */ - protected DataService dataService; - private boolean createUnsaved; public ObserveTreeHelper() { @@ -111,20 +107,14 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { } - protected DataService getDataService() { - if (dataService == null) { - dataService = ObserveContext.get().getDataService(); - } - return dataService; - } - @Override protected ObserveDataProvider getDataProvider() { ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { DataSource source = ObserveContext.get().getDataSource(); if (source != null) { - provider = new ObserveDataProvider(source); + + provider = new ObserveDataProvider(ObserveContext.get().getServices()); setDataProvider(provider); } } @@ -427,78 +417,65 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { } public ObserveNode addTrip(ObserveNode parentNode, TripSeine bean) { - ProgramSeineNodeChildLoador loador = - getChildLoador(ProgramSeineNodeChildLoador.class); + ProgramSeineNodeChildLoador loador = getChildLoador(ProgramSeineNodeChildLoador.class); ObserveNode result = loador.createNode(bean, dataProvider); insertNode(parentNode, result); return result; } public ObserveNode addTrip(ObserveNode parentNode, TripLongline bean) { - ProgramLonglineNodeChildLoador loador = - getChildLoador(ProgramLonglineNodeChildLoador.class); + ProgramLonglineNodeChildLoador loador = getChildLoador(ProgramLonglineNodeChildLoador.class); ObserveNode result = loador.createNode(bean, dataProvider); insertNode(parentNode, result); return result; } public ObserveNode addRoute(ObserveNode parentNode, Route bean) { - RoutesNodeChildLoador loador = - getChildLoador(RoutesNodeChildLoador.class); + RoutesNodeChildLoador loador = getChildLoador(RoutesNodeChildLoador.class); ObserveNode result = loador.createNode(bean, dataProvider); insertNode(parentNode, result); return result; } public ObserveNode addActivity(ObserveNode parentNode, ActivitySeine bean) { - ActivitySeinesNodeChildLoador loador = - getChildLoador(ActivitySeinesNodeChildLoador.class); + ActivitySeinesNodeChildLoador loador = getChildLoador(ActivitySeinesNodeChildLoador.class); ObserveNode result = loador.createNode(bean, dataProvider); insertNode(parentNode, result); return result; } public ObserveNode addActivity(ObserveNode parentNode, ActivityLongline bean) { - ActivityLonglinesNodeChildLoador loador = - getChildLoador(ActivityLonglinesNodeChildLoador.class); + ActivityLonglinesNodeChildLoador loador = getChildLoador(ActivityLonglinesNodeChildLoador.class); ObserveNode result = loador.createNode(bean, dataProvider); insertNode(parentNode, result); return result; } public ObserveNode addFloatingObject(ObserveNode parentNode, FloatingObject bean) { - ActivitySeineNodeChildLoador loador = - getChildLoador(ActivitySeineNodeChildLoador.class); + ActivitySeineNodeChildLoador loador = getChildLoador(ActivitySeineNodeChildLoador.class); ObserveNode result = loador.createNode(bean, dataProvider); insertNode(parentNode, result); return result; } public ObserveNode addSet(ObserveNode parentNode, SetSeine bean) { - ActivitySeineNodeChildLoador loador = - getChildLoador(ActivitySeineNodeChildLoador.class); - ObserveNode result = loador.createSetNode(bean); + ActivitySeineNodeChildLoador loador = getChildLoador(ActivitySeineNodeChildLoador.class); + ObserveNode result = loador.createSetNode(getDataProvider(), bean); insertNode(parentNode, result); return result; } public ObserveNode addSet(ObserveNode parentNode, SetLongline bean) { - ActivityLonglineNodeChildLoador loador = - getChildLoador(ActivityLonglineNodeChildLoador.class); - ObserveNode result = loador.createSetNode(bean); + ActivityLonglineNodeChildLoador loador = getChildLoador(ActivityLonglineNodeChildLoador.class); + ObserveNode result = loador.createSetNode(getDataProvider(), bean); insertNode(parentNode, result); return result; } public ObserveNode addProgram(Program bean) throws Exception { - List<Program> data = getDataService().getList( - getDataProvider().getDataSource(), Program.class); - int newIndex = 0; - if (CollectionUtils.isNotEmpty(data)) { - Programs.sort(data); - newIndex = data.indexOf(bean); - } + ReferentialService service = getDataProvider().getService(ReferentialService.class); + int newIndex = service.getProgramPosition(bean.getTopiaId()); RootNodeChildLoador loador = getChildLoador(RootNodeChildLoador.class); ObserveNode result = loador.createNode(bean, dataProvider); insertNode(getRootNode(), result, newIndex); @@ -517,7 +494,6 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { ObserveNode result = rootNode.getChild(bean.getTopiaId(), getBridge(), dataProvider); Preconditions.checkNotNull(result, "Could not find program node with id: " + bean.getTopiaId()); reloadNode(result, false); -// refreshNode(result, false); } public void reloadSelectedNode(boolean refreshFromParent, boolean refreshChilds) { @@ -537,9 +513,10 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { void setDataSource(DataSource source) { - NavDataProvider provider = null; + ObserveDataProvider provider = null; if (source != null) { - provider = new ObserveDataProvider(source); + ObserveServiceFactory services = ObserveContext.newServiceFactory(source); + provider = new ObserveDataProvider(services); } setDataProvider(provider); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java index 813e1b8..c49db36 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java @@ -22,10 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.tree.loadors.ProgramLonglineNodeChildLoador; /** @@ -38,14 +37,15 @@ public class ProgramLonglineNode extends EntityNodeSupport<Program> { private static final long serialVersionUID = 1L; - public ProgramLonglineNode(Program entity) { - super(Program.class, entity, entity.getGearType().name(), ObserveTreeHelper.getChildLoador(ProgramLonglineNodeChildLoador.class)); + public ProgramLonglineNode(ObserveDataProvider dataProvider, Program entity) { + super(dataProvider, Program.class, entity, entity.getGearType().name(), ObserveTreeHelper.getChildLoador(ProgramLonglineNodeChildLoador.class)); setEntity(entity); } @Override - protected Program getEntity(DataService dataService, DataSource source) throws DataSourceException { - return dataService.getProgramStub(source, id); + protected Program getEntity(ObserveServiceFactory services) { + ReferentialService service = services.getService(ReferentialService.class); + return service.getProgramStub(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java index 5954d1b..5eb32b3 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java @@ -22,10 +22,10 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.tree.loadors.ProgramSeineNodeChildLoador; /** @@ -38,13 +38,14 @@ public class ProgramSeineNode extends EntityNodeSupport<Program> { private static final long serialVersionUID = 1L; - public ProgramSeineNode(Program entity) { - super(Program.class, entity, entity.getGearType().name(), ObserveTreeHelper.getChildLoador(ProgramSeineNodeChildLoador.class)); + public ProgramSeineNode(ObserveDataProvider dataProvider, Program entity) { + super(dataProvider, Program.class, entity, entity.getGearType().name(), ObserveTreeHelper.getChildLoador(ProgramSeineNodeChildLoador.class)); } @Override - protected Program getEntity(DataService dataService, DataSource source) throws DataSourceException { - return dataService.getProgramStub(source, id); + protected Program getEntity(ObserveServiceFactory services) throws DataSourceException { + ReferentialService service = services.getService(ReferentialService.class); + return service.getProgramStub(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java index ab5d772..4c76293 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java @@ -22,10 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.seine.RouteService; /** * Created on 4/9/15. @@ -37,13 +36,14 @@ public class RouteSeineNode extends EntityNodeSupport<Route> { private static final long serialVersionUID = 1L; - public RouteSeineNode(Route entity) { - super(Route.class, entity); + public RouteSeineNode(ObserveDataProvider dataProvider, Route entity) { + super(dataProvider, Route.class, entity); } @Override - protected Route getEntity(DataService dataService, DataSource source) throws DataSourceException { - return dataService.getRouteStub(source, id); + protected Route getEntity(ObserveServiceFactory services) { + RouteService service = services.getService(RouteService.class); + return service.getRouteStub(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java index 871c539..4b0fb0c 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java @@ -22,10 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.longline.SetLonglineService; import fr.ird.observe.ui.tree.loadors.SetLonglineNodeChildLoador; /** @@ -38,13 +37,14 @@ public class SetLonglineNode extends EntityNodeSupport<SetLongline> { private static final long serialVersionUID = 1L; - public SetLonglineNode(SetLongline entity) { - super(SetLongline.class, entity, ObserveTreeHelper.getChildLoador(SetLonglineNodeChildLoador.class)); + public SetLonglineNode(ObserveDataProvider dataProvider, SetLongline entity) { + super(dataProvider, SetLongline.class, entity, ObserveTreeHelper.getChildLoador(SetLonglineNodeChildLoador.class)); } @Override - protected SetLongline getEntity(DataService dataService, DataSource source) throws DataSourceException { - return (SetLongline) dataService.loadEntity(source, id, true); + protected SetLongline getEntity(ObserveServiceFactory services) { + SetLonglineService service = services.getService(SetLonglineService.class); + return service.loadSet(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java index 52fcd2f..25df6af 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java @@ -22,10 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.seine.SetSeineService; import fr.ird.observe.ui.tree.loadors.SetSeineNodeChildLoador; /** @@ -38,13 +37,14 @@ public class SetSeineNode extends EntityNodeSupport<SetSeine> { private static final long serialVersionUID = 1L; - public SetSeineNode(SetSeine entity) { - super(SetSeine.class, entity, ObserveTreeHelper.getChildLoador(SetSeineNodeChildLoador.class)); + public SetSeineNode(ObserveDataProvider dataProvider, SetSeine entity) { + super(dataProvider, SetSeine.class, entity, ObserveTreeHelper.getChildLoador(SetSeineNodeChildLoador.class)); } @Override - protected SetSeine getEntity(DataService dataService, DataSource source) throws DataSourceException { - return (SetSeine) dataService.loadEntity(source, id, true); + protected SetSeine getEntity(ObserveServiceFactory services) { + SetSeineService service = services.getService(SetSeineService.class); + return service.loadSet(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java index d68a8c6..22469d3 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java @@ -22,10 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.longline.TripLonglineService; /** * Created on 4/9/15. @@ -37,13 +36,14 @@ public class TripLonglineNode extends EntityNodeSupport<TripLongline> { private static final long serialVersionUID = 1L; - public TripLonglineNode(TripLongline entity) { - super(TripLongline.class, entity); + public TripLonglineNode(ObserveDataProvider dataProvider, TripLongline entity) { + super(dataProvider, TripLongline.class, entity); } @Override - protected TripLongline getEntity(DataService dataService, DataSource source) throws DataSourceException { - return dataService.getTripLonglineStub(source, id); + protected TripLongline getEntity(ObserveServiceFactory services) { + TripLonglineService service = services.getService(TripLonglineService.class); + return service.getTripLonglineStub(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java index 0d62950..101b50a 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java @@ -22,10 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.data.seine.TripSeineService; /** * Created on 4/9/15. @@ -37,13 +36,14 @@ public class TripSeineNode extends EntityNodeSupport<TripSeine> { private static final long serialVersionUID = 1L; - public TripSeineNode(TripSeine entity) { - super(TripSeine.class, entity); + public TripSeineNode(ObserveDataProvider dataProvider, TripSeine entity) { + super(dataProvider, TripSeine.class, entity); } @Override - protected TripSeine getEntity(DataService dataService, DataSource source) throws DataSourceException { - return dataService.getTripSeineStub(source, id); + protected TripSeine getEntity(ObserveServiceFactory services) { + TripSeineService service = services.getService(TripSeineService.class); + return service.getTripSeineStub(id); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java index 766e3d3..5fb89a7 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java @@ -22,10 +22,8 @@ package fr.ird.observe.ui.tree.actions; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.ObserveTechnicalException; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.services.data.OpenableService; +import fr.ird.observe.services.data.TripService; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; import org.apache.commons.logging.Log; @@ -45,26 +43,26 @@ public class ChangeTripProgramActionListener implements ActionListener { /** Logger. */ private static final Log log = LogFactory.getLog(ChangeTripProgramActionListener.class); + private final TripService tripService; + private final String tripId; private final String programId; private final ObserveTreeHelper treeHelper; - private final DataService dataService; - - private final DataSource dataSource; + protected final OpenableService openableService; public ChangeTripProgramActionListener(ObserveTreeHelper treeHelper, - DataService dataService, - DataSource dataSource, + OpenableService openableService, + TripService tripService, String tripId, String programId) { + this.tripService = tripService; this.tripId = tripId; this.programId = programId; this.treeHelper = treeHelper; - this.dataService = dataService; - this.dataSource = dataSource; + this.openableService = openableService; } @Override @@ -75,19 +73,9 @@ public class ChangeTripProgramActionListener implements ActionListener { ObserveNode newProgramNode = treeHelper.getChild(rootNode, programId); ObserveNode oldProgramNode = treeHelper.getChild(rootNode, tripNode.getParent().getId()); - try { - dataService.moveTripToProgram(dataSource, tripId, programId); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Can't change trip " + tripId + " to program " + programId, e); - } + tripService.moveTripToProgram(tripId, programId); - int position; - - try { - position = dataService.getOpenablePosition(dataSource, programId, tripId); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Can't get trip " + tripId + " position for program " + programId, e); - } + int position = openableService.getOpenablePosition(programId, tripId); treeHelper.removeNode(tripNode); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java index acece19..489e9c4 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java @@ -21,11 +21,10 @@ */ package fr.ird.observe.ui.tree.loadors; +import fr.ird.observe.DataService; import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveContext; -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.model.DataSelectionModel; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import jaxx.runtime.swing.nav.NavDataProvider; @@ -47,12 +46,6 @@ public abstract class AbstractNodeChildLoador<O> extends NavTreeNodeChildLoador< super(beanType); } - protected DataSource getDataSource(NavDataProvider dataProvider) { - ObserveDataProvider provider = (ObserveDataProvider) dataProvider; - DataSource result = provider.getDataSource(); - return result; - } - protected DataSelectionModel getSelectionModel(NavDataProvider dataProvider) { ObserveDataProvider provider = (ObserveDataProvider) dataProvider; DataSelectionModel result = provider.getSelectionModel(); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java index 205c074..4e70b81 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java @@ -22,10 +22,10 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.longline.ActivityLongline; import fr.ird.observe.entities.longline.SetLongline; import fr.ird.observe.ui.tree.ActivityLonglineNode; +import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.tree.SetLonglineNode; @@ -76,7 +76,7 @@ public class ActivityLonglineNodeChildLoador extends AbstractNodeChildLoador<Str if (setLongline != null) { // si set present, ajout d'un noeud - ObserveNode child = createSetNode(setLongline); + ObserveNode child = createSetNode((ObserveDataProvider) dataProvider, setLongline); parentNode.add(child); } @@ -88,9 +88,7 @@ public class ActivityLonglineNodeChildLoador extends AbstractNodeChildLoador<Str } @Override - public List<String> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataService) throws DataSourceException { + public List<String> getData(Class<?> parentClass, String parentId, NavDataProvider dataService) { List<String> result = new ArrayList<String>(); result.add(ActivityLongline.PROPERTY_ENCOUNTER); @@ -107,12 +105,12 @@ public class ActivityLonglineNodeChildLoador extends AbstractNodeChildLoador<Str } - public ObserveNode createSetNode(SetLongline data) { + public ObserveNode createSetNode(ObserveDataProvider dataProvider, SetLongline data) { if (data == null) { throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode child = new SetLonglineNode(data); + ObserveNode child = new SetLonglineNode(dataProvider, data); return child; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java index f58994d..bb310ad 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java @@ -22,8 +22,8 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.services.data.longline.ActivityLonglineService; import fr.ird.observe.ui.tree.ActivityLonglineNode; import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; @@ -43,15 +43,14 @@ public class ActivityLonglinesNodeChildLoador extends AbstractNodeChildLoador<Ac public ActivityLonglinesNodeChildLoador() { super(ActivityLongline.class); + } @Override - public List<ActivityLongline> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + public List<ActivityLongline> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); - List<ActivityLongline> data = getDataService().getActivityLonglineStubByTrip(dataSource, parentId); + ActivityLonglineService service = ((ObserveDataProvider) dataProvider).getService(ActivityLonglineService.class); + List<ActivityLongline> data = service.getActivityLonglineStubByTrip(parentId); return data; } @@ -62,7 +61,7 @@ public class ActivityLonglinesNodeChildLoador extends AbstractNodeChildLoador<Ac throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new ActivityLonglineNode(data); + ObserveNode result = new ActivityLonglineNode((ObserveDataProvider) dataProvider, data); return result; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java index 2144200..3eb0898 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java @@ -21,10 +21,10 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.FloatingObject; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.data.seine.FloatingObjectService; import fr.ird.observe.ui.tree.ActivitySeineNode; import fr.ird.observe.ui.tree.FloatingObjectSeineNode; import fr.ird.observe.ui.tree.ObserveDataProvider; @@ -80,7 +80,7 @@ public class ActivitySeineNodeChildLoador extends AbstractNodeChildLoador<Floati if (set != null) { // si set present, ajout d'un noeud - child = createSetNode(set); + child = createSetNode((ObserveDataProvider) dataProvider, set); parentNode.add(child); } @@ -88,12 +88,12 @@ public class ActivitySeineNodeChildLoador extends AbstractNodeChildLoador<Floati super.loadChilds(model, parentNode, dataProvider); } - public ObserveNode createSetNode(SetSeine data) { + public ObserveNode createSetNode(ObserveDataProvider dataProvider, SetSeine data) { if (data == null) { throw new NullPointerException("Ne peut pas ajouter un objet null"); } - SetSeineNode child = new SetSeineNode(data); + SetSeineNode child = new SetSeineNode(dataProvider, data); return child; } @@ -104,18 +104,16 @@ public class ActivitySeineNodeChildLoador extends AbstractNodeChildLoador<Floati throw new NullPointerException("Ne peut pas ajouter un objet null"); } - FloatingObjectSeineNode result = new FloatingObjectSeineNode(data); + FloatingObjectSeineNode result = new FloatingObjectSeineNode((ObserveDataProvider) dataProvider, data); return result; } @Override - public List<FloatingObject> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + public List<FloatingObject> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); - List<FloatingObject> data = getDataService().getFloatinObjectStubByActivitySeine(dataSource, parentId); + FloatingObjectService service = ((ObserveDataProvider) dataProvider).getService(FloatingObjectService.class); + List<FloatingObject> data = service.getFloatinObjectStubByActivitySeine(parentId); return data; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java index e4891d8..7a01995 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.services.data.seine.ActivitySeineService; import fr.ird.observe.ui.tree.ActivitySeineNode; import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; @@ -45,12 +45,10 @@ public class ActivitySeinesNodeChildLoador extends AbstractNodeChildLoador<Activ } @Override - public List<ActivitySeine> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + public List<ActivitySeine> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); - List<ActivitySeine> data = getDataService().getActivitySeineStubByRoute(dataSource, parentId); + ActivitySeineService service = ((ObserveDataProvider) dataProvider).getService(ActivitySeineService.class); + List<ActivitySeine> data = service.getActivitySeineStubByRoute(parentId); return data; } @@ -61,7 +59,7 @@ public class ActivitySeinesNodeChildLoador extends AbstractNodeChildLoador<Activ throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ActivitySeineNode result = new ActivitySeineNode(data); + ActivitySeineNode result = new ActivitySeineNode((ObserveDataProvider) dataProvider, data); return result; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/FloatingObjectNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/FloatingObjectNodeChildLoador.java index 0b23ea8..9566e31 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/FloatingObjectNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/FloatingObjectNodeChildLoador.java @@ -21,7 +21,6 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.seine.FloatingObject; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; @@ -53,9 +52,7 @@ public class FloatingObjectNodeChildLoador extends AbstractNodeChildLoador<Strin } @Override - public List<String> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataService) throws DataSourceException { + public List<String> getData(Class<?> parentClass, String parentId, NavDataProvider dataService) { List<String> result = new ArrayList<String>(); result.add(FloatingObject.PROPERTY_OBJECT_OPERATION); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java index 5c30a30..41a85e7 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java @@ -22,10 +22,10 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.services.data.longline.TripLonglineService; +import fr.ird.observe.services.model.DataSelectionModel; +import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.tree.TripLonglineNode; @@ -76,12 +76,8 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip } @Override - public List<TripLongline> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + public List<TripLongline> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { - DataSource dataSource = getDataSource(dataProvider); - DataService service = getDataService(); DataSelectionModel selectionModel = getSelectionModel(dataProvider); List<TripLongline> result; @@ -98,7 +94,8 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip } else { - result = service.getTripLonglineStubByProgram(dataSource, parentId); + TripLonglineService service = ((ObserveDataProvider) dataProvider).getService(TripLonglineService.class); + result = service.getTripLonglineStubByProgram(parentId); } @@ -113,7 +110,7 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new TripLonglineNode(data); + ObserveNode result = new TripLonglineNode((ObserveDataProvider) dataProvider, data); if (addChilds) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java index 5409fdd..edd8dae 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java @@ -21,10 +21,10 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.data.seine.TripSeineService; +import fr.ird.observe.services.model.DataSelectionModel; +import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.tree.TripSeineNode; @@ -73,12 +73,8 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<TripSei } @Override - public List<TripSeine> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + public List<TripSeine> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { - DataSource dataSource = getDataSource(dataProvider); - DataService service = getDataService(); DataSelectionModel selectionModel = getSelectionModel(dataProvider); List<TripSeine> result; @@ -93,7 +89,8 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<TripSei } } else { - result = service.getTripSeineStubByProgram(dataSource, parentId); + TripSeineService service = ((ObserveDataProvider) dataProvider).getService(TripSeineService.class); + result = service.getTripSeineStubByProgram(parentId); } return result; @@ -107,7 +104,7 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<TripSei throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new TripSeineNode(data); + ObserveNode result = new TripSeineNode((ObserveDataProvider) dataProvider, data); if (addChilds) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceCommonNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceCommonNodeChildLoador.java index 1c704db..b35dadb 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceCommonNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceCommonNodeChildLoador.java @@ -21,9 +21,8 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.entities.Entities; import fr.ird.observe.ObserveEntityEnum; -import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.Entities; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.tree.ObserveNode; import jaxx.runtime.swing.nav.NavDataProvider; @@ -71,9 +70,7 @@ public class ReferenceCommonNodeChildLoador extends AbstractNodeChildLoador<Clas } @Override - public List<Class> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws DataSourceException { + public List<Class> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { List<Class> result = new ArrayList<Class>(); for (ObserveEntityEnum anEnum : Entities.REFERENCE_COMMON_ENTITIES_LIST) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceLonglineNodeChildLoador.java index 8181f95..44034aa 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceLonglineNodeChildLoador.java @@ -22,7 +22,6 @@ package fr.ird.observe.ui.tree.loadors; import fr.ird.observe.ObserveEntityEnum; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.Entities; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.tree.ObserveNode; @@ -77,9 +76,7 @@ public class ReferenceLonglineNodeChildLoador extends AbstractNodeChildLoador<Cl } @Override - public List<Class> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws DataSourceException { + public List<Class> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { List<Class> result = new ArrayList<Class>(); for (ObserveEntityEnum anEnum : Entities.REFERENCE_LONGLINE_ENTITIES_LIST) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceSeineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceSeineNodeChildLoador.java index 3db8f30..a126561 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceSeineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ReferenceSeineNodeChildLoador.java @@ -22,7 +22,6 @@ package fr.ird.observe.ui.tree.loadors; import fr.ird.observe.ObserveEntityEnum; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.Entities; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.tree.ObserveNode; @@ -69,9 +68,7 @@ public class ReferenceSeineNodeChildLoador extends AbstractNodeChildLoador<Class } @Override - public List<Class> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws DataSourceException { + public List<Class> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { List<Class> result = new ArrayList<Class>(); for (ObserveEntityEnum anEnum : Entities.REFERENCE_SEINE_ENTITIES_LIST) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java index 7c8ec84..6b19743 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java @@ -21,11 +21,11 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.constants.GearType; import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.services.model.DataSelectionModel; +import fr.ird.observe.services.referential.ReferentialService; +import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.tree.ProgramLonglineNode; @@ -71,12 +71,8 @@ public class RootNodeChildLoador extends AbstractNodeChildLoador<Program> { } @Override - public List<Program> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + public List<Program> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { - DataSource dataSource = getDataSource(dataProvider); - DataService service = getDataService(); DataSelectionModel selectionModel = getSelectionModel(dataProvider); List<Program> data; @@ -88,7 +84,8 @@ public class RootNodeChildLoador extends AbstractNodeChildLoador<Program> { data.add((Program) selectionModel.getEntityCache(programId)); } } else { - data = service.getAllProgramStub(dataSource); + ReferentialService service = ((ObserveDataProvider) dataProvider).getService(ReferentialService.class); + data = service.getAllProgramStub(); } } else { @@ -148,12 +145,12 @@ public class RootNodeChildLoador extends AbstractNodeChildLoador<Program> { case seine: - result = new ProgramSeineNode(data); + result = new ProgramSeineNode((ObserveDataProvider) dataProvider, data); break; case longline: - result = new ProgramLonglineNode(data); + result = new ProgramLonglineNode((ObserveDataProvider) dataProvider, data); break; default: diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java index 3b1125d..bc7f3db 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.services.data.seine.RouteService; import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; @@ -52,12 +52,10 @@ public class RoutesNodeChildLoador extends AbstractNodeChildLoador<Route> { } @Override - public List<Route> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + public List<Route> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); - List<Route> data = getDataService().getRouteStubByTrip(dataSource, parentId); + RouteService service = ((ObserveDataProvider) dataProvider).getService(RouteService.class); + List<Route> data = service.getRouteStubByTrip(parentId); return data; } @@ -69,7 +67,7 @@ public class RoutesNodeChildLoador extends AbstractNodeChildLoador<Route> { throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new RouteSeineNode(data); + ObserveNode result = new RouteSeineNode((ObserveDataProvider) dataProvider, data); // Creation d'un node activites ObserveNode child = ObserveTreeHelper.createStringNode(Route.PROPERTY_ACTIVITY_SEINE, ActivitySeinesNodeChildLoador.class); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetLonglineNodeChildLoador.java index 698f66e..bc68c1e 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetLonglineNodeChildLoador.java @@ -22,7 +22,6 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.longline.SetLongline; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; @@ -55,9 +54,7 @@ public class SetLonglineNodeChildLoador extends AbstractNodeChildLoador<String> } @Override - public List<String> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws DataSourceException { + public List<String> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { List<String> result = new ArrayList<String>(); result.add("longlineGlobalComposition"); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java index 2085dc1..57a1483 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java @@ -21,7 +21,6 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; @@ -57,9 +56,7 @@ public class SetSeineNodeChildLoador extends AbstractNodeChildLoador<String> { } @Override - public List<String> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws DataSourceException { + public List<String> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) { List<String> result = new ArrayList<String>(); result.add(SetSeine.PROPERTY_SCHOOL_ESTIMATE); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java index df1a9d1..33343b5 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java @@ -32,11 +32,9 @@ import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.LineString; import com.vividsolutions.jts.geom.MultiPoint; -import fr.ird.observe.DataService; import fr.ird.observe.ObserveConfig; import fr.ird.observe.ObserveTechnicalException; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.services.data.TripService; import fr.ird.observe.tripMap.TripMapPoint; import fr.ird.observe.tripMap.TripMapPointType; import fr.ird.observe.ui.UIHelper; @@ -101,7 +99,9 @@ import static org.nuiton.i18n.I18n.t; public class TripMapUIHandler { public static final String TRIP_LINES_LAYER_NAME = "Trip lines"; + public static final String TRIP_POINTS_LAYER_NAME = "Trip points"; + public static final double ZOOM_STEP_RATIO = 0.1; protected static final Set<TripMapPointType> TRIP_MAP_POINT_TYPES_IN_LEGEND = ImmutableSet.of( @@ -121,6 +121,7 @@ public class TripMapUIHandler { protected TripMapUI view; private ObserveConfig config; + protected ReferencedEnvelope tripArea; protected boolean rendererRunning; @@ -156,15 +157,9 @@ public class TripMapUIHandler { return view.getObserveMapPane(); } - public void doOpenMap(DataSource dataSource, DataService dataService, String tripId) { + public void doOpenMap(TripService tripService, String tripId) { - List<TripMapPoint> tripMapPoints; - - try { - tripMapPoints = dataService.loadTripMapActivityPoints(dataSource, tripId); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Unable to load trip map activity points", e); - } + List<TripMapPoint> tripMapPoints = tripService.loadTripMapActivityPoints(tripId); ObserveMapPane mapPane = getObserveMapPane(); Pair<MapContent, List<ObserveMapPaneLegendItem>> buildMapContent = buildMapContent(tripMapPoints); @@ -194,7 +189,7 @@ public class TripMapUIHandler { t("observe.map.export.overwrite.title"), t("observe.map.export.overwrite"), JOptionPane.OK_CANCEL_OPTION, - new Object[] { + new Object[]{ t("observe.map.export.overwrite.ok"), t("observe.map.export.overwrite.cancel")}, 1) == 0; @@ -214,7 +209,6 @@ public class TripMapUIHandler { } - protected Pair<MapContent, List<ObserveMapPaneLegendItem>> buildMapContent(List<TripMapPoint> tripMapPoints) { MapContent mapContent = new MapContent(); @@ -356,7 +350,7 @@ public class TripMapUIHandler { }); ArrayList<Coordinate> coordinatesArray = Lists.newArrayList(coordinates); - if (! coordinatesArray.isEmpty()) { + if (!coordinatesArray.isEmpty()) { MultiPoint points = geometryFactory.createMultiPoint(coordinatesArray.toArray(new Coordinate[0])); pointBuilder.add(points); pointBuilder.add(type.name()); @@ -447,7 +441,7 @@ public class TripMapUIHandler { for (Style styleTmp : styles) { if (StringUtils.isBlank(styleName) && styleTmp.isDefault() - || styleTmp.getName().equals(styleName)) { + || styleTmp.getName().equals(styleName)) { style = styleTmp; } @@ -471,22 +465,23 @@ public class TripMapUIHandler { } protected double zoomRatio = 1; + protected Point zoomCenter; protected void zoomApply() { - if (zoomRatio != 1 && ! rendererRunning) { + if (zoomRatio != 1 && !rendererRunning) { JMapPane mapPane = getObserveMapPane(); ReferencedEnvelope displayArea = mapPane.getDisplayArea(); - double deltaWidth = displayArea.getWidth() * (zoomRatio -1); + double deltaWidth = displayArea.getWidth() * (zoomRatio - 1); double deltaHeight = displayArea.getHeight() * (zoomRatio - 1); - double ratioLeft = zoomCenter.getX() * 1d / mapPane.getWidth(); + double ratioLeft = zoomCenter.getX() * 1d / mapPane.getWidth(); // l'axe de Y est inversé entre le référentiel du composant swing et le référentiel géographique - double ratioTop = 1 - (zoomCenter.getY() * 1d / mapPane.getHeight()); + double ratioTop = 1 - (zoomCenter.getY() * 1d / mapPane.getHeight()); double deltaLeft = deltaWidth * ratioLeft; double deltaRight = deltaLeft - deltaWidth; @@ -496,7 +491,7 @@ public class TripMapUIHandler { if (log.isDebugEnabled()) { log.debug(String.format("Map mouse zoom (zoom ratio : %s, deltaLeft : %s, deltaRight : %s, deltaTop : %s, deltaBottom : %s)", - zoomRatio, deltaLeft, deltaRight, deltaRight, deltaBottom)); + zoomRatio, deltaLeft, deltaRight, deltaRight, deltaBottom)); } ReferencedEnvelope newDisplayArea = new ReferencedEnvelope( @@ -518,8 +513,6 @@ public class TripMapUIHandler { } - - private class MouseMapListener implements MouseWheelListener, MouseListener, MouseMotionListener { @Override @@ -536,7 +529,9 @@ public class TripMapUIHandler { } protected Point2D startPointInWorld; + protected AffineTransform startScreenToWorldTransform; + protected ReferencedEnvelope startDisplayArea; @Override diff --git a/observe-validation/src/main/java/fr/ird/observe/validation/field/VesselActivityFieldValidator.java b/observe-validation/src/main/java/fr/ird/observe/validation/field/VesselActivityFieldValidator.java index 83872ba..191eab6 100644 --- a/observe-validation/src/main/java/fr/ird/observe/validation/field/VesselActivityFieldValidator.java +++ b/observe-validation/src/main/java/fr/ird/observe/validation/field/VesselActivityFieldValidator.java @@ -154,12 +154,12 @@ public class VesselActivityFieldValidator extends FieldValidatorSupport { switch (Integer.valueOf(code)) { case 6: - if (activityCode.equals(ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE)) { + if (activityCode.equals(ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE)) { valid = validate_6(activitySeine, maree, route, nbActivitys); } break; case 7: - if (activityCode.equals(ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE)) { + if (activityCode.equals(ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE)) { valid = validate_7(activitySeine, maree, route, nbActivitys); } break; @@ -223,8 +223,8 @@ public class VesselActivityFieldValidator extends FieldValidatorSupport { //FIXME: sinon on verifier que l'activity qu'on veut créer n'est pas //FIXME: dans un intervalle (debut-fin) List<ActivitySeine> activitySeines = route.getActivitySeine(); - Integer[] detectDebutSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE); - Integer[] detectFinSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE); + Integer[] detectDebutSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE); + Integer[] detectFinSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE); int nbDebutReal = 0; int lastDebutReal = 0; for (Integer i : detectDebutSet) { @@ -273,8 +273,8 @@ public class VesselActivityFieldValidator extends FieldValidatorSupport { return false; } List<ActivitySeine> activitySeines = route.getActivitySeine(); - Integer[] detectDebutSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE); - Integer[] detectFinSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE); + Integer[] detectDebutSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE); + Integer[] detectFinSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE); Integer lastFinSet = null; if (detectFinSet.length > 0) { lastFinSet = detectFinSet[detectFinSet.length - 1]; @@ -380,8 +380,8 @@ public class VesselActivityFieldValidator extends FieldValidatorSupport { // } // il ne peut pas rester une activity de debut de peche sans fin // de set (sauf si non coup de senne ?) - Integer[] detectDebutSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE); - Integer[] detectFinSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE); + Integer[] detectDebutSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_DEBUT_DE_PECHE); + Integer[] detectFinSet = detectActivity(route, ActivitySeineImpl.ACTIVITY_FIN_DE_PECHE); int nbDebutReal = 0; for (Integer i : detectDebutSet) { ActivitySeine bActivitySeine = activitySeines.get(i); diff --git a/pom.xml b/pom.xml index ce2cc68..5971a43 100644 --- a/pom.xml +++ b/pom.xml @@ -111,7 +111,7 @@ <eugenePluginVersion>2.14</eugenePluginVersion> - <topiaVersion>2.9.5.3</topiaVersion> + <topiaVersion>2.10-SNAPSHOT</topiaVersion> <jaxxVersion>2.24</jaxxVersion> <nuitonI18nVersion>3.3</nuitonI18nVersion> <nuitonValidatorVersion>3.0</nuitonValidatorVersion> -- 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