diff --git a/lombok.config b/lombok.config new file mode 100644 index 0000000..efd9271 --- /dev/null +++ b/lombok.config @@ -0,0 +1 @@ +lombok.anyConstructor.addConstructorProperties = true diff --git a/src/main/java/mops/gruppen2/domain/GroupType.java b/src/main/java/mops/gruppen2/domain/GroupType.java deleted file mode 100644 index b4a0908..0000000 --- a/src/main/java/mops/gruppen2/domain/GroupType.java +++ /dev/null @@ -1,7 +0,0 @@ -package mops.gruppen2.domain; - -public enum GroupType { - PUBLIC, - PRIVATE, - LECTURE -} diff --git a/src/main/java/mops/gruppen2/domain/Limit.java b/src/main/java/mops/gruppen2/domain/Limit.java deleted file mode 100644 index d79bb57..0000000 --- a/src/main/java/mops/gruppen2/domain/Limit.java +++ /dev/null @@ -1,6 +0,0 @@ -package mops.gruppen2.domain; - -public enum Limit { - INFINITE, - LOCKED -} diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index 71145e0..52b9fb2 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -1,23 +1,18 @@ package mops.gruppen2.domain.event; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.ToString; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.Role; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.EventException; -import mops.gruppen2.domain.exception.GroupFullException; -import mops.gruppen2.domain.exception.UserAlreadyExistsException; - -import java.util.UUID; +import mops.gruppen2.domain.helper.ValidationHelper; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Role; +import mops.gruppen2.domain.model.User; /** * Fügt einen einzelnen Nutzer einer Gruppe hinzu. */ @Getter -@NoArgsConstructor // For Jackson @ToString @Log4j2 public class AddUserEvent extends Event { @@ -26,12 +21,7 @@ public class AddUserEvent extends Event { private String familyname; private String email; - public AddUserEvent(UUID groupId, String userId, String givenname, String familyname, String email) { - super(groupId, userId); - this.givenname = givenname; - this.familyname = familyname; - this.email = email; - } + private AddUserEvent() {} public AddUserEvent(Group group, User user) { super(group.getId(), user.getId()); @@ -42,17 +32,10 @@ public class AddUserEvent extends Event { @Override protected void applyEvent(Group group) throws EventException { - User user = new User(userId, givenname, familyname, email); + ValidationHelper.throwIfMember(group, new User(userId)); + ValidationHelper.throwIfGroupFull(group); - if (group.getMembers().contains(user)) { - throw new UserAlreadyExistsException(getClass().toString()); - } - - if (group.getMembers().size() >= group.getUserLimit()) { - throw new GroupFullException(getClass().toString()); - } - - group.getMembers().add(user); + group.getMembers().put(userId, new User(userId, givenname, familyname, email)); group.getRoles().put(userId, Role.MEMBER); log.trace("\t\t\t\t\tNeue Members: {}", group.getMembers()); diff --git a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java index ceae1ff..166f188 100644 --- a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java @@ -1,34 +1,34 @@ package mops.gruppen2.domain.event; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.ToString; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Type; import java.util.UUID; @Getter -@NoArgsConstructor // For Jackson @ToString @Log4j2 public class CreateGroupEvent extends Event { private UUID groupParent; - private GroupType groupType; + private Type type; - public CreateGroupEvent(UUID groupId, String userId, UUID parent, GroupType type) { + private CreateGroupEvent() {} + + public CreateGroupEvent(UUID groupId, String userId, UUID parent, Type type) { super(groupId, userId); groupParent = parent; - groupType = type; + this.type = type; } @Override protected void applyEvent(Group group) { group.setId(groupId); group.setParent(groupParent); - group.setType(groupType); + group.setType(type); log.trace("\t\t\t\t\tNeue Gruppe: {}", group.toString()); } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java index 4bb53b7..9ef2256 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java @@ -1,23 +1,17 @@ package mops.gruppen2.domain.event; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.ToString; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.User; - -import java.util.UUID; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.User; @Getter -@NoArgsConstructor // For Jackson @ToString @Log4j2 public class DeleteGroupEvent extends Event { - public DeleteGroupEvent(UUID groupId, String userId) { - super(groupId, userId); - } + private DeleteGroupEvent() {} public DeleteGroupEvent(Group group, User user) { super(group.getId(), user.getId()); @@ -31,7 +25,7 @@ public class DeleteGroupEvent extends Event { group.setDescription(null); group.setType(null); group.setParent(null); - group.setUserLimit(0L); + group.setUserLimit(null); log.trace("\t\t\t\t\tGelöschte Gruppe: {}", group); } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index b595f65..d142b49 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,47 +1,35 @@ package mops.gruppen2.domain.event; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.ToString; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.EventException; -import mops.gruppen2.domain.exception.UserNotFoundException; - -import java.util.UUID; +import mops.gruppen2.domain.helper.ValidationHelper; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.User; /** * Entfernt ein einzelnes Mitglied einer Gruppe. */ @Getter -@NoArgsConstructor // For Jackson @ToString @Log4j2 public class DeleteUserEvent extends Event { - public DeleteUserEvent(UUID groupId, String userId) { - super(groupId, userId); - } + private DeleteUserEvent() {} public DeleteUserEvent(Group group, User user) { super(group.getId(), user.getId()); } - //TODO: what the fuck use List.remove @Override protected void applyEvent(Group group) throws EventException { - for (User user : group.getMembers()) { - if (user.getId().equals(userId)) { - group.getMembers().remove(user); - group.getRoles().remove(user.getId()); + ValidationHelper.throwIfNoMember(group, new User(userId)); - log.trace("\t\t\t\t\tNeue Members: {}", group.getMembers()); - log.trace("\t\t\t\t\tNeue Rollen: {}", group.getRoles()); + group.getMembers().remove(userId); + group.getRoles().remove(userId); - return; - } - } - throw new UserNotFoundException(getClass().toString()); + log.trace("\t\t\t\t\tNeue Members: {}", group.getMembers()); + log.trace("\t\t\t\t\tNeue Rollen: {}", group.getRoles()); } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index b14f0aa..a83f2ab 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -6,9 +6,9 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.GroupIdMismatchException; +import mops.gruppen2.domain.model.Group; import java.util.UUID; diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java index 108d435..765b2c6 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java @@ -1,43 +1,32 @@ package mops.gruppen2.domain.event; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.ToString; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.User; -import mops.gruppen2.domain.exception.BadParameterException; - -import java.util.UUID; +import mops.gruppen2.domain.model.Description; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.User; /** * Ändert nur die Gruppenbeschreibung. */ @Getter -@NoArgsConstructor // For Jackson @ToString @Log4j2 public class UpdateGroupDescriptionEvent extends Event { - private String newGroupDescription; + private Description groupDescription; - public UpdateGroupDescriptionEvent(UUID groupId, String userId, String newGroupDescription) { - super(groupId, userId); - this.newGroupDescription = newGroupDescription; - } + private UpdateGroupDescriptionEvent() {} - public UpdateGroupDescriptionEvent(Group group, User user, String newGroupDescription) { + public UpdateGroupDescriptionEvent(Group group, User user, Description groupDescription) { super(group.getId(), user.getId()); - this.newGroupDescription = newGroupDescription; + this.groupDescription = groupDescription; } @Override protected void applyEvent(Group group) { - if (newGroupDescription.isEmpty()) { - throw new BadParameterException("Die Beschreibung ist leer."); - } - - group.setDescription(newGroupDescription); + group.setDescription(groupDescription); log.trace("\t\t\t\t\tNeue Beschreibung: {}", group.getDescription()); } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java index 93d7845..5942a26 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java @@ -1,42 +1,31 @@ package mops.gruppen2.domain.event; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.ToString; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.User; -import mops.gruppen2.domain.exception.BadParameterException; - -import java.util.UUID; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Title; +import mops.gruppen2.domain.model.User; /** * Ändert nur den Gruppentitel. */ @Getter -@NoArgsConstructor // For Jackson @ToString @Log4j2 public class UpdateGroupTitleEvent extends Event { - private String newGroupTitle; + private Title newGroupTitle; - public UpdateGroupTitleEvent(UUID groupId, String userId, String newGroupTitle) { - super(groupId, userId); - this.newGroupTitle = newGroupTitle; - } + private UpdateGroupTitleEvent() {} - public UpdateGroupTitleEvent(Group group, User user, String newGroupTitle) { + public UpdateGroupTitleEvent(Group group, User user, Title newGroupTitle) { super(group.getId(), user.getId()); this.newGroupTitle = newGroupTitle; } @Override protected void applyEvent(Group group) { - if (newGroupTitle.isEmpty()) { - throw new BadParameterException("Der Titel ist leer."); - } - group.setTitle(newGroupTitle); log.trace("\t\t\t\t\tNeuer Titel: {}", group.getTitle()); diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index 8c4af48..089af1f 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -1,13 +1,13 @@ package mops.gruppen2.domain.event; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.ToString; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.Role; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.UserNotFoundException; +import mops.gruppen2.domain.helper.ValidationHelper; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Role; +import mops.gruppen2.domain.model.User; import java.util.UUID; @@ -15,13 +15,14 @@ import java.util.UUID; * Aktualisiert die Gruppenrolle eines Teilnehmers. */ @Getter -@NoArgsConstructor // For Jackson @ToString @Log4j2 public class UpdateRoleEvent extends Event { private Role newRole; + private UpdateRoleEvent() {} + public UpdateRoleEvent(UUID groupId, String userId, Role newRole) { super(groupId, userId); this.newRole = newRole; @@ -34,15 +35,11 @@ public class UpdateRoleEvent extends Event { @Override protected void applyEvent(Group group) throws UserNotFoundException { - if (group.getRoles().containsKey(userId)) { - group.getRoles().put(userId, newRole); + ValidationHelper.throwIfNoMember(group, new User(userId)); - log.trace("\t\t\t\t\tNeue Rollen: {}", group.getRoles()); + group.getRoles().put(userId, newRole); - return; - } - - throw new UserNotFoundException(getClass().toString()); + log.trace("\t\t\t\t\tNeue Rollen: {}", group.getRoles()); } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateUserLimitEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateUserLimitEvent.java index f87de1d..a778295 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateUserLimitEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateUserLimitEvent.java @@ -1,38 +1,32 @@ package mops.gruppen2.domain.event; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.ToString; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.BadParameterException; import mops.gruppen2.domain.exception.EventException; - -import java.util.UUID; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Limit; +import mops.gruppen2.domain.model.User; @Getter -@NoArgsConstructor @ToString @Log4j2 public class UpdateUserLimitEvent extends Event { - private long userLimit; + private Limit userLimit; - public UpdateUserLimitEvent(UUID groupId, String userId, long userLimit) { - super(groupId, userId); - this.userLimit = userLimit; - } + private UpdateUserLimitEvent() {} - public UpdateUserLimitEvent(Group group, User user, long userLimit) { + public UpdateUserLimitEvent(Group group, User user, Limit userLimit) { super(group.getId(), user.getId()); this.userLimit = userLimit; } @Override protected void applyEvent(Group group) throws EventException { - if (userLimit <= 0 || userLimit < group.getMembers().size()) { - throw new BadParameterException("Usermaximum zu klein."); + if (userLimit.getUserLimit() < group.getMembers().size()) { + throw new BadParameterException("Teilnehmerlimit zu klein."); } group.setUserLimit(userLimit); diff --git a/src/main/java/mops/gruppen2/domain/helper/APIHelper.java b/src/main/java/mops/gruppen2/domain/helper/APIHelper.java index c45c57b..5e7d04f 100644 --- a/src/main/java/mops/gruppen2/domain/helper/APIHelper.java +++ b/src/main/java/mops/gruppen2/domain/helper/APIHelper.java @@ -1,7 +1,7 @@ package mops.gruppen2.domain.helper; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.model.Group; import mops.gruppen2.web.api.GroupRequestWrapper; import java.util.List; diff --git a/src/main/java/mops/gruppen2/domain/helper/CsvHelper.java b/src/main/java/mops/gruppen2/domain/helper/CsvHelper.java index dab5c04..3af7920 100644 --- a/src/main/java/mops/gruppen2/domain/helper/CsvHelper.java +++ b/src/main/java/mops/gruppen2/domain/helper/CsvHelper.java @@ -4,9 +4,9 @@ import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.dataformat.csv.CsvMapper; import com.fasterxml.jackson.dataformat.csv.CsvSchema; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.WrongFileException; +import mops.gruppen2.domain.model.User; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; diff --git a/src/main/java/mops/gruppen2/domain/helper/ValidationHelper.java b/src/main/java/mops/gruppen2/domain/helper/ValidationHelper.java index 6766ce7..aa05b40 100644 --- a/src/main/java/mops/gruppen2/domain/helper/ValidationHelper.java +++ b/src/main/java/mops/gruppen2/domain/helper/ValidationHelper.java @@ -1,19 +1,19 @@ package mops.gruppen2.domain.helper; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.BadParameterException; import mops.gruppen2.domain.exception.GroupFullException; import mops.gruppen2.domain.exception.NoAccessException; import mops.gruppen2.domain.exception.NoAdminAfterActionException; import mops.gruppen2.domain.exception.UserAlreadyExistsException; import mops.gruppen2.domain.exception.UserNotFoundException; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Type; +import mops.gruppen2.domain.model.User; import mops.gruppen2.web.form.CreateForm; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; -import static mops.gruppen2.domain.Role.ADMIN; +import static mops.gruppen2.domain.model.Role.ADMIN; @Log4j2 public final class ValidationHelper { @@ -28,7 +28,7 @@ public final class ValidationHelper { * Überprüft, ob ein User in einer Gruppe teilnimmt. */ public static boolean checkIfMember(Group group, User user) { - return group.getMembers().contains(user); + return group.getMembers().containsKey(user.getId()); } public static boolean checkIfLastMember(User user, Group group) { @@ -39,7 +39,7 @@ public final class ValidationHelper { * Überprüft, ob eine Gruppe voll ist. */ public static boolean checkIfGroupFull(Group group) { - return group.getMembers().size() >= group.getUserLimit(); + return group.getMembers().size() >= group.getUserLimit().getUserLimit(); } /** @@ -111,7 +111,7 @@ public final class ValidationHelper { public static void validateCreateForm(KeycloakAuthenticationToken token, CreateForm form) { if (!token.getAccount().getRoles().contains("orga") - && form.getType() == GroupType.LECTURE) { + && form.getType() == Type.LECTURE) { throw new BadParameterException("Eine Veranstaltung kann nur von ORGA erstellt werden."); } } diff --git a/src/main/java/mops/gruppen2/domain/model/Description.java b/src/main/java/mops/gruppen2/domain/model/Description.java new file mode 100644 index 0000000..218c094 --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/model/Description.java @@ -0,0 +1,20 @@ +package mops.gruppen2.domain.model; + +import lombok.Getter; +import lombok.Value; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +@Value +@Getter +//@AllArgsConstructor +//@NoArgsConstructor +public class Description { + + //private Description() {} + + @NotBlank + @Size(min = 4, max = 512) + String groupDescription; +} diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/model/Group.java similarity index 61% rename from src/main/java/mops/gruppen2/domain/Group.java rename to src/main/java/mops/gruppen2/domain/model/Group.java index 24e7e92..c026219 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/model/Group.java @@ -1,13 +1,11 @@ -package mops.gruppen2.domain; +package mops.gruppen2.domain.model; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.UUID; @@ -26,19 +24,16 @@ public class Group { @ToString.Exclude private UUID parent; - //TODO: Single Type for Public/Private/Lecture? - private GroupType type; + private Type type; - private String title; - private String description; + private Title title; + private Description description; - // Default + Minimum: 1 @ToString.Exclude - private long userLimit = 1; + private Limit userLimit = new Limit(1); // Add initial user - //TODO: List to Hashmap @ToString.Exclude - private final List members = new ArrayList<>(); + private final Map members = new HashMap<>(); @ToString.Exclude private final Map roles = new HashMap<>(); } diff --git a/src/main/java/mops/gruppen2/domain/model/Limit.java b/src/main/java/mops/gruppen2/domain/model/Limit.java new file mode 100644 index 0000000..d909288 --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/model/Limit.java @@ -0,0 +1,19 @@ +package mops.gruppen2.domain.model; + +import lombok.Value; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; + +@Value +//@Getter +//@AllArgsConstructor +//@NoArgsConstructor +public class Limit { + + //private Limit() {} + + @Min(1) + @Max(999_999) + long userLimit; +} diff --git a/src/main/java/mops/gruppen2/domain/Role.java b/src/main/java/mops/gruppen2/domain/model/Role.java similarity index 77% rename from src/main/java/mops/gruppen2/domain/Role.java rename to src/main/java/mops/gruppen2/domain/model/Role.java index 10d7856..1b66370 100644 --- a/src/main/java/mops/gruppen2/domain/Role.java +++ b/src/main/java/mops/gruppen2/domain/model/Role.java @@ -1,4 +1,4 @@ -package mops.gruppen2.domain; +package mops.gruppen2.domain.model; public enum Role { ADMIN, diff --git a/src/main/java/mops/gruppen2/domain/model/Title.java b/src/main/java/mops/gruppen2/domain/model/Title.java new file mode 100644 index 0000000..2c48778 --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/model/Title.java @@ -0,0 +1,19 @@ +package mops.gruppen2.domain.model; + +import lombok.Value; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +@Value +//@Getter +//@AllArgsConstructor +//@NoArgsConstructor +public class Title { + + //private Title() {} + + @NotBlank + @Size(min = 4, max = 128) + String groupTitle; +} diff --git a/src/main/java/mops/gruppen2/domain/model/Type.java b/src/main/java/mops/gruppen2/domain/model/Type.java new file mode 100644 index 0000000..7a0740a --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/model/Type.java @@ -0,0 +1,7 @@ +package mops.gruppen2.domain.model; + +public enum Type { + PUBLIC, + PRIVATE, + LECTURE +} diff --git a/src/main/java/mops/gruppen2/domain/User.java b/src/main/java/mops/gruppen2/domain/model/User.java similarity index 97% rename from src/main/java/mops/gruppen2/domain/User.java rename to src/main/java/mops/gruppen2/domain/model/User.java index 1496b3e..bb4b0ec 100644 --- a/src/main/java/mops/gruppen2/domain/User.java +++ b/src/main/java/mops/gruppen2/domain/model/User.java @@ -1,4 +1,4 @@ -package mops.gruppen2.domain; +package mops.gruppen2.domain.model; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; diff --git a/src/main/java/mops/gruppen2/domain/service/EventStoreService.java b/src/main/java/mops/gruppen2/domain/service/EventStoreService.java index e0d47cf..463ce8b 100644 --- a/src/main/java/mops/gruppen2/domain/service/EventStoreService.java +++ b/src/main/java/mops/gruppen2/domain/service/EventStoreService.java @@ -2,13 +2,13 @@ package mops.gruppen2.domain.service; import com.fasterxml.jackson.core.JsonProcessingException; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.exception.BadPayloadException; import mops.gruppen2.domain.helper.IdHelper; import mops.gruppen2.domain.helper.JsonHelper; +import mops.gruppen2.domain.model.User; import mops.gruppen2.persistance.EventRepository; import mops.gruppen2.persistance.dto.EventDTO; import org.springframework.stereotype.Service; diff --git a/src/main/java/mops/gruppen2/domain/service/GroupService.java b/src/main/java/mops/gruppen2/domain/service/GroupService.java index 0c5a4de..22c4368 100644 --- a/src/main/java/mops/gruppen2/domain/service/GroupService.java +++ b/src/main/java/mops/gruppen2/domain/service/GroupService.java @@ -1,10 +1,6 @@ package mops.gruppen2.domain.service; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; -import mops.gruppen2.domain.Role; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.domain.event.DeleteGroupEvent; @@ -16,6 +12,13 @@ import mops.gruppen2.domain.event.UpdateRoleEvent; import mops.gruppen2.domain.event.UpdateUserLimitEvent; import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.helper.ValidationHelper; +import mops.gruppen2.domain.model.Description; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Limit; +import mops.gruppen2.domain.model.Role; +import mops.gruppen2.domain.model.Title; +import mops.gruppen2.domain.model.Type; +import mops.gruppen2.domain.model.User; import org.springframework.stereotype.Service; import java.util.List; @@ -49,16 +52,16 @@ public class GroupService { * @param description Gruppenbeschreibung */ public Group createGroup(User user, - String title, - String description, - GroupType groupType, - long userLimit, + Title title, + Description description, + Type type, + Limit userLimit, UUID parent) { // Regeln: // isPrivate -> !isLecture // isLecture -> !isPrivate - Group group = createGroup(user, parent, groupType); + Group group = createGroup(user, parent, type); // Die Reihenfolge ist wichtig, da der ausführende User Admin sein muss addUser(user, group); @@ -102,8 +105,8 @@ public class GroupService { * * @return Das neue Teilnehmermaximum */ - private static long getAdjustedUserLimit(List newUsers, Group group) { - return Math.max((long) group.getMembers().size() + newUsers.size(), group.getUserLimit()); + private static Limit getAdjustedUserLimit(List newUsers, Group group) { + return new Limit(Math.max((long) group.getMembers().size() + newUsers.size(), group.getUserLimit().getUserLimit())); } /** @@ -131,11 +134,11 @@ public class GroupService { /** * Erzeugt eine Gruppe, speichert diese und gibt diese zurück. */ - private Group createGroup(User user, UUID parent, GroupType groupType) { + private Group createGroup(User user, UUID parent, Type type) { Event event = new CreateGroupEvent(UUID.randomUUID(), user.getId(), parent, - groupType); + type); Group group = new Group(); event.apply(group); @@ -206,14 +209,14 @@ public class GroupService { * Prüft, ob der Nutzer Admin ist und ob der Titel valide ist. * Bei keiner Änderung wird nichts erzeugt. */ - public void updateTitle(User user, Group group, String title) { + public void updateTitle(User user, Group group, Title title) { ValidationHelper.throwIfNoAdmin(group, user); - if (title.trim().equals(group.getTitle())) { + if (title.equals(group.getTitle())) { return; } - Event event = new UpdateGroupTitleEvent(group, user, title.trim()); + Event event = new UpdateGroupTitleEvent(group, user, title); event.apply(group); eventStoreService.saveEvent(event); @@ -224,14 +227,14 @@ public class GroupService { * Prüft, ob der Nutzer Admin ist und ob die Beschreibung valide ist. * Bei keiner Änderung wird nichts erzeugt. */ - public void updateDescription(User user, Group group, String description) { + public void updateDescription(User user, Group group, Description description) { ValidationHelper.throwIfNoAdmin(group, user); - if (description.trim().equals(group.getDescription())) { + if (description.equals(group.getDescription())) { return; } - Event event = new UpdateGroupDescriptionEvent(group, user, description.trim()); + Event event = new UpdateGroupDescriptionEvent(group, user, description); event.apply(group); eventStoreService.saveEvent(event); @@ -260,7 +263,7 @@ public class GroupService { * Prüft, ob der Nutzer Admin ist und ob das Limit valide ist. * Bei keiner Änderung wird nichts erzeugt. */ - public void updateUserLimit(User user, Group group, long userLimit) { + public void updateUserLimit(User user, Group group, Limit userLimit) { ValidationHelper.throwIfNoAdmin(group, user); if (userLimit == group.getUserLimit()) { @@ -268,8 +271,8 @@ public class GroupService { } Event event; - if (userLimit < group.getMembers().size()) { - event = new UpdateUserLimitEvent(group, user, group.getMembers().size()); + if (userLimit.getUserLimit() < group.getMembers().size()) { + event = new UpdateUserLimitEvent(group, user, new Limit(group.getMembers().size())); } else { event = new UpdateUserLimitEvent(group, user, userLimit); } diff --git a/src/main/java/mops/gruppen2/domain/service/InviteService.java b/src/main/java/mops/gruppen2/domain/service/InviteService.java index f3eeac4..64ba53e 100644 --- a/src/main/java/mops/gruppen2/domain/service/InviteService.java +++ b/src/main/java/mops/gruppen2/domain/service/InviteService.java @@ -1,9 +1,9 @@ package mops.gruppen2.domain.service; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; import mops.gruppen2.domain.exception.InvalidInviteException; import mops.gruppen2.domain.exception.NoInviteExistException; +import mops.gruppen2.domain.model.Group; import mops.gruppen2.persistance.InviteRepository; import mops.gruppen2.persistance.dto.InviteLinkDTO; import org.springframework.stereotype.Service; diff --git a/src/main/java/mops/gruppen2/domain/service/ProjectionService.java b/src/main/java/mops/gruppen2/domain/service/ProjectionService.java index 5799b3a..e7355b6 100644 --- a/src/main/java/mops/gruppen2/domain/service/ProjectionService.java +++ b/src/main/java/mops/gruppen2/domain/service/ProjectionService.java @@ -1,13 +1,13 @@ package mops.gruppen2.domain.service; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.GroupNotFoundException; import mops.gruppen2.domain.helper.IdHelper; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Type; +import mops.gruppen2.domain.model.User; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -131,7 +131,7 @@ public class ProjectionService { List groups = projectGroups(events); return groups.stream() - .filter(group -> group.getType() == GroupType.PUBLIC) + .filter(group -> group.getType() != Type.PRIVATE) .collect(Collectors.toList()); } @@ -151,7 +151,7 @@ public class ProjectionService { List lectures = projectGroups(events); return lectures.stream() - .filter(group -> group.getType() == GroupType.LECTURE) + .filter(group -> group.getType() == Type.LECTURE) .collect(Collectors.toList()); } diff --git a/src/main/java/mops/gruppen2/domain/service/SearchService.java b/src/main/java/mops/gruppen2/domain/service/SearchService.java index ceee611..5e51c6b 100644 --- a/src/main/java/mops/gruppen2/domain/service/SearchService.java +++ b/src/main/java/mops/gruppen2/domain/service/SearchService.java @@ -1,10 +1,10 @@ package mops.gruppen2.domain.service; import lombok.extern.log4j.Log4j2; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.EventException; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Type; +import mops.gruppen2.domain.model.User; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -56,10 +56,10 @@ public class SearchService { */ private static void sortByGroupType(List groups) { groups.sort((Group g1, Group g2) -> { - if (g1.getType() == GroupType.LECTURE) { + if (g1.getType() == Type.LECTURE) { return -1; } - if (g2.getType() == GroupType.LECTURE) { + if (g2.getType() == Type.LECTURE) { return 0; } diff --git a/src/main/java/mops/gruppen2/web/APIController.java b/src/main/java/mops/gruppen2/web/APIController.java index f766f55..75d12d5 100644 --- a/src/main/java/mops/gruppen2/web/APIController.java +++ b/src/main/java/mops/gruppen2/web/APIController.java @@ -3,12 +3,13 @@ package mops.gruppen2.web; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import mops.gruppen2.aspect.annotation.TraceMethodCalls; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.helper.APIHelper; import mops.gruppen2.domain.helper.IdHelper; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.User; import mops.gruppen2.domain.service.EventStoreService; import mops.gruppen2.domain.service.ProjectionService; import mops.gruppen2.web.api.GroupRequestWrapper; @@ -26,6 +27,7 @@ import java.util.UUID; */ @Log4j2 @TraceMethodCalls +@RequiredArgsConstructor @RestController @RequestMapping("/gruppen2/api") public class APIController { @@ -33,11 +35,6 @@ public class APIController { private final EventStoreService eventStoreService; private final ProjectionService projectionService; - public APIController(EventStoreService eventStoreService, ProjectionService projectionService) { - this.eventStoreService = eventStoreService; - this.projectionService = projectionService; - } - /** * Erzeugt eine Liste aus Gruppen, welche sich seit einer übergebenen Event-Id geändert haben. * Die Gruppen werden vollständig projiziert, enthalten also alle Informationen zum entsprechenden Zeitpunkt. diff --git a/src/main/java/mops/gruppen2/web/GroupCreationController.java b/src/main/java/mops/gruppen2/web/GroupCreationController.java index be8bd65..60fb386 100644 --- a/src/main/java/mops/gruppen2/web/GroupCreationController.java +++ b/src/main/java/mops/gruppen2/web/GroupCreationController.java @@ -1,17 +1,19 @@ package mops.gruppen2.web; +import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import mops.gruppen2.aspect.annotation.TraceMethodCalls; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.helper.CsvHelper; import mops.gruppen2.domain.helper.IdHelper; import mops.gruppen2.domain.helper.ValidationHelper; +import mops.gruppen2.domain.model.Description; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Limit; +import mops.gruppen2.domain.model.Title; +import mops.gruppen2.domain.model.User; import mops.gruppen2.domain.service.GroupService; import mops.gruppen2.domain.service.ProjectionService; import mops.gruppen2.web.form.CreateForm; -import mops.gruppen2.web.form.MetaForm; -import mops.gruppen2.web.form.UserLimitForm; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Controller; @@ -26,6 +28,7 @@ import javax.validation.Valid; @SuppressWarnings("SameReturnValue") @Log4j2 @TraceMethodCalls +@RequiredArgsConstructor @Controller @RequestMapping("/gruppen2") public class GroupCreationController { @@ -33,11 +36,6 @@ public class GroupCreationController { private final GroupService groupService; private final ProjectionService projectionService; - public GroupCreationController(GroupService groupService, ProjectionService projectionService) { - this.groupService = groupService; - this.projectionService = projectionService; - } - @RolesAllowed({"ROLE_orga", "ROLE_studentin"}) @GetMapping("/create") public String getCreate(Model model) { @@ -52,18 +50,19 @@ public class GroupCreationController { @CacheEvict(value = "groups", allEntries = true) public String postCreateOrga(KeycloakAuthenticationToken token, @Valid CreateForm create, - @Valid MetaForm meta, - @Valid UserLimitForm limit) { + @Valid Title title, + @Valid Description description, + @Valid Limit limit) { // Zusätzlicher check: studentin kann keine lecture erstellen ValidationHelper.validateCreateForm(token, create); User user = new User(token); Group group = groupService.createGroup(user, - meta.getTitle(), - meta.getDescription(), + title, + description, create.getType(), - limit.getUserlimit(), + limit, create.getParent()); // ROLE_studentin kann kein CSV importieren diff --git a/src/main/java/mops/gruppen2/web/GroupDetailsController.java b/src/main/java/mops/gruppen2/web/GroupDetailsController.java index 05abea9..577887e 100644 --- a/src/main/java/mops/gruppen2/web/GroupDetailsController.java +++ b/src/main/java/mops/gruppen2/web/GroupDetailsController.java @@ -1,17 +1,19 @@ package mops.gruppen2.web; +import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import mops.gruppen2.aspect.annotation.TraceMethodCalls; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.helper.CsvHelper; import mops.gruppen2.domain.helper.IdHelper; import mops.gruppen2.domain.helper.ValidationHelper; +import mops.gruppen2.domain.model.Description; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Limit; +import mops.gruppen2.domain.model.Title; +import mops.gruppen2.domain.model.User; import mops.gruppen2.domain.service.GroupService; import mops.gruppen2.domain.service.InviteService; import mops.gruppen2.domain.service.ProjectionService; -import mops.gruppen2.web.form.MetaForm; -import mops.gruppen2.web.form.UserLimitForm; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Controller; @@ -31,6 +33,7 @@ import java.util.UUID; @SuppressWarnings("SameReturnValue") @Log4j2 @TraceMethodCalls +@RequiredArgsConstructor @Controller @RequestMapping("/gruppen2") public class GroupDetailsController { @@ -39,13 +42,6 @@ public class GroupDetailsController { private final GroupService groupService; private final ProjectionService projectionService; - public GroupDetailsController(InviteService inviteService, GroupService groupService, ProjectionService projectionService) { - this.inviteService = inviteService; - this.groupService = groupService; - this.projectionService = projectionService; - - } - @RolesAllowed({"ROLE_orga", "ROLE_studentin"}) @GetMapping("/details/{id}") public String getDetailsPage(KeycloakAuthenticationToken token, @@ -132,13 +128,14 @@ public class GroupDetailsController { @CacheEvict(value = "groups", allEntries = true) public String postDetailsEditMeta(KeycloakAuthenticationToken token, @PathVariable("id") String groupId, - @Valid MetaForm form) { + @Valid Title title, + @Valid Description description) { User user = new User(token); Group group = projectionService.projectSingleGroup(UUID.fromString(groupId)); - groupService.updateTitle(user, group, form.getTitle()); - groupService.updateDescription(user, group, form.getDescription()); + groupService.updateTitle(user, group, title); + groupService.updateDescription(user, group, description); return "redirect:/gruppen2/details/" + groupId + "/edit"; } @@ -148,11 +145,11 @@ public class GroupDetailsController { @CacheEvict(value = "groups", allEntries = true) public String postDetailsEditUserLimit(KeycloakAuthenticationToken token, @PathVariable("id") String groupId, - @Valid UserLimitForm form) { + @Valid Limit limit) { User user = new User(token); Group group = projectionService.projectSingleGroup(UUID.fromString(groupId)); - groupService.updateUserLimit(user, group, form.getUserlimit()); + groupService.updateUserLimit(user, group, limit); return "redirect:/gruppen2/details/" + groupId + "/edit"; } diff --git a/src/main/java/mops/gruppen2/web/GruppenfindungController.java b/src/main/java/mops/gruppen2/web/GruppenfindungController.java index ff9ac9c..96f1048 100644 --- a/src/main/java/mops/gruppen2/web/GruppenfindungController.java +++ b/src/main/java/mops/gruppen2/web/GruppenfindungController.java @@ -1,9 +1,10 @@ package mops.gruppen2.web; +import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import mops.gruppen2.aspect.annotation.TraceMethodCall; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.PageNotFoundException; +import mops.gruppen2.domain.model.User; import mops.gruppen2.domain.service.ProjectionService; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.stereotype.Controller; @@ -16,15 +17,12 @@ import javax.servlet.http.HttpServletRequest; @SuppressWarnings("SameReturnValue") @Log4j2 +@RequiredArgsConstructor @Controller public class GruppenfindungController { private final ProjectionService projectionService; - public GruppenfindungController(ProjectionService projectionService) { - this.projectionService = projectionService; - } - // For convenience //@GetMapping("") //public String redirect() { diff --git a/src/main/java/mops/gruppen2/web/ModelAttributeControllerAdvice.java b/src/main/java/mops/gruppen2/web/ModelAttributeControllerAdvice.java index c0da8be..364a189 100644 --- a/src/main/java/mops/gruppen2/web/ModelAttributeControllerAdvice.java +++ b/src/main/java/mops/gruppen2/web/ModelAttributeControllerAdvice.java @@ -1,9 +1,9 @@ package mops.gruppen2.web; import mops.gruppen2.domain.Account; -import mops.gruppen2.domain.GroupType; -import mops.gruppen2.domain.Role; -import mops.gruppen2.domain.User; +import mops.gruppen2.domain.model.Role; +import mops.gruppen2.domain.model.Type; +import mops.gruppen2.domain.model.User; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ControllerAdvice; @@ -26,9 +26,9 @@ public class ModelAttributeControllerAdvice { // Add enums model.addAttribute("member", Role.MEMBER); model.addAttribute("admin", Role.ADMIN); - model.addAttribute("public", GroupType.PUBLIC); - model.addAttribute("private", GroupType.PRIVATE); - model.addAttribute("lecture", GroupType.LECTURE); + model.addAttribute("public", Type.PUBLIC); + model.addAttribute("private", Type.PRIVATE); + model.addAttribute("lecture", Type.LECTURE); } } diff --git a/src/main/java/mops/gruppen2/web/SearchAndInviteController.java b/src/main/java/mops/gruppen2/web/SearchAndInviteController.java index aa43831..34858ab 100644 --- a/src/main/java/mops/gruppen2/web/SearchAndInviteController.java +++ b/src/main/java/mops/gruppen2/web/SearchAndInviteController.java @@ -1,11 +1,12 @@ package mops.gruppen2.web; +import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import mops.gruppen2.aspect.annotation.TraceMethodCalls; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.helper.ValidationHelper; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Type; +import mops.gruppen2.domain.model.User; import mops.gruppen2.domain.service.InviteService; import mops.gruppen2.domain.service.ProjectionService; import mops.gruppen2.domain.service.SearchService; @@ -25,6 +26,7 @@ import java.util.List; @SuppressWarnings("SameReturnValue") @Log4j2 @TraceMethodCalls +@RequiredArgsConstructor @Controller @RequestMapping("/gruppen2") public class SearchAndInviteController { @@ -33,12 +35,6 @@ public class SearchAndInviteController { private final ProjectionService projectionService; private final SearchService searchService; - public SearchAndInviteController(InviteService inviteService, ProjectionService projectionService, SearchService searchService) { - this.inviteService = inviteService; - this.projectionService = projectionService; - this.searchService = searchService; - } - @RolesAllowed({"ROLE_orga", "ROLE_studentin"}) @GetMapping("/search") public String getSearch(Model model) { @@ -74,7 +70,7 @@ public class SearchAndInviteController { model.addAttribute("group", group); // Gruppe öffentlich - if (group.getType() == GroupType.PUBLIC) { + if (group.getType() == Type.PUBLIC) { return "redirect:/gruppen2/details/" + group.getId(); } diff --git a/src/main/java/mops/gruppen2/web/api/GroupRequestWrapper.java b/src/main/java/mops/gruppen2/web/api/GroupRequestWrapper.java index 40272c3..73a045b 100644 --- a/src/main/java/mops/gruppen2/web/api/GroupRequestWrapper.java +++ b/src/main/java/mops/gruppen2/web/api/GroupRequestWrapper.java @@ -2,7 +2,7 @@ package mops.gruppen2.web.api; import lombok.AllArgsConstructor; import lombok.Getter; -import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.model.Group; import java.util.List; diff --git a/src/main/java/mops/gruppen2/web/form/CreateForm.java b/src/main/java/mops/gruppen2/web/form/CreateForm.java index eac2eec..b5be8b3 100644 --- a/src/main/java/mops/gruppen2/web/form/CreateForm.java +++ b/src/main/java/mops/gruppen2/web/form/CreateForm.java @@ -1,8 +1,8 @@ package mops.gruppen2.web.form; import lombok.Data; -import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.helper.IdHelper; +import mops.gruppen2.domain.model.Type; import org.springframework.web.multipart.MultipartFile; import javax.validation.constraints.NotBlank; @@ -19,11 +19,11 @@ public class CreateForm { MultipartFile file; - public GroupType getType() { - return GroupType.valueOf(type); + public Type getType() { + return Type.valueOf(type); } public UUID getParent() { - return getType() == GroupType.LECTURE ? IdHelper.emptyUUID() : IdHelper.stringToUUID(parent); + return getType() == Type.LECTURE ? IdHelper.emptyUUID() : IdHelper.stringToUUID(parent); } } diff --git a/src/main/java/mops/gruppen2/web/form/MetaForm.java b/src/main/java/mops/gruppen2/web/form/MetaForm.java deleted file mode 100644 index 32b8182..0000000 --- a/src/main/java/mops/gruppen2/web/form/MetaForm.java +++ /dev/null @@ -1,18 +0,0 @@ -package mops.gruppen2.web.form; - -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; - -@Data -public class MetaForm { - - @NotBlank - @Size(min = 4, max = 128) - String title; - - @NotBlank - @Size(min = 4, max = 512) - String description; -} diff --git a/src/main/java/mops/gruppen2/web/form/UserLimitForm.java b/src/main/java/mops/gruppen2/web/form/UserLimitForm.java deleted file mode 100644 index e416f23..0000000 --- a/src/main/java/mops/gruppen2/web/form/UserLimitForm.java +++ /dev/null @@ -1,14 +0,0 @@ -package mops.gruppen2.web.form; - -import lombok.Data; - -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; - -@Data -public class UserLimitForm { - - @Min(1) - @Max(999_999) - long userlimit; -} diff --git a/src/main/resources/data-h2.sql b/src/main/resources/data-h2.sql deleted file mode 100644 index 6369e29..0000000 --- a/src/main/resources/data-h2.sql +++ /dev/null @@ -1,158 +0,0 @@ -INSERT INTO event -VALUES (1, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '07FEA694', 'CreateGroupEvent', - '{"type":"CreateGroupEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"07FEA694","groupParent":null,"groupType":"PUBLIC"}'), - (2, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '2', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"2","givenname":"Marcos","familyname":"Glover","email":"Marcos.Glover@mail.de"}'), - - (3, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '2', 'UpdateUserLimitEvent', - '{"type":"UpdateUserLimitEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"2","userLimit":"1000"}'), - - (4, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '5CFBF1AF', 'UpdateGroupTitleEvent', - '{"type":"UpdateGroupTitleEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"5CFBF1AF","newGroupTitle":"Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra"}'), - (5, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '41E11CBC', 'UpdateGroupDescriptionEvent', - '{"type":"UpdateGroupDescriptionEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"41E11CBC","newGroupDescription":"Have you seen my Bear Tibbers? Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyrav"}'), - (6, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '3', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"3","givenname":"Antwan","familyname":"Smitham","email":"Antwan.Smitham@mail.de"}'), - (7, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '4', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"4","givenname":"Numbers","familyname":"Rice","email":"Numbers.Rice@mail.de"}'), - (8, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '5', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"5","givenname":"Charlette","familyname":"Brakus","email":"Charlette.Brakus@mail.de"}'), - (9, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '6', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"6","givenname":"Alethea","familyname":"Kessler","email":"Alethea.Kessler@mail.de"}'), - (10, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '7', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"7","givenname":"Daren","familyname":"Kreiger","email":"Daren.Kreiger@mail.de"}'), - (11, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '8', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"8","givenname":"Gabriel","familyname":"Feeney","email":"Gabriel.Feeney@mail.de"}'), - (12, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '9', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"9","givenname":"Roosevelt","familyname":"Buckridge","email":"Roosevelt.Buckridge@mail.de"}'), - (13, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '10', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"10","givenname":"Eduardo","familyname":"Lowe","email":"Eduardo.Lowe@mail.de"}'), - - (14, '555a531c-8b80-491c-88b4-8fc18170d318', '2D7D9CE0', 'CreateGroupEvent', - '{"type":"CreateGroupEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"2D7D9CE0","groupParent":null,"groupType":"PRIVATE"}'), - (15, '555a531c-8b80-491c-88b4-8fc18170d318', 'orga', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"orga","givenname":"Jerald","familyname":"Ward","email":"Jerald.Ward@mail.de"}'), - (16, '555a531c-8b80-491c-88b4-8fc18170d318', 'orga', 'UpdateRoleEvent', - '{"type":"UpdateRoleEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"orga","newRole":"ADMIN"}'), - - - (17, '555a531c-8b80-491c-88b4-8fc18170d318', '2', 'UpdateUserLimitEvent', - '{"type":"UpdateUserLimitEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"2","userLimit":"1000"}'), - - (18, '555a531c-8b80-491c-88b4-8fc18170d318', '5CFBF1AF', 'UpdateGroupTitleEvent', - '{"type":"UpdateGroupTitleEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"5CFBF1AF","newGroupTitle":"Zyra"}'), - (19, '555a531c-8b80-491c-88b4-8fc18170d318', 'EF050D58', 'UpdateGroupDescriptionEvent', - '{"type":"UpdateGroupDescriptionEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"EF050D58","newGroupDescription":"Not Draven Draaaaven."}'), - (20, '555a531c-8b80-491c-88b4-8fc18170d318', '3', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"3","givenname":"Jesica","familyname":"OKeefe","email":"Jesica.OKeefe@mail.de"}'), - (21, '555a531c-8b80-491c-88b4-8fc18170d318', '4', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"4","givenname":"Jess","familyname":"Schamberger","email":"Jess.Schamberger@mail.de"}'), - - (22, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', 'E7E2EC5F', 'CreateGroupEvent', - '{"type":"CreateGroupEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"E7E2EC5F","groupParent":null,"groupType":"LECTURE"}'), - (23, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', 'orga', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"orga","givenname":"Hana","familyname":"Connelly","email":"Hana.Connelly@mail.de"}'), - - (24, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '2', 'UpdateUserLimitEvent', - '{"type":"UpdateUserLimitEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"2","userLimit":"1000"}'), - - (25, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '4EDE191D', 'UpdateGroupTitleEvent', - '{"type":"UpdateGroupTitleEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"4EDE191D","newGroupTitle":"Vi"}'), - (26, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '6EF0B5F9', 'UpdateGroupDescriptionEvent', - '{"type":"UpdateGroupDescriptionEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"6EF0B5F9","newGroupDescription":"Ready to set the world on fire..."}'), - (27, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '3', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"3","givenname":"Steve","familyname":"Swaniawski","email":"Steve.Swaniawski@mail.de"}'), - (28, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '4', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"4","givenname":"Natalie","familyname":"Anderson","email":"Natalie.Anderson@mail.de"}'), - (29, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '5', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"5","givenname":"Asuncion","familyname":"Koss","email":"Asuncion.Koss@mail.de"}'), - (30, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '6', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"6","givenname":"Dana","familyname":"Kemmer","email":"Dana.Kemmer@mail.de"}'), - (31, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '7', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"7","givenname":"Herbert","familyname":"Moen","email":"Herbert.Moen@mail.de"}'), - (32, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '8', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"8","givenname":"Dick","familyname":"Goodwin","email":"Dick.Goodwin@mail.de"}'), - (33, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '9', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"9","givenname":"Deangelo","familyname":"Hoeger","email":"Deangelo.Hoeger@mail.de"}'), - (34, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '10', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"10","givenname":"Zina","familyname":"Abernathy","email":"Zina.Abernathy@mail.de"}'), - (35, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '11', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"11","givenname":"Karima","familyname":"Adams","email":"Karima.Adams@mail.de"}'), - (36, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '12', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"12","givenname":"Evette","familyname":"Price","email":"Evette.Price@mail.de"}'), - (37, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '13', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"13","givenname":"Chester","familyname":"Mayert","email":"Chester.Mayert@mail.de"}'), - (38, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '14', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"14","givenname":"Trang","familyname":"Watsica","email":"Trang.Watsica@mail.de"}'), - (39, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '15', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"15","givenname":"Cameron","familyname":"Terry","email":"Cameron.Terry@mail.de"}'), - (40, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '16', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"16","givenname":"Tynisha","familyname":"Grant","email":"Tynisha.Grant@mail.de"}'), - (41, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '17', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"17","givenname":"Leila","familyname":"Thiel","email":"Leila.Thiel@mail.de"}'), - (42, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '18', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"18","givenname":"Lorenzo","familyname":"Weimann","email":"Lorenzo.Weimann@mail.de"}'), - (43, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '19', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"19","givenname":"Alonzo","familyname":"Keebler","email":"Alonzo.Keebler@mail.de"}'), - (44, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '20', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"20","givenname":"Maximo","familyname":"Olson","email":"Maximo.Olson@mail.de"}'), - (45, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '21', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"21","givenname":"Lisa","familyname":"Konopelski","email":"Lisa.Konopelski@mail.de"}'), - (46, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '22', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"22","givenname":"Samuel","familyname":"Parisian","email":"Samuel.Parisian@mail.de"}'), - (47, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '23', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"23","givenname":"Irish","familyname":"Grant","email":"Irish.Grant@mail.de"}'), - (48, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '24', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"24","givenname":"Donnell","familyname":"Olson","email":"Donnell.Olson@mail.de"}'), - (49, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '25', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"25","givenname":"Jeana","familyname":"MacGyver","email":"Jeana.MacGyver@mail.de"}'), - (50, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '26', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"26","givenname":"Mark","familyname":"Stroman","email":"Mark.Stroman@mail.de"}'), - (51, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '27', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"27","givenname":"Genevive","familyname":"Christiansen","email":"Genevive.Christiansen@mail.de"}'), - (52, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '28', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"28","givenname":"Marshall","familyname":"Wisoky","email":"Marshall.Wisoky@mail.de"}'), - (53, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '29', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"29","givenname":"Hugo","familyname":"Krajcik","email":"Hugo.Krajcik@mail.de"}'), - (54, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '30', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"30","givenname":"Genevive","familyname":"Weber","email":"Genevive.Weber@mail.de"}'), - (55, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '31', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"31","givenname":"Cleotilde","familyname":"Baumbach","email":"Cleotilde.Baumbach@mail.de"}'), - (56, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '32', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"32","givenname":"Kaitlyn","familyname":"Bins","email":"Kaitlyn.Bins@mail.de"}'), - (57, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '33', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"33","givenname":"Sergio","familyname":"Hettinger","email":"Sergio.Hettinger@mail.de"}'), - (58, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '34', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"34","givenname":"Beckie","familyname":"Heaney","email":"Beckie.Heaney@mail.de"}'), - (59, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '35', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"35","givenname":"Kareem","familyname":"Considine","email":"Kareem.Considine@mail.de"}'), - (60, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '36', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"36","givenname":"Kenyatta","familyname":"Wolff","email":"Kenyatta.Wolff@mail.de"}'), - (61, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '37', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"37","givenname":"Brock","familyname":"Romaguera","email":"Brock.Romaguera@mail.de"}'), - (62, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '38', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"38","givenname":"Carey","familyname":"Reynolds","email":"Carey.Reynolds@mail.de"}'), - (63, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '39', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"39","givenname":"Gabriel","familyname":"Rath","email":"Gabriel.Rath@mail.de"}'), - (64, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '40', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"40","givenname":"Tristan","familyname":"Dare","email":"Tristan.Dare@mail.de"}'), - (65, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '41', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"41","givenname":"Augustus","familyname":"Reilly","email":"Augustus.Reilly@mail.de"}'), - (66, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '42', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"42","givenname":"Dwayne","familyname":"Lynch","email":"Dwayne.Lynch@mail.de"}'), - (67, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '43', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"43","givenname":"Ben","familyname":"Corkery","email":"Ben.Corkery@mail.de"}'), - (68, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '44', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"44","givenname":"Alfredo","familyname":"Towne","email":"Alfredo.Towne@mail.de"}'), - (69, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '45', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"45","givenname":"Shante","familyname":"Becker","email":"Shante.Becker@mail.de"}'), - (70, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '46', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"46","givenname":"Elinor","familyname":"Bernier","email":"Elinor.Bernier@mail.de"}'), - (71, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '47', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"47","givenname":"Lee","familyname":"Dibbert","email":"Lee.Dibbert@mail.de"}'), - (72, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '48', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"48","givenname":"Augustina","familyname":"Friesen","email":"Augustina.Friesen@mail.de"}'), - (73, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '49', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"49","givenname":"Kanesha","familyname":"Olson","email":"Kanesha.Olson@mail.de"}'), - (74, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '50', 'AddUserEvent', - '{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"50","givenname":"Era","familyname":"Willms","email":"Era.Willms@mail.de"}'); diff --git a/src/main/resources/templates/details.html b/src/main/resources/templates/details.html index c769b60..907081a 100644 --- a/src/main/resources/templates/details.html +++ b/src/main/resources/templates/details.html @@ -11,7 +11,7 @@
-

