aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/notification
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/notification')
-rw-r--r--src/org/traccar/notification/EventForwarder.java4
-rw-r--r--src/org/traccar/notification/NotificationFormatter.java15
-rw-r--r--src/org/traccar/notification/NotificationMail.java19
-rw-r--r--src/org/traccar/notification/PropertiesProvider.java23
4 files changed, 42 insertions, 19 deletions
diff --git a/src/org/traccar/notification/EventForwarder.java b/src/org/traccar/notification/EventForwarder.java
index bd7cfc0c5..ac37f980c 100644
--- a/src/org/traccar/notification/EventForwarder.java
+++ b/src/org/traccar/notification/EventForwarder.java
@@ -69,13 +69,13 @@ public final class EventForwarder {
data.put(KEY_POSITION, position);
}
if (event.getDeviceId() != 0) {
- Device device = Context.getIdentityManager().getDeviceById(event.getDeviceId());
+ Device device = Context.getIdentityManager().getById(event.getDeviceId());
if (device != null) {
data.put(KEY_DEVICE, device);
}
}
if (event.getGeofenceId() != 0) {
- Geofence geofence = Context.getGeofenceManager().getGeofence(event.getGeofenceId());
+ Geofence geofence = (Geofence) Context.getGeofenceManager().getById(event.getGeofenceId());
if (geofence != null) {
data.put(KEY_GEOFENCE, geofence);
}
diff --git a/src/org/traccar/notification/NotificationFormatter.java b/src/org/traccar/notification/NotificationFormatter.java
index 96337ecaa..8da819430 100644
--- a/src/org/traccar/notification/NotificationFormatter.java
+++ b/src/org/traccar/notification/NotificationFormatter.java
@@ -30,6 +30,7 @@ import org.traccar.helper.Log;
import org.traccar.model.Device;
import org.traccar.model.Event;
import org.traccar.model.Position;
+import org.traccar.model.User;
import org.traccar.reports.ReportUtils;
public final class NotificationFormatter {
@@ -38,17 +39,25 @@ public final class NotificationFormatter {
}
public static VelocityContext prepareContext(long userId, Event event, Position position) {
- Device device = Context.getIdentityManager().getDeviceById(event.getDeviceId());
+ User user = Context.getPermissionsManager().getUser(userId);
+ Device device = Context.getIdentityManager().getById(event.getDeviceId());
VelocityContext velocityContext = new VelocityContext();
+ velocityContext.put("user", user);
velocityContext.put("device", device);
velocityContext.put("event", event);
if (position != null) {
velocityContext.put("position", position);
- velocityContext.put("speedUnits", ReportUtils.getSpeedUnit(userId));
+ velocityContext.put("speedUnit", ReportUtils.getSpeedUnit(userId));
+ velocityContext.put("distanceUnit", ReportUtils.getDistanceUnit(userId));
+ velocityContext.put("volumeUnit", ReportUtils.getVolumeUnit(userId));
}
if (event.getGeofenceId() != 0) {
- velocityContext.put("geofence", Context.getGeofenceManager().getGeofence(event.getGeofenceId()));
+ velocityContext.put("geofence", Context.getGeofenceManager().getById(event.getGeofenceId()));
+ }
+ String driverUniqueId = event.getString(Position.KEY_DRIVER_UNIQUE_ID);
+ if (driverUniqueId != null) {
+ velocityContext.put("driver", Context.getDriversManager().getDriverByUniqueId(driverUniqueId));
}
velocityContext.put("webUrl", Context.getVelocityEngine().getProperty("web.url"));
velocityContext.put("dateTool", new DateTool());
diff --git a/src/org/traccar/notification/NotificationMail.java b/src/org/traccar/notification/NotificationMail.java
index 115b109e6..8707b10da 100644
--- a/src/org/traccar/notification/NotificationMail.java
+++ b/src/org/traccar/notification/NotificationMail.java
@@ -43,7 +43,7 @@ public final class NotificationMail {
if (host != null) {
properties.put("mail.transport.protocol", provider.getString("mail.transport.protocol", "smtp"));
properties.put("mail.smtp.host", host);
- properties.put("mail.smtp.port", provider.getString("mail.smtp.port", "25"));
+ properties.put("mail.smtp.port", String.valueOf(provider.getInteger("mail.smtp.port", 25)));
String starttlsEnable = provider.getString("mail.smtp.starttls.enable");
if (starttlsEnable != null) {
@@ -68,8 +68,6 @@ public final class NotificationMail {
properties.put("mail.smtp.ssl.protocols", sslProtocols);
}
- properties.put("mail.smtp.auth", provider.getString("mail.smtp.auth"));
-
String username = provider.getString("mail.smtp.username");
if (username != null) {
properties.put("mail.smtp.username", username);
@@ -89,13 +87,16 @@ public final class NotificationMail {
public static void sendMailSync(long userId, Event event, Position position) throws MessagingException {
User user = Context.getPermissionsManager().getUser(userId);
- Properties properties = getProperties(new PropertiesProvider(Context.getConfig()));
- if (!properties.containsKey("mail.smtp.host")) {
+ Properties properties = null;
+ if (!Context.getConfig().getBoolean("mail.smtp.ignoreUserConfig")) {
properties = getProperties(new PropertiesProvider(user));
- if (!properties.containsKey("mail.smtp.host")) {
- Log.warning("No SMTP configuration found");
- return;
- }
+ }
+ if (properties == null || !properties.containsKey("mail.smtp.host")) {
+ properties = getProperties(new PropertiesProvider(Context.getConfig()));
+ }
+ if (!properties.containsKey("mail.smtp.host")) {
+ Log.warning("No SMTP configuration found");
+ return;
}
Session session = Session.getInstance(properties);
diff --git a/src/org/traccar/notification/PropertiesProvider.java b/src/org/traccar/notification/PropertiesProvider.java
index e7cac8d0f..c5ba688e8 100644
--- a/src/org/traccar/notification/PropertiesProvider.java
+++ b/src/org/traccar/notification/PropertiesProvider.java
@@ -16,27 +16,27 @@
package org.traccar.notification;
import org.traccar.Config;
-import org.traccar.model.Extensible;
+import org.traccar.model.ExtendedModel;
public class PropertiesProvider {
private Config config;
- private Extensible extensible;
+ private ExtendedModel extendedModel;
public PropertiesProvider(Config config) {
this.config = config;
}
- public PropertiesProvider(Extensible extensible) {
- this.extensible = extensible;
+ public PropertiesProvider(ExtendedModel extendedModel) {
+ this.extendedModel = extendedModel;
}
public String getString(String key) {
if (config != null) {
return config.getString(key);
} else {
- return extensible.getString(key);
+ return extendedModel.getString(key);
}
}
@@ -48,4 +48,17 @@ public class PropertiesProvider {
return value;
}
+ public int getInteger(String key, int defaultValue) {
+ if (config != null) {
+ return config.getInteger(key, defaultValue);
+ } else {
+ Object result = extendedModel.getAttributes().get(key);
+ if (result != null) {
+ return result instanceof String ? Integer.parseInt((String) result) : (Integer) result;
+ } else {
+ return defaultValue;
+ }
+ }
+ }
+
}