diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index a4301de..1627f08 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -15,7 +15,11 @@ public class UpdateRoleEvent extends Event { public UpdateRoleEvent(Long event_id, Long group_id, String user_id, Role newRole) { super(event_id, group_id, user_id); + this.newRole = newRole; + } + public UpdateRoleEvent(Long group_id, String user_id, Role newRole) { + super(group_id, user_id); this.newRole = newRole; } } diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 75f0b78..10e0f7b 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -1,10 +1,12 @@ package mops.gruppen2.service; import mops.gruppen2.domain.GroupType; +import mops.gruppen2.domain.Role; import mops.gruppen2.domain.Visibility; import mops.gruppen2.domain.event.*; import mops.gruppen2.security.Account; import org.springframework.stereotype.Service; +import java.util.*; @Service public class ControllerService { @@ -15,15 +17,24 @@ public class ControllerService { this.eventService = eventService; } - public void createGroup(Account account, String title, String beschreibung) { - CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), account.getName(), null , GroupType.LECTURE, Visibility.PUBLIC); - AddUserEvent addUserEvent = new AddUserEvent(eventService.checkGroup(), account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()); - UpdateGroupTitleEvent updateGroupTitleEvent = new UpdateGroupTitleEvent(eventService.checkGroup(), account.getName(), title); - UpdateGroupDescriptionEvent updateGroupDescriptionEvent = new UpdateGroupDescriptionEvent(eventService.checkGroup(), account.getName(), beschreibung); + /** + * Erzeugt eine neue Gruppe, fügt den User, der die Gruppe erstellt hat, hinzu und setzt seine Rolle als Admin fest. + * Zudem wird der Gruppentitel und die Gruppenbeschreibung erzeugt, welche vorher der Methode übergeben wurden. + * Aus diesen Event Objekten wird eine Liste erzeugt, welche daraufhin mithilfe des EventServices gesichert wird. + * + * @param account Keycloak-Account + * @param title Gruppentitel + * @param description Gruppenbeschreibung + */ + public void createGroup(Account account, String title, String description) { - eventService.saveEvent(createGroupEvent); - eventService.saveEvent(addUserEvent); - eventService.saveEvent(updateGroupTitleEvent); - eventService.saveEvent(updateGroupDescriptionEvent); + List eventList = new ArrayList<>(); + Collections.addAll(eventList, new CreateGroupEvent(eventService.checkGroup(), account.getName(), null , GroupType.LECTURE, Visibility.PUBLIC), + new AddUserEvent(eventService.checkGroup(), account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()), + new UpdateRoleEvent(eventService.checkGroup(), account.getName(), Role.ADMIN), + new UpdateGroupTitleEvent(eventService.checkGroup(), account.getName(), title), + new UpdateGroupDescriptionEvent(eventService.checkGroup(), account.getName(), description)); + + eventService.saveEventList(eventList); } } diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java index cb4a0c9..6007bc5 100644 --- a/src/main/java/mops/gruppen2/service/EventService.java +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -94,4 +94,15 @@ public class EventService { return events; } + /** + * Sichert eine Liste von Event Objekten mithilfe der Methode saveEvent(Event event) + * + * @param createGroupEvents Liste von Event Objekten + */ + public void saveEventList(List createGroupEvents) { + for(Event event : createGroupEvents) { + saveEvent(event); + } + } + } diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index 1737ccc..04a6d47 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -22,11 +22,25 @@ public class SerializationService { this.eventStore = eventStore; } + /** + * Übersetzt mithilfe der Jackson-Library eine Java-Event-Repräsentation zu einem JSON-Event-Payload. + * + * @param event Java-Event-Repräsentation + * @return JSON-Event-Payload als String + * @throws JsonProcessingException + */ public String serializeEvent(Event event) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(event); } - + + /** + * Übersetzt mithilfe der Jackson-Library einen JSON-Event-Payload zu einer Java-Event-Repräsentation. + * + * @param json JSON-Event-Payload als String + * @return Java-Event-Repräsentation + * @throws JsonProcessingException + */ public Event deserializeEvent(String json) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(json, Event.class);