aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/database/NotificationManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/database/NotificationManager.java')
-rw-r--r--src/org/traccar/database/NotificationManager.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/org/traccar/database/NotificationManager.java b/src/org/traccar/database/NotificationManager.java
new file mode 100644
index 000000000..8c8e958c8
--- /dev/null
+++ b/src/org/traccar/database/NotificationManager.java
@@ -0,0 +1,42 @@
+package org.traccar.database;
+
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Set;
+
+import org.traccar.Context;
+import org.traccar.helper.Log;
+import org.traccar.model.Event;
+import org.traccar.model.Position;
+
+public class NotificationManager {
+
+ private final DataManager dataManager;
+
+ public NotificationManager(DataManager dataManager) {
+ this.dataManager = dataManager;
+ }
+
+ public void updateEvent(Event event, Position position) {
+ try {
+ dataManager.addEvent(event);
+ } catch (SQLException error) {
+ Log.warning(error);
+ }
+
+ Set<Long> users = Context.getPermissionsManager().getDeviceUsers(event.getDeviceId());
+ for (Long userId : users) {
+ if (event.getGeofenceId() == 0
+ || Context.getGeofenceManager().checkGeofence(userId, event.getGeofenceId())) {
+ Context.getConnectionManager().updateEvent(userId, event, position);
+ }
+ }
+ }
+
+ public void updateEvents(Collection<Event> events, Position position) {
+
+ for (Event event : events) {
+ updateEvent(event, position);
+ }
+ }
+}