diff options
-rw-r--r-- | schema/changelog-6.2.xml | 6 | ||||
-rw-r--r-- | src/main/java/org/traccar/handler/ComputedAttributesHandler.java | 7 | ||||
-rw-r--r-- | src/main/java/org/traccar/model/Attribute.java | 10 |
3 files changed, 21 insertions, 2 deletions
diff --git a/schema/changelog-6.2.xml b/schema/changelog-6.2.xml index 471987d12..568d9a3a0 100644 --- a/schema/changelog-6.2.xml +++ b/schema/changelog-6.2.xml @@ -11,6 +11,12 @@ <dropColumn tableName="tc_servers" columnName="twelvehourformat" /> <dropColumn tableName="tc_users" columnName="twelvehourformat" /> + <addColumn tableName="tc_attributes"> + <column name="priority" type="INT" defaultValueNumeric="0"> + <constraints nullable="false" /> + </column> + </addColumn> + </changeSet> </databaseChangeLog> diff --git a/src/main/java/org/traccar/handler/ComputedAttributesHandler.java b/src/main/java/org/traccar/handler/ComputedAttributesHandler.java index 7c2fd70a5..d286866a5 100644 --- a/src/main/java/org/traccar/handler/ComputedAttributesHandler.java +++ b/src/main/java/org/traccar/handler/ComputedAttributesHandler.java @@ -35,13 +35,14 @@ import org.traccar.session.cache.CacheManager; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Date; +import java.util.stream.Collectors; public class ComputedAttributesHandler extends BasePositionHandler { @@ -140,7 +141,9 @@ public class ComputedAttributesHandler extends BasePositionHandler { @Override public void handlePosition(Position position, Callback callback) { - Collection<Attribute> attributes = cacheManager.getDeviceObjects(position.getDeviceId(), Attribute.class); + var attributes = cacheManager.getDeviceObjects(position.getDeviceId(), Attribute.class).stream() + .sorted(Comparator.comparing(Attribute::getPriority).reversed()) + .collect(Collectors.toUnmodifiableList()); for (Attribute attribute : attributes) { if (attribute.getAttribute() != null) { Object result = null; diff --git a/src/main/java/org/traccar/model/Attribute.java b/src/main/java/org/traccar/model/Attribute.java index 65f2e3881..573207170 100644 --- a/src/main/java/org/traccar/model/Attribute.java +++ b/src/main/java/org/traccar/model/Attribute.java @@ -61,4 +61,14 @@ public class Attribute extends BaseModel { this.type = type; } + private int priority; + + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } + } |