Commit beeade8b07fab33cba37e458da49d2223c4e3257

Authored by AndrewVolostnykhThingsboard
1 parent 581bb536

findHighestAlarmStatus: code cleaning

@@ -19,16 +19,18 @@ import com.google.common.util.concurrent.ListenableFuture; @@ -19,16 +19,18 @@ import com.google.common.util.concurrent.ListenableFuture;
19 import org.thingsboard.server.common.data.alarm.Alarm; 19 import org.thingsboard.server.common.data.alarm.Alarm;
20 import org.thingsboard.server.common.data.alarm.AlarmInfo; 20 import org.thingsboard.server.common.data.alarm.AlarmInfo;
21 import org.thingsboard.server.common.data.alarm.AlarmQuery; 21 import org.thingsboard.server.common.data.alarm.AlarmQuery;
  22 +import org.thingsboard.server.common.data.alarm.AlarmSeverity;
  23 +import org.thingsboard.server.common.data.alarm.AlarmStatus;
22 import org.thingsboard.server.common.data.id.CustomerId; 24 import org.thingsboard.server.common.data.id.CustomerId;
23 import org.thingsboard.server.common.data.id.EntityId; 25 import org.thingsboard.server.common.data.id.EntityId;
24 import org.thingsboard.server.common.data.id.TenantId; 26 import org.thingsboard.server.common.data.id.TenantId;
25 import org.thingsboard.server.common.data.page.PageData; 27 import org.thingsboard.server.common.data.page.PageData;
26 import org.thingsboard.server.common.data.query.AlarmData; 28 import org.thingsboard.server.common.data.query.AlarmData;
27 -import org.thingsboard.server.common.data.query.AlarmDataPageLink;  
28 import org.thingsboard.server.common.data.query.AlarmDataQuery; 29 import org.thingsboard.server.common.data.query.AlarmDataQuery;
29 import org.thingsboard.server.dao.Dao; 30 import org.thingsboard.server.dao.Dao;
30 31
31 import java.util.Collection; 32 import java.util.Collection;
  33 +import java.util.Set;
