aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/model
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2015-04-29 13:41:15 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2015-04-29 13:41:15 +1200
commitf7198adaf371e08a72a837d417b29531c117c6ba (patch)
tree853fb51b64cd00aaa6e53d4e510bbf69859e7765 /src/org/traccar/model
parentcb0a3831c2d89a22e9f3b68d3ee17f6e2abdd424 (diff)
downloadtraccar-server-f7198adaf371e08a72a837d417b29531c117c6ba.tar.gz
traccar-server-f7198adaf371e08a72a837d417b29531c117c6ba.tar.bz2
traccar-server-f7198adaf371e08a72a837d417b29531c117c6ba.zip
Store other data in position
Diffstat (limited to 'src/org/traccar/model')
-rw-r--r--src/org/traccar/model/Data.java20
-rw-r--r--src/org/traccar/model/ExtendedInfoFormatter.java93
-rw-r--r--src/org/traccar/model/MiscFormatter.java77
-rw-r--r--src/org/traccar/model/Position.java20
4 files changed, 111 insertions, 99 deletions
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<String, Object> other = new LinkedHashMap<String, Object>();
+ 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<String, Object> data;
-
- public ExtendedInfoFormatter(String protocol) {
- data = new LinkedHashMap<String, Object>();
- 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<String, Object> entry : data.entrySet()) {
-
- result.append("<").append(entry.getKey()).append(">");
- result.append(entry.getValue());
- result.append("</").append(entry.getKey()).append(">");
- }
-
- result.append("</").append(rootNode).append(">");
-
- return result.toString();
- }
-
- private String toJsonString() {
- StringBuilder result = new StringBuilder();
-
- result.append("{");
-
- Iterator<Map.Entry<String, Object> > i = data.entrySet().iterator();
-
- while (i.hasNext()) {
- Map.Entry<String, Object> 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<String, Object> other) {
+ StringBuilder result = new StringBuilder();
+
+ result.append("<").append(xmlRootNode).append(">");
+
+ for (Map.Entry<String, Object> entry : other.entrySet()) {
+
+ result.append("<").append(entry.getKey()).append(">");
+ result.append(entry.getValue());
+ result.append("</").append(entry.getKey()).append(">");
+ }
+
+ result.append("</").append(xmlRootNode).append(">");
+
+ return result.toString();
+ }
+
+ public static JsonObject toJson(Map<String, Object> other) {
+ JsonObjectBuilder json = Json.createObjectBuilder();
+
+ for (Map.Entry<String, Object> 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<String, Object> 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<String, Object> other = new LinkedHashMap<String, Object>();
+ 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"));