From a4ae57eb86a329a3afe97c7658968ca2e450022d Mon Sep 17 00:00:00 2001 From: YevhenBondarenko Date: Thu, 5 Mar 2020 16:02:42 +0200 Subject: [PATCH] improvements --- .../engine/filter/TbCheckAlarmStatusNode.java | 26 ++++++++++++------- .../filter/TbCheckAlarmStatusNodeConfig.java | 7 ++--- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckAlarmStatusNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckAlarmStatusNode.java index 30eeb9219a..e0ec9300d4 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckAlarmStatusNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckAlarmStatusNode.java @@ -27,11 +27,14 @@ import org.thingsboard.rule.engine.api.TbNodeConfiguration; import org.thingsboard.rule.engine.api.TbNodeException; import org.thingsboard.rule.engine.api.util.TbNodeUtils; import org.thingsboard.server.common.data.alarm.Alarm; +import org.thingsboard.server.common.data.alarm.AlarmId; +import org.thingsboard.server.common.data.alarm.AlarmStatus; import org.thingsboard.server.common.data.plugin.ComponentType; import org.thingsboard.server.common.msg.TbMsg; import javax.annotation.Nullable; import java.io.IOException; +import java.util.UUID; import static org.thingsboard.rule.engine.api.TbRelationTypes.FAILURE; import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; @@ -41,6 +44,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; type = ComponentType.FILTER, name = "checks alarm status", configClazz = TbCheckAlarmStatusNodeConfig.class, + relationTypes = {"True", "False"}, nodeDescription = "Checks alarm status.", nodeDetails = "If the alarm status matches the specified one - msg is success if does not match - msg is failure.", uiResources = {"static/rulenode/rulenode-core-config.js"}, @@ -64,18 +68,22 @@ public class TbCheckAlarmStatusNode implements TbNode { Futures.addCallback(latest, new FutureCallback() { @Override public void onSuccess(@Nullable Alarm result) { - boolean isPresent = false; - for (String alarmStatus : config.getAlarmStatusList()) { - if (alarm.getStatus().name().equals(alarmStatus)) { - isPresent = true; - break; + if (result != null) { + boolean isPresent = false; + for (AlarmStatus alarmStatus : config.getAlarmStatusList()) { + if (alarm.getStatus() == alarmStatus) { + isPresent = true; + break; + } } - } - if (isPresent) { - ctx.tellNext(msg, SUCCESS); + if (isPresent) { + ctx.tellNext(msg, "True"); + } else { + ctx.tellNext(msg, "False"); + } } else { - ctx.tellNext(msg, FAILURE); + ctx.tellFailure(msg, new TbNodeException("No such Alarm found.")); } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckAlarmStatusNodeConfig.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckAlarmStatusNodeConfig.java index 81c1e22120..282027335a 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckAlarmStatusNodeConfig.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckAlarmStatusNodeConfig.java @@ -17,18 +17,19 @@ package org.thingsboard.rule.engine.filter; import lombok.Data; import org.thingsboard.rule.engine.api.NodeConfiguration; +import org.thingsboard.server.common.data.alarm.AlarmStatus; -import java.util.Collections; +import java.util.Arrays; import java.util.List; @Data public class TbCheckAlarmStatusNodeConfig implements NodeConfiguration { - private List alarmStatusList; + private List alarmStatusList; @Override public TbCheckAlarmStatusNodeConfig defaultConfiguration() { TbCheckAlarmStatusNodeConfig config = new TbCheckAlarmStatusNodeConfig(); - config.setAlarmStatusList(Collections.emptyList()); + config.setAlarmStatusList(Arrays.asList(AlarmStatus.ACTIVE_ACK, AlarmStatus.ACTIVE_UNACK)); return config; } }