diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2015-07-17 14:32:55 +1200 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2015-07-17 14:32:55 +1200 |
commit | b6ba5a8ac60e8013e22ed44b15ffdc5ad8097060 (patch) | |
tree | fc06c28d649537226aee29fbeee042f3a023b5f2 /src/org/traccar/web/CommandsServlet.java | |
parent | 04afe342615995e773d848be68eef40dc9925197 (diff) | |
download | trackermap-server-b6ba5a8ac60e8013e22ed44b15ffdc5ad8097060.tar.gz trackermap-server-b6ba5a8ac60e8013e22ed44b15ffdc5ad8097060.tar.bz2 trackermap-server-b6ba5a8ac60e8013e22ed44b15ffdc5ad8097060.zip |
Rename package from http to web
Diffstat (limited to 'src/org/traccar/web/CommandsServlet.java')
-rw-r--r-- | src/org/traccar/web/CommandsServlet.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/org/traccar/web/CommandsServlet.java b/src/org/traccar/web/CommandsServlet.java new file mode 100644 index 000000000..b12c0fa53 --- /dev/null +++ b/src/org/traccar/web/CommandsServlet.java @@ -0,0 +1,58 @@ +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.command.CommandType; +import org.traccar.command.GpsCommand; +import org.traccar.database.ActiveDevice; + +public class CommandsServlet 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": + sendRawCommand(req, resp); + return true; + default: + return false; + } + } + + private void send(HttpServletRequest req, HttpServletResponse resp) throws Exception { + GpsCommand command = JsonConverter.<GpsCommand>enumObjectFromJson(req.getReader(), new EnumFactory(CommandType.class, "type")); + + String uniqueId = command.getUniqueId(); + + ActiveDevice activeDevice = Context.getConnectionManager().getActiveDevice(uniqueId); + if(activeDevice == null) { + throw new RuntimeException("The device has not yet registered to the server"); + } + + activeDevice.sendCommand(command); + + sendResponse(resp.getWriter(), JsonConverter.objectToJson(new Object())); + } + + private void sendRawCommand(HttpServletRequest req, HttpServletResponse resp) throws Exception { + JsonObject json = Json.createReader(req.getReader()).readObject(); + String uniqueId = json.getString("uniqueId"); + + ActiveDevice activeDevice = Context.getConnectionManager().getActiveDevice(uniqueId); + if(activeDevice == null) { + throw new RuntimeException("The device has not yet registered to the server"); + } + + String command = json.getString("command"); + activeDevice.write(command); + + sendResponse(resp.getWriter(), JsonConverter.objectToJson(new Object())); + } +} |