conveniance modification: added registry and getters for modules to BaseHandler

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2025-08-17 23:31:06 +02:00
parent ecb1ddac0f
commit a50a451b95
21 changed files with 260 additions and 198 deletions

View File

@@ -30,16 +30,15 @@ import org.json.JSONObject;
public class ProjectModule extends BaseHandler implements ProjectService {
private final ProjectDb projects;
private final ModuleRegistry registy;
public ProjectModule(ModuleRegistry registry, Configuration config) throws UmbrellaException {
super(registry);
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
projects = new SqliteDb(connect(dbFile));
this.registy = registry.add(this);
}
private void addMember(Project project, long userId) {
var user = registy.userService().loadUser(userId);
var user = userService().loadUser(userId);
var member = new Member(user,READ_ONLY);
project.members().put(userId,member);
project.dirty(MEMBERS);
@@ -50,7 +49,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
addCors(ex);
try {
Optional<Token> token = SessionToken.from(ex).map(Token::of);
var user = registy.userService().loadUser(token);
var user = userService().loadUser(token);
if (user.isEmpty()) return unauthorized(ex);
var head = path.pop();
return switch (head) {
@@ -74,7 +73,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
addCors(ex);
try {
Optional<Token> token = SessionToken.from(ex).map(Token::of);
var user = registy.userService().loadUser(token);
var user = userService().loadUser(token);
if (user.isEmpty()) return unauthorized(ex);
var head = path.pop();
return switch (head) {
@@ -97,7 +96,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
addCors(ex);
try {
Optional<Token> token = SessionToken.from(ex).map(Token::of);
var user = registy.userService().loadUser(token);
var user = userService().loadUser(token);
if (user.isEmpty()) return unauthorized(ex);
var head = path.pop();
return switch (head) {
@@ -129,7 +128,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
var project = loadMembers(projects.load(projectId));
if (!project.hasMember(user)) throw forbidden("You are not a member of {0}",project.name());
var map = project.toMap();
project.companyId().map(registy.companyService()::get).map(Company::toMap).ifPresent(data -> map.put(COMPANY,data));
project.companyId().map(companyService()::get).map(Company::toMap).ifPresent(data -> map.put(COMPANY,data));
return sendContent(ex,map);
}
@@ -140,8 +139,8 @@ public class ProjectModule extends BaseHandler implements ProjectService {
}
private boolean listCompanyProjects(HttpExchange ex, UmbrellaUser user, long companyId) throws IOException, UmbrellaException {
var company = registy.companyService().get(companyId);
if (!registy.companyService().membership(companyId,user.id())) throw forbidden("You are mot a member of company {0}",company.name());
var company = companyService().get(companyId);
if (!companyService().membership(companyId,user.id())) throw forbidden("You are mot a member of company {0}",company.name());
var projects = listCompanyProjects(companyId,false);
return sendContent(ex,mapValues(projects));
}
@@ -170,7 +169,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
for (var entry : projects.getMembers(project).entrySet()){
var userId = entry.getKey();
var permission = entry.getValue();
var user = userMap.computeIfAbsent(userId,k -> registy.userService().loadUser(userId));
var user = userMap.computeIfAbsent(userId,k -> userService().loadUser(userId));
project.members().put(userId,new Member(user,permission));
}
}
@@ -194,7 +193,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
if (member.permission() == OWNER) members.put(member.user().id(),new Member(member.user(),EDIT));
}
}
members.put(userId,new Member(registy.userService().loadUser(userId),permission));
members.put(userId,new Member(userService().loadUser(userId),permission));
project.dirty(MEMBERS);
}
}
@@ -233,7 +232,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
}
Long companyId = null;
if (json.has(COMPANY_ID) && json.get(COMPANY_ID) instanceof Number number){
if (!registy.companyService().membership(number.longValue(), user.id())) throw forbidden("You are not a member of company {0}!",number);
if (!companyService().membership(number.longValue(), user.id())) throw forbidden("You are not a member of company {0}!",number);
companyId = number.longValue();
}
var showClosed = false;
@@ -246,7 +245,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
if (json.has(TAGS) && json.get(TAGS) instanceof JSONArray arr){
var tagList = arr.toList().stream().filter(elem -> elem instanceof String).map(String.class::cast).toList();
registy.tagService().save(PROJECT,prj.id(),null,tagList);
tagService().save(PROJECT,prj.id(),null,tagList);
}
return sendContent(ex,prj);