diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2013-01-12 00:54:34 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2013-01-12 00:54:34 +1300 |
commit | 9f60706d957a183433cd61de9e422e565a1f15d4 (patch) | |
tree | 34de97ebc1936eab9315f63af3e149a4a6dbf180 | |
parent | 3eaf89d64402e16daf256174cba5985e3774aa55 (diff) | |
download | trackermap-web-9f60706d957a183433cd61de9e422e565a1f15d4.tar.gz trackermap-web-9f60706d957a183433cd61de9e422e565a1f15d4.tar.bz2 trackermap-web-9f60706d957a183433cd61de9e422e565a1f15d4.zip |
Add latest position to device
-rw-r--r-- | src/org/traccar/web/server/model/DataServiceImpl.java | 4 | ||||
-rw-r--r-- | src/org/traccar/web/shared/model/Device.java | 8 | ||||
-rw-r--r-- | src/org/traccar/web/shared/model/Position.java | 28 |
3 files changed, 24 insertions, 16 deletions
diff --git a/src/org/traccar/web/server/model/DataServiceImpl.java b/src/org/traccar/web/server/model/DataServiceImpl.java index 0b2a80ba..fa7a42d8 100644 --- a/src/org/traccar/web/server/model/DataServiceImpl.java +++ b/src/org/traccar/web/server/model/DataServiceImpl.java @@ -195,8 +195,8 @@ public class DataServiceImpl extends RemoteServiceServlet implements DataService User user = getUser(); if (!user.getDevices().isEmpty()) { 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); + "SELECT x FROM Position x WHERE x.id IN (" + + "SELECT y.latestPosition FROM Device y WHERE y IN (:devices))", Position.class); query.setParameter("devices", user.getDevices()); positions.addAll(query.getResultList()); } diff --git a/src/org/traccar/web/shared/model/Device.java b/src/org/traccar/web/shared/model/Device.java index df4afb4b..d638046e 100644 --- a/src/org/traccar/web/shared/model/Device.java +++ b/src/org/traccar/web/shared/model/Device.java @@ -21,6 +21,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import javax.persistence.OneToOne; import javax.persistence.Table; @Entity @@ -46,6 +47,13 @@ public class Device implements Serializable { return id; } + @OneToOne + private Position latestPosition; + + public Position getLatestPosition() { + return latestPosition; + } + @Column(unique = true) private String uniqueId; diff --git a/src/org/traccar/web/shared/model/Position.java b/src/org/traccar/web/shared/model/Position.java index 581c94c4..d5fa9a91 100644 --- a/src/org/traccar/web/shared/model/Position.java +++ b/src/org/traccar/web/shared/model/Position.java @@ -75,45 +75,45 @@ public class Position implements Serializable, Cloneable { return time; } - private boolean valid; + private Boolean valid; - public boolean getValid() { + public Boolean getValid() { return valid; } - private double latitude; + private Double latitude; - public double getLatitude() { + public Double getLatitude() { return latitude; } - private double longitude; + private Double longitude; - public double getLongitude() { + public Double getLongitude() { return longitude; } - private double altitude; + private Double altitude; - public double getAltitude() { + public Double getAltitude() { return altitude; } - private double speed; + private Double speed; - public double getSpeed() { + public Double getSpeed() { return speed; } - private double course; + private Double course; - public double getCourse() { + public Double getCourse() { return course; } - private double power; + private Double power; - public double getPower() { + public Double getPower() { return power; } |