loading tasks
This commit is contained in:
@@ -200,6 +200,24 @@ CREATE TABLE IF NOT EXISTS {0} (
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<Long, Task> listProjectTasks(Long projectId, Long parentTaskId) throws UmbrellaException {
|
||||
try {
|
||||
var query = select(ALL).from(TABLE_TASKS).where(PROJECT_ID,equal(projectId));
|
||||
if (parentTaskId != 0) query.where(PARENT_TASK_ID,equal(parentTaskId));
|
||||
var tasks = new HashMap<Long,Task>();
|
||||
var rs = query.exec(db);
|
||||
while (rs.next()){
|
||||
var task = Task.of(rs);
|
||||
tasks.put(task.id(),task);
|
||||
}
|
||||
rs.close();
|
||||
return tasks;
|
||||
} catch (SQLException e){
|
||||
throw new UmbrellaException(HTTP_SERVER_ERROR,"Failed to load tasks for project {0}",projectId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task load(long taskId) throws UmbrellaException {
|
||||
try {
|
||||
|
||||
@@ -2,19 +2,27 @@
|
||||
package de.srsoftware.umbrella.task;
|
||||
|
||||
|
||||
import de.srsoftware.tools.Mappable;
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
import de.srsoftware.umbrella.core.model.Permission;
|
||||
import de.srsoftware.umbrella.core.model.Task;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public interface TaskDb {
|
||||
|
||||
void dropMember(long projectId, long userId);
|
||||
Map<Long, Permission> getMembers(Task task);
|
||||
HashMap<Long, Task> listChildrenOf(Long parentTaskId, UmbrellaUser user, boolean showClosed);
|
||||
HashMap<Long, Task> listProjectTasks(Long projectId, Long parentTaskId) throws UmbrellaException;
|
||||
HashMap<Long, Task> listRootTasks(Long projectId, UmbrellaUser user, boolean showClosed);
|
||||
HashMap<Long, Task> listTasks(Collection<Long> projectIds) throws UmbrellaException;
|
||||
|
||||
Task load(long taskId) throws UmbrellaException;
|
||||
|
||||
Map<Long, Permission> getMembers(Task task);
|
||||
|
||||
Task save(Task task);
|
||||
|
||||
void setMember(long taskId, long userId, Permission permission);
|
||||
|
||||
@@ -12,6 +12,7 @@ import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
|
||||
import static de.srsoftware.umbrella.core.model.Permission.*;
|
||||
import static de.srsoftware.umbrella.project.Constants.PERMISSIONS;
|
||||
import static de.srsoftware.umbrella.task.Constants.*;
|
||||
import static java.lang.System.Logger.Level.WARNING;
|
||||
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
|
||||
import static java.net.HttpURLConnection.HTTP_OK;
|
||||
|
||||
@@ -36,7 +37,7 @@ import java.util.*;
|
||||
|
||||
public class TaskModule extends BaseHandler implements TaskService {
|
||||
|
||||
private final SqliteDb taskDb;
|
||||
private final TaskDb taskDb;
|
||||
private final ProjectService projects;
|
||||
private final UserService users;
|
||||
private final CompanyService companies;
|
||||
@@ -71,7 +72,6 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
var head = path.pop();
|
||||
return switch (head) {
|
||||
case PERMISSIONS -> getPermissionList(ex);
|
||||
case STATES -> getStateList(ex);
|
||||
case null -> super.doGet(path,ex);
|
||||
default -> {
|
||||
var taskId = Long.parseLong(head);
|
||||
@@ -164,12 +164,6 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
return sendContent(ex,map);
|
||||
}
|
||||
|
||||
private boolean getStateList(HttpExchange ex) throws IOException {
|
||||
var map = new HashMap<Integer,String>();
|
||||
for (var status : Status.values()) map.put(status.code(),status.name());
|
||||
return sendContent(ex,map);
|
||||
}
|
||||
|
||||
private boolean getTask(HttpExchange ex, long taskId, UmbrellaUser user) throws IOException {
|
||||
var task = loadMembers(taskDb.load(taskId));
|
||||
if (!task.hasMember(user)) throw forbidden("You are not a member of {0}",task.name());
|
||||
@@ -277,10 +271,16 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
|
||||
private boolean postTaskList(UmbrellaUser user, HttpExchange ex) throws IOException {
|
||||
var json = json(ex);
|
||||
LOG.log(WARNING,"Missing permission check in {0}.postTaskList!",getClass().getSimpleName());
|
||||
var showClosed = json.has(SHOW_CLOSED) && json.get(SHOW_CLOSED) instanceof Boolean bool ? bool : false;
|
||||
var projectId = json.has(PROJECT_ID) && json.get(PROJECT_ID) instanceof Number number ? number.longValue() : null;
|
||||
if (isSet(projectId)) return sendContent(ex,mapValues(taskDb.listRootTasks(projectId, user,showClosed)));
|
||||
var parentTaskId = json.has(PARENT_TASK_ID) && json.get(PARENT_TASK_ID) instanceof Number number ? number.longValue() : null;
|
||||
if (isSet(projectId)) {
|
||||
if (parentTaskId == null) return sendContent(ex,mapValues(taskDb.listRootTasks(projectId, user,showClosed)));
|
||||
var projectTasks = taskDb.listProjectTasks(projectId,parentTaskId);
|
||||
loadMembers(projectTasks.values());
|
||||
return sendContent(ex,mapValues(projectTasks));
|
||||
}
|
||||
if (isSet(parentTaskId)) return sendContent(ex,mapValues(taskDb.listChildrenOf(parentTaskId,user,showClosed)));
|
||||
return sendEmptyResponse(HTTP_NOT_IMPLEMENTED,ex);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user