TSK-1443: improvements after review

This commit is contained in:
Tim Gerversmann 2020-11-19 18:17:47 +01:00 committed by Mustapha Zorgati
parent 0c084dc3d8
commit 70a3ade7f2
4 changed files with 37 additions and 40 deletions

View File

@ -849,7 +849,7 @@ public interface TaskQuery extends BaseQuery<TaskSummary, TaskQueryColumnName> {
TaskQuery orderByWorkbasketId(SortDirection sortDirection);
/**
* This method sorts the query result according to the workbasket-Name of the tasks.
* This method sorts the query result according to the workbasket name of the tasks.
*
* @param sortDirection Determines whether the result is sorted in ascending or descending order.
* If sortDirection is null, the result is sorted in ascending order

View File

@ -155,10 +155,11 @@ public class TaskQueryImpl implements TaskQuery {
private boolean joinWithAttachments = false;
private boolean joinWithClassifications = false;
private boolean joinWithAttachmentClassifications = false;
private boolean joinWithWorkbaskets = false;
private boolean addAttachmentColumnsToSelectClauseForOrdering = false;
private boolean addClassificationNameToSelectClauseForOrdering = false;
private boolean addAttachmentClassificationNameToSelectClauseForOrdering = false;
private boolean addWorkbasketNameForOrdering = false;
private boolean addWorkbasketNameToSelectClauseForOrdering = false;
TaskQueryImpl(InternalTaskanaEngine taskanaEngine) {
this.taskanaEngine = taskanaEngine;
@ -854,7 +855,8 @@ public class TaskQueryImpl implements TaskQuery {
@Override
public TaskQuery orderByWorkbasketName(SortDirection sortDirection) {
addWorkbasketNameForOrdering = true;
joinWithWorkbaskets = true;
addWorkbasketNameToSelectClauseForOrdering = true;
return DB.DB2.dbProductId.equals(getDatabaseId())
? addOrderCriteria("WNAME", sortDirection)
: addOrderCriteria("w.NAME", sortDirection);
@ -1897,12 +1899,16 @@ public class TaskQueryImpl implements TaskQuery {
+ joinWithClassifications
+ ", joinWithAttachmentClassifications="
+ joinWithAttachmentClassifications
+ ", joinWithWorkbaskets="
+ joinWithWorkbaskets
+ ", addAttachmentColumnsToSelectClauseForOrdering="
+ addAttachmentColumnsToSelectClauseForOrdering
+ ", addClassificationNameToSelectClauseForOrdering="
+ addClassificationNameToSelectClauseForOrdering
+ ", addAttachmentClassificationNameToSelectClauseForOrdering="
+ addAttachmentClassificationNameToSelectClauseForOrdering
+ ", addWorkbasketNameToSelectClauseForOrdering="
+ addWorkbasketNameToSelectClauseForOrdering
+ "]";
}
}

View File

@ -27,7 +27,7 @@ public interface TaskQueryMapper {
+ "<if test=\"addAttachmentClassificationNameToSelectClauseForOrdering\">"
+ ", ac.NAME "
+ "</if>"
+ "<if test=\"addWorkbasketNameForOrdering\">"
+ "<if test=\"addWorkbasketNameToSelectClauseForOrdering\">"
+ ", w.NAME "
+ "</if>"
+ "FROM TASK t "
@ -40,7 +40,7 @@ public interface TaskQueryMapper {
+ "<if test=\"joinWithAttachmentClassifications\">"
+ "LEFT JOIN CLASSIFICATION AS ac ON a.CLASSIFICATION_ID = ac.ID "
+ "</if>"
+ "<if test=\"addWorkbasketNameForOrdering\">"
+ "<if test=\"joinWithWorkbaskets\">"
+ "LEFT JOIN WORKBASKET AS w ON t.WORKBASKET_ID = w.ID "
+ "</if>"
+ "<where>"
@ -223,7 +223,7 @@ public interface TaskQueryMapper {
+ "<if test=\"addAttachmentClassificationNameToSelectClauseForOrdering\">"
+ ", ACNAME "
+ "</if>"
+ "<if test=\"addWorkbasketNameForOrdering\">"
+ "<if test=\"addWorkbasketNameToSelectClauseForOrdering\">"
+ ", WNAME "
+ "</if>"
+ " ) "
@ -240,7 +240,7 @@ public interface TaskQueryMapper {
+ "<if test=\"addAttachmentClassificationNameToSelectClauseForOrdering\">"
+ ", ac.NAME "
+ "</if>"
+ "<if test=\"addWorkbasketNameForOrdering\">"
+ "<if test=\"addWorkbasketNameToSelectClauseForOrdering\">"
+ ", w.NAME "
+ "</if>"
+ " FROM TASK t "
@ -253,7 +253,7 @@ public interface TaskQueryMapper {
+ "<if test=\"joinWithAttachmentClassifications\">"
+ "LEFT JOIN CLASSIFICATION AS ac ON a.CLASSIFICATION_ID = ac.ID "
+ "</if>"
+ "<if test=\"addWorkbasketNameForOrdering\">"
+ "<if test=\"joinWithWorkbaskets\">"
+ "LEFT JOIN WORKBASKET AS w ON t.WORKBASKET_ID = w.ID "
+ "</if>"
+ "<where> "
@ -369,7 +369,7 @@ public interface TaskQueryMapper {
+ "<if test=\"addAttachmentClassificationNameToSelectClauseForOrdering\">"
+ ", ACNAME "
+ "</if>"
+ "<if test=\"addWorkbasketNameForOrdering\">"
+ "<if test=\"addWorkbasketNameToSelectClauseForOrdering\">"
+ ", WNAME "
+ "</if>"
+ ", FLAG ) "
@ -387,7 +387,7 @@ public interface TaskQueryMapper {
+ "<if test=\"addAttachmentClassificationNameToSelectClauseForOrdering\">"
+ ", ACNAME "
+ "</if>"
+ "<if test=\"addWorkbasketNameForOrdering\">"
+ "<if test=\"addWorkbasketNameToSelectClauseForOrdering\">"
+ ", WNAME "
+ "</if>"
+ ", (SELECT 1 FROM WORKBASKET_ACCESS_LIST s WHERE "
@ -411,7 +411,7 @@ public interface TaskQueryMapper {
+ "<if test=\"addAttachmentClassificationNameToSelectClauseForOrdering\">"
+ ", ACNAME "
+ "</if>"
+ "<if test=\"addWorkbasketNameForOrdering\">"
+ "<if test=\"addWorkbasketNameToSelectClauseForOrdering\">"
+ ", WNAME "
+ "</if>"
+ " FROM Y WHERE FLAG = 1 "

View File

@ -17,6 +17,7 @@ import pro.taskana.common.test.security.WithAccessId;
import pro.taskana.task.api.TaskService;
import pro.taskana.task.api.TaskState;
import pro.taskana.task.api.models.TaskSummary;
import pro.taskana.workbasket.api.models.WorkbasketSummary;
/** Acceptance test for all "query tasks with sorting" scenarios. */
@ExtendWith(JaasExtension.class)
@ -53,7 +54,7 @@ class QueryTasksWithSortingAccTest extends AbstractAccTest {
@WithAccessId(user = "admin")
@Test
void testSortByTaskIdDesc() {
void should_sortByTaskIdDesc_When_TaskQueryFilterIsApplied() {
TaskService taskService = taskanaEngine.getTaskService();
List<TaskSummary> results =
taskService
@ -78,7 +79,7 @@ class QueryTasksWithSortingAccTest extends AbstractAccTest {
@WithAccessId(user = "admin")
@Test
void testSortByTaskIdAsc() {
void should_sortByTaskIdAsc_When_TaskQueryFilterIsApplied() {
TaskService taskService = taskanaEngine.getTaskService();
List<TaskSummary> results =
taskService
@ -100,38 +101,28 @@ class QueryTasksWithSortingAccTest extends AbstractAccTest {
@WithAccessId(user = "admin")
@Test
void testSortByWorkbasketName() {
void should_sortByWorkbasketNameAsc_When_TaskQueryFilterIsApplied() {
TaskService taskService = taskanaEngine.getTaskService();
List<TaskSummary> results = taskService.createTaskQuery().orderByWorkbasketName(asc).list();
// test is only valid with at least 2 results
assertThat(
results.stream()
.map(t -> t.getWorkbasketSummary().getName())
.distinct()
.collect(Collectors.toList()))
.hasSizeGreaterThan(2);
assertThat(results)
.hasSizeGreaterThan(2)
.extracting(TaskSummary::getWorkbasketSummary)
.extracting(WorkbasketSummary::getName)
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
}
List<String> idsAsc =
results.stream()
.map(t -> t.getWorkbasketSummary().getName())
.sorted()
.collect(Collectors.toList());
@WithAccessId(user = "admin")
@Test
void should_sortByWorkbasketNameDsc_When_TaskQueryFilterIsApplied() {
TaskService taskService = taskanaEngine.getTaskService();
List<TaskSummary> results = taskService.createTaskQuery().orderByWorkbasketName(desc).list();
for (int i = 0; i < results.size(); i++) {
assertThat(results.get(i).getWorkbasketSummary().getName()).isEqualTo(idsAsc.get(i));
}
results = taskService.createTaskQuery().orderByWorkbasketName(desc).list();
List<String> idsDesc =
results.stream()
.map(t -> t.getWorkbasketSummary().getName())
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
for (int i = 0; i < results.size(); i++) {
assertThat(results.get(i).getWorkbasketSummary().getName()).isEqualTo(idsDesc.get(i));
}
assertThat(results)
.hasSizeGreaterThan(2)
.extracting(TaskSummary::getWorkbasketSummary)
.extracting(WorkbasketSummary::getName)
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
}
@WithAccessId(user = "admin")