+

@@ -40,7 +40,7 @@
Teilnehmer: - +
@@ -55,7 +55,7 @@
  • + th:each="member : ${group.getMembers().values()}">
  • diff --git a/src/main/resources/templates/edit.html b/src/main/resources/templates/edit.html index 17baeaa..103a702 100644 --- a/src/main/resources/templates/edit.html +++ b/src/main/resources/templates/edit.html @@ -10,7 +10,7 @@
    -

    +

    @@ -96,7 +96,7 @@
      -
    • +
    • diff --git a/src/main/resources/templates/fragments/forms.html b/src/main/resources/templates/fragments/forms.html index 46b0803..990f58e 100644 --- a/src/main/resources/templates/fragments/forms.html +++ b/src/main/resources/templates/fragments/forms.html @@ -10,8 +10,8 @@
      Gruppentitel:
      - +
      @@ -20,8 +20,8 @@
      Beschreibung:
      - +
    @@ -47,11 +47,11 @@
    Gehört zu:
    - +
@@ -61,17 +61,17 @@
- +
@@ -81,10 +81,10 @@
Limit:
- + th:disabled="${group != null && group.getUserLimit().getUserLimit() < 999999} ? 'false' : 'disabled'">
Teilnehmer
diff --git a/src/main/resources/templates/fragments/groups.html b/src/main/resources/templates/fragments/groups.html index e033a5e..4d31d46 100644 --- a/src/main/resources/templates/fragments/groups.html +++ b/src/main/resources/templates/fragments/groups.html @@ -15,9 +15,9 @@ th:if='${group.getType() == lecture}'>Veranstaltung Parent + th:unless="${parent == null || parent?.getTitle()?.getGroupTitle() == null|| parent?.getTitle()?.getGroupTitle() == ''}" + th:title="${'Die Gruppe gehört zur Veranstaltung ' + parent.getTitle().getGroupTitle() + '.'}" + th:text="${parent.getTitle().getGroupTitle()}">Parent
- +
@@ -48,21 +48,21 @@
- + Möchtest du dieser Gruppe beitreten? - + Diese Gruppe hat ihre maximale Teilnehmeranzahl erreicht.
+ th:if="${group.getMembers().size() < group.getUserLimit().getUserLimit()}">
-
+
Startseite. diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 5a3ef98..9873c76 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -17,12 +17,12 @@
+ th:text="${group.getTitle().getGroupTitle()}">
- +
diff --git a/src/main/resources/templates/link.html b/src/main/resources/templates/link.html index 82aacc5..d4ff7b2 100644 --- a/src/main/resources/templates/link.html +++ b/src/main/resources/templates/link.html @@ -10,8 +10,7 @@
- -

