TSK-774: set Flags for listValues()
This commit is contained in:
parent
6c67e8c88d
commit
797d9f58e2
|
@ -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"),
|
||||
|
|
|
@ -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<TaskQueryColumnName> 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();
|
||||
|
|
|
@ -672,8 +672,8 @@ public interface QueryMapper {
|
|||
+ "group by WORKBASKET_ID ) AS f where max_read = 1 ) "
|
||||
+ "</if> "
|
||||
+ "<if test='taskIds != null'>AND t.ID IN(<foreach item='item' collection='taskIds' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdIn != null'>AND a.EXTERNAL_ID IN(<foreach item='item' collection='externalIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdLike != null'>AND (<foreach item='item' collection='externalIdLike' separator=' OR '>UPPER(a.EXTERNAL_ID) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdIn != null'>AND t.EXTERNAL_ID IN(<foreach item='item' collection='externalIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdLike != null'>AND (<foreach item='item' collection='externalIdLike' separator=' OR '>UPPER(t.EXTERNAL_ID) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='createdIn !=null'> AND ( <foreach item='item' collection='createdIn' separator=' OR ' > ( <if test='item.begin!=null'> t.CREATED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.CREATED <=#{item.end} </if>)</foreach>)</if> "
|
||||
+ "<if test='claimedIn !=null'> AND ( <foreach item='item' collection='claimedIn' separator=' OR ' > ( <if test='item.begin!=null'> t.CLAIMED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.CLAIMED <=#{item.end} </if>)</foreach>)</if> "
|
||||
+ "<if test='completedIn !=null'> AND ( <foreach item='item' collection='completedIn' separator=' OR ' > ( <if test='item.begin!=null'> t.COMPLETED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.COMPLETED <=#{item.end} </if>)</foreach>)</if> "
|
||||
|
@ -776,8 +776,8 @@ public interface QueryMapper {
|
|||
+ "</if>"
|
||||
+ "<where> "
|
||||
+ "<if test='taskIds != null'>AND t.ID IN(<foreach item='item' collection='taskIds' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdIn != null'>AND a.EXTERNAL_ID IN(<foreach item='item' collection='externalIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdLike != null'>AND (<foreach item='item' collection='externalIdLike' separator=' OR '>UPPER(a.EXTERNAL_ID) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdIn != null'>AND t.EXTERNAL_ID IN(<foreach item='item' collection='externalIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdLike != null'>AND (<foreach item='item' collection='externalIdLike' separator=' OR '>UPPER(t.EXTERNAL_ID) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='createdIn !=null'> AND ( <foreach item='item' collection='createdIn' separator=' OR ' > ( <if test='item.begin!=null'> t.CREATED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.CREATED <=#{item.end} </if>)</foreach>)</if> "
|
||||
+ "<if test='claimedIn !=null'> AND ( <foreach item='item' collection='claimedIn' separator=' OR ' > ( <if test='item.begin!=null'> t.CLAIMED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.CLAIMED <=#{item.end} </if>)</foreach>)</if> "
|
||||
+ "<if test='completedIn !=null'> AND ( <foreach item='item' collection='completedIn' separator=' OR ' > ( <if test='item.begin!=null'> t.COMPLETED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.COMPLETED <=#{item.end} </if>)</foreach>)</if> "
|
||||
|
@ -1042,8 +1042,8 @@ public interface QueryMapper {
|
|||
+ "group by WORKBASKET_ID ) where max_read = 1 ) "
|
||||
+ "</if> "
|
||||
+ "<if test='taskIds != null'>AND t.ID IN(<foreach item='item' collection='taskIds' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdIn != null'>AND a.EXTERNAL_ID IN(<foreach item='item' collection='externalIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdLike != null'>AND (<foreach item='item' collection='externalIdLike' separator=' OR '>UPPER(a.EXTERNAL_ID) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdIn != null'>AND t.EXTERNAL_ID IN(<foreach item='item' collection='externalIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='externalIdLike != null'>AND (<foreach item='item' collection='externalIdLike' separator=' OR '>UPPER(t.EXTERNAL_ID) LIKE #{item}</foreach>)</if> "
|
||||
+ "<if test='createdIn !=null'> AND ( <foreach item='item' collection='createdIn' separator=' OR ' > ( <if test='item.begin!=null'> t.CREATED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.CREATED <=#{item.end} </if>)</foreach>)</if> "
|
||||
+ "<if test='claimedIn !=null'> AND ( <foreach item='item' collection='claimedIn' separator=' OR ' > ( <if test='item.begin!=null'> t.CLAIMED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.CLAIMED <=#{item.end} </if>)</foreach>)</if> "
|
||||
+ "<if test='completedIn !=null'> AND ( <foreach item='item' collection='completedIn' separator=' OR ' > ( <if test='item.begin!=null'> t.COMPLETED >= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> t.COMPLETED <=#{item.end} </if>)</foreach>)</if> "
|
||||
|
|
|
@ -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<String> 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<TaskSummary> results = taskService.createTaskQuery()
|
||||
.externalIdIn("EID:000000000000000000000000000000000000", "EID:000000000000000000000000000000000001")
|
||||
.list();
|
||||
assertThat(results.size(), equalTo(2));
|
||||
|
||||
List<String> 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"})
|
||||
|
|
Loading…
Reference in New Issue