diff --git a/src/main/java/mops/gruppen2/entities/Aggregat.java b/src/main/java/mops/gruppen2/entities/Aggregat.java index 8322852..a259113 100644 --- a/src/main/java/mops/gruppen2/entities/Aggregat.java +++ b/src/main/java/mops/gruppen2/entities/Aggregat.java @@ -6,6 +6,11 @@ import java.lang.reflect.Method; public abstract class Aggregat { + /** + * Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf. + * + * @param event + */ public void applyEvent(Event event) { try { Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass()); diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index 6b3ddf9..e609cbf 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -1,36 +1,47 @@ package mops.gruppen2.entities; import lombok.Data; -import mops.gruppen2.events.AddUser; -import mops.gruppen2.events.CreateGroupEvent; -import mops.gruppen2.events.UpdateGroupDescriptionEvent; -import mops.gruppen2.events.UpdateGroupTitleEvent; +import lombok.EqualsAndHashCode; +import mops.gruppen2.events.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +@EqualsAndHashCode(callSuper = true) @Data public class Gruppe extends Aggregat { long id; String titel; String beschreibung; List teilnehmersList; - - public Gruppe(){ - this.teilnehmersList = new ArrayList<>(); - } + Map rollenList; public void applyEvent(CreateGroupEvent event){ + this.id = event.getId(); this.titel = event.getTitel(); this.beschreibung = event.getBeschreibung(); + this.teilnehmersList = new ArrayList<>(); + this.rollenList = new HashMap<>(); + } + + public void applyEvent(UpdateRoleEvent event) { + teilnehmersList.stream() + .filter(teilnehmer -> teilnehmer.getId().equals(event.getUser_id())) + .findFirst() + .ifPresentOrElse(teilnehmer -> rollenList.put(teilnehmer, event.getRole()), + () -> System.out.println("UserNotFoundException")); } public void applyEvent(AddUser event){ Teilnehmer teilnehmer = new Teilnehmer(); - teilnehmer.setId(event.getId()); + + teilnehmer.setId(event.getUser_id()); teilnehmer.setVorname(event.getVorname()); teilnehmer.setNachname(event.getNachname()); teilnehmer.setEmail(event.getEmail()); + this.teilnehmersList.add(teilnehmer); } diff --git a/src/main/java/mops/gruppen2/entities/Teilnehmer.java b/src/main/java/mops/gruppen2/entities/Teilnehmer.java index ef665b9..8eff602 100644 --- a/src/main/java/mops/gruppen2/entities/Teilnehmer.java +++ b/src/main/java/mops/gruppen2/entities/Teilnehmer.java @@ -1,14 +1,12 @@ package mops.gruppen2.entities; import lombok.Data; -import org.springframework.data.annotation.Id; import java.util.List; @Data public class Teilnehmer { - @Id - Long id; + String id; String vorname; String nachname; String email; diff --git a/src/main/java/mops/gruppen2/events/AddUser.java b/src/main/java/mops/gruppen2/events/AddUser.java index 0c00754..bb705b5 100644 --- a/src/main/java/mops/gruppen2/events/AddUser.java +++ b/src/main/java/mops/gruppen2/events/AddUser.java @@ -2,13 +2,11 @@ package mops.gruppen2.events; import lombok.Getter; -import java.util.List; - @Getter public class AddUser extends Event{ String vorname, nachname, email; - public AddUser(long id, long gruppe_id, long user_id, String vorname, String nachname, String email) { + public AddUser(long id, long gruppe_id, String user_id, String vorname, String nachname, String email) { super(id, gruppe_id, user_id); this.vorname = vorname; this.nachname = nachname; diff --git a/src/main/java/mops/gruppen2/events/CreateGroupEvent.java b/src/main/java/mops/gruppen2/events/CreateGroupEvent.java index 8b2758c..cae95c3 100644 --- a/src/main/java/mops/gruppen2/events/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/events/CreateGroupEvent.java @@ -7,7 +7,7 @@ public class CreateGroupEvent extends Event { String titel; String beschreibung; - public CreateGroupEvent(long id, long gruppe_id, long user_id, String titel, String beschreibung) { + public CreateGroupEvent(long id, long gruppe_id, String user_id, String titel, String beschreibung) { super(id, gruppe_id, user_id); this.titel = titel; this.beschreibung = beschreibung; diff --git a/src/main/java/mops/gruppen2/events/Event.java b/src/main/java/mops/gruppen2/events/Event.java index 3ceb3cd..da9c4e6 100644 --- a/src/main/java/mops/gruppen2/events/Event.java +++ b/src/main/java/mops/gruppen2/events/Event.java @@ -8,5 +8,5 @@ import lombok.Getter; public class Event { long id; long gruppe_id; - long user_id; + String user_id; } diff --git a/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java index 5f629ed..232fe56 100644 --- a/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java @@ -6,7 +6,7 @@ import lombok.Getter; public class UpdateGroupDescriptionEvent extends Event { String beschreibung; - public UpdateGroupDescriptionEvent(long id, long gruppe_id, long user_id, String beschreibung) { + public UpdateGroupDescriptionEvent(long id, long gruppe_id, String user_id, String beschreibung) { super(id, gruppe_id, user_id); this.beschreibung = beschreibung; } diff --git a/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java index 10d100b..4829561 100644 --- a/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java @@ -6,7 +6,7 @@ import lombok.Getter; public class UpdateGroupTitleEvent extends Event { String titel; - public UpdateGroupTitleEvent(long id, long gruppe_id, long user_id, String titel) { + public UpdateGroupTitleEvent(long id, long gruppe_id, String user_id, String titel) { super(id, gruppe_id, user_id); this.titel = titel; } diff --git a/src/main/java/mops/gruppen2/events/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/events/UpdateRoleEvent.java new file mode 100644 index 0000000..a9d5141 --- /dev/null +++ b/src/main/java/mops/gruppen2/events/UpdateRoleEvent.java @@ -0,0 +1,16 @@ +package mops.gruppen2.events; + +import lombok.Getter; +import mops.gruppen2.entities.Rolle; + +@Getter +public class UpdateRoleEvent extends Event { + + private final Rolle role; + + public UpdateRoleEvent(long id, long gruppe_id, String user_id, Rolle newRole) { + super(id, gruppe_id, user_id); + + this.role = newRole; + } +} diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java index bf5ac67..5b1676f 100644 --- a/src/main/java/mops/gruppen2/services/GruppenService.java +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -1,28 +1,14 @@ package mops.gruppen2.services; -import mops.gruppen2.events.AddUser; -import mops.gruppen2.events.CreateGroupEvent; -import mops.gruppen2.events.Event; import mops.gruppen2.entities.Gruppe; +import mops.gruppen2.events.Event; import org.springframework.stereotype.Service; -import java.util.ArrayList; import java.util.List; @Service public class GruppenService { - CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,1L,"hello", "foo"); - AddUser addUser = new AddUser(1L, 1L, 1L, "jens","bendiest","jb@gmail.ru"); - - public GruppenService(){ - List eventList = new ArrayList<>(); - eventList.add(createGroupEvent); - eventList.add(addUser); - Gruppe newGroup = buildGroup(eventList); - System.out.println(newGroup.toString()); - } - Gruppe buildGroup(List eventList){ Gruppe newGroup = new Gruppe(); eventList.forEach(newGroup::applyEvent);