aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/events/MotionEventHandler.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2017-08-17 17:12:44 +1200
committerGitHub <noreply@github.com>2017-08-17 17:12:44 +1200
commit9e9f97ac34d882594e3d23e959775ce765447787 (patch)
tree775ad2a42ebba160d1e36be38c59384cd1da5a1e /src/org/traccar/events/MotionEventHandler.java
parente8739edc4e2b3a945c2b0eeec6286f7ef59037cf (diff)
parent1324c00d0ece6e20545fb75f7775a2c6cee2a391 (diff)
downloadtrackermap-server-9e9f97ac34d882594e3d23e959775ce765447787.tar.gz
trackermap-server-9e9f97ac34d882594e3d23e959775ce765447787.tar.bz2
trackermap-server-9e9f97ac34d882594e3d23e959775ce765447787.zip
Merge pull request #3449 from Abyss777/load_position
Map correct position to delayed event notification
Diffstat (limited to 'src/org/traccar/events/MotionEventHandler.java')
-rw-r--r--src/org/traccar/events/MotionEventHandler.java29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/org/traccar/events/MotionEventHandler.java b/src/org/traccar/events/MotionEventHandler.java
index b96898fc1..ae64c10ea 100644
--- a/src/org/traccar/events/MotionEventHandler.java
+++ b/src/org/traccar/events/MotionEventHandler.java
@@ -16,8 +16,8 @@
*/
package org.traccar.events;
-import java.util.Collection;
import java.util.Collections;
+import java.util.Map;
import org.traccar.BaseEventHandler;
import org.traccar.Context;
@@ -36,17 +36,17 @@ public class MotionEventHandler extends BaseEventHandler {
this.tripsConfig = tripsConfig;
}
- private Event newEvent(DeviceState deviceState, boolean newMotion) {
+ private Map<Event, Position> newEvent(DeviceState deviceState, boolean newMotion) {
String eventType = newMotion ? Event.TYPE_DEVICE_MOVING : Event.TYPE_DEVICE_STOPPED;
- Event event = new Event(eventType, deviceState.getMotionPosition().getDeviceId(),
- deviceState.getMotionPosition().getId());
+ Position position = deviceState.getMotionPosition();
+ Event event = new Event(eventType, position.getDeviceId(), position.getId());
deviceState.setMotionState(newMotion);
deviceState.setMotionPosition(null);
- return event;
+ return Collections.singletonMap(event, position);
}
- public Event updateMotionState(DeviceState deviceState) {
- Event result = null;
+ public Map<Event, Position> updateMotionState(DeviceState deviceState) {
+ Map<Event, Position> result = null;
if (deviceState.getMotionState() != null && deviceState.getMotionPosition() != null) {
boolean newMotion = !deviceState.getMotionState();
Position motionPosition = deviceState.getMotionPosition();
@@ -60,12 +60,12 @@ public class MotionEventHandler extends BaseEventHandler {
return result;
}
- public Event updateMotionState(DeviceState deviceState, Position position) {
+ public Map<Event, Position> updateMotionState(DeviceState deviceState, Position position) {
return updateMotionState(deviceState, position, position.getBoolean(Position.KEY_MOTION));
}
- public Event updateMotionState(DeviceState deviceState, Position position, boolean newMotion) {
- Event result = null;
+ public Map<Event, Position> updateMotionState(DeviceState deviceState, Position position, boolean newMotion) {
+ Map<Event, Position> result = null;
Boolean oldMotion = deviceState.getMotionState();
long currentTime = position.getFixTime().getTime();
@@ -102,7 +102,7 @@ public class MotionEventHandler extends BaseEventHandler {
}
@Override
- protected Collection<Event> analyzePosition(Position position) {
+ protected Map<Event, Position> analyzePosition(Position position) {
long deviceId = position.getDeviceId();
Device device = Context.getIdentityManager().getById(deviceId);
@@ -113,7 +113,7 @@ public class MotionEventHandler extends BaseEventHandler {
return null;
}
- Event result = null;
+ Map<Event, Position> result = null;
DeviceState deviceState = Context.getDeviceManager().getDeviceState(deviceId);
if (deviceState.getMotionState() == null) {
@@ -122,10 +122,7 @@ public class MotionEventHandler extends BaseEventHandler {
result = updateMotionState(deviceState, position);
}
Context.getDeviceManager().setDeviceState(deviceId, deviceState);
- if (result != null) {
- return Collections.singleton(result);
- }
- return null;
+ return result;
}
}