diff options
Diffstat (limited to 'src/org/traccar/events')
-rw-r--r-- | src/org/traccar/events/GeofenceEventHandler.java | 13 | ||||
-rw-r--r-- | src/org/traccar/events/MotionEventHandler.java | 14 | ||||
-rw-r--r-- | src/org/traccar/events/OverspeedEventHandler.java | 11 |
3 files changed, 24 insertions, 14 deletions
diff --git a/src/org/traccar/events/GeofenceEventHandler.java b/src/org/traccar/events/GeofenceEventHandler.java index 7d24c4efe..e9a4a640f 100644 --- a/src/org/traccar/events/GeofenceEventHandler.java +++ b/src/org/traccar/events/GeofenceEventHandler.java @@ -25,6 +25,7 @@ import org.traccar.Context; import org.traccar.database.DataManager; import org.traccar.database.GeofenceManager; import org.traccar.helper.Log; +import org.traccar.model.Device; import org.traccar.model.Event; import org.traccar.model.Position; @@ -42,24 +43,24 @@ public class GeofenceEventHandler extends BaseEventHandler { @Override protected Collection<Event> analyzePosition(Position position) { - if (!isLastPosition() || !position.getValid()) { + Device device = dataManager.getDeviceById(position.getDeviceId()); + if (device == null) { return null; } - - if (getDevice() == null) { + if (position.getId() != device.getPositionId() || !position.getValid()) { return null; } List<Long> currentGeofences = geofenceManager.getCurrentDeviceGeofences(position); List<Long> oldGeofences = new ArrayList<Long>(); - if (getDevice().getGeofenceIds() != null) { - oldGeofences.addAll(getDevice().getGeofenceIds()); + if (device.getGeofenceIds() != null) { + oldGeofences.addAll(device.getGeofenceIds()); } List<Long> newGeofences = new ArrayList<Long>(currentGeofences); newGeofences.removeAll(oldGeofences); oldGeofences.removeAll(currentGeofences); - getDevice().setGeofenceIds(currentGeofences); + device.setGeofenceIds(currentGeofences); Collection<Event> events = new ArrayList<>(); try { diff --git a/src/org/traccar/events/MotionEventHandler.java b/src/org/traccar/events/MotionEventHandler.java index c05bd4843..d10513d26 100644 --- a/src/org/traccar/events/MotionEventHandler.java +++ b/src/org/traccar/events/MotionEventHandler.java @@ -37,17 +37,19 @@ public class MotionEventHandler extends BaseEventHandler { @Override protected Collection<Event> analyzePosition(Position position) { - Collection<Event> result = null; - if (!isLastPosition()) { + + Device device = Context.getDataManager().getDeviceById(position.getDeviceId()); + if (device == null) { + return null; + } + if (position.getId() != device.getPositionId() || !position.getValid()) { return null; } + Collection<Event> result = null; double speed = position.getSpeed(); boolean valid = position.getValid(); - if (getDevice() == null) { - return null; - } - String motion = getDevice().getMotion(); + String motion = device.getMotion(); if (motion == null) { motion = Device.STATUS_STOPPED; } diff --git a/src/org/traccar/events/OverspeedEventHandler.java b/src/org/traccar/events/OverspeedEventHandler.java index f4676b995..e14d4bcea 100644 --- a/src/org/traccar/events/OverspeedEventHandler.java +++ b/src/org/traccar/events/OverspeedEventHandler.java @@ -21,6 +21,7 @@ import java.util.Collection; import org.traccar.BaseEventHandler; import org.traccar.Context; +import org.traccar.model.Device; import org.traccar.model.Event; import org.traccar.model.Position; import org.traccar.helper.Log; @@ -38,10 +39,16 @@ public class OverspeedEventHandler extends BaseEventHandler { @Override protected Collection<Event> analyzePosition(Position position) { - Collection<Event> events = new ArrayList<>(); - if (!isLastPosition()) { + + Device device = Context.getDataManager().getDeviceById(position.getDeviceId()); + if (device == null) { + return null; + } + if (position.getId() != device.getPositionId() || !position.getValid()) { return null; } + + Collection<Event> events = new ArrayList<>(); double speed = position.getSpeed(); boolean valid = position.getValid(); |