diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2015-07-17 16:28:36 +1200 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2015-07-17 16:28:36 +1200 |
commit | 3f6f92cedd969e741e65bb6e14737b98722b214e (patch) | |
tree | 97b19d441bb9f79c73db493d6ad52b2e422ec1ba /src/org/traccar/web/CommandServlet.java | |
parent | b6ba5a8ac60e8013e22ed44b15ffdc5ad8097060 (diff) | |
download | traccar-server-3f6f92cedd969e741e65bb6e14737b98722b214e.tar.gz traccar-server-3f6f92cedd969e741e65bb6e14737b98722b214e.tar.bz2 traccar-server-3f6f92cedd969e741e65bb6e14737b98722b214e.zip |
Start re-factoring commands
Diffstat (limited to 'src/org/traccar/web/CommandServlet.java')
-rw-r--r-- | src/org/traccar/web/CommandServlet.java | 51 |
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); + } +} |