conveniance modification: added registry and getters for modules to BaseHandler
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -35,16 +35,15 @@ import org.json.JSONObject;
|
||||
public class TaskModule extends BaseHandler implements TaskService {
|
||||
|
||||
private final TaskDb taskDb;
|
||||
private final ModuleRegistry registry;
|
||||
|
||||
public TaskModule(ModuleRegistry registry, Configuration config) throws UmbrellaException {
|
||||
super(registry);
|
||||
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
|
||||
taskDb = new SqliteDb(connect(dbFile));
|
||||
this.registry = registry.add(this);
|
||||
}
|
||||
|
||||
private void addMember(Task task, long userId) {
|
||||
var user = registry.userService().loadUser(userId);
|
||||
var user = userService().loadUser(userId);
|
||||
var member = new Member(user,READ_ONLY);
|
||||
task.members().put(userId,member);
|
||||
task.dirty(MEMBERS);
|
||||
@@ -55,8 +54,8 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
var member = task.members().get(user.id());
|
||||
if (member == null || !member.mayWrite()) throw forbidden("You are not allowed to delete {0}",task.name());
|
||||
taskDb.delete(task);
|
||||
registry.noteService().deleteEntity(TASK,""+taskId);
|
||||
registry.tagService().deleteEntity(TASK,taskId);
|
||||
noteService().deleteEntity(TASK,""+taskId);
|
||||
tagService().deleteEntity(TASK,taskId);
|
||||
return sendContent(ex,Map.of(DELETED,taskId));
|
||||
}
|
||||
|
||||
@@ -65,7 +64,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
addCors(ex);
|
||||
try {
|
||||
Optional<Token> token = SessionToken.from(ex).map(Token::of);
|
||||
var user = registry.userService().loadUser(token);
|
||||
var user = userService().loadUser(token);
|
||||
if (user.isEmpty()) return unauthorized(ex);
|
||||
var head = path.pop();
|
||||
return switch (head) {
|
||||
@@ -85,7 +84,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
addCors(ex);
|
||||
try {
|
||||
Optional<Token> token = SessionToken.from(ex).map(Token::of);
|
||||
var user = registry.userService().loadUser(token);
|
||||
var user = userService().loadUser(token);
|
||||
if (user.isEmpty()) return unauthorized(ex);
|
||||
var head = path.pop();
|
||||
return switch (head) {
|
||||
@@ -107,7 +106,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
addCors(ex);
|
||||
try {
|
||||
Optional<Token> token = SessionToken.from(ex).map(Token::of);
|
||||
var user = registry.userService().loadUser(token);
|
||||
var user = userService().loadUser(token);
|
||||
if (user.isEmpty()) return unauthorized(ex);
|
||||
var head = path.pop();
|
||||
return switch (head) {
|
||||
@@ -128,7 +127,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
addCors(ex);
|
||||
try {
|
||||
Optional<Token> token = SessionToken.from(ex).map(Token::of);
|
||||
var user = registry.userService().loadUser(token);
|
||||
var user = userService().loadUser(token);
|
||||
if (user.isEmpty()) return unauthorized(ex);
|
||||
var head = path.pop();
|
||||
return switch (head) {
|
||||
@@ -152,9 +151,9 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
var json = json(ex);
|
||||
if (!(json.has(COMPANY_ID) && json.get(COMPANY_ID) instanceof Number cid)) throw missingFieldException(COMPANY_ID);
|
||||
var companyId = cid.longValue();
|
||||
var company = registry.companyService().get(companyId);
|
||||
if (!registry.companyService().membership(companyId,user.id())) throw forbidden("You are mot a member of company {0}",company.name());
|
||||
var projectMap = registry.projectService().listCompanyProjects(companyId,false);
|
||||
var company = companyService().get(companyId);
|
||||
if (!companyService().membership(companyId,user.id())) throw forbidden("You are mot a member of company {0}",company.name());
|
||||
var projectMap = projectService().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));
|
||||
@@ -196,7 +195,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
} catch (NumberFormatException e) {
|
||||
throw invalidFieldException(LIMIT,"number");
|
||||
}
|
||||
Set<Long> projectIds = registry.projectService().listUserProjects(user.id(), true).keySet();
|
||||
Set<Long> projectIds = projectService().listUserProjects(user.id(), true).keySet();
|
||||
var list = taskDb.listUserTasks(user.id(), limit, offset, false).stream()
|
||||
.filter(task -> projectIds.contains(task.projectId())) // drop tasks assigned to project we are not member of
|
||||
.map(Task::toMap)
|
||||
@@ -206,7 +205,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
|
||||
@Override
|
||||
public HashMap<Long, Task> listCompanyTasks(long companyId) throws UmbrellaException {
|
||||
var projectList = registry.projectService().listCompanyProjects(companyId,false);
|
||||
var projectList = projectService().listCompanyProjects(companyId,false);
|
||||
return taskDb.listTasks(projectList.keySet());
|
||||
}
|
||||
|
||||
@@ -222,7 +221,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
for (var entry : taskDb.getMembers(task).entrySet()){
|
||||
var userId = entry.getKey();
|
||||
var permission = entry.getValue();
|
||||
var user = userMap.computeIfAbsent(userId,k -> registry.userService().loadUser(userId));
|
||||
var user = userMap.computeIfAbsent(userId,k -> userService().loadUser(userId));
|
||||
task.members().put(userId,new Member(user,permission));
|
||||
}
|
||||
}
|
||||
@@ -267,7 +266,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
if (member.permission() == ASSIGNEE) members.put(member.user().id(),new Member(member.user(),EDIT));
|
||||
}
|
||||
}
|
||||
members.put(userId,new Member(registry.userService().loadUser(userId),permission));
|
||||
members.put(userId,new Member(userService().loadUser(userId),permission));
|
||||
task.dirty(MEMBERS);
|
||||
}
|
||||
}
|
||||
@@ -301,8 +300,8 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
if (!(json.has(PROJECT_ID) && json.get(PROJECT_ID) instanceof Number pid)) throw missingFieldException(PROJECT_ID);
|
||||
if (!(json.has(MEMBERS) && json.get(MEMBERS) instanceof JSONObject memberData)) throw missingFieldException(MEMBERS);
|
||||
long projectId = pid.longValue();
|
||||
var project = registry.projectService().load(projectId);
|
||||
registry.projectService().loadMembers(List.of(project));
|
||||
var project = projectService().load(projectId);
|
||||
projectService().loadMembers(List.of(project));
|
||||
var member = project.members().get(user.id());
|
||||
if (member == null || member.permission() == READ_ONLY) throw forbidden("You are not allowed to create new tasks in this project");
|
||||
for (var key : memberData.keySet()){
|
||||
@@ -331,7 +330,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
}
|
||||
if (json.has(TAGS) && json.get(TAGS) instanceof JSONArray arr){
|
||||
var tagList = arr.toList().stream().filter(e -> e instanceof String).map(String.class::cast).toList();
|
||||
registry.tagService().save(TASK,task.id(),null,tagList);
|
||||
tagService().save(TASK,task.id(),null,tagList);
|
||||
}
|
||||
return sendContent(ex,loadMembers(task));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user