From 328d53dffc47150ccf745b88765625c59e2adc8d Mon Sep 17 00:00:00 2001 From: imbeacon Date: Fri, 11 Aug 2023 07:52:03 +0300 Subject: [PATCH] Changed alarms unassign method to returen ids instead of Alarm objects and changed to use entity from deleted entity event --- .../entitiy/alarm/DefaultTbAlarmService.java | 18 ++++++++++-------- .../server/dao/alarm/AlarmService.java | 2 +- .../thingsboard/server/dao/alarm/AlarmDao.java | 2 +- .../server/dao/alarm/BaseAlarmService.java | 6 +++--- .../server/dao/sql/alarm/AlarmRepository.java | 4 ++-- .../server/dao/sql/alarm/JpaAlarmDao.java | 7 ++++--- 6 files changed, 21 insertions(+), 18 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 9cd7b2efac..f1f8ba038c 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 @@ -34,6 +34,7 @@ import org.thingsboard.server.common.data.alarm.AlarmUpdateRequest; import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.exception.ThingsboardErrorCode; import org.thingsboard.server.common.data.exception.ThingsboardException; +import org.thingsboard.server.common.data.id.AlarmId; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UserId; @@ -226,22 +227,23 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb return alarmSubscriptionService.deleteAlarm(tenantId, alarm.getId()); } - private void unassignDeletedUserAlarms(UserId userId) { - List alarms = alarmService.findAlarmsByAssigneeId(userId); - for (Alarm alarm : alarms) { - AlarmApiCallResult result = alarmSubscriptionService.unassignAlarm(alarm.getTenantId(), alarm.getId(), System.currentTimeMillis()); + private void unassignDeletedUserAlarms(User user) { + List alarmIds = alarmService.findAlarmIdsByAssigneeId(user.getId()); + for (AlarmId alarmId : alarmIds) { + AlarmApiCallResult result = alarmSubscriptionService.unassignAlarm(user.getTenantId(), alarmId, System.currentTimeMillis()); + Alarm alarm = result.getAlarm(); if (!result.isSuccessful()) { continue; } if (result.isModified()) { try { AlarmComment alarmComment = AlarmComment.builder() - .alarmId(alarm.getId()) + .alarmId(alarmId) .type(AlarmCommentType.SYSTEM) .comment(JacksonUtil.newObjectNode() .put("text", String.format("Alarm was unassigned because user with id %s - was deleted", - userId.toString())) - .put("userId", userId.toString()) + (user.getFirstName() == null || user.getLastName() == null) ? user.getName() : user.getFirstName() + " " + user.getLastName())) + .put("userId", user.getId().toString()) .put("subtype", "ASSIGN")) .build(); alarmCommentService.saveAlarmComment(alarm, alarmComment, null); @@ -260,7 +262,7 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb log.trace("[{}] DeleteEntityEvent called: {}", event.getTenantId(), event); EntityId entityId = event.getEntityId(); if (EntityType.USER.equals(entityId.getEntityType())) { - unassignDeletedUserAlarms((UserId) entityId); + unassignDeletedUserAlarms((User) event.getEntity()); } } catch (Exception e) { log.error("[{}] failed to process DeleteEntityEvent: {}", event.getTenantId(), event); 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 212f544d29..7bfdeaa523 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 @@ -119,7 +119,7 @@ public interface AlarmService extends EntityDaoService { PageData findAlarmDataByQueryForEntities(TenantId tenantId, AlarmDataQuery query, Collection orderedEntityIds); - List findAlarmsByAssigneeId(UserId userId); + List findAlarmIdsByAssigneeId(UserId userId); void deleteEntityAlarmRelations(TenantId tenantId, EntityId entityId); diff --git a/dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java b/dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java index 3cfafa4ebd..2e8844701c 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java @@ -77,7 +77,7 @@ public interface AlarmDao extends Dao { PageData findAlarmsIdsByEndTsBeforeAndTenantId(Long time, TenantId tenantId, PageLink pageLink); - List findAlarmByAssigneeId(UUID key); + List findAlarmIdsByAssigneeId(UUID key); void createEntityAlarmRecord(EntityAlarm entityAlarm); 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 106e37f278..f36b56ca7a 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 @@ -385,10 +385,10 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ } @Override - public List findAlarmsByAssigneeId(UserId userId) { - log.trace("Executing findAlarmsByAssigneeId [{}]", userId); + public List findAlarmIdsByAssigneeId(UserId userId) { + log.trace("Executing findAlarmIdsByAssigneeId [{}]", userId); validateId(userId, "Incorrect alarmId " + userId); - return alarmDao.findAlarmByAssigneeId(userId.getId()); + return alarmDao.findAlarmIdsByAssigneeId(userId.getId()); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java index 1479b396a7..b35ca52e79 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java @@ -315,8 +315,8 @@ public interface AlarmRepository extends JpaRepository { @Query(value = "SELECT a FROM AlarmInfoEntity a WHERE a.tenantId = :tenantId AND a.id = :alarmId") AlarmInfoEntity findAlarmInfoById(@Param("tenantId") UUID tenantId, @Param("alarmId") UUID alarmId); - @Query("SELECT a FROM AlarmEntity a WHERE a.assigneeId = :assigneeId") - List findAlarmByAssigneeId(@Param("assigneeId") UUID assigneeId); + @Query("SELECT a.id FROM AlarmEntity a WHERE a.assigneeId = :assigneeId") + List findAlarmIdsByAssigneeId(@Param("assigneeId") UUID assigneeId); @Query(value = "SELECT create_or_update_active_alarm(:t_id, :c_id, :a_id, :a_created_ts, :a_o_id, :a_o_type, :a_type, :a_severity, " + ":a_start_ts, :a_end_ts, :a_details, :a_propagate, :a_propagate_to_owner, " + diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java index da5f6bcaf3..045297f4ba 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java @@ -66,6 +66,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.UUID; +import java.util.stream.Collectors; /** * Created by Valerii Sosliuk on 5/19/2017. @@ -286,9 +287,9 @@ public class JpaAlarmDao extends JpaAbstractDao implements A } @Override - public List findAlarmByAssigneeId(UUID key) { - List assignedAlarms = alarmRepository.findAlarmByAssigneeId(key); - return DaoUtil.convertDataList(assignedAlarms); + public List findAlarmIdsByAssigneeId(UUID key) { + List assignedAlarmIds = alarmRepository.findAlarmIdsByAssigneeId(key); + return assignedAlarmIds.stream().map(AlarmId::new).collect(Collectors.toList()); } @Override