diff options
Diffstat (limited to 'src/main/java/org/traccar/web/server/database/DatabaseServiceImpl.java')
-rw-r--r-- | src/main/java/org/traccar/web/server/database/DatabaseServiceImpl.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/org/traccar/web/server/database/DatabaseServiceImpl.java b/src/main/java/org/traccar/web/server/database/DatabaseServiceImpl.java index 335cc17..d466262 100644 --- a/src/main/java/org/traccar/web/server/database/DatabaseServiceImpl.java +++ b/src/main/java/org/traccar/web/server/database/DatabaseServiceImpl.java @@ -131,4 +131,19 @@ public class DatabaseServiceImpl extends RemoteServiceServlet implements Databas return positions; } + @Override + public List<Position> getLatestPositions() { + User user = getUser(); + TypedQuery<Position> query = entityManager.createQuery( + "SELECT x FROM Position x WHERE (x.device, x.time) IN (" + + "SELECT y.device, MAX(y.time) FROM Position y WHERE y.device IN :devices GROUP BY y.device)", Position.class); + query.setParameter("devices", user.getDevices()); + + List<Position> positions = new LinkedList<Position>(); + for (Position position : query.getResultList()) { + positions.add(position); + } + return positions; + } + } |