aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDemian <dalonso@ecotaxi.com>2015-06-29 11:23:08 -0300
committerDemian <dalonso@ecotaxi.com>2015-07-29 13:05:44 -0300
commit66dbefa18290d2f31d545fd1f511207cdcd7c3a2 (patch)
tree9b9ba9473a8f1e7f2a8928bce6329d47cc9b6e04 /src
parent173699d5683605e72267b24a248085c2abccc38f (diff)
downloadtrackermap-server-66dbefa18290d2f31d545fd1f511207cdcd7c3a2.tar.gz
trackermap-server-66dbefa18290d2f31d545fd1f511207cdcd7c3a2.tar.bz2
trackermap-server-66dbefa18290d2f31d545fd1f511207cdcd7c3a2.zip
Added service to retrieve the positions for a group of devices from a particular user
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/model/MiscFormatter.java6
-rw-r--r--src/org/traccar/web/PositionServlet.java23
2 files changed, 29 insertions, 0 deletions
diff --git a/src/org/traccar/model/MiscFormatter.java b/src/org/traccar/model/MiscFormatter.java
index d1e1ae959..7a1e69082 100644
--- a/src/org/traccar/model/MiscFormatter.java
+++ b/src/org/traccar/model/MiscFormatter.java
@@ -15,6 +15,8 @@
*/
package org.traccar.model;
+import org.traccar.web.JsonConverter;
+
import java.text.DecimalFormat;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -73,6 +75,10 @@ public class MiscFormatter {
json.add(entry.getKey(), (Double) entry.getValue());
} else if (entry.getValue() instanceof Boolean) {
json.add(entry.getKey(), (Boolean) entry.getValue());
+ } else if (entry.getValue() == null) {
+ json.add(entry.getKey(), JsonValue.NULL);
+ } else {
+ json.add(entry.getKey(), JsonConverter.objectToJson(entry.getValue()));
}
}
diff --git a/src/org/traccar/web/PositionServlet.java b/src/org/traccar/web/PositionServlet.java
index a29b5b274..78bcb22e7 100644
--- a/src/org/traccar/web/PositionServlet.java
+++ b/src/org/traccar/web/PositionServlet.java
@@ -18,6 +18,11 @@ package org.traccar.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.traccar.Context;
+import org.traccar.model.MiscFormatter;
+import org.traccar.model.Position;
+
+import java.util.HashMap;
+import java.util.Map;
public class PositionServlet extends BaseServlet {
@@ -28,6 +33,9 @@ public class PositionServlet extends BaseServlet {
case "/get":
get(req, resp);
break;
+ case "/devices":
+ devices(req, resp);
+ break;
default:
return false;
}
@@ -44,4 +52,19 @@ public class PositionServlet extends BaseServlet {
JsonConverter.parseDate(req.getParameter("to")))));
}
+ private void devices(HttpServletRequest req, HttpServletResponse resp) throws Exception {
+ long userId = getUserId(req);
+ Map<String, Object> positions = new HashMap<>();
+
+ for(String deviceIdString : req.getParameterValues("devicesId")) {
+ Long deviceId = Long.parseLong(deviceIdString);
+
+ Context.getPermissionsManager().checkDevice(userId, deviceId);
+
+ Position position = Context.getConnectionManager().getLastPosition(deviceId);
+ positions.put(deviceId.toString(), position);
+ }
+
+ sendResponse(resp.getWriter(), MiscFormatter.toJson(positions));
+ }
}