1

fix pmd warnings

This commit is contained in:
Christoph
2020-04-12 18:38:07 +02:00
parent ab1afa46ce
commit 22caf9ad83
23 changed files with 98 additions and 125 deletions

View File

@ -1,11 +1,9 @@
import com.github.spotbugs.SpotBugsTask
plugins { plugins {
id 'org.springframework.boot' version '2.2.5.RELEASE' id 'org.springframework.boot' version '2.2.5.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java' id 'java'
id 'com.github.spotbugs' version '3.0.0' id 'com.github.spotbugs' version '4.0.1'
id 'checkstyle' id 'checkstyle'
id 'pmd' id 'pmd'
} }
@ -14,30 +12,39 @@ group = 'mops'
version = '0.0.1-SNAPSHOT' version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11' sourceCompatibility = '11'
repositories {
maven {
url = 'https://s3.cs.hhu.de/public/mops/'
metadataSources {
artifact()
}
}
mavenCentral()
}
spotbugs { spotbugs {
toolVersion = '4.0.1'
ignoreFailures = false ignoreFailures = false
reportLevel = "high" reportLevel = "high"
effort = "max" effort = "max"
toolVersion = '4.0.0-RC1' showProgress = true
} }
tasks.withType(SpotBugsTask) { spotbugsMain {
reports { reports {
xml.enabled = false html {
html.enabled = true enabled = true
}
} }
} }
pmd { pmd {
consoleOutput = true consoleOutput = true
ignoreFailures = true ignoreFailures = true
toolVersion = "6.21.0" toolVersion = "6.22.0"
rulePriority = 5 rulePriority = 5
ruleSets = ["category/java/errorprone.xml", ruleSetFiles = files("config/pmd/ruleset.xml")
"category/java/bestpractices.xml", ruleSets = []
"category/java/security.xml",
"category/java/performance.xml",
"category/java/design.xml"]
} }
checkstyle { checkstyle {
@ -56,16 +63,6 @@ configurations {
} }
} }
repositories {
maven {
url = 'https://s3.cs.hhu.de/public/mops/'
metadataSources {
artifact()
}
}
mavenCentral()
}
dependencies { dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'

View File

@ -19,7 +19,7 @@
<rule ref="category/java/bestpractices.xml/ConstantsInInterface"/> <rule ref="category/java/bestpractices.xml/ConstantsInInterface"/>
<rule ref="category/java/bestpractices.xml/DefaultLabelNotLastInSwitchStmt"/> <rule ref="category/java/bestpractices.xml/DefaultLabelNotLastInSwitchStmt"/>
<rule ref="category/java/bestpractices.xml/ForLoopCanBeForeach"/> <rule ref="category/java/bestpractices.xml/ForLoopCanBeForeach"/>
<rule ref="category/java/bestpractices.xml/GuardLogStatement"/> <!-- <rule ref="category/java/bestpractices.xml/GuardLogStatement"/>-->
<!-- <rule ref="category/java/bestpractices.xml/JUnit4SuitesShouldUseSuiteAnnotation" /> --> <!-- <rule ref="category/java/bestpractices.xml/JUnit4SuitesShouldUseSuiteAnnotation" /> -->
<!-- <rule ref="category/java/bestpractices.xml/JUnit4TestShouldUseAfterAnnotation" /> --> <!-- <rule ref="category/java/bestpractices.xml/JUnit4TestShouldUseAfterAnnotation" /> -->
<!-- <rule ref="category/java/bestpractices.xml/JUnit4TestShouldUseBeforeAnnotation" /> --> <!-- <rule ref="category/java/bestpractices.xml/JUnit4TestShouldUseBeforeAnnotation" /> -->
@ -150,7 +150,7 @@
<rule ref="category/java/design.xml/FinalFieldCouldBeStatic"/> <rule ref="category/java/design.xml/FinalFieldCouldBeStatic"/>
<!-- <rule ref="category/java/design.xml/GodClass" /> --> <!-- <rule ref="category/java/design.xml/GodClass" /> -->
<!-- <rule ref="category/java/design.xml/ImmutableField" /> --> <!-- <rule ref="category/java/design.xml/ImmutableField" /> -->
<rule ref="category/java/design.xml/LawOfDemeter"/> <!-- <rule ref="category/java/design.xml/LawOfDemeter"/>-->
<rule ref="category/java/design.xml/LogicInversion"/> <rule ref="category/java/design.xml/LogicInversion"/>
<rule ref="category/java/design.xml/CyclomaticComplexity"/> <rule ref="category/java/design.xml/CyclomaticComplexity"/>
@ -298,7 +298,7 @@
<rule ref="category/java/multithreading.xml/DontCallThreadRun"/> <rule ref="category/java/multithreading.xml/DontCallThreadRun"/>
<rule ref="category/java/multithreading.xml/DoubleCheckedLocking"/> <rule ref="category/java/multithreading.xml/DoubleCheckedLocking"/>
<rule ref="category/java/multithreading.xml/NonThreadSafeSingleton"/> <rule ref="category/java/multithreading.xml/NonThreadSafeSingleton"/>
<rule ref="category/java/multithreading.xml/UnsynchronizedStaticDateFormatter"/> <!-- <rule ref="category/java/multithreading.xml/UnsynchronizedStaticDateFormatter"/>-->
<!-- <rule ref="category/java/multithreading.xml/UseConcurrentHashMap" /> --> <!-- <rule ref="category/java/multithreading.xml/UseConcurrentHashMap" /> -->
<rule ref="category/java/multithreading.xml/UseNotifyAllInsteadOfNotify"/> <rule ref="category/java/multithreading.xml/UseNotifyAllInsteadOfNotify"/>

View File

@ -1,20 +0,0 @@
# Bei "schicht" können Sie 'vormittags', 'nachmittags' oder 'egal' eintragen.
gruppe: IT-Bois
url: https://github.com/hhu-propra2/abschlussprojekt-it-bois
names:
- killerber4t
- tomvahl
- AndiBuls
- XXNitram
- LukasEttel
- Mahgs
- ChUrl
- kasch309
notebook: true
schicht: nachmittags
projektauswahl:
- Gruppenbildung
- Punkteübersicht
- Materialsammlung
- Korrektorinnen Bewerbung

View File

@ -55,7 +55,7 @@ public class LogAspect {
joinPoint.proceed(); joinPoint.proceed();
long stop = System.currentTimeMillis(); long stop = System.currentTimeMillis();
log.trace("Ausführungsdauer: {} Millis", (stop - start)); log.trace("Ausführungsdauer: {} Millis", stop - start);
return joinPoint.proceed(); return joinPoint.proceed();
} }

