From 93ed287c05f0104ebf67568b798bd4561621f306 Mon Sep 17 00:00:00 2001 From: "julian.schallenmueller" Date: Thu, 25 Oct 2018 17:19:24 +0200 Subject: [PATCH] TSK-732: Refactored BaseQuery.listValues method to use Enum instead of String --- .../AbstractWorkbasketAccessItemQuery.java | 2 +- .../taskana/AccessItemQueryColumnName.java | 24 +++++++ .../src/main/java/pro/taskana/BaseQuery.java | 6 +- .../java/pro/taskana/ClassificationQuery.java | 3 +- .../ClassificationQueryColumnName.java | 42 +++++++++++ .../pro/taskana/ObjectReferenceQuery.java | 2 +- .../ObjectReferenceQueryColumnName.java | 26 +++++++ .../java/pro/taskana/QueryColumnName.java | 9 +++ .../src/main/java/pro/taskana/TaskQuery.java | 2 +- .../java/pro/taskana/TaskQueryColumnName.java | 70 +++++++++++++++++++ .../taskana/WorkbasketAccessItemQuery.java | 3 +- .../java/pro/taskana/WorkbasketQuery.java | 2 +- .../taskana/WorkbasketQueryColumnName.java | 34 +++++++++ ...AbstractWorkbasketAccessItemQueryImpl.java | 9 +-- .../taskana/impl/ClassificationQueryImpl.java | 13 ++-- .../impl/ObjectReferenceQueryImpl.java | 9 +-- .../java/pro/taskana/impl/TaskQueryImpl.java | 11 +-- .../impl/WorkbasketAccessItemQueryImpl.java | 9 +-- .../pro/taskana/impl/WorkbasketQueryImpl.java | 8 +-- .../taskana/jobs/WorkbasketCleanupJob.java | 3 +- .../QueryClassificationAccTest.java | 15 ++-- .../QueryObjectReferenceAccTest.java | 9 ++- .../acceptance/task/QueryTasksAccTest.java | 19 +++-- .../workbasket/QueryWorkbasketAccTest.java | 6 +- .../QueryWorkbasketAccessItemsAccTest.java | 10 ++- .../taskana/impl/TestClassificationQuery.java | 3 +- 26 files changed, 293 insertions(+), 56 deletions(-) create mode 100644 lib/taskana-core/src/main/java/pro/taskana/AccessItemQueryColumnName.java create mode 100644 lib/taskana-core/src/main/java/pro/taskana/ClassificationQueryColumnName.java create mode 100644 lib/taskana-core/src/main/java/pro/taskana/ObjectReferenceQueryColumnName.java create mode 100644 lib/taskana-core/src/main/java/pro/taskana/QueryColumnName.java create mode 100644 lib/taskana-core/src/main/java/pro/taskana/TaskQueryColumnName.java create mode 100644 lib/taskana-core/src/main/java/pro/taskana/WorkbasketQueryColumnName.java diff --git a/lib/taskana-core/src/main/java/pro/taskana/AbstractWorkbasketAccessItemQuery.java b/lib/taskana-core/src/main/java/pro/taskana/AbstractWorkbasketAccessItemQuery.java index 5952ff722..b236f13f3 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/AbstractWorkbasketAccessItemQuery.java +++ b/lib/taskana-core/src/main/java/pro/taskana/AbstractWorkbasketAccessItemQuery.java @@ -7,7 +7,7 @@ package pro.taskana; * @param the workbasket access item */ public interface AbstractWorkbasketAccessItemQuery, T extends WorkbasketAccessItem> - extends BaseQuery { + extends BaseQuery { /** * Add your unique entry id to your query as filter. diff --git a/lib/taskana-core/src/main/java/pro/taskana/AccessItemQueryColumnName.java b/lib/taskana-core/src/main/java/pro/taskana/AccessItemQueryColumnName.java new file mode 100644 index 000000000..b95ae9ad3 --- /dev/null +++ b/lib/taskana-core/src/main/java/pro/taskana/AccessItemQueryColumnName.java @@ -0,0 +1,24 @@ +package pro.taskana; + +/** + * Enum containing the column names for @see pro.taskana.mappings.QueryMapper#queryWorkbasketAccessItemColumnValues(WorkbasketAccessItemQuery). + * + * @author jsa + */ +public enum AccessItemQueryColumnName implements QueryColumnName { + + ID("id"), + WORKBASKET_ID("workbasket_id"), + WORKBASKET_KEY("wb.key"), + ACCESS_ID("access_id"); + + private String name; + AccessItemQueryColumnName(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } +} diff --git a/lib/taskana-core/src/main/java/pro/taskana/BaseQuery.java b/lib/taskana-core/src/main/java/pro/taskana/BaseQuery.java index 829a4a9cc..01046d845 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/BaseQuery.java +++ b/lib/taskana-core/src/main/java/pro/taskana/BaseQuery.java @@ -8,8 +8,10 @@ import java.util.List; * @author EH * @param * specifies the return type of the follwing methods + * @param + * specifies the type of the enum used */ -public interface BaseQuery { +public interface BaseQuery & QueryColumnName> { /** * This method will return a list of defined {@link T} objects. In case of a TaskQuery, this method can throw a @@ -44,7 +46,7 @@ public interface BaseQuery { * the result is sorted in ascending order * @return a list of all existing values. */ - List listValues(String dbColumnName, SortDirection sortDirection); + List listValues(U dbColumnName, SortDirection sortDirection); /** * This method will return all results for page X with a size of Y of the current query.
diff --git a/lib/taskana-core/src/main/java/pro/taskana/ClassificationQuery.java b/lib/taskana-core/src/main/java/pro/taskana/ClassificationQuery.java index 0451718b3..d1570fe4a 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/ClassificationQuery.java +++ b/lib/taskana-core/src/main/java/pro/taskana/ClassificationQuery.java @@ -5,7 +5,7 @@ import pro.taskana.exceptions.InvalidArgumentException; /** * ClassificationQuery for generating dynamic sql. */ -public interface ClassificationQuery extends BaseQuery { +public interface ClassificationQuery extends BaseQuery { /** * Add your key to your query. @@ -299,4 +299,5 @@ public interface ClassificationQuery extends BaseQuery { * when the number of the custom is incorrect. */ ClassificationQuery orderByCustomAttribute(String num, SortDirection sortDirection) throws InvalidArgumentException; + } diff --git a/lib/taskana-core/src/main/java/pro/taskana/ClassificationQueryColumnName.java b/lib/taskana-core/src/main/java/pro/taskana/ClassificationQueryColumnName.java new file mode 100644 index 000000000..c388c710f --- /dev/null +++ b/lib/taskana-core/src/main/java/pro/taskana/ClassificationQueryColumnName.java @@ -0,0 +1,42 @@ +package pro.taskana; + +/** + * Enum containing the column names for @see pro.taskana.mappings.QueryMapper#queryClassificationColumnValues(pro.taskana.impl.ClassificationQueryImpl). + * + * @author jsa + */ +public enum ClassificationQueryColumnName implements QueryColumnName { + ID("id"), + KEY("key"), + PARENT_ID("parent_id"), + PARENT_KEY("parent_key"), + CATEGORY("category"), + TYPE("type"), + DOMAIN("domain"), + VALID_IN_DOMAIN("valid_in_domain"), + CREATED("created"), + MODIFIED("modified"), + NAME("name"), + DESCRIPTION("description"), + PRIORITY("priority"), + SERVICELEVEL("serviceLevel"), + APPLICATION_ENTRY_POINT("application_entry_point"), + CUSTOM_1("custom_1"), + CUSTOM_2("custom_2"), + CUSTOM_3("custom_3"), + CUSTOM_4("custom_4"), + CUSTOM_5("custom_5"), + CUSTOM_6("custom_6"), + CUSTOM_7("custom_7"), + CUSTOM_8("custom_8"); + + private String name; + ClassificationQueryColumnName(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } +} diff --git a/lib/taskana-core/src/main/java/pro/taskana/ObjectReferenceQuery.java b/lib/taskana-core/src/main/java/pro/taskana/ObjectReferenceQuery.java index de2c36d47..56ab660a8 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/ObjectReferenceQuery.java +++ b/lib/taskana-core/src/main/java/pro/taskana/ObjectReferenceQuery.java @@ -3,7 +3,7 @@ package pro.taskana; /** * ObjectReferenceQuery for generating dynamic sql. */ -public interface ObjectReferenceQuery extends BaseQuery { +public interface ObjectReferenceQuery extends BaseQuery { /** * Add your company to your query. diff --git a/lib/taskana-core/src/main/java/pro/taskana/ObjectReferenceQueryColumnName.java b/lib/taskana-core/src/main/java/pro/taskana/ObjectReferenceQueryColumnName.java new file mode 100644 index 000000000..776bb7ae9 --- /dev/null +++ b/lib/taskana-core/src/main/java/pro/taskana/ObjectReferenceQueryColumnName.java @@ -0,0 +1,26 @@ +package pro.taskana; + +/** + * Enum containing the column names for @see {@link pro.taskana.mappings.QueryMapper#queryObjectReferenceColumnValues(pro.taskana.impl.ObjectReferenceQueryImpl)}. + * + * @author jsa + */ +public enum ObjectReferenceQueryColumnName implements QueryColumnName { + ID("id"), + COMPANY("company"), + SYSTEM("system"), + SYSTEM_INSTANCE("system_instance"), + TYPE("type"), + VALUE("value"); + + private String name; + ObjectReferenceQueryColumnName(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } +} + diff --git a/lib/taskana-core/src/main/java/pro/taskana/QueryColumnName.java b/lib/taskana-core/src/main/java/pro/taskana/QueryColumnName.java new file mode 100644 index 000000000..10dbf9d5c --- /dev/null +++ b/lib/taskana-core/src/main/java/pro/taskana/QueryColumnName.java @@ -0,0 +1,9 @@ +package pro.taskana; + +/** + * This interface ist used to emulate an extensible enum for use in the Basequery interface. + * + * @author jsa + */ +public interface QueryColumnName { +} diff --git a/lib/taskana-core/src/main/java/pro/taskana/TaskQuery.java b/lib/taskana-core/src/main/java/pro/taskana/TaskQuery.java index 003543231..6178c29ac 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/TaskQuery.java +++ b/lib/taskana-core/src/main/java/pro/taskana/TaskQuery.java @@ -5,7 +5,7 @@ import pro.taskana.exceptions.InvalidArgumentException; /** * TaskQuery for generating dynamic sql. */ -public interface TaskQuery extends BaseQuery { +public interface TaskQuery extends BaseQuery { /** * Add your names to your query. diff --git a/lib/taskana-core/src/main/java/pro/taskana/TaskQueryColumnName.java b/lib/taskana-core/src/main/java/pro/taskana/TaskQueryColumnName.java new file mode 100644 index 000000000..2e7ef6e0a --- /dev/null +++ b/lib/taskana-core/src/main/java/pro/taskana/TaskQueryColumnName.java @@ -0,0 +1,70 @@ +package pro.taskana; + +/** + * Enum containing the column names for @see pro.taskana.mappings.QueryMapper#queryTaskColumnValues(pro.taskana.impl.TaskQueryImpl). + * + * @author jsa + */ +public enum TaskQueryColumnName implements QueryColumnName { + ID("t.id"), + CREATED("t.created"), + CLAIMED("t.claimed"), + COMPLETED("t.completed"), + MODIFIED("t.modified"), + PLANNED("t.planned"), + DUE("t.due"), + NAME("t.name"), + CREATOR("t.creator"), + DESCRIPTION("t.description"), + NOTE("t.note"), + PRIORITY("t.priority"), + STATE("t.state"), + CLASSIFICATION_CATEGORY("t.classification_category"), + CLASSIFICATION_KEY("t.classification_key"), + CLASSIFICATION_ID("t.classification_id"), + WORKBASKET_ID("t.workbasket_id"), + WORKBASKET_KEY("t.workbasket_key"), + DOMAIN("t.domain"), + BUSINESS_PROCESS_ID("t.business_process_id"), + PARENT_BUSINESS_PROCESS_ID("t.parent_business_process_id"), + OWNER("t.owner"), + POR_COMPANY("t.por_company"), + POR_SYSTEM("t.por_system"), + POR_INSTANCE("t.por_instance"), + POR_TYPE("t.por_type"), + 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"), + CUSTOM_4("t.custom_4"), + CUSTOM_5("t.custom_5"), + CUSTOM_6("t.custom_6"), + CUSTOM_7("t.custom_7"), + CUSTOM_8("t.custom_8"), + CUSTOM_9("t.custom_9"), + CUSTOM_10("t.custom_10"), + CUSTOM_11("t.custom_11"), + CUSTOM_12("t.custom_12"), + CUSTOM_13("t.custom_13"), + CUSTOM_14("t.custom_14"), + CUSTOM_15("t.custom_15"), + CUSTOM_16("t.custom_16"), + ACLASSIFICATION_KEY("a.classification_key"), + ACLASSIFICATION_ID("a.classification_id"), + CHANNEL("a.channel"), + REF_VALUE("a.ref_value"); + + private String name; + TaskQueryColumnName(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } +} diff --git a/lib/taskana-core/src/main/java/pro/taskana/WorkbasketAccessItemQuery.java b/lib/taskana-core/src/main/java/pro/taskana/WorkbasketAccessItemQuery.java index 669e6c2fd..2d555d4ea 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/WorkbasketAccessItemQuery.java +++ b/lib/taskana-core/src/main/java/pro/taskana/WorkbasketAccessItemQuery.java @@ -3,7 +3,7 @@ package pro.taskana; /** * WorkbasketAccessItemQuery for generating dynamic SQL. */ -public interface WorkbasketAccessItemQuery extends BaseQuery { +public interface WorkbasketAccessItemQuery extends BaseQuery { /** * Add your unique entry id to your query as filter. @@ -102,4 +102,5 @@ public interface WorkbasketAccessItemQuery extends BaseQuery { +public interface WorkbasketQuery extends BaseQuery { /** * Add your ids to your query. The ids are compared to the ids of workbaskets with the IN operator. diff --git a/lib/taskana-core/src/main/java/pro/taskana/WorkbasketQueryColumnName.java b/lib/taskana-core/src/main/java/pro/taskana/WorkbasketQueryColumnName.java new file mode 100644 index 000000000..aa2d55271 --- /dev/null +++ b/lib/taskana-core/src/main/java/pro/taskana/WorkbasketQueryColumnName.java @@ -0,0 +1,34 @@ +package pro.taskana; + +/** + * Enum containing the column names for @see {@link pro.taskana.mappings.QueryMapper#queryWorkbasketColumnValues(pro.taskana.impl.WorkbasketQueryImpl)}. + * + * @author jsa + */ +public enum WorkbasketQueryColumnName implements QueryColumnName { + + OWNER("w.owner"), + ID("w.id"), + KEY("w.key"), + NAME("w.name"), + DOMAIN("w.domain"), + TYPE("w.type"), + CUSTOM_1("w.custom_1"), + CUSTOM_2("w.custom_2"), + CUSTOM_3("w.custom_3"), + CUSTOM_4("w.custom_4"), + ORG_LEVEL_1("w.org_level_1"), + ORG_LEVEL_2("w.org_level_2"), + ORG_LEVEL_3("w.org_level_3"), + ORG_LEVEL_4("w.org_level_4"); + + private String name; + WorkbasketQueryColumnName(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } +} diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/AbstractWorkbasketAccessItemQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/AbstractWorkbasketAccessItemQueryImpl.java index c957daef1..f529b44d0 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/AbstractWorkbasketAccessItemQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/AbstractWorkbasketAccessItemQueryImpl.java @@ -10,6 +10,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import pro.taskana.AbstractWorkbasketAccessItemQuery; +import pro.taskana.AccessItemQueryColumnName; import pro.taskana.TaskanaEngine; import pro.taskana.WorkbasketAccessItem; import pro.taskana.exceptions.TaskanaRuntimeException; @@ -27,7 +28,7 @@ abstract class AbstractWorkbasketAccessItemQueryImpl listValues(String columnName, SortDirection sortDirection) { + public List listValues(AccessItemQueryColumnName columnName, SortDirection sortDirection) { LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, _this()); List result = null; try { taskanaEngine.openConnection(); this.columnName = columnName; this.orderBy.clear(); - this.addOrderCriteria(columnName, sortDirection); + this.addOrderCriteria(columnName.toString(), sortDirection); result = taskanaEngine.getSqlSession().selectList(getLinkToValueMapper(), _this()); return result; } finally { @@ -207,7 +208,7 @@ abstract class AbstractWorkbasketAccessItemQueryImpl listValues(String columnName, SortDirection sortDirection) { + public List listValues(ClassificationQueryColumnName columnName, SortDirection sortDirection) { LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, this); List result = new ArrayList<>(); try { taskanaEngine.openConnection(); this.columnName = columnName; this.orderBy.clear(); - this.addOrderCriteria(columnName, sortDirection); + this.addOrderCriteria(columnName.toString(), sortDirection); result = taskanaEngine.getSqlSession().selectList(LINK_TO_VALUEMAPPER, this); return result; } finally { @@ -464,8 +465,8 @@ public class ClassificationQueryImpl implements ClassificationQuery { private ClassificationQuery addOrderCriteria(String columnName, SortDirection sortDirection) { String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection); - orderBy.add(columnName + orderByDirection); - orderColumns.add(columnName); + orderBy.add(columnName.toString() + orderByDirection); + orderColumns.add(columnName.toString()); return this; } @@ -605,7 +606,7 @@ public class ClassificationQueryImpl implements ClassificationQuery { return custom8Like; } - public String getColumnName() { + public ClassificationQueryColumnName getColumnName() { return columnName; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/ObjectReferenceQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/ObjectReferenceQueryImpl.java index 796a704ff..97c0917b9 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/ObjectReferenceQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/ObjectReferenceQueryImpl.java @@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory; import pro.taskana.ObjectReference; import pro.taskana.ObjectReferenceQuery; +import pro.taskana.ObjectReferenceQueryColumnName; import pro.taskana.TaskanaEngine; import pro.taskana.exceptions.TaskanaRuntimeException; import pro.taskana.impl.util.LoggerUtils; @@ -27,7 +28,7 @@ public class ObjectReferenceQueryImpl implements ObjectReferenceQuery { private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryObjectReferenceColumnValues"; private static final Logger LOGGER = LoggerFactory.getLogger(ObjectReferenceQueryImpl.class); private TaskanaEngineImpl taskanaEngine; - private String columnName; + private ObjectReferenceQueryColumnName columnName; private String[] company; private String[] system; private String[] systemInstance; @@ -89,14 +90,14 @@ public class ObjectReferenceQueryImpl implements ObjectReferenceQuery { } @Override - public List listValues(String columnName, SortDirection sortDirection) { + public List listValues(ObjectReferenceQueryColumnName columnName, SortDirection sortDirection) { LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, this); List result = new ArrayList<>(); try { taskanaEngine.openConnection(); this.columnName = columnName; this.orderBy.clear(); - this.addOrderCriteria(columnName, sortDirection); + this.addOrderCriteria(columnName.toString(), sortDirection); result = taskanaEngine.getSqlSession().selectList(LINK_TO_VALUEMAPPER, this); return result; } finally { @@ -192,7 +193,7 @@ public class ObjectReferenceQueryImpl implements ObjectReferenceQuery { this.value = value; } - public String getColumnName() { + public ObjectReferenceQueryColumnName getColumnName() { return columnName; } 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 f7f346d40..4029db1fe 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 @@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory; import pro.taskana.KeyDomain; import pro.taskana.ObjectReferenceQuery; import pro.taskana.TaskQuery; +import pro.taskana.TaskQueryColumnName; import pro.taskana.TaskState; import pro.taskana.TaskSummary; import pro.taskana.TaskanaEngine; @@ -42,7 +43,7 @@ public class TaskQueryImpl implements TaskQuery { private static final Logger LOGGER = LoggerFactory.getLogger(TaskQueryImpl.class); private TaskanaEngineImpl taskanaEngine; private TaskServiceImpl taskService; - private String columnName; + private TaskQueryColumnName columnName; private String[] nameIn; private String[] nameLike; private String[] creatorIn; @@ -908,14 +909,14 @@ public class TaskQueryImpl implements TaskQuery { } @Override - public List listValues(String columnName, SortDirection sortDirection) { + public List listValues(TaskQueryColumnName columnName, SortDirection sortDirection) { LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, this); List result = new ArrayList<>(); try { taskanaEngine.openConnection(); this.columnName = columnName; this.orderBy.clear(); - this.addOrderCriteria(columnName, sortDirection); + this.addOrderCriteria(columnName.toString(), sortDirection); checkOpenAndReadPermissionForSpecifiedWorkbaskets(); setupAccessIds(); result = taskanaEngine.getSqlSession().selectList(LINK_TO_VALUEMAPPER, this); @@ -1372,7 +1373,7 @@ public class TaskQueryImpl implements TaskQuery { return workbasketIdIn; } - public String getColumnName() { + public TaskQueryColumnName getColumnName() { return columnName; } @@ -1451,7 +1452,7 @@ public class TaskQueryImpl implements TaskQuery { private TaskQuery addOrderCriteria(String columnName, SortDirection sortDirection) { String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection); orderBy.add(columnName + orderByDirection); - orderColumns.add(columnName); + orderColumns.add(columnName.toString()); return this; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java index bfa77eb53..e6d47d5e2 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java @@ -9,6 +9,7 @@ import org.apache.ibatis.session.RowBounds; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import pro.taskana.AccessItemQueryColumnName; import pro.taskana.TaskanaEngine; import pro.taskana.WorkbasketAccessItem; import pro.taskana.WorkbasketAccessItemQuery; @@ -24,7 +25,7 @@ public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryWorkbasketAccessItems"; private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemColumnValues"; private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketQueryImpl.class); - private String columnName; + private AccessItemQueryColumnName columnName; private String[] accessIdIn; private String[] accessIdLike; private String[] workbasketIdIn; @@ -120,14 +121,14 @@ public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery } @Override - public List listValues(String columnName, SortDirection sortDirection) { + public List listValues(AccessItemQueryColumnName columnName, SortDirection sortDirection) { LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, this); List result = null; try { taskanaEngine.openConnection(); this.columnName = columnName; this.orderBy.clear(); - this.addOrderCriteria(columnName, sortDirection); + this.addOrderCriteria(columnName.toString(), sortDirection); result = taskanaEngine.getSqlSession().selectList(LINK_TO_VALUEMAPPER, this); return result; } finally { @@ -228,7 +229,7 @@ public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery return orderColumns; } - public String getColumnName() { + public AccessItemQueryColumnName getColumnName() { return columnName; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketQueryImpl.java index 029fd58f8..f8464620f 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketQueryImpl.java @@ -14,6 +14,7 @@ import pro.taskana.TaskanaRole; import pro.taskana.TimeInterval; import pro.taskana.WorkbasketPermission; import pro.taskana.WorkbasketQuery; +import pro.taskana.WorkbasketQueryColumnName; import pro.taskana.WorkbasketSummary; import pro.taskana.WorkbasketType; import pro.taskana.configuration.TaskanaEngineConfiguration; @@ -34,7 +35,7 @@ public class WorkbasketQueryImpl implements WorkbasketQuery { private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryWorkbaskets"; private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryWorkbasketColumnValues"; private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketQueryImpl.class); - private String columnName; + private WorkbasketQueryColumnName columnName; private String[] accessId; private String[] idIn; private WorkbasketPermission permission; @@ -395,8 +396,7 @@ public class WorkbasketQueryImpl implements WorkbasketQuery { } } - @Override - public List listValues(String columnName, SortDirection sortDirection) { + public List listValues(WorkbasketQueryColumnName columnName, SortDirection sortDirection) { LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, this); List result = new ArrayList<>(); try { @@ -614,7 +614,7 @@ public class WorkbasketQueryImpl implements WorkbasketQuery { return orderColumns; } - public String getColumnName() { + public WorkbasketQueryColumnName getColumnName() { return columnName; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/jobs/WorkbasketCleanupJob.java b/lib/taskana-core/src/main/java/pro/taskana/jobs/WorkbasketCleanupJob.java index 2a462bb48..efb31eb0c 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/jobs/WorkbasketCleanupJob.java +++ b/lib/taskana-core/src/main/java/pro/taskana/jobs/WorkbasketCleanupJob.java @@ -10,6 +10,7 @@ import org.slf4j.LoggerFactory; import pro.taskana.BaseQuery; import pro.taskana.BulkOperationResults; import pro.taskana.TaskanaEngine; +import pro.taskana.WorkbasketQueryColumnName; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.TaskanaException; @@ -64,7 +65,7 @@ public class WorkbasketCleanupJob extends AbstractTaskanaJob { List workbasketList = taskanaEngineImpl.getWorkbasketService() .createWorkbasketQuery() .markedForDeletion(true) - .listValues("ID", BaseQuery.SortDirection.ASCENDING); + .listValues(WorkbasketQueryColumnName.ID, BaseQuery.SortDirection.ASCENDING); return workbasketList; } diff --git a/lib/taskana-core/src/test/java/acceptance/classification/QueryClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/QueryClassificationAccTest.java index 93f1e0b75..001312b11 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/QueryClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/QueryClassificationAccTest.java @@ -3,6 +3,11 @@ package acceptance.classification; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static pro.taskana.ClassificationQueryColumnName.NAME; +import static pro.taskana.ClassificationQueryColumnName.TYPE; +import static pro.taskana.ClassificationQueryColumnName.CREATED; +import static pro.taskana.ClassificationQueryColumnName.VALID_IN_DOMAIN; + import java.time.Instant; import java.util.List; import java.util.stream.Collectors; @@ -39,30 +44,30 @@ public class QueryClassificationAccTest extends AbstractAccTest { public void testQueryClassificationValuesForColumnName() { ClassificationService classificationService = taskanaEngine.getClassificationService(); List columnValueList = classificationService.createClassificationQuery() - .listValues("NAME", null); + .listValues(NAME, null); assertNotNull(columnValueList); assertEquals(16, columnValueList.size()); columnValueList = classificationService.createClassificationQuery() - .listValues("TYPE", null); + .listValues(TYPE, null); assertNotNull(columnValueList); assertEquals(2, columnValueList.size()); columnValueList = classificationService.createClassificationQuery() .domainIn("") - .listValues("TYPE", null); + .listValues(TYPE, null); assertNotNull(columnValueList); assertEquals(2, columnValueList.size()); columnValueList = classificationService.createClassificationQuery() .domainIn("") - .listValues("CREATED", null); + .listValues(CREATED, null); assertNotNull(columnValueList); columnValueList = classificationService.createClassificationQuery() .domainIn("") .validInDomainEquals(false) - .listValues("VALID_IN_DOMAIN", null); + .listValues(VALID_IN_DOMAIN, null); assertNotNull(columnValueList); assertEquals(1, columnValueList.size()); // all are false in "" } diff --git a/lib/taskana-core/src/test/java/acceptance/objectreference/QueryObjectReferenceAccTest.java b/lib/taskana-core/src/test/java/acceptance/objectreference/QueryObjectReferenceAccTest.java index 7ffb6fe97..27e850a38 100644 --- a/lib/taskana-core/src/test/java/acceptance/objectreference/QueryObjectReferenceAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/objectreference/QueryObjectReferenceAccTest.java @@ -3,6 +3,9 @@ package acceptance.objectreference; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static pro.taskana.ObjectReferenceQueryColumnName.COMPANY; +import static pro.taskana.ObjectReferenceQueryColumnName.SYSTEM; + import java.util.List; import org.junit.Test; @@ -24,16 +27,16 @@ public class QueryObjectReferenceAccTest extends AbstractAccTest { public void testQueryObjectReferenceValuesForColumnName() { TaskQuery taskQuery = taskanaEngine.getTaskService().createTaskQuery(); List columnValues = taskQuery.createObjectReferenceQuery() - .listValues("COMPANY", null); + .listValues(COMPANY, null); assertEquals(3, columnValues.size()); columnValues = taskQuery.createObjectReferenceQuery() - .listValues("SYSTEM", null); + .listValues(SYSTEM, null); assertEquals(3, columnValues.size()); columnValues = taskQuery.createObjectReferenceQuery() .systemIn("System1") - .listValues("SYSTEM", null); + .listValues(SYSTEM, null); assertEquals(1, columnValues.size()); } 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 b1bc1819d..2b0b86954 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java @@ -6,6 +6,13 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; +import static pro.taskana.TaskQueryColumnName.OWNER; +import static pro.taskana.TaskQueryColumnName.STATE; +import static pro.taskana.TaskQueryColumnName.CHANNEL; +import static pro.taskana.TaskQueryColumnName.REF_VALUE; +import static pro.taskana.TaskQueryColumnName.ACLASSIFICATION_ID; +import static pro.taskana.TaskQueryColumnName.CLASSIFICATION_KEY; + import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -61,12 +68,12 @@ public class QueryTasksAccTest extends AbstractAccTest { List columnValueList = taskService.createTaskQuery() .ownerLike("%user%") .orderByOwner(desc) - .listValues("OWNER", null); + .listValues(OWNER, null); assertNotNull(columnValueList); assertEquals(3, columnValueList.size()); columnValueList = taskService.createTaskQuery() - .listValues("STATE", null); + .listValues(STATE, null); assertNotNull(columnValueList); assertEquals(3, columnValueList.size()); } @@ -79,25 +86,25 @@ public class QueryTasksAccTest extends AbstractAccTest { TaskService taskService = taskanaEngine.getTaskService(); List columnValueList = taskService.createTaskQuery() .attachmentReferenceValueIn("val4") - .listValues("CHANNEL", null); + .listValues(CHANNEL, null); assertNotNull(columnValueList); assertEquals(2, columnValueList.size()); columnValueList = taskService.createTaskQuery() .attachmentReferenceValueLike("%") - .listValues("REF_VALUE", null); + .listValues(REF_VALUE, null); assertNotNull(columnValueList); assertEquals(6, columnValueList.size()); columnValueList = taskService.createTaskQuery() .orderByAttachmentClassificationId(desc) - .listValues("a.CLASSIFICATION_ID", null); + .listValues(ACLASSIFICATION_ID, null); assertNotNull(columnValueList); assertEquals(12, columnValueList.size()); columnValueList = taskService.createTaskQuery() .orderByClassificationKey(desc) - .listValues("t.CLASSIFICATION_KEY", null); + .listValues(CLASSIFICATION_KEY, null); assertNotNull(columnValueList); assertEquals(7, columnValueList.size()); } diff --git a/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccTest.java b/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccTest.java index 2a27cac76..ec601137b 100644 --- a/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccTest.java @@ -4,6 +4,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import static pro.taskana.WorkbasketQueryColumnName.NAME; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -94,14 +96,14 @@ public class QueryWorkbasketAccTest extends AbstractAccTest { public void testQueryWorkbasketValuesForColumnName() { WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); List columnValueList = workbasketService.createWorkbasketQuery() - .listValues("NAME", null); + .listValues(NAME, null); assertNotNull(columnValueList); assertEquals(10, columnValueList.size()); columnValueList = workbasketService.createWorkbasketQuery() .nameLike("%korb%") .orderByName(asc) - .listValues("NAME", SortDirection.DESCENDING); // will override + .listValues(NAME, SortDirection.DESCENDING); // will override assertNotNull(columnValueList); assertEquals(4, columnValueList.size()); } diff --git a/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccessItemsAccTest.java b/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccessItemsAccTest.java index e19a11a9a..f6fecac52 100644 --- a/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccessItemsAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/workbasket/QueryWorkbasketAccessItemsAccTest.java @@ -5,6 +5,10 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static pro.taskana.AccessItemQueryColumnName.WORKBASKET_ID; +import static pro.taskana.AccessItemQueryColumnName.ACCESS_ID; +import static pro.taskana.AccessItemQueryColumnName.WORKBASKET_KEY; + import java.util.Arrays; import java.util.List; @@ -38,17 +42,17 @@ public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest { public void testQueryWorkbasketAccessItemValuesForColumnName() throws NotAuthorizedException { WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); List columnValueList = workbasketService.createWorkbasketAccessItemQuery() - .listValues("WORKBASKET_ID", null); + .listValues(WORKBASKET_ID, null); assertNotNull(columnValueList); assertEquals(24, columnValueList.size()); columnValueList = workbasketService.createWorkbasketAccessItemQuery() - .listValues("ACCESS_ID", null); + .listValues(ACCESS_ID, null); assertNotNull(columnValueList); assertEquals(9, columnValueList.size()); columnValueList = workbasketService.createWorkbasketAccessItemQuery() - .listValues("WB.KEY", null); + .listValues(WORKBASKET_KEY, null); assertNotNull(columnValueList); assertEquals(24, columnValueList.size()); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/TestClassificationQuery.java b/lib/taskana-core/src/test/java/pro/taskana/impl/TestClassificationQuery.java index 76b8fe360..395c1d819 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/TestClassificationQuery.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/TestClassificationQuery.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import pro.taskana.ClassificationQuery; +import pro.taskana.ClassificationQueryColumnName; import pro.taskana.ClassificationSummary; import pro.taskana.TimeInterval; @@ -196,7 +197,7 @@ public class TestClassificationQuery implements ClassificationQuery { } @Override - public List listValues(String dbColumnName, SortDirection sortDirection) { + public List listValues(ClassificationQueryColumnName dbColumnName, SortDirection sortDirection) { return new ArrayList<>(); }