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 af4053010d25755bc855f6aa1740cc3f6342c9b9 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>.