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 {
|
public enum TaskQueryColumnName implements QueryColumnName {
|
||||||
ID("t.id"),
|
ID("t.id"),
|
||||||
EXTERNAL_ID("t.externalId"),
|
EXTERNAL_ID("t.external_id"),
|
||||||
CREATED("t.created"),
|
CREATED("t.created"),
|
||||||
CLAIMED("t.claimed"),
|
CLAIMED("t.claimed"),
|
||||||
COMPLETED("t.completed"),
|
COMPLETED("t.completed"),
|
||||||
|
@ -37,8 +37,6 @@ public enum TaskQueryColumnName implements QueryColumnName {
|
||||||
POR_VALUE("t.por_value"),
|
POR_VALUE("t.por_value"),
|
||||||
IS_READ("t.is_read"),
|
IS_READ("t.is_read"),
|
||||||
IS_TRANSFERRED("t.is_transferred"),
|
IS_TRANSFERRED("t.is_transferred"),
|
||||||
CALLBACK_INFO("t.callback_info"),
|
|
||||||
CUSTOM_ATTRIBUTES("t.custom_attributes"),
|
|
||||||
CUSTOM_1("t.custom_1"),
|
CUSTOM_1("t.custom_1"),
|
||||||
CUSTOM_2("t.custom_2"),
|
CUSTOM_2("t.custom_2"),
|
||||||
CUSTOM_3("t.custom_3"),
|
CUSTOM_3("t.custom_3"),
|
||||||
|
|
|
@ -1014,14 +1014,16 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
this.addOrderCriteria(columnName.toString(), sortDirection);
|
this.addOrderCriteria(columnName.toString(), sortDirection);
|
||||||
checkOpenAndReadPermissionForSpecifiedWorkbaskets();
|
checkOpenAndReadPermissionForSpecifiedWorkbaskets();
|
||||||
setupAccessIds();
|
setupAccessIds();
|
||||||
|
|
||||||
if (columnName.equals(TaskQueryColumnName.CLASSIFICATION_NAME)) {
|
if (columnName.equals(TaskQueryColumnName.CLASSIFICATION_NAME)) {
|
||||||
joinWithClassifications = true;
|
joinWithClassifications = true;
|
||||||
addClassificationNameToSelectClauseForOrdering = true;
|
|
||||||
}
|
}
|
||||||
if (columnName.equals(TaskQueryColumnName.A_CLASSIFICATION_NAME)) {
|
List<TaskQueryColumnName> attachmentColumns = Arrays.asList(
|
||||||
joinWithAttachments = true;
|
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;
|
joinWithAttachmentClassifications = true;
|
||||||
addAttachmentClassificationNameToSelectClauseForOrdering = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setupJoinAndOrderParameters();
|
setupJoinAndOrderParameters();
|
||||||
|
|
|
@ -672,8 +672,8 @@ public interface QueryMapper {
|
||||||
+ "group by WORKBASKET_ID ) AS f where max_read = 1 ) "
|
+ "group by WORKBASKET_ID ) AS f where max_read = 1 ) "
|
||||||
+ "</if> "
|
+ "</if> "
|
||||||
+ "<if test='taskIds != null'>AND t.ID IN(<foreach item='item' collection='taskIds' separator=',' >#{item}</foreach>)</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='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(a.EXTERNAL_ID) LIKE #{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='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='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> "
|
+ "<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>"
|
+ "</if>"
|
||||||
+ "<where> "
|
+ "<where> "
|
||||||
+ "<if test='taskIds != null'>AND t.ID IN(<foreach item='item' collection='taskIds' separator=',' >#{item}</foreach>)</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='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(a.EXTERNAL_ID) LIKE #{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='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='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> "
|
+ "<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 ) "
|
+ "group by WORKBASKET_ID ) where max_read = 1 ) "
|
||||||
+ "</if> "
|
+ "</if> "
|
||||||
+ "<if test='taskIds != null'>AND t.ID IN(<foreach item='item' collection='taskIds' separator=',' >#{item}</foreach>)</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='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(a.EXTERNAL_ID) LIKE #{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='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='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> "
|
+ "<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.A_CLASSIFICATION_ID;
|
||||||
import static pro.taskana.TaskQueryColumnName.CLASSIFICATION_KEY;
|
import static pro.taskana.TaskQueryColumnName.CLASSIFICATION_KEY;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.apache.ibatis.exceptions.PersistenceException;
|
||||||
import org.apache.ibatis.session.Configuration;
|
import org.apache.ibatis.session.Configuration;
|
||||||
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSession;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
@ -28,6 +30,7 @@ import pro.taskana.Attachment;
|
||||||
import pro.taskana.BaseQuery.SortDirection;
|
import pro.taskana.BaseQuery.SortDirection;
|
||||||
import pro.taskana.Task;
|
import pro.taskana.Task;
|
||||||
import pro.taskana.TaskQuery;
|
import pro.taskana.TaskQuery;
|
||||||
|
import pro.taskana.TaskQueryColumnName;
|
||||||
import pro.taskana.TaskService;
|
import pro.taskana.TaskService;
|
||||||
import pro.taskana.TaskSummary;
|
import pro.taskana.TaskSummary;
|
||||||
import pro.taskana.TimeInterval;
|
import pro.taskana.TimeInterval;
|
||||||
|
@ -59,6 +62,23 @@ public class QueryTasksAccTest extends AbstractAccTest {
|
||||||
super();
|
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(
|
@WithAccessId(
|
||||||
userName = "teamlead_1",
|
userName = "teamlead_1",
|
||||||
groupNames = {"admin"})
|
groupNames = {"admin"})
|
||||||
|
@ -239,6 +259,30 @@ public class QueryTasksAccTest extends AbstractAccTest {
|
||||||
assertNotNull(results.get(0).getAttachmentSummaries().get(0));
|
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(
|
@WithAccessId(
|
||||||
userName = "teamlead_1",
|
userName = "teamlead_1",
|
||||||
groupNames = {"group_1"})
|
groupNames = {"group_1"})
|
||||||
|
|
Loading…
Reference in New Issue