Commit beeade8b07fab33cba37e458da49d2223c4e3257

Authored by AndrewVolostnykhThingsboard
1 parent 581bb536

findHighestAlarmStatus: code cleaning

... ... @@ -19,16 +19,18 @@ import com.google.common.util.concurrent.ListenableFuture;
19 19 import org.thingsboard.server.common.data.alarm.Alarm;
20 20 import org.thingsboard.server.common.data.alarm.AlarmInfo;
21 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 24 import org.thingsboard.server.common.data.id.CustomerId;
23 25 import org.thingsboard.server.common.data.id.EntityId;
24 26 import org.thingsboard.server.common.data.id.TenantId;
25 27 import org.thingsboard.server.common.data.page.PageData;
26 28 import org.thingsboard.server.common.data.query.AlarmData;
27   -import org.thingsboard.server.common.data.query.AlarmDataPageLink;
28 29 import org.thingsboard.server.common.data.query.AlarmDataQuery;
29 30 import org.thingsboard.server.dao.Dao;
30 31
31 32 import java.util.Collection;
  33 +import java.util.Set;
32 34 import java.util.UUID;
33 35
34 36 /**
... ... @@ -48,4 +50,6 @@ public interface AlarmDao extends Dao<Alarm> {
48 50
49 51 PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId,
50 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 52 import org.thingsboard.server.dao.entity.EntityService;
53 53 import org.thingsboard.server.dao.exception.DataValidationException;
54 54 import org.thingsboard.server.dao.service.DataValidator;
55   -import org.thingsboard.server.dao.sql.alarm.AlarmRepository;
56 55 import org.thingsboard.server.dao.tenant.TenantDao;
57 56
58 57 import javax.annotation.Nullable;
... ... @@ -61,7 +60,6 @@ import javax.annotation.PreDestroy;
61 60 import java.util.ArrayList;
62 61 import java.util.Collection;
63 62 import java.util.Collections;
64   -import java.util.Comparator;
65 63 import java.util.LinkedHashSet;
66 64 import java.util.List;
67 65 import java.util.Set;
... ... @@ -89,9 +87,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
89 87 @Autowired
90 88 private EntityService entityService;
91 89
92   - @Autowired
93   - private AlarmRepository alarmRepository;
94   -
95 90 protected ExecutorService readResultsProcessingExecutor;
96 91
97 92 @PostConstruct
... ... @@ -327,7 +322,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
327 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 327 return alarmSeverities.stream().min(AlarmSeverity::compareTo).orElse(null);
333 328 }
... ... @@ -336,16 +331,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
336 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 334 private void deleteRelation(TenantId tenantId, EntityRelation alarmRelation) {
350 335 log.debug("Deleting Alarm relation: {}", alarmRelation);
351 336 relationService.deleteRelation(tenantId, alarmRelation);
... ...
... ... @@ -80,7 +80,7 @@ public interface AlarmRepository extends CrudRepository<AlarmEntity, UUID> {
80 80 " WHERE alarm.tenantId = :tenantId" +
81 81 " AND alarm.originatorId = :entityId" +
82 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 84 @Param("entityId") UUID entityId,
85 85 @Param("status") Set<AlarmStatus> status);
86 86
... ...
... ... @@ -24,6 +24,7 @@ import org.springframework.stereotype.Component;
24 24 import org.thingsboard.server.common.data.alarm.Alarm;
25 25 import org.thingsboard.server.common.data.alarm.AlarmInfo;
26 26 import org.thingsboard.server.common.data.alarm.AlarmQuery;
  27 +import org.thingsboard.server.common.data.alarm.AlarmSeverity;
27 28 import org.thingsboard.server.common.data.alarm.AlarmStatus;
28 29 import org.thingsboard.server.common.data.id.CustomerId;
29 30 import org.thingsboard.server.common.data.id.EntityId;
... ... @@ -120,4 +121,9 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
120 121 public PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId, AlarmDataQuery query, Collection<EntityId> orderedEntityIds) {
121 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 368 customerDevice.setCustomerId(customer.getId());
369 369 customerDevice = deviceService.saveDevice(customerDevice);
370 370
371   - long ts = System.currentTimeMillis();
372 371 Alarm alarm1 = Alarm.builder()
373 372 .tenantId(tenantId)
374 373 .originator(customerDevice.getId())
375 374 .type(TEST_ALARM)
376 375 .severity(AlarmSeverity.MAJOR)
377 376 .status(AlarmStatus.ACTIVE_UNACK)
378   - .startTs(ts)
  377 + .startTs(System.currentTimeMillis())
379 378 .build();
380 379 alarm1 = alarmService.createOrUpdateAlarm(alarm1).getAlarm();
381 380 alarmService.clearAlarm(tenantId, alarm1.getId(), null, System.currentTimeMillis()).get();
382 381
383   - ts = System.currentTimeMillis();
384 382 Alarm alarm2 = Alarm.builder()
385 383 .tenantId(tenantId)
386 384 .originator(customerDevice.getId())
387 385 .type(TEST_ALARM)
388 386 .severity(AlarmSeverity.MINOR)
389 387 .status(AlarmStatus.ACTIVE_ACK)
390   - .startTs(ts)
  388 + .startTs(System.currentTimeMillis())
391 389 .build();
392 390 alarm2 = alarmService.createOrUpdateAlarm(alarm2).getAlarm();
393 391 alarmService.clearAlarm(tenantId, alarm2.getId(), null, System.currentTimeMillis()).get();
394 392
395   - ts = System.currentTimeMillis();
396 393 Alarm alarm3 = Alarm.builder()
397 394 .tenantId(tenantId)
398 395 .originator(customerDevice.getId())
399 396 .type(TEST_ALARM)
400 397 .severity(AlarmSeverity.CRITICAL)
401 398 .status(AlarmStatus.ACTIVE_ACK)
402   - .startTs(ts)
  399 + .startTs(System.currentTimeMillis())
403 400 .build();
404 401 alarm3 = alarmService.createOrUpdateAlarm(alarm3).getAlarm();
405 402
... ...