Merge branch 'dev' into feature/projects
This commit is contained in:
@@ -16,8 +16,8 @@ import de.srsoftware.umbrella.core.model.Task;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class SqliteDb implements TaskDb {
|
||||
@@ -28,7 +28,7 @@ public class SqliteDb implements TaskDb {
|
||||
db = connection;
|
||||
}
|
||||
|
||||
public HashMap<Long, Task> listTasks(List<Long> projectIds) throws UmbrellaException {
|
||||
public HashMap<Long, Task> listTasks(Collection<Long> projectIds) throws UmbrellaException {
|
||||
try {
|
||||
var tasks = new HashMap<Long,Task>();
|
||||
var rs = select(ALL).from(TABLE_TASKS).where(PROJECT_ID, in(projectIds.toArray())).exec(db);
|
||||
|
||||
@@ -25,6 +25,9 @@ import de.srsoftware.umbrella.core.api.TaskService;
|
||||
import de.srsoftware.umbrella.core.api.UserService;
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
import de.srsoftware.umbrella.core.model.*;
|
||||
import de.srsoftware.umbrella.core.model.Task;
|
||||
import de.srsoftware.umbrella.core.model.Token;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
@@ -90,17 +93,17 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
var companyId = cid.longValue();
|
||||
var company = companies.get(companyId);
|
||||
if (!companies.membership(companyId,user.id())) throw forbidden("You are mot a member of company {0}",company.name());
|
||||
var projects = this.projects.listCompanyProjects(companyId,false);
|
||||
var map = taskDb.listTasks(projects.stream().map(Project::id).toList());
|
||||
var tree = new HashMap<Long,Map<String,Object>>();
|
||||
map.values().stream().filter(task -> !is0(task.estimatedTime())).forEach(task -> placeInTree(task,tree,map));
|
||||
var projectMap = this.projects.listCompanyProjects(companyId,false);
|
||||
var taskMap = taskDb.listTasks(projectMap.keySet());
|
||||
var taskTree = new HashMap<Long,Map<String,Object>>();
|
||||
taskMap.values().stream().filter(task -> !is0(task.estimatedTime())).forEach(task -> placeInTree(task,taskTree,taskMap));
|
||||
var result = new ArrayList<Map<String,Object>>();
|
||||
projects.forEach(project -> {
|
||||
var projectMap = new HashMap<>(project.toMap());
|
||||
var children = tree.values().stream().filter(root -> project.id() == (Long)root.get(PROJECT_ID)).toList();
|
||||
projectMap.values().forEach(project -> {
|
||||
var mappedProject = new HashMap<>(project.toMap());
|
||||
var children = taskTree.values().stream().filter(root -> project.id() == (Long)root.get(PROJECT_ID)).toList();
|
||||
if (!children.isEmpty()) {
|
||||
projectMap.put(TASKS, children);
|
||||
result.add(projectMap);
|
||||
mappedProject.put(TASKS, children);
|
||||
result.add(mappedProject);
|
||||
}
|
||||
});
|
||||
return sendContent(ex,result);
|
||||
@@ -121,7 +124,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
@Override
|
||||
public HashMap<Long, Task> listCompanyTasks(long companyId) throws UmbrellaException {
|
||||
var projectList = projects.listCompanyProjects(companyId,false);
|
||||
return taskDb.listTasks(projectList.stream().map(Project::id).toList());
|
||||
return taskDb.listTasks(projectList.keySet());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -129,18 +132,18 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
return taskDb.listTasks(List.of(projectId));
|
||||
}
|
||||
|
||||
private Map<String,Object> placeInTree(Task task, HashMap<Long, Map<String,Object>> tree, Map<Long, Task> map) {
|
||||
var taskMap = task.toMap();
|
||||
private Map<String,Object> placeInTree(Task task, HashMap<Long, Map<String,Object>> taskTree, Map<Long, Task> taskMap) {
|
||||
var mappedTask = task.toMap();
|
||||
if (task.parentTaskId() != null){
|
||||
Task parent = map.get(task.parentTaskId());
|
||||
var trunk = placeInTree(parent,tree,map);
|
||||
Task parent = taskMap.get(task.parentTaskId());
|
||||
var trunk = placeInTree(parent,taskTree,taskMap);
|
||||
@SuppressWarnings("unchecked")
|
||||
ArrayList<Object> children = (ArrayList<Object>) trunk.computeIfAbsent(CHILDREN, k -> new ArrayList<Object>());
|
||||
children.add(taskMap);
|
||||
return taskMap;
|
||||
ArrayList<Object> children = (ArrayList<Object>) trunk.computeIfAbsent(CHILDREN, k -> new ArrayList<>());
|
||||
children.add(mappedTask);
|
||||
return mappedTask;
|
||||
}
|
||||
tree.put(task.id(),taskMap);
|
||||
return taskMap;
|
||||
taskTree.put(task.id(),mappedTask);
|
||||
return mappedTask;
|
||||
}
|
||||
|
||||
private boolean postTaskList(UmbrellaUser user, HttpExchange ex) throws IOException {
|
||||
|
||||
Reference in New Issue
Block a user