aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/web/CommandServlet.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2015-07-17 16:28:36 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2015-07-17 16:28:36 +1200
commit3f6f92cedd969e741e65bb6e14737b98722b214e (patch)
tree97b19d441bb9f79c73db493d6ad52b2e422ec1ba /src/org/traccar/web/CommandServlet.java
parentb6ba5a8ac60e8013e22ed44b15ffdc5ad8097060 (diff)
downloadtrackermap-server-3f6f92cedd969e741e65bb6e14737b98722b214e.tar.gz
trackermap-server-3f6f92cedd969e741e65bb6e14737b98722b214e.tar.bz2
trackermap-server-3f6f92cedd969e741e65bb6e14737b98722b214e.zip
Start re-factoring commands
Diffstat (limited to 'src/org/traccar/web/CommandServlet.java')
-rw-r--r--src/org/traccar/web/CommandServlet.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/org/traccar/web/CommandServlet.java b/src/org/traccar/web/CommandServlet.java
new file mode 100644
index 000000000..049a0534d
--- /dev/null
+++ b/src/org/traccar/web/CommandServlet.java
@@ -0,0 +1,51 @@
+package org.traccar.web;
+
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.traccar.Context;
+import org.traccar.model.Command;
+import org.traccar.database.ActiveDevice;
+
+public class CommandServlet extends BaseServlet {
+
+ @Override
+ protected boolean handle(String command, HttpServletRequest req, HttpServletResponse resp) throws Exception {
+
+ switch (command) {
+ case "/send":
+ send(req, resp);
+ return true;
+ case "/raw":
+ raw(req, resp);
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ public ActiveDevice getActiveDevice(long deviceId) {
+ ActiveDevice activeDevice = Context.getConnectionManager().getActiveDevice(deviceId);
+ if (activeDevice == null) {
+ throw new RuntimeException("The device is not registered on the server");
+ }
+ return activeDevice;
+ }
+
+ private void send(HttpServletRequest req, HttpServletResponse resp) throws Exception {
+
+ Command command = JsonConverter.objectFromJson(req.getReader(), new Command());
+ getActiveDevice(command.getDeviceId()).write(command);
+ sendResponse(resp.getWriter(), true);
+ }
+
+ private void raw(HttpServletRequest req, HttpServletResponse resp) throws Exception {
+
+ JsonObject json = Json.createReader(req.getReader()).readObject();
+ long deviceId = json.getJsonNumber("deviceId").longValue();
+ String command = json.getString("command");
+ getActiveDevice(deviceId).write(command);
+ sendResponse(resp.getWriter(), true);
+ }
+}