From 18767381f90620c42b6bf38ee501cedba6883084 Mon Sep 17 00:00:00 2001 From: Dima Landiak Date: Thu, 14 Nov 2019 14:17:47 +0200 Subject: [PATCH] originator telemetry node added limit param --- .../engine/metadata/TbGetTelemetryNode.java | 20 ++++++++++++------- .../TbGetTelemetryNodeConfiguration.java | 4 +++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java index 0de8a93173..6bcc3e3d52 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java @@ -26,12 +26,12 @@ import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import org.thingsboard.common.util.DonAsynchron; import org.thingsboard.rule.engine.api.RuleNode; import org.thingsboard.rule.engine.api.TbContext; import org.thingsboard.rule.engine.api.TbNode; import org.thingsboard.rule.engine.api.TbNodeConfiguration; import org.thingsboard.rule.engine.api.TbNodeException; -import org.thingsboard.common.util.DonAsynchron; import org.thingsboard.rule.engine.api.util.TbNodeUtils; import org.thingsboard.server.common.data.kv.BaseReadTsKvQuery; import org.thingsboard.server.common.data.kv.ReadTsKvQuery; @@ -81,7 +81,7 @@ public class TbGetTelemetryNode implements TbNode { public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbGetTelemetryNodeConfiguration.class); tsKeyNames = config.getLatestTsKeyNames(); - limit = config.getFetchMode().equals(FETCH_MODE_ALL) ? MAX_FETCH_SIZE : 1; + limit = config.getFetchMode().equals(FETCH_MODE_ALL) ? validateLimit(config.getLimit()) : 1; fetchMode = config.getFetchMode(); orderByFetchAll = config.getOrderBy(); if (StringUtils.isEmpty(orderByFetchAll)) { @@ -136,7 +136,7 @@ public class TbGetTelemetryNode implements TbNode { private void process(List entries, TbMsg msg) { ObjectNode resultNode = mapper.createObjectNode(); - if (limit == MAX_FETCH_SIZE) { + if (FETCH_MODE_ALL.equals(fetchMode)) { entries.forEach(entry -> processArray(resultNode, entry)); } else { entries.forEach(entry -> processSingle(resultNode, entry)); @@ -156,12 +156,10 @@ public class TbGetTelemetryNode implements TbNode { private void processArray(ObjectNode node, TsKvEntry entry) { if (node.has(entry.getKey())) { ArrayNode arrayNode = (ArrayNode) node.get(entry.getKey()); - ObjectNode obj = buildNode(entry); - arrayNode.add(obj); + arrayNode.add(buildNode(entry)); } else { ArrayNode arrayNode = mapper.createArrayNode(); - ObjectNode obj = buildNode(entry); - arrayNode.add(obj); + arrayNode.add(buildNode(entry)); node.set(entry.getKey(), arrayNode); } } @@ -254,6 +252,14 @@ public class TbGetTelemetryNode implements TbNode { return pattern.replaceAll("[${}]", ""); } + private int validateLimit(int limit) { + if (limit != 0) { + return limit; + } else { + return MAX_FETCH_SIZE; + } + } + @Data @NoArgsConstructor private static class Interval { diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNodeConfiguration.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNodeConfiguration.java index 05335879ca..7a312c34fc 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNodeConfiguration.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNodeConfiguration.java @@ -45,7 +45,8 @@ public class TbGetTelemetryNodeConfiguration implements NodeConfiguration latestTsKeyNames; @@ -62,6 +63,7 @@ public class TbGetTelemetryNodeConfiguration implements NodeConfiguration