View File

@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* Schreibt eine benutzerdefinierte Nachricht in den Trace-Stream bei Methodenaufruf * Schreibt eine benutzerdefinierte Nachricht in den Trace-Stream bei Methodenaufruf.
*/ */
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)

View File

@ -7,7 +7,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* Schreibt die Methodenausführdauer in den Trace-Stream * Schreibt die Methodenausführdauer in den Trace-Stream.
*/ */
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)

View File

@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* Schreibt eine Nachricht bei Methodenausführung in den Trace-Stream * Schreibt eine Nachricht bei Methodenausführung in den Trace-Stream.
*/ */
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)

View File

@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* Schreibt eine Nachricht für jede ausgeführte Methode einer Klasse in den Trace-Stream * Schreibt eine Nachricht für jede ausgeführte Methode einer Klasse in den Trace-Stream.
*/ */
@Target(ElementType.TYPE) @Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)

View File

@ -1,17 +1,15 @@
package mops.gruppen2.domain.service; package mops.gruppen2.domain.helper;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.web.api.GroupRequestWrapper; import mops.gruppen2.web.api.GroupRequestWrapper;
import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@Service
@Log4j2 @Log4j2
public class APIService { public final class APIHelper {
private APIService() {} private APIHelper() {}
public static GroupRequestWrapper wrap(long status, List<Group> groupList) { public static GroupRequestWrapper wrap(long status, List<Group> groupList) {
return new GroupRequestWrapper(status, groupList); return new GroupRequestWrapper(status, groupList);

View File

@ -1,4 +1,4 @@
package mops.gruppen2.domain.service; package mops.gruppen2.domain.helper;
import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.dataformat.csv.CsvMapper; import com.fasterxml.jackson.dataformat.csv.CsvMapper;
@ -7,7 +7,6 @@ import lombok.extern.log4j.Log4j2;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.EventException;
import mops.gruppen2.domain.exception.WrongFileException; import mops.gruppen2.domain.exception.WrongFileException;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
@ -16,11 +15,10 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service
@Log4j2 @Log4j2
public final class CsvService { public final class CsvHelper {
private CsvService() {} private CsvHelper() {}
public static List<User> readCsvFile(MultipartFile file) throws EventException { public static List<User> readCsvFile(MultipartFile file) throws EventException {
if (file == null || file.isEmpty()) { if (file == null || file.isEmpty()) {

View File

@ -1,21 +1,19 @@
package mops.gruppen2.domain.service; package mops.gruppen2.domain.helper;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service
@Log4j2 @Log4j2
public final class IdService { public final class IdHelper {
private IdService() {} private IdHelper() {}
public static List<UUID> stringsToUUID(List<String> groupIds) { public static List<UUID> stringsToUUID(List<String> groupIds) {
return groupIds.stream() return groupIds.stream()
.map(IdService::stringToUUID) .map(IdHelper::stringToUUID)
.collect(Collectors.toList()); .collect(Collectors.toList());
} }

View File

@ -1,19 +1,17 @@
package mops.gruppen2.domain.service; package mops.gruppen2.domain.helper;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.event.Event;
import org.springframework.stereotype.Service;
/** /**
* Übersetzt JSON-Event-Payloads zu Java-Event-Repräsentationen und zurück. * Übersetzt JSON-Event-Payloads zu Java-Event-Repräsentationen und zurück.
*/ */
@Service
@Log4j2 @Log4j2
public final class JsonService { public final class JsonHelper {
private JsonService() {} private JsonHelper() {}
/** /**
* Übersetzt eine Java-Event-Repräsentation zu einem JSON-Event-Payload. * Übersetzt eine Java-Event-Repräsentation zu einem JSON-Event-Payload.
@ -25,7 +23,7 @@ public final class JsonService {
* @throws JsonProcessingException Bei JSON Fehler * @throws JsonProcessingException Bei JSON Fehler
*/ */
static String serializeEvent(Event event) throws JsonProcessingException { public static String serializeEvent(Event event) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(event); return mapper.writeValueAsString(event);
} }
@ -39,7 +37,7 @@ public final class JsonService {
* *
* @throws JsonProcessingException Bei JSON Fehler * @throws JsonProcessingException Bei JSON Fehler
*/ */
static Event deserializeEvent(String json) throws JsonProcessingException { public static Event deserializeEvent(String json) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(json, Event.class); return mapper.readValue(json, Event.class);
} }

View File

@ -1,4 +1,4 @@
package mops.gruppen2.domain.service; package mops.gruppen2.domain.helper;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
@ -12,15 +12,13 @@ import mops.gruppen2.domain.exception.UserAlreadyExistsException;
import mops.gruppen2.domain.exception.UserNotFoundException; import mops.gruppen2.domain.exception.UserNotFoundException;
import mops.gruppen2.web.form.CreateForm; import mops.gruppen2.web.form.CreateForm;
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
import org.springframework.stereotype.Service;
import static mops.gruppen2.domain.Role.ADMIN; import static mops.gruppen2.domain.Role.ADMIN;
@Service
@Log4j2 @Log4j2
public final class ValidationService { public final class ValidationHelper {
private ValidationService() {} private ValidationHelper() {}
// ######################################## CHECK ############################################ // ######################################## CHECK ############################################

View File

@ -7,6 +7,8 @@ import mops.gruppen2.domain.event.AddUserEvent;
import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.domain.event.CreateGroupEvent;
import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.event.Event;
import mops.gruppen2.domain.exception.BadPayloadException; import mops.gruppen2.domain.exception.BadPayloadException;
import mops.gruppen2.domain.helper.IdHelper;
import mops.gruppen2.domain.helper.JsonHelper;
import mops.gruppen2.persistance.EventRepository; import mops.gruppen2.persistance.EventRepository;
import mops.gruppen2.persistance.dto.EventDTO; import mops.gruppen2.persistance.dto.EventDTO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -80,7 +82,7 @@ public class EventStoreService {
*/ */
static EventDTO getDTOFromEvent(Event event) { static EventDTO getDTOFromEvent(Event event) {
try { try {
String payload = JsonService.serializeEvent(event); String payload = JsonHelper.serializeEvent(event);
return new EventDTO(null, return new EventDTO(null,
event.getGroupId().toString(), event.getGroupId().toString(),
event.getUserId(), event.getUserId(),
@ -107,7 +109,7 @@ public class EventStoreService {
private static Event getEventFromDTO(EventDTO dto) { private static Event getEventFromDTO(EventDTO dto) {
try { try {
return JsonService.deserializeEvent(dto.getEvent_payload()); return JsonHelper.deserializeEvent(dto.getEvent_payload());
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
log.error("Payload {} konnte nicht deserialisiert werden!", dto.getEvent_payload(), e); log.error("Payload {} konnte nicht deserialisiert werden!", dto.getEvent_payload(), e);
throw new BadPayloadException(EventStoreService.class.toString()); throw new BadPayloadException(EventStoreService.class.toString());
@ -231,7 +233,7 @@ public class EventStoreService {
List<Event> findEventsByGroupAndType(List<UUID> groupIds, String... types) { List<Event> findEventsByGroupAndType(List<UUID> groupIds, String... types) {
return getEventsFromDTOs(eventStore.findEventDTOsByGroupAndType(Arrays.asList(types), return getEventsFromDTOs(eventStore.findEventDTOsByGroupAndType(Arrays.asList(types),
IdService.uuidsToString(groupIds))); IdHelper.uuidsToString(groupIds)));
} }
/** /**

View File

@ -15,6 +15,7 @@ import mops.gruppen2.domain.event.UpdateGroupTitleEvent;
import mops.gruppen2.domain.event.UpdateRoleEvent; import mops.gruppen2.domain.event.UpdateRoleEvent;
import mops.gruppen2.domain.event.UpdateUserLimitEvent; import mops.gruppen2.domain.event.UpdateUserLimitEvent;
import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.EventException;
import mops.gruppen2.domain.helper.ValidationHelper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -115,8 +116,8 @@ public class GroupService {
* @throws EventException Falls der User nicht gefunden wird * @throws EventException Falls der User nicht gefunden wird
*/ */
public void toggleMemberRole(User user, Group group) throws EventException { public void toggleMemberRole(User user, Group group) throws EventException {
ValidationService.throwIfNoMember(group, user); ValidationHelper.throwIfNoMember(group, user);
ValidationService.throwIfLastAdmin(user, group); ValidationHelper.throwIfLastAdmin(user, group);
Role role = group.getRoles().get(user.getId()); Role role = group.getRoles().get(user.getId());
updateRole(user, group, role.toggle()); updateRole(user, group, role.toggle());
@ -148,8 +149,8 @@ public class GroupService {
* Prüft, ob der Nutzer schon Mitglied ist und ob Gruppe voll ist. * Prüft, ob der Nutzer schon Mitglied ist und ob Gruppe voll ist.
*/ */
public void addUser(User user, Group group) { public void addUser(User user, Group group) {
ValidationService.throwIfMember(group, user); ValidationHelper.throwIfMember(group, user);
ValidationService.throwIfGroupFull(group); ValidationHelper.throwIfGroupFull(group);
Event event = new AddUserEvent(group, user); Event event = new AddUserEvent(group, user);
event.apply(group); event.apply(group);
@ -173,10 +174,10 @@ public class GroupService {
* Prüft, ob der Nutzer Mitglied ist und ob er der letzte Admin ist. * Prüft, ob der Nutzer Mitglied ist und ob er der letzte Admin ist.
*/ */
public void deleteUser(User user, Group group) throws EventException { public void deleteUser(User user, Group group) throws EventException {
ValidationService.throwIfNoMember(group, user); ValidationHelper.throwIfNoMember(group, user);
ValidationService.throwIfLastAdmin(user, group); ValidationHelper.throwIfLastAdmin(user, group);
if (ValidationService.checkIfGroupEmpty(group)) { if (ValidationHelper.checkIfGroupEmpty(group)) {
deleteGroup(user, group); deleteGroup(user, group);
} else { } else {
Event event = new DeleteUserEvent(group, user); Event event = new DeleteUserEvent(group, user);
@ -191,7 +192,7 @@ public class GroupService {
* Prüft, ob der Nutzer Admin ist. * Prüft, ob der Nutzer Admin ist.
*/ */
public void deleteGroup(User user, Group group) { public void deleteGroup(User user, Group group) {
ValidationService.throwIfNoAdmin(group, user); ValidationHelper.throwIfNoAdmin(group, user);
Event event = new DeleteGroupEvent(group, user); Event event = new DeleteGroupEvent(group, user);
event.apply(group); event.apply(group);
@ -206,7 +207,7 @@ public class GroupService {
* Bei keiner Änderung wird nichts erzeugt. * Bei keiner Änderung wird nichts erzeugt.
*/ */
public void updateTitle(User user, Group group, String title) { public void updateTitle(User user, Group group, String title) {
ValidationService.throwIfNoAdmin(group, user); ValidationHelper.throwIfNoAdmin(group, user);
if (title.trim().equals(group.getTitle())) { if (title.trim().equals(group.getTitle())) {
return; return;
@ -224,7 +225,7 @@ public class GroupService {
* Bei keiner Änderung wird nichts erzeugt. * Bei keiner Änderung wird nichts erzeugt.
*/ */
public void updateDescription(User user, Group group, String description) { public void updateDescription(User user, Group group, String description) {
ValidationService.throwIfNoAdmin(group, user); ValidationHelper.throwIfNoAdmin(group, user);
if (description.trim().equals(group.getDescription())) { if (description.trim().equals(group.getDescription())) {
return; return;
@ -242,7 +243,7 @@ public class GroupService {
* Bei keiner Änderung wird nichts erzeugt. * Bei keiner Änderung wird nichts erzeugt.
*/ */
private void updateRole(User user, Group group, Role role) { private void updateRole(User user, Group group, Role role) {
ValidationService.throwIfNoMember(group, user); ValidationHelper.throwIfNoMember(group, user);
if (role == group.getRoles().get(user.getId())) { if (role == group.getRoles().get(user.getId())) {
return; return;
@ -260,7 +261,7 @@ public class GroupService {
* Bei keiner Änderung wird nichts erzeugt. * Bei keiner Änderung wird nichts erzeugt.
*/ */
public void updateUserLimit(User user, Group group, long userLimit) { public void updateUserLimit(User user, Group group, long userLimit) {
ValidationService.throwIfNoAdmin(group, user); ValidationHelper.throwIfNoAdmin(group, user);
if (userLimit == group.getUserLimit()) { if (userLimit == group.getUserLimit()) {
return; return;

View File

@ -7,6 +7,7 @@ import mops.gruppen2.domain.User;
import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.event.Event;
import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.EventException;
import mops.gruppen2.domain.exception.GroupNotFoundException; import mops.gruppen2.domain.exception.GroupNotFoundException;
import mops.gruppen2.domain.helper.IdHelper;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -185,7 +186,7 @@ public class ProjectionService {
* @throws GroupNotFoundException Wenn die Gruppe nicht gefunden wird * @throws GroupNotFoundException Wenn die Gruppe nicht gefunden wird
*/ */
public Group projectSingleGroup(UUID groupId) throws GroupNotFoundException { public Group projectSingleGroup(UUID groupId) throws GroupNotFoundException {
if (IdService.isEmpty(groupId)) { if (IdHelper.isEmpty(groupId)) {
throw new GroupNotFoundException(groupId + ": " + ProjectionService.class); throw new GroupNotFoundException(groupId + ": " + ProjectionService.class);
} }
@ -202,7 +203,7 @@ public class ProjectionService {
* Projiziert eine einzelne Gruppe, welche leer sein darf. * Projiziert eine einzelne Gruppe, welche leer sein darf.
*/ */
public Group projectParent(UUID parentId) { public Group projectParent(UUID parentId) {
if (IdService.isEmpty(parentId)) { if (IdHelper.isEmpty(parentId)) {
return new Group(); return new Group();
} }

View File

@ -7,9 +7,9 @@ import lombok.extern.log4j.Log4j2;
import mops.gruppen2.aspect.annotation.TraceMethodCalls; import mops.gruppen2.aspect.annotation.TraceMethodCalls;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import mops.gruppen2.domain.service.APIService; import mops.gruppen2.domain.helper.APIHelper;
import mops.gruppen2.domain.helper.IdHelper;
import mops.gruppen2.domain.service.EventStoreService; import mops.gruppen2.domain.service.EventStoreService;
import mops.gruppen2.domain.service.IdService;
import mops.gruppen2.domain.service.ProjectionService; import mops.gruppen2.domain.service.ProjectionService;
import mops.gruppen2.web.api.GroupRequestWrapper; import mops.gruppen2.web.api.GroupRequestWrapper;
import org.springframework.security.access.annotation.Secured; import org.springframework.security.access.annotation.Secured;
@ -50,8 +50,8 @@ public class APIController {
public GroupRequestWrapper getApiUpdate(@ApiParam("Letzte gespeicherte EventId des Anfragestellers") public GroupRequestWrapper getApiUpdate(@ApiParam("Letzte gespeicherte EventId des Anfragestellers")
@PathVariable("id") long eventId) { @PathVariable("id") long eventId) {
return APIService.wrap(eventStoreService.findMaxEventId(), return APIHelper.wrap(eventStoreService.findMaxEventId(),
projectionService.projectNewGroups(eventId)); projectionService.projectNewGroups(eventId));
} }
/** /**
@ -63,7 +63,7 @@ public class APIController {
public List<String> getApiUserGroups(@ApiParam("Nutzer-Id") public List<String> getApiUserGroups(@ApiParam("Nutzer-Id")
@PathVariable("id") String userId) { @PathVariable("id") String userId) {
return IdService.uuidsToString(eventStoreService.findExistingUserGroups(new User(userId))); return IdHelper.uuidsToString(eventStoreService.findExistingUserGroups(new User(userId)));
} }
/** /**

View File

@ -4,11 +4,11 @@ import lombok.extern.log4j.Log4j2;
import mops.gruppen2.aspect.annotation.TraceMethodCalls; import mops.gruppen2.aspect.annotation.TraceMethodCalls;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import mops.gruppen2.domain.service.CsvService; import mops.gruppen2.domain.helper.CsvHelper;
import mops.gruppen2.domain.helper.IdHelper;
import mops.gruppen2.domain.helper.ValidationHelper;
import mops.gruppen2.domain.service.GroupService; import mops.gruppen2.domain.service.GroupService;
import mops.gruppen2.domain.service.IdService;
import mops.gruppen2.domain.service.ProjectionService; import mops.gruppen2.domain.service.ProjectionService;
import mops.gruppen2.domain.service.ValidationService;
import mops.gruppen2.web.form.CreateForm; import mops.gruppen2.web.form.CreateForm;
import mops.gruppen2.web.form.MetaForm; import mops.gruppen2.web.form.MetaForm;
import mops.gruppen2.web.form.UserLimitForm; import mops.gruppen2.web.form.UserLimitForm;
@ -56,7 +56,7 @@ public class GroupCreationController {
@Valid UserLimitForm limit) { @Valid UserLimitForm limit) {
// Zusätzlicher check: studentin kann keine lecture erstellen // Zusätzlicher check: studentin kann keine lecture erstellen
ValidationService.validateCreateForm(token, create); ValidationHelper.validateCreateForm(token, create);
User user = new User(token); User user = new User(token);
Group group = groupService.createGroup(user, Group group = groupService.createGroup(user,
@ -68,9 +68,9 @@ public class GroupCreationController {
// ROLE_studentin kann kein CSV importieren // ROLE_studentin kann kein CSV importieren
if (token.getAccount().getRoles().contains("orga")) { if (token.getAccount().getRoles().contains("orga")) {
groupService.addUsersToGroup(CsvService.readCsvFile(create.getFile()), group, user); groupService.addUsersToGroup(CsvHelper.readCsvFile(create.getFile()), group, user);
} }
return "redirect:/gruppen2/details/" + IdService.uuidToString(group.getId()); return "redirect:/gruppen2/details/" + IdHelper.uuidToString(group.getId());
} }
} }

View File

@ -4,12 +4,12 @@ import lombok.extern.log4j.Log4j2;
import mops.gruppen2.aspect.annotation.TraceMethodCalls; import mops.gruppen2.aspect.annotation.TraceMethodCalls;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import mops.gruppen2.domain.service.CsvService; import mops.gruppen2.domain.helper.CsvHelper;
import mops.gruppen2.domain.helper.IdHelper;
import mops.gruppen2.domain.helper.ValidationHelper;
import mops.gruppen2.domain.service.GroupService; import mops.gruppen2.domain.service.GroupService;
import mops.gruppen2.domain.service.IdService;
import mops.gruppen2.domain.service.InviteService; import mops.gruppen2.domain.service.InviteService;
import mops.gruppen2.domain.service.ProjectionService; import mops.gruppen2.domain.service.ProjectionService;
import mops.gruppen2.domain.service.ValidationService;
import mops.gruppen2.web.form.MetaForm; import mops.gruppen2.web.form.MetaForm;
import mops.gruppen2.web.form.UserLimitForm; import mops.gruppen2.web.form.UserLimitForm;
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
@ -63,7 +63,7 @@ public class GroupDetailsController {
model.addAttribute("parent", parent); model.addAttribute("parent", parent);
// Detailseite für nicht-Mitglieder // Detailseite für nicht-Mitglieder
if (!ValidationService.checkIfMember(group, user)) { if (!ValidationHelper.checkIfMember(group, user)) {
return "preview"; return "preview";
} }
@ -79,7 +79,7 @@ public class GroupDetailsController {
User user = new User(token); User user = new User(token);
Group group = projectionService.projectSingleGroup(UUID.fromString(groupId)); Group group = projectionService.projectSingleGroup(UUID.fromString(groupId));
if (ValidationService.checkIfMember(group, user)) { if (ValidationHelper.checkIfMember(group, user)) {
return "redirect:/gruppen2/details/" + groupId; return "redirect:/gruppen2/details/" + groupId;
} }
@ -97,7 +97,7 @@ public class GroupDetailsController {
User user = new User(token); User user = new User(token);
Group group = projectionService.projectSingleGroup(UUID.fromString(groupId)); Group group = projectionService.projectSingleGroup(UUID.fromString(groupId));
ValidationService.throwIfNoMember(group, user); ValidationHelper.throwIfNoMember(group, user);
groupService.deleteUser(user, group); groupService.deleteUser(user, group);
@ -119,7 +119,7 @@ public class GroupDetailsController {
String serverURL = actualURL.substring(0, actualURL.indexOf("gruppen2/")); String serverURL = actualURL.substring(0, actualURL.indexOf("gruppen2/"));
String link = serverURL + "gruppen2/join/" + inviteService.getLinkByGroup(group); String link = serverURL + "gruppen2/join/" + inviteService.getLinkByGroup(group);
ValidationService.throwIfNoAdmin(group, user); ValidationHelper.throwIfNoAdmin(group, user);
model.addAttribute("group", group); model.addAttribute("group", group);
model.addAttribute("link", link); model.addAttribute("link", link);
@ -165,9 +165,9 @@ public class GroupDetailsController {
@RequestParam(value = "file", required = false) MultipartFile file) { @RequestParam(value = "file", required = false) MultipartFile file) {
User user = new User(token); User user = new User(token);
Group group = projectionService.projectSingleGroup(IdService.stringToUUID(groupId)); Group group = projectionService.projectSingleGroup(IdHelper.stringToUUID(groupId));
groupService.addUsersToGroup(CsvService.readCsvFile(file), group, user); groupService.addUsersToGroup(CsvHelper.readCsvFile(file), group, user);
return "redirect:/gruppen2/details/" + groupId + "/edit"; return "redirect:/gruppen2/details/" + groupId + "/edit";
} }
@ -182,12 +182,12 @@ public class GroupDetailsController {
User user = new User(token); User user = new User(token);
Group group = projectionService.projectSingleGroup(UUID.fromString(groupId)); Group group = projectionService.projectSingleGroup(UUID.fromString(groupId));
ValidationService.throwIfNoAdmin(group, user); ValidationHelper.throwIfNoAdmin(group, user);
groupService.toggleMemberRole(new User(userId), group); groupService.toggleMemberRole(new User(userId), group);
// Falls sich der User selbst die Rechte genommen hat // Falls sich der User selbst die Rechte genommen hat
if (!ValidationService.checkIfAdmin(group, user)) { if (!ValidationHelper.checkIfAdmin(group, user)) {
return "redirect:/gruppen2/details/" + groupId; return "redirect:/gruppen2/details/" + groupId;
} }
@ -204,7 +204,7 @@ public class GroupDetailsController {
User user = new User(token); User user = new User(token);
Group group = projectionService.projectSingleGroup(UUID.fromString(groupId)); Group group = projectionService.projectSingleGroup(UUID.fromString(groupId));
ValidationService.throwIfNoAdmin(group, user); ValidationHelper.throwIfNoAdmin(group, user);
// Der eingeloggte User kann sich nicht selbst entfernen (er kann aber verlassen) // Der eingeloggte User kann sich nicht selbst entfernen (er kann aber verlassen)
if (!userId.equals(user.getId())) { if (!userId.equals(user.getId())) {

View File

@ -5,10 +5,10 @@ import mops.gruppen2.aspect.annotation.TraceMethodCalls;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.GroupType;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import mops.gruppen2.domain.helper.ValidationHelper;
import mops.gruppen2.domain.service.InviteService; import mops.gruppen2.domain.service.InviteService;
import mops.gruppen2.domain.service.ProjectionService; import mops.gruppen2.domain.service.ProjectionService;
import mops.gruppen2.domain.service.SearchService; import mops.gruppen2.domain.service.SearchService;
import mops.gruppen2.domain.service.ValidationService;
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
@ -79,7 +79,7 @@ public class SearchAndInviteController {
} }
// Bereits Mitglied // Bereits Mitglied
if (ValidationService.checkIfMember(group, user)) { if (ValidationHelper.checkIfMember(group, user)) {
return "redirect:/gruppen2/details/" + group.getId(); return "redirect:/gruppen2/details/" + group.getId();
} }

View File

@ -2,7 +2,7 @@ package mops.gruppen2.web.form;
import lombok.Data; import lombok.Data;
import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.GroupType;
import mops.gruppen2.domain.service.IdService; import mops.gruppen2.domain.helper.IdHelper;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -24,6 +24,6 @@ public class CreateForm {
} }
public UUID getParent() { public UUID getParent() {
return getType() == GroupType.LECTURE ? IdService.emptyUUID() : IdService.stringToUUID(parent); return getType() == GroupType.LECTURE ? IdHelper.emptyUUID() : IdHelper.stringToUUID(parent);
} }
} }

View File

@ -2,6 +2,7 @@ package mops.gruppen2.domain.service;
import mops.gruppen2.Gruppen2Application; import mops.gruppen2.Gruppen2Application;
import mops.gruppen2.domain.Account; import mops.gruppen2.domain.Account;
import mops.gruppen2.domain.helper.ValidationHelper;
import mops.gruppen2.persistance.EventRepository; import mops.gruppen2.persistance.EventRepository;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -23,7 +24,7 @@ class ControllerServiceTest {
@Autowired @Autowired
EventStoreService eventStoreService; EventStoreService eventStoreService;
@Autowired @Autowired
ValidationService validationService; ValidationHelper validationHelper;
@Autowired @Autowired
EventRepository eventRepository; EventRepository eventRepository;
@Autowired @Autowired

View File

@ -6,6 +6,7 @@ import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.GroupType;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.event.Event;
import mops.gruppen2.domain.helper.ValidationHelper;
import mops.gruppen2.persistance.EventRepository; import mops.gruppen2.persistance.EventRepository;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
@ -53,7 +54,7 @@ class GroupServiceTest {
@Autowired @Autowired
private EventStoreService eventStoreService; private EventStoreService eventStoreService;
@Autowired @Autowired
private ValidationService validationService; private ValidationHelper validationHelper;
@Autowired @Autowired
private InviteService inviteService; private InviteService inviteService;