diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-07-18 00:15:34 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-18 00:15:34 +1200 |
commit | cb0d7cccaecfe049e04defd90884976ac1e982f9 (patch) | |
tree | 7e271323490ac0324f4e1f1d3a885da05848b6e2 /src | |
parent | 08cc944644cee5ce745a9faae0866b206c575407 (diff) | |
parent | f465ff10b2acc4762902818bbafcbac6a74d429c (diff) | |
download | traccar-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.java | 14 |
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) { |