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:
@@ -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;
|
||||
|
||||
@@ -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]");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()]");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()]");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user