aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/database
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/traccar/database')
-rw-r--r--src/main/java/org/traccar/database/DataManager.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/org/traccar/database/DataManager.java b/src/main/java/org/traccar/database/DataManager.java
index 15137ad91..3f702f78a 100644
--- a/src/main/java/org/traccar/database/DataManager.java
+++ b/src/main/java/org/traccar/database/DataManager.java
@@ -328,6 +328,42 @@ public class DataManager {
.executeQuery(Position.class);
}
+ public Position getPositionByTime(long deviceId, Date date) throws SQLException {
+ Collection<Position> positions = QueryBuilder.create(dataSource, getQuery("database.selectPositionByTime"))
+ .setLong("deviceId", deviceId)
+ .setDate("time", date)
+ .executeQuery(Position.class);
+ if (positions.isEmpty()) {
+ return null;
+ } else {
+ return positions.iterator().next();
+ }
+ }
+
+ public Position getPrevPosition(long deviceId, Date date) throws SQLException {
+ Collection<Position> positions = QueryBuilder.create(dataSource, getQuery("database.selectPrevPosition"))
+ .setLong("deviceId", deviceId)
+ .setDate("time", date)
+ .executeQuery(Position.class);
+ if (positions.isEmpty()) {
+ return null;
+ } else {
+ return positions.iterator().next();
+ }
+ }
+
+ public Position getNextPosition(long deviceId, Date date) throws SQLException {
+ Collection<Position> positions = QueryBuilder.create(dataSource, getQuery("database.selectNextPosition"))
+ .setLong("deviceId", deviceId)
+ .setDate("time", date)
+ .executeQuery(Position.class);
+ if (positions.isEmpty()) {
+ return null;
+ } else {
+ return positions.iterator().next();
+ }
+ }
+
public void updateLatestPosition(Position position) throws SQLException {
QueryBuilder.create(dataSource, getQuery("database.updateLatestPosition"))
.setDate("now", new Date())