+

diff --git a/src/main/resources/templates/preview.html b/src/main/resources/templates/preview.html index 8f8af66..4393c49 100644 --- a/src/main/resources/templates/preview.html +++ b/src/main/resources/templates/preview.html @@ -10,7 +10,7 @@
-

+

diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html index e332966..0a9c3cd 100644 --- a/src/main/resources/templates/search.html +++ b/src/main/resources/templates/search.html @@ -20,7 +20,7 @@
Suchbegriff:
- +
@@ -32,10 +32,10 @@ + th:text="${group.getTitle().getGroupTitle()}">
- +
diff --git a/src/test/java/mops/gruppen2/TestBuilder.java b/src/test/java/mops/gruppen2/TestBuilder.java index bf7d422..1255fe3 100644 --- a/src/test/java/mops/gruppen2/TestBuilder.java +++ b/src/test/java/mops/gruppen2/TestBuilder.java @@ -2,9 +2,6 @@ package mops.gruppen2; import com.github.javafaker.Faker; import mops.gruppen2.domain.Account; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; -import mops.gruppen2.domain.Role; import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.domain.event.DeleteGroupEvent; @@ -14,6 +11,9 @@ import mops.gruppen2.domain.event.UpdateGroupDescriptionEvent; import mops.gruppen2.domain.event.UpdateGroupTitleEvent; import mops.gruppen2.domain.event.UpdateRoleEvent; import mops.gruppen2.domain.event.UpdateUserLimitEvent; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Role; +import mops.gruppen2.domain.model.Type; import java.util.ArrayList; import java.util.Collection; @@ -151,7 +151,7 @@ public class TestBuilder { } public static Event createPrivateGroupEvent(UUID groupId) { - return createGroupEvent(groupId, GroupType.PRIVATE); + return createGroupEvent(groupId, Type.PRIVATE); } public static Event createPrivateGroupEvent() { @@ -159,14 +159,14 @@ public class TestBuilder { } public static Event createPublicGroupEvent(UUID groupId) { - return createGroupEvent(groupId, GroupType.PUBLIC); + return createGroupEvent(groupId, Type.PUBLIC); } public static Event createPublicGroupEvent() { return createPublicGroupEvent(UUID.randomUUID()); } - public static Event createGroupEvent(UUID groupId, GroupType type) { + public static Event createGroupEvent(UUID groupId, Type type) { return new CreateGroupEvent( groupId, faker.random().hex(), @@ -184,7 +184,7 @@ public class TestBuilder { groupId, faker.random().hex(), null, - GroupType.LECTURE + Type.LECTURE ); } diff --git a/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java b/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java index 3ccc678..1f14b1c 100644 --- a/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.event; -import mops.gruppen2.domain.Group; import mops.gruppen2.domain.exception.GroupFullException; import mops.gruppen2.domain.exception.UserAlreadyExistsException; +import mops.gruppen2.domain.model.Group; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.addUserEvent; diff --git a/src/test/java/mops/gruppen2/domain/event/CreateGroupEventTest.java b/src/test/java/mops/gruppen2/domain/event/CreateGroupEventTest.java index 4cdd453..24f4c5e 100644 --- a/src/test/java/mops/gruppen2/domain/event/CreateGroupEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/CreateGroupEventTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.event; import mops.gruppen2.TestBuilder; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Type; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.uuidMock; @@ -15,12 +15,12 @@ class CreateGroupEventTest { Event createEvent = new CreateGroupEvent(uuidMock(0), "A", uuidMock(1), - GroupType.PUBLIC); + Type.PUBLIC); Group group = TestBuilder.apply(createEvent); assertThat(group.getMembers()).hasSize(0); - assertThat(group.getType()).isEqualTo(GroupType.PUBLIC); + assertThat(group.getType()).isEqualTo(Type.PUBLIC); assertThat(group.getId()).isEqualTo(uuidMock(0)); assertThat(group.getParent()).isEqualTo(uuidMock(1)); } diff --git a/src/test/java/mops/gruppen2/domain/event/DeleteGroupEventTest.java b/src/test/java/mops/gruppen2/domain/event/DeleteGroupEventTest.java index 552ca4b..8af3272 100644 --- a/src/test/java/mops/gruppen2/domain/event/DeleteGroupEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/DeleteGroupEventTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.event; import mops.gruppen2.TestBuilder; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Type; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.uuidMock; @@ -15,7 +15,7 @@ class DeleteGroupEventTest { Event createEvent = new CreateGroupEvent(uuidMock(0), "A", uuidMock(1), - GroupType.PUBLIC); + Type.PUBLIC); Event deleteEvent = new DeleteGroupEvent(uuidMock(0), "A"); Group group = TestBuilder.apply(createEvent, deleteEvent); diff --git a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java index 03093b3..fab546c 100644 --- a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.event; import mops.gruppen2.TestBuilder; -import mops.gruppen2.domain.Group; import mops.gruppen2.domain.exception.UserNotFoundException; +import mops.gruppen2.domain.model.Group; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.addUserEvent; diff --git a/src/test/java/mops/gruppen2/domain/event/EventTest.java b/src/test/java/mops/gruppen2/domain/event/EventTest.java index dd906fb..f84d5a1 100644 --- a/src/test/java/mops/gruppen2/domain/event/EventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/EventTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.event; import mops.gruppen2.TestBuilder; -import mops.gruppen2.domain.Group; import mops.gruppen2.domain.exception.GroupIdMismatchException; +import mops.gruppen2.domain.model.Group; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.createPublicGroupEvent; diff --git a/src/test/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEventTest.java b/src/test/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEventTest.java index e03c3a0..ea61295 100644 --- a/src/test/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEventTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.event; import mops.gruppen2.TestBuilder; -import mops.gruppen2.domain.Group; import mops.gruppen2.domain.exception.BadParameterException; +import mops.gruppen2.domain.model.Group; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.createPublicGroupEvent; diff --git a/src/test/java/mops/gruppen2/domain/event/UpdateGroupTitleEventTest.java b/src/test/java/mops/gruppen2/domain/event/UpdateGroupTitleEventTest.java index 19187ea..497d5e7 100644 --- a/src/test/java/mops/gruppen2/domain/event/UpdateGroupTitleEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/UpdateGroupTitleEventTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.event; import mops.gruppen2.TestBuilder; -import mops.gruppen2.domain.Group; import mops.gruppen2.domain.exception.BadParameterException; +import mops.gruppen2.domain.model.Group; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.createPublicGroupEvent; diff --git a/src/test/java/mops/gruppen2/domain/event/UpdateRoleEventTest.java b/src/test/java/mops/gruppen2/domain/event/UpdateRoleEventTest.java index 3950484..fee6206 100644 --- a/src/test/java/mops/gruppen2/domain/event/UpdateRoleEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/UpdateRoleEventTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.event; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.Role; import mops.gruppen2.domain.exception.UserNotFoundException; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Role; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.addUserEvent; diff --git a/src/test/java/mops/gruppen2/domain/event/UpdateUserLimitEventTest.java b/src/test/java/mops/gruppen2/domain/event/UpdateUserLimitEventTest.java index d7f3747..64bdced 100644 --- a/src/test/java/mops/gruppen2/domain/event/UpdateUserLimitEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/UpdateUserLimitEventTest.java @@ -1,7 +1,7 @@ package mops.gruppen2.domain.event; -import mops.gruppen2.domain.Group; import mops.gruppen2.domain.exception.BadParameterException; +import mops.gruppen2.domain.model.Group; import org.junit.jupiter.api.Test; import static mops.gruppen2.TestBuilder.addUserEvent; diff --git a/src/test/java/mops/gruppen2/domain/service/EventStoreServiceTest.java b/src/test/java/mops/gruppen2/domain/service/EventStoreServiceTest.java index ee044da..b943017 100644 --- a/src/test/java/mops/gruppen2/domain/service/EventStoreServiceTest.java +++ b/src/test/java/mops/gruppen2/domain/service/EventStoreServiceTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.domain.service; import mops.gruppen2.Gruppen2Application; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.event.Event; +import mops.gruppen2.domain.model.User; import mops.gruppen2.persistance.EventRepository; import mops.gruppen2.persistance.dto.EventDTO; import org.junit.jupiter.api.BeforeEach; diff --git a/src/test/java/mops/gruppen2/domain/service/GroupServiceTest.java b/src/test/java/mops/gruppen2/domain/service/GroupServiceTest.java index 3c37870..abfb15d 100644 --- a/src/test/java/mops/gruppen2/domain/service/GroupServiceTest.java +++ b/src/test/java/mops/gruppen2/domain/service/GroupServiceTest.java @@ -2,10 +2,10 @@ package mops.gruppen2.domain.service; import mops.gruppen2.Gruppen2Application; import mops.gruppen2.TestBuilder; -import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; -import mops.gruppen2.domain.User; import mops.gruppen2.domain.event.Event; +import mops.gruppen2.domain.model.Group; +import mops.gruppen2.domain.model.Type; +import mops.gruppen2.domain.model.User; import mops.gruppen2.persistance.EventRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; @@ -83,7 +83,7 @@ class GroupServiceTest { assertThat(groups).hasSize(1); assertThat(groups.get(0).getMembers()).hasSize(5); - assertThat(groups.get(0).getType()).isEqualTo(GroupType.PRIVATE); + assertThat(groups.get(0).getType()).isEqualTo(Type.PRIVATE); } //TODO: ProjectionServiceTest