From 22eede051bd2c577bc019b65c72e8379268765e6 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 16 Mar 2020 15:36:28 +0100 Subject: [PATCH 01/12] 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/12] 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/12] 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/12] 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/12] 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/12] 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/12] 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/12] 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/12] 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/12] 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/12] 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/12] 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\"}"); } }