diff options
author | Kevin Goos <kevingoos@telenet.be> | 2018-03-16 13:35:11 +0100 |
---|---|---|
committer | Kevin Goos <kevingoos@telenet.be> | 2018-03-16 13:35:11 +0100 |
commit | 3b7c9c56e198ce213d3e113a2fbc4148b5d85558 (patch) | |
tree | a04b64fc484c6832b8f023412db020e3e5e9a657 /src/org/traccar/events/AlertEventHandler.java | |
parent | b34cf25b5ac1f178d783a512d3b95faed4bdb010 (diff) | |
parent | 25a36fe2fb8045e455de5e936c286c4db8b40563 (diff) | |
download | trackermap-server-3b7c9c56e198ce213d3e113a2fbc4148b5d85558.tar.gz trackermap-server-3b7c9c56e198ce213d3e113a2fbc4148b5d85558.tar.bz2 trackermap-server-3b7c9c56e198ce213d3e113a2fbc4148b5d85558.zip |
Merge branch 'master' of https://github.com/kevingoos/traccar
Diffstat (limited to 'src/org/traccar/events/AlertEventHandler.java')
-rw-r--r-- | src/org/traccar/events/AlertEventHandler.java | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/org/traccar/events/AlertEventHandler.java b/src/org/traccar/events/AlertEventHandler.java index 003ccb662..7db371c70 100644 --- a/src/org/traccar/events/AlertEventHandler.java +++ b/src/org/traccar/events/AlertEventHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 Anton Tananaev (anton@traccar.org) + * Copyright 2016 - 2018 Anton Tananaev (anton@traccar.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,18 +19,34 @@ import java.util.Collections; import java.util.Map; import org.traccar.BaseEventHandler; +import org.traccar.Context; import org.traccar.model.Event; import org.traccar.model.Position; public class AlertEventHandler extends BaseEventHandler { + private final boolean ignoreDuplicateAlerts; + + public AlertEventHandler() { + ignoreDuplicateAlerts = Context.getConfig().getBoolean("event.ignoreDuplicateAlerts"); + } + @Override protected Map<Event, Position> analyzePosition(Position position) { Object alarm = position.getAttributes().get(Position.KEY_ALARM); if (alarm != null) { - Event event = new Event(Event.TYPE_ALARM, position.getDeviceId(), position.getId()); - event.set(Position.KEY_ALARM, (String) alarm); - return Collections.singletonMap(event, position); + boolean ignoreAlert = false; + if (ignoreDuplicateAlerts) { + Position lastPosition = Context.getIdentityManager().getLastPosition(position.getDeviceId()); + if (lastPosition != null && alarm.equals(lastPosition.getAttributes().get(Position.KEY_ALARM))) { + ignoreAlert = true; + } + } + if (!ignoreAlert) { + Event event = new Event(Event.TYPE_ALARM, position.getDeviceId(), position.getId()); + event.set(Position.KEY_ALARM, (String) alarm); + return Collections.singletonMap(event, position); + } } return null; } |