From 797d9f58e24a8389bb6b04702230b13bbde1747e Mon Sep 17 00:00:00 2001 From: BVier <26220150+BVier@users.noreply.github.com> Date: Mon, 28 Jan 2019 12:42:50 +0100 Subject: [PATCH] TSK-774: set Flags for listValues() --- .../java/pro/taskana/TaskQueryColumnName.java | 4 +- .../java/pro/taskana/impl/TaskQueryImpl.java | 10 +++-- .../pro/taskana/mappings/QueryMapper.java | 12 ++--- .../acceptance/task/QueryTasksAccTest.java | 44 +++++++++++++++++++ 4 files changed, 57 insertions(+), 13 deletions(-) diff --git a/lib/taskana-core/src/main/java/pro/taskana/TaskQueryColumnName.java b/lib/taskana-core/src/main/java/pro/taskana/TaskQueryColumnName.java index 319687590..30b8214b5 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/TaskQueryColumnName.java +++ b/lib/taskana-core/src/main/java/pro/taskana/TaskQueryColumnName.java @@ -7,7 +7,7 @@ package pro.taskana; */ public enum TaskQueryColumnName implements QueryColumnName { ID("t.id"), - EXTERNAL_ID("t.externalId"), + EXTERNAL_ID("t.external_id"), CREATED("t.created"), CLAIMED("t.claimed"), COMPLETED("t.completed"), @@ -37,8 +37,6 @@ public enum TaskQueryColumnName implements QueryColumnName { POR_VALUE("t.por_value"), IS_READ("t.is_read"), IS_TRANSFERRED("t.is_transferred"), - CALLBACK_INFO("t.callback_info"), - CUSTOM_ATTRIBUTES("t.custom_attributes"), CUSTOM_1("t.custom_1"), CUSTOM_2("t.custom_2"), CUSTOM_3("t.custom_3"), diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskQueryImpl.java index d646c3eb5..3c23b9b75 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskQueryImpl.java @@ -1014,14 +1014,16 @@ public class TaskQueryImpl implements TaskQuery { this.addOrderCriteria(columnName.toString(), sortDirection); checkOpenAndReadPermissionForSpecifiedWorkbaskets(); setupAccessIds(); + if (columnName.equals(TaskQueryColumnName.CLASSIFICATION_NAME)) { joinWithClassifications = true; - addClassificationNameToSelectClauseForOrdering = true; } - if (columnName.equals(TaskQueryColumnName.A_CLASSIFICATION_NAME)) { - joinWithAttachments = true; + List attachmentColumns = Arrays.asList( + TaskQueryColumnName.A_CLASSIFICATION_ID, TaskQueryColumnName.A_CLASSIFICATION_KEY, + TaskQueryColumnName.A_CLASSIFICATION_NAME, TaskQueryColumnName.A_CHANNEL, + TaskQueryColumnName.A_REF_VALUE); + if (attachmentColumns.contains(columnName)) { joinWithAttachmentClassifications = true; - addAttachmentClassificationNameToSelectClauseForOrdering = true; } setupJoinAndOrderParameters(); diff --git a/lib/taskana-core/src/main/java/pro/taskana/mappings/QueryMapper.java b/lib/taskana-core/src/main/java/pro/taskana/mappings/QueryMapper.java index 536fa443b..16b9d0c17 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/mappings/QueryMapper.java +++ b/lib/taskana-core/src/main/java/pro/taskana/mappings/QueryMapper.java @@ -672,8 +672,8 @@ public interface QueryMapper { + "group by WORKBASKET_ID ) AS f where max_read = 1 ) " + " " + "AND t.ID IN(#{item}) " - + "AND a.EXTERNAL_ID IN(#{item}) " - + "AND (UPPER(a.EXTERNAL_ID) LIKE #{item}) " + + "AND t.EXTERNAL_ID IN(#{item}) " + + "AND (UPPER(t.EXTERNAL_ID) LIKE #{item}) " + " AND ( ( t.CREATED >= #{item.begin} AND t.CREATED <=#{item.end} )) " + " AND ( ( t.CLAIMED >= #{item.begin} AND t.CLAIMED <=#{item.end} )) " + " AND ( ( t.COMPLETED >= #{item.begin} AND t.COMPLETED <=#{item.end} )) " @@ -776,8 +776,8 @@ public interface QueryMapper { + "" + " " + "AND t.ID IN(#{item}) " - + "AND a.EXTERNAL_ID IN(#{item}) " - + "AND (UPPER(a.EXTERNAL_ID) LIKE #{item}) " + + "AND t.EXTERNAL_ID IN(#{item}) " + + "AND (UPPER(t.EXTERNAL_ID) LIKE #{item}) " + " AND ( ( t.CREATED >= #{item.begin} AND t.CREATED <=#{item.end} )) " + " AND ( ( t.CLAIMED >= #{item.begin} AND t.CLAIMED <=#{item.end} )) " + " AND ( ( t.COMPLETED >= #{item.begin} AND t.COMPLETED <=#{item.end} )) " @@ -1042,8 +1042,8 @@ public interface QueryMapper { + "group by WORKBASKET_ID ) where max_read = 1 ) " + " " + "AND t.ID IN(#{item}) " - + "AND a.EXTERNAL_ID IN(#{item}) " - + "AND (UPPER(a.EXTERNAL_ID) LIKE #{item}) " + + "AND t.EXTERNAL_ID IN(#{item}) " + + "AND (UPPER(t.EXTERNAL_ID) LIKE #{item}) " + " AND ( ( t.CREATED >= #{item.begin} AND t.CREATED <=#{item.end} )) " + " AND ( ( t.CLAIMED >= #{item.begin} AND t.CLAIMED <=#{item.end} )) " + " AND ( ( t.COMPLETED >= #{item.begin} AND t.COMPLETED <=#{item.end} )) " 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 dcd3a410c..49d42973d 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java @@ -13,10 +13,12 @@ import static pro.taskana.TaskQueryColumnName.A_REF_VALUE; import static pro.taskana.TaskQueryColumnName.A_CLASSIFICATION_ID; import static pro.taskana.TaskQueryColumnName.CLASSIFICATION_KEY; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import org.apache.ibatis.exceptions.PersistenceException; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSession; import org.junit.Assert; @@ -28,6 +30,7 @@ import pro.taskana.Attachment; import pro.taskana.BaseQuery.SortDirection; import pro.taskana.Task; import pro.taskana.TaskQuery; +import pro.taskana.TaskQueryColumnName; import pro.taskana.TaskService; import pro.taskana.TaskSummary; import pro.taskana.TimeInterval; @@ -59,6 +62,23 @@ public class QueryTasksAccTest extends AbstractAccTest { super(); } + @WithAccessId( + userName = "teamlead_1", + groupNames = {"admin"}) + @Test + public void testQueryTaskValuesForEveryColumn() { + TaskService taskService = taskanaEngine.getTaskService(); + List notWorkingColumns = new ArrayList<>(); + for (TaskQueryColumnName columnName : TaskQueryColumnName.values()) { + try { + taskService.createTaskQuery().listValues(columnName, asc); + } catch (PersistenceException p) { + notWorkingColumns.add(columnName.toString()); + } + } + assertEquals(new ArrayList<>(), notWorkingColumns); + } + @WithAccessId( userName = "teamlead_1", groupNames = {"admin"}) @@ -239,6 +259,30 @@ public class QueryTasksAccTest extends AbstractAccTest { assertNotNull(results.get(0).getAttachmentSummaries().get(0)); } + @WithAccessId( + userName = "teamlead_1", + groupNames = {"admin"}) + @Test + public void testQueryForExternalId() { + TaskService taskService = taskanaEngine.getTaskService(); + + List results = taskService.createTaskQuery() + .externalIdIn("EID:000000000000000000000000000000000000", "EID:000000000000000000000000000000000001") + .list(); + assertThat(results.size(), equalTo(2)); + + List resultValues = taskService.createTaskQuery() + .externalIdLike("EID:000000000000000000000000000000%") + .listValues(TaskQueryColumnName.EXTERNAL_ID, desc); + assertThat(resultValues.size(), equalTo(70)); + + long countAllExternalIds = taskService.createTaskQuery() + .externalIdLike("EID:%") + .count(); + long countAllIds = taskService.createTaskQuery().count(); + assertEquals(countAllIds, countAllExternalIds); + } + @WithAccessId( userName = "teamlead_1", groupNames = {"group_1"})