From 0a751c58b63c731557fdcbd2a0654074395baa8d Mon Sep 17 00:00:00 2001 From: AndiBuls Date: Thu, 5 Mar 2020 14:18:17 +0100 Subject: [PATCH 01/27] added index.html --- .../mops/gruppen2/controllers/Gruppen2Controller.java | 10 ++++++++++ src/main/java/mops/gruppen2/entities/Admin.java | 4 ++++ src/main/java/mops/gruppen2/entities/Student.java | 4 ++++ src/main/java/mops/gruppen2/entities/Teilnehmer.java | 5 +++++ src/main/resources/templates/index.html | 10 ++++++++-- 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index 2f9fab5..d011528 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -1,12 +1,16 @@ package mops.gruppen2.controllers; import javax.annotation.security.RolesAllowed; + +import mops.gruppen2.entities.Teilnehmer; import mops.gruppen2.security.Account; import org.keycloak.KeycloakPrincipal; 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.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.context.annotation.SessionScope; @SessionScope @@ -41,4 +45,10 @@ public class Gruppen2Controller { model.addAttribute("account", createAccountFromPrincipal(token)); return "index"; } + + @PostMapping("/") + public String addTeilnehmer(@ModelAttribute Teilnehmer teilnehmer) { + System.out.println(teilnehmer); + return "redirect:/"; + } } diff --git a/src/main/java/mops/gruppen2/entities/Admin.java b/src/main/java/mops/gruppen2/entities/Admin.java index c4d6e46..a50a14f 100644 --- a/src/main/java/mops/gruppen2/entities/Admin.java +++ b/src/main/java/mops/gruppen2/entities/Admin.java @@ -1,4 +1,8 @@ package mops.gruppen2.entities; public class Admin extends Teilnehmer{ + + public Admin(String vorname, String nachname) { + super(vorname, nachname); + } } diff --git a/src/main/java/mops/gruppen2/entities/Student.java b/src/main/java/mops/gruppen2/entities/Student.java index d3aeeb4..e1804ef 100644 --- a/src/main/java/mops/gruppen2/entities/Student.java +++ b/src/main/java/mops/gruppen2/entities/Student.java @@ -7,4 +7,8 @@ import java.util.List; public class Student extends Teilnehmer{ + public Student(String vorname, String nachname) { + super(vorname, nachname); + } + } diff --git a/src/main/java/mops/gruppen2/entities/Teilnehmer.java b/src/main/java/mops/gruppen2/entities/Teilnehmer.java index ef665b9..e622d4c 100644 --- a/src/main/java/mops/gruppen2/entities/Teilnehmer.java +++ b/src/main/java/mops/gruppen2/entities/Teilnehmer.java @@ -13,4 +13,9 @@ public class Teilnehmer { String nachname; String email; List Gruppen; + + public Teilnehmer(String vorname, String nachname) { + this.vorname = vorname; + this.nachname = nachname; + } } diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index b9f629d..005029a 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -1,6 +1,6 @@ + th:replace="~{mopslayout :: html(name='Gruppenbildung', headcontent=~{:: headcontent}, navigation=~{:: navigation}, bodycontent=~{:: bodycontent})}"> Name des Subsystems @@ -15,7 +15,13 @@
- +
+ + + + + +
\ No newline at end of file From 4b51e29edba593321f8fa765f65d8b764adf92d9 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Thu, 5 Mar 2020 16:36:21 +0100 Subject: [PATCH 02/27] fix html --- .../controllers/Gruppen2Controller.java | 6 ++++-- .../java/mops/gruppen2/entities/Gruppe.java | 6 ++++++ .../gruppen2/entities/GruppeRepository.java | 2 ++ .../gruppen2/entities/TeilnehmerRepository.java | 2 ++ src/main/resources/templates/index.html | 17 ++++++++++------- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index d011528..cb3d617 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -2,6 +2,8 @@ package mops.gruppen2.controllers; import javax.annotation.security.RolesAllowed; +import mops.gruppen2.entities.Gruppe; +import mops.gruppen2.entities.GruppeRepository; import mops.gruppen2.entities.Teilnehmer; import mops.gruppen2.security.Account; import org.keycloak.KeycloakPrincipal; @@ -47,8 +49,8 @@ public class Gruppen2Controller { } @PostMapping("/") - public String addTeilnehmer(@ModelAttribute Teilnehmer teilnehmer) { - System.out.println(teilnehmer); + public String addGruppe(@ModelAttribute Gruppe gruppe) { + System.out.println(gruppe); return "redirect:/"; } } diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index f02bc9d..3616018 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -6,10 +6,16 @@ import org.springframework.data.annotation.Id; import java.util.List; @Data + public class Gruppe { @Id Long id; String titel; String beschreibung; List teilnehmersList; + + public Gruppe (String titel, String beschreibung){ + this.titel = titel; + this.beschreibung = beschreibung; + } } diff --git a/src/main/java/mops/gruppen2/entities/GruppeRepository.java b/src/main/java/mops/gruppen2/entities/GruppeRepository.java index 5064219..988fcd2 100644 --- a/src/main/java/mops/gruppen2/entities/GruppeRepository.java +++ b/src/main/java/mops/gruppen2/entities/GruppeRepository.java @@ -1,6 +1,8 @@ package mops.gruppen2.entities; import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; +@Repository 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 index 9f08a23..a0bf398 100644 --- a/src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java +++ b/src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java @@ -1,6 +1,8 @@ package mops.gruppen2.entities; import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; +@Repository public interface TeilnehmerRepository extends CrudRepository { } diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 005029a..ec2b39d 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -15,13 +15,16 @@
-
- - - - - -
+
+

Gruppenerstellung

+
+
+
+
+
+ +
+
\ No newline at end of file From 7dc7fafed76178501cc912ed026cd613cd26beef Mon Sep 17 00:00:00 2001 From: tomvahl Date: Thu, 5 Mar 2020 19:04:27 +0100 Subject: [PATCH 03/27] change index.html --- src/main/resources/templates/index.html | 26 +++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index ec2b39d..4c7fc33 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -16,14 +16,24 @@
-

Gruppenerstellung

-
-
-
-
-
- -
+
+
+

Gruppenerstellung

+
+
+ + +
+
+ + +
+
+ +
+
+
+
From 18412accf8eac62c22b6db27e6391681893f2b9e Mon Sep 17 00:00:00 2001 From: tomvahl Date: Fri, 6 Mar 2020 13:18:53 +0100 Subject: [PATCH 04/27] change index.html --- src/main/java/mops/gruppen2/entities/Gruppe.java | 8 ++------ src/main/resources/templates/index.html | 15 +++++++++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index 3616018..801898b 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -10,12 +10,8 @@ import java.util.List; public class Gruppe { @Id Long id; - String titel; - String beschreibung; + private String titel; + private String beschreibung; List teilnehmersList; - public Gruppe (String titel, String beschreibung){ - this.titel = titel; - this.beschreibung = beschreibung; - } } diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 4c7fc33..6325eb7 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -10,14 +10,21 @@
- +
-
+

