aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/model
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2015-07-15 22:55:09 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2015-07-15 22:55:09 +1200
commit946978e44223beb5b4b202c80dce6319f9a5cc14 (patch)
treef7f006121e3f4186dd0fbb3b9e8695cbd5826cf2 /src/org/traccar/model
parentfd8ac5fd906b398f86ecd04820fedb86b8e39a9a (diff)
downloadtrackermap-server-946978e44223beb5b4b202c80dce6319f9a5cc14.tar.gz
trackermap-server-946978e44223beb5b4b202c80dce6319f9a5cc14.tar.bz2
trackermap-server-946978e44223beb5b4b202c80dce6319f9a5cc14.zip
Store extra data in JSON format
Diffstat (limited to 'src/org/traccar/model')
-rw-r--r--src/org/traccar/model/Event.java7
-rw-r--r--src/org/traccar/model/MiscFormatter.java42
2 files changed, 40 insertions, 9 deletions
diff --git a/src/org/traccar/model/Event.java b/src/org/traccar/model/Event.java
index 71348ef8b..0768ec9f3 100644
--- a/src/org/traccar/model/Event.java
+++ b/src/org/traccar/model/Event.java
@@ -41,15 +41,14 @@ public abstract class Event {
public Date getDeviceTime() { return deviceTime; }
public void setDeviceTime(Date deviceTime) { this.deviceTime = deviceTime; }
- private final Map<String, Object> other = new LinkedHashMap<>();
+ private Map<String, Object> other = new LinkedHashMap<>();
public void set(String key, Object value) {
if (value != null && (!(value instanceof String) || !((String) value).isEmpty())) {
other.put(key, value);
}
}
- public String getOther() {
- return MiscFormatter.toXmlString(other);
- }
+ public void setOther(Map<String, Object> other) { this.other = other; }
+ public Map<String, Object> getOther() { return other; }
public static final String KEY_INDEX = "index";
public static final String KEY_HDOP = "hdop";
diff --git a/src/org/traccar/model/MiscFormatter.java b/src/org/traccar/model/MiscFormatter.java
index e0e7d11e8..a866f3ec7 100644
--- a/src/org/traccar/model/MiscFormatter.java
+++ b/src/org/traccar/model/MiscFormatter.java
@@ -15,13 +15,16 @@
*/
package org.traccar.model;
-import org.traccar.helper.Log;
-
+import java.text.DecimalFormat;
+import java.util.LinkedHashMap;
+import java.util.Map;
import javax.json.Json;
+import javax.json.JsonNumber;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
-import java.text.DecimalFormat;
-import java.util.Map;
+import javax.json.JsonString;
+import javax.json.JsonValue;
+import org.traccar.helper.Log;
/**
* Format extended tracker status
@@ -79,7 +82,36 @@ public class MiscFormatter {
return json.build();
}
- private static String toJsonString(Map<String, Object> other) {
+ public static Map<String, Object> fromJson(JsonObject json) {
+
+ Map<String, Object> other = new LinkedHashMap<>();
+
+ for (Map.Entry<String, JsonValue> entry : json.entrySet()) {
+ switch (entry.getValue().getValueType()) {
+ case STRING:
+ other.put(entry.getKey(), ((JsonString) entry.getValue()).getString());
+ break;
+ case NUMBER:
+ JsonNumber number = (JsonNumber) entry.getValue();
+ if (number.isIntegral()) {
+ other.put(entry.getKey(), number.longValue());
+ } else {
+ other.put(entry.getKey(), number.doubleValue());
+ }
+ break;
+ case TRUE:
+ other.put(entry.getKey(), true);
+ break;
+ case FALSE:
+ other.put(entry.getKey(), false);
+ break;
+ }
+ }
+
+ return other;
+ }
+
+ public static String toJsonString(Map<String, Object> other) {
return toJson(other).toString();
}