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