From e2b9420abd94660aaa5b88dc5955ab45efb0eace Mon Sep 17 00:00:00 2001 From: ShvaykaD Date: Fri, 1 Feb 2019 11:56:00 +0200 Subject: [PATCH] Update TbCheckMessageNode --- .../engine/filter/TbCheckMessageNode.java | 74 ++++++++++++------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java index 6d93638657..f1538e0bbb 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java @@ -58,38 +58,66 @@ public class TbCheckMessageNode implements TbNode { @Override public void onMsg(TbContext ctx, TbMsg msg) { try { - Map dataMap = dataToMap(msg); - Map metadataMap = metadataToMap(msg); if (config.isCheckAllKeys()) { - ctx.tellNext(msg, allKeysExist(messageNamesList, dataMap) && allKeysExist(metadataNamesList, metadataMap) ? "True" : "False"); + ctx.tellNext(msg, allKeysData(msg) && allKeysMetadata(msg) ? "True" : "False"); } else { - ctx.tellNext(msg, atLeastOneKeyExist(messageNamesList, dataMap) || atLeastOneKeyExist(metadataNamesList, metadataMap) ? "True" : "False"); + ctx.tellNext(msg, atLeastOneData(msg) || atLeastOneMetadata(msg) ? "True" : "False"); } } catch (Exception e) { ctx.tellFailure(msg, e); } } - private boolean allKeysExist(List data, Map map) { - if (!data.isEmpty()) { - for (String field : data) { - if (!map.containsKey(field)) { - return false; - } + @Override + public void destroy() { + } + + private boolean allKeysData(TbMsg msg) { + if (!messageNamesList.isEmpty()) { + Map dataMap = dataToMap(msg); + return processAllKeys(messageNamesList, dataMap); + } + return true; + } + + private boolean allKeysMetadata(TbMsg msg) { + if (!metadataNamesList.isEmpty()) { + Map metadataMap = metadataToMap(msg); + return processAllKeys(metadataNamesList, metadataMap); + } + return true; + } + + private boolean atLeastOneData(TbMsg msg) { + if (!messageNamesList.isEmpty()) { + Map dataMap = dataToMap(msg); + return processAtLeastOne(messageNamesList, dataMap); + } + return false; + } + + private boolean atLeastOneMetadata(TbMsg msg) { + if (!metadataNamesList.isEmpty()) { + Map metadataMap = metadataToMap(msg); + return processAtLeastOne(metadataNamesList, metadataMap); + } + return false; + } + + private boolean processAllKeys(List data, Map map) { + for (String field : data) { + if (!map.containsKey(field)) { + return false; } - return true; } return true; } - private boolean atLeastOneKeyExist(List data, Map map) { - if (!data.isEmpty()) { - for (String field : data) { - if (map.containsKey(field)) { - return true; - } + private boolean processAtLeastOne(List data, Map map) { + for (String field : data) { + if (map.containsKey(field)) { + return true; } - return false; } return false; } @@ -99,13 +127,9 @@ public class TbCheckMessageNode implements TbNode { } @SuppressWarnings("unchecked") - private Map dataToMap(TbMsg msg) { ; - return (Map) gson.fromJson(msg.getData(), Map.class); - } - - @Override - public void destroy() { - + private Map dataToMap(TbMsg msg) { + ; + return (Map) gson.fromJson(msg.getData(), Map.class); } } \ No newline at end of file