diff options
Diffstat (limited to 'src/org/traccar/model')
-rw-r--r-- | src/org/traccar/model/Event.java | 7 | ||||
-rw-r--r-- | src/org/traccar/model/MiscFormatter.java | 42 |
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(); } |