From 89ee862b13e74767313aa1728b67ac4fa208385b Mon Sep 17 00:00:00 2001 From: zbeacon Date: Fri, 17 Mar 2023 11:28:59 +0200 Subject: [PATCH 1/2] Added sorting for alarm assignee field in query --- .../server/dao/sql/query/DefaultAlarmQueryRepository.java | 4 ++++ 1 file changed, 4 insertions(+) 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 ecf9c1c95f..88cc5c23d1 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 @@ -148,6 +148,10 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository { } EntityDataSortOrder sortOrder = pageLink.getSortOrder(); + if (EntityKeyType.ALARM_FIELD.equals(sortOrder.getKey().getType()) && ASSIGNEE_KEY.equalsIgnoreCase(sortOrder.getKey().getKey())) { + sortOrder = new EntityDataSortOrder(new EntityKey(EntityKeyType.ALARM_FIELD, ASSIGNEE_EMAIL_KEY), sortOrder.getDirection()); + } + List alarmFields = new ArrayList<>(); for (EntityKey key : query.getAlarmFields()) { if (EntityKeyType.ALARM_FIELD.equals(key.getType()) && ASSIGNEE_KEY.equalsIgnoreCase(key.getKey())) { From a889649d32c567d4a4c697ea9a670cc621742f8a Mon Sep 17 00:00:00 2001 From: zbeacon Date: Fri, 17 Mar 2023 12:55:44 +0200 Subject: [PATCH 2/2] Added sorting to test for alarm assignment, added and to where clause for filter by assigneeId --- .../server/dao/sql/query/DefaultAlarmQueryRepository.java | 4 +++- .../thingsboard/server/dao/service/BaseAlarmServiceTest.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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 88cc5c23d1..d9fd2cc66d 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 @@ -148,7 +148,7 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository { } EntityDataSortOrder sortOrder = pageLink.getSortOrder(); - if (EntityKeyType.ALARM_FIELD.equals(sortOrder.getKey().getType()) && ASSIGNEE_KEY.equalsIgnoreCase(sortOrder.getKey().getKey())) { + if (sortOrder != null && EntityKeyType.ALARM_FIELD.equals(sortOrder.getKey().getType()) && ASSIGNEE_KEY.equalsIgnoreCase(sortOrder.getKey().getKey())) { sortOrder = new EntityDataSortOrder(new EntityKey(EntityKeyType.ALARM_FIELD, ASSIGNEE_EMAIL_KEY), sortOrder.getDirection()); } @@ -269,6 +269,8 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository { } if (pageLink.getAssigneeId() != null) { + addAndIfNeeded(wherePart, addAnd); + addAnd = true; ctx.addUuidParameter("assigneeId", pageLink.getAssigneeId().getId()); wherePart.append(" a.assignee_id = :assigneeId"); } diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java index 73a489ab68..9c81bfd232 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java @@ -267,6 +267,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { pageLink.setPage(0); pageLink.setPageSize(10); pageLink.setAssigneeId(tenantUser.getId()); + pageLink.setSortOrder(new EntityDataSortOrder(new EntityKey(EntityKeyType.ALARM_FIELD, "assignee"))); PageData assignedAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(created.getOriginator())); Assert.assertNotNull(assignedAlarms.getData());