1

Merge remote-tracking branch 'origin/Services' into Services

# Conflicts:
#	src/main/java/mops/gruppen2/entities/Gruppe.java
#	src/main/java/mops/gruppen2/services/GruppenService.java
#	src/test/java/mops/gruppen2/entities/GruppeTest.java
This commit is contained in:
LukasEttel
2020-03-06 16:08:27 +01:00
10 changed files with 46 additions and 34 deletions

View File

@ -6,6 +6,11 @@ import java.lang.reflect.Method;
public abstract class Aggregat { public abstract class Aggregat {
/**
* Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf.
*
* @param event
*/
public void applyEvent(Event event) { public void applyEvent(Event event) {
try { try {
Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass()); Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass());

View File

@ -2,6 +2,7 @@ package mops.gruppen2.entities;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import mops.gruppen2.events.*;
import mops.gruppen2.events.AddUser; import mops.gruppen2.events.AddUser;
import mops.gruppen2.events.CreateGroupEvent; import mops.gruppen2.events.CreateGroupEvent;
import mops.gruppen2.events.UpdateGroupDescriptionEvent; import mops.gruppen2.events.UpdateGroupDescriptionEvent;
@ -9,32 +10,43 @@ import mops.gruppen2.events.UpdateGroupTitleEvent;
import mops.gruppen2.events.DeleteUserEvent; import mops.gruppen2.events.DeleteUserEvent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@EqualsAndHashCode(callSuper = true)
@Data @Data
@EqualsAndHashCode(callSuper=false)
public class Gruppe extends Aggregat { public class Gruppe extends Aggregat {
long id; long id;
String titel; String titel;
String beschreibung; String beschreibung;
List<Teilnehmer> teilnehmersList; List<Teilnehmer> teilnehmersList;
Map<Teilnehmer, Rolle> rollenList;
public Gruppe(){
this.teilnehmersList = new ArrayList<>();
}
public void applyEvent(CreateGroupEvent event){ public void applyEvent(CreateGroupEvent event){
this.id = event.getGruppe_id(); this.id = event.getId();
this.titel = event.getTitel(); this.titel = event.getTitel();
this.beschreibung = event.getBeschreibung(); 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){ public void applyEvent(AddUser event){
Teilnehmer teilnehmer = new Teilnehmer(); Teilnehmer teilnehmer = new Teilnehmer();
teilnehmer.setId(event.getId());
teilnehmer.setId(event.getUser_id());
teilnehmer.setVorname(event.getVorname()); teilnehmer.setVorname(event.getVorname());
teilnehmer.setNachname(event.getNachname()); teilnehmer.setNachname(event.getNachname());
teilnehmer.setEmail(event.getEmail()); teilnehmer.setEmail(event.getEmail());
this.teilnehmersList.add(teilnehmer); this.teilnehmersList.add(teilnehmer);
} }
@ -44,7 +56,6 @@ public class Gruppe extends Aggregat {
public void applyEvent(UpdateGroupDescriptionEvent event) { public void applyEvent(UpdateGroupDescriptionEvent event) {
this.beschreibung = event.getBeschreibung(); this.beschreibung = event.getBeschreibung();
this.teilnehmersList = new ArrayList<>();
} }
public void applyEvent(DeleteUserEvent event) { public void applyEvent(DeleteUserEvent event) {

View File

@ -1,14 +1,12 @@
package mops.gruppen2.entities; package mops.gruppen2.entities;
import lombok.Data; import lombok.Data;
import org.springframework.data.annotation.Id;
import java.util.List; import java.util.List;
@Data @Data
public class Teilnehmer { public class Teilnehmer {
@Id String id;
Long id;
String vorname; String vorname;
String nachname; String nachname;
String email; String email;

View File

@ -2,13 +2,11 @@ package mops.gruppen2.events;
import lombok.Getter; import lombok.Getter;
import java.util.List;
@Getter @Getter
public class AddUser extends Event{ public class AddUser extends Event{
String vorname, nachname, email; 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); super(id, gruppe_id, user_id);
this.vorname = vorname; this.vorname = vorname;
this.nachname = nachname; this.nachname = nachname;

View File

@ -7,7 +7,7 @@ public class CreateGroupEvent extends Event {
String titel; String titel;
String beschreibung; 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); super(id, gruppe_id, user_id);
this.titel = titel; this.titel = titel;
this.beschreibung = beschreibung; this.beschreibung = beschreibung;

View File

@ -8,5 +8,5 @@ import lombok.Getter;
public class Event { public class Event {
long id; long id;
long gruppe_id; long gruppe_id;
long user_id; String user_id;
} }

View File

@ -6,7 +6,7 @@ import lombok.Getter;
public class UpdateGroupDescriptionEvent extends Event { public class UpdateGroupDescriptionEvent extends Event {
String beschreibung; 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); super(id, gruppe_id, user_id);
this.beschreibung = beschreibung; this.beschreibung = beschreibung;
} }

View File

@ -6,7 +6,7 @@ import lombok.Getter;
public class UpdateGroupTitleEvent extends Event { public class UpdateGroupTitleEvent extends Event {
String titel; 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); super(id, gruppe_id, user_id);
this.titel = titel; this.titel = titel;
} }

View File

@ -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;
}
}

View File

@ -1,29 +1,13 @@
package mops.gruppen2.services; package mops.gruppen2.services;
import mops.gruppen2.events.AddUser;
import mops.gruppen2.events.CreateGroupEvent;
import mops.gruppen2.events.Event; import mops.gruppen2.events.Event;
import mops.gruppen2.entities.Gruppe; import mops.gruppen2.entities.Gruppe;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
public class GruppenService { 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<Event> eventList = new ArrayList<>();
eventList.add(createGroupEvent);
eventList.add(addUser);
eventList.add(deleteUserEvent);
Gruppe newGroup = buildGroup(eventList);
}
Gruppe buildGroup(List<Event> eventList){ Gruppe buildGroup(List<Event> eventList){
Gruppe newGroup = new Gruppe(); Gruppe newGroup = new Gruppe();
eventList.forEach(newGroup::applyEvent); eventList.forEach(newGroup::applyEvent);