From f7198adaf371e08a72a837d417b29531c117c6ba Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 29 Apr 2015 13:41:15 +1200 Subject: Store other data in position --- src/org/traccar/model/Data.java | 20 ++++- src/org/traccar/model/ExtendedInfoFormatter.java | 93 ------------------------ src/org/traccar/model/MiscFormatter.java | 77 ++++++++++++++++++++ src/org/traccar/model/Position.java | 20 ++++- 4 files changed, 111 insertions(+), 99 deletions(-) delete mode 100644 src/org/traccar/model/ExtendedInfoFormatter.java create mode 100644 src/org/traccar/model/MiscFormatter.java (limited to 'src/org/traccar/model') diff --git a/src/org/traccar/model/Data.java b/src/org/traccar/model/Data.java index e329e6c1e..c88c31417 100644 --- a/src/org/traccar/model/Data.java +++ b/src/org/traccar/model/Data.java @@ -18,6 +18,8 @@ package org.traccar.model; import java.sql.ResultSet; import java.text.ParseException; import java.util.Date; +import java.util.LinkedHashMap; +import java.util.Map; import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -30,6 +32,10 @@ public class Data implements Convertable { public long getId() { return id; } public void setId(long id) { this.id = id; } + private String protocol; + public String getProtocol() { return protocol; } + public void setProtocol(String protocol) { this.protocol = protocol; } + private long deviceId; public long getDeviceId() { return deviceId; } public void setDeviceId(long deviceId) { this.deviceId = deviceId; } @@ -42,14 +48,21 @@ public class Data implements Convertable { public Date getDeviceTime() { return deviceTime; } public void setDeviceTime(Date deviceTime) { this.deviceTime = deviceTime; } - private String extendedInfo; - public String getExtendedInfo() { return extendedInfo; } - public void setExtendedInfo(String extendedInfo) { this.extendedInfo = extendedInfo; } + private final Map 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); + } @Override public JsonObject toJson() { JsonObjectBuilder json = Json.createObjectBuilder(); json.add("id", id); + json.add("protocol", protocol); json.add("deviceId", deviceId); json.add("serverTime", ObjectConverter.dateFormat.format(serverTime)); json.add("deviceTime", ObjectConverter.dateFormat.format(deviceTime)); @@ -60,6 +73,7 @@ public class Data implements Convertable { @Override public void fromJson(JsonObject json) throws ParseException { id = json.getJsonNumber("id").longValue(); + protocol = json.getString("protocol"); deviceId = json.getJsonNumber("deviceId").longValue(); serverTime = ObjectConverter.dateFormat.parse(json.getString("serverTime")); deviceTime = ObjectConverter.dateFormat.parse(json.getString("deviceTime")); diff --git a/src/org/traccar/model/ExtendedInfoFormatter.java b/src/org/traccar/model/ExtendedInfoFormatter.java deleted file mode 100644 index e7e0dead0..000000000 --- a/src/org/traccar/model/ExtendedInfoFormatter.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2013 - 2014 Anton Tananaev (anton.tananaev@gmail.com) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.traccar.model; - -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * Format extended tracker status - */ -public class ExtendedInfoFormatter { - - private static final String rootNode = "info"; - - private final Map data; - - public ExtendedInfoFormatter(String protocol) { - data = new LinkedHashMap(); - data.put("protocol", protocol); - } - - public void set(String key, Object value) { - if (value != null) { - // Exclude empty strings - if ((value instanceof String) && ((String) value).isEmpty()) { - return; - } - - data.put(key, value); - } - } - - private String toXmlString() { - StringBuilder result = new StringBuilder(); - - result.append("<").append(rootNode).append(">"); - - for (Map.Entry entry : data.entrySet()) { - - result.append("<").append(entry.getKey()).append(">"); - result.append(entry.getValue()); - result.append(""); - } - - result.append(""); - - return result.toString(); - } - - private String toJsonString() { - StringBuilder result = new StringBuilder(); - - result.append("{"); - - Iterator > i = data.entrySet().iterator(); - - while (i.hasNext()) { - Map.Entry entry = i.next(); - - result.append('"').append(entry.getKey()).append('"'); - result.append(':'); - result.append('"').append(entry.getValue()).append('"'); - - if (i.hasNext()) { - result.append(','); - } - } - - result.append("}"); - - return result.toString(); - } - - @Override - public String toString() { - return toXmlString(); - } - -} diff --git a/src/org/traccar/model/MiscFormatter.java b/src/org/traccar/model/MiscFormatter.java new file mode 100644 index 000000000..4a04e5181 --- /dev/null +++ b/src/org/traccar/model/MiscFormatter.java @@ -0,0 +1,77 @@ +/* + * Copyright 2013 - 2014 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.traccar.model; + +import org.traccar.helper.Log; + +import javax.json.Json; +import javax.json.JsonObject; +import javax.json.JsonObjectBuilder; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Format extended tracker status + */ +public class MiscFormatter { + + private static final String xmlRootNode = "info"; + + public static String toXmlString(Map other) { + StringBuilder result = new StringBuilder(); + + result.append("<").append(xmlRootNode).append(">"); + + for (Map.Entry entry : other.entrySet()) { + + result.append("<").append(entry.getKey()).append(">"); + result.append(entry.getValue()); + result.append(""); + } + + result.append(""); + + return result.toString(); + } + + public static JsonObject toJson(Map other) { + JsonObjectBuilder json = Json.createObjectBuilder(); + + for (Map.Entry entry : other.entrySet()) { + if (entry.getValue() instanceof String) { + json.add(entry.getKey(), (String) entry.getValue()); + } else if (entry.getValue() instanceof Integer) { + json.add(entry.getKey(), (Integer) entry.getValue()); + } else if (entry.getValue() instanceof Long) { + json.add(entry.getKey(), (Long) entry.getValue()); + } else if (entry.getValue() instanceof Double) { + json.add(entry.getKey(), (Double) entry.getValue()); + } else if (entry.getValue() instanceof Boolean) { + json.add(entry.getKey(), (Boolean) entry.getValue()); + } else { + Log.warning("Unknown type of data"); + } + } + + return json.build(); + } + + private static String toJsonString(Map other) { + return toJson(other).toString(); + } + +} diff --git a/src/org/traccar/model/Position.java b/src/org/traccar/model/Position.java index 92d5bbe5e..bfee94c1b 100644 --- a/src/org/traccar/model/Position.java +++ b/src/org/traccar/model/Position.java @@ -18,6 +18,8 @@ package org.traccar.model; import java.sql.ResultSet; import java.text.ParseException; import java.util.Date; +import java.util.LinkedHashMap; +import java.util.Map; import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; @@ -30,6 +32,10 @@ public class Position implements Convertable { public long getId() { return id; } public void setId(long id) { this.id = id; } + private String protocol; + public String getProtocol() { return protocol; } + public void setProtocol(String protocol) { this.protocol = protocol; } + private long deviceId; public long getDeviceId() { return deviceId; } public void setDeviceId(long deviceId) { this.deviceId = deviceId; } @@ -79,14 +85,21 @@ public class Position implements Convertable { public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } - private String extendedInfo; - public String getExtendedInfo() { return extendedInfo; } - public void setExtendedInfo(String extendedInfo) { this.extendedInfo = extendedInfo; } + private final Map 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); + } @Override public JsonObject toJson() { JsonObjectBuilder json = Json.createObjectBuilder(); json.add("id", id); + json.add("protocol", protocol); json.add("deviceId", deviceId); json.add("serverTime", ObjectConverter.dateFormat.format(serverTime)); json.add("deviceTime", ObjectConverter.dateFormat.format(deviceTime)); @@ -105,6 +118,7 @@ public class Position implements Convertable { @Override public void fromJson(JsonObject json) throws ParseException { id = json.getJsonNumber("id").longValue(); + protocol = json.getString("protocol"); deviceId = json.getJsonNumber("deviceId").longValue(); serverTime = ObjectConverter.dateFormat.parse(json.getString("serverTime")); deviceTime = ObjectConverter.dateFormat.parse(json.getString("deviceTime")); -- cgit v1.2.3