Code review updates - remove redundant alarmService.findById - use correct alarm service method based on msg type
This commit is contained in:
parent
4dee5ceb4e
commit
8d4f1e31dc
@ -25,6 +25,7 @@ import org.thingsboard.server.common.data.alarm.Alarm;
|
||||
import org.thingsboard.server.common.data.alarm.AlarmCreateOrUpdateActiveRequest;
|
||||
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
||||
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
||||
import org.thingsboard.server.common.data.alarm.AlarmUpdateRequest;
|
||||
import org.thingsboard.server.common.data.edge.EdgeEventActionType;
|
||||
import org.thingsboard.server.common.data.id.AlarmId;
|
||||
import org.thingsboard.server.common.data.id.EntityId;
|
||||
@ -51,15 +52,13 @@ public abstract class BaseAlarmProcessor extends BaseEdgeProcessor {
|
||||
switch (alarmUpdateMsg.getMsgType()) {
|
||||
case ENTITY_CREATED_RPC_MESSAGE:
|
||||
case ENTITY_UPDATED_RPC_MESSAGE:
|
||||
Alarm alarm = alarmService.findAlarmById(tenantId, alarmId);
|
||||
if (alarm == null) {
|
||||
alarm = new Alarm();
|
||||
alarm.setTenantId(tenantId);
|
||||
alarm.setType(alarmUpdateMsg.getName());
|
||||
alarm.setOriginator(originatorId);
|
||||
alarm.setSeverity(AlarmSeverity.valueOf(alarmUpdateMsg.getSeverity()));
|
||||
alarm.setStartTs(alarmUpdateMsg.getStartTs());
|
||||
}
|
||||
Alarm alarm = new Alarm();
|
||||
alarm.setId(alarmId);
|
||||
alarm.setTenantId(tenantId);
|
||||
alarm.setType(alarmUpdateMsg.getName());
|
||||
alarm.setOriginator(originatorId);
|
||||
alarm.setSeverity(AlarmSeverity.valueOf(alarmUpdateMsg.getSeverity()));
|
||||
alarm.setStartTs(alarmUpdateMsg.getStartTs());
|
||||
var alarmStatus = AlarmStatus.valueOf(alarmUpdateMsg.getStatus());
|
||||
alarm.setClearTs(alarmUpdateMsg.getClearTs());
|
||||
alarm.setPropagate(alarmUpdateMsg.getPropagate());
|
||||
@ -68,7 +67,11 @@ public abstract class BaseAlarmProcessor extends BaseEdgeProcessor {
|
||||
alarm.setAckTs(alarmUpdateMsg.getAckTs());
|
||||
alarm.setEndTs(alarmUpdateMsg.getEndTs());
|
||||
alarm.setDetails(JacksonUtil.OBJECT_MAPPER.readTree(alarmUpdateMsg.getDetails()));
|
||||
alarmService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm, null, alarmId));
|
||||
if (UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE.equals(alarmUpdateMsg.getMsgType())) {
|
||||
alarmService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm, null, alarmId));
|
||||
} else {
|
||||
alarmService.updateAlarm(AlarmUpdateRequest.fromAlarm(alarm));
|
||||
}
|
||||
return Futures.immediateFuture(null);
|
||||
case ALARM_ACK_RPC_MESSAGE:
|
||||
Alarm alarmToAck = alarmService.findAlarmById(tenantId, alarmId);
|
||||
|
||||
@ -19,6 +19,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.google.protobuf.AbstractMessage;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.thingsboard.common.util.JacksonUtil;
|
||||
import org.thingsboard.server.common.data.Device;
|
||||
import org.thingsboard.server.common.data.EntityType;
|
||||
import org.thingsboard.server.common.data.alarm.Alarm;
|
||||
@ -91,12 +92,28 @@ abstract public class BaseAlarmEdgeTest extends AbstractEdgeTest {
|
||||
Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg);
|
||||
AlarmUpdateMsg alarmUpdateMsg = (AlarmUpdateMsg) latestMessage;
|
||||
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, alarmUpdateMsg.getMsgType());
|
||||
Assert.assertEquals(savedAlarm.getUuidId().getMostSignificantBits(), alarmUpdateMsg.getIdMSB());
|
||||
Assert.assertEquals(savedAlarm.getUuidId().getLeastSignificantBits(), alarmUpdateMsg.getIdLSB());
|
||||
Assert.assertEquals(savedAlarm.getType(), alarmUpdateMsg.getType());
|
||||
Assert.assertEquals(savedAlarm.getName(), alarmUpdateMsg.getName());
|
||||
Assert.assertEquals(device.getName(), alarmUpdateMsg.getOriginatorName());
|
||||
Assert.assertEquals(savedAlarm.getStatus().name(), alarmUpdateMsg.getStatus());
|
||||
Assert.assertEquals(savedAlarm.getSeverity().name(), alarmUpdateMsg.getSeverity());
|
||||
|
||||
// update alarm
|
||||
String updatedDetails = "{\"testKey\":\"testValue\"}";
|
||||
savedAlarm.setDetails(JacksonUtil.OBJECT_MAPPER.readTree(updatedDetails));
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
savedAlarm = doPost("/api/alarm", savedAlarm, Alarm.class);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
latestMessage = edgeImitator.getLatestMessage();
|
||||
Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg);
|
||||
alarmUpdateMsg = (AlarmUpdateMsg) latestMessage;
|
||||
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, alarmUpdateMsg.getMsgType());
|
||||
Assert.assertEquals(savedAlarm.getUuidId().getMostSignificantBits(), alarmUpdateMsg.getIdMSB());
|
||||
Assert.assertEquals(savedAlarm.getUuidId().getLeastSignificantBits(), alarmUpdateMsg.getIdLSB());
|
||||
Assert.assertEquals(updatedDetails, alarmUpdateMsg.getDetails());
|
||||
|
||||
// ack alarm
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
doPost("/api/alarm/" + savedAlarm.getUuidId() + "/ack");
|
||||
|
||||
@ -74,7 +74,8 @@ public abstract class AbstractTbMsgPushNode<T extends BaseTbMsgPushNodeConfigura
|
||||
protected S buildEvent(TbMsg msg, TbContext ctx) {
|
||||
String msgType = msg.getType();
|
||||
if (DataConstants.ALARM.equals(msgType)) {
|
||||
return buildEvent(ctx.getTenantId(), EdgeEventActionType.ADDED, getUUIDFromMsgData(msg), getAlarmEventType(), null);
|
||||
EdgeEventActionType actionType = getAlarmActionType(msg);
|
||||
return buildEvent(ctx.getTenantId(), actionType, getUUIDFromMsgData(msg), getAlarmEventType(), null);
|
||||
} else {
|
||||
EdgeEventActionType actionType = getEdgeEventActionTypeByMsgType(msgType);
|
||||
Map<String, Object> entityBody = new HashMap<>();
|
||||
@ -107,6 +108,20 @@ public abstract class AbstractTbMsgPushNode<T extends BaseTbMsgPushNodeConfigura
|
||||
}
|
||||
}
|
||||
|
||||
private static EdgeEventActionType getAlarmActionType(TbMsg msg) {
|
||||
boolean isNewAlarm = Boolean.parseBoolean(msg.getMetaData().getValue(DataConstants.IS_NEW_ALARM));
|
||||
boolean isClearedAlarm = Boolean.parseBoolean(msg.getMetaData().getValue(DataConstants.IS_CLEARED_ALARM));
|
||||
EdgeEventActionType eventAction;
|
||||
if (isNewAlarm) {
|
||||
eventAction = EdgeEventActionType.ADDED;
|
||||
} else if (isClearedAlarm) {
|
||||
eventAction = EdgeEventActionType.ALARM_CLEAR;
|
||||
} else {
|
||||
eventAction = EdgeEventActionType.UPDATED;
|
||||
}
|
||||
return eventAction;
|
||||
}
|
||||
|
||||
abstract S buildEvent(TenantId tenantId, EdgeEventActionType eventAction, UUID entityId, U eventType, JsonNode entityBody);
|
||||
|
||||
abstract U getEventTypeByEntityType(EntityType entityType);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user