aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/events/GeofenceEventHandler.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-12-16 00:28:26 +1300
committerGitHub <noreply@github.com>2016-12-16 00:28:26 +1300
commit835853422ce9f1c1fde15a6464c6f0f7eda4fed7 (patch)
tree049fa09050caec98242a0f642d478a533cee5898 /src/org/traccar/events/GeofenceEventHandler.java
parentf76c78a68f249ddb45a2bbae11dd95dd6db743b6 (diff)
parentef9148eea8dd404aba5707898f244a4b7bc26feb (diff)
downloadtraccar-server-835853422ce9f1c1fde15a6464c6f0f7eda4fed7.tar.gz
traccar-server-835853422ce9f1c1fde15a6464c6f0f7eda4fed7.tar.bz2
traccar-server-835853422ce9f1c1fde15a6464c6f0f7eda4fed7.zip
Merge pull request #2686 from Abyss777/calendars
Calendars implementation
Diffstat (limited to 'src/org/traccar/events/GeofenceEventHandler.java')
-rw-r--r--src/org/traccar/events/GeofenceEventHandler.java20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/org/traccar/events/GeofenceEventHandler.java b/src/org/traccar/events/GeofenceEventHandler.java
index d31e516ef..fbec932b1 100644
--- a/src/org/traccar/events/GeofenceEventHandler.java
+++ b/src/org/traccar/events/GeofenceEventHandler.java
@@ -57,14 +57,22 @@ public class GeofenceEventHandler extends BaseEventHandler {
Collection<Event> events = new ArrayList<>();
for (long geofenceId : newGeofences) {
- Event event = new Event(Event.TYPE_GEOFENCE_ENTER, position.getDeviceId(), position.getId());
- event.setGeofenceId(geofenceId);
- events.add(event);
+ long calendarId = geofenceManager.getGeofence(geofenceId).getCalendarId();
+ if (calendarId == 0 || Context.getCalendarManager().getCalendar(calendarId) == null
+ || Context.getCalendarManager().getCalendar(calendarId).checkMoment(position.getFixTime())) {
+ Event event = new Event(Event.TYPE_GEOFENCE_ENTER, position.getDeviceId(), position.getId());
+ event.setGeofenceId(geofenceId);
+ events.add(event);
+ }
}
for (long geofenceId : oldGeofences) {
- Event event = new Event(Event.TYPE_GEOFENCE_EXIT, position.getDeviceId(), position.getId());
- event.setGeofenceId(geofenceId);
- events.add(event);
+ long calendarId = geofenceManager.getGeofence(geofenceId).getCalendarId();
+ if (calendarId == 0 || Context.getCalendarManager().getCalendar(calendarId) == null
+ || Context.getCalendarManager().getCalendar(calendarId).checkMoment(position.getFixTime())) {
+ Event event = new Event(Event.TYPE_GEOFENCE_EXIT, position.getDeviceId(), position.getId());
+ event.setGeofenceId(geofenceId);
+ events.add(event);
+ }
}
return events;
}