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

Loading…
Cancel
Save