From 44dcda3bc5aa9b3a80238b032a55cde5744dff56 Mon Sep 17 00:00:00 2001 From: zbeacon Date: Tue, 17 Jan 2023 08:15:00 +0200 Subject: [PATCH] Changes, accroding to comments --- .../main/data/upgrade/3.4.3/schema_update.sql | 2 -- .../server/controller/AlarmController.java | 8 ++--- .../service/action/EntityActionService.java | 4 +-- .../entitiy/alarm/DefaultTbAlarmService.java | 29 ++++++------------- .../service/entitiy/alarm/TbAlarmService.java | 4 +-- .../queue/DefaultTbCoreConsumerService.java | 4 +-- .../subscription/TbSubscriptionUtils.java | 6 ++-- .../DefaultAlarmSubscriptionService.java | 24 ++++++++++----- common/cluster-api/src/main/proto/queue.proto | 6 ++-- .../server/dao/alarm/AlarmService.java | 4 +-- .../server/dao/alarm/BaseAlarmService.java | 8 ++--- .../dao/model/sql/EntityAlarmEntity.java | 9 ------ .../main/resources/sql/schema-entities.sql | 1 - .../engine/api/RuleEngineAlarmService.java | 4 +-- 14 files changed, 49 insertions(+), 64 deletions(-) diff --git a/application/src/main/data/upgrade/3.4.3/schema_update.sql b/application/src/main/data/upgrade/3.4.3/schema_update.sql index 117f8f5fa3..234f9eeeeb 100644 --- a/application/src/main/data/upgrade/3.4.3/schema_update.sql +++ b/application/src/main/data/upgrade/3.4.3/schema_update.sql @@ -20,8 +20,6 @@ ALTER TABLE alarm ADD COLUMN IF NOT EXISTS assign_ts BIGINT; ALTER TABLE alarm ADD COLUMN IF NOT EXISTS assignee_id UUID; -ALTER TABLE entity_alarm ADD COLUMN IF NOT EXISTS assignee_id UUID; - -- ALARM ASSIGN TO USER END CREATE TABLE IF NOT EXISTS alarm_comment ( diff --git a/application/src/main/java/org/thingsboard/server/controller/AlarmController.java b/application/src/main/java/org/thingsboard/server/controller/AlarmController.java index 03a7f20c8c..cf55311016 100644 --- a/application/src/main/java/org/thingsboard/server/controller/AlarmController.java +++ b/application/src/main/java/org/thingsboard/server/controller/AlarmController.java @@ -196,7 +196,7 @@ public class AlarmController extends BaseController { @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") @RequestMapping(value = "/alarm/{alarmId}/assign/{assigneeId}", method = RequestMethod.POST) @ResponseStatus(value = HttpStatus.OK) - public void assignAlarm(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) + public Alarm assignAlarm(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) @PathVariable(ALARM_ID) String strAlarmId, @ApiParam(value = ASSIGN_ID_PARAM_DESCRIPTION) @PathVariable(ASSIGNEE_ID) String strAssigneeId @@ -214,7 +214,7 @@ public class AlarmController extends BaseController { } catch (Exception e) { throw new ThingsboardException("Assignee user doesn't have permission for alarm originator", ThingsboardErrorCode.PERMISSION_DENIED); } - tbAlarmService.assign(alarm, getCurrentUser(), assigneeId).get(); + return tbAlarmService.assign(alarm, getCurrentUser(), assigneeId); } @ApiOperation(value = "Unassign Alarm (unassignAlarm)", @@ -224,13 +224,13 @@ public class AlarmController extends BaseController { @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") @RequestMapping(value = "/alarm/{alarmId}/assign", method = RequestMethod.DELETE) @ResponseStatus(value = HttpStatus.OK) - public void assignAlarm(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) + public Alarm assignAlarm(@ApiParam(value = ALARM_ID_PARAM_DESCRIPTION) @PathVariable(ALARM_ID) String strAlarmId ) throws Exception { checkParameter(ALARM_ID, strAlarmId); AlarmId alarmId = new AlarmId(toUUID(strAlarmId)); Alarm alarm = checkAlarmId(alarmId, Operation.WRITE); - tbAlarmService.unassign(alarm, getCurrentUser()).get(); + return tbAlarmService.unassign(alarm, getCurrentUser()); } @ApiOperation(value = "Get Alarms (getAlarms)", diff --git a/application/src/main/java/org/thingsboard/server/service/action/EntityActionService.java b/application/src/main/java/org/thingsboard/server/service/action/EntityActionService.java index fc8b71947c..fab8622d8c 100644 --- a/application/src/main/java/org/thingsboard/server/service/action/EntityActionService.java +++ b/application/src/main/java/org/thingsboard/server/service/action/EntityActionService.java @@ -87,10 +87,10 @@ public class EntityActionService { msgType = DataConstants.ALARM_CLEAR; break; case ALARM_ASSIGN: - msgType = DataConstants.ALARM_CLEAR; + msgType = DataConstants.ALARM_ASSIGN; break; case ALARM_UNASSIGN: - msgType = DataConstants.ALARM_CLEAR; + msgType = DataConstants.ALARM_UNASSIGN; break; case ALARM_DELETE: msgType = DataConstants.ALARM_DELETE; 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 368253c075..28c4a4aa09 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 @@ -32,6 +32,7 @@ import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UserId; +import org.thingsboard.server.dao.alarm.AlarmOperationResult; import org.thingsboard.server.service.entitiy.AbstractTbEntityService; import java.util.List; @@ -95,31 +96,19 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb } @Override - public ListenableFuture assign(Alarm alarm, User user, UserId assigneeId) { + public Alarm assign(Alarm alarm, User user, UserId assigneeId) { long assignTs = System.currentTimeMillis(); - ListenableFuture future = alarmSubscriptionService.assignAlarm(alarm.getTenantId(), alarm.getId(), assigneeId, assignTs); - return Futures.transform(future, result -> { - if (result != null && result) { - alarm.setAssignTs(assignTs); - alarm.setAssigneeId(assigneeId); - notificationEntityService.notifyCreateOrUpdateAlarm(alarm, ActionType.ALARM_ASSIGN, user); - } - return null; - }, MoreExecutors.directExecutor()); + Alarm assignedAlarm = alarmSubscriptionService.assignAlarm(alarm.getTenantId(), alarm.getId(), assigneeId, assignTs); + notificationEntityService.notifyCreateOrUpdateAlarm(assignedAlarm, ActionType.ALARM_ASSIGN, user); + return assignedAlarm; } @Override - public ListenableFuture unassign(Alarm alarm, User user) { + public Alarm unassign(Alarm alarm, User user) { long assignTs = System.currentTimeMillis(); - ListenableFuture future = alarmSubscriptionService.unassignAlarm(alarm.getTenantId(), alarm.getId(), assignTs); - return Futures.transform(future, result -> { - if (result != null && result) { - alarm.setAssignTs(assignTs); - alarm.setAssigneeId(null); - notificationEntityService.notifyCreateOrUpdateAlarm(alarm, ActionType.ALARM_UNASSIGN, user); - } - return null; - }, MoreExecutors.directExecutor()); + Alarm unassignedAlarm = alarmSubscriptionService.unassignAlarm(alarm.getTenantId(), alarm.getId(), assignTs); + notificationEntityService.notifyCreateOrUpdateAlarm(unassignedAlarm, ActionType.ALARM_UNASSIGN, user); + return unassignedAlarm; } @Override diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/alarm/TbAlarmService.java b/application/src/main/java/org/thingsboard/server/service/entitiy/alarm/TbAlarmService.java index 0cf2de5ba9..66b733783c 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/alarm/TbAlarmService.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/alarm/TbAlarmService.java @@ -29,9 +29,9 @@ public interface TbAlarmService { ListenableFuture clear(Alarm alarm, User user); - ListenableFuture assign(Alarm alarm, User user, UserId assigneeId); + Alarm assign(Alarm alarm, User user, UserId assigneeId); - ListenableFuture unassign(Alarm alarm, User user); + Alarm unassign(Alarm alarm, User user); Boolean delete(Alarm alarm, User user); } diff --git a/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java b/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java index c106090508..3fcf3a8b29 100644 --- a/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java +++ b/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java @@ -503,13 +503,13 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService 0) { return new AlarmSubscriptionUpdate(proto.getSubscriptionId(), SubscriptionErrorCode.forCode(proto.getErrorCode()), proto.getErrorMsg()); } else { - AlarmInfo alarmInfo = JacksonUtil.fromString(proto.getAlarmInfo(), AlarmInfo.class); + AlarmInfo alarmInfo = JacksonUtil.fromString(proto.getAlarm(), AlarmInfo.class); return new AlarmSubscriptionUpdate(proto.getSubscriptionId(), alarmInfo); } } @@ -324,7 +324,7 @@ public class TbSubscriptionUtils { builder.setEntityIdLSB(entityId.getId().getLeastSignificantBits()); builder.setTenantIdMSB(tenantId.getId().getMostSignificantBits()); builder.setTenantIdLSB(tenantId.getId().getLeastSignificantBits()); - builder.setAlarmInfo(JacksonUtil.toString(alarmInfo)); + builder.setAlarm(JacksonUtil.toString(alarmInfo)); SubscriptionMgrMsgProto.Builder msgBuilder = SubscriptionMgrMsgProto.newBuilder(); msgBuilder.setAlarmUpdate(builder); return ToCoreMsg.newBuilder().setToSubscriptionMgrMsg(msgBuilder.build()).build(); @@ -337,7 +337,7 @@ public class TbSubscriptionUtils { builder.setEntityIdLSB(entityId.getId().getLeastSignificantBits()); builder.setTenantIdMSB(tenantId.getId().getMostSignificantBits()); builder.setTenantIdLSB(tenantId.getId().getLeastSignificantBits()); - builder.setAlarmInfo(JacksonUtil.toString(alarmInfo)); + builder.setAlarm(JacksonUtil.toString(alarmInfo)); SubscriptionMgrMsgProto.Builder msgBuilder = SubscriptionMgrMsgProto.newBuilder(); msgBuilder.setAlarmDelete(builder); return ToCoreMsg.newBuilder().setToSubscriptionMgrMsg(msgBuilder.build()).build(); 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 9fab55218a..2b28c382ed 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 @@ -142,17 +142,25 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService } @Override - public ListenableFuture assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs) { - ListenableFuture result = alarmService.assignAlarm(tenantId, alarmId, assigneeId, assignTs); - Futures.addCallback(result, new AlarmUpdateCallback(), wsCallBackExecutor); - return Futures.transform(result, AlarmOperationResult::isSuccessful, wsCallBackExecutor); + public Alarm assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs) { + AlarmOperationResult result = alarmService.assignAlarm(tenantId, alarmId, assigneeId, assignTs); + if (result.isSuccessful()) { + onAlarmUpdated(result); + } else { + log.warn("Failed to assign alarm!"); + } + return result.getAlarmInfo(); } @Override - public ListenableFuture unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs) { - ListenableFuture result = alarmService.unassignAlarm(tenantId, alarmId, assignTs); - Futures.addCallback(result, new AlarmUpdateCallback(), wsCallBackExecutor); - return Futures.transform(result, AlarmOperationResult::isSuccessful, wsCallBackExecutor); + public Alarm unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs) { + AlarmOperationResult result = alarmService.unassignAlarm(tenantId, alarmId, assignTs); + if (result.isSuccessful()) { + onAlarmUpdated(result); + } else { + log.warn("Failed to unassign alarm!"); + } + return result.getAlarmInfo(); } @Override diff --git a/common/cluster-api/src/main/proto/queue.proto b/common/cluster-api/src/main/proto/queue.proto index 301c395a18..5a28d42546 100644 --- a/common/cluster-api/src/main/proto/queue.proto +++ b/common/cluster-api/src/main/proto/queue.proto @@ -560,7 +560,7 @@ message TbAlarmSubscriptionUpdateProto { int32 subscriptionId = 2; int32 errorCode = 3; string errorMsg = 4; - string alarmInfo = 5; + string alarm = 5; bool deleted = 6; } @@ -580,7 +580,7 @@ message TbAlarmUpdateProto { int64 entityIdLSB = 3; int64 tenantIdMSB = 4; int64 tenantIdLSB = 5; - string alarmInfo = 6; + string alarm = 6; } message TbAlarmDeleteProto { @@ -589,7 +589,7 @@ message TbAlarmDeleteProto { int64 entityIdLSB = 3; int64 tenantIdMSB = 4; int64 tenantIdLSB = 5; - string alarmInfo = 6; + string alarm = 6; } message TbAttributeDeleteProto { diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java index d2bc6fcd47..077a3a8b97 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java @@ -50,9 +50,9 @@ public interface AlarmService extends EntityDaoService { ListenableFuture clearAlarm(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs); - ListenableFuture assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs); + AlarmOperationResult assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs); - ListenableFuture unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs); + AlarmOperationResult unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs); Alarm findAlarmById(TenantId tenantId, AlarmId alarmId); diff --git a/dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java b/dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java index 0ff440d079..82385f776f 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java @@ -279,8 +279,8 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ } @Override - public ListenableFuture assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTime) { - return getAndUpdateAsync(tenantId, alarmId, new Function() { + public AlarmOperationResult assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTime) { + return getAndUpdate(tenantId, alarmId, new Function<>() { @Nullable @Override public AlarmOperationResult apply(@Nullable Alarm alarm) { @@ -298,8 +298,8 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ } @Override - public ListenableFuture unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTime) { - return getAndUpdateAsync(tenantId, alarmId, new Function() { + public AlarmOperationResult unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTime) { + return getAndUpdate(tenantId, alarmId, new Function<>() { @Nullable @Override public AlarmOperationResult apply(@Nullable Alarm alarm) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityAlarmEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityAlarmEntity.java index 434a4662fc..d02f5f0778 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityAlarmEntity.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityAlarmEntity.java @@ -68,9 +68,6 @@ public final class EntityAlarmEntity implements ToData { @Column(name = CUSTOMER_ID_PROPERTY, columnDefinition = "uuid") private UUID customerId; - @Column(name = ASSIGNEE_ID_PROPERTY, columnDefinition = "uuid") - private UUID assigneeId; - public EntityAlarmEntity() { super(); } @@ -85,9 +82,6 @@ public final class EntityAlarmEntity implements ToData { if (entityAlarm.getCustomerId() != null) { customerId = entityAlarm.getCustomerId().getId(); } - if (entityAlarm.getAssigneeId() != null) { - assigneeId = entityAlarm.getAssigneeId().getId(); - } } @Override @@ -101,9 +95,6 @@ public final class EntityAlarmEntity implements ToData { if (customerId != null) { result.setCustomerId(new CustomerId(customerId)); } - if (assigneeId != null) { - result.setAssigneeId(new UserId(assigneeId)); - } return result; } diff --git a/dao/src/main/resources/sql/schema-entities.sql b/dao/src/main/resources/sql/schema-entities.sql index 2a7e0df528..1e0b50cc29 100644 --- a/dao/src/main/resources/sql/schema-entities.sql +++ b/dao/src/main/resources/sql/schema-entities.sql @@ -81,7 +81,6 @@ CREATE TABLE IF NOT EXISTS entity_alarm ( alarm_type varchar(255) NOT NULL, customer_id uuid, alarm_id uuid, - assignee_id uuid, CONSTRAINT entity_alarm_pkey PRIMARY KEY (entity_id, alarm_id), CONSTRAINT fk_entity_alarm_id FOREIGN KEY (alarm_id) REFERENCES alarm(id) ON DELETE CASCADE ); 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 3afaf677d8..053cc03eed 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 @@ -50,9 +50,9 @@ public interface RuleEngineAlarmService { ListenableFuture clearAlarmForResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs); - ListenableFuture assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs); + Alarm assignAlarm(TenantId tenantId, AlarmId alarmId, UserId assigneeId, long assignTs); - ListenableFuture unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs); + Alarm unassignAlarm(TenantId tenantId, AlarmId alarmId, long assignTs); ListenableFuture findAlarmByIdAsync(TenantId tenantId, AlarmId alarmId);