diff options
Diffstat (limited to 'src/org/traccar/database')
-rw-r--r-- | src/org/traccar/database/ConnectionManager.java | 16 | ||||
-rw-r--r-- | src/org/traccar/database/DeviceManager.java | 80 | ||||
-rw-r--r-- | src/org/traccar/database/NotificationManager.java | 5 | ||||
-rw-r--r-- | src/org/traccar/database/PermissionsManager.java | 16 |
4 files changed, 49 insertions, 68 deletions
diff --git a/src/org/traccar/database/ConnectionManager.java b/src/org/traccar/database/ConnectionManager.java index 216c90bc2..bc44c31ae 100644 --- a/src/org/traccar/database/ConnectionManager.java +++ b/src/org/traccar/database/ConnectionManager.java @@ -76,10 +76,19 @@ public class ConnectionManager { } if (enableStatusEvents && !status.equals(device.getStatus())) { - Event event = new Event(Event.TYPE_DEVICE_OFFLINE, deviceId); - if (status.equals(Device.STATUS_ONLINE)) { - event.setType(Event.TYPE_DEVICE_ONLINE); + String eventType; + switch (status) { + case Device.STATUS_ONLINE: + eventType = Event.TYPE_DEVICE_ONLINE; + break; + case Device.STATUS_UNKNOWN: + eventType = Event.TYPE_DEVICE_UNKNOWN; + break; + default: + eventType = Event.TYPE_DEVICE_OFFLINE; + break; } + Event event = new Event(eventType, deviceId); if (Context.getNotificationManager() != null) { Context.getNotificationManager().updateEvent(event, null); } @@ -91,7 +100,6 @@ public class ConnectionManager { timeout.cancel(); } - if (time != null) { device.setLastUpdate(time); } diff --git a/src/org/traccar/database/DeviceManager.java b/src/org/traccar/database/DeviceManager.java index 5681602fe..c70e67231 100644 --- a/src/org/traccar/database/DeviceManager.java +++ b/src/org/traccar/database/DeviceManager.java @@ -317,98 +317,60 @@ public class DeviceManager implements IdentityManager { groupsById.remove(groupId); } - public boolean lookupServerBoolean(long deviceId, String attributeName, boolean defaultValue) { - String result = lookupAttribute(deviceId, attributeName, true); + public boolean lookupAttributeBoolean( + long deviceId, String attributeName, boolean defaultValue, boolean lookupConfig) { + String result = lookupAttribute(deviceId, attributeName, lookupConfig); if (result != null) { return Boolean.parseBoolean(result); } return defaultValue; } - public String lookupServerString(long deviceId, String attributeName, String defaultValue) { - String result = lookupAttribute(deviceId, attributeName, true); + public String lookupAttributeString( + long deviceId, String attributeName, String defaultValue, boolean lookupConfig) { + String result = lookupAttribute(deviceId, attributeName, lookupConfig); if (result != null) { return result; } return defaultValue; } - public int lookupServerInteger(long deviceId, String attributeName, int defaultValue) { - String result = lookupAttribute(deviceId, attributeName, true); + public int lookupAttributeInteger(long deviceId, String attributeName, int defaultValue, boolean lookupConfig) { + String result = lookupAttribute(deviceId, attributeName, lookupConfig); if (result != null) { return Integer.parseInt(result); } return defaultValue; } - public long lookupServerLong(long deviceId, String attributeName, long defaultValue) { - String result = lookupAttribute(deviceId, attributeName, true); + public long lookupAttributeLong( + long deviceId, String attributeName, long defaultValue, boolean lookupConfig) { + String result = lookupAttribute(deviceId, attributeName, lookupConfig); if (result != null) { return Long.parseLong(result); } return defaultValue; } - public double lookupServerDouble(long deviceId, String attributeName, double defaultValue) { - String result = lookupAttribute(deviceId, attributeName, true); + public double lookupAttributeDouble( + long deviceId, String attributeName, double defaultValue, boolean lookupConfig) { + String result = lookupAttribute(deviceId, attributeName, lookupConfig); if (result != null) { return Double.parseDouble(result); } return defaultValue; } - public boolean lookupConfigBoolean(long deviceId, String attributeName, boolean defaultValue) { - String result = lookupAttribute(deviceId, attributeName, false); - if (result != null) { - return Boolean.parseBoolean(result); - } - return defaultValue; - } - - public String lookupConfigString(long deviceId, String attributeName, String defaultValue) { - String result = lookupAttribute(deviceId, attributeName, false); - if (result != null) { - return result; - } - return defaultValue; - } - - public int lookupConfigInteger(long deviceId, String attributeName, int defaultValue) { - String result = lookupAttribute(deviceId, attributeName, false); - if (result != null) { - return Integer.parseInt(result); - } - return defaultValue; - } - - public long lookupConfigLong(long deviceId, String attributeName, long defaultValue) { - String result = lookupAttribute(deviceId, attributeName, false); - if (result != null) { - return Long.parseLong(result); - } - return defaultValue; - } - - public double lookupConfigDouble(long deviceId, String attributeName, double defaultValue) { - String result = lookupAttribute(deviceId, attributeName, false); - if (result != null) { - return Double.parseDouble(result); - } - return defaultValue; - } - - private String lookupAttribute(long deviceId, String attributeName, boolean lookupServer) { + private String lookupAttribute(long deviceId, String attributeName, boolean lookupConfig) { String result = null; Device device = getDeviceById(deviceId); if (device != null) { - if (device.getAttributes().containsKey(attributeName)) { - result = (String) device.getAttributes().get(attributeName); - } + result = device.getString(attributeName); if (result == null && lookupGroupsAttribute) { long groupId = device.getGroupId(); while (groupId != 0) { if (getGroupById(groupId) != null) { - result = (String) getGroupById(groupId).getAttributes().get(attributeName); + result = getGroupById(groupId).getString(attributeName); if (result != null) { break; } @@ -419,11 +381,11 @@ public class DeviceManager implements IdentityManager { } } if (result == null) { - if (lookupServer) { - Server server = Context.getPermissionsManager().getServer(); - result = (String) server.getAttributes().get(attributeName); - } else { + if (lookupConfig) { result = Context.getConfig().getString(attributeName); + } else { + Server server = Context.getPermissionsManager().getServer(); + result = server.getString(attributeName); } } } diff --git a/src/org/traccar/database/NotificationManager.java b/src/org/traccar/database/NotificationManager.java index 110f699b7..7e79e289f 100644 --- a/src/org/traccar/database/NotificationManager.java +++ b/src/org/traccar/database/NotificationManager.java @@ -74,7 +74,6 @@ public class NotificationManager { } public void updateEvents(Collection<Event> events, Position position) { - for (Event event : events) { updateEvent(event, position); } @@ -176,9 +175,8 @@ public class NotificationManager { } public Set<Notification> getAllNotifications() { - Set<Notification> notifications = new HashSet<>(); - long id = 0; + long id = 1; Field[] fields = Event.class.getDeclaredFields(); for (Field field : fields) { if (Modifier.isStatic(field.getModifiers()) && field.getName().startsWith("TYPE_")) { @@ -194,4 +192,5 @@ public class NotificationManager { } return notifications; } + } diff --git a/src/org/traccar/database/PermissionsManager.java b/src/org/traccar/database/PermissionsManager.java index 71633f6ef..078a5f935 100644 --- a/src/org/traccar/database/PermissionsManager.java +++ b/src/org/traccar/database/PermissionsManager.java @@ -29,6 +29,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -155,7 +156,7 @@ public class PermissionsManager { } } - public void checkUser(long userId) throws SecurityException { + public void checkUserEnabled(long userId) throws SecurityException { User user = getUser(userId); if (user.getDisabled()) { throw new SecurityException("Account is disabled"); @@ -165,6 +166,17 @@ public class PermissionsManager { } } + public void checkUserUpdate(long userId, User before, User after) throws SecurityException { + if (before.getAdmin() != after.getAdmin() + || before.getReadonly() != after.getReadonly() + || before.getDisabled() != after.getDisabled() + || before.getDeviceLimit() != after.getDeviceLimit() + || !Objects.equals(before.getExpirationTime(), after.getExpirationTime()) + || !Objects.equals(before.getToken(), after.getToken())) { + checkAdmin(userId); + } + } + public void checkUser(long userId, long otherUserId) throws SecurityException { if (userId != otherUserId) { checkAdmin(userId); @@ -244,7 +256,7 @@ public class PermissionsManager { public User login(String email, String password) throws SQLException { User user = dataManager.login(email, password); if (user != null) { - checkUser(user.getId()); + checkUserEnabled(user.getId()); return users.get(user.getId()); } return null; |