diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index e7b5bf1..96ec538 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -80,7 +80,7 @@ public class Gruppen2Controller { Account account = keyCloakService.createAccountFromPrincipal(token); controllerService.createGroup(account, title, beschreibung); - return "redirect:/gruppen2"; + return "redirect:/gruppen2/"; } } diff --git a/src/main/java/mops/gruppen2/controller/MopsController.java b/src/main/java/mops/gruppen2/controller/MopsController.java new file mode 100644 index 0000000..4989fab --- /dev/null +++ b/src/main/java/mops/gruppen2/controller/MopsController.java @@ -0,0 +1,13 @@ +package mops.gruppen2.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class MopsController { + + @GetMapping("") + public String redirect(){ + return "redirect:/gruppen2/"; + } +} 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 e45644d..f0327db 100644 --- a/src/main/java/mops/gruppen2/service/EventService.java +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -95,6 +95,17 @@ 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); + } + } + public Long getMaxEvent_id(){ return eventStore.getHighesEvent_ID(); } 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); diff --git a/src/main/java/mops/gruppen2/service/UserService.java b/src/main/java/mops/gruppen2/service/UserService.java index afa2c95..bfe8b37 100644 --- a/src/main/java/mops/gruppen2/service/UserService.java +++ b/src/main/java/mops/gruppen2/service/UserService.java @@ -19,6 +19,8 @@ public class UserService { this.groupService = groupService; } + //Test nötig?? + public List getUserGroups(String user_id) throws EventException { List group_ids = eventRepository.findGroup_idsWhereUser_id(user_id); List events = groupService.getGroupEvents(group_ids); diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index 5f28fb5..00908f0 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -35,12 +35,10 @@
- +
- +
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 05d423a..822ebf1 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -30,9 +30,12 @@
-

+

+ +

+
diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html index c722a7d..6efe4e7 100644 --- a/src/main/resources/templates/search.html +++ b/src/main/resources/templates/search.html @@ -35,16 +35,7 @@ -
- Öffentliche Gruppen - Private Gruppen -
- Suchbegriff im Namen - Suchbegriff in der Beschreibung - Suchbegriff in der Veranstaltung -
-
- +
diff --git a/src/test/java/mops/gruppen2/architecture/ControllerTest.java b/src/test/java/mops/gruppen2/architecture/ControllerTest.java index 8079fa8..238fa7a 100644 --- a/src/test/java/mops/gruppen2/architecture/ControllerTest.java +++ b/src/test/java/mops/gruppen2/architecture/ControllerTest.java @@ -37,14 +37,6 @@ public class ControllerTest { .that().resideInAPackage("..controller..") .should().haveSimpleNameEndingWith("Controller"); - @ArchTest - public static final ArchRule controllerClassesShouldHaveRequestMappingAnnotation = classes() - .that().resideInAPackage("..controller..") - .and().haveSimpleNameEndingWith("Controller") - .and().areAnnotatedWith(Controller.class) - .or().areAnnotatedWith(RestController.class) - .should().beAnnotatedWith(RequestMapping.class); - @ArchTest public static final ArchRule controllerClassesShouldNotDependOnEachOther = noClasses() .that().haveSimpleNameEndingWith("Controller")