aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/org/traccar/reports/ReportUtils.java15
-rw-r--r--src/org/traccar/reports/model/BaseReport.java5
-rw-r--r--test/org/traccar/reports/ReportUtilsTest.java4
3 files changed, 10 insertions, 14 deletions
diff --git a/src/org/traccar/reports/ReportUtils.java b/src/org/traccar/reports/ReportUtils.java
index baa799e90..34f04ac87 100644
--- a/src/org/traccar/reports/ReportUtils.java
+++ b/src/org/traccar/reports/ReportUtils.java
@@ -44,19 +44,18 @@ public final class ReportUtils {
}
public static double calculateDistance(Position firstPosition, Position lastPosition, boolean useOdometer) {
- BigDecimal distance = new BigDecimal("0.0");
+ double distance = 0.0;
if (useOdometer && firstPosition.getAttributes().containsKey(Position.KEY_ODOMETER)
&& lastPosition.getAttributes().containsKey(Position.KEY_ODOMETER)) {
- distance = new BigDecimal(lastPosition.getAttributes().get(Position.KEY_ODOMETER).toString())
- .subtract(new BigDecimal(firstPosition.getAttributes().get(Position.KEY_ODOMETER).toString()))
- .multiply(new BigDecimal(1000));
+ distance = (((Number) lastPosition.getAttributes().get(Position.KEY_ODOMETER)).doubleValue()
+ - ((Number) firstPosition.getAttributes().get(Position.KEY_ODOMETER)).doubleValue())
+ * 1000;
} else if (firstPosition.getAttributes().containsKey(Position.KEY_TOTAL_DISTANCE)
&& lastPosition.getAttributes().containsKey(Position.KEY_TOTAL_DISTANCE)) {
- distance = new BigDecimal(lastPosition.getAttributes().get(Position.KEY_TOTAL_DISTANCE).toString())
- .subtract(new BigDecimal(firstPosition.getAttributes().get(Position.KEY_TOTAL_DISTANCE)
- .toString()));
+ distance = ((Number) lastPosition.getAttributes().get(Position.KEY_TOTAL_DISTANCE)).doubleValue()
+ - ((Number) firstPosition.getAttributes().get(Position.KEY_TOTAL_DISTANCE)).doubleValue();
}
- return distance.setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+ return distance;
}
public static String calculateFuel(Position firstPosition, Position lastPosition) {
diff --git a/src/org/traccar/reports/model/BaseReport.java b/src/org/traccar/reports/model/BaseReport.java
index 8c5807c9b..246cdede0 100644
--- a/src/org/traccar/reports/model/BaseReport.java
+++ b/src/org/traccar/reports/model/BaseReport.java
@@ -16,9 +16,6 @@
*/
package org.traccar.reports.model;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-
public class BaseReport {
private long deviceId;
@@ -54,7 +51,7 @@ public class BaseReport {
return averageSpeed;
}
public void setAverageSpeed(Double averageSpeed) {
- this.averageSpeed = new BigDecimal(averageSpeed.toString()).setScale(3, RoundingMode.HALF_EVEN).doubleValue();
+ this.averageSpeed = averageSpeed;
}
private double maxSpeed; // knots
diff --git a/test/org/traccar/reports/ReportUtilsTest.java b/test/org/traccar/reports/ReportUtilsTest.java
index 80b0f6287..2e01505db 100644
--- a/test/org/traccar/reports/ReportUtilsTest.java
+++ b/test/org/traccar/reports/ReportUtilsTest.java
@@ -9,9 +9,9 @@ public class ReportUtilsTest {
@Test
public void testCalculateDistance() {
Position startPosition = new Position();
- startPosition.set(Position.KEY_TOTAL_DISTANCE, 500);
+ startPosition.set(Position.KEY_TOTAL_DISTANCE, 500.0);
Position endPosition = new Position();
- endPosition.set(Position.KEY_TOTAL_DISTANCE, 700);
+ endPosition.set(Position.KEY_TOTAL_DISTANCE, 700.0);
Assert.assertEquals(ReportUtils.calculateDistance(startPosition, endPosition), 200.0, 10);
startPosition.set(Position.KEY_ODOMETER, 50000);
endPosition.set(Position.KEY_ODOMETER, 50001);