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.AlarmCreateOrUpdateActiveRequest;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
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.edge.EdgeEventActionType;
|
||||||
import org.thingsboard.server.common.data.id.AlarmId;
|
import org.thingsboard.server.common.data.id.AlarmId;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
@ -51,15 +52,13 @@ public abstract class BaseAlarmProcessor extends BaseEdgeProcessor {
|
|||||||
switch (alarmUpdateMsg.getMsgType()) {
|
switch (alarmUpdateMsg.getMsgType()) {
|
||||||
case ENTITY_CREATED_RPC_MESSAGE:
|
case ENTITY_CREATED_RPC_MESSAGE:
|
||||||
case ENTITY_UPDATED_RPC_MESSAGE:
|
case ENTITY_UPDATED_RPC_MESSAGE:
|
||||||
Alarm alarm = alarmService.findAlarmById(tenantId, alarmId);
|
Alarm alarm = new Alarm();
|
||||||
if (alarm == null) {
|
alarm.setId(alarmId);
|
||||||
alarm = new Alarm();
|
|
||||||
alarm.setTenantId(tenantId);
|
alarm.setTenantId(tenantId);
|
||||||
alarm.setType(alarmUpdateMsg.getName());
|
alarm.setType(alarmUpdateMsg.getName());
|
||||||
alarm.setOriginator(originatorId);
|
alarm.setOriginator(originatorId);
|
||||||
alarm.setSeverity(AlarmSeverity.valueOf(alarmUpdateMsg.getSeverity()));
|
alarm.setSeverity(AlarmSeverity.valueOf(alarmUpdateMsg.getSeverity()));
|
||||||
alarm.setStartTs(alarmUpdateMsg.getStartTs());
|
alarm.setStartTs(alarmUpdateMsg.getStartTs());
|
||||||
}
|
|
||||||
var alarmStatus = AlarmStatus.valueOf(alarmUpdateMsg.getStatus());
|
var alarmStatus = AlarmStatus.valueOf(alarmUpdateMsg.getStatus());
|
||||||
alarm.setClearTs(alarmUpdateMsg.getClearTs());
|
alarm.setClearTs(alarmUpdateMsg.getClearTs());
|
||||||
alarm.setPropagate(alarmUpdateMsg.getPropagate());
|
alarm.setPropagate(alarmUpdateMsg.getPropagate());
|
||||||
@ -68,7 +67,11 @@ public abstract class BaseAlarmProcessor extends BaseEdgeProcessor {
|
|||||||
alarm.setAckTs(alarmUpdateMsg.getAckTs());
|
alarm.setAckTs(alarmUpdateMsg.getAckTs());
|
||||||
alarm.setEndTs(alarmUpdateMsg.getEndTs());
|
alarm.setEndTs(alarmUpdateMsg.getEndTs());
|
||||||
alarm.setDetails(JacksonUtil.OBJECT_MAPPER.readTree(alarmUpdateMsg.getDetails()));
|
alarm.setDetails(JacksonUtil.OBJECT_MAPPER.readTree(alarmUpdateMsg.getDetails()));
|
||||||
|
if (UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE.equals(alarmUpdateMsg.getMsgType())) {
|
||||||
alarmService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm, null, alarmId));
|
alarmService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm, null, alarmId));
|
||||||
|
} else {
|
||||||
|
alarmService.updateAlarm(AlarmUpdateRequest.fromAlarm(alarm));
|
||||||
|
}
|
||||||
return Futures.immediateFuture(null);
|
return Futures.immediateFuture(null);
|
||||||
case ALARM_ACK_RPC_MESSAGE:
|
case ALARM_ACK_RPC_MESSAGE:
|
||||||
Alarm alarmToAck = alarmService.findAlarmById(tenantId, alarmId);
|
Alarm alarmToAck = alarmService.findAlarmById(tenantId, alarmId);
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
|||||||
import com.google.protobuf.AbstractMessage;
|
import com.google.protobuf.AbstractMessage;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.thingsboard.common.util.JacksonUtil;
|
||||||
import org.thingsboard.server.common.data.Device;
|
import org.thingsboard.server.common.data.Device;
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.alarm.Alarm;
|
import org.thingsboard.server.common.data.alarm.Alarm;
|
||||||
@ -91,12 +92,28 @@ abstract public class BaseAlarmEdgeTest extends AbstractEdgeTest {
|
|||||||
Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg);
|
Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg);
|
||||||
AlarmUpdateMsg alarmUpdateMsg = (AlarmUpdateMsg) latestMessage;
|
AlarmUpdateMsg alarmUpdateMsg = (AlarmUpdateMsg) latestMessage;
|
||||||
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, alarmUpdateMsg.getMsgType());
|
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.getType(), alarmUpdateMsg.getType());
|
||||||
Assert.assertEquals(savedAlarm.getName(), alarmUpdateMsg.getName());
|
Assert.assertEquals(savedAlarm.getName(), alarmUpdateMsg.getName());
|
||||||
Assert.assertEquals(device.getName(), alarmUpdateMsg.getOriginatorName());
|
Assert.assertEquals(device.getName(), alarmUpdateMsg.getOriginatorName());
|
||||||
Assert.assertEquals(savedAlarm.getStatus().name(), alarmUpdateMsg.getStatus());
|
Assert.assertEquals(savedAlarm.getStatus().name(), alarmUpdateMsg.getStatus());
|
||||||
Assert.assertEquals(savedAlarm.getSeverity().name(), alarmUpdateMsg.getSeverity());
|
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
|
// ack alarm
|
||||||
edgeImitator.expectMessageAmount(1);
|
edgeImitator.expectMessageAmount(1);
|
||||||
doPost("/api/alarm/" + savedAlarm.getUuidId() + "/ack");
|
doPost("/api/alarm/" + savedAlarm.getUuidId() + "/ack");
|
||||||
|
|||||||
@ -74,7 +74,8 @@ public abstract class AbstractTbMsgPushNode<T extends BaseTbMsgPushNodeConfigura
|
|||||||
protected S buildEvent(TbMsg msg, TbContext ctx) {
|
protected S buildEvent(TbMsg msg, TbContext ctx) {
|
||||||
String msgType = msg.getType();
|
String msgType = msg.getType();
|
||||||
if (DataConstants.ALARM.equals(msgType)) {
|
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 {
|
} else {
|
||||||
EdgeEventActionType actionType = getEdgeEventActionTypeByMsgType(msgType);
|
EdgeEventActionType actionType = getEdgeEventActionTypeByMsgType(msgType);
|
||||||
Map<String, Object> entityBody = new HashMap<>();
|
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 S buildEvent(TenantId tenantId, EdgeEventActionType eventAction, UUID entityId, U eventType, JsonNode entityBody);
|
||||||
|
|
||||||
abstract U getEventTypeByEntityType(EntityType entityType);
|
abstract U getEventTypeByEntityType(EntityType entityType);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user