Merge pull request #44 from MLengl/TSK-58
TSK-58: Query tasks by workbasketId and tast-state (with Authentification)
This commit is contained in:
commit
9470761f0c
|
@ -97,4 +97,16 @@ public interface TaskService {
|
||||||
*/
|
*/
|
||||||
TaskQuery createTaskQuery();
|
TaskQuery createTaskQuery();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a list of all Tasks which got matching workbasketIds and states.
|
||||||
|
*
|
||||||
|
* @param workbasketId where the tasks need to be in.
|
||||||
|
* @param taskState which is required for the request,
|
||||||
|
* @return a filled/empty list of tasks with attributes which are matching given params.
|
||||||
|
*
|
||||||
|
* @throws WorkbasketNotFoundException if the workbasketId can´t be resolved to a existing workbasket.
|
||||||
|
* @throws NotAuthorizedException if the current user got no rights for reading on this workbasket.
|
||||||
|
* @throws Exception if no result can be found by @{link TaskMapper}.
|
||||||
|
*/
|
||||||
|
List<Task> getTasksByWorkbasketIdAndState(String workbasketId, TaskState taskState) throws WorkbasketNotFoundException, NotAuthorizedException, Exception;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.sql.Date;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -235,4 +236,17 @@ public class TaskServiceImpl implements TaskService {
|
||||||
public TaskQuery createTaskQuery() {
|
public TaskQuery createTaskQuery() {
|
||||||
return new TaskQueryImpl(taskanaEngine);
|
return new TaskQueryImpl(taskanaEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Task> getTasksByWorkbasketIdAndState(String workbasketId, TaskState taskState) throws WorkbasketNotFoundException, NotAuthorizedException, Exception {
|
||||||
|
List<Task> resultList = null;
|
||||||
|
try {
|
||||||
|
taskanaEngineImpl.openConnection();
|
||||||
|
taskanaEngine.getWorkbasketService().checkAuthorization(workbasketId, WorkbasketAuthorization.READ);
|
||||||
|
resultList = taskMapper.findTasksByWorkbasketIdAndState(workbasketId, taskState);
|
||||||
|
} finally {
|
||||||
|
taskanaEngineImpl.returnConnection();
|
||||||
|
}
|
||||||
|
return (resultList == null) ? new ArrayList<>() : resultList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,4 +96,39 @@ public interface TaskMapper {
|
||||||
@Delete("DELETE FROM TASK WHERE ID = #{id}")
|
@Delete("DELETE FROM TASK WHERE ID = #{id}")
|
||||||
void delete(String id);
|
void delete(String id);
|
||||||
|
|
||||||
|
@Select("SELECT ID, CREATED, CLAIMED, COMPLETED, MODIFIED, PLANNED, DUE, NAME, DESCRIPTION, PRIORITY, STATE, CLASSIFICATION_ID, WORKBASKETID, OWNER, PRIMARY_OBJ_REF_ID, IS_READ, IS_TRANSFERRED, CUSTOM_ATTRIBUTES, 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} "
|
||||||
|
+ "AND STATE = #{taskState}")
|
||||||
|
@Results(value = {
|
||||||
|
@Result(property = "id", column = "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 = "customAttributes", column = "CUSTOM_ATTRIBUTES", jdbcType = JdbcType.BLOB, javaType = Map.class, typeHandler = MapTypeHandler.class),
|
||||||
|
@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<Task> findTasksByWorkbasketIdAndState(@Param("workbasketId") String workbasketId, @Param("taskState") TaskState taskState);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,9 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
import pro.taskana.TaskService;
|
import pro.taskana.TaskService;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.exceptions.TaskNotFoundException;
|
import pro.taskana.exceptions.TaskNotFoundException;
|
||||||
|
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.model.Task;
|
import pro.taskana.model.Task;
|
||||||
|
import pro.taskana.model.TaskState;
|
||||||
import pro.taskana.rest.query.TaskFilter;
|
import pro.taskana.rest.query.TaskFilter;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -62,6 +64,21 @@ public class TaskController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/workbasket/{workbasketId}/state/{taskState}")
|
||||||
|
public ResponseEntity<List<Task>> getTasksByWorkbasketIdAndState(
|
||||||
|
@PathVariable(value = "workbasketId") String workbasketId, @PathVariable(value = "taskState") TaskState taskState) {
|
||||||
|
try {
|
||||||
|
List<Task> taskList = taskService.getTasksByWorkbasketIdAndState(workbasketId, taskState);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(taskList);
|
||||||
|
} catch (WorkbasketNotFoundException e) {
|
||||||
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
|
||||||
|
} catch (NotAuthorizedException e) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
|
||||||
|
} catch (Exception e) {
|
||||||
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.POST, value = "/{taskId}/claim")
|
@RequestMapping(method = RequestMethod.POST, value = "/{taskId}/claim")
|
||||||
public ResponseEntity<Task> claimTask(@PathVariable String taskId, @RequestBody String userName) {
|
public ResponseEntity<Task> claimTask(@PathVariable String taskId, @RequestBody String userName) {
|
||||||
// TODO verify user
|
// TODO verify user
|
||||||
|
|
|
@ -71,7 +71,7 @@ public class WorkbasketController {
|
||||||
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.POST)
|
@RequestMapping(method = RequestMethod.POST)
|
||||||
public ResponseEntity<?> createWorkbasket(@RequestBody Workbasket workbasket) {
|
public ResponseEntity<?> createWorkbasket(@RequestBody Workbasket workbasket) {
|
||||||
Workbasket createdWorkbasket = workbasketService.createWorkbasket(workbasket);
|
Workbasket createdWorkbasket = workbasketService.createWorkbasket(workbasket);
|
||||||
|
|
Loading…
Reference in New Issue