From 26a9f101097e5d970b11f20751e83a5a5591c47a Mon Sep 17 00:00:00 2001 From: zbeacon Date: Tue, 31 Jan 2023 18:41:41 +0200 Subject: [PATCH] Updated alarm websocket subscriptions --- .../DefaultSubscriptionManagerService.java | 2 +- .../DefaultAlarmSubscriptionService.java | 8 ++++---- .../telemetry/sub/AlarmSubscriptionUpdate.java | 3 +-- .../alarm/DefaultTbAlarmServiceTest.java | 2 +- .../server/common/data/alarm/AlarmInfo.java | 18 +++++++++--------- .../engine/api/RuleEngineAlarmService.java | 6 +++--- 6 files changed, 19 insertions(+), 20 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/subscription/DefaultSubscriptionManagerService.java b/application/src/main/java/org/thingsboard/server/service/subscription/DefaultSubscriptionManagerService.java index 67ac32ee73..421f22c1b6 100644 --- a/application/src/main/java/org/thingsboard/server/service/subscription/DefaultSubscriptionManagerService.java +++ b/application/src/main/java/org/thingsboard/server/service/subscription/DefaultSubscriptionManagerService.java @@ -302,7 +302,7 @@ public class DefaultSubscriptionManagerService extends TbApplicationEventListene return null; } }, - s -> alarmInfo.getCreatedTime() >= s.getTs(), + s -> alarmInfo.getCreatedTime() >= s.getTs() || alarmInfo.getAssignTs() >= s.getTs(), s -> alarmInfo, false ); diff --git a/application/src/main/java/org/thingsboard/server/service/telemetry/DefaultAlarmSubscriptionService.java b/application/src/main/java/org/thingsboard/server/service/telemetry/DefaultAlarmSubscriptionService.java index 2b28c382ed..c3ffb59cad 100644 --- a/application/src/main/java/org/thingsboard/server/service/telemetry/DefaultAlarmSubscriptionService.java +++ b/application/src/main/java/org/thingsboard/server/service/telemetry/DefaultAlarmSubscriptionService.java @@ -94,7 +94,7 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService } @Override - public Alarm createOrUpdateAlarm(Alarm alarm) { + public AlarmInfo createOrUpdateAlarm(Alarm alarm) { AlarmOperationResult result = alarmService.createOrUpdateAlarm(alarm, apiUsageStateService.getApiUsageState(alarm.getTenantId()).isAlarmCreationEnabled()); if (result.isSuccessful()) { onAlarmUpdated(result); @@ -111,7 +111,7 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService if (result.isCreated()) { apiUsageClient.report(alarm.getTenantId(), null, ApiUsageRecordKey.CREATED_ALARMS_COUNT); } - return new Alarm(result.getAlarmInfo()); + return result.getAlarmInfo(); } @Override @@ -142,7 +142,7 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService } @Override - public Alarm assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs) { + public AlarmInfo assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs) { AlarmOperationResult result = alarmService.assignAlarm(tenantId, alarmId, assigneeId, assignTs); if (result.isSuccessful()) { onAlarmUpdated(result); @@ -153,7 +153,7 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService } @Override - public Alarm unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs) { + public AlarmInfo unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs) { AlarmOperationResult result = alarmService.unassignAlarm(tenantId, alarmId, assignTs); if (result.isSuccessful()) { onAlarmUpdated(result); diff --git a/application/src/main/java/org/thingsboard/server/service/telemetry/sub/AlarmSubscriptionUpdate.java b/application/src/main/java/org/thingsboard/server/service/telemetry/sub/AlarmSubscriptionUpdate.java index a7dc3fe867..e8de05ee2f 100644 --- a/application/src/main/java/org/thingsboard/server/service/telemetry/sub/AlarmSubscriptionUpdate.java +++ b/application/src/main/java/org/thingsboard/server/service/telemetry/sub/AlarmSubscriptionUpdate.java @@ -68,5 +68,4 @@ public class AlarmSubscriptionUpdate { return "AlarmUpdate [subscriptionId=" + subscriptionId + ", errorCode=" + errorCode + ", errorMsg=" + errorMsg + ", alarm=" + alarm + "]"; } -} -// TODO imbeacon Alarm instead of alarm info \ No newline at end of file +} \ No newline at end of file diff --git a/application/src/test/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmServiceTest.java b/application/src/test/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmServiceTest.java index bea64f12af..dd8567cf43 100644 --- a/application/src/test/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmServiceTest.java +++ b/application/src/test/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmServiceTest.java @@ -82,7 +82,7 @@ public class DefaultTbAlarmServiceTest { @Test public void testSave() throws ThingsboardException { var alarm = new Alarm(); - when(alarmSubscriptionService.createOrUpdateAlarm(alarm)).thenReturn(alarm); + when((Alarm) alarmSubscriptionService.createOrUpdateAlarm(alarm)).thenReturn(alarm); service.save(alarm, new User()); verify(notificationEntityService, times(1)).notifyCreateOrUpdateAlarm(any(), any(), any()); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmInfo.java b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmInfo.java index 878edb856e..1c14da7f9f 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmInfo.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmInfo.java @@ -61,6 +61,15 @@ public class AlarmInfo extends Alarm { super(alarm); } + public AlarmInfo(AlarmInfo alarmInfo) { + super(alarmInfo); + this.originatorName = alarmInfo.originatorName; + this.originatorLabel = alarmInfo.originatorLabel; + this.assigneeFirstName = alarmInfo.assigneeFirstName; + this.assigneeLastName = alarmInfo.assigneeLastName; + this.assigneeEmail = alarmInfo.assigneeEmail; + } + public AlarmInfo(Alarm alarm, String originatorName, String originatorLabel, String assigneeFirstName, String assigneeLastName, String assigneeEmail) { super(alarm); this.originatorName = originatorName; @@ -70,15 +79,6 @@ public class AlarmInfo extends Alarm { this.assigneeEmail = assigneeEmail; } - public AlarmInfo(Alarm alarm, AlarmInfo alarmInfo) { - super(alarm); - originatorName = alarmInfo.originatorName; - originatorLabel = alarmInfo.originatorLabel; - assigneeFirstName = alarmInfo.assigneeFirstName; - assigneeLastName = alarmInfo.assigneeLastName; - assigneeEmail = alarmInfo.assigneeEmail; - } - @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/RuleEngineAlarmService.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/RuleEngineAlarmService.java index 053cc03eed..927312dc25 100644 --- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/RuleEngineAlarmService.java +++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/RuleEngineAlarmService.java @@ -40,7 +40,7 @@ import java.util.Collection; */ public interface RuleEngineAlarmService { - Alarm createOrUpdateAlarm(Alarm alarm); + AlarmInfo createOrUpdateAlarm(Alarm alarm); Boolean deleteAlarm(TenantId tenantId, AlarmId alarmId); @@ -50,9 +50,9 @@ public interface RuleEngineAlarmService { ListenableFuture clearAlarmForResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs); - Alarm assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs); + AlarmInfo assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs); - Alarm unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs); + AlarmInfo unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs); ListenableFuture findAlarmByIdAsync(TenantId tenantId, AlarmId alarmId);