From f877fdef3f044d5e630ef1130bf6365f590d0bc4 Mon Sep 17 00:00:00 2001 From: Andrii Shvaika Date: Fri, 17 Feb 2023 12:37:30 +0200 Subject: [PATCH] Alarm assignee as an object --- .../server/common/data/alarm/AlarmInfo.java | 24 ++++--------------- .../server/common/data/query/AlarmData.java | 8 ++----- .../server/dao/alarm/BaseAlarmService.java | 17 +++++-------- .../server/dao/model/sql/AlarmInfoEntity.java | 7 +++--- .../dao/sql/query/AlarmDataAdapter.java | 5 ++-- .../query/DefaultAlarmQueryRepository.java | 7 ++++++ 6 files changed, 25 insertions(+), 43 deletions(-) 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 276c2a85b4..405097f6f5 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 @@ -44,18 +44,8 @@ public class AlarmInfo extends Alarm { @Getter @Setter - @ApiModelProperty(position = 21, value = "Alarm assignee first name") - private String assigneeFirstName; - - @Getter - @Setter - @ApiModelProperty(position = 22, value = "Alarm assignee last name") - private String assigneeLastName; - - @Getter - @Setter - @ApiModelProperty(position = 23, value = "Alarm assignee email") - private String assigneeEmail; + @ApiModelProperty(position = 21, value = "Alarm assignee") + private AlarmAssignee assignee; public AlarmInfo() { super(); @@ -69,18 +59,14 @@ public class AlarmInfo extends Alarm { super(alarmInfo); this.originatorName = alarmInfo.originatorName; this.originatorLabel = alarmInfo.originatorLabel; - this.assigneeFirstName = alarmInfo.assigneeFirstName; - this.assigneeLastName = alarmInfo.assigneeLastName; - this.assigneeEmail = alarmInfo.assigneeEmail; + this.assignee = alarmInfo.getAssignee(); } - public AlarmInfo(Alarm alarm, String originatorName, String originatorLabel, String assigneeFirstName, String assigneeLastName, String assigneeEmail) { + public AlarmInfo(Alarm alarm, String originatorName, String originatorLabel, AlarmAssignee assignee) { super(alarm); this.originatorName = originatorName; this.originatorLabel = originatorLabel; - this.assigneeFirstName = assigneeFirstName; - this.assigneeLastName = assigneeLastName; - this.assigneeEmail = assigneeEmail; + this.assignee = assignee; } } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/query/AlarmData.java b/common/data/src/main/java/org/thingsboard/server/common/data/query/AlarmData.java index ef3e627a7b..5e7f38cce2 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/query/AlarmData.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/query/AlarmData.java @@ -52,15 +52,11 @@ public class AlarmData extends AlarmInfo { if (assigneeUpdate != null) { if (assigneeUpdate.isDeleted()) { this.setAssigneeId(null); - this.setAssigneeFirstName(null); - this.setAssigneeLastName(null); - this.setAssigneeEmail(null); + this.setAssignee(null); } else { AlarmAssignee assignee = assigneeUpdate.getAssignee(); this.setAssigneeId(assignee.getId()); - this.setAssigneeFirstName(assignee.getFirstName()); - this.setAssigneeLastName(assignee.getLastName()); - this.setAssigneeEmail(assignee.getEmail()); + this.setAssignee(assignee); } } return this; 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 638ced2c34..218ffd2b52 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 @@ -289,10 +289,9 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ alarm.setAssignTs(assignTime); alarm = alarmDao.save(alarm.getTenantId(), alarm); AlarmInfo alarmInfo = getAlarmInfo(tenantId, alarm); - return new AlarmOperationResult(alarm, new AlarmAssigneeUpdate(false, - new AlarmAssignee(alarmInfo.getAssigneeId(), alarmInfo.getAssigneeFirstName(), - alarmInfo.getAssigneeLastName(), alarmInfo.getAssigneeEmail()) - ), new ArrayList<>(getPropagationEntityIds(alarm))); + return new AlarmOperationResult(alarm, + new AlarmAssigneeUpdate(false, alarmInfo.getAssignee()), + new ArrayList<>(getPropagationEntityIds(alarm))); } } }); @@ -467,9 +466,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ private AlarmInfo getAlarmInfo(TenantId tenantId, Alarm alarm) { String originatorName; String originatorLabel; - String assigneeFirstName = null; - String assigneeLastName = null; - String assigneeEmail = null; Optional detailsOpt = entityService.fetchNameLabelAndCustomerDetails(tenantId, alarm.getOriginator()); if (detailsOpt.isPresent() && detailsOpt.get().getName() != null) { @@ -481,13 +477,12 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ originatorLabel = "Deleted"; } + AlarmAssignee assignee = null; if (alarm.getAssigneeId() != null) { User assignedUser = userService.findUserById(tenantId, alarm.getAssigneeId()); - assigneeFirstName = assignedUser.getFirstName(); - assigneeLastName = assignedUser.getLastName(); - assigneeEmail = assignedUser.getEmail(); + assignee = new AlarmAssignee(assignedUser.getId(), assignedUser.getFirstName(), assignedUser.getLastName(), assignedUser.getEmail()); } - return new AlarmInfo(alarm, originatorName, originatorLabel, assigneeFirstName, assigneeLastName, assigneeEmail); + return new AlarmInfo(alarm, originatorName, originatorLabel, assignee); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmInfoEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmInfoEntity.java index 09296f3449..0587cdb4ab 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmInfoEntity.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmInfoEntity.java @@ -17,7 +17,9 @@ package org.thingsboard.server.dao.model.sql; import lombok.Data; import lombok.EqualsAndHashCode; +import org.thingsboard.server.common.data.alarm.AlarmAssignee; import org.thingsboard.server.common.data.alarm.AlarmInfo; +import org.thingsboard.server.common.data.id.UserId; @Data @EqualsAndHashCode(callSuper = true) @@ -47,10 +49,7 @@ public class AlarmInfoEntity extends AbstractAlarmEntity { AlarmInfo alarmInfo = new AlarmInfo(super.toAlarm()); alarmInfo.setOriginatorName(originatorName); alarmInfo.setOriginatorLabel(originatorLabel); - - alarmInfo.setAssigneeFirstName(assigneeFirstName); - alarmInfo.setAssigneeLastName(assigneeLastName); - alarmInfo.setAssigneeEmail(assigneeEmail); + alarmInfo.setAssignee(new AlarmAssignee(new UserId(getAssigneeId()), assigneeFirstName, assigneeLastName, assigneeEmail)); return alarmInfo; } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/query/AlarmDataAdapter.java b/dao/src/main/java/org/thingsboard/server/dao/sql/query/AlarmDataAdapter.java index f86f3d0e8f..3a80d83fb5 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/query/AlarmDataAdapter.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/query/AlarmDataAdapter.java @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.alarm.Alarm; +import org.thingsboard.server.common.data.alarm.AlarmAssignee; import org.thingsboard.server.common.data.alarm.AlarmSeverity; import org.thingsboard.server.common.data.alarm.AlarmStatus; import org.thingsboard.server.common.data.id.AlarmId; @@ -123,9 +124,7 @@ public class AlarmDataAdapter { AlarmData alarmData = new AlarmData(alarm, entityId); alarmData.setOriginatorName(originatorName); alarmData.setOriginatorLabel(originatorLabel); - alarmData.setAssigneeFirstName(assigneeFirstName); - alarmData.setAssigneeLastName(assigneeLastName); - alarmData.setAssigneeEmail(assigneeEmail); + alarmData.setAssignee(new AlarmAssignee(alarm.getAssigneeId(), assigneeFirstName, assigneeLastName, assigneeEmail)); return alarmData; } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java index 91c0694422..67c759d6cf 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java @@ -35,6 +35,7 @@ import org.thingsboard.server.common.data.query.EntityKey; import org.thingsboard.server.common.data.query.EntityKeyType; import org.thingsboard.server.dao.model.ModelConstants; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -186,6 +187,12 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository { } fromPart.append(LEFT_JOIN_TB_USERS); EntityDataSortOrder sortOrder = pageLink.getSortOrder(); + + List queryFields = new ArrayList<>(); + for(EntityKey key: query.getAlarmFields()){ + if() + } + String textSearchQuery = buildTextSearchQuery(ctx, query.getAlarmFields(), pageLink.getTextSearch()); if (sortOrder != null && sortOrder.getKey().getType().equals(EntityKeyType.ALARM_FIELD)) { String sortOrderKey = sortOrder.getKey().getKey();