aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2013-01-12 00:54:34 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2013-01-12 00:54:34 +1300
commit9f60706d957a183433cd61de9e422e565a1f15d4 (patch)
tree34de97ebc1936eab9315f63af3e149a4a6dbf180
parent3eaf89d64402e16daf256174cba5985e3774aa55 (diff)
downloadtrackermap-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.java4
-rw-r--r--src/org/traccar/web/shared/model/Device.java8
-rw-r--r--src/org/traccar/web/shared/model/Position.java28
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;
}