From 946978e44223beb5b4b202c80dce6319f9a5cc14 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 15 Jul 2015 22:55:09 +1200 Subject: Store extra data in JSON format --- src/org/traccar/model/MiscFormatter.java | 42 ++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) (limited to 'src/org/traccar/model/MiscFormatter.java') 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 other) { + public static Map fromJson(JsonObject json) { + + Map other = new LinkedHashMap<>(); + + for (Map.Entry 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 other) { return toJson(other).toString(); } -- cgit v1.2.3