diff options
author | Abyss777 <abyss@fox5.ru> | 2016-08-24 09:54:21 +0500 |
---|---|---|
committer | Abyss777 <abyss@fox5.ru> | 2016-08-24 09:54:21 +0500 |
commit | 5e8dbc78110ab5e28d1d57277a38dd1991dba0e6 (patch) | |
tree | 0491a9542e632741ce070aae1aa87a4decfeda88 /src | |
parent | ea0bdea88003f46fd6f6164d5c45e33d53f47c81 (diff) | |
download | traccar-server-5e8dbc78110ab5e28d1d57277a38dd1991dba0e6.tar.gz traccar-server-5e8dbc78110ab5e28d1d57277a38dd1991dba0e6.tar.bz2 traccar-server-5e8dbc78110ab5e28d1d57277a38dd1991dba0e6.zip |
- Fixed optional odometer for wondex protocol
- Do not use zero odometer values to calculateDistance
Diffstat (limited to 'src')
-rw-r--r-- | src/org/traccar/protocol/WondexProtocolDecoder.java | 4 | ||||
-rw-r--r-- | src/org/traccar/reports/ReportUtils.java | 14 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/org/traccar/protocol/WondexProtocolDecoder.java b/src/org/traccar/protocol/WondexProtocolDecoder.java index 97426d78c..0fcb99578 100644 --- a/src/org/traccar/protocol/WondexProtocolDecoder.java +++ b/src/org/traccar/protocol/WondexProtocolDecoder.java @@ -115,7 +115,9 @@ public class WondexProtocolDecoder extends BaseProtocolDecoder { position.set(Position.KEY_EVENT, parser.next()); position.set(Position.KEY_BATTERY, parser.next()); - position.set(Position.KEY_ODOMETER, parser.nextDouble() * 1000); + if (parser.hasNext()) { + position.set(Position.KEY_ODOMETER, parser.nextDouble() * 1000); + } position.set(Position.KEY_INPUT, parser.next()); position.set(Position.PREFIX_ADC + 1, parser.next()); position.set(Position.PREFIX_ADC + 2, parser.next()); diff --git a/src/org/traccar/reports/ReportUtils.java b/src/org/traccar/reports/ReportUtils.java index 67d577904..924dff4c1 100644 --- a/src/org/traccar/reports/ReportUtils.java +++ b/src/org/traccar/reports/ReportUtils.java @@ -45,10 +45,16 @@ public final class ReportUtils { public static double calculateDistance(Position firstPosition, Position lastPosition, boolean useOdometer) { double distance = 0.0; - if (useOdometer && firstPosition.getAttributes().containsKey(Position.KEY_ODOMETER) - && lastPosition.getAttributes().containsKey(Position.KEY_ODOMETER)) { - distance = (((Number) lastPosition.getAttributes().get(Position.KEY_ODOMETER)).doubleValue() - - ((Number) firstPosition.getAttributes().get(Position.KEY_ODOMETER)).doubleValue()); + double firstOdometer = 0.0; + double lastOdometer = 0.0; + if (firstPosition.getAttributes().containsKey(Position.KEY_ODOMETER)) { + firstOdometer = ((Number) firstPosition.getAttributes().get(Position.KEY_ODOMETER)).doubleValue(); + } + if (lastPosition.getAttributes().containsKey(Position.KEY_ODOMETER)) { + lastOdometer = ((Number) lastPosition.getAttributes().get(Position.KEY_ODOMETER)).doubleValue(); + } + if (useOdometer && (firstOdometer != 0.0 || lastOdometer != 0.0)) { + distance = lastOdometer - firstOdometer; } else if (firstPosition.getAttributes().containsKey(Position.KEY_TOTAL_DISTANCE) && lastPosition.getAttributes().containsKey(Position.KEY_TOTAL_DISTANCE)) { distance = ((Number) lastPosition.getAttributes().get(Position.KEY_TOTAL_DISTANCE)).doubleValue() |