32 import java.util.UUID; 34 import java.util.UUID;
33 35
34 /** 36 /**
@@ -48,4 +50,6 @@ public interface AlarmDao extends Dao<Alarm> { @@ -48,4 +50,6 @@ public interface AlarmDao extends Dao<Alarm> {
48 50
49 PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId, 51 PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId,
50 AlarmDataQuery query, Collection<EntityId> orderedEntityIds); 52 AlarmDataQuery query, Collection<EntityId> orderedEntityIds);
  53 +
  54 + Set<AlarmSeverity> findAlarmSeverities(TenantId tenantId, EntityId entityId, Set<AlarmStatus> status);
51 } 55 }
@@ -52,7 +52,6 @@ import org.thingsboard.server.dao.entity.AbstractEntityService; @@ -52,7 +52,6 @@ import org.thingsboard.server.dao.entity.AbstractEntityService;
52 import org.thingsboard.server.dao.entity.EntityService; 52 import org.thingsboard.server.dao.entity.EntityService;
53 import org.thingsboard.server.dao.exception.DataValidationException; 53 import org.thingsboard.server.dao.exception.DataValidationException;
54 import org.thingsboard.server.dao.service.DataValidator; 54 import org.thingsboard.server.dao.service.DataValidator;
55 -import org.thingsboard.server.dao.sql.alarm.AlarmRepository;  
56 import org.thingsboard.server.dao.tenant.TenantDao; 55 import org.thingsboard.server.dao.tenant.TenantDao;
57 56
58 import javax.annotation.Nullable; 57 import javax.annotation.Nullable;
@@ -61,7 +60,6 @@ import javax.annotation.PreDestroy; @@ -61,7 +60,6 @@ import javax.annotation.PreDestroy;
61 import java.util.ArrayList; 60 import java.util.ArrayList;
62 import java.util.Collection; 61 import java.util.Collection;
63 import java.util.Collections; 62 import java.util.Collections;
64 -import java.util.Comparator;  
65 import java.util.LinkedHashSet; 63 import java.util.LinkedHashSet;
66 import java.util.List; 64 import java.util.List;
67 import java.util.Set; 65 import java.util.Set;
@@ -89,9 +87,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ @@ -89,9 +87,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
89 @Autowired 87 @Autowired
90 private EntityService entityService; 88 private EntityService entityService;
91 89
92 - @Autowired  
93 - private AlarmRepository alarmRepository;  
94 -  
95 protected ExecutorService readResultsProcessingExecutor; 90 protected ExecutorService readResultsProcessingExecutor;
96 91
97 @PostConstruct 92 @PostConstruct
@@ -327,7 +322,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ @@ -327,7 +322,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
327 statusList = Collections.singleton(alarmStatus); 322 statusList = Collections.singleton(alarmStatus);
328 } 323 }
329 324
330 - List<AlarmSeverity> alarmSeverities = alarmRepository.findHighestAlarmSeverity(tenantId.getId(), entityId.getId(), statusList); 325 + Set<AlarmSeverity> alarmSeverities = alarmDao.findAlarmSeverities(tenantId, entityId, statusList);
331 326
332 return alarmSeverities.stream().min(AlarmSeverity::compareTo).orElse(null); 327 return alarmSeverities.stream().min(AlarmSeverity::compareTo).orElse(null);
333 } 328 }
@@ -336,16 +331,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ @@ -336,16 +331,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
336 return new AlarmDataQuery(new DeviceTypeFilter(), pageLink, null, null, null, Collections.EMPTY_LIST); 331 return new AlarmDataQuery(new DeviceTypeFilter(), pageLink, null, null, null, Collections.EMPTY_LIST);
337 } 332 }
338 333
339 - private AlarmSeverity detectHighestSeverity(List<AlarmData> alarms) {  
340 - if (!alarms.isEmpty()) {  
341 - List<AlarmInfo> sorted = new ArrayList(alarms);  
342 - sorted.sort(Comparator.comparing(Alarm::getSeverity));  
343 - return sorted.get(0).getSeverity();  
344 - } else {  
345 - return null;  
346 - }  
347 - }  
348 -  
349 private void deleteRelation(TenantId tenantId, EntityRelation alarmRelation) { 334 private void deleteRelation(TenantId tenantId, EntityRelation alarmRelation) {
350 log.debug("Deleting Alarm relation: {}", alarmRelation); 335 log.debug("Deleting Alarm relation: {}", alarmRelation);
351 relationService.deleteRelation(tenantId, alarmRelation); 336 relationService.deleteRelation(tenantId, alarmRelation);
@@ -80,7 +80,7 @@ public interface AlarmRepository extends CrudRepository<AlarmEntity, UUID> { @@ -80,7 +80,7 @@ public interface AlarmRepository extends CrudRepository<AlarmEntity, UUID> {
80 " WHERE alarm.tenantId = :tenantId" + 80 " WHERE alarm.tenantId = :tenantId" +
81 " AND alarm.originatorId = :entityId" + 81 " AND alarm.originatorId = :entityId" +
82 " AND ((:status) IS NULL OR alarm.status in (:status))") 82 " AND ((:status) IS NULL OR alarm.status in (:status))")
83 - List<AlarmSeverity> findHighestAlarmSeverity(@Param("tenantId") UUID tenantId, 83 + Set<AlarmSeverity> findAlarmSeverities(@Param("tenantId") UUID tenantId,
84 @Param("entityId") UUID entityId, 84 @Param("entityId") UUID entityId,
85 @Param("status") Set<AlarmStatus> status); 85 @Param("status") Set<AlarmStatus> status);
86 86
@@ -24,6 +24,7 @@ import org.springframework.stereotype.Component; @@ -24,6 +24,7 @@ import org.springframework.stereotype.Component;
24 import org.thingsboard.server.common.data.alarm.Alarm; 24 import org.thingsboard.server.common.data.alarm.Alarm;
25 import org.thingsboard.server.common.data.alarm.AlarmInfo; 25 import org.thingsboard.server.common.data.alarm.AlarmInfo;
26 import org.thingsboard.server.common.data.alarm.AlarmQuery; 26 import org.thingsboard.server.common.data.alarm.AlarmQuery;
  27 +import org.thingsboard.server.common.data.alarm.AlarmSeverity;
27 import org.thingsboard.server.common.data.alarm.AlarmStatus; 28 import org.thingsboard.server.common.data.alarm.AlarmStatus;
28 import org.thingsboard.server.common.data.id.CustomerId; 29 import org.thingsboard.server.common.data.id.CustomerId;
29 import org.thingsboard.server.common.data.id.EntityId; 30 import org.thingsboard.server.common.data.id.EntityId;
@@ -120,4 +121,9 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A @@ -120,4 +121,9 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
120 public PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId, AlarmDataQuery query, Collection<EntityId> orderedEntityIds) { 121 public PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId, AlarmDataQuery query, Collection<EntityId> orderedEntityIds) {
121 return alarmQueryRepository.findAlarmDataByQueryForEntities(tenantId, customerId, query, orderedEntityIds); 122 return alarmQueryRepository.findAlarmDataByQueryForEntities(tenantId, customerId, query, orderedEntityIds);
122 } 123 }
  124 +
  125 + @Override
  126 + public Set<AlarmSeverity> findAlarmSeverities(TenantId tenantId, EntityId entityId, Set<AlarmStatus> status) {
  127 + return alarmRepository.findAlarmSeverities(tenantId.getId(), entityId.getId(), status);
  128 + }
123 } 129 }
@@ -368,38 +368,35 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { @@ -368,38 +368,35 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
368 customerDevice.setCustomerId(customer.getId()); 368 customerDevice.setCustomerId(customer.getId());
369 customerDevice = deviceService.saveDevice(customerDevice); 369 customerDevice = deviceService.saveDevice(customerDevice);
370 370
371 - long ts = System.currentTimeMillis();  
372 Alarm alarm1 = Alarm.builder() 371 Alarm alarm1 = Alarm.builder()
373 .tenantId(tenantId) 372 .tenantId(tenantId)
374 .originator(customerDevice.getId()) 373 .originator(customerDevice.getId())
375 .type(TEST_ALARM) 374 .type(TEST_ALARM)
376 .severity(AlarmSeverity.MAJOR) 375 .severity(AlarmSeverity.MAJOR)
377 .status(AlarmStatus.ACTIVE_UNACK) 376 .status(AlarmStatus.ACTIVE_UNACK)
378 - .startTs(ts) 377 + .startTs(System.currentTimeMillis())
379 .build(); 378 .build();
380 alarm1 = alarmService.createOrUpdateAlarm(alarm1).getAlarm(); 379 alarm1 = alarmService.createOrUpdateAlarm(alarm1).getAlarm();
381 alarmService.clearAlarm(tenantId, alarm1.getId(), null, System.currentTimeMillis()).get(); 380 alarmService.clearAlarm(tenantId, alarm1.getId(), null, System.currentTimeMillis()).get();
382 381
383 - ts = System.currentTimeMillis();  
384 Alarm alarm2 = Alarm.builder() 382 Alarm alarm2 = Alarm.builder()
385 .tenantId(tenantId) 383 .tenantId(tenantId)
386 .originator(customerDevice.getId()) 384 .originator(customerDevice.getId())
387 .type(TEST_ALARM) 385 .type(TEST_ALARM)
388 .severity(AlarmSeverity.MINOR) 386 .severity(AlarmSeverity.MINOR)
389 .status(AlarmStatus.ACTIVE_ACK) 387 .status(AlarmStatus.ACTIVE_ACK)
390 - .startTs(ts) 388 + .startTs(System.currentTimeMillis())
391 .build(); 389 .build();
392 alarm2 = alarmService.createOrUpdateAlarm(alarm2).getAlarm(); 390 alarm2 = alarmService.createOrUpdateAlarm(alarm2).getAlarm();
393 alarmService.clearAlarm(tenantId, alarm2.getId(), null, System.currentTimeMillis()).get(); 391 alarmService.clearAlarm(tenantId, alarm2.getId(), null, System.currentTimeMillis()).get();
394 392
395 - ts = System.currentTimeMillis();  
396 Alarm alarm3 = Alarm.builder() 393 Alarm alarm3 = Alarm.builder()
397 .tenantId(tenantId) 394 .tenantId(tenantId)
398 .originator(customerDevice.getId()) 395 .originator(customerDevice.getId())
399 .type(TEST_ALARM) 396 .type(TEST_ALARM)
400 .severity(AlarmSeverity.CRITICAL) 397 .severity(AlarmSeverity.CRITICAL)
401 .status(AlarmStatus.ACTIVE_ACK) 398 .status(AlarmStatus.ACTIVE_ACK)
402 - .startTs(ts) 399 + .startTs(System.currentTimeMillis())
403 .build(); 400 .build();
404 alarm3 = alarmService.createOrUpdateAlarm(alarm3).getAlarm(); 401 alarm3 = alarmService.createOrUpdateAlarm(alarm3).getAlarm();
405 402