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