Commit a4ae57eb86a329a3afe97c7658968ca2e450022d
Committed by
Andrew Shvayka
1 parent
b3aaf66f
improvements
Showing
2 changed files
with
21 additions
and
12 deletions
... | ... | @@ -27,11 +27,14 @@ import org.thingsboard.rule.engine.api.TbNodeConfiguration; |
27 | 27 | import org.thingsboard.rule.engine.api.TbNodeException; |
28 | 28 | import org.thingsboard.rule.engine.api.util.TbNodeUtils; |
29 | 29 | import org.thingsboard.server.common.data.alarm.Alarm; |
30 | +import org.thingsboard.server.common.data.alarm.AlarmId; | |
31 | +import org.thingsboard.server.common.data.alarm.AlarmStatus; | |
30 | 32 | import org.thingsboard.server.common.data.plugin.ComponentType; |
31 | 33 | import org.thingsboard.server.common.msg.TbMsg; |
32 | 34 | |
33 | 35 | import javax.annotation.Nullable; |
34 | 36 | import java.io.IOException; |
37 | +import java.util.UUID; | |
35 | 38 | |
36 | 39 | import static org.thingsboard.rule.engine.api.TbRelationTypes.FAILURE; |
37 | 40 | import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
... | ... | @@ -41,6 +44,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
41 | 44 | type = ComponentType.FILTER, |
42 | 45 | name = "checks alarm status", |
43 | 46 | configClazz = TbCheckAlarmStatusNodeConfig.class, |
47 | + relationTypes = {"True", "False"}, | |
44 | 48 | nodeDescription = "Checks alarm status.", |
45 | 49 | nodeDetails = "If the alarm status matches the specified one - msg is success if does not match - msg is failure.", |
46 | 50 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
... | ... | @@ -64,18 +68,22 @@ public class TbCheckAlarmStatusNode implements TbNode { |
64 | 68 | Futures.addCallback(latest, new FutureCallback<Alarm>() { |
65 | 69 | @Override |
66 | 70 | public void onSuccess(@Nullable Alarm result) { |
67 | - boolean isPresent = false; | |
68 | - for (String alarmStatus : config.getAlarmStatusList()) { | |
69 | - if (alarm.getStatus().name().equals(alarmStatus)) { | |
70 | - isPresent = true; | |
71 | - break; | |
71 | + if (result != null) { | |
72 | + boolean isPresent = false; | |
73 | + for (AlarmStatus alarmStatus : config.getAlarmStatusList()) { | |
74 | + if (alarm.getStatus() == alarmStatus) { | |
75 | + isPresent = true; | |
76 | + break; | |
77 | + } | |
72 | 78 | } |
73 | - } | |
74 | 79 | |
75 | - if (isPresent) { | |
76 | - ctx.tellNext(msg, SUCCESS); | |
80 | + if (isPresent) { | |
81 | + ctx.tellNext(msg, "True"); | |
82 | + } else { | |
83 | + ctx.tellNext(msg, "False"); | |
84 | + } | |
77 | 85 | } else { |
78 | - ctx.tellNext(msg, FAILURE); | |
86 | + ctx.tellFailure(msg, new TbNodeException("No such Alarm found.")); | |
79 | 87 | } |
80 | 88 | } |
81 | 89 | ... | ... |
... | ... | @@ -17,18 +17,19 @@ package org.thingsboard.rule.engine.filter; |
17 | 17 | |
18 | 18 | import lombok.Data; |
19 | 19 | import org.thingsboard.rule.engine.api.NodeConfiguration; |
20 | +import org.thingsboard.server.common.data.alarm.AlarmStatus; | |
20 | 21 | |
21 | -import java.util.Collections; | |
22 | +import java.util.Arrays; | |
22 | 23 | import java.util.List; |
23 | 24 | |
24 | 25 | @Data |
25 | 26 | public class TbCheckAlarmStatusNodeConfig implements NodeConfiguration<TbCheckAlarmStatusNodeConfig> { |
26 | - private List<String> alarmStatusList; | |
27 | + private List<AlarmStatus> alarmStatusList; | |
27 | 28 | |
28 | 29 | @Override |
29 | 30 | public TbCheckAlarmStatusNodeConfig defaultConfiguration() { |
30 | 31 | TbCheckAlarmStatusNodeConfig config = new TbCheckAlarmStatusNodeConfig(); |
31 | - config.setAlarmStatusList(Collections.emptyList()); | |
32 | + config.setAlarmStatusList(Arrays.asList(AlarmStatus.ACTIVE_ACK, AlarmStatus.ACTIVE_UNACK)); | |
32 | 33 | return config; |
33 | 34 | } |
34 | 35 | } | ... | ... |