first try to generate messages from events

todo:

- add subject function to Event interface
- implement interface on derived event classes
- make events translatable

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-01-13 00:23:46 +01:00
parent 674a80ef09
commit ce5bff6a17
8 changed files with 63 additions and 32 deletions

View File

@@ -7,6 +7,7 @@ import static java.util.Optional.*;
import de.srsoftware.tools.Diff;
import de.srsoftware.tools.Mappable;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
@@ -43,6 +44,8 @@ public abstract class Event<Payload extends Mappable> {
this.oldData = oldData;
}
public abstract Collection<UmbrellaUser> audience();
public abstract String describe();
private Map<String, Object> dropMarkdown(Map<String, Object> map) {
@@ -60,11 +63,13 @@ public abstract class Event<Payload extends Mappable> {
}
public String eventType(){
return eventType.toString();
public EventType eventType(){
return eventType;
}
public abstract boolean isIntendedFor(UmbrellaUser user);
public boolean isIntendedFor(UmbrellaUser user){
return audience().contains(user);
}
public UmbrellaUser initiator(){
return initiator;

View File

@@ -3,8 +3,12 @@ package de.srsoftware.umbrella.messagebus.events;
import static de.srsoftware.umbrella.core.Constants.PROJECT;
import de.srsoftware.umbrella.core.model.Member;
import de.srsoftware.umbrella.core.model.Project;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -18,15 +22,12 @@ public class ProjectEvent extends Event<Project>{
}
@Override
public String describe() {
return diff().orElse("[TODO: ProjectEvent.describe]");
public Collection<UmbrellaUser> audience() {
return payload().members().values().stream().map(Member::user).toList();
}
@Override
public boolean isIntendedFor(UmbrellaUser user) {
for (var member : payload().members().values()){
if (member.user().equals(user)) return true;
}
return false;
public String describe() {
return diff().orElse("[TODO: ProjectEvent.describe]");
}
}

View File

@@ -3,8 +3,12 @@ package de.srsoftware.umbrella.messagebus.events;
import static de.srsoftware.umbrella.core.Constants.TASK;
import de.srsoftware.umbrella.core.model.Member;
import de.srsoftware.umbrella.core.model.Task;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -18,15 +22,12 @@ public class TaskEvent extends Event<Task>{
}
@Override
public String describe() {
return diff().orElse("[TODO: TaskEvent.describe()]");
public Collection<UmbrellaUser> audience() {
return payload().members().values().stream().map(Member::user).toList();
}
@Override
public boolean isIntendedFor(UmbrellaUser user) {
for (var member : payload().members().values()){
if (member.user().equals(user)) return true;
}
return false;
public String describe() {
return diff().orElse("[TODO: TaskEvent.describe()]");
}
}

View File

@@ -3,8 +3,12 @@ package de.srsoftware.umbrella.messagebus.events;
import static de.srsoftware.umbrella.core.Constants.WIKI;
import de.srsoftware.umbrella.core.model.Member;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import de.srsoftware.umbrella.core.model.WikiPage;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -18,15 +22,12 @@ public class WikiEvent extends Event<WikiPage>{
}
@Override
public String describe() {
return diff().orElse("[TODO: WikiEvent.describe()]");
public Collection<UmbrellaUser> audience() {
return payload().members().values().stream().map(Member::user).toList();
}
@Override
public boolean isIntendedFor(UmbrellaUser user) {
for (var member : payload().members().values()){
if (member.user().equals(user)) return true;
}
return false;
public String describe() {
return diff().orElse("[TODO: WikiEvent.describe()]");
}
}