aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/FilterHandler.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2015-11-19 11:03:34 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2015-11-19 11:03:34 +1300
commit69270993f48c3ecb5d7b00e386fd67722448e8b5 (patch)
tree323f95805830bf58b402b03ac2fb3f28e7eb12aa /src/org/traccar/FilterHandler.java
parentff731f55ca109872dc7a73ff8cf87adef9787ea0 (diff)
downloadtrackermap-server-69270993f48c3ecb5d7b00e386fd67722448e8b5.tar.gz
trackermap-server-69270993f48c3ecb5d7b00e386fd67722448e8b5.tar.bz2
trackermap-server-69270993f48c3ecb5d7b00e386fd67722448e8b5.zip
Add approximate location filtering
Diffstat (limited to 'src/org/traccar/FilterHandler.java')
-rw-r--r--src/org/traccar/FilterHandler.java17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/org/traccar/FilterHandler.java b/src/org/traccar/FilterHandler.java
index 79f40c979..75f2bfd2c 100644
--- a/src/org/traccar/FilterHandler.java
+++ b/src/org/traccar/FilterHandler.java
@@ -17,6 +17,7 @@ package org.traccar;
import org.traccar.helper.DistanceCalculator;
import org.traccar.helper.Log;
+import org.traccar.model.Event;
import org.traccar.model.Position;
public class FilterHandler extends BaseDataHandler {
@@ -27,18 +28,20 @@ public class FilterHandler extends BaseDataHandler {
private final boolean filterZero;
private final boolean filterDuplicate;
private final boolean filterFuture;
+ private final boolean filterApproximate;
private final int filterDistance;
private final long filterLimit;
public FilterHandler(
- boolean filterInvalid, boolean filterZero, boolean filterDuplicate,
- boolean filterFuture, int filterDistance, long filterLimit) {
+ boolean filterInvalid, boolean filterZero, boolean filterDuplicate, boolean filterFuture,
+ boolean filterApproximate, int filterDistance, long filterLimit) {
this.filterInvalid = filterInvalid;
this.filterZero = filterZero;
this.filterDuplicate = filterDuplicate;
this.filterDistance = filterDistance;
this.filterFuture = filterFuture;
+ this.filterApproximate = filterApproximate;
this.filterLimit = filterLimit;
}
@@ -49,6 +52,7 @@ public class FilterHandler extends BaseDataHandler {
filterZero = config.getBoolean("filter.zero");
filterDuplicate = config.getBoolean("filter.duplicate");
filterFuture = config.getBoolean("filter.future");
+ filterApproximate = config.getBoolean("filter.approximate");
filterDistance = config.getInteger("filter.distance");
filterLimit = config.getLong("filter.limit") * 1000;
}
@@ -85,6 +89,11 @@ public class FilterHandler extends BaseDataHandler {
return filterFuture && position.getFixTime().getTime() > System.currentTimeMillis() + FILTER_FUTURE_LIMIT;
}
+ private boolean filterApproximate(Position position) {
+ Boolean approximate = (Boolean) position.getAttributes().get(Event.KEY_APPROXIMATE);
+ return filterApproximate && approximate != null && approximate;
+ }
+
private boolean filterDistance(Position position) {
if (filterDistance != 0) {
Position last = getLastPosition(position.getDeviceId());
@@ -116,8 +125,8 @@ public class FilterHandler extends BaseDataHandler {
private boolean filter(Position p) {
- boolean result = filterInvalid(p) || filterZero(p)
- || filterDuplicate(p) || filterFuture(p) || filterDistance(p);
+ boolean result = filterInvalid(p) || filterZero(p) || filterDuplicate(p)
+ || filterFuture(p) || filterApproximate(p) || filterDistance(p);
if (filterLimit(p)) {
result = false;