From d2f79ef95411e7be309eb7e0fc6a0ec1b2227a7d Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 4 Oct 2014 13:43:06 +1300 Subject: Add filtering time limit --- src/org/traccar/FilterHandler.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/org/traccar/FilterHandler.java') diff --git a/src/org/traccar/FilterHandler.java b/src/org/traccar/FilterHandler.java index 18ae2ecae..5298f1d7f 100644 --- a/src/org/traccar/FilterHandler.java +++ b/src/org/traccar/FilterHandler.java @@ -33,6 +33,7 @@ public class FilterHandler extends OneToOneDecoder { private boolean filterZero; private boolean filterDuplicate; private int filterDistance; + private long filterLimit; private final Map lastPositions = new HashMap(); @@ -50,6 +51,9 @@ public class FilterHandler extends OneToOneDecoder { value = properties.getProperty("filter.distance"); if (value != null) filterDistance = Integer.valueOf(value); + + value = properties.getProperty("filter.limit"); + if (value != null) filterLimit = Long.valueOf(value) * 1000; } private boolean filterInvalid(Position position) { @@ -91,6 +95,19 @@ public class FilterHandler extends OneToOneDecoder { } } + private boolean filterLimit(Position position) { + if (filterLimit != 0) { + Position last = lastPositions.get(position.getDeviceId()); + if (last != null) { + return (position.getTime().getTime() - last.getTime().getTime()) > filterLimit; + } else { + return false; + } + } else { + return false; + } + } + private boolean filter(Position p) { boolean result = @@ -99,6 +116,10 @@ public class FilterHandler extends OneToOneDecoder { filterDuplicate(p) || filterDistance(p); + if (filterLimit(p)) { + result = false; + } + if (!result) { lastPositions.put(p.getDeviceId(), p); } else { -- cgit v1.2.3