Browse Source

update TbCheckMessageNode

pull/1437/head
ShvaykaD 8 years ago
parent
commit
8b273e9474
  1. 22
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java

22
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java

@ -33,7 +33,7 @@ import java.util.Map;
@Slf4j
@RuleNode(
type = ComponentType.FILTER,
name = "has Hobotok",
name = "check existence fields",
relationTypes = {"True", "False"},
configClazz = TbCheckMessageNodeConfiguration.class,
nodeDescription = "Checks the existence of the selected keys from message data and metadata.",
@ -71,9 +71,8 @@ public class TbCheckMessageNode implements TbNode {
private boolean allDataKeysExist(TbMsg msg) {
if (!messageNamesList.isEmpty()) {
JsonObject data = parser.parse(msg.getData()).getAsJsonObject();
for (String field : messageNamesList) {
if (!data.has(field)) {
if (!toJson(msg).has(field)) {
return false;
}
}
@ -84,9 +83,8 @@ public class TbCheckMessageNode implements TbNode {
private boolean atLeastOneDataKeyExist(TbMsg msg) {
if (!messageNamesList.isEmpty()) {
JsonObject data = parser.parse(msg.getData()).getAsJsonObject();
for (String field : messageNamesList) {
if (data.has(field)) {
if (toJson(msg).has(field)) {
return true;
}
}
@ -97,9 +95,8 @@ public class TbCheckMessageNode implements TbNode {
private boolean allMetadataKeysExist(TbMsg msg) {
if (!metadataNamesList.isEmpty()) {
Map<String, String> metadata = msg.getMetaData().getData();
for (String field : metadataNamesList) {
if (!metadata.containsKey(field)) {
if (!toMap(msg).containsKey(field)) {
return false;
}
}
@ -110,9 +107,8 @@ public class TbCheckMessageNode implements TbNode {
private boolean atLeastOneMetadataKeyExist(TbMsg msg) {
if (!metadataNamesList.isEmpty()) {
Map<String, String> metadata = msg.getMetaData().getData();
for (String field : metadataNamesList) {
if (metadata.containsKey(field)) {
if (toMap(msg).containsKey(field)) {
return true;
}
}
@ -121,6 +117,14 @@ public class TbCheckMessageNode implements TbNode {
return false;
}
private Map<String, String> toMap(TbMsg msg) {
return msg.getMetaData().getData();
}
private JsonObject toJson(TbMsg msg) {
return parser.parse(msg.getData()).getAsJsonObject();
}
@Override
public void destroy() {

Loading…
Cancel
Save