working on task update by event
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.messagebus.events;
|
||||
|
||||
import static de.srsoftware.umbrella.core.Constants.USER;
|
||||
|
||||
import de.srsoftware.tools.Mappable;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
import java.util.Map;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public abstract class Event<Payload extends Mappable> {
|
||||
|
||||
public enum EventType {
|
||||
CREATE,
|
||||
UPDATE,
|
||||
DELETE;
|
||||
|
||||
}
|
||||
private UmbrellaUser initiator;
|
||||
|
||||
private String realm;
|
||||
private Payload payload;
|
||||
private EventType eventType;
|
||||
public Event(UmbrellaUser initiator, String realm, Payload payload, EventType type){
|
||||
this.initiator = initiator;
|
||||
this.realm = realm;
|
||||
this.payload = payload;
|
||||
this.eventType = type;
|
||||
}
|
||||
|
||||
public String eventType(){
|
||||
return eventType.toString();
|
||||
}
|
||||
|
||||
public abstract boolean isIntendedFor(UmbrellaUser user);
|
||||
|
||||
public String json(){
|
||||
Class<?> clazz = payload.getClass();
|
||||
{ // get the highest superclass that is not object
|
||||
Class<?> parent = clazz.getSuperclass();
|
||||
|
||||
while (parent != null && parent != Object.class) {
|
||||
clazz = parent;
|
||||
parent = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
var map = Map.of(USER,initiator.toMap(),clazz.getSimpleName().toLowerCase(),payload.toMap());
|
||||
return new JSONObject(map).toString();
|
||||
}
|
||||
|
||||
public Payload payload(){
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.messagebus.events;
|
||||
|
||||
import de.srsoftware.umbrella.core.model.Project;
|
||||
import de.srsoftware.umbrella.core.model.Task;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
|
||||
import static de.srsoftware.umbrella.core.Constants.PROJECT;
|
||||
import static de.srsoftware.umbrella.core.Constants.TASK;
|
||||
|
||||
|
||||
public class ProjectEvent extends Event<Project>{
|
||||
public ProjectEvent(UmbrellaUser initiator, Project project, EventType type){
|
||||
super(initiator, PROJECT, project, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIntendedFor(UmbrellaUser user) {
|
||||
for (var member : payload().members().values()){
|
||||
if (member.user().equals(user)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.messagebus.events;
|
||||
|
||||
import static de.srsoftware.umbrella.core.Constants.TASK;
|
||||
|
||||
import de.srsoftware.umbrella.core.model.Task;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
|
||||
|
||||
public class TaskEvent extends Event<Task>{
|
||||
public TaskEvent(UmbrellaUser initiator, Task task, EventType type){
|
||||
super(initiator, TASK, task, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIntendedFor(UmbrellaUser user) {
|
||||
for (var member : payload().members().values()){
|
||||
if (member.user().equals(user)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user