From b9cf5c78361ed016353c2e74c05d3b8d8fdf3c4f Mon Sep 17 00:00:00 2001 From: Andrii Shvaika Date: Tue, 28 Feb 2023 12:03:59 +0200 Subject: [PATCH] Improvement of the save alarm procedure --- .../entitiy/alarm/DefaultTbAlarmService.java | 4 ++-- .../DefaultAlarmSubscriptionService.java | 17 ++++++++++++----- .../alarm/AlarmCreateOrUpdateActiveRequest.java | 8 ++++++++ .../data/alarm/AlarmModificationRequest.java | 3 +++ .../common/data/alarm/AlarmUpdateRequest.java | 8 ++++++++ 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java b/application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java index 652529caa1..e452a766a4 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java @@ -49,9 +49,9 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb try { AlarmApiCallResult result; if (alarm.getId() == null) { - result = alarmSubscriptionService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm)); + result = alarmSubscriptionService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm, user.getId())); } else { - result = alarmSubscriptionService.updateAlarm(AlarmUpdateRequest.fromAlarm(alarm)); + result = alarmSubscriptionService.updateAlarm(AlarmUpdateRequest.fromAlarm(alarm, user.getId())); } if (!result.isSuccessful()) { throw new ThingsboardException(ThingsboardErrorCode.ITEM_NOT_FOUND); 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 48f8760503..6eb5f16b27 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 @@ -29,6 +29,7 @@ import org.thingsboard.server.common.data.alarm.Alarm; import org.thingsboard.server.common.data.alarm.AlarmComment; import org.thingsboard.server.common.data.alarm.AlarmCommentType; import org.thingsboard.server.common.data.alarm.AlarmInfo; +import org.thingsboard.server.common.data.alarm.AlarmModificationRequest; import org.thingsboard.server.common.data.alarm.AlarmQuery; import org.thingsboard.server.common.data.alarm.AlarmSearchStatus; import org.thingsboard.server.common.data.alarm.AlarmSeverity; @@ -103,7 +104,7 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService if (result.isCreated()) { apiUsageClient.report(request.getTenantId(), null, ApiUsageRecordKey.CREATED_ALARMS_COUNT); } - return withWsCallback(result); + return withWsCallback(request, result); } @Override @@ -298,17 +299,23 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService } private AlarmApiCallResult withWsCallback(AlarmApiCallResult result) { + return withWsCallback(null, result); + } + + private AlarmApiCallResult withWsCallback(AlarmModificationRequest request, AlarmApiCallResult result) { if (result.isSuccessful() && result.isModified()) { Futures.addCallback(Futures.immediateFuture(result), new AlarmUpdateCallback(), wsCallBackExecutor); if (result.isSeverityChanged()) { AlarmInfo alarm = result.getAlarm(); - AlarmComment alarmComment = AlarmComment.builder() + AlarmComment.AlarmCommentBuilder alarmComment = AlarmComment.builder() .alarmId(alarm.getId()) .type(AlarmCommentType.SYSTEM) .comment(JacksonUtil.newObjectNode().put("text", - String.format("Alarm severity was updated from %s to %s", result.getOldSeverity(), alarm.getSeverity()))) - .build(); - alarmCommentService.createOrUpdateAlarmComment(alarm.getTenantId(), alarmComment); + String.format("Alarm severity was updated from %s to %s", result.getOldSeverity(), alarm.getSeverity()))); + if (request != null && request.getUserId() != null) { + alarmComment.userId(request.getUserId()); + } + alarmCommentService.createOrUpdateAlarmComment(alarm.getTenantId(), alarmComment.build()); } } return result; diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmCreateOrUpdateActiveRequest.java b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmCreateOrUpdateActiveRequest.java index d599f9cb0d..ecf882e2c9 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmCreateOrUpdateActiveRequest.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmCreateOrUpdateActiveRequest.java @@ -22,6 +22,7 @@ import lombok.Data; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.id.UserId; import org.thingsboard.server.common.data.validation.Length; import org.thingsboard.server.common.data.validation.NoXss; @@ -58,7 +59,13 @@ public class AlarmCreateOrUpdateActiveRequest implements AlarmModificationReques @ApiModelProperty(position = 9, value = "JSON object with propagation details") private AlarmPropagationInfo propagation; + private UserId userId; + public static AlarmCreateOrUpdateActiveRequest fromAlarm(Alarm a) { + return fromAlarm(a, null); + } + + public static AlarmCreateOrUpdateActiveRequest fromAlarm(Alarm a, UserId userId) { return AlarmCreateOrUpdateActiveRequest.builder() .tenantId(a.getTenantId()) .customerId(a.getCustomerId()) @@ -73,6 +80,7 @@ public class AlarmCreateOrUpdateActiveRequest implements AlarmModificationReques .propagateToOwner(a.isPropagateToOwner()) .propagateToTenant(a.isPropagateToTenant()) .propagateRelationTypes(a.getPropagateRelationTypes()).build()) + .userId(userId) .build(); } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmModificationRequest.java b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmModificationRequest.java index 27c31854ef..e40cb15d22 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmModificationRequest.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmModificationRequest.java @@ -16,6 +16,7 @@ package org.thingsboard.server.common.data.alarm; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.id.UserId; public interface AlarmModificationRequest { @@ -28,4 +29,6 @@ public interface AlarmModificationRequest { void setStartTs(long startTs); void setEndTs(long endTs); + + UserId getUserId(); } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmUpdateRequest.java b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmUpdateRequest.java index f284bb16d6..23edafd6d2 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmUpdateRequest.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmUpdateRequest.java @@ -21,6 +21,7 @@ import lombok.Builder; import lombok.Data; import org.thingsboard.server.common.data.id.AlarmId; import org.thingsboard.server.common.data.id.TenantId; +import org.thingsboard.server.common.data.id.UserId; import org.thingsboard.server.common.data.validation.NoXss; import javax.validation.Valid; @@ -53,7 +54,13 @@ public class AlarmUpdateRequest implements AlarmModificationRequest { @ApiModelProperty(position = 7, value = "JSON object with propagation details") private AlarmPropagationInfo propagation; + private UserId userId; + public static AlarmUpdateRequest fromAlarm(Alarm a) { + return fromAlarm(a, null); + } + + public static AlarmUpdateRequest fromAlarm(Alarm a, UserId userId) { return AlarmUpdateRequest.builder() .tenantId(a.getTenantId()) .alarmId(a.getId()) @@ -66,6 +73,7 @@ public class AlarmUpdateRequest implements AlarmModificationRequest { .propagateToOwner(a.isPropagateToOwner()) .propagateToTenant(a.isPropagateToTenant()) .propagateRelationTypes(a.getPropagateRelationTypes()).build()) + .userId(userId) .build(); } }