1

slight changes to package structure + naming

This commit is contained in:
Christoph
2020-03-06 20:10:23 +01:00
parent 64f54ada27
commit 0e1e79d51a
28 changed files with 229 additions and 231 deletions

View File

@ -0,0 +1,4 @@
package mops.gruppen2.domain;
public class Admin extends Role {
}

View File

@ -0,0 +1,23 @@
package mops.gruppen2.domain;
import mops.gruppen2.domain.event.Event;
import java.lang.reflect.Method;
public abstract class Aggregate {
/**
* 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());
method.setAccessible(true);
method.invoke(this, event);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,69 @@
package mops.gruppen2.domain;
import lombok.Data;
import lombok.EqualsAndHashCode;
import mops.gruppen2.domain.event.*;
import mops.gruppen2.domain.event.AddUserEvent;
import mops.gruppen2.domain.event.CreateGroupEvent;
import mops.gruppen2.domain.event.UpdateGroupDescriptionEvent;
import mops.gruppen2.domain.event.UpdateGroupTitleEvent;
import mops.gruppen2.domain.event.DeleteUserEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@EqualsAndHashCode(callSuper=false)
@Data
public class Group extends Aggregate {
long id;
String titel;
String beschreibung;
List<User> teilnehmersList;
Map<User, Role> rollenList;
public void applyEvent(CreateGroupEvent event){
this.id = event.getGruppe_id();
this.titel = event.getTitel();
this.beschreibung = event.getBeschreibung();
this.teilnehmersList = new ArrayList<>();
this.rollenList = new HashMap<>();
}
public void applyEvent(UpdateRoleEvent event) {
teilnehmersList.stream()
.filter(user -> user.getId().equals(event.getUser_id()))
.findFirst()
.ifPresentOrElse(user -> rollenList.put(user, event.getRole()),
() -> System.out.println("UserNotFoundException"));
}
public void applyEvent(AddUserEvent event){
User user = new User();
user.setId(event.getUser_id());
user.setVorname(event.getVorname());
user.setNachname(event.getNachname());
user.setEmail(event.getEmail());
this.teilnehmersList.add(user);
}
public void applyEvent(UpdateGroupTitleEvent event) {
this.titel = event.getTitel();
}
public void applyEvent(UpdateGroupDescriptionEvent event) {
this.beschreibung = event.getBeschreibung();
}
public void applyEvent(DeleteUserEvent event) {
for (User user : teilnehmersList) {
if (user.getId().equals(event.getUser_id())) {
this.teilnehmersList.remove(user);
break;
}
}
}
}

View File

@ -0,0 +1,4 @@
package mops.gruppen2.domain;
public class Org extends Role {
}

View File

@ -0,0 +1,5 @@
package mops.gruppen2.domain;
public class Role {
}

View File

@ -0,0 +1,14 @@
package mops.gruppen2.domain;
import lombok.Data;
import java.util.List;
@Data
public class User {
String id;
String vorname;
String nachname;
String email;
List<Group> gruppen;
}

View File

@ -0,0 +1,15 @@
package mops.gruppen2.domain.event;
import lombok.Getter;
@Getter
public class AddUserEvent extends Event{
String vorname, nachname, email;
public AddUserEvent(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;
this.email = email;
}
}

View File

@ -0,0 +1,15 @@
package mops.gruppen2.domain.event;
import lombok.Getter;
@Getter
public class CreateGroupEvent extends Event {
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;
}
}

View File

@ -0,0 +1,11 @@
package mops.gruppen2.domain.event;
import lombok.Getter;
@Getter
public class DeleteUserEvent extends Event{
public DeleteUserEvent(long id, long gruppe_id, String user_id) {
super(id, gruppe_id, user_id);
}
}

View File

@ -0,0 +1,12 @@
package mops.gruppen2.domain.event;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class Event {
long id;
long gruppe_id;
String user_id;
}

View File

@ -0,0 +1,13 @@
package mops.gruppen2.domain.event;
import lombok.Getter;
@Getter
public class UpdateGroupDescriptionEvent extends Event {
String beschreibung;
public UpdateGroupDescriptionEvent(long id, long gruppe_id, String user_id, String beschreibung) {
super(id, gruppe_id, user_id);
this.beschreibung = beschreibung;
}
}

View File

@ -0,0 +1,13 @@
package mops.gruppen2.domain.event;
import lombok.Getter;
@Getter
public class UpdateGroupTitleEvent extends Event {
String titel;
public UpdateGroupTitleEvent(long id, long gruppe_id, String user_id, String titel) {
super(id, gruppe_id, user_id);
this.titel = titel;
}
}

View File

@ -0,0 +1,16 @@
package mops.gruppen2.domain.event;
import lombok.Getter;
import mops.gruppen2.domain.Role;
@Getter
public class UpdateRoleEvent extends Event {
private final Role role;
public UpdateRoleEvent(long id, long gruppe_id, String user_id, Role newRole) {
super(id, gruppe_id, user_id);
this.role = newRole;
}
}