From 2a8c9bd543d22adf86d8fa807f346fec804fc767 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Mon, 2 Nov 2015 17:01:53 +1300 Subject: Extend web data handler --- src/org/traccar/WebDataHandler.java | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/org/traccar/WebDataHandler.java b/src/org/traccar/WebDataHandler.java index c64ca8334..7e8fc1ec4 100644 --- a/src/org/traccar/WebDataHandler.java +++ b/src/org/traccar/WebDataHandler.java @@ -15,14 +15,18 @@ */ package org.traccar; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.Calendar; import java.util.Formatter; import java.util.Locale; import java.util.TimeZone; import org.traccar.helper.Checksum; +import org.traccar.helper.Log; import org.traccar.model.Device; import org.traccar.model.Event; +import org.traccar.model.MiscFormatter; import org.traccar.model.Position; public class WebDataHandler extends BaseDataHandler { @@ -73,15 +77,42 @@ public class WebDataHandler extends BaseDataHandler { Device device = Context.getIdentityManager().getDeviceById(position.getDeviceId()); + String attributes = MiscFormatter.toJsonString(position.getAttributes()); + String request = url .replace("{uniqueId}", device.getUniqueId()) - .replace("{deviceId}", String.valueOf(device.getId())) + .replace("{deviceId}", String.valueOf(position.getDeviceId())) + .replace("{protocol}", String.valueOf(position.getProtocol())) + .replace("{deviceTime}", String.valueOf(position.getDeviceTime().getTime())) .replace("{fixTime}", String.valueOf(position.getFixTime().getTime())) - .replace("{latitude}", String.valueOf(position.getLatitude())) + .replace("{valid}", String.valueOf(position.getLatitude())) + .replace("{latitude}", String.valueOf(position.getValid())) .replace("{longitude}", String.valueOf(position.getLongitude())) - .replace("{gprmc}", formatSentence(position)) + .replace("{altitude}", String.valueOf(position.getAltitude())) + .replace("{speed}", String.valueOf(position.getSpeed())) + .replace("{course}", String.valueOf(position.getCourse())) .replace("{statusCode}", calculateStatus(position)); + if (position.getAddress() != null) { + try { + request = request.replace("{address}", URLEncoder.encode(position.getAddress(), "UTF-8")); + } catch (UnsupportedEncodingException error) { + Log.warning(error); + } + } + + if (request.contains("{attributes}")) { + try { + request = request.replace("{attributes}", URLEncoder.encode(attributes, "UTF-8")); + } catch (UnsupportedEncodingException error) { + Log.warning(error); + } + } + + if (request.contains("{gprmc}")) { + request = request.replace("{gprmc}", formatSentence(position)); + } + Context.getAsyncHttpClient().prepareGet(request).execute(); return position; -- cgit v1.2.3