TSK-1715: Implemented OwnerNotIn-Filter for TaskQuery.

This commit is contained in:
Martin Sawilla 2021-08-24 18:08:18 +02:00 committed by Mustapha Zorgati
parent fe292ea5b5
commit e564778a91
4 changed files with 35 additions and 14 deletions

View File

@ -202,6 +202,14 @@ public interface TaskQuery extends BaseQuery<TaskSummary, TaskQueryColumnName> {
*/
TaskQuery ownerIn(String... owners);
/**
* Filter out owners.
*
* @param owners the owners as String
* @return the query
*/
TaskQuery ownerNotIn(String... owners);
/**
* Add the owner for pattern matching to your query. It will be compared in SQL with the LIKE
* operator. You may use a wildcard like % to specify the pattern.

View File

@ -75,6 +75,7 @@ public class TaskQueryImpl implements TaskQuery {
private String[] classificationNameIn;
private String[] classificationNameLike;
private String[] ownerIn;
private String[] ownerNotIn;
private String[] ownerLike;
private Boolean isRead;
private Boolean isTransferred;
@ -317,6 +318,12 @@ public class TaskQueryImpl implements TaskQuery {
return this;
}
@Override
public TaskQuery ownerNotIn(String... owners) {
this.ownerNotIn = owners;
return this;
}
@Override
public TaskQuery ownerLike(String... owners) {
this.ownerLike = toUpperCopy(owners);
@ -992,7 +999,7 @@ public class TaskQueryImpl implements TaskQuery {
@Override
public List<TaskSummary> list(int offset, int limit) {
List<TaskSummary> result = new ArrayList<>();
List<TaskSummary> result;
try {
taskanaEngine.openConnection();
checkForIllegalParamCombinations();
@ -1020,7 +1027,7 @@ public class TaskQueryImpl implements TaskQuery {
@Override
public List<String> listValues(TaskQueryColumnName columnName, SortDirection sortDirection) {
List<String> result = new ArrayList<>();
List<String> result;
try {
taskanaEngine.openConnection();
this.columnName = columnName;
@ -1052,7 +1059,7 @@ public class TaskQueryImpl implements TaskQuery {
@Override
public TaskSummary single() {
TaskSummary result = null;
TaskSummary result;
try {
taskanaEngine.openConnection();
checkOpenAndReadPermissionForSpecifiedWorkbaskets();
@ -1077,7 +1084,7 @@ public class TaskQueryImpl implements TaskQuery {
@Override
public long count() {
Long rowCount = null;
Long rowCount;
try {
taskanaEngine.openConnection();
checkOpenAndReadPermissionForSpecifiedWorkbaskets();
@ -1186,6 +1193,10 @@ public class TaskQueryImpl implements TaskQuery {
return ownerIn;
}
public String[] getOwnerNotIn() {
return ownerNotIn;
}
public String[] getOwnerLike() {
return ownerLike;
}

View File

@ -321,6 +321,7 @@ public class TaskQuerySqlProvider {
whereIn("classificationNameIn", "c.NAME", sb);
whereIn("attachmentClassificationNameIn", "ac.NAME", sb);
whereIn("ownerIn", "OWNER", sb);
whereNotIn("ownerNotIn", "OWNER", sb);
whereIn("porCompanyIn", "POR_COMPANY", sb);
whereIn("porSystemIn", "POR_SYSTEM", sb);
whereIn("porSystemInstanceIn", "POR_INSTANCE", sb);

View File

@ -80,19 +80,20 @@ class QueryTasksAccTest extends AbstractAccTest {
@WithAccessId(user = "admin")
@Test
void testQueryForOwnerLike() {
void should_ReturnCorrectResults_When_QueryingForOwnerLike() {
List<TaskSummary> results =
TASK_SERVICE.createTaskQuery().ownerLike("%a%", "%u%").orderByCreated(ASCENDING).list();
assertThat(results).hasSize(39);
TaskSummary previousSummary = null;
for (TaskSummary taskSummary : results) {
if (previousSummary != null) {
assertThat(previousSummary.getCreated().isAfter(taskSummary.getCreated())).isFalse();
}
previousSummary = taskSummary;
assertThat(results).hasSize(39).extracting(TaskSummary::getCreated).isSorted();
}
@WithAccessId(user = "admin")
@Test
void should_FilterOutOwner_When_OwnerNotInIsSet() {
List<TaskSummary> results =
TASK_SERVICE.createTaskQuery().ownerNotIn("user-1-1", "user-1-2").list();
assertThat(results).hasSize(3).extracting(TaskSummary::getOwner).containsOnly("user-b-1");
}
@WithAccessId(user = "admin")