diff options
-rw-r--r-- | src/main/java/org/traccar/protocol/WialonProtocolDecoder.java | 18 | ||||
-rw-r--r-- | src/test/java/org/traccar/protocol/WialonProtocolDecoderTest.java | 6 |
2 files changed, 4 insertions, 20 deletions
diff --git a/src/main/java/org/traccar/protocol/WialonProtocolDecoder.java b/src/main/java/org/traccar/protocol/WialonProtocolDecoder.java index b319a5947..ffa4472ef 100644 --- a/src/main/java/org/traccar/protocol/WialonProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/WialonProtocolDecoder.java @@ -135,27 +135,13 @@ public class WialonProtocolDecoder extends BaseProtocolDecoder { for (String param : values) { Matcher paramParser = Pattern.compile("(.*):[1-3]:(.*)").matcher(param); if (paramParser.matches()) { - // Parsing gives a (string,string) key-value pair String key = paramParser.group(1).toLowerCase(); String value = paramParser.group(2); - - // Key is already in correct type (string) - - // If we can parse the value as a double, then we use that as the value's type. - // This covers both integer (x:1:y) and double (x:2:y) types in the Wialon protocol - - // If not, value type is a string unless it is equal to some specific cases - // (true, false), in which case we convert into a boolean - try { - double doubleValue = Double.parseDouble(value); - - // Since accuracy is not part of the general parameter list, - // we need to handle it separately by calling setAccuracy directly if (key.equals("accuracy")) { - position.setAccuracy(doubleValue); + position.setAccuracy(Double.parseDouble(value)); } else { - position.set(key, doubleValue); + position.set(key, Double.parseDouble(value)); } } catch (NumberFormatException e) { if (value.equalsIgnoreCase("true")) { diff --git a/src/test/java/org/traccar/protocol/WialonProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/WialonProtocolDecoderTest.java index 0a47edcb4..29a86e0ac 100644 --- a/src/test/java/org/traccar/protocol/WialonProtocolDecoderTest.java +++ b/src/test/java/org/traccar/protocol/WialonProtocolDecoderTest.java @@ -1,11 +1,8 @@ package org.traccar.protocol; -import org.traccar.model.Position; import org.junit.Test; import org.traccar.ProtocolTest; -import static org.junit.Assert.assertEquals; - public class WialonProtocolDecoderTest extends ProtocolTest { @Test @@ -79,7 +76,8 @@ public class WialonProtocolDecoderTest extends ProtocolTest { "#B#110315;045857;5364.0167;N;06127.8262;E;0;155;965;7;2.40;4;0;14.77,0.02,3.6;AB45DF01145;")); verifyAttribute(decoder, text( - "#D#120319;112003;NA;NA;NA;NA;0.000;NA;NA;0;NA;NA;NA;NA;NA;motion:3:false"), "motion", false); + "#D#120319;112003;NA;NA;NA;NA;0.000;NA;NA;0;NA;NA;NA;NA;NA;motion:3:false"), + "motion", false); } } |