Browse Source

fix TbGetTelemetryNode

pull/1483/head
ShvaykaD 8 years ago
parent
commit
e44d6f70dd
  1. 25
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java
  2. 3
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNodeConfiguration.java
  3. 4
      rule-engine/rule-engine-components/src/main/resources/public/static/rulenode/rulenode-core-config.js

25
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNode.java

@ -68,13 +68,14 @@ import static org.thingsboard.server.common.data.kv.Aggregation.NONE;
public class TbGetTelemetryNode implements TbNode {
private static final String DESC_ORDER = "DESC";
private static final String ASC_ORDER = "ASC";
private TbGetTelemetryNodeConfiguration config;
private List<String> tsKeyNames;
private int limit;
private ObjectMapper mapper;
private String fetchMode;
private String orderBy;
private String orderByFetchAll;
@Override
public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException {
@ -82,9 +83,9 @@ public class TbGetTelemetryNode implements TbNode {
tsKeyNames = config.getLatestTsKeyNames();
limit = config.getFetchMode().equals(FETCH_MODE_ALL) ? MAX_FETCH_SIZE : 1;
fetchMode = config.getFetchMode();
orderBy = config.getOrderBy();
if (StringUtils.isEmpty(orderBy)) {
orderBy = DESC_ORDER;
orderByFetchAll = config.getOrderBy();
if (StringUtils.isEmpty(orderByFetchAll)) {
orderByFetchAll = ASC_ORDER;
}
mapper = new ObjectMapper();
mapper.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
@ -113,14 +114,26 @@ public class TbGetTelemetryNode implements TbNode {
}
@Override
public void destroy() { }
public void destroy() {
}
private List<ReadTsKvQuery> buildQueries(TbMsg msg) {
return tsKeyNames.stream()
.map(key -> new BaseReadTsKvQuery(key, getInterval(msg).getStartTs(), getInterval(msg).getEndTs(), 1, limit, NONE, orderBy))
.map(key -> new BaseReadTsKvQuery(key, getInterval(msg).getStartTs(), getInterval(msg).getEndTs(), 1, limit, NONE, getOrderBy()))
.collect(Collectors.toList());
}
private String getOrderBy() {
switch (fetchMode) {
case FETCH_MODE_ALL:
return orderByFetchAll;
case FETCH_MODE_FIRST:
return ASC_ORDER;
default:
return DESC_ORDER;
}
}
private void process(List<TsKvEntry> entries, TbMsg msg) {
ObjectNode resultNode = mapper.createObjectNode();
if (limit == MAX_FETCH_SIZE) {

3
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTelemetryNodeConfiguration.java

@ -31,6 +31,7 @@ public class TbGetTelemetryNodeConfiguration implements NodeConfiguration<TbGetT
public static final String FETCH_MODE_FIRST = "FIRST";
public static final String FETCH_MODE_LAST = "LAST";
public static final String FETCH_MODE_ALL = "ALL";
public static final int MAX_FETCH_SIZE = 1000;
private int startInterval;
@ -43,7 +44,7 @@ public class TbGetTelemetryNodeConfiguration implements NodeConfiguration<TbGetT
private String startIntervalTimeUnit;
private String endIntervalTimeUnit;
private String fetchMode; //FIRST, LAST, LATEST
private String fetchMode; //FIRST, LAST, ALL
private String orderBy; //ASC, DESC,
private List<String> latestTsKeyNames;

4
rule-engine/rule-engine-components/src/main/resources/public/static/rulenode/rulenode-core-config.js

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save