diff options
author | Anton Tananaev <anton@traccar.org> | 2022-06-07 19:23:16 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2022-06-07 19:23:16 -0700 |
commit | 5890e03199142f041dc19160329a740b4d01450d (patch) | |
tree | 1bf8bafbaa35a01d963f61f876a4a1de5258389e | |
parent | 104281f161f622df8fca0c65a5b9969ceb03c46f (diff) | |
download | trackermap-server-5890e03199142f041dc19160329a740b4d01450d.tar.gz trackermap-server-5890e03199142f041dc19160329a740b4d01450d.tar.bz2 trackermap-server-5890e03199142f041dc19160329a740b4d01450d.zip |
Fix last position requests (fix #4863)
-rw-r--r-- | src/main/java/org/traccar/api/resource/AttributeResource.java | 16 | ||||
-rw-r--r-- | src/main/java/org/traccar/database/CommandsManager.java | 2 |
2 files changed, 4 insertions, 14 deletions
diff --git a/src/main/java/org/traccar/api/resource/AttributeResource.java b/src/main/java/org/traccar/api/resource/AttributeResource.java index fdd0d4f6f..ab7e43add 100644 --- a/src/main/java/org/traccar/api/resource/AttributeResource.java +++ b/src/main/java/org/traccar/api/resource/AttributeResource.java @@ -53,22 +53,12 @@ public class AttributeResource extends ExtendedObjectResource<Attribute> { permissionsService.checkAdmin(getUserId()); permissionsService.checkPermission(Device.class, getUserId(), deviceId); - Device device = storage.getObject(Device.class, new Request( + Position position = storage.getObject(Position.class, new Request( new Columns.All(), - new Condition.Equals("id", "id", deviceId))); - if (device == null) { - throw new IllegalArgumentException("Device not found"); - } - - Position last = storage.getObject(Position.class, new Request( - new Columns.All(), - new Condition.Equals("id", "id", device.getPositionId()))); - if (last == null) { - throw new IllegalArgumentException("Device has no last position"); - } + new Condition.LatestPositions(deviceId))); Object result = new ComputedAttributesHandler(Context.getConfig(), Context.getIdentityManager(), null) - .computeAttribute(entity, last); + .computeAttribute(entity, position); if (result != null) { switch (entity.getType()) { case "number": diff --git a/src/main/java/org/traccar/database/CommandsManager.java b/src/main/java/org/traccar/database/CommandsManager.java index 8dd2ba8b7..2967b8abd 100644 --- a/src/main/java/org/traccar/database/CommandsManager.java +++ b/src/main/java/org/traccar/database/CommandsManager.java @@ -72,7 +72,7 @@ public class CommandsManager { long deviceId = command.getDeviceId(); if (command.getTextChannel()) { Device device = storage.getObject(Device.class, new Request( - new Columns.All(), new Condition.Equals("id", "id", deviceId))); + new Columns.Include("positionId", "phone"), new Condition.Equals("id", "id", deviceId))); Position position = storage.getObject(Position.class, new Request( new Columns.All(), new Condition.Equals("id", "id", device.getPositionId()))); if (position != null) { |