aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/WebDataHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/WebDataHandler.java')
-rw-r--r--src/org/traccar/WebDataHandler.java57
1 files changed, 52 insertions, 5 deletions
diff --git a/src/org/traccar/WebDataHandler.java b/src/org/traccar/WebDataHandler.java
index c64ca8334..332fc5222 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 {
@@ -46,8 +50,24 @@ public class WebDataHandler extends BaseDataHandler {
double lat = position.getLatitude();
double lon = position.getLongitude();
- f.format("%02d%07.4f,%c,", (int) Math.abs(lat), Math.abs(lat) % 1 * 60, lat < 0 ? 'S' : 'N');
- f.format("%03d%07.4f,%c,", (int) Math.abs(lon), Math.abs(lon) % 1 * 60, lon < 0 ? 'W' : 'E');
+
+ char hemisphere;
+
+ if (lat < 0) {
+ hemisphere = 'S';
+ } else {
+ hemisphere = 'N';
+ }
+
+ f.format("%02d%07.4f,%c,", (int) Math.abs(lat), Math.abs(lat) % 1 * 60, hemisphere);
+
+ if (lon < 0) {
+ hemisphere = 'W';
+ } else {
+ hemisphere = 'E';
+ }
+
+ f.format("%03d%07.4f,%c,", (int) Math.abs(lon), Math.abs(lon) % 1 * 60, hemisphere);
f.format("%.2f,%.2f,", position.getSpeed(), position.getCourse());
f.format("%1$td%1$tm%1$ty,,", calendar);
@@ -73,15 +93,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;