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 { public class TbGetTelemetryNode implements TbNode {
private static final String DESC_ORDER = "DESC"; private static final String DESC_ORDER = "DESC";
private static final String ASC_ORDER = "ASC";
private TbGetTelemetryNodeConfiguration config; private TbGetTelemetryNodeConfiguration config;
private List<String> tsKeyNames; private List<String> tsKeyNames;
private int limit; private int limit;
private ObjectMapper mapper; private ObjectMapper mapper;
private String fetchMode; private String fetchMode;
private String orderBy; private String orderByFetchAll;
@Override @Override
public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException {
@ -82,9 +83,9 @@ public class TbGetTelemetryNode implements TbNode {
tsKeyNames = config.getLatestTsKeyNames(); tsKeyNames = config.getLatestTsKeyNames();
limit = config.getFetchMode().equals(FETCH_MODE_ALL) ? MAX_FETCH_SIZE : 1; limit = config.getFetchMode().equals(FETCH_MODE_ALL) ? MAX_FETCH_SIZE : 1;
fetchMode = config.getFetchMode(); fetchMode = config.getFetchMode();
orderBy = config.getOrderBy(); orderByFetchAll = config.getOrderBy();
if (StringUtils.isEmpty(orderBy)) { if (StringUtils.isEmpty(orderByFetchAll)) {
orderBy = DESC_ORDER; orderByFetchAll = ASC_ORDER;
} }
mapper = new ObjectMapper(); mapper = new ObjectMapper();
mapper.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false); mapper.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
@ -113,14 +114,26 @@ public class TbGetTelemetryNode implements TbNode {
} }
@Override @Override
public void destroy() { } public void destroy() {
}
private List<ReadTsKvQuery> buildQueries(TbMsg msg) { private List<ReadTsKvQuery> buildQueries(TbMsg msg) {
return tsKeyNames.stream() 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()); .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) { private void process(List<TsKvEntry> entries, TbMsg msg) {
ObjectNode resultNode = mapper.createObjectNode(); ObjectNode resultNode = mapper.createObjectNode();
if (limit == MAX_FETCH_SIZE) { 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_FIRST = "FIRST";
public static final String FETCH_MODE_LAST = "LAST"; public static final String FETCH_MODE_LAST = "LAST";
public static final String FETCH_MODE_ALL = "ALL"; public static final String FETCH_MODE_ALL = "ALL";
public static final int MAX_FETCH_SIZE = 1000; public static final int MAX_FETCH_SIZE = 1000;
private int startInterval; private int startInterval;
@ -43,7 +44,7 @@ public class TbGetTelemetryNodeConfiguration implements NodeConfiguration<TbGetT
private String startIntervalTimeUnit; private String startIntervalTimeUnit;
private String endIntervalTimeUnit; private String endIntervalTimeUnit;
private String fetchMode; //FIRST, LAST, LATEST private String fetchMode; //FIRST, LAST, ALL
private String orderBy; //ASC, DESC, private String orderBy; //ASC, DESC,
private List<String> latestTsKeyNames; 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