diff --git a/lib/taskana-core/src/main/java/org/taskana/ClassificationService.java b/lib/taskana-core/src/main/java/org/taskana/ClassificationService.java index d9553eee2..563504892 100644 --- a/lib/taskana-core/src/main/java/org/taskana/ClassificationService.java +++ b/lib/taskana-core/src/main/java/org/taskana/ClassificationService.java @@ -3,6 +3,7 @@ package org.taskana; import java.util.List; import org.taskana.model.Classification; +import org.taskana.persistence.ClassificationQuery; /** * This class manages the classifications. @@ -43,4 +44,10 @@ public interface ClassificationService { * the Classification to update */ void updateClassification(Classification classification); + + /** + * This method provides a query builder for quering the database. + * @return a {@link ClassificationQuery} + */ + ClassificationQuery createClassificationQuery(); } diff --git a/lib/taskana-core/src/main/java/org/taskana/TaskService.java b/lib/taskana-core/src/main/java/org/taskana/TaskService.java index c652ca667..0cb2541ac 100644 --- a/lib/taskana-core/src/main/java/org/taskana/TaskService.java +++ b/lib/taskana-core/src/main/java/org/taskana/TaskService.java @@ -9,6 +9,7 @@ import org.taskana.model.DueWorkbasketCounter; import org.taskana.model.Task; import org.taskana.model.TaskState; import org.taskana.model.TaskStateCounter; +import org.taskana.persistence.TaskQuery; /** * The Task Service manages all operations on tasks. @@ -49,30 +50,6 @@ public interface TaskService { */ Task getTaskById(String taskId) throws TaskNotFoundException; - /** - * Query all tasks for a workbasket. - * @param workbasketId - * the workbasket to query - * @return the list of tasks, which reside in the workbasket - * @throws NotAuthorizedException - */ - List getTasksForWorkbasket(String workbasketId) throws NotAuthorizedException; - - /** - * Query all tasks for a workbasket. - * @param workbasketId - * the workbasket to query - * @return the list of tasks, which reside in the workbasket - * @throws NotAuthorizedException - */ - List getTasksForWorkbasket(List workbaskets, List states) throws NotAuthorizedException; - - /** - * This method returns all Tasks. - * @return a {@link List} of {@link Task} - */ - List getTasks(); - /** * This method counts all tasks with a given state. * @param states @@ -81,14 +58,6 @@ public interface TaskService { */ List getTaskCountForState(List states); - /** - * This method returns all tasks with the specified states. - * @param states - * all List with the needed states - * @return a list of Tasks - */ - List findTasks(List states); - /** * Count all Tasks in a given workbasket with daysInPast as Days from today in * the past and a specific state. @@ -99,6 +68,8 @@ public interface TaskService { */ long getTaskCountForWorkbasketByDaysInPastAndState(String workbasketId, long daysInPast, List states); + List getTaskCountByWorkbasketAndDaysInPastAndState(long daysInPast, List states); + /** * Transfer task to another workbasket. The transfer set the transferred flag * and resets the read flag. @@ -119,6 +90,10 @@ public interface TaskService { */ Task setTaskRead(String taskId, boolean isRead) throws TaskNotFoundException; - List getTaskCountByWorkbasketAndDaysInPastAndState(long daysInPast, List states); + /** + * This method provides a query builder for quering the database. + * @return a {@link TaskQuery} + */ + TaskQuery createTaskQuery(); } diff --git a/lib/taskana-core/src/main/java/org/taskana/impl/ClassificationServiceImpl.java b/lib/taskana-core/src/main/java/org/taskana/impl/ClassificationServiceImpl.java index c05b56e03..79b496124 100644 --- a/lib/taskana-core/src/main/java/org/taskana/impl/ClassificationServiceImpl.java +++ b/lib/taskana-core/src/main/java/org/taskana/impl/ClassificationServiceImpl.java @@ -6,9 +6,12 @@ import java.time.LocalDate; import java.util.List; import org.taskana.ClassificationService; +import org.taskana.TaskanaEngine; +import org.taskana.impl.persistence.ClassificationQueryImpl; import org.taskana.impl.util.IdGenerator; import org.taskana.model.Classification; import org.taskana.model.mappings.ClassificationMapper; +import org.taskana.persistence.ClassificationQuery; /** * This is the implementation of ClassificationService. @@ -18,9 +21,11 @@ public class ClassificationServiceImpl implements ClassificationService { private static final String ID_PREFIX_CLASSIFICATION = "CLI"; private ClassificationMapper classificationMapper; + private TaskanaEngine taskanaEngine; - public ClassificationServiceImpl(ClassificationMapper classificationMapper) { + public ClassificationServiceImpl(TaskanaEngine taskanaEngine, ClassificationMapper classificationMapper) { super(); + this.taskanaEngine = taskanaEngine; this.classificationMapper = classificationMapper; } @@ -76,4 +81,9 @@ public class ClassificationServiceImpl implements ClassificationService { } } } + + @Override + public ClassificationQuery createClassificationQuery() { + return new ClassificationQueryImpl(taskanaEngine); + } } diff --git a/lib/taskana-core/src/main/java/org/taskana/impl/TaskServiceImpl.java b/lib/taskana-core/src/main/java/org/taskana/impl/TaskServiceImpl.java index e49a15a41..7c6643d53 100644 --- a/lib/taskana-core/src/main/java/org/taskana/impl/TaskServiceImpl.java +++ b/lib/taskana-core/src/main/java/org/taskana/impl/TaskServiceImpl.java @@ -13,6 +13,7 @@ import org.taskana.TaskanaEngine; import org.taskana.exceptions.NotAuthorizedException; import org.taskana.exceptions.TaskNotFoundException; import org.taskana.exceptions.WorkbasketNotFoundException; +import org.taskana.impl.persistence.TaskQueryImpl; import org.taskana.impl.util.IdGenerator; import org.taskana.model.DueWorkbasketCounter; import org.taskana.model.ObjectReference; @@ -22,6 +23,8 @@ import org.taskana.model.TaskStateCounter; import org.taskana.model.WorkbasketAuthorization; import org.taskana.model.mappings.ObjectReferenceMapper; import org.taskana.model.mappings.TaskMapper; +import org.taskana.persistence.TaskQuery; + /** * This is the implementation of TaskService. */ @@ -113,34 +116,6 @@ public class TaskServiceImpl implements TaskService { } } - @Override - public List getTasksForWorkbasket(String workbasketId) throws NotAuthorizedException { - taskanaEngine.getWorkbasketService().checkAuthorization(workbasketId, WorkbasketAuthorization.OPEN); - - return taskMapper.findByWorkBasketId(workbasketId); - } - - @Override - public List findTasks(List states) { - return taskMapper.findByStates(states); - } - - @Override - public List getTasksForWorkbasket(List workbasketIds, List states) - throws NotAuthorizedException { - - for (String workbasket : workbasketIds) { - taskanaEngine.getWorkbasketService().checkAuthorization(workbasket, WorkbasketAuthorization.OPEN); - } - - return taskMapper.findByWorkbasketIdsAndStates(workbasketIds, states); - } - - @Override - public List getTasks() { - return taskMapper.findAll(); - } - @Override public List getTaskCountForState(List states) { return taskMapper.getTaskCountForState(states); @@ -203,4 +178,8 @@ public class TaskServiceImpl implements TaskService { return getTaskById(taskId); } + @Override + public TaskQuery createTaskQuery() { + return new TaskQueryImpl(taskanaEngine); + } } diff --git a/lib/taskana-core/src/main/java/org/taskana/impl/TaskanaEngineImpl.java b/lib/taskana-core/src/main/java/org/taskana/impl/TaskanaEngineImpl.java index f357a008a..45a8bf664 100644 --- a/lib/taskana-core/src/main/java/org/taskana/impl/TaskanaEngineImpl.java +++ b/lib/taskana-core/src/main/java/org/taskana/impl/TaskanaEngineImpl.java @@ -17,6 +17,7 @@ import org.taskana.impl.persistence.MapTypeHandler; import org.taskana.model.mappings.ClassificationMapper; import org.taskana.model.mappings.DistributionTargetMapper; import org.taskana.model.mappings.ObjectReferenceMapper; +import org.taskana.model.mappings.QueryMapper; import org.taskana.model.mappings.TaskMapper; import org.taskana.model.mappings.WorkbasketAccessMapper; import org.taskana.model.mappings.WorkbasketMapper; @@ -71,7 +72,7 @@ public class TaskanaEngineImpl implements TaskanaEngine { @Override public ClassificationService getClassificationService() { - return new ClassificationServiceImpl(this.classificationMapper); + return new ClassificationServiceImpl(this, this.classificationMapper); } @Override @@ -104,6 +105,7 @@ public class TaskanaEngineImpl implements TaskanaEngine { configuration.addMapper(ClassificationMapper.class); configuration.addMapper(WorkbasketAccessMapper.class); configuration.addMapper(ObjectReferenceMapper.class); + configuration.addMapper(QueryMapper.class); configuration.getTypeHandlerRegistry().register(MapTypeHandler.class); return new SqlSessionFactoryBuilder().build(configuration); } @@ -116,4 +118,12 @@ public class TaskanaEngineImpl implements TaskanaEngine { } } + public SqlSession getSession() { + return session; + } + + public void setSession(SqlSession session) { + this.session = session; + } + } diff --git a/lib/taskana-core/src/main/java/org/taskana/impl/persistence/ClassificationQueryImpl.java b/lib/taskana-core/src/main/java/org/taskana/impl/persistence/ClassificationQueryImpl.java new file mode 100644 index 000000000..75a844213 --- /dev/null +++ b/lib/taskana-core/src/main/java/org/taskana/impl/persistence/ClassificationQueryImpl.java @@ -0,0 +1,159 @@ +package org.taskana.impl.persistence; + +import java.util.List; + +import org.apache.ibatis.session.RowBounds; +import org.taskana.TaskanaEngine; +import org.taskana.impl.TaskanaEngineImpl; +import org.taskana.model.Classification; +import org.taskana.persistence.ClassificationQuery; + +/** + * Implementation of ClassificationQuery interface. + * @author EH + */ +public class ClassificationQueryImpl implements ClassificationQuery { + + private static final String LINK_TO_MAPPER = "org.taskana.model.mappings.QueryMapper.queryClassification"; + private TaskanaEngineImpl taskanaEngine; + private String tenantId; + private String[] parentClassificationId; + private String[] category; + private String[] type; + private String[] name; + private String description; + private int[] priority; + private String[] serviceLevel; + + public ClassificationQueryImpl(TaskanaEngine taskanaEngine) { + this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + } + + @Override + public ClassificationQuery tenantId(String tenantId) { + this.tenantId = tenantId; + return this; + } + + @Override + public ClassificationQuery parentClassification(String... parentClassificationId) { + this.parentClassificationId = parentClassificationId; + return this; + } + + @Override + public ClassificationQuery category(String... category) { + this.category = category; + return this; + } + + @Override + public ClassificationQuery type(String... type) { + this.type = type; + return this; + } + + @Override + public ClassificationQuery name(String... name) { + this.name = name; + return this; + } + + @Override + public ClassificationQuery descriptionLike(String description) { + this.description = description; + return this; + } + + @Override + public ClassificationQuery priority(int... priorities) { + this.priority = priorities; + return this; + } + + @Override + public ClassificationQuery serviceLevel(String... serviceLevel) { + this.serviceLevel = serviceLevel; + return this; + } + + @Override + public List list() { + return taskanaEngine.getSession().selectList(LINK_TO_MAPPER, this); + } + + @Override + public List list(int offset, int limit) { + RowBounds rowBounds = new RowBounds(offset, limit); + return taskanaEngine.getSession().selectList(LINK_TO_MAPPER, this, rowBounds); + } + + @Override + public Classification single() { + return taskanaEngine.getSession().selectOne(LINK_TO_MAPPER, this); + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public String[] getParentClassificationId() { + return parentClassificationId; + } + + public void setParentClassificationId(String[] parentClassificationId) { + this.parentClassificationId = parentClassificationId; + } + + public String[] getCategory() { + return category; + } + + public void setCategory(String[] category) { + this.category = category; + } + + public String[] getType() { + return type; + } + + public void setType(String[] type) { + this.type = type; + } + + public String[] getName() { + return name; + } + + public void setName(String[] name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int[] getPriority() { + return priority; + } + + public void setPriority(int[] priority) { + this.priority = priority; + } + + public String[] getServiceLevel() { + return serviceLevel; + } + + public void setServiceLevel(String[] serviceLevel) { + this.serviceLevel = serviceLevel; + } +} diff --git a/lib/taskana-core/src/main/java/org/taskana/impl/persistence/ObjectReferenceQueryImpl.java b/lib/taskana-core/src/main/java/org/taskana/impl/persistence/ObjectReferenceQueryImpl.java new file mode 100644 index 000000000..8bedc4ef6 --- /dev/null +++ b/lib/taskana-core/src/main/java/org/taskana/impl/persistence/ObjectReferenceQueryImpl.java @@ -0,0 +1,130 @@ +package org.taskana.impl.persistence; + +import java.util.List; + +import org.apache.ibatis.session.RowBounds; +import org.taskana.TaskanaEngine; +import org.taskana.impl.TaskanaEngineImpl; +import org.taskana.model.ObjectReference; +import org.taskana.persistence.ObjectReferenceQuery; + +/** + * Implementation of ObjectReferenceQuery interface. + * @author EH + */ +public class ObjectReferenceQueryImpl implements ObjectReferenceQuery { + + private static final String LINK_TO_MAPPER = "org.taskana.model.mappings.QueryMapper.queryObjectReference"; + + private TaskanaEngineImpl taskanaEngine; + private String tenantId; + private String[] company; + private String[] system; + private String[] systemInstance; + private String[] type; + private String[] value; + + public ObjectReferenceQueryImpl(TaskanaEngine taskanaEngine) { + this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + } + + @Override + public ObjectReferenceQuery tenantId(String tenantIds) { + this.tenantId = tenantIds; + return this; + } + + @Override + public ObjectReferenceQuery company(String... companies) { + this.company = companies; + return this; + } + + @Override + public ObjectReferenceQuery system(String... systems) { + this.system = systems; + return this; + } + + @Override + public ObjectReferenceQuery systemInstance(String... systemInstances) { + this.systemInstance = systemInstances; + return this; + } + + @Override + public ObjectReferenceQuery type(String... types) { + this.type = types; + return this; + } + + @Override + public ObjectReferenceQuery value(String... values) { + this.value = values; + return this; + } + + @Override + public List list() { + return taskanaEngine.getSession().selectList(LINK_TO_MAPPER, this); + } + + @Override + public List list(int offset, int limit) { + RowBounds rowBounds = new RowBounds(offset, limit); + return taskanaEngine.getSession().selectList(LINK_TO_MAPPER, this, rowBounds); + } + + @Override + public ObjectReference single() { + return taskanaEngine.getSession().selectOne(LINK_TO_MAPPER, this); + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public String[] getCompany() { + return company; + } + + public void setCompany(String[] company) { + this.company = company; + } + + public String[] getSystem() { + return system; + } + + public void setSystem(String[] system) { + this.system = system; + } + + public String[] getSystemInstance() { + return systemInstance; + } + + public void setSystemInstance(String[] systemInstance) { + this.systemInstance = systemInstance; + } + + public String[] getType() { + return type; + } + + public void setType(String[] type) { + this.type = type; + } + + public String[] getValue() { + return value; + } + + public void setValue(String[] value) { + this.value = value; + } +} diff --git a/lib/taskana-core/src/main/java/org/taskana/impl/persistence/TaskQueryImpl.java b/lib/taskana-core/src/main/java/org/taskana/impl/persistence/TaskQueryImpl.java new file mode 100644 index 000000000..bf0972e91 --- /dev/null +++ b/lib/taskana-core/src/main/java/org/taskana/impl/persistence/TaskQueryImpl.java @@ -0,0 +1,249 @@ +package org.taskana.impl.persistence; + +import java.util.List; + +import org.apache.ibatis.session.RowBounds; +import org.taskana.TaskanaEngine; +import org.taskana.exceptions.NotAuthorizedException; +import org.taskana.impl.TaskanaEngineImpl; +import org.taskana.model.Task; +import org.taskana.model.TaskState; +import org.taskana.model.WorkbasketAuthorization; +import org.taskana.persistence.ClassificationQuery; +import org.taskana.persistence.ObjectReferenceQuery; +import org.taskana.persistence.TaskQuery; + +/** + * TaskQuery for generating dynamic sql. + */ +public class TaskQueryImpl implements TaskQuery { + + private static final String LINK_TO_MAPPER = "org.taskana.model.mappings.QueryMapper.queryTasks"; + + private TaskanaEngineImpl taskanaEngine; + + private String tenantId; + private String[] name; + private String description; + private int[] priority; + private TaskState[] states; + private ClassificationQuery classificationQuery; + private String[] workbasketId; + private String[] owner; + private ObjectReferenceQuery objectReferenceQuery; + private Boolean isRead; + private Boolean isTransferred; + private String[] customFields; + + public TaskQueryImpl(TaskanaEngine taskanaEngine) { + this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + } + + @Override + public TaskQuery tenantId(String tenantId) { + this.tenantId = tenantId; + return this; + } + + @Override + public TaskQuery name(String... names) { + this.name = names; + return this; + } + + @Override + public TaskQuery descriptionLike(String description) { + this.description = description; + return this; + } + + @Override + public TaskQuery priority(int... priorities) { + this.priority = priorities; + return this; + } + + @Override + public TaskQuery state(TaskState... states) { + this.states = states; + return this; + } + + @Override + public TaskQuery classification(ClassificationQuery classificationQuery) { + this.classificationQuery = classificationQuery; + return this; + } + + @Override + public TaskQuery workbasketId(String... workbasketIds) { + this.workbasketId = workbasketIds; + return this; + } + + @Override + public TaskQuery owner(String... owners) { + this.owner = owners; + return this; + } + + @Override + public TaskQuery objectReference(ObjectReferenceQuery objectReferenceQuery) { + this.objectReferenceQuery = objectReferenceQuery; + return this; + } + + @Override + public TaskQuery read(Boolean isRead) { + this.isRead = isRead; + return this; + } + + @Override + public TaskQuery transferred(Boolean isTransferred) { + this.isTransferred = isTransferred; + return this; + } + + @Override + public TaskQuery customFields(String... customFields) { + this.customFields = customFields; + return this; + } + + @Override + public ObjectReferenceQuery createObjectReferenceQuery() { + return new ObjectReferenceQueryImpl(taskanaEngine); + } + + @Override + public List list() throws NotAuthorizedException { + checkAuthorization(); + return taskanaEngine.getSession().selectList(LINK_TO_MAPPER, this); + } + + @Override + public List list(int offset, int limit) throws NotAuthorizedException { + checkAuthorization(); + RowBounds rowBounds = new RowBounds(offset, limit); + return taskanaEngine.getSession().selectList(LINK_TO_MAPPER, this, rowBounds); + } + + @Override + public Task single() throws NotAuthorizedException { + checkAuthorization(); + return taskanaEngine.getSession().selectOne(LINK_TO_MAPPER, this); + } + + private void checkAuthorization() throws NotAuthorizedException { + if (this.workbasketId != null && this.workbasketId.length > 0) { + for (String workbasket : this.workbasketId) { + taskanaEngine.getWorkbasketService().checkAuthorization(workbasket, WorkbasketAuthorization.OPEN); + } + } + } + + public TaskanaEngineImpl getTaskanaEngine() { + return taskanaEngine; + } + + public void setTaskanaEngine(TaskanaEngineImpl taskanaEngine) { + this.taskanaEngine = taskanaEngine; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public String[] getName() { + return name; + } + + public void setName(String[] name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int[] getPriority() { + return priority; + } + + public void setPriority(int[] priority) { + this.priority = priority; + } + + public TaskState[] getStates() { + return states; + } + + public void setStates(TaskState[] states) { + this.states = states; + } + + public ClassificationQuery getClassificationQuery() { + return classificationQuery; + } + + public void setClassificationQuery(ClassificationQuery classificationQuery) { + this.classificationQuery = classificationQuery; + } + + public String[] getWorkbasketId() { + return workbasketId; + } + + public void setWorkbasketId(String[] workbasketId) { + this.workbasketId = workbasketId; + } + + public String[] getOwner() { + return owner; + } + + public void setOwner(String[] owner) { + this.owner = owner; + } + + public ObjectReferenceQuery getObjectReferenceQuery() { + return objectReferenceQuery; + } + + public void setObjectReferenceQuery(ObjectReferenceQuery objectReferenceQuery) { + this.objectReferenceQuery = objectReferenceQuery; + } + + public boolean isRead() { + return isRead; + } + + public void setRead(boolean isRead) { + this.isRead = isRead; + } + + public boolean isTransferred() { + return isTransferred; + } + + public void setTransferred(boolean isTransferred) { + this.isTransferred = isTransferred; + } + + public String[] getCustomFields() { + return customFields; + } + + public void setCustomFields(String[] customFields) { + this.customFields = customFields; + } +} diff --git a/lib/taskana-core/src/main/java/org/taskana/model/mappings/QueryMapper.java b/lib/taskana-core/src/main/java/org/taskana/model/mappings/QueryMapper.java new file mode 100644 index 000000000..c09f8af7e --- /dev/null +++ b/lib/taskana-core/src/main/java/org/taskana/model/mappings/QueryMapper.java @@ -0,0 +1,139 @@ +package org.taskana.model.mappings; + +import java.util.List; + +import org.apache.ibatis.annotations.One; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; +import org.taskana.impl.persistence.ClassificationQueryImpl; +import org.taskana.impl.persistence.ObjectReferenceQueryImpl; +import org.taskana.impl.persistence.TaskQueryImpl; +import org.taskana.model.Classification; +import org.taskana.model.ObjectReference; +import org.taskana.model.Task; + +/** + * This class provides a mapper for all queries. + */ +public interface QueryMapper { + + String OBJECTREFERENCEMAPPER_FINDBYID = "org.taskana.model.mappings.ObjectReferenceMapper.findById"; + String CLASSIFICATION_FINDBYID = "org.taskana.model.mappings.ClassificationMapper.findById"; + + @Select("") + @Results(value = { @Result(property = "id", column = "ID"), + @Result(property = "tenantId", column = "TENANT_ID"), + @Result(property = "created", column = "CREATED"), + @Result(property = "claimed", column = "CLAIMED"), + @Result(property = "completed", column = "COMPLETED"), + @Result(property = "modified", column = "MODIFIED"), + @Result(property = "planned", column = "PLANNED"), + @Result(property = "due", column = "DUE"), + @Result(property = "name", column = "NAME"), + @Result(property = "description", column = "DESCRIPTION"), + @Result(property = "priority", column = "PRIORITY"), + @Result(property = "state", column = "STATE"), + @Result(property = "classification", column = "CLASSIFICATION_ID", javaType = Classification.class, one = @One(select = CLASSIFICATION_FINDBYID)), + @Result(property = "workbasketId", column = "WORKBASKETID"), + @Result(property = "owner", column = "OWNER"), + @Result(property = "primaryObjRef", column = "PRIMARY_OBJ_REF_ID", javaType = ObjectReference.class, one = @One(select = OBJECTREFERENCEMAPPER_FINDBYID)), + @Result(property = "isRead", column = "IS_READ"), + @Result(property = "isTransferred", column = "IS_TRANSFERRED"), + @Result(property = "custom1", column = "CUSTOM_1"), + @Result(property = "custom2", column = "CUSTOM_2"), + @Result(property = "custom3", column = "CUSTOM_3"), + @Result(property = "custom4", column = "CUSTOM_4"), + @Result(property = "custom5", column = "CUSTOM_5"), + @Result(property = "custom6", column = "CUSTOM_6"), + @Result(property = "custom7", column = "CUSTOM_7"), + @Result(property = "custom8", column = "CUSTOM_8"), + @Result(property = "custom9", column = "CUSTOM_9"), + @Result(property = "custom10", column = "CUSTOM_10") }) + List queryTasks(TaskQueryImpl taskQuery); + + @Select("") + @Results({ @Result(property = "id", column = "ID"), + @Result(property = "tenantId", column = "TENANT_ID"), + @Result(property = "parentClassificationId", column = "PARENT_CLASSIFICATION_ID"), + @Result(property = "category", column = "CATEGORY"), + @Result(property = "type", column = "TYPE"), + @Result(property = "created", column = "CREATED"), + @Result(property = "modified", column = "MODIFIED"), + @Result(property = "name", column = "NAME"), + @Result(property = "description", column = "DESCRIPTION"), + @Result(property = "priority", column = "PRIORITY"), + @Result(property = "serviceLevel", column = "SERVICE_LEVEL") }) + List queryClassification(ClassificationQueryImpl classificationQuery); + + + @Select("") + @Results({ + @Result(property = "id", column = "ID"), + @Result(property = "tenantId", column = "TENANT_ID"), + @Result(property = "company", column = "COMPANY"), + @Result(property = "system", column = "SYSTEM"), + @Result(property = "systemInstance", column = "SYSTEM_INSTANCE"), + @Result(property = "type", column = "TYPE"), + @Result(property = "value", column = "VALUE") }) + List queryObjectReference(ObjectReferenceQueryImpl objectReference); +} diff --git a/lib/taskana-core/src/main/java/org/taskana/model/mappings/TaskMapper.java b/lib/taskana-core/src/main/java/org/taskana/model/mappings/TaskMapper.java index b3fac1b9b..0e781f4d9 100644 --- a/lib/taskana-core/src/main/java/org/taskana/model/mappings/TaskMapper.java +++ b/lib/taskana-core/src/main/java/org/taskana/model/mappings/TaskMapper.java @@ -66,153 +66,6 @@ public interface TaskMapper { }) Task findById(@Param("id") String id); - @Select("SELECT ID, TENANT_ID, CREATED, CLAIMED, COMPLETED, MODIFIED, PLANNED, DUE, NAME, DESCRIPTION, PRIORITY, STATE, CLASSIFICATION_ID, WORKBASKETID, OWNER, PRIMARY_OBJ_REF_ID, IS_READ, IS_TRANSFERRED, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, CUSTOM_9, CUSTOM_10 " - + "FROM TASK " - + "WHERE WORKBASKETID = #{workbasketId} " - + "ORDER BY ID") - @Results(value = { - @Result(property = "id", column = "ID"), - @Result(property = "tenantId", column = "TENANT_ID"), - @Result(property = "created", column = "CREATED"), - @Result(property = "claimed", column = "CLAIMED"), - @Result(property = "completed", column = "COMPLETED"), - @Result(property = "modified", column = "MODIFIED"), - @Result(property = "planned", column = "PLANNED"), - @Result(property = "due", column = "DUE"), - @Result(property = "name", column = "NAME"), - @Result(property = "description", column = "DESCRIPTION"), - @Result(property = "priority", column = "PRIORITY"), - @Result(property = "state", column = "STATE"), - @Result(property = "classification", column = "CLASSIFICATION_ID", javaType = Classification.class, one = @One(select = CLASSIFICATION_FINDBYID)), - @Result(property = "workbasketId", column = "WORKBASKETID"), - @Result(property = "owner", column = "OWNER"), - @Result(property = "primaryObjRef", column = "PRIMARY_OBJ_REF_ID", javaType = ObjectReference.class, one = @One(select = OBJECTREFERENCEMAPPER_FINDBYID)), - @Result(property = "isRead", column = "IS_READ"), - @Result(property = "isTransferred", column = "IS_TRANSFERRED"), - @Result(property = "custom1", column = "CUSTOM_1"), - @Result(property = "custom2", column = "CUSTOM_2"), - @Result(property = "custom3", column = "CUSTOM_3"), - @Result(property = "custom4", column = "CUSTOM_4"), - @Result(property = "custom5", column = "CUSTOM_5"), - @Result(property = "custom6", column = "CUSTOM_6"), - @Result(property = "custom7", column = "CUSTOM_7"), - @Result(property = "custom8", column = "CUSTOM_8"), - @Result(property = "custom9", column = "CUSTOM_9"), - @Result(property = "custom10", column = "CUSTOM_10") - }) - List findByWorkBasketId(@Param("workbasketId") String workbasketId); - - @Select("") - @Results(value = { - @Result(property = "id", column = "ID"), - @Result(property = "tenantId", column = "TENANT_ID"), - @Result(property = "created", column = "CREATED"), - @Result(property = "claimed", column = "CLAIMED"), - @Result(property = "completed", column = "COMPLETED"), - @Result(property = "modified", column = "MODIFIED"), - @Result(property = "planned", column = "PLANNED"), - @Result(property = "due", column = "DUE"), - @Result(property = "name", column = "NAME"), - @Result(property = "description", column = "DESCRIPTION"), - @Result(property = "priority", column = "PRIORITY"), - @Result(property = "state", column = "STATE"), - @Result(property = "classification", column = "CLASSIFICATION_ID", javaType = Classification.class, one = @One(select = CLASSIFICATION_FINDBYID)), - @Result(property = "workbasketId", column = "WORKBASKETID"), - @Result(property = "owner", column = "OWNER"), - @Result(property = "primaryObjRef", column = "PRIMARY_OBJ_REF_ID", javaType = ObjectReference.class, one = @One(select = OBJECTREFERENCEMAPPER_FINDBYID)), - @Result(property = "isRead", column = "IS_READ"), - @Result(property = "isTransferred", column = "IS_TRANSFERRED"), - @Result(property = "custom1", column = "CUSTOM_1"), - @Result(property = "custom2", column = "CUSTOM_2"), - @Result(property = "custom3", column = "CUSTOM_3"), - @Result(property = "custom4", column = "CUSTOM_4"), - @Result(property = "custom5", column = "CUSTOM_5"), - @Result(property = "custom6", column = "CUSTOM_6"), - @Result(property = "custom7", column = "CUSTOM_7"), - @Result(property = "custom8", column = "CUSTOM_8"), - @Result(property = "custom9", column = "CUSTOM_9"), - @Result(property = "custom10", column = "CUSTOM_10") - }) - List findByWorkbasketIdsAndStates(@Param("workbasketIds") List workbasketIds, @Param("states") List states); - - @Select("") - @Results(value = { - @Result(property = "id", column = "ID"), - @Result(property = "tenantId", column = "TENANT_ID"), - @Result(property = "created", column = "CREATED"), - @Result(property = "claimed", column = "CLAIMED"), - @Result(property = "completed", column = "COMPLETED"), - @Result(property = "modified", column = "MODIFIED"), - @Result(property = "planned", column = "PLANNED"), - @Result(property = "due", column = "DUE"), - @Result(property = "name", column = "NAME"), - @Result(property = "description", column = "DESCRIPTION"), - @Result(property = "priority", column = "PRIORITY"), - @Result(property = "state", column = "STATE"), - @Result(property = "classification", column = "CLASSIFICATION_ID", javaType = Classification.class, one = @One(select = CLASSIFICATION_FINDBYID)), - @Result(property = "workbasketId", column = "WORKBASKETID"), - @Result(property = "owner", column = "OWNER"), - @Result(property = "primaryObjRef", column = "PRIMARY_OBJ_REF_ID", javaType = ObjectReference.class, one = @One(select = OBJECTREFERENCEMAPPER_FINDBYID)), - @Result(property = "isRead", column = "IS_READ"), - @Result(property = "isTransferred", column = "IS_TRANSFERRED"), - @Result(property = "custom1", column = "CUSTOM_1"), - @Result(property = "custom2", column = "CUSTOM_2"), - @Result(property = "custom3", column = "CUSTOM_3"), - @Result(property = "custom4", column = "CUSTOM_4"), - @Result(property = "custom5", column = "CUSTOM_5"), - @Result(property = "custom6", column = "CUSTOM_6"), - @Result(property = "custom7", column = "CUSTOM_7"), - @Result(property = "custom8", column = "CUSTOM_8"), - @Result(property = "custom9", column = "CUSTOM_9"), - @Result(property = "custom10", column = "CUSTOM_10") - }) - List findByStates(@Param("states") List states); - - @Select("SELECT ID, TENANT_ID, CREATED, CLAIMED, COMPLETED, MODIFIED, PLANNED, DUE, NAME, DESCRIPTION, PRIORITY, STATE, CLASSIFICATION_ID, WORKBASKETID, OWNER, PRIMARY_OBJ_REF_ID, IS_READ, IS_TRANSFERRED, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, CUSTOM_9, CUSTOM_10 " - + "FROM TASK ") - @Results(value = { - @Result(property = "id", column = "ID"), - @Result(property = "tenantId", column = "TENANT_ID"), - @Result(property = "created", column = "CREATED"), - @Result(property = "claimed", column = "CLAIMED"), - @Result(property = "completed", column = "COMPLETED"), - @Result(property = "modified", column = "MODIFIED"), - @Result(property = "planned", column = "PLANNED"), - @Result(property = "due", column = "DUE"), - @Result(property = "name", column = "NAME"), - @Result(property = "description", column = "DESCRIPTION"), - @Result(property = "priority", column = "PRIORITY"), - @Result(property = "state", column = "STATE"), - @Result(property = "classification", column = "CLASSIFICATION_ID", javaType = Classification.class, one = @One(select = CLASSIFICATION_FINDBYID)), - @Result(property = "workbasketId", column = "WORKBASKETID"), - @Result(property = "owner", column = "OWNER"), - @Result(property = "primaryObjRef", column = "PRIMARY_OBJ_REF_ID", javaType = ObjectReference.class, one = @One(select = OBJECTREFERENCEMAPPER_FINDBYID)), - @Result(property = "isRead", column = "IS_READ"), - @Result(property = "isTransferred", column = "IS_TRANSFERRED"), - @Result(property = "custom1", column = "CUSTOM_1"), - @Result(property = "custom2", column = "CUSTOM_2"), - @Result(property = "custom3", column = "CUSTOM_3"), - @Result(property = "custom4", column = "CUSTOM_4"), - @Result(property = "custom5", column = "CUSTOM_5"), - @Result(property = "custom6", column = "CUSTOM_6"), - @Result(property = "custom7", column = "CUSTOM_7"), - @Result(property = "custom8", column = "CUSTOM_8"), - @Result(property = "custom9", column = "CUSTOM_9"), - @Result(property = "custom10", column = "CUSTOM_10") - }) - List findAll(); - @Select("