From da5b3c3a4ecedb9b2c4b1395e911fd48801b9ed7 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Mon, 17 Jul 2017 13:47:34 +0500 Subject: Map Device attributes to Computed Attributes --- src/org/traccar/processing/ComputedAttributesHandler.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/org/traccar/processing') diff --git a/src/org/traccar/processing/ComputedAttributesHandler.java b/src/org/traccar/processing/ComputedAttributesHandler.java index 8689c5a58..e5b559182 100644 --- a/src/org/traccar/processing/ComputedAttributesHandler.java +++ b/src/org/traccar/processing/ComputedAttributesHandler.java @@ -31,19 +31,34 @@ 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.mapDeviceAttributes.enable"); + } } 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 methods = new HashSet<>(Arrays.asList(position.getClass().getMethods())); methods.removeAll(Arrays.asList(Object.class.getMethods())); for (Method method : methods) { -- cgit v1.2.3