From 22eede051bd2c577bc019b65c72e8379268765e6 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 16 Mar 2020 15:36:28 +0100 Subject: [PATCH 01/21] change CreateGroupEvent Co-Authored-By: Lukas Ettel Co-Authored-By: tomvahl Co-Authored-By: xxnitram Co-Authored-By: kasch309 --- .../controller/Gruppen2Controller.java | 1 + .../java/mops/gruppen2/domain/Aggregate.java | 42 ------------------- src/main/java/mops/gruppen2/domain/Group.java | 14 +++---- .../domain/event/CreateGroupEvent.java | 10 +++++ .../domain/event/DeleteGroupEvent.java | 1 + .../gruppen2/service/ControllerService.java | 12 +++--- .../mops/gruppen2/service/GroupService.java | 2 +- .../java/mops/gruppen2/domain/GroupTest.java | 6 ++- 8 files changed, 28 insertions(+), 60 deletions(-) delete mode 100644 src/main/java/mops/gruppen2/domain/Aggregate.java diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index c71ae8d..8ca06b6 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -6,6 +6,7 @@ import mops.gruppen2.domain.Group; import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; +import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.security.Account; import mops.gruppen2.service.*; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; diff --git a/src/main/java/mops/gruppen2/domain/Aggregate.java b/src/main/java/mops/gruppen2/domain/Aggregate.java deleted file mode 100644 index e32c632..0000000 --- a/src/main/java/mops/gruppen2/domain/Aggregate.java +++ /dev/null @@ -1,42 +0,0 @@ -package mops.gruppen2.domain; - -import com.google.common.base.Throwables; -import lombok.Getter; -import mops.gruppen2.domain.Exceptions.EventException; -import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; -import mops.gruppen2.domain.event.Event; - -import javax.swing.table.TableRowSorter; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import static java.lang.String.format; - -/** - * Repräsentiert viele Events als aggregiertes Objekt. - */ -@Getter -public abstract class Aggregate { - - protected long id; - - /** - * Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf. - * - * @param event Event, welches aggregiert wird - */ - public void applyEvent(Event event) throws EventException { - try { - Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass()); - method.setAccessible(true); - method.invoke(this, event); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - EventException f = (EventException) e.getTargetException(); - throw f; - } - } -} diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/Group.java index 6e2f6ac..b7e95eb 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/Group.java @@ -1,7 +1,9 @@ package mops.gruppen2.domain; +import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; +import lombok.Setter; import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.event.*; @@ -13,7 +15,10 @@ import java.util.*; */ @EqualsAndHashCode(callSuper = false) @Getter -public class Group extends Aggregate { +@Setter +@AllArgsConstructor +public class Group { + private long id; private String title; private String description; private final List members; @@ -28,13 +33,6 @@ public class Group extends Aggregate { this.roles = new HashMap<>(); } - private void applyEvent(CreateGroupEvent event) { - id = event.getGroup_id(); - visibility = event.getGroupVisibility(); - parent = event.getGroupParent(); - type = event.getGroupType(); - } - private void applyEvent(UpdateRoleEvent event) throws UserNotFoundException { User user; diff --git a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java index 9c256a9..f5f49b1 100644 --- a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java @@ -3,6 +3,7 @@ package mops.gruppen2.domain.event; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import mops.gruppen2.domain.Group; import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.Visibility; @@ -14,10 +15,19 @@ public class CreateGroupEvent extends Event { private Long groupParent; private GroupType groupType; + + public CreateGroupEvent(Long group_id, String user_id, Long parent, GroupType type, Visibility visibility) { super(group_id, user_id); this.groupParent = parent; this.groupType = type; this.groupVisibility = visibility; } + + public void apply(Group group) { + group.setId(this.group_id); + group.setParent(this.groupParent); + group.setType(this.groupType); + group.setVisibility(this.groupVisibility); + } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java index 29a875f..618b8d2 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java @@ -10,4 +10,5 @@ public class DeleteGroupEvent extends Event { public DeleteGroupEvent(long event_id, long group_id, String user_id) { super(event_id, group_id, user_id); } + } diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 56173c1..95a0e5c 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -35,13 +35,11 @@ public class ControllerService { visibility1 = Visibility.PRIVATE; } List eventList = new ArrayList<>(); - Collections.addAll(eventList, new CreateGroupEvent(eventService.checkGroup(), account.getName(), null , GroupType.LECTURE, visibility1), - 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), - new UpdateRoleEvent(eventService.checkGroup(),account.getName(), Role.ADMIN)); - + Group group = new Group(); + CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), account.getName(), null , GroupType.LECTURE, visibility1); + createGroupEvent.apply(group); + eventList.add(createGroupEvent); + System.out.println(group.getId() + "" + group.getVisibility().toString());; eventService.saveEventList(eventList); } diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 2faf17e..427e6c0 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -49,7 +49,7 @@ public class GroupService { Map groupMap = new HashMap<>(); for (Event event : events) { - getOrCreateGroup(groupMap, event.getGroup_id()).applyEvent(event); + //getOrCreateGroup(groupMap, event.getGroup_id()).applyEvent(event); } return new ArrayList<>(groupMap.values()); diff --git a/src/test/java/mops/gruppen2/domain/GroupTest.java b/src/test/java/mops/gruppen2/domain/GroupTest.java index c3ed89d..1f3cba3 100644 --- a/src/test/java/mops/gruppen2/domain/GroupTest.java +++ b/src/test/java/mops/gruppen2/domain/GroupTest.java @@ -5,14 +5,16 @@ import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.event.*; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; -class GroupTest { +class GroupTest { +/* @BeforeEach public void setUp() { } @@ -148,5 +150,5 @@ class GroupTest { group.applyEvent(updateGroupDescriptionEvent); assertThat("Tolle Beschreibung").isEqualTo("Tolle Beschreibung"); - } + }*/ } From 801ef1998cc376eb6df16283348da603f8c1a22b Mon Sep 17 00:00:00 2001 From: XXNitram Date: Mon, 16 Mar 2020 15:44:31 +0100 Subject: [PATCH 02/21] Change UpdateGroupTitleEvent and UpdateGroupDescriptionEvent --- src/main/java/mops/gruppen2/domain/Group.java | 8 -------- .../domain/event/UpdateGroupDescriptionEvent.java | 10 +++++----- .../gruppen2/domain/event/UpdateGroupTitleEvent.java | 11 ++++++----- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/Group.java index b7e95eb..886021b 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/Group.java @@ -63,14 +63,6 @@ public class Group { } } - private void applyEvent(UpdateGroupTitleEvent event) { - this.title = event.getNewGroupTitle(); - } - - private void applyEvent(UpdateGroupDescriptionEvent event) { - this.description = event.getNewGroupDescription(); - } - private void applyEvent(DeleteUserEvent event) throws UserNotFoundException { User user = new User(event.getUser_id(), "", "", ""); diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java index 714513b..83d4e88 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java @@ -3,6 +3,7 @@ package mops.gruppen2.domain.event; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import mops.gruppen2.domain.Group; /** * Ändert nur die Gruppenbeschreibung. @@ -13,13 +14,12 @@ import lombok.NoArgsConstructor; public class UpdateGroupDescriptionEvent extends Event { String newGroupDescription; - public UpdateGroupDescriptionEvent(Long event_id, Long group_id, String user_id, String newGroupDescription) { - super(event_id, group_id, user_id); - this.newGroupDescription = newGroupDescription; - } - public UpdateGroupDescriptionEvent(Long group_id, String user_id, String newGroupDescription) { super(group_id, user_id); this.newGroupDescription = newGroupDescription; } + + public void apply(Group group) { + group.setDescription(this.newGroupDescription); + } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java index f877b6b..dffb13d 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java @@ -3,6 +3,7 @@ package mops.gruppen2.domain.event; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import mops.gruppen2.domain.Group; /** * Ändert nur den Gruppentitel. @@ -13,13 +14,13 @@ import lombok.NoArgsConstructor; public class UpdateGroupTitleEvent extends Event { String newGroupTitle; - public UpdateGroupTitleEvent(Long event_id, Long group_id, String user_id, String newGroupTitle) { - super(event_id, group_id, user_id); - this.newGroupTitle = newGroupTitle; - } - public UpdateGroupTitleEvent(Long group_id, String user_id, String newGroupTitle) { super(group_id, user_id); this.newGroupTitle = newGroupTitle; } + + public void apply(Group group) { + group.setTitle(this.newGroupTitle); + } + } From 06fa9f5284aeb3defdaa60e5995078311da8d4a7 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Mon, 16 Mar 2020 15:45:26 +0100 Subject: [PATCH 03/21] change UpdateRoleEvent --- .../controller/Gruppen2Controller.java | 1 + src/main/java/mops/gruppen2/domain/Group.java | 20 --------------- .../domain/event/UpdateRoleEvent.java | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 8ca06b6..89a81d2 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -81,6 +81,7 @@ public class Gruppen2Controller { return "search"; } + @PostMapping("/createGroup") public String pCreateGroup(KeycloakAuthenticationToken token, @RequestParam(value = "title") String title, diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/Group.java index b7e95eb..a235010 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/Group.java @@ -33,26 +33,6 @@ public class Group { this.roles = new HashMap<>(); } - private void applyEvent(UpdateRoleEvent event) throws UserNotFoundException { - User user; - - Optional userOptional = members.stream() - .filter(u -> u.getUser_id().equals(event.getUser_id())) - .findFirst(); - - if (userOptional.isPresent()) { - user = userOptional.get(); - } else { - throw new UserNotFoundException("Nutzer wurde nicht gefunden!"); - } - - if (roles.containsKey(user) && event.getNewRole() == Role.MEMBER) { - roles.remove(user); - } else { - roles.put(user.getUser_id(), event.getNewRole()); - } - } - private void applyEvent(AddUserEvent event) throws UserAlreadyExistsException { User user = new User(event.getUser_id(), event.getGivenname(), event.getFamilyname(), event.getEmail()); diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index 7d5f95c..defa1d3 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -1,7 +1,12 @@ package mops.gruppen2.domain.event; import lombok.*; +import mops.gruppen2.domain.Exceptions.UserNotFoundException; +import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Role; +import mops.gruppen2.domain.User; + +import java.util.Optional; /** * Aktualisiert die Gruppenrolle eines Teilnehmers. @@ -23,4 +28,24 @@ public class UpdateRoleEvent extends Event { this.newRole = newRole; } + private void apply(Group group) throws UserNotFoundException { + User user; + + Optional userOptional = group.getMembers().stream() + .filter(u -> u.getUser_id().equals(user_id)) + .findFirst(); + + if (userOptional.isPresent()) { + user = userOptional.get(); + } else { + throw new UserNotFoundException("Nutzer wurde nicht gefunden!"); + } + + if (group.getRoles().containsKey(user) && newRole == Role.MEMBER) { + group.getRoles().remove(user); + } else { + group.getRoles().put(user.getUser_id(), newRole); + } + } + } From 315d1d601196151f8d951b8901da3dea64f35296 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 16 Mar 2020 15:46:23 +0100 Subject: [PATCH 04/21] change AddUserEvent and DeleteUserEvent --- .../mops/gruppen2/domain/event/AddUserEvent.java | 15 +++------------ .../gruppen2/domain/event/DeleteGroupEvent.java | 4 ++-- .../gruppen2/domain/event/DeleteUserEvent.java | 10 ++++++++-- .../java/mops/gruppen2/domain/event/Event.java | 1 - .../mops/gruppen2/service/GroupServiceTest.java | 8 ++++---- 5 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index 47bad11..9d298ab 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -3,6 +3,7 @@ package mops.gruppen2.domain.event; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; /** @@ -16,13 +17,6 @@ public class AddUserEvent extends Event { String familyname; String email; - public AddUserEvent(Long event_id, Long group_id, String user_id, String givenname, String familyname, String email) { - super(event_id, group_id, user_id); - this.givenname = givenname; - this.familyname = familyname; - this.email = email; - } - public AddUserEvent(Long group_id, String user_id, String givenname, String familyname, String email) { super(group_id, user_id); this.givenname = givenname; @@ -30,10 +24,7 @@ public class AddUserEvent extends Event { this.email = email; } - public AddUserEvent(Long event_id, Long group_id, User user) { - super(event_id, group_id, user.getUser_id()); - this.givenname = user.getGivenname(); - this.familyname = user.getFamilyname(); - this.email = user.getEmail(); + public void apply(Group group, User user) { + group.getMembers().add(user); } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java index 618b8d2..93b4fce 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java @@ -7,8 +7,8 @@ import lombok.Value; @Value public class DeleteGroupEvent extends Event { - public DeleteGroupEvent(long event_id, long group_id, String user_id) { - super(event_id, group_id, user_id); + public DeleteGroupEvent(long group_id, String user_id) { + super(group_id, user_id); } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 8b6452e..3200fd4 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,15 +1,21 @@ package mops.gruppen2.domain.event; import lombok.*; +import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.User; /** * Entfernt ein einzelnes Mitglied einer Gruppe. */ @Getter public class DeleteUserEvent extends Event { - public DeleteUserEvent(Long event_id, Long group_id, String user_id) { - super(event_id, group_id, user_id); + public DeleteUserEvent(Long group_id, String user_id) { + super(group_id, user_id); } public DeleteUserEvent() {} + + public void apply(Group group, User user) { + group.getMembers().remove(user); + } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index b2fad43..d227190 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -26,7 +26,6 @@ import lombok.Setter; }) @Setter public class Event { - Long event_id; Long group_id; String user_id; diff --git a/src/test/java/mops/gruppen2/service/GroupServiceTest.java b/src/test/java/mops/gruppen2/service/GroupServiceTest.java index 472c38a..03fd9a1 100644 --- a/src/test/java/mops/gruppen2/service/GroupServiceTest.java +++ b/src/test/java/mops/gruppen2/service/GroupServiceTest.java @@ -36,9 +36,9 @@ class GroupServiceTest { eventList.add(new CreateGroupEvent(1L,"Ulli", null, GroupType.LECTURE, Visibility.PRIVATE)); - eventList.add(new DeleteGroupEvent(44, 10, "loescher78")); + eventList.add(new DeleteGroupEvent(10, "loescher78")); - eventList.add(new AddUserEvent(900L, 10L, "Ulli", "Ulli", "Honnis", "FC@B.de")); + eventList.add(new AddUserEvent(10L, "Ulli", "Ulli", "Honnis", "FC@B.de")); Assertions.assertThrows(GroupDoesNotExistException.class, () -> { @@ -53,7 +53,7 @@ class GroupServiceTest { eventList.add(new CreateGroupEvent(1L, "Prof", null, GroupType.LECTURE, Visibility.PRIVATE)); - eventList.add(new DeleteGroupEvent(44, 1L, "loescher78")); + eventList.add(new DeleteGroupEvent(1L, "loescher78")); List list = new ArrayList<>(); @@ -66,7 +66,7 @@ class GroupServiceTest { eventList.add(new CreateGroupEvent(1L, "Prof", null, GroupType.LECTURE, Visibility.PRIVATE)); - eventList.add(new AddUserEvent(900L, 1L, "Ulli", "Ulli", "Honnis", "FC@B.de")); + eventList.add(new AddUserEvent(1L, "Ulli", "Ulli", "Honnis", "FC@B.de")); assertThat(groupService.projectEventList(eventList).get(0)).isInstanceOf(Group.class); } From 8d0b81b65f513ef819adb4ae30b33fa3e91bacfc Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 16 Mar 2020 15:47:07 +0100 Subject: [PATCH 05/21] delete applyEvent-Methods from Group --- src/main/java/mops/gruppen2/domain/Group.java | 47 ------------------- 1 file changed, 47 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/Group.java index b7e95eb..3a09149 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/Group.java @@ -33,51 +33,4 @@ public class Group { this.roles = new HashMap<>(); } - private void applyEvent(UpdateRoleEvent event) throws UserNotFoundException { - User user; - - Optional userOptional = members.stream() - .filter(u -> u.getUser_id().equals(event.getUser_id())) - .findFirst(); - - if (userOptional.isPresent()) { - user = userOptional.get(); - } else { - throw new UserNotFoundException("Nutzer wurde nicht gefunden!"); - } - - if (roles.containsKey(user) && event.getNewRole() == Role.MEMBER) { - roles.remove(user); - } else { - roles.put(user.getUser_id(), event.getNewRole()); - } - } - - private void applyEvent(AddUserEvent event) throws UserAlreadyExistsException { - User user = new User(event.getUser_id(), event.getGivenname(), event.getFamilyname(), event.getEmail()); - - if (!this.members.contains(user)) { - this.members.add(user); - } else { - throw new UserAlreadyExistsException("Nutzer bereits in Gruppe vorhanden!"); - } - } - - private void applyEvent(UpdateGroupTitleEvent event) { - this.title = event.getNewGroupTitle(); - } - - private void applyEvent(UpdateGroupDescriptionEvent event) { - this.description = event.getNewGroupDescription(); - } - - private void applyEvent(DeleteUserEvent event) throws UserNotFoundException { - User user = new User(event.getUser_id(), "", "", ""); - - if (this.members.contains(user)) { - this.members.remove(user); - } else { - throw new UserNotFoundException("Nutzer wurde nicht gefunden!"); - } - } } From abd99f6a5e362e7f7e09330d2f8931e235fcb29c Mon Sep 17 00:00:00 2001 From: Lukas Ettel <34522828+LukasEttel@users.noreply.github.com> Date: Mon, 16 Mar 2020 16:33:26 +0100 Subject: [PATCH 06/21] further refactor of eventhandling Co-Authored-By: Talha Caliskan Co-Authored-By: tomvahl Co-Authored-By: xxnitram Co-Authored-By: kasch309 --- src/main/java/mops/gruppen2/domain/Group.java | 2 +- .../gruppen2/domain/event/AddUserEvent.java | 3 +- .../domain/event/DeleteUserEvent.java | 16 ++++++--- .../mops/gruppen2/domain/event/Event.java | 8 ++--- .../domain/event/UpdateRoleEvent.java | 11 ++----- .../gruppen2/service/ControllerService.java | 4 +-- .../mops/gruppen2/service/GroupService.java | 3 +- .../mops/gruppen2/builder/EventBuilder.java | 5 --- .../domain/event/DeleteUserEventTest.java | 33 +++++++++++++++++++ .../service/SerializationServiceTest.java | 4 +-- 10 files changed, 60 insertions(+), 29 deletions(-) create mode 100644 src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/Group.java index 3a09149..257a4f2 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/Group.java @@ -21,7 +21,7 @@ public class Group { private long id; private String title; private String description; - private final List members; + public List members; private final Map roles; private GroupType type; diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index 9d298ab..2d9d470 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -24,7 +24,8 @@ public class AddUserEvent extends Event { this.email = email; } - public void apply(Group group, User user) { + public void apply(Group group) { + User user = new User(this.user_id, this.givenname, this.familyname, this.email); group.getMembers().add(user); } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 3200fd4..5573117 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -3,19 +3,27 @@ package mops.gruppen2.domain.event; import lombok.*; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; +import mops.gruppen2.domain.Group; /** * Entfernt ein einzelnes Mitglied einer Gruppe. */ @Getter -public class DeleteUserEvent extends Event { +public class DeleteUserEvent extends Event { public DeleteUserEvent(Long group_id, String user_id) { super(group_id, user_id); } - public DeleteUserEvent() {} + public DeleteUserEvent() { + } - public void apply(Group group, User user) { - group.getMembers().remove(user); + public void apply(Group group) { + for (User user : group.getMembers()) { + if (user.getUser_id().equals(this.user_id)) { + group.members.remove(user); + group.getRoles().remove(user); + return; + } + } } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index d227190..6e9406a 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -6,11 +6,12 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import mops.gruppen2.domain.Group; @Getter -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor @JsonTypeInfo( include = JsonTypeInfo.As.PROPERTY, use = JsonTypeInfo.Id.NAME, @@ -30,8 +31,5 @@ public class Event { String user_id; - public Event(Long group_id,String user_id){ - this.group_id = group_id; - this.user_id = user_id; - } + public void apply(Group group){} } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index defa1d3..bfbab9b 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -1,6 +1,7 @@ package mops.gruppen2.domain.event; import lombok.*; +import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Role; @@ -17,19 +18,14 @@ import java.util.Optional; public class UpdateRoleEvent extends Event { Role newRole; - - 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; } - private void apply(Group group) throws UserNotFoundException { - User user; + public void apply(Group group) { + User user = new User(user_id, null, null, null); Optional userOptional = group.getMembers().stream() .filter(u -> u.getUser_id().equals(user_id)) @@ -38,7 +34,6 @@ public class UpdateRoleEvent extends Event { if (userOptional.isPresent()) { user = userOptional.get(); } else { - throw new UserNotFoundException("Nutzer wurde nicht gefunden!"); } if (group.getRoles().containsKey(user) && newRole == Role.MEMBER) { diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 95a0e5c..7325360 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -43,8 +43,8 @@ public class ControllerService { eventService.saveEventList(eventList); } - public void addUser(Account account, Group group){ + /*public void addUser(Account account, Group group){ AddUserEvent addUserEvent = new AddUserEvent(eventService.checkGroup(),group.getId(),account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()); eventService.saveEvent(addUserEvent); - } + }*/ } diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 427e6c0..f0f976d 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -49,7 +49,8 @@ public class GroupService { Map groupMap = new HashMap<>(); for (Event event : events) { - //getOrCreateGroup(groupMap, event.getGroup_id()).applyEvent(event); + Group group = getOrCreateGroup(groupMap, event.getGroup_id()); + event.apply(group); } return new ArrayList<>(groupMap.values()); diff --git a/src/test/java/mops/gruppen2/builder/EventBuilder.java b/src/test/java/mops/gruppen2/builder/EventBuilder.java index f64a143..8fd2952 100644 --- a/src/test/java/mops/gruppen2/builder/EventBuilder.java +++ b/src/test/java/mops/gruppen2/builder/EventBuilder.java @@ -73,7 +73,6 @@ public class EventBuilder { String lastname = faker.name().lastName(); return new AddUserEvent( - faker.random().nextLong(), group_id, user_id, firstname, @@ -103,7 +102,6 @@ public class EventBuilder { Faker faker = new Faker(); return new DeleteUserEvent( - faker.random().nextLong(), group_id, user_id ); @@ -129,7 +127,6 @@ public class EventBuilder { Faker faker = new Faker(); return new UpdateGroupDescriptionEvent( - faker.random().nextLong(), group_id, faker.random().hex(), faker.leagueOfLegends().quote() @@ -140,7 +137,6 @@ public class EventBuilder { Faker faker = new Faker(); return new UpdateGroupTitleEvent( - faker.random().nextLong(), group_id, faker.random().hex(), faker.leagueOfLegends().champion() @@ -151,7 +147,6 @@ public class EventBuilder { Faker faker = new Faker(); return new UpdateRoleEvent( - faker.random().nextLong(), group_id, user_id, role diff --git a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java new file mode 100644 index 0000000..a903776 --- /dev/null +++ b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java @@ -0,0 +1,33 @@ +package mops.gruppen2.domain.event; + +import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.User; +import org.junit.jupiter.api.Test; + +import static mops.gruppen2.domain.Role.MEMBER; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +class DeleteUserEventTest { + + @Test + void apply() { + Group group = new Group(); + + User user = new User("user1","Stein", "Speck", "@sdasd"); + + group.getMembers().add(user); + group.getRoles().put("user1", MEMBER); + + User user2 = new User("user2","Rock", "Roll", "and"); + + group.getMembers().add(user2); + group.getRoles().put("user2", MEMBER); + + Event event = new DeleteUserEvent(1L, "user1"); + + event.apply(group); + + assertThat(group.getRoles().size()).isEqualTo(1); + } +} \ No newline at end of file diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index 193253d..27b5235 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -23,7 +23,7 @@ class SerializationServiceTest { @Test void serializeEventTest() throws JsonProcessingException { - Event event = new Event(1L,1L,"1"); + Event event = new Event(1L,"1"); assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"type\":\"Event\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}"); } @@ -66,7 +66,7 @@ class SerializationServiceTest { @Test void deserializeUpdateRoleEventToRightClass() throws JsonProcessingException { - System.out.println(serializationService.serializeEvent(new UpdateRoleEvent(1L, 1L, "1", Role.ADMIN))); + System.out.println(serializationService.serializeEvent(new UpdateRoleEvent(1L, "1", Role.ADMIN))); String json = "{\"type\":\"UpdateRoleEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":1,\"newRole\":\"ADMIN\"}"; From 6991a1840548b8b23cab38500acbddf5fa13bd23 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 16 Mar 2020 16:50:32 +0100 Subject: [PATCH 07/21] fix UpdateRoleEvent and DeleteUserEvent Co-Authored-By: Lukas Ettel Co-Authored-By: tomvahl Co-Authored-By: xxnitram Co-Authored-By: kasch309 --- src/main/java/mops/gruppen2/domain/Group.java | 2 +- .../gruppen2/domain/event/DeleteUserEvent.java | 2 +- .../gruppen2/domain/event/UpdateRoleEvent.java | 17 +---------------- 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/Group.java index 257a4f2..3a09149 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/Group.java @@ -21,7 +21,7 @@ public class Group { private long id; private String title; private String description; - public List members; + private final List members; private final Map roles; private GroupType type; diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 5573117..b22bcd3 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -21,7 +21,7 @@ public class DeleteUserEvent extends Event { for (User user : group.getMembers()) { if (user.getUser_id().equals(this.user_id)) { group.members.remove(user); - group.getRoles().remove(user); + group.getRoles().remove(user_id); return; } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index bfbab9b..f115c97 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -25,22 +25,7 @@ public class UpdateRoleEvent extends Event { } public void apply(Group group) { - User user = new User(user_id, null, null, null); - - Optional userOptional = group.getMembers().stream() - .filter(u -> u.getUser_id().equals(user_id)) - .findFirst(); - - if (userOptional.isPresent()) { - user = userOptional.get(); - } else { - } - - if (group.getRoles().containsKey(user) && newRole == Role.MEMBER) { - group.getRoles().remove(user); - } else { - group.getRoles().put(user.getUser_id(), newRole); - } + group.getRoles().put(this.user_id, this.newRole); } } From ca469d83af44ca5872c6d90c999e12653e7b514b Mon Sep 17 00:00:00 2001 From: Lukas Ettel <34522828+LukasEttel@users.noreply.github.com> Date: Mon, 16 Mar 2020 17:01:44 +0100 Subject: [PATCH 08/21] even further stuff Co-Authored-By: Talha Caliskan Co-Authored-By: tomvahl Co-Authored-By: xxnitram Co-Authored-By: kasch309 --- .../mops/gruppen2/domain/event/DeleteGroupEvent.java | 11 +++++++++++ .../mops/gruppen2/domain/event/DeleteUserEvent.java | 7 ++----- .../gruppen2/domain/event/DeleteUserEventTest.java | 2 ++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java index 93b4fce..4b8a6e3 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java @@ -2,6 +2,7 @@ package mops.gruppen2.domain.event; import lombok.EqualsAndHashCode; import lombok.Value; +import mops.gruppen2.domain.Group; @EqualsAndHashCode(callSuper = true) @Value @@ -11,4 +12,14 @@ public class DeleteGroupEvent extends Event { super(group_id, user_id); } + @Override + public void apply(Group group) { + group.getRoles().clear(); + group.getMembers().clear(); + group.setTitle(null); + group.setDescription(null); + group.setVisibility(null); + group.setType(null); + group.setParent(null); + } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index b22bcd3..6deb074 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -14,14 +14,11 @@ public class DeleteUserEvent extends Event { super(group_id, user_id); } - public DeleteUserEvent() { - } - public void apply(Group group) { for (User user : group.getMembers()) { if (user.getUser_id().equals(this.user_id)) { - group.members.remove(user); - group.getRoles().remove(user_id); + group.getMembers().remove(user); + group.getRoles().remove(user.getUser_id()); return; } } diff --git a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java index a903776..59fc2de 100644 --- a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java @@ -28,6 +28,8 @@ class DeleteUserEventTest { event.apply(group); + assertThat(group.getMembers().size()).isEqualTo(1); assertThat(group.getRoles().size()).isEqualTo(1); + } } \ No newline at end of file From 1b8fa0482634ac110a00efa3433126f2d45dc96b Mon Sep 17 00:00:00 2001 From: tomvahl Date: Tue, 17 Mar 2020 10:45:03 +0100 Subject: [PATCH 09/21] change createGroup Methode in ControllerService --- .../mops/gruppen2/service/ControllerService.java | 16 +++++++++++++++- .../java/mops/gruppen2/service/GroupService.java | 6 ++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 7325360..6866877 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -36,10 +36,24 @@ public class ControllerService { } List eventList = new ArrayList<>(); Group group = new Group(); + //Erstellen der Events CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), account.getName(), null , GroupType.LECTURE, visibility1); + 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(),description); + UpdateRoleEvent updateRoleEvent = new UpdateRoleEvent(eventService.checkGroup(),account.getName(),Role.ADMIN); + //Gruppe erzeugen aber eigentlich unnötig? createGroupEvent.apply(group); + addUserEvent.apply(group); + updateGroupTitleEvent.apply(group); + updateGroupDescriptionEvent.apply(group); + updateRoleEvent.apply(group); + //Speichern in DB eventList.add(createGroupEvent); - System.out.println(group.getId() + "" + group.getVisibility().toString());; + eventList.add(addUserEvent); + eventList.add(updateGroupTitleEvent); + eventList.add(updateGroupDescriptionEvent); + eventList.add(updateRoleEvent); eventService.saveEventList(eventList); } diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index f0f976d..8a39f5e 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -31,11 +31,10 @@ public class GroupService { */ public List getGroupEvents(List group_ids) { List eventDTOS = new ArrayList<>(); - List events = new ArrayList<>(); for (Long group_id: group_ids) { eventDTOS.addAll(eventRepository.findEventDTOByGroup_id(group_id)); } - return events = eventService.translateEventDTOs(eventDTOS); + return eventService.translateEventDTOs(eventDTOS); } /** Erzeugt eine neue Map wo Gruppen aus den Events erzeugt und den Gruppen_ids zugeordnet werden. @@ -82,6 +81,9 @@ public class GroupService { } + + + /** * Filtert alle öffentliche Gruppen nach dem suchbegriff und gibt diese als Liste von Gruppen zurück. * Groß und kleinschreibung wird beachtet. From 8387b58e354beb1ee6c71b39ff383ab5157adf4b Mon Sep 17 00:00:00 2001 From: tomvahl Date: Tue, 17 Mar 2020 11:09:27 +0100 Subject: [PATCH 10/21] change createGroup Methode in ControllerService --- .../gruppen2/service/ControllerService.java | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 6866877..3a42f8c 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -29,36 +29,40 @@ public class ControllerService { */ public void createGroup(Account account, String title, String description, Boolean visibility) { Visibility visibility1; + Long group_id = eventService.checkGroup(); + if (visibility){ visibility1 = Visibility.PUBLIC; }else{ visibility1 = Visibility.PRIVATE; } - List eventList = new ArrayList<>(); - Group group = new Group(); - //Erstellen der Events - CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), account.getName(), null , GroupType.LECTURE, visibility1); - 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(),description); - UpdateRoleEvent updateRoleEvent = new UpdateRoleEvent(eventService.checkGroup(),account.getName(),Role.ADMIN); - //Gruppe erzeugen aber eigentlich unnötig? - createGroupEvent.apply(group); - addUserEvent.apply(group); - updateGroupTitleEvent.apply(group); - updateGroupDescriptionEvent.apply(group); - updateRoleEvent.apply(group); - //Speichern in DB - eventList.add(createGroupEvent); - eventList.add(addUserEvent); - eventList.add(updateGroupTitleEvent); - eventList.add(updateGroupDescriptionEvent); - eventList.add(updateRoleEvent); - eventService.saveEventList(eventList); + + CreateGroupEvent createGroupEvent = new CreateGroupEvent(group_id, account.getName(), null , GroupType.LECTURE, visibility1); + eventService.saveEvent(createGroupEvent); + + addUser(account, group_id); + updateTitle(account, group_id, title); + updateDescription(account, group_id, description); + updateRole(account, group_id); } - /*public void addUser(Account account, Group group){ - AddUserEvent addUserEvent = new AddUserEvent(eventService.checkGroup(),group.getId(),account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()); + public void addUser(Account account, Long group_id){ + AddUserEvent addUserEvent = new AddUserEvent(group_id,account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()); eventService.saveEvent(addUserEvent); - }*/ + } + + public void updateTitle(Account account, Long group_id, String title){ + UpdateGroupTitleEvent updateGroupTitleEvent = new UpdateGroupTitleEvent(group_id,account.getName(),title); + eventService.saveEvent(updateGroupTitleEvent); + } + + public void updateDescription(Account account, Long group_id, String description){ + UpdateGroupDescriptionEvent updateGroupDescriptionEvent = new UpdateGroupDescriptionEvent(group_id,account.getName(),description); + eventService.saveEvent(updateGroupDescriptionEvent); + } + + public void updateRole(Account account,Long group_id){ + UpdateRoleEvent updateRoleEvent = new UpdateRoleEvent(group_id,account.getName(),Role.ADMIN); + eventService.saveEvent(updateRoleEvent); + } } From cbf69e387b40b306abd2d3f82459d7bb5ac16685 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Tue, 17 Mar 2020 12:35:06 +0100 Subject: [PATCH 11/21] fix search funktion --- .../mops/gruppen2/repository/EventRepository.java | 4 ++-- src/main/java/mops/gruppen2/service/GroupService.java | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/mops/gruppen2/repository/EventRepository.java b/src/main/java/mops/gruppen2/repository/EventRepository.java index 4bbd2d7..5efc363 100644 --- a/src/main/java/mops/gruppen2/repository/EventRepository.java +++ b/src/main/java/mops/gruppen2/repository/EventRepository.java @@ -19,8 +19,8 @@ public interface EventRepository extends CrudRepository { //@Query("SELECT * FROM event WHERE event_id > ?#{[0]}") //Iterable findNewEventSinceStatus(@Param("status") Long status); - @Query("select * from event where visibility =:vis") - List findEventDTOByVisibility(@Param("vis") Boolean visibility); + @Query("select distinct group_id from event where visibility =:vis") + List findGroup_idsWhereVisibility(@Param("vis") Boolean visibility); @Query("SELECT DISTINCT group_id FROM event WHERE event_id > :status") public List findNewEventSinceStatus(@Param("status") Long status); diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 8a39f5e..d000aec 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -3,6 +3,7 @@ package mops.gruppen2.service; import mops.gruppen2.domain.EventDTO; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.Visibility; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.springframework.stereotype.Service; @@ -76,14 +77,16 @@ public class GroupService { * @return * @throws EventException */ + public List getAllGroupWithVisibilityPublic() throws EventException { - return projectEventList(eventService.translateEventDTOs(eventRepository.findEventDTOByVisibility(Boolean.TRUE))); + List group_ids = eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE); + List eventDTOS = eventRepository.findAllEventsOfGroups(group_ids); + List events = eventService.translateEventDTOs(eventDTOS); + List groups = projectEventList(events); + return groups; } - - - /** * Filtert alle öffentliche Gruppen nach dem suchbegriff und gibt diese als Liste von Gruppen zurück. * Groß und kleinschreibung wird beachtet. From 0467d3c6a66fab8ed258e20d233f07cc4b5bad56 Mon Sep 17 00:00:00 2001 From: Lukas Ettel <34522828+LukasEttel@users.noreply.github.com> Date: Tue, 17 Mar 2020 13:46:19 +0100 Subject: [PATCH 12/21] removed outdated test Co-Authored-By: tomvahl Co-Authored-By: Talha Caliskan Co-Authored-By: xxnitram --- .../mops/gruppen2/service/GroupService.java | 2 +- .../service/SerializationServiceTest.java | 59 +------------------ 2 files changed, 2 insertions(+), 59 deletions(-) diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index d000aec..a4b034b 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -97,7 +97,7 @@ public class GroupService { public List findGroupWith(String search) throws EventException { List groups = new ArrayList<>(); for (Group group: getAllGroupWithVisibilityPublic()) { - if (group.getTitle().contains(search)){ + if (group.getTitle().contains(search)|| group.getDescription().contains(search)){ groups.add(group); } } diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index 27b5235..d0070e1 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -25,63 +25,6 @@ class SerializationServiceTest { void serializeEventTest() throws JsonProcessingException { Event event = new Event(1L,"1"); - assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"type\":\"Event\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}"); - } - - @Test - void deserializeAddUserEventToRightClass() throws JsonProcessingException { - String json = "{\"type\":\"AddUserEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}"; - - Event event = serializationService.deserializeEvent(json); - - assertThat(event).isInstanceOf(AddUserEvent.class); - } - - @Test - void deserializeDeleteUserEventToRightClass() throws JsonProcessingException { - String json = "{\"type\":\"DeleteUserEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}"; - - Event event = serializationService.deserializeEvent(json); - - assertThat(event).isInstanceOf(DeleteUserEvent.class); - } - - @Test - void deserializeUpdateGroupDescriptionEventToRightClass() throws JsonProcessingException { - String json = "{\"type\":\"UpdateGroupDescriptionEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\",\"newGroupDescription\":\"test\"}"; - - Event event = serializationService.deserializeEvent(json); - - assertThat(event).isInstanceOf(UpdateGroupDescriptionEvent.class); - } - - @Test - void deserializeUpdateGroupTitleEventToRightClass() throws JsonProcessingException { - String json = "{\"type\":\"UpdateGroupTitleEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\",\"newGroupTitle\":\"test\"}"; - - Event event = serializationService.deserializeEvent(json); - - assertThat(event).isInstanceOf(UpdateGroupTitleEvent.class); - } - - @Test - void deserializeUpdateRoleEventToRightClass() throws JsonProcessingException { - System.out.println(serializationService.serializeEvent(new UpdateRoleEvent(1L, "1", Role.ADMIN))); - - String json = "{\"type\":\"UpdateRoleEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":1,\"newRole\":\"ADMIN\"}"; - - Event event = serializationService.deserializeEvent(json); - - assertThat(event).isInstanceOf(UpdateRoleEvent.class); - } - - @Disabled - @Test - void deserializeCreateGroupEventToRightClass() throws JsonProcessingException { - String json = "{\"type\":\"CreateGroupEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\",\"type\":\"test\",\"visibility\":\"test\"}"; - - Event event = serializationService.deserializeEvent(json); - - assertThat(event).isInstanceOf(CreateGroupEvent.class); + assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"type\":\"Event\",\"group_id\":1,\"user_id\":\"1\"}"); } } From bae8805972a530d5a7c8b087b9c394a46b53333a Mon Sep 17 00:00:00 2001 From: kasch309 Date: Tue, 17 Mar 2020 13:47:09 +0100 Subject: [PATCH 13/21] fix styling, add missing attributes --- src/main/resources/templates/detailsMember.html | 2 +- src/main/resources/templates/detailsNoMember.html | 2 +- src/main/resources/templates/index.html | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index 4781f31..a4fffe7 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -27,7 +27,7 @@
-
+

diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html index e12d035..cd54383 100644 --- a/src/main/resources/templates/detailsNoMember.html +++ b/src/main/resources/templates/detailsNoMember.html @@ -27,7 +27,7 @@

-
+

diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 95db70b..9b9ea12 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -31,10 +31,11 @@

Meine Gruppen

-
+

+


From 41833b2a073e7b30524795348e7267d5997a0ac2 Mon Sep 17 00:00:00 2001 From: AndiBuls Date: Tue, 17 Mar 2020 13:56:03 +0100 Subject: [PATCH 14/21] fixed spacing for details --- .../resources/templates/detailsMember.html | 31 ++++++++++--------- .../resources/templates/detailsNoMember.html | 30 +++++++++--------- 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index a4fffe7..c05382b 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -27,23 +27,24 @@
-
- -

-

- Private Gruppe - Öffentliche Gruppe - Veranstaltung -

-

-
-
- +
+
+ +

+

+ Private Gruppe + Öffentliche Gruppe + Veranstaltung +

+

+
+
+ +
-
- + +
-

Mitglieder

diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html index cd54383..29199e9 100644 --- a/src/main/resources/templates/detailsNoMember.html +++ b/src/main/resources/templates/detailsNoMember.html @@ -27,21 +27,23 @@
-
-
-

-

- Private Gruppe - Öffentliche Gruppe - Veranstaltung -

-

-
-
- +
+
+ +

+

+ Private Gruppe + Öffentliche Gruppe + Veranstaltung +

+

+
+
+ +
-
- + +
From 4bcf931246afd65bef9a49015cb73625b47b930c Mon Sep 17 00:00:00 2001 From: AndiBuls Date: Tue, 17 Mar 2020 13:58:34 +0100 Subject: [PATCH 15/21] spacing still wrong --- src/main/resources/templates/detailsMember.html | 2 +- src/main/resources/templates/detailsNoMember.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index c05382b..31a52f9 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -27,7 +27,7 @@
-
+

diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html index 29199e9..37a3c4a 100644 --- a/src/main/resources/templates/detailsNoMember.html +++ b/src/main/resources/templates/detailsNoMember.html @@ -27,7 +27,7 @@
-
+

From 61e007e4d8524ff903f3f8a61ad866e844109aea Mon Sep 17 00:00:00 2001 From: killerber4t Date: Tue, 17 Mar 2020 14:36:55 +0100 Subject: [PATCH 16/21] add leaving group Co-Authored-By: xxnitram --- .../controller/Gruppen2Controller.java | 13 +++++++- .../domain/event/DeleteUserEvent.java | 1 + .../gruppen2/service/ControllerService.java | 6 ++++ .../mops/gruppen2/service/UserService.java | 16 +++++++--- .../resources/templates/detailsMember.html | 30 +++++++++---------- 5 files changed, 46 insertions(+), 20 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 5883a89..59ee52b 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -15,13 +15,16 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; +import org.springframework.web.context.annotation.SessionScope; import org.springframework.web.server.ResponseStatusException; import javax.annotation.security.RolesAllowed; import java.util.ArrayList; import java.util.List; + @Controller +@SessionScope @RequestMapping("/gruppen2") public class Gruppen2Controller { @@ -56,7 +59,7 @@ public class Gruppen2Controller { User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); - model.addAttribute("gruppen", userService.getUserGroups(user.getUser_id())); + model.addAttribute("gruppen", userService.getUserGroups(user)); model.addAttribute("user",user); return "index"; } @@ -125,4 +128,12 @@ public class Gruppen2Controller { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); } + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @PostMapping("/leaveGroup") + public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam (value="group_id") Long id) { + Account account = keyCloakService.createAccountFromPrincipal(token); + controllerService.deleteUser(account, id); + System.out.println(id); + return "redirect:/gruppen2/"; + } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 6deb074..d7cff68 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -9,6 +9,7 @@ import mops.gruppen2.domain.Group; * Entfernt ein einzelnes Mitglied einer Gruppe. */ @Getter +@NoArgsConstructor public class DeleteUserEvent extends Event { public DeleteUserEvent(Long group_id, String user_id) { super(group_id, user_id); diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 3a42f8c..f0ee54d 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -65,4 +65,10 @@ public class ControllerService { UpdateRoleEvent updateRoleEvent = new UpdateRoleEvent(group_id,account.getName(),Role.ADMIN); eventService.saveEvent(updateRoleEvent); } + + public void deleteUser(Account account, Long group_id){ + DeleteUserEvent deleteUserEvent = new DeleteUserEvent(group_id,account.getName()); + System.out.println(deleteUserEvent.getGroup_id() + " " + deleteUserEvent.getUser_id()); + eventService.saveEvent(deleteUserEvent); + } } diff --git a/src/main/java/mops/gruppen2/service/UserService.java b/src/main/java/mops/gruppen2/service/UserService.java index 7fe6122..74a9ca4 100644 --- a/src/main/java/mops/gruppen2/service/UserService.java +++ b/src/main/java/mops/gruppen2/service/UserService.java @@ -2,13 +2,14 @@ package mops.gruppen2.service; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.User; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; - +//Hallo @Service public class UserService { @@ -22,10 +23,17 @@ public class UserService { //Test nötig?? - public List getUserGroups(String user_id) throws EventException { - List group_ids = eventRepository.findGroup_idsWhereUser_id(user_id); + public List getUserGroups(User user) throws EventException { + List group_ids = eventRepository.findGroup_idsWhereUser_id(user.getUser_id()); List events = groupService.getGroupEvents(group_ids); - return groupService.projectEventList(events); + List groups = groupService.projectEventList(events); + List newGroups = new ArrayList<>(); + for (Group group: groups) { + if(group.getMembers().contains(user)){ + newGroups.add(group); + } + } + return newGroups; } public Group getGroupById(Long group_id) throws EventException { diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index a4fffe7..aa0d7f6 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -28,20 +28,20 @@
- -

-

- Private Gruppe - Öffentliche Gruppe - Veranstaltung -

-

-
-
- -
+

+

+ Private Gruppe + Öffentliche Gruppe + Veranstaltung +

+

+
+
+ + +
- +
@@ -53,8 +53,8 @@
  • - - admin + + admin
From aa843f1d8e42824c135869a9520133b14ec347e0 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Tue, 17 Mar 2020 14:46:20 +0100 Subject: [PATCH 17/21] fix html --- .../resources/templates/detailsMember.html | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index aa0d7f6..6086619 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -27,23 +27,25 @@
-
-

-

- Private Gruppe - Öffentliche Gruppe - Veranstaltung -

-

-
-
-
- -
-
+ +
+
+

+

+ Private Gruppe + Öffentliche Gruppe + Veranstaltung +

+

+
+
+
+ +
+
+
-

Mitglieder

From c052ec6ae6ec9cbd88a79b1217730efe6bf9b179 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Tue, 17 Mar 2020 14:58:02 +0100 Subject: [PATCH 18/21] refactor code Co-Authored-By: xxnitram --- src/main/java/mops/gruppen2/controller/Gruppen2Controller.java | 1 - src/main/java/mops/gruppen2/service/ControllerService.java | 1 - 2 files changed, 2 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 59ee52b..ddc90f8 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -133,7 +133,6 @@ public class Gruppen2Controller { public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam (value="group_id") Long id) { Account account = keyCloakService.createAccountFromPrincipal(token); controllerService.deleteUser(account, id); - System.out.println(id); return "redirect:/gruppen2/"; } } diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index f0ee54d..126d519 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -68,7 +68,6 @@ public class ControllerService { public void deleteUser(Account account, Long group_id){ DeleteUserEvent deleteUserEvent = new DeleteUserEvent(group_id,account.getName()); - System.out.println(deleteUserEvent.getGroup_id() + " " + deleteUserEvent.getUser_id()); eventService.saveEvent(deleteUserEvent); } } From bd9e1bb28e95d03497818c0e4b4b6a19bc83cc75 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Tue, 17 Mar 2020 15:11:40 +0100 Subject: [PATCH 19/21] add Join Group Mitgearbeitet hat: Karla Andi --- .../mops/gruppen2/controller/Gruppen2Controller.java | 9 +++++++++ src/main/resources/templates/detailsNoMember.html | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index ddc90f8..8ab6403 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -116,6 +116,15 @@ public class Gruppen2Controller { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); } + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @PostMapping("/detailsBeitreten") + public String joinGroup(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws EventException { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + Account account = keyCloakService.createAccountFromPrincipal (token); + controllerService.addUser(account,id); + return "redirect:/gruppen2/"; + } + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @GetMapping("/detailsSearch") public String showGroupDetailsNoMember (KeycloakAuthenticationToken token, Model model, @RequestParam (value="id") Long id) throws EventException { diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html index 37a3c4a..44f1dfd 100644 --- a/src/main/resources/templates/detailsNoMember.html +++ b/src/main/resources/templates/detailsNoMember.html @@ -29,7 +29,6 @@
-

Private Gruppe @@ -39,10 +38,11 @@

- + + +
-
From 991bcf2aaa7d8409f94558fbb450da353fa517d0 Mon Sep 17 00:00:00 2001 From: Lukas Ettel <34522828+LukasEttel@users.noreply.github.com> Date: Tue, 17 Mar 2020 15:57:26 +0100 Subject: [PATCH 20/21] Implementation of old EventExeptions --- .../GroupDoesNotExistException.java | 9 ----- .../gruppen2/domain/event/AddUserEvent.java | 11 +++++- .../domain/event/DeleteUserEvent.java | 5 ++- .../mops/gruppen2/domain/event/Event.java | 4 ++- .../domain/event/UpdateRoleEvent.java | 5 ++- .../domain/event/AddUserEventTest.java | 35 +++++++++++++++++++ .../domain/event/DeleteUserEventTest.java | 23 +++++++++++- .../gruppen2/service/GroupServiceTest.java | 31 ---------------- 8 files changed, 78 insertions(+), 45 deletions(-) delete mode 100644 src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java create mode 100644 src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java diff --git a/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java b/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java deleted file mode 100644 index 785b901..0000000 --- a/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java +++ /dev/null @@ -1,9 +0,0 @@ -package mops.gruppen2.domain.Exceptions; - -import mops.gruppen2.domain.event.Event; - -public class GroupDoesNotExistException extends EventException { - public GroupDoesNotExistException(String msg) { - super(msg); - } -} diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index 2d9d470..a97845c 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -3,7 +3,10 @@ package mops.gruppen2.domain.event; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; /** @@ -24,8 +27,14 @@ public class AddUserEvent extends Event { this.email = email; } - public void apply(Group group) { + public void apply(Group group) throws EventException{ User user = new User(this.user_id, this.givenname, this.familyname, this.email); + + if (group.getMembers().contains(user)){ + throw new UserAlreadyExistsException("Der User existiert bereits"); + } + group.getMembers().add(user); + group.getRoles().put(user_id, Role.MEMBER); } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 6deb074..c693692 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,6 +1,8 @@ package mops.gruppen2.domain.event; import lombok.*; +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; import mops.gruppen2.domain.Group; @@ -14,7 +16,7 @@ public class DeleteUserEvent extends Event { super(group_id, user_id); } - public void apply(Group group) { + public void apply(Group group) throws EventException { for (User user : group.getMembers()) { if (user.getUser_id().equals(this.user_id)) { group.getMembers().remove(user); @@ -22,5 +24,6 @@ public class DeleteUserEvent extends Event { return; } } + throw new UserNotFoundException("Der User existiert nicht"); } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 6e9406a..17a00f9 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -6,6 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; @@ -31,5 +32,6 @@ public class Event { String user_id; - public void apply(Group group){} + public void apply(Group group) throws EventException { + } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index f115c97..10d7cee 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -24,7 +24,10 @@ public class UpdateRoleEvent extends Event { this.newRole = newRole; } - public void apply(Group group) { + public void apply(Group group) throws UserNotFoundException{ + if (group.getRoles().containsKey(user_id)){ + throw new UserNotFoundException("Der User wurde nicht gefunden"); + } group.getRoles().put(this.user_id, this.newRole); } diff --git a/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java b/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java new file mode 100644 index 0000000..649166f --- /dev/null +++ b/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java @@ -0,0 +1,35 @@ +package mops.gruppen2.domain.event; + +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; +import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.User; +import org.junit.jupiter.api.Test; + +import static mops.gruppen2.domain.Role.MEMBER; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +class AddUserEventTest { + + @Test + public void userAllreadyExistExeption() throws EventException { + Group group = new Group(); + + User user = new User("user1","Stein", "Speck", "@sdasd"); + + group.getMembers().add(user); + + Event event1 = new AddUserEvent(4L, "user2", "Rock", "Roll", "and"); + event1.apply(group); + + Event event2 = new AddUserEvent(4L, "user1", "Rock", "Roll", "and"); + + assertThrows(UserAlreadyExistsException.class, ()-> + event2.apply(group) + ); + assertThat(group.getMembers().size()).isEqualTo(2); + } + + +} \ No newline at end of file diff --git a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java index 59fc2de..6f3c67a 100644 --- a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java @@ -1,5 +1,8 @@ package mops.gruppen2.domain.event; +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; +import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; import org.junit.jupiter.api.Test; @@ -11,7 +14,7 @@ import static org.junit.jupiter.api.Assertions.*; class DeleteUserEventTest { @Test - void apply() { + void applyDeleteUser() throws EventException { Group group = new Group(); User user = new User("user1","Stein", "Speck", "@sdasd"); @@ -32,4 +35,22 @@ class DeleteUserEventTest { assertThat(group.getRoles().size()).isEqualTo(1); } + + @Test + void userDoesNotExistExeption() { + Group group = new Group(); + + User user = new User("user1","Stein", "Speck", "@sdasd"); + + group.getMembers().add(user); + group.getRoles().put("user1", MEMBER); + + Event event = new DeleteUserEvent(17L,"user5"); + + assertThrows(UserNotFoundException.class, ()-> + event.apply(group) + ); + + assertThat(group.getMembers().size()).isEqualTo(1); + } } \ No newline at end of file diff --git a/src/test/java/mops/gruppen2/service/GroupServiceTest.java b/src/test/java/mops/gruppen2/service/GroupServiceTest.java index 03fd9a1..c67a227 100644 --- a/src/test/java/mops/gruppen2/service/GroupServiceTest.java +++ b/src/test/java/mops/gruppen2/service/GroupServiceTest.java @@ -1,6 +1,5 @@ package mops.gruppen2.service; -import mops.gruppen2.domain.Exceptions.GroupDoesNotExistException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.Visibility; @@ -29,36 +28,6 @@ class GroupServiceTest { groupService = new GroupService(mock(EventService.class), eventRepository); } - @Disabled - @Test - void applyEventOnGroupThatIsDeleted() throws Exception { - List eventList = new ArrayList<>(); - - eventList.add(new CreateGroupEvent(1L,"Ulli", null, GroupType.LECTURE, Visibility.PRIVATE)); - - eventList.add(new DeleteGroupEvent(10, "loescher78")); - - eventList.add(new AddUserEvent(10L, "Ulli", "Ulli", "Honnis", "FC@B.de")); - - - Assertions.assertThrows(GroupDoesNotExistException.class, () -> { - groupService.projectEventList(eventList); - }); - } - - @Disabled - @Test - void returnDeletedGroup() throws Exception { - List eventList = new ArrayList<>(); - - eventList.add(new CreateGroupEvent(1L, "Prof", null, GroupType.LECTURE, Visibility.PRIVATE)); - - eventList.add(new DeleteGroupEvent(1L, "loescher78")); - - List list = new ArrayList<>(); - - assertThat(groupService.projectEventList(eventList)).isEqualTo(list); - } @Test void rightClassForSucsessfulGroup() throws Exception { From 49c38b583c4aba09688a6727f5370a78b6b01b19 Mon Sep 17 00:00:00 2001 From: Lukas Ettel <34522828+LukasEttel@users.noreply.github.com> Date: Tue, 17 Mar 2020 16:13:29 +0100 Subject: [PATCH 21/21] Quick fix on master --- src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index 10d7cee..eeea3d9 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -25,7 +25,7 @@ public class UpdateRoleEvent extends Event { } public void apply(Group group) throws UserNotFoundException{ - if (group.getRoles().containsKey(user_id)){ + if (!group.getRoles().containsKey(user_id)){ throw new UserNotFoundException("Der User wurde nicht gefunden"); } group.getRoles().put(this.user_id, this.newRole);