aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2017-07-18 00:15:34 +1200
committerGitHub <noreply@github.com>2017-07-18 00:15:34 +1200
commitcb0d7cccaecfe049e04defd90884976ac1e982f9 (patch)
tree7e271323490ac0324f4e1f1d3a885da05848b6e2 /src
parent08cc944644cee5ce745a9faae0866b206c575407 (diff)
parentf465ff10b2acc4762902818bbafcbac6a74d429c (diff)
downloadtraccar-server-cb0d7cccaecfe049e04defd90884976ac1e982f9.tar.gz
traccar-server-cb0d7cccaecfe049e04defd90884976ac1e982f9.tar.bz2
traccar-server-cb0d7cccaecfe049e04defd90884976ac1e982f9.zip
Merge pull request #3360 from Abyss777/map_device_attributes
Map Device attributes to Computed Attributes
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/processing/ComputedAttributesHandler.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/org/traccar/processing/ComputedAttributesHandler.java b/src/org/traccar/processing/ComputedAttributesHandler.java
index 8689c5a58..536e39ec4 100644
--- a/src/org/traccar/processing/ComputedAttributesHandler.java
+++ b/src/org/traccar/processing/ComputedAttributesHandler.java
@@ -31,19 +31,33 @@ import org.traccar.BaseDataHandler;
import org.traccar.Context;
import org.traccar.helper.Log;
import org.traccar.model.Attribute;
+import org.traccar.model.Device;
import org.traccar.model.Position;
public class ComputedAttributesHandler extends BaseDataHandler {
private JexlEngine engine;
+ private boolean mapDeviceAttributes;
+
public ComputedAttributesHandler() {
engine = new JexlEngine();
engine.setStrict(true);
+ if (Context.getConfig() != null) {
+ mapDeviceAttributes = Context.getConfig().getBoolean("processing.computedAttributes.deviceAttributes");
+ }
}
private MapContext prepareContext(Position position) {
MapContext result = new MapContext();
+ if (mapDeviceAttributes) {
+ Device device = Context.getIdentityManager().getDeviceById(position.getDeviceId());
+ if (device != null) {
+ for (Object key : device.getAttributes().keySet()) {
+ result.set((String) key, device.getAttributes().get(key));
+ }
+ }
+ }
Set<Method> methods = new HashSet<>(Arrays.asList(position.getClass().getMethods()));
methods.removeAll(Arrays.asList(Object.class.getMethods()));
for (Method method : methods) {