Gruppenerstellung

From c5b970ffc9f58b00e7039ce3b640b4fda09059a2 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Fri, 6 Mar 2020 14:21:43 +0100 Subject: [PATCH 05/27] change index.html --- .../controllers/Gruppen2Controller.java | 10 ++++ src/main/resources/templates/index.html | 7 ++- src/main/resources/templates/search.html | 31 ++++++++++ src/main/resources/templates/test.html | 58 +++++++++++++++++++ 4 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/templates/search.html create mode 100644 src/main/resources/templates/test.html diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index cb3d617..d693b24 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -53,4 +53,14 @@ public class Gruppen2Controller { System.out.println(gruppe); return "redirect:/"; } + + @GetMapping("/createGroup") + public String createGruppe(){ + return "test"; + } + + @GetMapping("/findGroup") + public String findGruppe(){ + return "search"; + } } diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 6325eb7..44020e9 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -13,10 +13,13 @@ diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html new file mode 100644 index 0000000..b84e2d9 --- /dev/null +++ b/src/main/resources/templates/search.html @@ -0,0 +1,31 @@ + + + + + Name des Subsystems + + + + + +
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/test.html b/src/main/resources/templates/test.html new file mode 100644 index 0000000..da8dd0d --- /dev/null +++ b/src/main/resources/templates/test.html @@ -0,0 +1,58 @@ + + + + + Name des Subsystems + + + + + +
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + +
TitelBeschreibung
Titel1Beschreibung1
Titel2Beschreibung2
Titel3Beschreibung3
+
+
+
+
+ + \ No newline at end of file From bdd2fc37a90d9465828fcd1111c3951e5d91fd67 Mon Sep 17 00:00:00 2001 From: AndiBuls Date: Fri, 6 Mar 2020 14:30:56 +0100 Subject: [PATCH 06/27] changed name for html file --- .../java/mops/gruppen2/controllers/Gruppen2Controller.java | 4 +--- src/main/resources/templates/{test.html => create.html} | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) rename src/main/resources/templates/{test.html => create.html} (91%) diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index d693b24..153a394 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -3,8 +3,6 @@ package mops.gruppen2.controllers; import javax.annotation.security.RolesAllowed; import mops.gruppen2.entities.Gruppe; -import mops.gruppen2.entities.GruppeRepository; -import mops.gruppen2.entities.Teilnehmer; import mops.gruppen2.security.Account; import org.keycloak.KeycloakPrincipal; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; @@ -56,7 +54,7 @@ public class Gruppen2Controller { @GetMapping("/createGroup") public String createGruppe(){ - return "test"; + return "create"; } @GetMapping("/findGroup") diff --git a/src/main/resources/templates/test.html b/src/main/resources/templates/create.html similarity index 91% rename from src/main/resources/templates/test.html rename to src/main/resources/templates/create.html index da8dd0d..9a32e92 100644 --- a/src/main/resources/templates/test.html +++ b/src/main/resources/templates/create.html @@ -1,6 +1,6 @@ + th:replace="~{mopslayout :: html(name='Gruppenbildung', headcontent=~{:: headcontent}, navigation=~{:: navigation}, bodycontent=~{:: bodycontent})}"> Name des Subsystems From 2645e4dd849e0c7b03590ce3d8c5aa71dacd73a2 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Fri, 6 Mar 2020 14:58:31 +0100 Subject: [PATCH 07/27] change create.html index.html and search.html --- src/main/resources/templates/create.html | 29 +----------------------- src/main/resources/templates/index.html | 21 +---------------- src/main/resources/templates/search.html | 21 ++++++++++++++++- 3 files changed, 22 insertions(+), 49 deletions(-) diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index 9a32e92..cd15ffd 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -25,34 +25,7 @@
-
-
-
- - - - - - - - - - - - - - - - - - - - - -
TitelBeschreibung
Titel1Beschreibung1
Titel2Beschreibung2
Titel3Beschreibung3
-
-
-
+
\ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 44020e9..5d54fba 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -25,26 +25,7 @@
-
-
-
-

Gruppenerstellung

- -
- - -
-
- - -
-
- -
- -
-
-
+
\ No newline at end of file diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html index b84e2d9..1725fd2 100644 --- a/src/main/resources/templates/search.html +++ b/src/main/resources/templates/search.html @@ -25,7 +25,26 @@
- +
+
+
+

Gruppenerstellung

+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
\ No newline at end of file From 7379330a86e4f26d828943dddafd1a5b2eb60647 Mon Sep 17 00:00:00 2001 From: AndiBuls Date: Mon, 9 Mar 2020 13:24:11 +0100 Subject: [PATCH 08/27] add template for index --- src/main/resources/templates/index.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 5d54fba..490cec8 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -25,7 +25,16 @@
+

Meine Gruppen

+
+
+
+

Titel der Gruppe

+

Beschreibung der Gruppe ...

+
+
+
\ No newline at end of file From af4a12c89218ea66ecc66549a0eb0b976fc5c1b6 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 13:25:38 +0100 Subject: [PATCH 09/27] refactor aggregate build process --- src/main/java/mops/gruppen2/domain/Aggregate.java | 11 ++++++++++- .../java/mops/gruppen2/service/GroupService.java | 3 +-- src/test/java/mops/gruppen2/domain/GroupTest.java | 12 ++++++------ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/Aggregate.java b/src/main/java/mops/gruppen2/domain/Aggregate.java index 294cc60..f5e2c8a 100644 --- a/src/main/java/mops/gruppen2/domain/Aggregate.java +++ b/src/main/java/mops/gruppen2/domain/Aggregate.java @@ -4,6 +4,7 @@ import lombok.Getter; import mops.gruppen2.domain.event.Event; import java.lang.reflect.Method; +import java.util.List; /** * Repräsentiert viele Events als aggregiertes Objekt. @@ -13,12 +14,20 @@ public abstract class Aggregate { protected long id; + public void apply(List events) { + events.forEach(this::applyEvent); + } + + public void apply(Event event) { + applyEvent(event); + } + /** * Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf. * * @param event Event, welches aggregiert wird */ - public void applyEvent(Event event) { + private void applyEvent(Event event) { try { Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass()); method.setAccessible(true); diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 42e9d31..b6dba9c 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -18,8 +18,7 @@ public class GroupService { */ Group buildGroupFromEvents(List eventList) { Group newGroup = new Group(); - - eventList.forEach(newGroup::applyEvent); + newGroup.apply(eventList); return newGroup; } diff --git a/src/test/java/mops/gruppen2/domain/GroupTest.java b/src/test/java/mops/gruppen2/domain/GroupTest.java index 3901fe0..192e7b6 100644 --- a/src/test/java/mops/gruppen2/domain/GroupTest.java +++ b/src/test/java/mops/gruppen2/domain/GroupTest.java @@ -26,7 +26,7 @@ class GroupTest { CreateGroupEvent createGroupEvent = new CreateGroupEvent(1,2, "asd", "hello", "foo"); Group group = new Group(); - group.applyEvent(createGroupEvent); + group.apply(createGroupEvent); assertThat(group.getDescription()).isEqualTo("foo"); assertThat(group.getTitle()).isEqualTo("hello"); @@ -38,11 +38,11 @@ class GroupTest { void addSingleUser() { CreateGroupEvent createGroupEvent = new CreateGroupEvent(1,1,"prof1", "hi", "foo"); Group group = new Group(); - group.applyEvent(createGroupEvent); + group.apply(createGroupEvent); User user = new User("prof", "jens", "bendi", "hi@gmail.com"); AddUserEvent addUserEvent = new AddUserEvent(1,1, user); - group.applyEvent(addUserEvent); + group.apply(addUserEvent); assertThat(group.getMembers().get(0)).isEqualTo(user); } @@ -55,13 +55,13 @@ class GroupTest { AddUserEvent addUserEvent = new AddUserEvent(1L, 1L, "5L", "Peter", "Pan", "123@mail.de"); Group group = new Group(); - group.applyEvent(createGroupEvent); - group.applyEvent(addUserEvent); + group.apply(createGroupEvent); + group.apply(addUserEvent); UpdateRoleEvent updateRoleEvent = new UpdateRoleEvent(1L, 1L, "5L", Role.ORGA); // Act - group.applyEvent(updateRoleEvent); + group.apply(updateRoleEvent); // Assert assertThat(group.getRoles()) From 1a3b1c52b3ba121327a958ebe21eb402b5040132 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 13:25:54 +0100 Subject: [PATCH 10/27] add eventDTO --- src/main/java/mops/gruppen2/domain/EventDTO.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/mops/gruppen2/domain/EventDTO.java diff --git a/src/main/java/mops/gruppen2/domain/EventDTO.java b/src/main/java/mops/gruppen2/domain/EventDTO.java new file mode 100644 index 0000000..13bee88 --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/EventDTO.java @@ -0,0 +1,13 @@ +package mops.gruppen2.domain; + +import lombok.Value; +import org.springframework.data.relational.core.mapping.Table; + +@Value +@Table("event") +public class EventDTO { + long event_id; + long group_id; + String user_id; + String event_payload; +} From 2da89300e357f437298871225cf9cd988056e376 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 13:48:01 +0100 Subject: [PATCH 11/27] Jackson serialization test --- .../SwaggerAPIControllerExample.java | 23 +++++++++++++++++++ .../mops/gruppen2/domain/event/Event.java | 2 ++ .../mops/gruppen2/service/GroupService.java | 4 +--- .../service/SerializationService.java | 20 ++++++++++++++++ 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java index b186b9e..3b5c06e 100644 --- a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java +++ b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java @@ -1,10 +1,13 @@ package mops.gruppen2.controller; +import com.fasterxml.jackson.core.JsonProcessingException; import com.github.javafaker.Faker; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import mops.gruppen2.domain.ProductSwaggerExample; +import mops.gruppen2.domain.event.AddUserEvent; +import mops.gruppen2.service.SerializationService; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -19,6 +22,11 @@ public class SwaggerAPIControllerExample { private final Faker faker = new Faker(); private final List products = new ArrayList<>(); + private final SerializationService serializationService; + + public SwaggerAPIControllerExample(SerializationService serializationService) { + this.serializationService = serializationService; + } @GetMapping("/get/all") @ApiOperation(value = "Erzeugt eine Liste mit allen gespeicherten Produkten") @@ -44,4 +52,19 @@ public class SwaggerAPIControllerExample { return "Product saved successfully"; } + + @GetMapping("/json") + public void json() { + try { + serializationService.serializeEvent(new AddUserEvent( + 1, + 1, + "Eins", + faker.leagueOfLegends().location(), + faker.name().lastName(), + "123@email.de")); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 6835d96..65f4584 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -1,10 +1,12 @@ package mops.gruppen2.domain.event; +import com.fasterxml.jackson.annotation.JsonTypeInfo; import lombok.Value; import lombok.experimental.NonFinal; @Value @NonFinal +@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME) public class Event { long event_id; long group_id; diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index b6dba9c..c018e76 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -12,14 +12,12 @@ public class GroupService { /** * Konstruiert eine vollständige Gruppe aus Events, welche dieselbe Gruppe betreffen. * - * @param event Initiales CreateGroup-Event - * @param eventList Die restlichen Events für diese Gruppe + * @param eventList Die Events für diese Gruppe * @return Gruppe auf aktuellem Stand */ Group buildGroupFromEvents(List eventList) { Group newGroup = new Group(); newGroup.apply(eventList); - return newGroup; } } diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index 8d3452c..57e9f3f 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -1,5 +1,11 @@ package mops.gruppen2.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import mops.gruppen2.domain.event.Event; +import mops.gruppen2.repository.EventRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; /** @@ -7,4 +13,18 @@ import org.springframework.stereotype.Service; */ @Service public class SerializationService { + + private final EventRepository eventStore; + private final Logger log = LoggerFactory.getLogger(SerializationService.class); + + public SerializationService(EventRepository eventStore) { + this.eventStore = eventStore; + } + + public String serializeEvent(Event event) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(event); + log.info(json); + return json; + } } From aa80a3b5dff548906cd83439552e550fb599f1d8 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 9 Mar 2020 14:25:00 +0100 Subject: [PATCH 12/27] add Saving Events in DB --- .../controller/SwaggerAPIControllerExample.java | 16 +++++++++------- src/main/java/mops/gruppen2/domain/EventDTO.java | 5 ++++- .../gruppen2/repository/EventRepository.java | 3 ++- .../gruppen2/service/SerializationService.java | 14 ++++++++++++++ 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java index 3b5c06e..5953926 100644 --- a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java +++ b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java @@ -55,14 +55,16 @@ public class SwaggerAPIControllerExample { @GetMapping("/json") public void json() { + AddUserEvent aEvent = new AddUserEvent( + 1, + 1, + "Eins", + faker.leagueOfLegends().location(), + faker.name().lastName(), + "123@email.de"); try { - serializationService.serializeEvent(new AddUserEvent( - 1, - 1, - "Eins", - faker.leagueOfLegends().location(), - faker.name().lastName(), - "123@email.de")); + serializationService.serializeEvent(aEvent); + serializationService.saveEvent(aEvent); } catch (JsonProcessingException e) { e.printStackTrace(); } diff --git a/src/main/java/mops/gruppen2/domain/EventDTO.java b/src/main/java/mops/gruppen2/domain/EventDTO.java index 13bee88..c7ceda5 100644 --- a/src/main/java/mops/gruppen2/domain/EventDTO.java +++ b/src/main/java/mops/gruppen2/domain/EventDTO.java @@ -1,11 +1,14 @@ package mops.gruppen2.domain; +import lombok.Data; import lombok.Value; +import org.springframework.data.annotation.Id; import org.springframework.data.relational.core.mapping.Table; -@Value @Table("event") +@Data public class EventDTO { + @Id long event_id; long group_id; String user_id; diff --git a/src/main/java/mops/gruppen2/repository/EventRepository.java b/src/main/java/mops/gruppen2/repository/EventRepository.java index 0e04761..4352a97 100644 --- a/src/main/java/mops/gruppen2/repository/EventRepository.java +++ b/src/main/java/mops/gruppen2/repository/EventRepository.java @@ -1,7 +1,8 @@ package mops.gruppen2.repository; +import mops.gruppen2.domain.EventDTO; import mops.gruppen2.domain.event.Event; import org.springframework.data.repository.CrudRepository; -public interface EventRepository extends CrudRepository { +public interface EventRepository extends CrudRepository { } diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index 57e9f3f..c20af44 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -2,6 +2,7 @@ package mops.gruppen2.service; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import mops.gruppen2.domain.EventDTO; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.slf4j.Logger; @@ -27,4 +28,17 @@ public class SerializationService { log.info(json); return json; } + + public void saveEvent(Event event){ + try { + EventDTO eventDTO = new EventDTO(); + eventDTO.setGroup_id(event.getGroup_id()); + eventDTO.setUser_id(event.getUser_id()); + eventDTO.setEvent_payload(serializeEvent(event)); + eventStore.save(eventDTO); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + + } } From 2d8d91c206cc5424543e2e1290aab0fae4660774 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 9 Mar 2020 14:26:06 +0100 Subject: [PATCH 13/27] disable test method --- .../mops/gruppen2/controller/SwaggerAPIControllerExample.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java index 5953926..5caa747 100644 --- a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java +++ b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java @@ -53,7 +53,7 @@ public class SwaggerAPIControllerExample { return "Product saved successfully"; } - @GetMapping("/json") + /*@GetMapping("/json") //just for testing public void json() { AddUserEvent aEvent = new AddUserEvent( 1, @@ -68,5 +68,5 @@ public class SwaggerAPIControllerExample { } catch (JsonProcessingException e) { e.printStackTrace(); } - } + }*/ } From 160e03d9e98b59225352e1f354a0177209659160 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Mon, 9 Mar 2020 14:57:32 +0100 Subject: [PATCH 14/27] add test for SerializationService --- .../service/SerializationServiceTest.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/test/java/mops/gruppen2/service/SerializationServiceTest.java diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java new file mode 100644 index 0000000..af9fa3f --- /dev/null +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -0,0 +1,32 @@ +package mops.gruppen2.service; + +import mops.gruppen2.domain.event.Event; +import mops.gruppen2.repository.EventRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class SerializationServiceTest { + + EventRepository eventRepository; + + @BeforeEach + public void setUp(){ + } + + + @Disabled + @Test + void applyEvent() { + } + + @Test + void serializeEventTest(){ + Event event = new Event(1,1,"1"); + SerializationService serializationService = new SerializationService(eventRepository); + + } + +} \ No newline at end of file From 05d599ad0f672990392e2024cccb46f42d82d6e7 Mon Sep 17 00:00:00 2001 From: AndiBuls Date: Mon, 9 Mar 2020 15:06:14 +0100 Subject: [PATCH 15/27] add Mapping for search.html and create.html in Controller --- .../controller/Gruppen2Controller.java | 16 +++++++++++ src/main/resources/templates/create.html | 25 ++++++++++++++--- src/main/resources/templates/index.html | 11 ++++---- src/main/resources/templates/search.html | 27 +++---------------- 4 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index e5ac048..04b9a8d 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -31,4 +31,20 @@ public class Gruppen2Controller { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); return "index"; } + + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @GetMapping("/createGroup") + public String createGroup(KeycloakAuthenticationToken token, Model model) { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + return "create"; + } + + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @GetMapping("/findGroup") + public String findGroup(KeycloakAuthenticationToken token, Model model) { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + return "search"; + } + + } diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index cd15ffd..3da126e 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -13,19 +13,38 @@
+

Gruppenerstellung

+
+
+
+
+ + +
+
+ + +
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 490cec8..20ff1c4 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -13,13 +13,13 @@ @@ -28,10 +28,9 @@

Meine Gruppen

-
-

Titel der Gruppe

+
+

Titel der Gruppe

Beschreibung der Gruppe ...

-
diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html index 1725fd2..a19251f 100644 --- a/src/main/resources/templates/search.html +++ b/src/main/resources/templates/search.html @@ -13,38 +13,19 @@
-
-
-
-

Gruppenerstellung

-
-
- - -
-
- - -
-
- -
-
-
-
-
+
\ No newline at end of file From e0630478a09485c804abc0b2798c5ca617f07ae6 Mon Sep 17 00:00:00 2001 From: kasch309 Date: Mon, 9 Mar 2020 15:28:08 +0100 Subject: [PATCH 16/27] Add template for search.html --- src/main/resources/templates/search.html | 52 +++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html index a19251f..c722a7d 100644 --- a/src/main/resources/templates/search.html +++ b/src/main/resources/templates/search.html @@ -25,7 +25,57 @@
- +
+
+

Gruppensuche

+
+
+
+
+ + +
+
+ Öffentliche Gruppen + Private Gruppen +
+ Suchbegriff im Namen + Suchbegriff in der Beschreibung + Suchbegriff in der Veranstaltung +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GruppennameBeschreibungÖffentlich/PrivatMitgliederanzahl
LA1 KursgruppeGruppe für den Kurs LA1Öffentlich318
Lerngruppe LA1Lerngruppe zur Bearbeitung von ÜbungszettelnPrivat6
+
+
+
\ No newline at end of file From 4186e7c09cea826df699ef209d0518f09c382814 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 15:47:17 +0100 Subject: [PATCH 17/27] Change Lombok annotations to enable Jackson deserializing --- .../gruppen2/domain/event/AddUserEvent.java | 10 ++++--- .../domain/event/CreateGroupEvent.java | 10 ++++--- .../domain/event/DeleteUserEvent.java | 8 +++--- .../mops/gruppen2/domain/event/Event.java | 26 +++++++++++++++---- .../event/UpdateGroupDescriptionEvent.java | 10 ++++--- .../domain/event/UpdateGroupTitleEvent.java | 10 ++++--- .../domain/event/UpdateRoleEvent.java | 8 +++--- 7 files changed, 53 insertions(+), 29 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index fd66ee9..f4ab0cc 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -1,14 +1,16 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; import mops.gruppen2.domain.User; /** * Fügt einen einzelnen Nutzer einer Gruppe hinzu. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class AddUserEvent extends Event { String givenname; String familyname; diff --git a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java index 1f2a3e1..bef0e9d 100644 --- a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java @@ -1,10 +1,12 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class CreateGroupEvent extends Event { String groupTitle; String groupDescription; diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 366dae2..3d47903 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,13 +1,13 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.*; /** * Entfernt ein einzelnes Mitglied einer Gruppe. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class DeleteUserEvent extends Event { public DeleteUserEvent(long event_id, long group_id, String user_id) { diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 65f4584..fca7880 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -1,12 +1,28 @@ package mops.gruppen2.domain.event; +import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import lombok.Value; -import lombok.experimental.NonFinal; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; -@Value -@NonFinal -@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME) + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@JsonTypeInfo( + include = JsonTypeInfo.As.PROPERTY, + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = AddUserEvent.class, name = "AddUserEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "CreateGroupEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "DeleteUserEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateGroupDescriptionEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateGroupTitleEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateRoleEvent"), +}) public class Event { long event_id; long group_id; diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java index d4bc16c..f8139d3 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java @@ -1,13 +1,15 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; /** * Ändert nur die Gruppenbeschreibung. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateGroupDescriptionEvent extends Event { String newGroupDescription; diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java index 4f78f17..dc443e9 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java @@ -1,13 +1,15 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; /** * Ändert nur den Gruppentitel. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateGroupTitleEvent extends Event { String newGroupTitle; diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index ae8bd5e..76d18c5 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -1,14 +1,14 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.*; import mops.gruppen2.domain.Role; /** * Aktualisiert die Gruppenrolle eines Teilnehmers. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateRoleEvent extends Event { Role newRole; From 1b1de974c6b79c64f17e69785a53ccc93a7142eb Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 15:49:20 +0100 Subject: [PATCH 18/27] Add class to build random events for easier testing --- .../mops/gruppen2/builder/EventBuilder.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/test/java/mops/gruppen2/builder/EventBuilder.java diff --git a/src/test/java/mops/gruppen2/builder/EventBuilder.java b/src/test/java/mops/gruppen2/builder/EventBuilder.java new file mode 100644 index 0000000..a06fdf7 --- /dev/null +++ b/src/test/java/mops/gruppen2/builder/EventBuilder.java @@ -0,0 +1,92 @@ +package mops.gruppen2.builder; + +import com.github.javafaker.Faker; +import mops.gruppen2.domain.Role; +import mops.gruppen2.domain.event.*; + +import java.util.ArrayList; +import java.util.List; + +public class EventBuilder { + + public static CreateGroupEvent randomCreateGroupEvent() { + Faker faker = new Faker(); + + return new CreateGroupEvent( + faker.random().nextLong(), + faker.random().nextLong(), + faker.random().hex(), + faker.leagueOfLegends().champion(), + faker.leagueOfLegends().quote() + ); + } + + public static AddUserEvent randomAddUserEvent() { + Faker faker = new Faker(); + + String firstname = faker.name().firstName(); + String lastname = faker.name().lastName(); + + return new AddUserEvent( + faker.random().nextLong(), + faker.random().nextLong(), + faker.random().hex(), + firstname, + lastname, + firstname + "." + lastname + "@mail.de" + ); + } + + public static List randomAddUserEvents(int count) { + List eventList = new ArrayList<>(); + + for (int i = 0; i < count; i++) { + eventList.add(EventBuilder.randomAddUserEvent()); + } + + return eventList; + } + + public static DeleteUserEvent randomDeleteUserEvent(long group_id, String user_id) { + Faker faker = new Faker(); + + return new DeleteUserEvent( + faker.random().nextLong(), + group_id, + user_id + ); + } + + public static UpdateGroupDescriptionEvent randomUpdateGroupDescriptionEvent(long group_id) { + Faker faker = new Faker(); + + return new UpdateGroupDescriptionEvent( + faker.random().nextLong(), + group_id, + faker.random().hex(), + faker.leagueOfLegends().quote() + ); + } + + public static UpdateGroupTitleEvent randomUpdateGroupTitleEvent(long group_id) { + Faker faker = new Faker(); + + return new UpdateGroupTitleEvent( + faker.random().nextLong(), + group_id, + faker.random().hex(), + faker.leagueOfLegends().champion() + ); + } + + public static UpdateRoleEvent randomUpdateRoleEvent(long group_id, String user_id, Role role) { + Faker faker = new Faker(); + + return new UpdateRoleEvent( + faker.random().nextLong(), + group_id, + user_id, + role + ); + } +} From 23cff2c3d3c04591f8fddf6f89b305bcfbc7c395 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Mon, 9 Mar 2020 15:52:55 +0100 Subject: [PATCH 19/27] add test SerializationEvent test --- .../service/SerializationServiceTest.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index af9fa3f..21c4555 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -1,16 +1,20 @@ package mops.gruppen2.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; 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.*; class SerializationServiceTest { EventRepository eventRepository; + Event event; @BeforeEach public void setUp(){ @@ -23,10 +27,15 @@ class SerializationServiceTest { } @Test - void serializeEventTest(){ - Event event = new Event(1,1,"1"); + void serializeEventTest() { + event = new Event(1,1,"1"); SerializationService serializationService = new SerializationService(eventRepository); - + try { + assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"Event\":{\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}}"); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } } + } \ No newline at end of file From 0a9922b8fef4331e048c6a5e35094365600154ee Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 16:12:17 +0100 Subject: [PATCH 20/27] Merge branch 'event-db' of /home/christoph/Documents/repos/abschlussprojekt-it-bois with conflicts. --- .../controller/SwaggerAPIControllerExample.java | 2 +- .../mops/gruppen2/repository/EventRepository.java | 1 - .../gruppen2/service/SerializationService.java | 6 ++++++ .../service/SerializationServiceTest.java | 15 ++++++++++----- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java index 5caa747..140c5c9 100644 --- a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java +++ b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java @@ -53,7 +53,7 @@ public class SwaggerAPIControllerExample { return "Product saved successfully"; } - /*@GetMapping("/json") //just for testing + @GetMapping("/json") public void json() { AddUserEvent aEvent = new AddUserEvent( 1, diff --git a/src/main/java/mops/gruppen2/repository/EventRepository.java b/src/main/java/mops/gruppen2/repository/EventRepository.java index 4352a97..c4b1249 100644 --- a/src/main/java/mops/gruppen2/repository/EventRepository.java +++ b/src/main/java/mops/gruppen2/repository/EventRepository.java @@ -1,7 +1,6 @@ package mops.gruppen2.repository; import mops.gruppen2.domain.EventDTO; -import mops.gruppen2.domain.event.Event; import org.springframework.data.repository.CrudRepository; public interface EventRepository extends CrudRepository { diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index c20af44..dd79d5c 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -41,4 +41,10 @@ public class SerializationService { } } + + public Event deserializeEvent(String json) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + Event event = mapper.readValue(json, Event.class); + return event; + } } diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index 21c4555..83ca5eb 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -1,7 +1,6 @@ package mops.gruppen2.service; import com.fasterxml.jackson.core.JsonProcessingException; -import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.junit.jupiter.api.BeforeEach; @@ -14,10 +13,9 @@ import static org.junit.jupiter.api.Assertions.*; class SerializationServiceTest { EventRepository eventRepository; - Event event; @BeforeEach - public void setUp(){ + public void setUp() { } @@ -28,7 +26,7 @@ class SerializationServiceTest { @Test void serializeEventTest() { - event = new Event(1,1,"1"); + Event event = new Event(1,1,"1"); SerializationService serializationService = new SerializationService(eventRepository); try { assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"Event\":{\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}}"); @@ -37,5 +35,12 @@ class SerializationServiceTest { } } + @Test + void deserializeAddUserEvent() { + SerializationService serializationService = new SerializationService(); -} \ No newline at end of file + Event event = EventBuilder.randomAddUserEvent(); + + } + +} From d4e4834fe5278daa541e18c21f6be84dfb5ceb00 Mon Sep 17 00:00:00 2001 From: AndiBuls Date: Mon, 9 Mar 2020 16:24:06 +0100 Subject: [PATCH 21/27] add submit button --- src/main/resources/templates/create.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index 3da126e..7b59182 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -27,7 +27,7 @@

Gruppenerstellung

-
+
@@ -40,7 +40,7 @@
- +
From b4719af264c660fe6bf4fa63ef01c749252a4aee Mon Sep 17 00:00:00 2001 From: tomvahl Date: Mon, 9 Mar 2020 16:45:57 +0100 Subject: [PATCH 22/27] change SerializationServiceTest --- .../controller/SwaggerAPIControllerExample.java | 2 +- .../mops/gruppen2/domain/event/DeleteUserEvent.java | 2 -- .../gruppen2/service/SerializationServiceTest.java | 10 +++++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java index 140c5c9..f4f52a4 100644 --- a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java +++ b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java @@ -52,7 +52,7 @@ public class SwaggerAPIControllerExample { return "Product saved successfully"; } - +/* @GetMapping("/json") public void json() { AddUserEvent aEvent = new AddUserEvent( diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 3d47903..79b112b 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -6,8 +6,6 @@ import lombok.*; * Entfernt ein einzelnes Mitglied einer Gruppe. */ @Getter -@AllArgsConstructor -@NoArgsConstructor public class DeleteUserEvent extends Event { public DeleteUserEvent(long event_id, long group_id, String user_id) { diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index 83ca5eb..ac355be 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -1,6 +1,8 @@ package mops.gruppen2.service; import com.fasterxml.jackson.core.JsonProcessingException; +import mops.gruppen2.builder.EventBuilder; +import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.junit.jupiter.api.BeforeEach; @@ -9,13 +11,15 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.mock; class SerializationServiceTest { EventRepository eventRepository; + Event event; @BeforeEach - public void setUp() { + public void setUp(){ } @@ -37,10 +41,10 @@ class SerializationServiceTest { @Test void deserializeAddUserEvent() { - SerializationService serializationService = new SerializationService(); + SerializationService serializationService = new SerializationService(mock(EventRepository.class)); Event event = EventBuilder.randomAddUserEvent(); } -} +} \ No newline at end of file From a40ef0396d348b8ac56c6005146360db15cd8d10 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 16:47:46 +0100 Subject: [PATCH 23/27] Merge branch 'event-db' of /home/christoph/Documents/repos/abschlussprojekt-it-bois with conflicts. --- .../controller/SwaggerAPIControllerExample.java | 4 ++-- .../gruppen2/service/SerializationService.java | 7 ++----- .../service/SerializationServiceTest.java | 15 +++++++-------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java index f4f52a4..7f3888b 100644 --- a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java +++ b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java @@ -52,8 +52,8 @@ public class SwaggerAPIControllerExample { return "Product saved successfully"; } -/* - @GetMapping("/json") + + /*@GetMapping("/json") public void json() { AddUserEvent aEvent = new AddUserEvent( 1, diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index dd79d5c..790070f 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -24,9 +24,7 @@ public class SerializationService { public String serializeEvent(Event event) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); - String json = mapper.writeValueAsString(event); - log.info(json); - return json; + return mapper.writeValueAsString(event); } public void saveEvent(Event event){ @@ -44,7 +42,6 @@ public class SerializationService { public Event deserializeEvent(String json) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); - Event event = mapper.readValue(json, Event.class); - return event; + return mapper.readValue(json, Event.class); } } diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index ac355be..2501d0b 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -1,8 +1,6 @@ package mops.gruppen2.service; import com.fasterxml.jackson.core.JsonProcessingException; -import mops.gruppen2.builder.EventBuilder; -import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.junit.jupiter.api.BeforeEach; @@ -11,15 +9,13 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.mock; class SerializationServiceTest { EventRepository eventRepository; - Event event; @BeforeEach - public void setUp(){ + public void setUp() { } @@ -40,11 +36,14 @@ class SerializationServiceTest { } @Test - void deserializeAddUserEvent() { + void deserializeAddUserEvent() throws JsonProcessingException { SerializationService serializationService = new SerializationService(mock(EventRepository.class)); - Event event = EventBuilder.randomAddUserEvent(); + String json = "{\"type\":\"Event\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}"; + Event event = serializationService.deserializeEvent(json); + + assertThat(event).isInstanceOf(Event.class); } -} \ No newline at end of file +} From 1eeda87c7f6e7b5b2134ccd3068ec5bf41fe5fb8 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 16:48:54 +0100 Subject: [PATCH 24/27] Change Lombok annotations to enable Jackson deserializing --- .../java/mops/gruppen2/service/SerializationServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index 2501d0b..a246058 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -8,7 +8,7 @@ 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.*; +import static org.mockito.Mockito.mock; class SerializationServiceTest { From 61e2d0edba40325c1cf13987160415fc8b925f53 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 9 Mar 2020 23:21:29 +0100 Subject: [PATCH 25/27] added Creating Groups to frontend and saving them in Database. Also prepared some Methods for Snapshot db --- .../controller/Gruppen2Controller.java | 25 +++++++-- .../java/mops/gruppen2/domain/EventDTO.java | 5 +- .../gruppen2/domain/event/AddUserEvent.java | 4 +- .../domain/event/CreateGroupEvent.java | 7 ++- .../domain/event/DeleteUserEvent.java | 4 +- .../mops/gruppen2/domain/event/Event.java | 9 +++- .../event/UpdateGroupDescriptionEvent.java | 2 +- .../domain/event/UpdateGroupTitleEvent.java | 2 +- .../domain/event/UpdateRoleEvent.java | 2 +- .../mops/gruppen2/service/EventService.java | 51 +++++++++++++++++++ .../mops/gruppen2/service/GroupService.java | 11 +++- .../service/SerializationService.java | 11 ---- src/main/resources/templates/create.html | 8 +-- .../java/mops/gruppen2/domain/GroupTest.java | 8 +-- .../gruppen2/service/EventServiceTest.java | 7 +++ .../service/SerializationServiceTest.java | 2 +- 16 files changed, 120 insertions(+), 38 deletions(-) create mode 100644 src/main/java/mops/gruppen2/service/EventService.java create mode 100644 src/test/java/mops/gruppen2/service/EventServiceTest.java diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 04b9a8d..91e9e30 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -1,22 +1,29 @@ package mops.gruppen2.controller; +import mops.gruppen2.domain.event.CreateGroupEvent; +import mops.gruppen2.service.EventService; +import mops.gruppen2.service.GroupService; import mops.gruppen2.service.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.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; import javax.annotation.security.RolesAllowed; +import javax.swing.*; @Controller @RequestMapping("/gruppen2") public class Gruppen2Controller { private final KeyCloakService keyCloakService; + private final EventService eventService; + private final GroupService groupService; - public Gruppen2Controller(KeyCloakService keyCloakService) { + public Gruppen2Controller(KeyCloakService keyCloakService, EventService eventService, GroupService groupService) { this.keyCloakService = keyCloakService; + this.eventService = eventService; + this.groupService = groupService; } /**Zeigt die index.html an. @@ -46,5 +53,17 @@ public class Gruppen2Controller { return "search"; } + @PostMapping("/createGroup") + public String pCreateGroup(KeycloakAuthenticationToken token, + @RequestParam(value = "title") String title, + @RequestParam(value = "beschreibung") String beschreibung) { + + //Hier muss alles in eine separate Klasse + CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), "faker", title, beschreibung); + eventService.saveEvent(createGroupEvent); + groupService.buildGroupFromEvent(createGroupEvent); + + return "redirect:/"; + } } diff --git a/src/main/java/mops/gruppen2/domain/EventDTO.java b/src/main/java/mops/gruppen2/domain/EventDTO.java index c7ceda5..df78071 100644 --- a/src/main/java/mops/gruppen2/domain/EventDTO.java +++ b/src/main/java/mops/gruppen2/domain/EventDTO.java @@ -1,7 +1,6 @@ package mops.gruppen2.domain; import lombok.Data; -import lombok.Value; import org.springframework.data.annotation.Id; import org.springframework.data.relational.core.mapping.Table; @@ -9,8 +8,8 @@ import org.springframework.data.relational.core.mapping.Table; @Data public class EventDTO { @Id - long event_id; - long group_id; + Long event_id; + Long group_id; String user_id; String event_payload; } diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index f4ab0cc..1fd066d 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -16,14 +16,14 @@ 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) { + 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 event_id, long group_id, User user) { + 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(); diff --git a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java index bef0e9d..eaef7ff 100644 --- a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java @@ -11,9 +11,14 @@ public class CreateGroupEvent extends Event { String groupTitle; String groupDescription; - public CreateGroupEvent(long event_id, long group_id, String user_id, String groupTitle, String groupDescription) { + public CreateGroupEvent(long event_id, Long group_id, String user_id, String groupTitle, String groupDescription) { super(event_id, group_id, user_id); this.groupTitle = groupTitle; this.groupDescription = groupDescription; } + public CreateGroupEvent(Long group_id, String user_id, String groupTitle, String groupDescription) { + super(group_id, user_id); + this.groupTitle = groupTitle; + this.groupDescription = groupDescription; + } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 3d47903..080004a 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -6,11 +6,9 @@ import lombok.*; * Entfernt ein einzelnes Mitglied einer Gruppe. */ @Getter -@AllArgsConstructor -@NoArgsConstructor public class DeleteUserEvent extends Event { - public DeleteUserEvent(long event_id, long group_id, String user_id) { + public DeleteUserEvent(Long event_id, Long group_id, String user_id) { super(event_id, group_id, user_id); } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index fca7880..3046a3e 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -24,7 +24,12 @@ import lombok.NoArgsConstructor; @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateRoleEvent"), }) public class Event { - long event_id; - long group_id; + Long event_id; + Long group_id; String user_id; + + public Event(Long group_id,String user_id){ + this.group_id = group_id; + this.user_id = user_id; + } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java index f8139d3..6387a7d 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor; public class UpdateGroupDescriptionEvent extends Event { String newGroupDescription; - public UpdateGroupDescriptionEvent(long event_id, long group_id, String user_id, 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; } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java index dc443e9..d57b609 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor; public class UpdateGroupTitleEvent extends Event { String newGroupTitle; - public UpdateGroupTitleEvent(long event_id, long group_id, String user_id, 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; } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index 76d18c5..a4301de 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -13,7 +13,7 @@ public class UpdateRoleEvent extends Event { Role newRole; - public UpdateRoleEvent(long event_id, long group_id, String user_id, 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; diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java new file mode 100644 index 0000000..0c1e879 --- /dev/null +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -0,0 +1,51 @@ +package mops.gruppen2.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import mops.gruppen2.domain.EventDTO; +import mops.gruppen2.domain.event.Event; +import mops.gruppen2.repository.EventRepository; +import org.springframework.stereotype.Service; + +@Service +public class EventService { + private final SerializationService serializationService; + private final EventRepository eventStore; + + public EventService(SerializationService serializationService, EventRepository eventStore) { + this.serializationService = serializationService; + this.eventStore = eventStore; + } + + + public void saveEvent(Event event){ + EventDTO eventDTO = getDTO(event); + eventStore.save(eventDTO); + + } + + public EventDTO getDTO(Event event){ + EventDTO eventDTO = new EventDTO(); + eventDTO.setGroup_id(event.getGroup_id()); + eventDTO.setUser_id(event.getUser_id()); + try { + eventDTO.setEvent_payload(serializationService.serializeEvent(event)); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return eventDTO; + } + + public Long checkGroup() { + Long tmpId = 1L; + Iterable eventDTOS = eventStore.findAll(); + for (EventDTO event : eventDTOS) { + if (event.getGroup_id() == null) { + return tmpId; + } + if (tmpId <= event.getGroup_id()) { + tmpId++; + } + } + return tmpId; + } +} diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index c018e76..93679b0 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -4,6 +4,7 @@ import mops.gruppen2.domain.Group; import mops.gruppen2.domain.event.Event; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service @@ -15,9 +16,17 @@ public class GroupService { * @param eventList Die Events für diese Gruppe * @return Gruppe auf aktuellem Stand */ - Group buildGroupFromEvents(List eventList) { + public Group buildGroupFromEvents(List eventList) { Group newGroup = new Group(); newGroup.apply(eventList); return newGroup; } + + public Group buildGroupFromEvent(Event event){ + Group newGroup = new Group(); + List eventList = new ArrayList<>(); + eventList.add(event); + newGroup.apply(eventList); + return newGroup; + } } diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index c20af44..aaf91c4 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -29,16 +29,5 @@ public class SerializationService { return json; } - public void saveEvent(Event event){ - try { - EventDTO eventDTO = new EventDTO(); - eventDTO.setGroup_id(event.getGroup_id()); - eventDTO.setUser_id(event.getUser_id()); - eventDTO.setEvent_payload(serializeEvent(event)); - eventStore.save(eventDTO); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - } } diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index 3da126e..31a66da 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -27,20 +27,20 @@

Gruppenerstellung

-
+
- +
-
- +
diff --git a/src/test/java/mops/gruppen2/domain/GroupTest.java b/src/test/java/mops/gruppen2/domain/GroupTest.java index 192e7b6..c00a237 100644 --- a/src/test/java/mops/gruppen2/domain/GroupTest.java +++ b/src/test/java/mops/gruppen2/domain/GroupTest.java @@ -23,25 +23,25 @@ class GroupTest { @Test void createSingleGroup() { - CreateGroupEvent createGroupEvent = new CreateGroupEvent(1,2, "asd", "hello", "foo"); + CreateGroupEvent createGroupEvent = new CreateGroupEvent(1,2L, "asd", "hello", "foo"); Group group = new Group(); group.apply(createGroupEvent); assertThat(group.getDescription()).isEqualTo("foo"); assertThat(group.getTitle()).isEqualTo("hello"); - assertThat(group.getId()).isEqualTo(2); + assertThat(group.getId()).isEqualTo(2L); } // Verwendet CreateGroupEvent @Test void addSingleUser() { - CreateGroupEvent createGroupEvent = new CreateGroupEvent(1,1,"prof1", "hi", "foo"); + CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo"); Group group = new Group(); group.apply(createGroupEvent); User user = new User("prof", "jens", "bendi", "hi@gmail.com"); - AddUserEvent addUserEvent = new AddUserEvent(1,1, user); + AddUserEvent addUserEvent = new AddUserEvent(1L,1L, user); group.apply(addUserEvent); assertThat(group.getMembers().get(0)).isEqualTo(user); diff --git a/src/test/java/mops/gruppen2/service/EventServiceTest.java b/src/test/java/mops/gruppen2/service/EventServiceTest.java new file mode 100644 index 0000000..7506c3b --- /dev/null +++ b/src/test/java/mops/gruppen2/service/EventServiceTest.java @@ -0,0 +1,7 @@ +package mops.gruppen2.service; + +import static org.junit.jupiter.api.Assertions.*; + +class EventServiceTest { + +} \ 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 21c4555..df6bd85 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -28,7 +28,7 @@ class SerializationServiceTest { @Test void serializeEventTest() { - event = new Event(1,1,"1"); + event = new Event(1L,1L,"1"); SerializationService serializationService = new SerializationService(eventRepository); try { assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"Event\":{\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}}"); From 87c345ed54693e5bb7e09ef729e41978ee6e4147 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Mon, 9 Mar 2020 23:26:21 +0100 Subject: [PATCH 26/27] fix JSON Subtypes in Event --- src/main/java/mops/gruppen2/domain/event/Event.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 3046a3e..be5b292 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -17,11 +17,11 @@ import lombok.NoArgsConstructor; ) @JsonSubTypes({ @JsonSubTypes.Type(value = AddUserEvent.class, name = "AddUserEvent"), - @JsonSubTypes.Type(value = AddUserEvent.class, name = "CreateGroupEvent"), - @JsonSubTypes.Type(value = AddUserEvent.class, name = "DeleteUserEvent"), - @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateGroupDescriptionEvent"), - @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateGroupTitleEvent"), - @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateRoleEvent"), + @JsonSubTypes.Type(value = CreateGroupEvent.class, name = "CreateGroupEvent"), + @JsonSubTypes.Type(value = DeleteUserEvent.class, name = "DeleteUserEvent"), + @JsonSubTypes.Type(value = UpdateGroupDescriptionEvent.class, name = "UpdateGroupDescriptionEvent"), + @JsonSubTypes.Type(value = UpdateGroupTitleEvent.class, name = "UpdateGroupTitleEvent"), + @JsonSubTypes.Type(value = UpdateRoleEvent.class, name = "UpdateRoleEvent"), }) public class Event { Long event_id; From 5f8d9a860301934f26af9bcc55a0aeb5d8a3b53b Mon Sep 17 00:00:00 2001 From: tomvahl Date: Tue, 10 Mar 2020 13:02:06 +0100 Subject: [PATCH 27/27] change SerializationServiceTest --- .../SwaggerAPIControllerExample.java | 16 -------------- .../service/SerializationService.java | 2 ++ .../service/SerializationServiceTest.java | 22 ++++++++++++------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java index 7f3888b..a65940e 100644 --- a/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java +++ b/src/main/java/mops/gruppen2/controller/SwaggerAPIControllerExample.java @@ -53,20 +53,4 @@ public class SwaggerAPIControllerExample { return "Product saved successfully"; } - /*@GetMapping("/json") - public void json() { - AddUserEvent aEvent = new AddUserEvent( - 1, - 1, - "Eins", - faker.leagueOfLegends().location(), - faker.name().lastName(), - "123@email.de"); - try { - serializationService.serializeEvent(aEvent); - serializationService.saveEvent(aEvent); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - }*/ } diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index 790070f..cfc8a0e 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -27,6 +27,8 @@ public class SerializationService { return mapper.writeValueAsString(event); } + + // create DTO methode schreiben also kurz auslagern public void saveEvent(Event event){ try { EventDTO eventDTO = new EventDTO(); diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index a246058..75dcdd8 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -1,6 +1,8 @@ package mops.gruppen2.service; import com.fasterxml.jackson.core.JsonProcessingException; +import mops.gruppen2.builder.EventBuilder; +import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.junit.jupiter.api.BeforeEach; @@ -12,24 +14,18 @@ import static org.mockito.Mockito.mock; class SerializationServiceTest { - EventRepository eventRepository; @BeforeEach public void setUp() { } - @Disabled - @Test - void applyEvent() { - } - @Test void serializeEventTest() { Event event = new Event(1,1,"1"); - SerializationService serializationService = new SerializationService(eventRepository); + SerializationService serializationService = new SerializationService(mock(EventRepository.class)); try { - assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"Event\":{\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}}"); + assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"type\":\"Event\",\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}"); } catch (JsonProcessingException e) { e.printStackTrace(); } @@ -46,4 +42,14 @@ class SerializationServiceTest { assertThat(event).isInstanceOf(Event.class); } + @Test + void serializeEventTestAddUserEvent(){ + AddUserEvent event = new AddUserEvent(1,1,"user_id","peter","mueller","a@a"); + SerializationService serializationService = new SerializationService(mock(EventRepository.class)); + try { + assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"type\":\"AddUserEvent\",\"event_id\":1,\"group_id\":1,\"user_id\":\"user_id\",\"givenname\":\"peter\",\"familyname\":\"mueller\",\"email\":\"a@a\"}"); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } }