slight changes to package structure + naming
This commit is contained in:
@ -1,13 +1,11 @@
|
||||
package mops.gruppen2.controllers;
|
||||
package mops.gruppen2.controller;
|
||||
|
||||
import mops.gruppen2.services.KeyCloakService;
|
||||
import mops.gruppen2.service.KeyCloakService;
|
||||
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;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.context.annotation.SessionScope;
|
||||
|
||||
import javax.annotation.security.RolesAllowed;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.controllers;
|
||||
package mops.gruppen2.controller;
|
||||
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
4
src/main/java/mops/gruppen2/domain/Admin.java
Normal file
4
src/main/java/mops/gruppen2/domain/Admin.java
Normal file
@ -0,0 +1,4 @@
|
||||
package mops.gruppen2.domain;
|
||||
|
||||
public class Admin extends Role {
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
package mops.gruppen2.entities;
|
||||
package mops.gruppen2.domain;
|
||||
|
||||
import mops.gruppen2.events.Event;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public abstract class Aggregat {
|
||||
public abstract class Aggregate {
|
||||
|
||||
/**
|
||||
* Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf.
|
||||
69
src/main/java/mops/gruppen2/domain/Group.java
Normal file
69
src/main/java/mops/gruppen2/domain/Group.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4
src/main/java/mops/gruppen2/domain/Org.java
Normal file
4
src/main/java/mops/gruppen2/domain/Org.java
Normal file
@ -0,0 +1,4 @@
|
||||
package mops.gruppen2.domain;
|
||||
|
||||
public class Org extends Role {
|
||||
}
|
||||
5
src/main/java/mops/gruppen2/domain/Role.java
Normal file
5
src/main/java/mops/gruppen2/domain/Role.java
Normal file
@ -0,0 +1,5 @@
|
||||
package mops.gruppen2.domain;
|
||||
|
||||
public class Role {
|
||||
|
||||
}
|
||||
@ -1,14 +1,14 @@
|
||||
package mops.gruppen2.entities;
|
||||
package mops.gruppen2.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class Teilnehmer {
|
||||
public class User {
|
||||
String id;
|
||||
String vorname;
|
||||
String nachname;
|
||||
String email;
|
||||
List<Gruppe> Gruppen;
|
||||
List<Group> gruppen;
|
||||
}
|
||||
15
src/main/java/mops/gruppen2/domain/event/AddUserEvent.java
Normal file
15
src/main/java/mops/gruppen2/domain/event/AddUserEvent.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.events;
|
||||
package mops.gruppen2.domain.event;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.events;
|
||||
package mops.gruppen2.domain.event;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.events;
|
||||
package mops.gruppen2.domain.event;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.events;
|
||||
package mops.gruppen2.domain.event;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.events;
|
||||
package mops.gruppen2.domain.event;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
package mops.gruppen2.events;
|
||||
package mops.gruppen2.domain.event;
|
||||
|
||||
import lombok.Getter;
|
||||
import mops.gruppen2.entities.Rolle;
|
||||
import mops.gruppen2.domain.Role;
|
||||
|
||||
@Getter
|
||||
public class UpdateRoleEvent extends Event {
|
||||
|
||||
private final Rolle role;
|
||||
private final Role role;
|
||||
|
||||
public UpdateRoleEvent(long id, long gruppe_id, String user_id, Rolle newRole) {
|
||||
public UpdateRoleEvent(long id, long gruppe_id, String user_id, Role newRole) {
|
||||
super(id, gruppe_id, user_id);
|
||||
|
||||
this.role = newRole;
|
||||
@ -1,4 +0,0 @@
|
||||
package mops.gruppen2.entities;
|
||||
|
||||
public class Admin extends Rolle {
|
||||
}
|
||||
@ -1,69 +0,0 @@
|
||||
package mops.gruppen2.entities;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import mops.gruppen2.events.*;
|
||||
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.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
public class Gruppe extends Aggregat {
|
||||
long id;
|
||||
String titel;
|
||||
String beschreibung;
|
||||
List<Teilnehmer> teilnehmersList;
|
||||
Map<Teilnehmer, Rolle> 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(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.getUser_id());
|
||||
teilnehmer.setVorname(event.getVorname());
|
||||
teilnehmer.setNachname(event.getNachname());
|
||||
teilnehmer.setEmail(event.getEmail());
|
||||
|
||||
this.teilnehmersList.add(teilnehmer);
|
||||
}
|
||||
|
||||
public void applyEvent(UpdateGroupTitleEvent event) {
|
||||
this.titel = event.getTitel();
|
||||
}
|
||||
|
||||
public void applyEvent(UpdateGroupDescriptionEvent event) {
|
||||
this.beschreibung = event.getBeschreibung();
|
||||
}
|
||||
|
||||
public void applyEvent(DeleteUserEvent event) {
|
||||
for (Teilnehmer teilnehmer: teilnehmersList) {
|
||||
if (teilnehmer.getId().equals(event.getUser_id())) {
|
||||
this.teilnehmersList.remove(teilnehmer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
package mops.gruppen2.entities;
|
||||
|
||||
public class Orga extends Rolle {
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
package mops.gruppen2.entities;
|
||||
|
||||
public class Rolle {
|
||||
|
||||
}
|
||||
@ -1,15 +0,0 @@
|
||||
package mops.gruppen2.events;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class AddUser extends Event{
|
||||
String vorname, nachname, 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;
|
||||
this.email = email;
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
package mops.gruppen2.repositories;
|
||||
package mops.gruppen2.repository;
|
||||
|
||||
import mops.gruppen2.events.Event;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
|
||||
public interface EventRepository extends CrudRepository<Event, Long> {
|
||||
16
src/main/java/mops/gruppen2/service/GroupService.java
Normal file
16
src/main/java/mops/gruppen2/service/GroupService.java
Normal file
@ -0,0 +1,16 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import mops.gruppen2.domain.Group;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class GroupService {
|
||||
|
||||
Group buildGroup(List<Event> eventList){
|
||||
Group newGroup = new Group();
|
||||
eventList.forEach(newGroup::applyEvent);
|
||||
return newGroup;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.services;
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import mops.gruppen2.security.Account;
|
||||
import org.keycloak.KeycloakPrincipal;
|
||||
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.services;
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
package mops.gruppen2.services;
|
||||
|
||||
import mops.gruppen2.events.Event;
|
||||
import mops.gruppen2.entities.Gruppe;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class GruppenService {
|
||||
|
||||
Gruppe buildGroup(List<Event> eventList){
|
||||
Gruppe newGroup = new Gruppe();
|
||||
eventList.forEach(newGroup::applyEvent);
|
||||
return newGroup;
|
||||
}
|
||||
}
|
||||
90
src/test/java/mops/gruppen2/domain/GroupTest.java
Normal file
90
src/test/java/mops/gruppen2/domain/GroupTest.java
Normal file
@ -0,0 +1,90 @@
|
||||
package mops.gruppen2.domain;
|
||||
|
||||
import mops.gruppen2.domain.event.AddUserEvent;
|
||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||
import mops.gruppen2.domain.event.UpdateRoleEvent;
|
||||
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;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
class GroupTest {
|
||||
|
||||
AddUserEvent addUserEvent;
|
||||
CreateGroupEvent createGroupEvent;
|
||||
|
||||
@BeforeEach
|
||||
public void setUp(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void applyEvent() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyAddUserEvent(){
|
||||
Group group = new Group();
|
||||
Group testGroup = new Group();
|
||||
User user = new User();
|
||||
addUserEvent = new AddUserEvent(1L,1L,"prof","jens","bendi", "hi@gmail.com");
|
||||
createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo");
|
||||
|
||||
group.applyEvent(createGroupEvent);
|
||||
group.applyEvent(addUserEvent);
|
||||
testGroup.applyEvent(createGroupEvent);
|
||||
user.setId("prof");
|
||||
user.setVorname("jens");
|
||||
user.setNachname("bendi");
|
||||
user.setEmail("hi@gmail.com");
|
||||
List<User> testTeil= new ArrayList<>();
|
||||
testTeil.add(user);
|
||||
testGroup.setTeilnehmersList(testTeil);
|
||||
|
||||
assertEquals(testGroup, group);
|
||||
}
|
||||
|
||||
// Verwendet CreateGroupEvent und AddUserEvent
|
||||
@Test
|
||||
void updateRoleForExistingUser() {
|
||||
// Arrange
|
||||
Group group = new Group();
|
||||
Org org = new Org();
|
||||
|
||||
group.applyEvent(new CreateGroupEvent(1L, 1L, "1L", "gruppe1", "Eine Testgruppe"));
|
||||
group.applyEvent(new AddUserEvent(1L, 1L, "5L", "Peter", "Pan", "123@mail.de"));
|
||||
|
||||
// Act
|
||||
group.applyEvent(new UpdateRoleEvent(1L, 1L, "5L", org));
|
||||
|
||||
// Assert
|
||||
assertThat(group.getRollenList())
|
||||
.containsOnlyKeys(group.getTeilnehmersList().get(0))
|
||||
.containsValue(org);
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyCreteGroupEvent() {
|
||||
String userId = "asd";
|
||||
CreateGroupEvent event = new CreateGroupEvent(1L,2,userId, "hello", "foo");
|
||||
|
||||
Group group1 = new Group();
|
||||
group1.applyEvent(event);
|
||||
|
||||
Group group2 = new Group();
|
||||
group2.id = 2L;
|
||||
group2.titel = "hello";
|
||||
group2.beschreibung = "foo";
|
||||
group2.teilnehmersList = new ArrayList<>();
|
||||
group2.rollenList = new HashMap<>();
|
||||
|
||||
assertEquals(group2, group1);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,90 +0,0 @@
|
||||
package mops.gruppen2.entities;
|
||||
|
||||
import mops.gruppen2.events.AddUser;
|
||||
import mops.gruppen2.events.CreateGroupEvent;
|
||||
import mops.gruppen2.events.UpdateRoleEvent;
|
||||
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;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
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,"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("prof");
|
||||
teilnehmer.setVorname("jens");
|
||||
teilnehmer.setNachname("bendi");
|
||||
teilnehmer.setEmail("hi@gmail.com");
|
||||
List<Teilnehmer> testTeil= new ArrayList<>();
|
||||
testTeil.add(teilnehmer);
|
||||
testGruppe.setTeilnehmersList(testTeil);
|
||||
|
||||
assertEquals(testGruppe,gruppe);
|
||||
}
|
||||
|
||||
// Verwendet CreateGroupEvent und AddUserEvent
|
||||
@Test
|
||||
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, "5L", orga));
|
||||
|
||||
// Assert
|
||||
assertThat(gruppe.getRollenList())
|
||||
.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);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user