branch feature/7496 created (now 49c0b97)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7496 in repository observe. See http://git.codelutin.com/observe.git at 49c0b97 ajout du service d'import des trace GPS (refs #7496) This branch includes the following new commits: new 49c0b97 ajout du service d'import des trace GPS (refs #7496) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 49c0b97072cc06cc71bdb2026c94c2d66e667d16 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 1 14:29:08 2015 +0200 ajout du service d'import des trace GPS (refs #7496) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7496 in repository observe. See http://git.codelutin.com/observe.git commit 49c0b97072cc06cc71bdb2026c94c2d66e667d16 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 1 14:29:08 2015 +0200 ajout du service d'import des trace GPS (refs #7496) --- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 2 +- .../ui/admin/gps/GPSActivityTableModel.java | 2 +- .../observe/ui/admin/gps/ImportGPSUIHandler.java | 6 +- .../main/java/fr/ird/observe/DecoratorService.java | 4 +- .../fr/ird/observe/ObserveApplicationContext.java | 2 +- .../java/fr/ird/observe/ObserveServiceHelper.java | 2 +- .../java/fr/ird/observe/gps/GPSFileReader.java | 2 +- .../main/java/fr/ird/observe/gps/GPSService.java | 2 +- .../java/fr/ird/observe/gps/GPSFileReaderTest.java | 2 +- .../test/java/fr/ird/observe/gps/GPSRouteTest.java | 2 +- .../java/fr/ird/observe/gps/GPSServiceTest.java | 2 +- .../entities/seine/NoActivitiesInTripSeine.java | 17 ++ .../actions/importGps/ImportGpsRequest.java | 59 +++++++ .../service/actions/importGps/ImportGpsResult.java | 34 ++++ .../actions/importGps/ImportGpsService.java | 12 ++ .../fr/ird/observe/services/dto}/gps/GPSPoint.java | 6 +- .../observe/services/dto}/gps/GPSPointImpl.java | 41 ++--- .../services/dto}/gps/GPSPointInterval.java | 2 +- .../services/dto}/gps/GPSPointIntervalImpl.java | 2 +- .../fr/ird/observe/services/dto}/gps/GPSRoute.java | 2 +- .../observe/services/dto}/gps/GPSRouteImpl.java | 2 +- .../ird/observe/services/dto}/gps/GpsPoints.java | 29 +--- observe-services-topia/pom.xml | 7 + .../services/operation/GpsImportServiceImpl.java | 2 +- .../service/actions/importGps/GpsReader.java | 78 +++++---- .../actions/importGps/ImportGpsServiceTopia.java | 190 +++++++++++++++++++++ .../actions/importGps/NoAcceptedIntervalle.java | 26 +++ .../service/actions/importGps/GpsReaderTest.java | 94 ++++------ .../importGps/ImportGpsServiceTopiaTest.java | 56 ++++++ .../service/actions/importGps/GL50_13_small.gpx | 167 ++++++++++++++++++ .../actions/importGps/testInterval_allAccepted.gpx | 157 +++++++++++++++++ .../actions/importGps/testInterval_allRejected.gpx | 157 +++++++++++++++++ .../importGps/testInterval_firtPointsRejected.gpx | 157 +++++++++++++++++ .../testInterval_insidePointsRejected.gpx | 157 +++++++++++++++++ .../testInterval_insidePointsRejected2.gpx | 157 +++++++++++++++++ .../importGps/testInterval_lastPointsRejected.gpx | 157 +++++++++++++++++ .../field/ActivitySimpleSpeedValidator.java | 4 +- .../validation/field/ActivitySpeedValidator.java | 4 +- 38 files changed, 1625 insertions(+), 179 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java index 7dc1127..0c7a792 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java @@ -36,7 +36,7 @@ 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.gps.GPSService; +import fr.ird.observe.services.dto.gps.GPSService; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; import fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java index eaf7d2d..7742e7c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.admin.gps; import fr.ird.observe.ObserveContext; import fr.ird.observe.entities.seine.ActivitySeine; -import fr.ird.observe.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GPSPoint; import org.nuiton.decorator.Decorator; import org.nuiton.i18n.I18n; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java index b440c9c..b6245e9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java @@ -27,9 +27,9 @@ import fr.ird.observe.entities.OpenableEntities; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.gps.GPSPoint; -import fr.ird.observe.gps.GPSPointInterval; -import fr.ird.observe.gps.GPSRoute; +import fr.ird.observe.services.dto.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GPSPointInterval; +import fr.ird.observe.services.dto.gps.GPSRoute; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUIHandler; diff --git a/observe-business/src/main/java/fr/ird/observe/DecoratorService.java b/observe-business/src/main/java/fr/ird/observe/DecoratorService.java index 883457c..c24e476 100644 --- a/observe-business/src/main/java/fr/ird/observe/DecoratorService.java +++ b/observe-business/src/main/java/fr/ird/observe/DecoratorService.java @@ -105,8 +105,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.TransmittingBuoy; -import fr.ird.observe.gps.GPSPoint; -import fr.ird.observe.gps.GPSPointInterval; +import fr.ird.observe.services.dto.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GPSPointInterval; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; 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 ee0f6de..7c011e0 100644 --- a/observe-business/src/main/java/fr/ird/observe/ObserveApplicationContext.java +++ b/observe-business/src/main/java/fr/ird/observe/ObserveApplicationContext.java @@ -25,7 +25,7 @@ import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceFactory; import fr.ird.observe.entities.constants.ReferenceLocale; -import fr.ird.observe.gps.GPSService; +import fr.ird.observe.services.dto.gps.GPSService; import fr.ird.observe.validation.ObserveValidator; import fr.ird.observe.validation.ValidationContext; import jaxx.runtime.JAXXUtil; diff --git a/observe-business/src/main/java/fr/ird/observe/ObserveServiceHelper.java b/observe-business/src/main/java/fr/ird/observe/ObserveServiceHelper.java index a904bc1..81aa778 100644 --- a/observe-business/src/main/java/fr/ird/observe/ObserveServiceHelper.java +++ b/observe-business/src/main/java/fr/ird/observe/ObserveServiceHelper.java @@ -29,7 +29,7 @@ import fr.ird.observe.db.ReplicationService; import fr.ird.observe.db.impl.H2DataSource; import fr.ird.observe.db.impl.H2DataSourceConfig; import fr.ird.observe.entities.migration.AbstractDataSourceMigration; -import fr.ird.observe.gps.GPSService; +import fr.ird.observe.services.dto.gps.GPSService; import fr.ird.observe.validation.ValidationContext; import fr.ird.observe.validation.ValidationService; import org.apache.commons.logging.Log; diff --git a/observe-business/src/main/java/fr/ird/observe/gps/GPSFileReader.java b/observe-business/src/main/java/fr/ird/observe/gps/GPSFileReader.java index 7f78c43..772bbb4 100644 --- a/observe-business/src/main/java/fr/ird/observe/gps/GPSFileReader.java +++ b/observe-business/src/main/java/fr/ird/observe/gps/GPSFileReader.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.logging.Log; diff --git a/observe-business/src/main/java/fr/ird/observe/gps/GPSService.java b/observe-business/src/main/java/fr/ird/observe/gps/GPSService.java index 139323b..a7fffd3 100644 --- a/observe-business/src/main/java/fr/ird/observe/gps/GPSService.java +++ b/observe-business/src/main/java/fr/ird/observe/gps/GPSService.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; import java.io.File; diff --git a/observe-business/src/test/java/fr/ird/observe/gps/GPSFileReaderTest.java b/observe-business/src/test/java/fr/ird/observe/gps/GPSFileReaderTest.java index 2e8bca7..03fef12 100644 --- a/observe-business/src/test/java/fr/ird/observe/gps/GPSFileReaderTest.java +++ b/observe-business/src/test/java/fr/ird/observe/gps/GPSFileReaderTest.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; import org.junit.After; import org.junit.Ignore; diff --git a/observe-business/src/test/java/fr/ird/observe/gps/GPSRouteTest.java b/observe-business/src/test/java/fr/ird/observe/gps/GPSRouteTest.java index 3c41e46..c799dd4 100644 --- a/observe-business/src/test/java/fr/ird/observe/gps/GPSRouteTest.java +++ b/observe-business/src/test/java/fr/ird/observe/gps/GPSRouteTest.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; import org.junit.After; import org.junit.Before; diff --git a/observe-business/src/test/java/fr/ird/observe/gps/GPSServiceTest.java b/observe-business/src/test/java/fr/ird/observe/gps/GPSServiceTest.java index 82fcb1b..643e0cd 100644 --- a/observe-business/src/test/java/fr/ird/observe/gps/GPSServiceTest.java +++ b/observe-business/src/test/java/fr/ird/observe/gps/GPSServiceTest.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; import org.apache.commons.lang3.time.DateUtils; import org.junit.Before; diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/seine/NoActivitiesInTripSeine.java b/observe-entities/src/main/java/fr/ird/observe/entities/seine/NoActivitiesInTripSeine.java new file mode 100644 index 0000000..6232ede --- /dev/null +++ b/observe-entities/src/main/java/fr/ird/observe/entities/seine/NoActivitiesInTripSeine.java @@ -0,0 +1,17 @@ +package fr.ird.observe.entities.seine; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class NoActivitiesInTripSeine extends RuntimeException { + + protected final TripSeine tripSeine; + + public NoActivitiesInTripSeine(TripSeine tripSeine) { + this.tripSeine = tripSeine; + } + + public TripSeine getTripSeine() { + return tripSeine; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsRequest.java new file mode 100644 index 0000000..a872b8b --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsRequest.java @@ -0,0 +1,59 @@ +package fr.ird.observe.services.service.actions.importGps; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ImportGpsRequest { + + protected String FileName; + + protected String FileContent; + + /** le temps (en minutes) maximum acceptable entre deux points GPS */ + protected Integer maxDelay = 0; + + /** la vitesse (en noeud) maximale acceptable entre deux points GPS */ + protected Float maxSpeed = 0.0f; + + protected String tripSeineId; + + public String getFileName() { + return FileName; + } + + public void setFileName(String fileName) { + FileName = fileName; + } + + public String getFileContent() { + return FileContent; + } + + public void setFileContent(String fileContent) { + FileContent = fileContent; + } + + public Integer getMaxDelay() { + return maxDelay; + } + + public void setMaxDelay(Integer maxDelay) { + this.maxDelay = maxDelay; + } + + public Float getMaxSpeed() { + return maxSpeed; + } + + public void setMaxSpeed(Float maxSpeed) { + this.maxSpeed = maxSpeed; + } + + public String getTripSeineId() { + return tripSeineId; + } + + public void setTripSeineId(String tripSeineId) { + this.tripSeineId = tripSeineId; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsResult.java new file mode 100644 index 0000000..338ea09 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsResult.java @@ -0,0 +1,34 @@ +package fr.ird.observe.services.service.actions.importGps; + +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GPSRoute; +import fr.ird.observe.services.dto.seine.ActivitySeineDto; + +import java.util.Map; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ImportGpsResult { + + Map<ReferenceDto<ActivitySeineDto>, GPSPoint> positionByActivity; + + GPSRoute route; + + public Map<ReferenceDto<ActivitySeineDto>, GPSPoint> getPositionByActivity() { + return positionByActivity; + } + + public void setPositionByActivity(Map<ReferenceDto<ActivitySeineDto>, GPSPoint> positionByActivity) { + this.positionByActivity = positionByActivity; + } + + public GPSRoute getRoute() { + return route; + } + + public void setRoute(GPSRoute route) { + this.route = route; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsService.java new file mode 100644 index 0000000..886445d --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsService.java @@ -0,0 +1,12 @@ +package fr.ird.observe.services.service.actions.importGps; + +import fr.ird.observe.services.ObserveService; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public interface ImportGpsService extends ObserveService { + + ImportGpsResult importGps(ImportGpsRequest request) throws Exception; + +} diff --git a/observe-entities/src/main/java/fr/ird/observe/gps/GPSPoint.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPoint.java similarity index 96% rename from observe-entities/src/main/java/fr/ird/observe/gps/GPSPoint.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPoint.java index 4d256ad..2df3ef1 100644 --- a/observe-entities/src/main/java/fr/ird/observe/gps/GPSPoint.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPoint.java @@ -1,4 +1,4 @@ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; /* * #%L @@ -22,14 +22,12 @@ package fr.ird.observe.gps; * #L% */ -import fr.ird.observe.entities.GPSAble; - import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; import java.util.Date; -public abstract class GPSPoint implements GPSAble, Serializable { +public abstract class GPSPoint implements Serializable { private static final long serialVersionUID = 3761972876361753443L; diff --git a/observe-entities/src/main/java/fr/ird/observe/gps/GPSPointImpl.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointImpl.java similarity index 63% rename from observe-entities/src/main/java/fr/ird/observe/gps/GPSPointImpl.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointImpl.java index 22bde71..6221c03 100644 --- a/observe-entities/src/main/java/fr/ird/observe/gps/GPSPointImpl.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointImpl.java @@ -19,10 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; - -import fr.ird.observe.entities.GPSAble; -import fr.ird.type.CoordinateHelper; +package fr.ird.observe.services.dto.gps; /** * @author Tony Chemit - chemit@codelutin.com @@ -35,34 +32,18 @@ public class GPSPointImpl extends GPSPoint { public GPSPointImpl() { } - public GPSPointImpl(GPSAble activity) { - setLongitude(activity.getLongitude()); - setLatitude(activity.getLatitude()); - setTime(activity.getTime()); - } - - @Override public Integer getQuadrant() { - Integer result = CoordinateHelper.getQuadrant(longitude, latitude); + if (longitude == null || latitude == null) { + return null; + } + int result; + + if (latitude > 0) { + result = longitude > 0 ? 1 : 4; + } else { + result = longitude > 0 ? 2 : 3; + } return result; -// if (latitude == null || longitude == null) { -// return null; -// } -// int result; -// -// if (latitude > 0) { -// result = longitude > 0 ? 1 : 4; -//// result = longitude > 0 ? 1 : 3; -// } else { -// result = longitude > 0 ? 2 : 3; -//// result = longitude > 0 ? 1 : 3; -// } -// return result; - } - - @Override - public void setQuadrant(Integer quadrant) { - // non utilisé } @Override diff --git a/observe-entities/src/main/java/fr/ird/observe/gps/GPSPointInterval.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointInterval.java similarity index 99% rename from observe-entities/src/main/java/fr/ird/observe/gps/GPSPointInterval.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointInterval.java index 84942e2..6ff1dc2 100644 --- a/observe-entities/src/main/java/fr/ird/observe/gps/GPSPointInterval.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointInterval.java @@ -1,4 +1,4 @@ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; /* * #%L diff --git a/observe-entities/src/main/java/fr/ird/observe/gps/GPSPointIntervalImpl.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointIntervalImpl.java similarity index 98% rename from observe-entities/src/main/java/fr/ird/observe/gps/GPSPointIntervalImpl.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointIntervalImpl.java index 15dbd56..c2eec64 100644 --- a/observe-entities/src/main/java/fr/ird/observe/gps/GPSPointIntervalImpl.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSPointIntervalImpl.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; import java.util.Date; diff --git a/observe-entities/src/main/java/fr/ird/observe/gps/GPSRoute.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSRoute.java similarity index 99% rename from observe-entities/src/main/java/fr/ird/observe/gps/GPSRoute.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSRoute.java index f60dfe1..3ee126c 100644 --- a/observe-entities/src/main/java/fr/ird/observe/gps/GPSRoute.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSRoute.java @@ -1,4 +1,4 @@ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; /* * #%L diff --git a/observe-entities/src/main/java/fr/ird/observe/gps/GPSRouteImpl.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSRouteImpl.java similarity index 99% rename from observe-entities/src/main/java/fr/ird/observe/gps/GPSRouteImpl.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSRouteImpl.java index 9a14284..2d8d9d2 100644 --- a/observe-entities/src/main/java/fr/ird/observe/gps/GPSRouteImpl.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GPSRouteImpl.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; import java.util.Date; import java.util.List; diff --git a/observe-entities/src/main/java/fr/ird/observe/gps/GpsPoints.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GpsPoints.java similarity index 84% rename from observe-entities/src/main/java/fr/ird/observe/gps/GpsPoints.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GpsPoints.java index 132d711..1e38d83 100644 --- a/observe-entities/src/main/java/fr/ird/observe/gps/GpsPoints.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gps/GpsPoints.java @@ -1,4 +1,4 @@ -package fr.ird.observe.gps; +package fr.ird.observe.services.dto.gps; /* * #%L @@ -22,13 +22,8 @@ package fr.ird.observe.gps; * #L% */ -import fr.ird.observe.entities.seine.ActivitySeine; -import fr.ird.observe.entities.seine.Route; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.util.DateUtil; - -import java.util.Date; /** * Created on 8/25/14. @@ -50,28 +45,6 @@ public class GpsPoints { /** - * Construit un point à partir de l'entité donnée. - * - * @param route la route qui contient le jour - * @param activity l'activite qui contient l'heure et la position géographique - * @return le nouveau point instancié - * @since 3.8 - */ - public static GPSPoint newPoint(Route route, ActivitySeine activity) { - - Date currentTime = DateUtil.getDateAndTime(route.getDate(), activity.getTime(), false, false); - - GPSPoint gpsPoint = new GPSPointImpl(); - gpsPoint.setTime(currentTime); - gpsPoint.setLatitude(activity.getLatitude()); - gpsPoint.setLongitude(activity.getLongitude()); - - return gpsPoint; - - } - - - /** * Calcule la distance entre deux points (en kilometres). * <p/> * Il s'agit d'une approxiation utilisant la méthode d'orthodromie. diff --git a/observe-services-topia/pom.xml b/observe-services-topia/pom.xml index 53eb6e1..db69c5a 100644 --- a/observe-services-topia/pom.xml +++ b/observe-services-topia/pom.xml @@ -79,6 +79,13 @@ <artifactId>nuiton-i18n</artifactId> </dependency> + + + <dependency> + <groupId>xpp3</groupId> + <artifactId>xpp3</artifactId> + </dependency> + <!-- persistence --> <!--dependency> <groupId>org.hibernate</groupId> diff --git a/observe-services-topia/src/main/fromRefactor/fr/ird/observe/services/operation/GpsImportServiceImpl.java b/observe-services-topia/src/main/fromRefactor/fr/ird/observe/services/operation/GpsImportServiceImpl.java index 4c59cdd..af24223 100644 --- a/observe-services-topia/src/main/fromRefactor/fr/ird/observe/services/operation/GpsImportServiceImpl.java +++ b/observe-services-topia/src/main/fromRefactor/fr/ird/observe/services/operation/GpsImportServiceImpl.java @@ -5,7 +5,7 @@ import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.entities.seine.TripSeineDAO; -import fr.ird.observe.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GPSPoint; import fr.ird.observe.services.AbstractObserveService; import org.apache.commons.collections.primitives.ArrayIntList; import org.apache.commons.collections.primitives.IntIterator; diff --git a/observe-business/src/main/java/fr/ird/observe/gps/GPSFileReader.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/GpsReader.java similarity index 88% copy from observe-business/src/main/java/fr/ird/observe/gps/GPSFileReader.java copy to observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/GpsReader.java index 7f78c43..76fe9e7 100644 --- a/observe-business/src/main/java/fr/ird/observe/gps/GPSFileReader.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/GpsReader.java @@ -19,9 +19,15 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.gps; - -import org.apache.commons.lang3.builder.ToStringBuilder; +package fr.ird.observe.services.service.actions.importGps; + +import fr.ird.observe.services.dto.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GPSPointImpl; +import fr.ird.observe.services.dto.gps.GPSPointInterval; +import fr.ird.observe.services.dto.gps.GPSPointIntervalImpl; +import fr.ird.observe.services.dto.gps.GPSRoute; +import fr.ird.observe.services.dto.gps.GPSRouteImpl; +import fr.ird.observe.services.dto.gps.GpsPoints; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.xmlpull.v1.XmlPullParser; @@ -31,6 +37,8 @@ import org.xmlpull.v1.XmlPullParserFactory; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -45,10 +53,10 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 1.0 */ -public class GPSFileReader { +public class GpsReader { /** log */ - private static final Log log = LogFactory.getLog(GPSFileReader.class); + private static final Log log = LogFactory.getLog(GpsReader.class); public static final String ROUTE_TAG = "trk"; @@ -64,8 +72,6 @@ public class GPSFileReader { public static final String LONGITUDE_ATTR = "lon"; - /** le fichier à importer */ - protected final File source; /** le délai en minutes acceptable entre deux points */ protected final int maxDelay; @@ -73,25 +79,16 @@ public class GPSFileReader { /** la vitesse maximum autorisée entre 2 points en noeud */ protected final float maxSpeed; - protected final GPSService service; - - public GPSFileReader(GPSService service, - File source, - int maxDelay, - float maxSpeed) { - this.service = service; - this.source = source; + public GpsReader(int maxDelay, + float maxSpeed) { this.maxDelay = maxDelay; this.maxSpeed = maxSpeed; } - public GPSRoute read() throws Exception { - if (source == null) { + public GPSRoute read(Reader reader) throws Exception { + if (reader == null) { throw new NullPointerException("la source ne doit pas être nulle"); } - if (!source.exists() || !source.isFile()) { - throw new IllegalArgumentException("le fichier source '" + source + "' n'existe pas ou n'est pas un fichier"); - } GPSRoute model = new GPSRouteImpl(); @@ -99,19 +96,41 @@ public class GPSFileReader { System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); factory.setNamespaceAware(true); XmlPullParser xpp = factory.newPullParser(); - FileReader fileReader = new FileReader(source); try { - xpp.setInput(fileReader); + xpp.setInput(reader); parseFile(xpp, model); } finally { - fileReader.close(); + reader.close(); } return model; } + public GPSRoute read(String content) throws Exception { + if (content == null) { + throw new NullPointerException("la source ne doit pas être nulle"); + } + + Reader reader = new StringReader(content); + + return read(reader); + } + + + + public GPSRoute read(File file) throws Exception { + if (file == null) { + throw new NullPointerException("la source ne doit pas être nulle"); + } + + Reader reader = new FileReader(file); + + return read(reader); + } + + /** * Détecte sur l'ensemble des points de la route ceux qui sont acceptables, * c'est à dire que l'on accepte uniquement les points dont les intervalles @@ -144,7 +163,7 @@ public class GPSFileReader { previous = p; continue; } - long delta = service.getDelay(previous, p); + long delta = GpsPoints.getDelay(previous, p); if (delta <= delay) { // le point courant est acceptable // on l'enregistre dans l'intervalle accepté @@ -210,15 +229,6 @@ public class GPSFileReader { } - @Override - public String toString() { - String result = new ToStringBuilder(this).append("source", source). - append("maxDelay (ms)", getMaxSpeedAsMilliSecondes()). - append("maxSpeed (nd)", maxSpeed). - toString(); - return result; - } - protected long getMaxSpeedAsMilliSecondes() { return maxDelay * 60 * 1000; } @@ -328,7 +338,7 @@ public class GPSFileReader { if (previousPoint != null) { // on vérifie que la vitesse entrez les deux points // est acceptable - float speed = service.getSpeed(previousPoint, currentPoint); + float speed = GpsPoints.getSpeed(previousPoint, currentPoint); if (speed > maxSpeed) { // on ne peut pas accepter ce point canAccept = false; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsServiceTopia.java new file mode 100644 index 0000000..03bc626 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/ImportGpsServiceTopia.java @@ -0,0 +1,190 @@ +/* + * #%L + * ObServe :: Business + * %% + * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ird.observe.services.service.actions.importGps; + +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.entities.seine.NoActivitiesInTripSeine; +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GPSPointInterval; +import fr.ird.observe.services.dto.gps.GPSRoute; +import fr.ird.observe.services.dto.gps.GpsPoints; +import fr.ird.observe.services.dto.seine.ActivitySeineDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Service de manipulation GPS. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.3 + */ +public class ImportGpsServiceTopia extends ObserveServiceTopia implements ImportGpsService { + + @Override + public ImportGpsResult importGps(ImportGpsRequest request) throws Exception { + + Map<ActivitySeine, GPSPoint> positionByActivity = Maps.newLinkedHashMap(); + + // récuperation de la marée ouverte + TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, request.getTripSeineId()); + + for (Route r : tripSeine.getRoute()) { + if (!r.isActivitySeineEmpty()) { + // on enregistre les actitives + for (ActivitySeine a : r.getActivitySeine()) { + positionByActivity.put(a, null); + } + } + } + + if (positionByActivity.isEmpty()) { + // pas d'activity a traiter + throw new NoActivitiesInTripSeine(tripSeine); + } + + + GPSRoute route = buildRoute( + request.getFileContent(), + request.getMaxDelay(), + request.getMaxSpeed()); + + List<GPSPointInterval> acceptedInterval = route.getAcceptedInterval(); + + if (acceptedInterval == null || acceptedInterval.isEmpty()) { + // pas d'intervalle acceptable + //sendMessage(t("observe.message.no.accepted.intervalle.detected")); + throw new NoAcceptedIntervalle(tripSeine, request.getFileName()); + } + + // il s'agit de la première passe : detection des point gps + //des activitys + //sendMessage(t("observe.message.importGPS.detect.points")); + + Set<ActivitySeine> rejected = Sets.newHashSet(); + for (ActivitySeine a : positionByActivity.keySet()) { + + Date time = a.getTime(); + //sendMessage(t("observe.message.importGPS.detect.point", dActivity.toString(a))); + GPSPoint point = route.getPoint(time); + if (point == null) { + //sendMessage(t("observe.message.importGPS.no.detected.point")); + rejected.add(a); + } else { + //sendMessage(t("observe.message.importGPS.detected.point", dGPSPoint.toString(point))); + positionByActivity.put(a, point); + } + } + + // on supprime toutes les activités qui n'ont pas été acceptées + for (ActivitySeine a : rejected) { + positionByActivity.remove(a); + } + + Map<ReferenceDto<ActivitySeineDto>, GPSPoint> positionByActivityRef = Maps.newLinkedHashMap(); + for (Map.Entry<ActivitySeine, GPSPoint> entry : positionByActivity.entrySet()) { + positionByActivityRef.put( + entityToReferenceDto(ActivitySeineDto.class, entry.getKey()), + entry.getValue()); + } + + + ImportGpsResult result = new ImportGpsResult(); + + result.setPositionByActivity(positionByActivityRef); + result.setRoute(route); + + return null; + } + + protected void detectPoints(Map<ActivitySeine, GPSPoint> positionByActivity, GPSRoute route) { + + + } + + + /** + * Construit la route gps à partir d'un fichier gps donnée et des deux + * indicateurs {@code maxDelay} et {@code maxSpeed} et la retourne. + * + * @param fileContent le contenue des données gps + * @param maxDelay le maximum de temps entre 2 points + * @param maxSpeed le vitesse maximale en 2 points + * @return la route gps calculée + * @throws Exception pour tout probleme lors la construction de la route + */ + public GPSRoute buildRoute(String fileContent, + int maxDelay, + float maxSpeed) throws Exception { + GpsReader reader = new GpsReader(maxDelay, maxSpeed); + GPSRoute r = reader.read(fileContent); + reader.detectIntervals(r); + return r; + } + + /** + * Calcule la distance entre deux points (en kilometres). + * <p/> + * Il s'agit d'une approxiation utilisant la méthode d'orthodromie. + * <p/> + * http://fr.wikipedia.org/wiki/Orthodromie + * <p/> + * d = R * arccos(cos(lat1) * cos(lat2) *cos(long2 - long1) + sin(lat1) + * *sin(lat2)) + * + * @param p0 le premier point + * @param p1 le second point + * @return la distance calculée entre les deux points en kilometres. + */ + public double getDistanceInKm(GPSPoint p0, GPSPoint p1) { + double d = GpsPoints.getDistanceInKm(p0, p1); + return d; + } + + /** + * Calcule la distance entre deux points (en miles nautique). + * <p/> + * Il s'agit d'une approxiation utilisant la méthode d'orthodromie. + * <p/> + * http://fr.wikipedia.org/wiki/Orthodromie + * <p/> + * d = R * arccos(cos(lat1) * cos(lat2) *cos(long2 - long1) + sin(lat1) + * *sin(lat2)) + * + * @param p0 le premier point + * @param p1 le second point + * @return la distance calculée entre les deux points en noeud. + */ + public double getDistanceInMile(GPSPoint p0, GPSPoint p1) { + double d = GpsPoints.getDistanceInMile(p0, p1); + return d; + } +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/NoAcceptedIntervalle.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/NoAcceptedIntervalle.java new file mode 100644 index 0000000..0e81af0 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/importGps/NoAcceptedIntervalle.java @@ -0,0 +1,26 @@ +package fr.ird.observe.services.service.actions.importGps; + +import fr.ird.observe.entities.seine.TripSeine; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class NoAcceptedIntervalle extends RuntimeException { + + protected final TripSeine tripSeine; + + protected final String fileName; + + public NoAcceptedIntervalle(TripSeine tripSeine, String fileName) { + this.tripSeine = tripSeine; + this.fileName = fileName; + } + + public TripSeine getTripSeine() { + return tripSeine; + } + + public String getFileName() { + return fileName; + } +} diff --git a/observe-business/src/test/java/fr/ird/observe/gps/GPSFileReaderTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/importGps/GpsReaderTest.java similarity index 61% copy from observe-business/src/test/java/fr/ird/observe/gps/GPSFileReaderTest.java copy to observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/importGps/GpsReaderTest.java index 2e8bca7..e110e58 100644 --- a/observe-business/src/test/java/fr/ird/observe/gps/GPSFileReaderTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/importGps/GpsReaderTest.java @@ -1,49 +1,22 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.gps; +package fr.ird.observe.services.service.actions.importGps; +import fr.ird.observe.services.dto.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GPSPointInterval; +import fr.ird.observe.services.dto.gps.GPSRoute; import org.junit.After; -import org.junit.Ignore; +import org.junit.Assert; import org.junit.Test; import java.io.File; import java.net.URL; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - /** - * @author Tony Chemit - chemit@codelutin.com - * @since 1.0 + * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -@Ignore -public class GPSFileReaderTest { +public class GpsReaderTest { - GPSService service = new GPSService(); - - protected GPSFileReader reader; + protected GpsReader reader; @After public void after() { @@ -53,9 +26,9 @@ public class GPSFileReaderTest { @Test public void testParseFile() throws Exception { GPSRoute result = load("GL50_13_small.gpx", 10, 25.0f); - assertNotNull(result); + Assert.assertNotNull(result); - assertEquals(15, result.getPoint().size()); + Assert.assertEquals(15, result.getPoint().size()); GPSPoint point = result.getPoint(0); /* <trkpt lat="-4.621102" lon="55.461163"> @@ -69,11 +42,11 @@ public class GPSFileReaderTest { <pdop>0.000000</pdop> </trkpt> */ - assertNotNull(point); + Assert.assertNotNull(point); - assertEquals(0.0f, point.getVitesse(), 2); - assertEquals(-4.621102f, point.getLatitude(), 6); - assertEquals(55.461163f, point.getLongitude(), 6); + Assert.assertEquals(0.0f, point.getVitesse(), 2); + Assert.assertEquals(-4.621102f, point.getLatitude(), 6); + Assert.assertEquals(55.461163f, point.getLongitude(), 6); } @@ -84,31 +57,31 @@ public class GPSFileReaderTest { // accepted = [0,13] route = loadAndDetectInterval("testInterval_allAccepted.gpx", 10, 25.0f); - assertEquals(14, route.getPoint().size()); + Assert.assertEquals(14, route.getPoint().size()); assertIntervals(route, new int[]{0, 13}, null); // rejected = [0,13] route = loadAndDetectInterval("testInterval_allRejected.gpx", 1, 25.0f); - assertEquals(14, route.getPoint().size()); + Assert.assertEquals(14, route.getPoint().size()); assertIntervals(route, null, new int[]{0, 13}); // rejected = [0,1] // accepted = [1,13] route = loadAndDetectInterval("testInterval_firtPointsRejected.gpx", 10, 25.0f); - assertEquals(14, route.getPoint().size()); + Assert.assertEquals(14, route.getPoint().size()); assertIntervals(route, new int[]{1, 13}, new int[]{0, 1}); // accepted = [0,12] // rejected = [12,13] route = loadAndDetectInterval("testInterval_lastPointsRejected.gpx", 10, 25.0f); - assertEquals(14, route.getPoint().size()); + Assert.assertEquals(14, route.getPoint().size()); assertIntervals(route, new int[]{0, 12}, new int[]{12, 13}); // accepted = [0,1] // rejected = [1,2] // accepted = [2,13] route = loadAndDetectInterval("testInterval_insidePointsRejected.gpx", 5, 25.0f); - assertEquals(14, route.getPoint().size()); + Assert.assertEquals(14, route.getPoint().size()); assertIntervals(route, new int[]{0, 1, 2, 13}, new int[]{1, 2}); // accepted = [0,1] @@ -117,7 +90,7 @@ public class GPSFileReaderTest { // rejected = [10,12] // accepted = [12,13] route = loadAndDetectInterval("testInterval_insidePointsRejected2.gpx", 5, 25.0f); - assertEquals(14, route.getPoint().size()); + Assert.assertEquals(14, route.getPoint().size()); assertIntervals(route, new int[]{0, 1, 2, 10, 12, 13}, new int[]{1, 2, 10, 12}); } @@ -127,14 +100,14 @@ public class GPSFileReaderTest { if (acceptedIntervals == null) { // pas d'intervalle accepté - assertNull(acceptedInterval); + Assert.assertNull(acceptedInterval); } else { // des intervalles acceptés - assertNotNull(acceptedInterval); - assertFalse(acceptedInterval.isEmpty()); + Assert.assertNotNull(acceptedInterval); + Assert.assertFalse(acceptedInterval.isEmpty()); int acceptedIntervalSize = acceptedIntervals.length / 2; - assertEquals(acceptedIntervalSize, acceptedInterval.size()); + Assert.assertEquals(acceptedIntervalSize, acceptedInterval.size()); for (int i = 0, j = acceptedIntervalSize; i < j; i++) { int first = acceptedIntervals[i * 2]; int last = acceptedIntervals[i * 2 + 1]; @@ -146,15 +119,15 @@ public class GPSFileReaderTest { if (rejectedIntervals == null) { // pas d'intervalle rejeté - assertNull(rejectedInterval); + Assert.assertNull(rejectedInterval); } else { // des intervalles rejetés - assertNotNull(rejectedInterval); - assertFalse(rejectedInterval.isEmpty()); + Assert.assertNotNull(rejectedInterval); + Assert.assertFalse(rejectedInterval.isEmpty()); int rejectedIntervalSize = rejectedIntervals.length / 2; - assertEquals(rejectedIntervalSize, rejectedInterval.size()); + Assert.assertEquals(rejectedIntervalSize, rejectedInterval.size()); for (int i = 0, j = rejectedIntervalSize; i < j; i++) { int first = rejectedIntervals[i * 2]; int last = rejectedIntervals[i * 2 + 1]; @@ -166,16 +139,16 @@ public class GPSFileReaderTest { } protected void assertInterval(GPSRoute route, GPSPointInterval interval, int first, int last) { - assertEquals(last - first + 1, interval.getPoint().size()); - assertEquals(route.getPoint(first), interval.getFirstPoint()); - assertEquals(route.getPoint(last), interval.getLastPoint()); + Assert.assertEquals(last - first + 1, interval.getPoint().size()); + Assert.assertEquals(route.getPoint(first), interval.getFirstPoint()); + Assert.assertEquals(route.getPoint(last), interval.getLastPoint()); } protected GPSRoute load(String path, int delay, float maxSpeed) throws Exception { URL url = getClass().getResource(path); File f = new File(url.getFile()); - reader = new GPSFileReader(service, f, delay, maxSpeed); - GPSRoute result = reader.read(); + reader = new GpsReader(delay, maxSpeed); + GPSRoute result = reader.read(f); return result; } @@ -184,4 +157,5 @@ public class GPSFileReaderTest { reader.detectIntervals(route); return route; } + } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/importGps/ImportGpsServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/importGps/ImportGpsServiceTopiaTest.java new file mode 100644 index 0000000..9d657f1 --- /dev/null +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/importGps/ImportGpsServiceTopiaTest.java @@ -0,0 +1,56 @@ +package fr.ird.observe.services.service.actions.importGps; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.service.AbstractServiceTopiaTest; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Set; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ImportGpsServiceTopiaTest extends AbstractServiceTopiaTest { + + protected ImportGpsService service; + + @Override + public Set<String> getTestNamesChangeDataBase() { + return ImmutableSet.of("importGpsTest"); + } + + @Override + public String getScriptName() { + return "dataForTestSeine"; + } + + @Override + public void setUp() throws Exception { + + super.setUp(); + + service = newService(ImportGpsService.class); + + } + + @Test + public void importGpsTest() throws Exception { + + ImportGpsRequest request = new ImportGpsRequest(); + + request.setFileContent(""); + request.setFileName("fichier.gpx"); + request.setMaxDelay(60); + request.setMaxSpeed(25f); + request.setTripSeineId(TRIP_SEINE_ID_1); + + ImportGpsResult result = service.importGps(request); + + Assert.assertNotNull(result); + + } + + + + +} diff --git a/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/GL50_13_small.gpx b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/GL50_13_small.gpx new file mode 100644 index 0000000..a2a69a7 --- /dev/null +++ b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/GL50_13_small.gpx @@ -0,0 +1,167 @@ +<?xml version="1.0"?> +<gpx +version="1.0" +creator="LOG Converter 1.51" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="http://www.topografix.com/GPX/1/0" +xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" +xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/2 http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd"> + <time>2008-10-09T17:09:22</time> + <bounds minlat="-9.158406" minlon="49.513565" maxlat="-3.977783" maxlon="59.126060"/> + <trk> + <name>exemple_GL50_13_corrige</name> + <trkseg> + <trkpt lat="-4.621102" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T03:54:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621067" lon="55.461028"> + <ele>0.000000</ele> + <time>2007-11-09T03:59:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621072" lon="55.461065"> + <ele>0.000000</ele> + <time>2007-11-09T04:04:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.620885" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T04:09:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621702" lon="55.462778"> + <ele>0.000000</ele> + <time>2007-11-09T04:14:27.000Z</time> + <course>0.000000</course> + <speed>0.463000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.619307" lon="55.465857"> + <ele>0.000000</ele> + <time>2007-11-09T04:19:27.000Z</time> + <course>44.209999</course> + <speed>1.563911</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.614558" lon="55.471957"> + <ele>0.000000</ele> + <time>2007-11-09T04:24:27.000Z</time> + <course>65.889999</course> + <speed>4.377922</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.609248" lon="55.483448"> + <ele>0.000000</ele> + <time>2007-11-09T04:29:27.000Z</time> + <course>57.099998</course> + <speed>4.774044</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600630" lon="55.489975"> + <ele>0.000000</ele> + <time>2007-11-09T04:34:27.000Z</time> + <course>355.049988</course> + <speed>3.225567</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600225" lon="55.489840"> + <ele>0.000000</ele> + <time>2007-11-09T04:39:27.000Z</time> + <course>339.739990</course> + <speed>0.149189</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600133" lon="55.489788"> + <ele>0.000000</ele> + <time>2007-11-09T04:44:27.000Z</time> + <course>339.739990</course> + <speed>0.113178</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600182" lon="55.489875"> + <ele>0.000000</ele> + <time>2007-11-09T04:49:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600155" lon="55.489867"> + <ele>0.000000</ele> + <time>2007-11-09T04:54:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600117" lon="55.489877"> + <ele>0.000000</ele> + <time>2007-11-09T04:59:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + + <trkpt lat="-3.977783" lon="51.929418"> + <ele>0.000000</ele> + <time>2007-11-29T10:32:48.000Z</time> + <course>282.089996</course> + <speed>6.353389</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + </trkseg> + </trk> +</gpx> diff --git a/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_allAccepted.gpx b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_allAccepted.gpx new file mode 100644 index 0000000..7933c7b --- /dev/null +++ b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_allAccepted.gpx @@ -0,0 +1,157 @@ +<?xml version="1.0"?> +<gpx +version="1.0" +creator="LOG Converter 1.51" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="http://www.topografix.com/GPX/1/0" +xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" +xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/2 http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd"> + <time>2008-10-09T17:09:22</time> + <bounds minlat="-9.158406" minlon="49.513565" maxlat="-3.977783" maxlon="59.126060"/> + <trk> + <name>exemple_GL50_13_corrige</name> + <trkseg> + <trkpt lat="-4.621102" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T03:54:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621067" lon="55.461028"> + <ele>0.000000</ele> + <time>2007-11-09T03:59:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621072" lon="55.461065"> + <ele>0.000000</ele> + <time>2007-11-09T04:04:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.620885" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T04:09:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621702" lon="55.462778"> + <ele>0.000000</ele> + <time>2007-11-09T04:14:27.000Z</time> + <course>0.000000</course> + <speed>0.463000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.619307" lon="55.465857"> + <ele>0.000000</ele> + <time>2007-11-09T04:19:27.000Z</time> + <course>44.209999</course> + <speed>1.563911</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.614558" lon="55.471957"> + <ele>0.000000</ele> + <time>2007-11-09T04:24:27.000Z</time> + <course>65.889999</course> + <speed>4.377922</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.609248" lon="55.483448"> + <ele>0.000000</ele> + <time>2007-11-09T04:29:27.000Z</time> + <course>57.099998</course> + <speed>4.774044</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600630" lon="55.489975"> + <ele>0.000000</ele> + <time>2007-11-09T04:34:27.000Z</time> + <course>355.049988</course> + <speed>3.225567</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600225" lon="55.489840"> + <ele>0.000000</ele> + <time>2007-11-09T04:39:27.000Z</time> + <course>339.739990</course> + <speed>0.149189</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600133" lon="55.489788"> + <ele>0.000000</ele> + <time>2007-11-09T04:44:27.000Z</time> + <course>339.739990</course> + <speed>0.113178</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600182" lon="55.489875"> + <ele>0.000000</ele> + <time>2007-11-09T04:49:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600155" lon="55.489867"> + <ele>0.000000</ele> + <time>2007-11-09T04:54:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600117" lon="55.489877"> + <ele>0.000000</ele> + <time>2007-11-09T04:59:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + + </trkseg> + </trk> +</gpx> diff --git a/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_allRejected.gpx b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_allRejected.gpx new file mode 100644 index 0000000..7933c7b --- /dev/null +++ b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_allRejected.gpx @@ -0,0 +1,157 @@ +<?xml version="1.0"?> +<gpx +version="1.0" +creator="LOG Converter 1.51" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="http://www.topografix.com/GPX/1/0" +xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" +xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/2 http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd"> + <time>2008-10-09T17:09:22</time> + <bounds minlat="-9.158406" minlon="49.513565" maxlat="-3.977783" maxlon="59.126060"/> + <trk> + <name>exemple_GL50_13_corrige</name> + <trkseg> + <trkpt lat="-4.621102" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T03:54:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621067" lon="55.461028"> + <ele>0.000000</ele> + <time>2007-11-09T03:59:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621072" lon="55.461065"> + <ele>0.000000</ele> + <time>2007-11-09T04:04:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.620885" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T04:09:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621702" lon="55.462778"> + <ele>0.000000</ele> + <time>2007-11-09T04:14:27.000Z</time> + <course>0.000000</course> + <speed>0.463000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.619307" lon="55.465857"> + <ele>0.000000</ele> + <time>2007-11-09T04:19:27.000Z</time> + <course>44.209999</course> + <speed>1.563911</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.614558" lon="55.471957"> + <ele>0.000000</ele> + <time>2007-11-09T04:24:27.000Z</time> + <course>65.889999</course> + <speed>4.377922</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.609248" lon="55.483448"> + <ele>0.000000</ele> + <time>2007-11-09T04:29:27.000Z</time> + <course>57.099998</course> + <speed>4.774044</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600630" lon="55.489975"> + <ele>0.000000</ele> + <time>2007-11-09T04:34:27.000Z</time> + <course>355.049988</course> + <speed>3.225567</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600225" lon="55.489840"> + <ele>0.000000</ele> + <time>2007-11-09T04:39:27.000Z</time> + <course>339.739990</course> + <speed>0.149189</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600133" lon="55.489788"> + <ele>0.000000</ele> + <time>2007-11-09T04:44:27.000Z</time> + <course>339.739990</course> + <speed>0.113178</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600182" lon="55.489875"> + <ele>0.000000</ele> + <time>2007-11-09T04:49:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600155" lon="55.489867"> + <ele>0.000000</ele> + <time>2007-11-09T04:54:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600117" lon="55.489877"> + <ele>0.000000</ele> + <time>2007-11-09T04:59:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + + </trkseg> + </trk> +</gpx> diff --git a/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_firtPointsRejected.gpx b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_firtPointsRejected.gpx new file mode 100644 index 0000000..5cc60bc --- /dev/null +++ b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_firtPointsRejected.gpx @@ -0,0 +1,157 @@ +<?xml version="1.0"?> +<gpx +version="1.0" +creator="LOG Converter 1.51" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="http://www.topografix.com/GPX/1/0" +xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" +xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/2 http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd"> + <time>2008-10-09T17:09:22</time> + <bounds minlat="-9.158406" minlon="49.513565" maxlat="-3.977783" maxlon="59.126060"/> + <trk> + <name>exemple_GL50_13_corrige</name> + <trkseg> + <trkpt lat="-4.621102" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T03:48:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621067" lon="55.461028"> + <ele>0.000000</ele> + <time>2007-11-09T03:59:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621072" lon="55.461065"> + <ele>0.000000</ele> + <time>2007-11-09T04:04:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.620885" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T04:09:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621702" lon="55.462778"> + <ele>0.000000</ele> + <time>2007-11-09T04:14:27.000Z</time> + <course>0.000000</course> + <speed>0.463000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.619307" lon="55.465857"> + <ele>0.000000</ele> + <time>2007-11-09T04:19:27.000Z</time> + <course>44.209999</course> + <speed>1.563911</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.614558" lon="55.471957"> + <ele>0.000000</ele> + <time>2007-11-09T04:24:27.000Z</time> + <course>65.889999</course> + <speed>4.377922</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.609248" lon="55.483448"> + <ele>0.000000</ele> + <time>2007-11-09T04:29:27.000Z</time> + <course>57.099998</course> + <speed>4.774044</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600630" lon="55.489975"> + <ele>0.000000</ele> + <time>2007-11-09T04:34:27.000Z</time> + <course>355.049988</course> + <speed>3.225567</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600225" lon="55.489840"> + <ele>0.000000</ele> + <time>2007-11-09T04:39:27.000Z</time> + <course>339.739990</course> + <speed>0.149189</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600133" lon="55.489788"> + <ele>0.000000</ele> + <time>2007-11-09T04:44:27.000Z</time> + <course>339.739990</course> + <speed>0.113178</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600182" lon="55.489875"> + <ele>0.000000</ele> + <time>2007-11-09T04:49:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600155" lon="55.489867"> + <ele>0.000000</ele> + <time>2007-11-09T04:54:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600117" lon="55.489877"> + <ele>0.000000</ele> + <time>2007-11-09T04:59:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + + </trkseg> + </trk> +</gpx> diff --git a/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_insidePointsRejected.gpx b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_insidePointsRejected.gpx new file mode 100644 index 0000000..c8cd501 --- /dev/null +++ b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_insidePointsRejected.gpx @@ -0,0 +1,157 @@ +<?xml version="1.0"?> +<gpx +version="1.0" +creator="LOG Converter 1.51" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="http://www.topografix.com/GPX/1/0" +xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" +xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/2 http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd"> + <time>2008-10-09T17:09:22</time> + <bounds minlat="-9.158406" minlon="49.513565" maxlat="-3.977783" maxlon="59.126060"/> + <trk> + <name>exemple_GL50_13_corrige</name> + <trkseg> + <trkpt lat="-4.621102" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T03:54:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621067" lon="55.461028"> + <ele>0.000000</ele> + <time>2007-11-09T03:59:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621072" lon="55.461065"> + <ele>0.000000</ele> + <time>2007-11-09T04:06:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.620885" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T04:09:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621702" lon="55.462778"> + <ele>0.000000</ele> + <time>2007-11-09T04:14:26.000Z</time> + <course>0.000000</course> + <speed>0.463000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.619307" lon="55.465857"> + <ele>0.000000</ele> + <time>2007-11-09T04:19:26.000Z</time> + <course>44.209999</course> + <speed>1.563911</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.614558" lon="55.471957"> + <ele>0.000000</ele> + <time>2007-11-09T04:24:26.000Z</time> + <course>65.889999</course> + <speed>4.377922</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.609248" lon="55.483448"> + <ele>0.000000</ele> + <time>2007-11-09T04:29:26.000Z</time> + <course>57.099998</course> + <speed>4.774044</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600630" lon="55.489975"> + <ele>0.000000</ele> + <time>2007-11-09T04:34:26.000Z</time> + <course>355.049988</course> + <speed>3.225567</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600225" lon="55.489840"> + <ele>0.000000</ele> + <time>2007-11-09T04:39:26.000Z</time> + <course>339.739990</course> + <speed>0.149189</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600133" lon="55.489788"> + <ele>0.000000</ele> + <time>2007-11-09T04:44:26.000Z</time> + <course>339.739990</course> + <speed>0.113178</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600182" lon="55.489875"> + <ele>0.000000</ele> + <time>2007-11-09T04:49:26.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600155" lon="55.489867"> + <ele>0.000000</ele> + <time>2007-11-09T04:54:26.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600117" lon="55.489877"> + <ele>0.000000</ele> + <time>2007-11-09T04:59:26.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + + </trkseg> + </trk> +</gpx> diff --git a/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_insidePointsRejected2.gpx b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_insidePointsRejected2.gpx new file mode 100644 index 0000000..5523561 --- /dev/null +++ b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_insidePointsRejected2.gpx @@ -0,0 +1,157 @@ +<?xml version="1.0"?> +<gpx +version="1.0" +creator="LOG Converter 1.51" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="http://www.topografix.com/GPX/1/0" +xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" +xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/2 http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd"> + <time>2008-10-09T17:09:22</time> + <bounds minlat="-9.158406" minlon="49.513565" maxlat="-3.977783" maxlon="59.126060"/> + <trk> + <name>exemple_GL50_13_corrige</name> + <trkseg> + <trkpt lat="-4.621102" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T03:54:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621067" lon="55.461028"> + <ele>0.000000</ele> + <time>2007-11-09T03:59:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621072" lon="55.461065"> + <ele>0.000000</ele> + <time>2007-11-09T04:06:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.620885" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T04:09:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621702" lon="55.462778"> + <ele>0.000000</ele> + <time>2007-11-09T04:14:26.000Z</time> + <course>0.000000</course> + <speed>0.463000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.619307" lon="55.465857"> + <ele>0.000000</ele> + <time>2007-11-09T04:19:26.000Z</time> + <course>44.209999</course> + <speed>1.563911</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.614558" lon="55.471957"> + <ele>0.000000</ele> + <time>2007-11-09T04:24:26.000Z</time> + <course>65.889999</course> + <speed>4.377922</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.609248" lon="55.483448"> + <ele>0.000000</ele> + <time>2007-11-09T04:29:26.000Z</time> + <course>57.099998</course> + <speed>4.774044</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600630" lon="55.489975"> + <ele>0.000000</ele> + <time>2007-11-09T04:34:26.000Z</time> + <course>355.049988</course> + <speed>3.225567</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600225" lon="55.489840"> + <ele>0.000000</ele> + <time>2007-11-09T04:39:26.000Z</time> + <course>339.739990</course> + <speed>0.149189</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600133" lon="55.489788"> + <ele>0.000000</ele> + <time>2007-11-09T04:44:26.000Z</time> + <course>339.739990</course> + <speed>0.113178</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600182" lon="55.489875"> + <ele>0.000000</ele> + <time>2007-11-09T04:50:26.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600155" lon="55.489867"> + <ele>0.000000</ele> + <time>2007-11-09T04:56:26.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600117" lon="55.489877"> + <ele>0.000000</ele> + <time>2007-11-09T04:59:26.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + + </trkseg> + </trk> +</gpx> diff --git a/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_lastPointsRejected.gpx b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_lastPointsRejected.gpx new file mode 100644 index 0000000..a9a6342 --- /dev/null +++ b/observe-services-topia/src/test/resources/fr/ird/observe/services/service/actions/importGps/testInterval_lastPointsRejected.gpx @@ -0,0 +1,157 @@ +<?xml version="1.0"?> +<gpx +version="1.0" +creator="LOG Converter 1.51" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="http://www.topografix.com/GPX/1/0" +xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" +xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/2 http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd"> + <time>2008-10-09T17:09:22</time> + <bounds minlat="-9.158406" minlon="49.513565" maxlat="-3.977783" maxlon="59.126060"/> + <trk> + <name>exemple_GL50_13_corrige</name> + <trkseg> + <trkpt lat="-4.621102" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T03:54:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621067" lon="55.461028"> + <ele>0.000000</ele> + <time>2007-11-09T03:59:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621072" lon="55.461065"> + <ele>0.000000</ele> + <time>2007-11-09T04:04:26.000Z</time> + <course>0.000000</course> + <speed>0.000000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.620885" lon="55.461163"> + <ele>0.000000</ele> + <time>2007-11-09T04:09:26.000Z</time> + <course>0.000000</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.621702" lon="55.462778"> + <ele>0.000000</ele> + <time>2007-11-09T04:14:27.000Z</time> + <course>0.000000</course> + <speed>0.463000</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.619307" lon="55.465857"> + <ele>0.000000</ele> + <time>2007-11-09T04:19:27.000Z</time> + <course>44.209999</course> + <speed>1.563911</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.614558" lon="55.471957"> + <ele>0.000000</ele> + <time>2007-11-09T04:24:27.000Z</time> + <course>65.889999</course> + <speed>4.377922</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.609248" lon="55.483448"> + <ele>0.000000</ele> + <time>2007-11-09T04:29:27.000Z</time> + <course>57.099998</course> + <speed>4.774044</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600630" lon="55.489975"> + <ele>0.000000</ele> + <time>2007-11-09T04:34:27.000Z</time> + <course>355.049988</course> + <speed>3.225567</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600225" lon="55.489840"> + <ele>0.000000</ele> + <time>2007-11-09T04:39:27.000Z</time> + <course>339.739990</course> + <speed>0.149189</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600133" lon="55.489788"> + <ele>0.000000</ele> + <time>2007-11-09T04:44:27.000Z</time> + <course>339.739990</course> + <speed>0.113178</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600182" lon="55.489875"> + <ele>0.000000</ele> + <time>2007-11-09T04:49:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600155" lon="55.489867"> + <ele>0.000000</ele> + <time>2007-11-09T04:54:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + <trkpt lat="-4.600117" lon="55.489877"> + <ele>0.000000</ele> + <time>2007-11-09T05:59:27.000Z</time> + <course>339.739990</course> + <speed>0.005144</speed> + <sat>0</sat> + <hdop>0.000000</hdop> + <vdop>0.000000</vdop> + <pdop>0.000000</pdop> + </trkpt> + + </trkseg> + </trk> +</gpx> diff --git a/observe-validation/src/main/java/fr/ird/observe/validation/field/ActivitySimpleSpeedValidator.java b/observe-validation/src/main/java/fr/ird/observe/validation/field/ActivitySimpleSpeedValidator.java index 64293ca..f4fdae0 100644 --- a/observe-validation/src/main/java/fr/ird/observe/validation/field/ActivitySimpleSpeedValidator.java +++ b/observe-validation/src/main/java/fr/ird/observe/validation/field/ActivitySimpleSpeedValidator.java @@ -29,8 +29,8 @@ import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.Route; -import fr.ird.observe.gps.GPSPoint; -import fr.ird.observe.gps.GpsPoints; +import fr.ird.observe.services.dto.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GpsPoints; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/observe-validation/src/main/java/fr/ird/observe/validation/field/ActivitySpeedValidator.java b/observe-validation/src/main/java/fr/ird/observe/validation/field/ActivitySpeedValidator.java index b58ffee..5a76c07 100644 --- a/observe-validation/src/main/java/fr/ird/observe/validation/field/ActivitySpeedValidator.java +++ b/observe-validation/src/main/java/fr/ird/observe/validation/field/ActivitySpeedValidator.java @@ -29,8 +29,8 @@ import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.Route; -import fr.ird.observe.gps.GPSPoint; -import fr.ird.observe.gps.GpsPoints; +import fr.ird.observe.services.dto.gps.GPSPoint; +import fr.ird.observe.services.dto.gps.GpsPoints; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.xwork2.field.CollectionFieldExpressionValidator; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm