From e57972071605d24b856ec03db3dc17e9ca0556c0 Mon Sep 17 00:00:00 2001 From: Benjamin Eckstein Date: Thu, 16 Sep 2021 13:59:04 +0200 Subject: [PATCH] TSK-1731: Fix TaskQuery to order correctly by attachment received --- .../resources/sql/test-data/attachment.sql | 6 +-- .../taskana/task/internal/TaskQueryImpl.java | 4 +- .../acceptance/task/QueryTasksAccTest.java | 40 +++++++++++++++++++ 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/common/taskana-common-data/src/main/resources/sql/test-data/attachment.sql b/common/taskana-common-data/src/main/resources/sql/test-data/attachment.sql index 3a1f6785a..87242f797 100644 --- a/common/taskana-common-data/src/main/resources/sql/test-data/attachment.sql +++ b/common/taskana-common-data/src/main/resources/sql/test-data/attachment.sql @@ -8,11 +8,11 @@ INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000004','TKI:00 INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000005','TKI:000000000000000000000000000000000002', '2018-01-29 15:55:05', null , 'L110105' , 'CLI:000000000000000000000000000000000006', 'novatec' , 'novasys', 'nvinst', 'typ3', 'val2', 'ch5', '2018-02-01 12:00:00', null); INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000006','TKI:000000000000000000000000000000000002', '2018-01-29 15:55:06', null , 'L110107' , 'CLI:000000000000000000000000000000000007', 'novatec' , 'novasys', 'nvinst', 'typ3', 'val2', 'ch6', null, null); INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000007','TKI:000000000000000000000000000000000002', '2018-01-29 15:55:07', null , 'L12010' , 'CLI:100000000000000000000000000000000008', 'novatec' , 'novasys', 'nvinst', 'typ3', 'val3', 'ch6', null, null); -INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000008','TKI:000000000000000000000000000000000008', '2018-01-29 15:55:08', null , 'L140101' , 'CLI:000000000000000000000000000000000009', 'novatec' , 'novasys', 'nvinst', 'typ3', 'val3', 'ch6', null, null); +INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000008','TKI:000000000000000000000000000000000008', '2018-01-29 15:55:08', null , 'L140101' , 'CLI:000000000000000000000000000000000009', 'novatec' , 'novasys', 'nvinst', 'typ3', 'val3', 'ch6', '2018-02-01 08:00:00', null); INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000009','TKI:000000000000000000000000000000000000', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L1050' , 'CLI:100000000000000000000000000000000003', 'novatec' , 'novasys', 'nvinst', 'typ3', 'val4', 'ch7', null, null); -INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000010','TKI:000000000000000000000000000000000052', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L1050' , 'CLI:100000000000000000000000000000000003', 'novatec' , 'novasys', 'nvinst', 'typ4', 'val4', 'ch7', null, null); +INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000010','TKI:000000000000000000000000000000000052', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L1050' , 'CLI:100000000000000000000000000000000003', 'novatec' , 'novasys', 'nvinst', 'typ4', 'val4', 'ch7', '2018-02-01 09:00:00', null); INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000011','TKI:000000000000000000000000000000000053', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L1050' , 'CLI:100000000000000000000000000000000003', 'novatec' , 'novasys', 'nvinst', 'typ4', 'val4', 'ch7', null, null); -INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000012','TKI:000000000000000000000000000000000054', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L1050' , 'CLI:100000000000000000000000000000000003', 'novatec' , 'novasys', 'nvinst', 'typ5', 'val4', 'ch7', null, null); +INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000012','TKI:000000000000000000000000000000000054', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L1050' , 'CLI:100000000000000000000000000000000003', 'novatec' , 'novasys', 'nvinst', 'typ5', 'val4', 'ch7', '2018-02-01 07:00:00', null); INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000013','TKI:000000000000000000000000000000000055', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L1050' , 'CLI:100000000000000000000000000000000003', 'novatec' , 'novasys', 'nvinst', 'typ5', 'val4', 'ch7', null, null); INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000014','TKI:000000000000000000000000000000000010', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L11010' , 'CLI:100000000000000000000000000000000004', 'novatec' , 'novasys', 'nvinst', 'typ5', 'val4', 'ch8', null, null); INSERT INTO ATTACHMENT VALUES('TAI:000000000000000000000000000000000015','TKI:000000000000000000000000000000000011', '2018-01-29 15:55:00', '2018-01-30 15:55:00', 'L10303' , 'CLI:100000000000000000000000000000000002', 'novatec' , 'novasys', 'nvinst', 'typ5', 'val5', 'ch8', '2018-01-30 12:00:00', null); diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskQueryImpl.java index 187891a9e..28b10bce3 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskQueryImpl.java @@ -974,7 +974,9 @@ public class TaskQueryImpl implements TaskQuery { public TaskQuery orderByAttachmentReceived(SortDirection sortDirection) { joinWithAttachments = true; addAttachmentColumnsToSelectClauseForOrdering = true; - return addOrderCriteria("RECEIVED", sortDirection); + return DB.isDb2(getDatabaseId()) + ? addOrderCriteria("ARECEIVED", sortDirection) + : addOrderCriteria("a.RECEIVED", sortDirection); } public TaskQuery selectAndClaimEquals(boolean selectAndClaim) { diff --git a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java index 08a73fda9..b1ec95b09 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java @@ -788,6 +788,46 @@ class QueryTasksAccTest extends AbstractAccTest { .isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed()); } + @WithAccessId(user = "admin") + @Test + void testQueryForOrderByAttachmentReceivedAsc() { + List results = + TASK_SERVICE + .createTaskQuery() + .idIn( + "TKI:000000000000000000000000000000000008", + "TKI:000000000000000000000000000000000052", + "TKI:000000000000000000000000000000000054") + .orderByAttachmentReceived(ASCENDING) + .list(); + + assertThat(results) + .hasSize(3) + .flatExtracting(TaskSummary::getAttachmentSummaries) + .extracting(AttachmentSummary::getReceived) + .isSorted(); + } + + @WithAccessId(user = "admin") + @Test + void testQueryForOrderByAttachmentReceivedDesc() { + List results = + TASK_SERVICE + .createTaskQuery() + .idIn( + "TKI:000000000000000000000000000000000008", + "TKI:000000000000000000000000000000000052", + "TKI:000000000000000000000000000000000054") + .orderByAttachmentReceived(DESCENDING) + .list(); + + assertThat(results) + .hasSize(3) + .flatExtracting(TaskSummary::getAttachmentSummaries) + .extracting(AttachmentSummary::getReceived) + .isSortedAccordingTo(Comparator.naturalOrder().reversed()); + } + @WithAccessId(user = "admin") @Test void testQueryForOrderByAttachmentChannelAscAndReferenceDesc() {