improvements

This commit is contained in:
YevhenBondarenko 2020-03-05 16:02:42 +02:00 committed by Andrew Shvayka
parent b3aaf66f3f
commit a4ae57eb86
2 changed files with 21 additions and 12 deletions

View File

@ -27,11 +27,14 @@ import org.thingsboard.rule.engine.api.TbNodeConfiguration;
import org.thingsboard.rule.engine.api.TbNodeException; import org.thingsboard.rule.engine.api.TbNodeException;
import org.thingsboard.rule.engine.api.util.TbNodeUtils; import org.thingsboard.rule.engine.api.util.TbNodeUtils;
import org.thingsboard.server.common.data.alarm.Alarm; 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.data.plugin.ComponentType;
import org.thingsboard.server.common.msg.TbMsg; import org.thingsboard.server.common.msg.TbMsg;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.io.IOException; 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.FAILURE;
import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; 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, type = ComponentType.FILTER,
name = "checks alarm status", name = "checks alarm status",
configClazz = TbCheckAlarmStatusNodeConfig.class, configClazz = TbCheckAlarmStatusNodeConfig.class,
relationTypes = {"True", "False"},
nodeDescription = "Checks alarm status.", nodeDescription = "Checks alarm status.",
nodeDetails = "If the alarm status matches the specified one - msg is success if does not match - msg is failure.", 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"}, uiResources = {"static/rulenode/rulenode-core-config.js"},
@ -64,18 +68,22 @@ public class TbCheckAlarmStatusNode implements TbNode {
Futures.addCallback(latest, new FutureCallback<Alarm>() { Futures.addCallback(latest, new FutureCallback<Alarm>() {
@Override @Override
public void onSuccess(@Nullable Alarm result) { public void onSuccess(@Nullable Alarm result) {
boolean isPresent = false; if (result != null) {
for (String alarmStatus : config.getAlarmStatusList()) { boolean isPresent = false;
if (alarm.getStatus().name().equals(alarmStatus)) { for (AlarmStatus alarmStatus : config.getAlarmStatusList()) {
isPresent = true; if (alarm.getStatus() == alarmStatus) {
break; isPresent = true;
break;
}
} }
}
if (isPresent) { if (isPresent) {
ctx.tellNext(msg, SUCCESS); ctx.tellNext(msg, "True");
} else {
ctx.tellNext(msg, "False");
}
} else { } else {
ctx.tellNext(msg, FAILURE); ctx.tellFailure(msg, new TbNodeException("No such Alarm found."));
} }
} }

View File

@ -17,18 +17,19 @@ package org.thingsboard.rule.engine.filter;
import lombok.Data; import lombok.Data;
import org.thingsboard.rule.engine.api.NodeConfiguration; 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; import java.util.List;
@Data @Data
public class TbCheckAlarmStatusNodeConfig implements NodeConfiguration<TbCheckAlarmStatusNodeConfig> { public class TbCheckAlarmStatusNodeConfig implements NodeConfiguration<TbCheckAlarmStatusNodeConfig> {
private List<String> alarmStatusList; private List<AlarmStatus> alarmStatusList;
@Override @Override
public TbCheckAlarmStatusNodeConfig defaultConfiguration() { public TbCheckAlarmStatusNodeConfig defaultConfiguration() {
TbCheckAlarmStatusNodeConfig config = new TbCheckAlarmStatusNodeConfig(); TbCheckAlarmStatusNodeConfig config = new TbCheckAlarmStatusNodeConfig();
config.setAlarmStatusList(Collections.emptyList()); config.setAlarmStatusList(Arrays.asList(AlarmStatus.ACTIVE_ACK, AlarmStatus.ACTIVE_UNACK));
return config; return config;
} }
} }