From 2ba81765006f656db2ca1c1394e783a2aca8f5c6 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 6 Mar 2020 13:28:09 +0100 Subject: [PATCH 01/17] add GruppenService and EventRepository and Event object --- src/main/java/mops/gruppen2/DTO/Event.java | 4 ++++ .../java/mops/gruppen2/entities/GruppeRepository.java | 6 ------ .../mops/gruppen2/entities/TeilnehmerRepository.java | 6 ------ .../mops/gruppen2/repositories/EventRepository.java | 7 +++++++ .../java/mops/gruppen2/services/GruppenService.java | 10 ++++++++++ 5 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 src/main/java/mops/gruppen2/DTO/Event.java delete mode 100644 src/main/java/mops/gruppen2/entities/GruppeRepository.java delete mode 100644 src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java create mode 100644 src/main/java/mops/gruppen2/repositories/EventRepository.java create mode 100644 src/main/java/mops/gruppen2/services/GruppenService.java diff --git a/src/main/java/mops/gruppen2/DTO/Event.java b/src/main/java/mops/gruppen2/DTO/Event.java new file mode 100644 index 0000000..2876163 --- /dev/null +++ b/src/main/java/mops/gruppen2/DTO/Event.java @@ -0,0 +1,4 @@ +package mops.gruppen2.DTO; + +public class Event { +} diff --git a/src/main/java/mops/gruppen2/entities/GruppeRepository.java b/src/main/java/mops/gruppen2/entities/GruppeRepository.java deleted file mode 100644 index 5064219..0000000 --- a/src/main/java/mops/gruppen2/entities/GruppeRepository.java +++ /dev/null @@ -1,6 +0,0 @@ -package mops.gruppen2.entities; - -import org.springframework.data.repository.CrudRepository; - -public interface GruppeRepository extends CrudRepository { -} diff --git a/src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java b/src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java deleted file mode 100644 index 9f08a23..0000000 --- a/src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java +++ /dev/null @@ -1,6 +0,0 @@ -package mops.gruppen2.entities; - -import org.springframework.data.repository.CrudRepository; - -public interface TeilnehmerRepository extends CrudRepository { -} diff --git a/src/main/java/mops/gruppen2/repositories/EventRepository.java b/src/main/java/mops/gruppen2/repositories/EventRepository.java new file mode 100644 index 0000000..70ad99c --- /dev/null +++ b/src/main/java/mops/gruppen2/repositories/EventRepository.java @@ -0,0 +1,7 @@ +package mops.gruppen2.repositories; + +import mops.gruppen2.DTO.Event; +import org.springframework.data.repository.CrudRepository; + +public interface EventRepository extends CrudRepository { +} diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java new file mode 100644 index 0000000..c6d262c --- /dev/null +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -0,0 +1,10 @@ +package mops.gruppen2.services; + +import mops.gruppen2.repositories.EventRepository; + +public class GruppenService { + + public GruppenService(EventRepository eventRepository){ + + } +} From cac32dc6726c02c5eb6939d27c7b38ed2cc76a70 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 6 Mar 2020 13:32:59 +0100 Subject: [PATCH 02/17] move createAccountFromPrincipal to service --- .../controllers/Gruppen2Controller.java | 28 ++++++------------- .../gruppen2/services/KeyCloakService.java | 27 ++++++++++++++++++ 2 files changed, 36 insertions(+), 19 deletions(-) create mode 100644 src/main/java/mops/gruppen2/services/KeyCloakService.java diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index 2f9fab5..6347a44 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -1,32 +1,22 @@ package mops.gruppen2.controllers; -import javax.annotation.security.RolesAllowed; -import mops.gruppen2.security.Account; -import org.keycloak.KeycloakPrincipal; +import mops.gruppen2.services.KeyCloakService; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.context.annotation.SessionScope; +import javax.annotation.security.RolesAllowed; + @SessionScope @Controller public class Gruppen2Controller { - /** - * Creates an Account. - * - * @param token Ein toller token - * @return Account with current userdata - */ - private Account createAccountFromPrincipal(KeycloakAuthenticationToken token) { - KeycloakPrincipal principal = (KeycloakPrincipal) token.getPrincipal(); - return new Account( - principal.getName(), - principal.getKeycloakSecurityContext().getIdToken().getEmail(), - null, - principal.getKeycloakSecurityContext().getIdToken().getGivenName(), - principal.getKeycloakSecurityContext().getIdToken().getFamilyName(), - token.getAccount().getRoles()); + + private final KeyCloakService keyCloakService; + + public Gruppen2Controller(KeyCloakService keyCloakService) { + this.keyCloakService = keyCloakService; } /**Zeigt die index.html an. @@ -38,7 +28,7 @@ public class Gruppen2Controller { @GetMapping("/") @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) public String index(KeycloakAuthenticationToken token, Model model) { - model.addAttribute("account", createAccountFromPrincipal(token)); + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); return "index"; } } diff --git a/src/main/java/mops/gruppen2/services/KeyCloakService.java b/src/main/java/mops/gruppen2/services/KeyCloakService.java new file mode 100644 index 0000000..99d2548 --- /dev/null +++ b/src/main/java/mops/gruppen2/services/KeyCloakService.java @@ -0,0 +1,27 @@ +package mops.gruppen2.services; + +import mops.gruppen2.security.Account; +import org.keycloak.KeycloakPrincipal; +import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; +import org.springframework.stereotype.Service; + +@Service +public class KeyCloakService { + + /** + * Creates an Account. + * + * @param token Ein toller token + * @return Account with current userdata + */ + public Account createAccountFromPrincipal(KeycloakAuthenticationToken token) { + KeycloakPrincipal principal = (KeycloakPrincipal) token.getPrincipal(); + return new Account( + principal.getName(), + principal.getKeycloakSecurityContext().getIdToken().getEmail(), + null, + principal.getKeycloakSecurityContext().getIdToken().getGivenName(), + principal.getKeycloakSecurityContext().getIdToken().getFamilyName(), + token.getAccount().getRoles()); + } +} From 761727c8f0d09cbb7aeeaefdbf33f66576214983 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 6 Mar 2020 13:35:37 +0100 Subject: [PATCH 03/17] add gruppen2/ prefix to url --- .../java/mops/gruppen2/controllers/Gruppen2Controller.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index 6347a44..8af3231 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -5,12 +5,14 @@ import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.context.annotation.SessionScope; import javax.annotation.security.RolesAllowed; @SessionScope @Controller +@RequestMapping("/gruppen2") public class Gruppen2Controller { private final KeyCloakService keyCloakService; @@ -25,8 +27,8 @@ public class Gruppen2Controller { * @param model tolles model * @return index.html */ - @GetMapping("/") @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @GetMapping("") public String index(KeycloakAuthenticationToken token, Model model) { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); return "index"; From 75143b33c0e21c11a2fc83f4aae5a936097459b3 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 6 Mar 2020 14:20:04 +0100 Subject: [PATCH 04/17] add Event related stuff and Group example --- src/main/java/mops/gruppen2/DTO/Event.java | 4 ---- .../gruppen2/Events/CreateGroupEvent.java | 17 ++++++++++++++ src/main/java/mops/gruppen2/Events/Event.java | 15 ++++++++++++ .../controllers/Gruppen2Controller.java | 4 ++++ .../java/mops/gruppen2/entities/Admin.java | 2 +- .../java/mops/gruppen2/entities/Gruppe.java | 14 +++++++++++ .../java/mops/gruppen2/entities/Orga.java | 4 ++++ .../java/mops/gruppen2/entities/Rolle.java | 5 ++++ .../java/mops/gruppen2/entities/Student.java | 10 -------- .../repositories/EventRepository.java | 2 +- .../gruppen2/services/GruppenService.java | 23 +++++++++++++++++-- 11 files changed, 82 insertions(+), 18 deletions(-) delete mode 100644 src/main/java/mops/gruppen2/DTO/Event.java create mode 100644 src/main/java/mops/gruppen2/Events/CreateGroupEvent.java create mode 100644 src/main/java/mops/gruppen2/Events/Event.java create mode 100644 src/main/java/mops/gruppen2/entities/Orga.java create mode 100644 src/main/java/mops/gruppen2/entities/Rolle.java delete mode 100644 src/main/java/mops/gruppen2/entities/Student.java diff --git a/src/main/java/mops/gruppen2/DTO/Event.java b/src/main/java/mops/gruppen2/DTO/Event.java deleted file mode 100644 index 2876163..0000000 --- a/src/main/java/mops/gruppen2/DTO/Event.java +++ /dev/null @@ -1,4 +0,0 @@ -package mops.gruppen2.DTO; - -public class Event { -} diff --git a/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java b/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java new file mode 100644 index 0000000..06d432d --- /dev/null +++ b/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java @@ -0,0 +1,17 @@ +package mops.gruppen2.Events; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; + +@Getter +public class CreateGroupEvent extends Event{ + String titel; + String beschreibung; + + public CreateGroupEvent(Long id, Long gruppe_id, Long user_id, String titel,String beschreibung) { + super(id, gruppe_id, user_id); + this.titel = titel; + this.beschreibung = beschreibung; + } +} diff --git a/src/main/java/mops/gruppen2/Events/Event.java b/src/main/java/mops/gruppen2/Events/Event.java new file mode 100644 index 0000000..203f08f --- /dev/null +++ b/src/main/java/mops/gruppen2/Events/Event.java @@ -0,0 +1,15 @@ +package mops.gruppen2.Events; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springframework.data.annotation.Id; + +@Getter +@AllArgsConstructor +public class Event { + @Id + Long id; + Long gruppe_id; + Long user_id; + +} diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index 2f9fab5..c9f1d81 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -2,8 +2,10 @@ package mops.gruppen2.controllers; import javax.annotation.security.RolesAllowed; import mops.gruppen2.security.Account; +import mops.gruppen2.services.GruppenService; import org.keycloak.KeycloakPrincipal; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -12,6 +14,8 @@ import org.springframework.web.context.annotation.SessionScope; @SessionScope @Controller public class Gruppen2Controller { + @Autowired + GruppenService gruppenService; /** * Creates an Account. * diff --git a/src/main/java/mops/gruppen2/entities/Admin.java b/src/main/java/mops/gruppen2/entities/Admin.java index c4d6e46..dcc21d8 100644 --- a/src/main/java/mops/gruppen2/entities/Admin.java +++ b/src/main/java/mops/gruppen2/entities/Admin.java @@ -1,4 +1,4 @@ package mops.gruppen2.entities; -public class Admin extends Teilnehmer{ +public class Admin extends Rolle { } diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index f02bc9d..33f163d 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -1,6 +1,8 @@ package mops.gruppen2.entities; import lombok.Data; +import mops.gruppen2.Events.CreateGroupEvent; +import mops.gruppen2.Events.Event; import org.springframework.data.annotation.Id; import java.util.List; @@ -12,4 +14,16 @@ public class Gruppe { String titel; String beschreibung; List teilnehmersList; + + public void applyEvent(Event event){ + + } + + public void applyEvent(CreateGroupEvent event){ + this.id = event.getId(); + this.titel = event.getTitel(); + this.beschreibung = event.getBeschreibung(); + this.teilnehmersList= null; + } + } diff --git a/src/main/java/mops/gruppen2/entities/Orga.java b/src/main/java/mops/gruppen2/entities/Orga.java new file mode 100644 index 0000000..ad86b27 --- /dev/null +++ b/src/main/java/mops/gruppen2/entities/Orga.java @@ -0,0 +1,4 @@ +package mops.gruppen2.entities; + +public class Orga extends Rolle { +} diff --git a/src/main/java/mops/gruppen2/entities/Rolle.java b/src/main/java/mops/gruppen2/entities/Rolle.java new file mode 100644 index 0000000..1a7bb04 --- /dev/null +++ b/src/main/java/mops/gruppen2/entities/Rolle.java @@ -0,0 +1,5 @@ +package mops.gruppen2.entities; + +public class Rolle { + +} diff --git a/src/main/java/mops/gruppen2/entities/Student.java b/src/main/java/mops/gruppen2/entities/Student.java deleted file mode 100644 index d3aeeb4..0000000 --- a/src/main/java/mops/gruppen2/entities/Student.java +++ /dev/null @@ -1,10 +0,0 @@ -package mops.gruppen2.entities; - -import lombok.Data; -import org.springframework.data.annotation.Id; - -import java.util.List; - -public class Student extends Teilnehmer{ - -} diff --git a/src/main/java/mops/gruppen2/repositories/EventRepository.java b/src/main/java/mops/gruppen2/repositories/EventRepository.java index 70ad99c..9a8d872 100644 --- a/src/main/java/mops/gruppen2/repositories/EventRepository.java +++ b/src/main/java/mops/gruppen2/repositories/EventRepository.java @@ -1,6 +1,6 @@ package mops.gruppen2.repositories; -import mops.gruppen2.DTO.Event; +import mops.gruppen2.Events.Event; import org.springframework.data.repository.CrudRepository; public interface EventRepository extends CrudRepository { diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java index c6d262c..2c67671 100644 --- a/src/main/java/mops/gruppen2/services/GruppenService.java +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -1,10 +1,29 @@ package mops.gruppen2.services; +import mops.gruppen2.Events.CreateGroupEvent; +import mops.gruppen2.Events.Event; +import mops.gruppen2.entities.Gruppe; import mops.gruppen2.repositories.EventRepository; +import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + +@Service public class GruppenService { - public GruppenService(EventRepository eventRepository){ - + CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,1L,"hello", "foo"); + + public GruppenService(){ + List eventList = new ArrayList<>(); + eventList.add(createGroupEvent); + Gruppe newGroup = buildGroup(eventList); + System.out.println(newGroup.toString()); + } + + Gruppe buildGroup(List eventList){ + Gruppe newGroup = new Gruppe(); + eventList.forEach(newGroup::applyEvent); + return newGroup; } } From 1ddfab009169539df3a1fdc077eacc645093fd3f Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 6 Mar 2020 14:40:55 +0100 Subject: [PATCH 05/17] rename events package, add aggregat superclass --- .../mops/gruppen2/Events/CreateGroupEvent.java | 17 ----------------- src/main/java/mops/gruppen2/Events/Event.java | 15 --------------- .../java/mops/gruppen2/entities/Aggregat.java | 18 ++++++++++++++++++ .../java/mops/gruppen2/entities/Gruppe.java | 14 +++----------- .../mops/gruppen2/events/CreateGroupEvent.java | 15 +++++++++++++++ src/main/java/mops/gruppen2/events/Event.java | 12 ++++++++++++ .../gruppen2/repositories/EventRepository.java | 2 +- .../mops/gruppen2/services/GruppenService.java | 5 ++--- .../services/SerializationService.java | 10 ++++++++++ 9 files changed, 61 insertions(+), 47 deletions(-) delete mode 100644 src/main/java/mops/gruppen2/Events/CreateGroupEvent.java delete mode 100644 src/main/java/mops/gruppen2/Events/Event.java create mode 100644 src/main/java/mops/gruppen2/entities/Aggregat.java create mode 100644 src/main/java/mops/gruppen2/events/CreateGroupEvent.java create mode 100644 src/main/java/mops/gruppen2/events/Event.java create mode 100644 src/main/java/mops/gruppen2/services/SerializationService.java diff --git a/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java b/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java deleted file mode 100644 index 06d432d..0000000 --- a/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java +++ /dev/null @@ -1,17 +0,0 @@ -package mops.gruppen2.Events; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; - -@Getter -public class CreateGroupEvent extends Event{ - String titel; - String beschreibung; - - public CreateGroupEvent(Long id, Long gruppe_id, Long user_id, String titel,String beschreibung) { - super(id, gruppe_id, user_id); - this.titel = titel; - this.beschreibung = beschreibung; - } -} diff --git a/src/main/java/mops/gruppen2/Events/Event.java b/src/main/java/mops/gruppen2/Events/Event.java deleted file mode 100644 index 203f08f..0000000 --- a/src/main/java/mops/gruppen2/Events/Event.java +++ /dev/null @@ -1,15 +0,0 @@ -package mops.gruppen2.Events; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import org.springframework.data.annotation.Id; - -@Getter -@AllArgsConstructor -public class Event { - @Id - Long id; - Long gruppe_id; - Long user_id; - -} diff --git a/src/main/java/mops/gruppen2/entities/Aggregat.java b/src/main/java/mops/gruppen2/entities/Aggregat.java new file mode 100644 index 0000000..8322852 --- /dev/null +++ b/src/main/java/mops/gruppen2/entities/Aggregat.java @@ -0,0 +1,18 @@ +package mops.gruppen2.entities; + +import mops.gruppen2.events.Event; + +import java.lang.reflect.Method; + +public abstract class Aggregat { + + public void applyEvent(Event event) { + try { + Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass()); + method.setAccessible(true); + method.invoke(this, event); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index 33f163d..19369b2 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -1,29 +1,21 @@ package mops.gruppen2.entities; import lombok.Data; -import mops.gruppen2.Events.CreateGroupEvent; -import mops.gruppen2.Events.Event; -import org.springframework.data.annotation.Id; +import mops.gruppen2.events.CreateGroupEvent; import java.util.List; @Data -public class Gruppe { - @Id - Long id; +public class Gruppe extends Aggregat { + long id; String titel; String beschreibung; List teilnehmersList; - public void applyEvent(Event event){ - - } - public void applyEvent(CreateGroupEvent event){ this.id = event.getId(); this.titel = event.getTitel(); this.beschreibung = event.getBeschreibung(); this.teilnehmersList= null; } - } diff --git a/src/main/java/mops/gruppen2/events/CreateGroupEvent.java b/src/main/java/mops/gruppen2/events/CreateGroupEvent.java new file mode 100644 index 0000000..8b2758c --- /dev/null +++ b/src/main/java/mops/gruppen2/events/CreateGroupEvent.java @@ -0,0 +1,15 @@ +package mops.gruppen2.events; + +import lombok.Getter; + +@Getter +public class CreateGroupEvent extends Event { + String titel; + String beschreibung; + + public CreateGroupEvent(long id, long gruppe_id, long user_id, String titel, String beschreibung) { + super(id, gruppe_id, user_id); + this.titel = titel; + this.beschreibung = beschreibung; + } +} diff --git a/src/main/java/mops/gruppen2/events/Event.java b/src/main/java/mops/gruppen2/events/Event.java new file mode 100644 index 0000000..3ceb3cd --- /dev/null +++ b/src/main/java/mops/gruppen2/events/Event.java @@ -0,0 +1,12 @@ +package mops.gruppen2.events; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class Event { + long id; + long gruppe_id; + long user_id; +} diff --git a/src/main/java/mops/gruppen2/repositories/EventRepository.java b/src/main/java/mops/gruppen2/repositories/EventRepository.java index 9a8d872..a3b329d 100644 --- a/src/main/java/mops/gruppen2/repositories/EventRepository.java +++ b/src/main/java/mops/gruppen2/repositories/EventRepository.java @@ -1,6 +1,6 @@ package mops.gruppen2.repositories; -import mops.gruppen2.Events.Event; +import mops.gruppen2.events.Event; import org.springframework.data.repository.CrudRepository; public interface EventRepository extends CrudRepository { diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java index 2c67671..8807ee3 100644 --- a/src/main/java/mops/gruppen2/services/GruppenService.java +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -1,9 +1,8 @@ package mops.gruppen2.services; -import mops.gruppen2.Events.CreateGroupEvent; -import mops.gruppen2.Events.Event; +import mops.gruppen2.events.CreateGroupEvent; +import mops.gruppen2.events.Event; import mops.gruppen2.entities.Gruppe; -import mops.gruppen2.repositories.EventRepository; import org.springframework.stereotype.Service; import java.util.ArrayList; diff --git a/src/main/java/mops/gruppen2/services/SerializationService.java b/src/main/java/mops/gruppen2/services/SerializationService.java new file mode 100644 index 0000000..b8de09a --- /dev/null +++ b/src/main/java/mops/gruppen2/services/SerializationService.java @@ -0,0 +1,10 @@ +package mops.gruppen2.services; + +import org.springframework.stereotype.Service; + +/** + * Übersetzt und baut + */ +@Service +public class SerializationService { +} From 2143fe814b88fa424b20cd81cdbb0bbc70dc0152 Mon Sep 17 00:00:00 2001 From: LukasEttel Date: Fri, 6 Mar 2020 14:49:05 +0100 Subject: [PATCH 06/17] created GruppTest --- src/test/java/mops/gruppen2/entities/GruppeTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/test/java/mops/gruppen2/entities/GruppeTest.java diff --git a/src/test/java/mops/gruppen2/entities/GruppeTest.java b/src/test/java/mops/gruppen2/entities/GruppeTest.java new file mode 100644 index 0000000..7cd2ae9 --- /dev/null +++ b/src/test/java/mops/gruppen2/entities/GruppeTest.java @@ -0,0 +1,12 @@ +package mops.gruppen2.entities; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class GruppeTest { + + @Test + void applyEvent() { + } +} \ No newline at end of file From 60446f478975fe54610eb3dee0ed90075c06837a Mon Sep 17 00:00:00 2001 From: XXNitram Date: Fri, 6 Mar 2020 15:12:39 +0100 Subject: [PATCH 07/17] Add UpdateGroupTitleEvent and UpdateGroupDescriptionEvent --- src/main/java/mops/gruppen2/entities/Gruppe.java | 10 ++++++++++ .../events/UpdateGroupDescriptionEvent.java | 13 +++++++++++++ .../mops/gruppen2/events/UpdateGroupTitleEvent.java | 13 +++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java create mode 100644 src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index 19369b2..bb5944f 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -2,6 +2,8 @@ package mops.gruppen2.entities; import lombok.Data; import mops.gruppen2.events.CreateGroupEvent; +import mops.gruppen2.events.UpdateGroupDescriptionEvent; +import mops.gruppen2.events.UpdateGroupTitleEvent; import java.util.List; @@ -18,4 +20,12 @@ public class Gruppe extends Aggregat { this.beschreibung = event.getBeschreibung(); this.teilnehmersList= null; } + + public void applyEvent(UpdateGroupTitleEvent event) { + this.titel = event.getTitel(); + } + + public void applyEvent(UpdateGroupDescriptionEvent event) { + this.beschreibung = event.getBeschreibung(); + } } diff --git a/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java new file mode 100644 index 0000000..5f629ed --- /dev/null +++ b/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java @@ -0,0 +1,13 @@ +package mops.gruppen2.events; + +import lombok.Getter; + +@Getter +public class UpdateGroupDescriptionEvent extends Event { + String beschreibung; + + public UpdateGroupDescriptionEvent(long id, long gruppe_id, long user_id, String beschreibung) { + super(id, gruppe_id, user_id); + this.beschreibung = beschreibung; + } +} diff --git a/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java new file mode 100644 index 0000000..10d100b --- /dev/null +++ b/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java @@ -0,0 +1,13 @@ +package mops.gruppen2.events; + +import lombok.Getter; + +@Getter +public class UpdateGroupTitleEvent extends Event { + String titel; + + public UpdateGroupTitleEvent(long id, long gruppe_id, long user_id, String titel) { + super(id, gruppe_id, user_id); + this.titel = titel; + } +} From 32bdbeec519ddca77af544a4b25e48fe27e60666 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 6 Mar 2020 15:25:42 +0100 Subject: [PATCH 08/17] add Event Adduser --- .../java/mops/gruppen2/entities/Gruppe.java | 17 +++++++++++++++-- src/main/java/mops/gruppen2/events/AddUser.java | 17 +++++++++++++++++ .../mops/gruppen2/services/GruppenService.java | 3 +++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/main/java/mops/gruppen2/events/AddUser.java diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index bb5944f..6b3ddf9 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -1,10 +1,12 @@ package mops.gruppen2.entities; import lombok.Data; +import mops.gruppen2.events.AddUser; import mops.gruppen2.events.CreateGroupEvent; import mops.gruppen2.events.UpdateGroupDescriptionEvent; import mops.gruppen2.events.UpdateGroupTitleEvent; +import java.util.ArrayList; import java.util.List; @Data @@ -14,11 +16,22 @@ public class Gruppe extends Aggregat { String beschreibung; List teilnehmersList; + public Gruppe(){ + this.teilnehmersList = new ArrayList<>(); + } + public void applyEvent(CreateGroupEvent event){ - this.id = event.getId(); this.titel = event.getTitel(); this.beschreibung = event.getBeschreibung(); - this.teilnehmersList= null; + } + + public void applyEvent(AddUser event){ + Teilnehmer teilnehmer = new Teilnehmer(); + teilnehmer.setId(event.getId()); + teilnehmer.setVorname(event.getVorname()); + teilnehmer.setNachname(event.getNachname()); + teilnehmer.setEmail(event.getEmail()); + this.teilnehmersList.add(teilnehmer); } public void applyEvent(UpdateGroupTitleEvent event) { diff --git a/src/main/java/mops/gruppen2/events/AddUser.java b/src/main/java/mops/gruppen2/events/AddUser.java new file mode 100644 index 0000000..0c00754 --- /dev/null +++ b/src/main/java/mops/gruppen2/events/AddUser.java @@ -0,0 +1,17 @@ +package mops.gruppen2.events; + +import lombok.Getter; + +import java.util.List; + +@Getter +public class AddUser extends Event{ + String vorname, nachname, email; + + public AddUser(long id, long gruppe_id, long user_id, String vorname, String nachname, String email) { + super(id, gruppe_id, user_id); + this.vorname = vorname; + this.nachname = nachname; + this.email = email; + } +} diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java index 8807ee3..bf5ac67 100644 --- a/src/main/java/mops/gruppen2/services/GruppenService.java +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -1,5 +1,6 @@ package mops.gruppen2.services; +import mops.gruppen2.events.AddUser; import mops.gruppen2.events.CreateGroupEvent; import mops.gruppen2.events.Event; import mops.gruppen2.entities.Gruppe; @@ -12,10 +13,12 @@ import java.util.List; public class GruppenService { CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,1L,"hello", "foo"); + AddUser addUser = new AddUser(1L, 1L, 1L, "jens","bendiest","jb@gmail.ru"); public GruppenService(){ List eventList = new ArrayList<>(); eventList.add(createGroupEvent); + eventList.add(addUser); Gruppe newGroup = buildGroup(eventList); System.out.println(newGroup.toString()); } From 131bf6c5b7f3cefe6b3f248b8abd424684d12539 Mon Sep 17 00:00:00 2001 From: LukasEttel Date: Fri, 6 Mar 2020 15:47:38 +0100 Subject: [PATCH 09/17] created createGroup - test --- src/main/java/mops/gruppen2/entities/Gruppe.java | 3 +++ .../mops/gruppen2/services/GruppenService.java | 11 ----------- .../java/mops/gruppen2/entities/GruppeTest.java | 14 +++++++++++++- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index 6b3ddf9..a88488f 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -1,6 +1,7 @@ package mops.gruppen2.entities; import lombok.Data; +import lombok.EqualsAndHashCode; import mops.gruppen2.events.AddUser; import mops.gruppen2.events.CreateGroupEvent; import mops.gruppen2.events.UpdateGroupDescriptionEvent; @@ -10,6 +11,7 @@ import java.util.ArrayList; import java.util.List; @Data +@EqualsAndHashCode(callSuper=false) public class Gruppe extends Aggregat { long id; String titel; @@ -21,6 +23,7 @@ public class Gruppe extends Aggregat { } public void applyEvent(CreateGroupEvent event){ + this.id = event.getGruppe_id(); this.titel = event.getTitel(); this.beschreibung = event.getBeschreibung(); } diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java index bf5ac67..d2a073c 100644 --- a/src/main/java/mops/gruppen2/services/GruppenService.java +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -12,17 +12,6 @@ import java.util.List; @Service public class GruppenService { - CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,1L,"hello", "foo"); - AddUser addUser = new AddUser(1L, 1L, 1L, "jens","bendiest","jb@gmail.ru"); - - public GruppenService(){ - List eventList = new ArrayList<>(); - eventList.add(createGroupEvent); - eventList.add(addUser); - Gruppe newGroup = buildGroup(eventList); - System.out.println(newGroup.toString()); - } - Gruppe buildGroup(List eventList){ Gruppe newGroup = new Gruppe(); eventList.forEach(newGroup::applyEvent); diff --git a/src/test/java/mops/gruppen2/entities/GruppeTest.java b/src/test/java/mops/gruppen2/entities/GruppeTest.java index 7cd2ae9..29294e6 100644 --- a/src/test/java/mops/gruppen2/entities/GruppeTest.java +++ b/src/test/java/mops/gruppen2/entities/GruppeTest.java @@ -1,5 +1,6 @@ package mops.gruppen2.entities; +import mops.gruppen2.events.CreateGroupEvent; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -7,6 +8,17 @@ import static org.junit.jupiter.api.Assertions.*; class GruppeTest { @Test - void applyEvent() { + void applyCreteGroupEvent() { + CreateGroupEvent event = new CreateGroupEvent(1L,2L,3L,"hello", "foo"); + + Gruppe gruppe1 = new Gruppe(); + gruppe1.applyEvent(event); + + Gruppe gruppe2 = new Gruppe(); + gruppe2.id = 2; + gruppe2.titel = "hello"; + gruppe2.beschreibung = "foo"; + + assertEquals(gruppe2, gruppe1); } } \ No newline at end of file From 02456e9a880a79d7c7149411c5d028b978edda17 Mon Sep 17 00:00:00 2001 From: Mahgs Date: Fri, 6 Mar 2020 15:52:15 +0100 Subject: [PATCH 10/17] added DeleteUserEvent --- src/main/java/mops/gruppen2/entities/Gruppe.java | 11 +++++++++++ .../java/mops/gruppen2/events/DeleteUserEvent.java | 11 +++++++++++ .../java/mops/gruppen2/services/GruppenService.java | 4 +++- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/main/java/mops/gruppen2/events/DeleteUserEvent.java diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index 6b3ddf9..c0f1d12 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -5,6 +5,7 @@ import mops.gruppen2.events.AddUser; import mops.gruppen2.events.CreateGroupEvent; import mops.gruppen2.events.UpdateGroupDescriptionEvent; import mops.gruppen2.events.UpdateGroupTitleEvent; +import mops.gruppen2.events.DeleteUserEvent; import java.util.ArrayList; import java.util.List; @@ -40,5 +41,15 @@ public class Gruppe extends Aggregat { public void applyEvent(UpdateGroupDescriptionEvent event) { this.beschreibung = event.getBeschreibung(); + this.teilnehmersList = new ArrayList<>(); + } + + public void applyEvent(DeleteUserEvent event) { + for (Teilnehmer teilnehmer: teilnehmersList) { + if (teilnehmer.getId().equals(event.getUser_id())) { + this.teilnehmersList.remove(teilnehmer); + break; + } + } } } diff --git a/src/main/java/mops/gruppen2/events/DeleteUserEvent.java b/src/main/java/mops/gruppen2/events/DeleteUserEvent.java new file mode 100644 index 0000000..2b925a2 --- /dev/null +++ b/src/main/java/mops/gruppen2/events/DeleteUserEvent.java @@ -0,0 +1,11 @@ +package mops.gruppen2.events; + +import lombok.Getter; + +@Getter +public class DeleteUserEvent extends Event{ + + public DeleteUserEvent(long id, long gruppe_id, long user_id) { + super(id, gruppe_id, user_id); + } +} diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java index bf5ac67..40e6a56 100644 --- a/src/main/java/mops/gruppen2/services/GruppenService.java +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -2,6 +2,7 @@ package mops.gruppen2.services; import mops.gruppen2.events.AddUser; import mops.gruppen2.events.CreateGroupEvent; +import mops.gruppen2.events.DeleteUserEvent; import mops.gruppen2.events.Event; import mops.gruppen2.entities.Gruppe; import org.springframework.stereotype.Service; @@ -14,13 +15,14 @@ public class GruppenService { CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,1L,"hello", "foo"); AddUser addUser = new AddUser(1L, 1L, 1L, "jens","bendiest","jb@gmail.ru"); + DeleteUserEvent deleteUserEvent = new DeleteUserEvent(1L, 1L, 1L); public GruppenService(){ List eventList = new ArrayList<>(); eventList.add(createGroupEvent); eventList.add(addUser); + eventList.add(deleteUserEvent); Gruppe newGroup = buildGroup(eventList); - System.out.println(newGroup.toString()); } Gruppe buildGroup(List eventList){ From 991287527e6b3c1e2e8e085b3074b6e423120b9a Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 6 Mar 2020 15:58:12 +0100 Subject: [PATCH 11/17] add test to addUser-Event --- .../mops/gruppen2/entities/GruppeTest.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/test/java/mops/gruppen2/entities/GruppeTest.java b/src/test/java/mops/gruppen2/entities/GruppeTest.java index 7cd2ae9..62c7e4d 100644 --- a/src/test/java/mops/gruppen2/entities/GruppeTest.java +++ b/src/test/java/mops/gruppen2/entities/GruppeTest.java @@ -1,12 +1,51 @@ package mops.gruppen2.entities; +import mops.gruppen2.events.AddUser; +import mops.gruppen2.events.CreateGroupEvent; +import mops.gruppen2.events.Event; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.List; + import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.mock; class GruppeTest { + AddUser addUser; + CreateGroupEvent createGroupEvent; + + @BeforeEach + public void setUp(){ + + } + + @Test void applyEvent() { } + + @Test + void applyAddUserEvent(){ + Gruppe gruppe = new Gruppe(); + Gruppe testGruppe = new Gruppe(); + Teilnehmer teilnehmer = new Teilnehmer(); + addUser = new AddUser(1L,1L,1L,"jens","bendi", "hi@gmail.com"); + createGroupEvent = new CreateGroupEvent(1L,1L,1L, "hi", "foo"); + + gruppe.applyEvent(createGroupEvent); + gruppe.applyEvent(addUser); + testGruppe.applyEvent(createGroupEvent); + teilnehmer.setId(1L); + teilnehmer.setVorname("jens"); + teilnehmer.setNachname("bendi"); + teilnehmer.setEmail("hi@gmail.com"); + List testTeil= new ArrayList<>(); + testTeil.add(teilnehmer); + testGruppe.setTeilnehmersList(testTeil); + + assertEquals(testGruppe,gruppe); + } } \ No newline at end of file From b1d266d7bfa9487123f1a6524a0d120409206965 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 6 Mar 2020 15:58:35 +0100 Subject: [PATCH 12/17] change user_id to String + add updateRoleEvent --- .../java/mops/gruppen2/entities/Aggregat.java | 5 ++++ .../java/mops/gruppen2/entities/Gruppe.java | 29 +++++++++++++------ .../mops/gruppen2/entities/Teilnehmer.java | 4 +-- .../java/mops/gruppen2/events/AddUser.java | 4 +-- .../gruppen2/events/CreateGroupEvent.java | 2 +- src/main/java/mops/gruppen2/events/Event.java | 2 +- .../events/UpdateGroupDescriptionEvent.java | 2 +- .../events/UpdateGroupTitleEvent.java | 2 +- .../mops/gruppen2/events/UpdateRoleEvent.java | 16 ++++++++++ .../gruppen2/services/GruppenService.java | 16 +--------- 10 files changed, 48 insertions(+), 34 deletions(-) create mode 100644 src/main/java/mops/gruppen2/events/UpdateRoleEvent.java diff --git a/src/main/java/mops/gruppen2/entities/Aggregat.java b/src/main/java/mops/gruppen2/entities/Aggregat.java index 8322852..a259113 100644 --- a/src/main/java/mops/gruppen2/entities/Aggregat.java +++ b/src/main/java/mops/gruppen2/entities/Aggregat.java @@ -6,6 +6,11 @@ import java.lang.reflect.Method; public abstract class Aggregat { + /** + * Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf. + * + * @param event + */ public void applyEvent(Event event) { try { Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass()); diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index 6b3ddf9..e609cbf 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -1,36 +1,47 @@ package mops.gruppen2.entities; import lombok.Data; -import mops.gruppen2.events.AddUser; -import mops.gruppen2.events.CreateGroupEvent; -import mops.gruppen2.events.UpdateGroupDescriptionEvent; -import mops.gruppen2.events.UpdateGroupTitleEvent; +import lombok.EqualsAndHashCode; +import mops.gruppen2.events.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +@EqualsAndHashCode(callSuper = true) @Data public class Gruppe extends Aggregat { long id; String titel; String beschreibung; List teilnehmersList; - - public Gruppe(){ - this.teilnehmersList = new ArrayList<>(); - } + Map rollenList; public void applyEvent(CreateGroupEvent event){ + this.id = event.getId(); this.titel = event.getTitel(); this.beschreibung = event.getBeschreibung(); + this.teilnehmersList = new ArrayList<>(); + this.rollenList = new HashMap<>(); + } + + public void applyEvent(UpdateRoleEvent event) { + teilnehmersList.stream() + .filter(teilnehmer -> teilnehmer.getId().equals(event.getUser_id())) + .findFirst() + .ifPresentOrElse(teilnehmer -> rollenList.put(teilnehmer, event.getRole()), + () -> System.out.println("UserNotFoundException")); } public void applyEvent(AddUser event){ Teilnehmer teilnehmer = new Teilnehmer(); - teilnehmer.setId(event.getId()); + + teilnehmer.setId(event.getUser_id()); teilnehmer.setVorname(event.getVorname()); teilnehmer.setNachname(event.getNachname()); teilnehmer.setEmail(event.getEmail()); + this.teilnehmersList.add(teilnehmer); } diff --git a/src/main/java/mops/gruppen2/entities/Teilnehmer.java b/src/main/java/mops/gruppen2/entities/Teilnehmer.java index ef665b9..8eff602 100644 --- a/src/main/java/mops/gruppen2/entities/Teilnehmer.java +++ b/src/main/java/mops/gruppen2/entities/Teilnehmer.java @@ -1,14 +1,12 @@ package mops.gruppen2.entities; import lombok.Data; -import org.springframework.data.annotation.Id; import java.util.List; @Data public class Teilnehmer { - @Id - Long id; + String id; String vorname; String nachname; String email; diff --git a/src/main/java/mops/gruppen2/events/AddUser.java b/src/main/java/mops/gruppen2/events/AddUser.java index 0c00754..bb705b5 100644 --- a/src/main/java/mops/gruppen2/events/AddUser.java +++ b/src/main/java/mops/gruppen2/events/AddUser.java @@ -2,13 +2,11 @@ package mops.gruppen2.events; import lombok.Getter; -import java.util.List; - @Getter public class AddUser extends Event{ String vorname, nachname, email; - public AddUser(long id, long gruppe_id, long user_id, String vorname, String nachname, String email) { + public AddUser(long id, long gruppe_id, String user_id, String vorname, String nachname, String email) { super(id, gruppe_id, user_id); this.vorname = vorname; this.nachname = nachname; diff --git a/src/main/java/mops/gruppen2/events/CreateGroupEvent.java b/src/main/java/mops/gruppen2/events/CreateGroupEvent.java index 8b2758c..cae95c3 100644 --- a/src/main/java/mops/gruppen2/events/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/events/CreateGroupEvent.java @@ -7,7 +7,7 @@ public class CreateGroupEvent extends Event { String titel; String beschreibung; - public CreateGroupEvent(long id, long gruppe_id, long user_id, String titel, String beschreibung) { + public CreateGroupEvent(long id, long gruppe_id, String user_id, String titel, String beschreibung) { super(id, gruppe_id, user_id); this.titel = titel; this.beschreibung = beschreibung; diff --git a/src/main/java/mops/gruppen2/events/Event.java b/src/main/java/mops/gruppen2/events/Event.java index 3ceb3cd..da9c4e6 100644 --- a/src/main/java/mops/gruppen2/events/Event.java +++ b/src/main/java/mops/gruppen2/events/Event.java @@ -8,5 +8,5 @@ import lombok.Getter; public class Event { long id; long gruppe_id; - long user_id; + String user_id; } diff --git a/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java index 5f629ed..232fe56 100644 --- a/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/events/UpdateGroupDescriptionEvent.java @@ -6,7 +6,7 @@ import lombok.Getter; public class UpdateGroupDescriptionEvent extends Event { String beschreibung; - public UpdateGroupDescriptionEvent(long id, long gruppe_id, long user_id, String beschreibung) { + public UpdateGroupDescriptionEvent(long id, long gruppe_id, String user_id, String beschreibung) { super(id, gruppe_id, user_id); this.beschreibung = beschreibung; } diff --git a/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java index 10d100b..4829561 100644 --- a/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/events/UpdateGroupTitleEvent.java @@ -6,7 +6,7 @@ import lombok.Getter; public class UpdateGroupTitleEvent extends Event { String titel; - public UpdateGroupTitleEvent(long id, long gruppe_id, long user_id, String titel) { + public UpdateGroupTitleEvent(long id, long gruppe_id, String user_id, String titel) { super(id, gruppe_id, user_id); this.titel = titel; } diff --git a/src/main/java/mops/gruppen2/events/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/events/UpdateRoleEvent.java new file mode 100644 index 0000000..a9d5141 --- /dev/null +++ b/src/main/java/mops/gruppen2/events/UpdateRoleEvent.java @@ -0,0 +1,16 @@ +package mops.gruppen2.events; + +import lombok.Getter; +import mops.gruppen2.entities.Rolle; + +@Getter +public class UpdateRoleEvent extends Event { + + private final Rolle role; + + public UpdateRoleEvent(long id, long gruppe_id, String user_id, Rolle newRole) { + super(id, gruppe_id, user_id); + + this.role = newRole; + } +} diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java index bf5ac67..5b1676f 100644 --- a/src/main/java/mops/gruppen2/services/GruppenService.java +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -1,28 +1,14 @@ package mops.gruppen2.services; -import mops.gruppen2.events.AddUser; -import mops.gruppen2.events.CreateGroupEvent; -import mops.gruppen2.events.Event; import mops.gruppen2.entities.Gruppe; +import mops.gruppen2.events.Event; import org.springframework.stereotype.Service; -import java.util.ArrayList; import java.util.List; @Service public class GruppenService { - CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,1L,"hello", "foo"); - AddUser addUser = new AddUser(1L, 1L, 1L, "jens","bendiest","jb@gmail.ru"); - - public GruppenService(){ - List eventList = new ArrayList<>(); - eventList.add(createGroupEvent); - eventList.add(addUser); - Gruppe newGroup = buildGroup(eventList); - System.out.println(newGroup.toString()); - } - Gruppe buildGroup(List eventList){ Gruppe newGroup = new Gruppe(); eventList.forEach(newGroup::applyEvent); From 207fd6742ebb882cc2c8f50a2b8330844e0790dd Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 6 Mar 2020 16:07:52 +0100 Subject: [PATCH 13/17] update Test for addUser --- src/test/java/mops/gruppen2/entities/GruppeTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/mops/gruppen2/entities/GruppeTest.java b/src/test/java/mops/gruppen2/entities/GruppeTest.java index 62c7e4d..6e3c28b 100644 --- a/src/test/java/mops/gruppen2/entities/GruppeTest.java +++ b/src/test/java/mops/gruppen2/entities/GruppeTest.java @@ -32,13 +32,13 @@ class GruppeTest { Gruppe gruppe = new Gruppe(); Gruppe testGruppe = new Gruppe(); Teilnehmer teilnehmer = new Teilnehmer(); - addUser = new AddUser(1L,1L,1L,"jens","bendi", "hi@gmail.com"); - createGroupEvent = new CreateGroupEvent(1L,1L,1L, "hi", "foo"); + addUser = new AddUser(1L,1L,"1l","jens","bendi", "hi@gmail.com"); + createGroupEvent = new CreateGroupEvent(1L,1L,"1l", "hi", "foo"); gruppe.applyEvent(createGroupEvent); gruppe.applyEvent(addUser); testGruppe.applyEvent(createGroupEvent); - teilnehmer.setId(1L); + teilnehmer.setId("1l"); teilnehmer.setVorname("jens"); teilnehmer.setNachname("bendi"); teilnehmer.setEmail("hi@gmail.com"); From e905aa37aab009502bc5c0b8fc47829c38cb201d Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 6 Mar 2020 16:11:41 +0100 Subject: [PATCH 14/17] fix DeleteUserEvent --- src/main/java/mops/gruppen2/events/DeleteUserEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/mops/gruppen2/events/DeleteUserEvent.java b/src/main/java/mops/gruppen2/events/DeleteUserEvent.java index 2b925a2..97924ce 100644 --- a/src/main/java/mops/gruppen2/events/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/events/DeleteUserEvent.java @@ -5,7 +5,7 @@ import lombok.Getter; @Getter public class DeleteUserEvent extends Event{ - public DeleteUserEvent(long id, long gruppe_id, long user_id) { + public DeleteUserEvent(long id, long gruppe_id, String user_id) { super(id, gruppe_id, user_id); } } From d14d95dad939f13e80e12aef1c92d166de6f3b4e Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 6 Mar 2020 16:21:20 +0100 Subject: [PATCH 15/17] add assertJ + UpdateRoleEvent test --- build.gradle | 1 + .../mops/gruppen2/entities/GruppeTest.java | 24 +++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 15f22d4..18cce31 100644 --- a/build.gradle +++ b/build.gradle @@ -63,6 +63,7 @@ dependencies { compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.7.0' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' + testImplementation 'org.assertj:assertj-core:3.15.0' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation('org.springframework.boot:spring-boot-starter-test') { diff --git a/src/test/java/mops/gruppen2/entities/GruppeTest.java b/src/test/java/mops/gruppen2/entities/GruppeTest.java index 62c7e4d..6819db2 100644 --- a/src/test/java/mops/gruppen2/entities/GruppeTest.java +++ b/src/test/java/mops/gruppen2/entities/GruppeTest.java @@ -2,7 +2,7 @@ package mops.gruppen2.entities; import mops.gruppen2.events.AddUser; import mops.gruppen2.events.CreateGroupEvent; -import mops.gruppen2.events.Event; +import mops.gruppen2.events.UpdateRoleEvent; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.List; import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; class GruppeTest { @@ -48,4 +49,23 @@ class GruppeTest { assertEquals(testGruppe,gruppe); } -} \ No newline at end of file + + // Verwendet CreateGroupEvent und AddUserEvent + @Test + void updateRoleForExistingUser() { + // Arrange + Gruppe gruppe = new Gruppe(); + + gruppe.applyEvent(new CreateGroupEvent(1L, 1L, "1L", "gruppe1", "Eine Testgruppe")); + gruppe.applyEvent(new AddUser(1L, 1L, "5L", "Peter", "Pan", "123@mail.de")); + + + // Act + gruppe.applyEvent(new UpdateRoleEvent(1L, 1L, "1L", new Orga())); + + // Assert + assertThat(gruppe.getRollenList()) + .containsOnlyKeys(gruppe.getTeilnehmersList().get(0)) + .containsValue(new Orga()); + } +} From 4d90cd23a32b46714c9629c55c8ee9a79c11fb60 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 6 Mar 2020 16:38:14 +0100 Subject: [PATCH 16/17] fix test updateRoleForExistingUser() --- src/test/java/mops/gruppen2/entities/GruppeTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/test/java/mops/gruppen2/entities/GruppeTest.java b/src/test/java/mops/gruppen2/entities/GruppeTest.java index 1ec725c..4f59269 100644 --- a/src/test/java/mops/gruppen2/entities/GruppeTest.java +++ b/src/test/java/mops/gruppen2/entities/GruppeTest.java @@ -9,9 +9,8 @@ import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; -import static org.junit.jupiter.api.Assertions.*; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; +import static org.junit.jupiter.api.Assertions.assertEquals; class GruppeTest { @@ -55,17 +54,17 @@ class GruppeTest { void updateRoleForExistingUser() { // Arrange Gruppe gruppe = new Gruppe(); + Orga orga = new Orga(); gruppe.applyEvent(new CreateGroupEvent(1L, 1L, "1L", "gruppe1", "Eine Testgruppe")); gruppe.applyEvent(new AddUser(1L, 1L, "5L", "Peter", "Pan", "123@mail.de")); - // Act - gruppe.applyEvent(new UpdateRoleEvent(1L, 1L, "1L", new Orga())); + gruppe.applyEvent(new UpdateRoleEvent(1L, 1L, "5L", orga)); // Assert assertThat(gruppe.getRollenList()) .containsOnlyKeys(gruppe.getTeilnehmersList().get(0)) - .containsValue(new Orga()); + .containsValue(orga); } } From 47b2a734fafce36a6f860d02e5adeb56d8f92ed3 Mon Sep 17 00:00:00 2001 From: LukasEttel Date: Fri, 6 Mar 2020 16:43:16 +0100 Subject: [PATCH 17/17] created createGroup - test --- .../java/mops/gruppen2/entities/Gruppe.java | 4 +-- .../mops/gruppen2/entities/GruppeTest.java | 28 ++++++++++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index d83d2dc..0a7ba4e 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -14,7 +14,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode(callSuper=false) @Data public class Gruppe extends Aggregat { long id; @@ -24,7 +24,7 @@ public class Gruppe extends Aggregat { Map rollenList; public void applyEvent(CreateGroupEvent event){ - this.id = event.getId(); + this.id = event.getGruppe_id(); this.titel = event.getTitel(); this.beschreibung = event.getBeschreibung(); this.teilnehmersList = new ArrayList<>(); diff --git a/src/test/java/mops/gruppen2/entities/GruppeTest.java b/src/test/java/mops/gruppen2/entities/GruppeTest.java index 5a3f091..ce7da2f 100644 --- a/src/test/java/mops/gruppen2/entities/GruppeTest.java +++ b/src/test/java/mops/gruppen2/entities/GruppeTest.java @@ -7,6 +7,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -32,13 +33,13 @@ class GruppeTest { Gruppe gruppe = new Gruppe(); Gruppe testGruppe = new Gruppe(); Teilnehmer teilnehmer = new Teilnehmer(); - addUser = new AddUser(1L,1L,1L,"jens","bendi", "hi@gmail.com"); - createGroupEvent = new CreateGroupEvent(1L,1L,1L, "hi", "foo"); + addUser = new AddUser(1L,1L,"prof","jens","bendi", "hi@gmail.com"); + createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo"); gruppe.applyEvent(createGroupEvent); gruppe.applyEvent(addUser); testGruppe.applyEvent(createGroupEvent); - teilnehmer.setId(1L); + teilnehmer.setId("prof"); teilnehmer.setVorname("jens"); teilnehmer.setNachname("bendi"); teilnehmer.setEmail("hi@gmail.com"); @@ -67,4 +68,23 @@ class GruppeTest { .containsOnlyKeys(gruppe.getTeilnehmersList().get(0)) .containsValue(orga); } -} + + @Test + void applyCreteGroupEvent() { + String userId = "asd"; + CreateGroupEvent event = new CreateGroupEvent(1L,2,userId, "hello", "foo"); + + Gruppe gruppe1 = new Gruppe(); + gruppe1.applyEvent(event); + + Gruppe gruppe2 = new Gruppe(); + gruppe2.id = 2L; + gruppe2.titel = "hello"; + gruppe2.beschreibung = "foo"; + gruppe2.teilnehmersList = new ArrayList<>(); + gruppe2.rollenList = new HashMap<>(); + + assertEquals(gruppe2, gruppe1); + } + +} \ No newline at end of file