renaming
This commit is contained in:
@ -10,14 +10,14 @@ import mops.gruppen2.domain.exception.LastAdminException;
|
||||
import mops.gruppen2.domain.exception.NoAccessException;
|
||||
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
|
||||
import mops.gruppen2.domain.exception.UserNotFoundException;
|
||||
import mops.gruppen2.domain.helper.CommonHelper;
|
||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Body;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Description;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Limit;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Link;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Parent;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Title;
|
||||
import mops.gruppen2.domain.service.helper.CommonHelper;
|
||||
import mops.gruppen2.domain.service.helper.ValidationHelper;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.time.LocalDateTime;
|
||||
|
@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.ToString;
|
||||
import lombok.Value;
|
||||
import mops.gruppen2.domain.helper.CommonHelper;
|
||||
import mops.gruppen2.domain.service.helper.CommonHelper;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
@ -3,7 +3,6 @@ package mops.gruppen2.domain.service;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||
import mops.gruppen2.domain.event.AddMemberEvent;
|
||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
@ -11,9 +10,9 @@ import mops.gruppen2.domain.event.EventType;
|
||||
import mops.gruppen2.domain.event.SetTypeEvent;
|
||||
import mops.gruppen2.domain.exception.BadPayloadException;
|
||||
import mops.gruppen2.domain.exception.InvalidInviteException;
|
||||
import mops.gruppen2.domain.helper.CommonHelper;
|
||||
import mops.gruppen2.domain.helper.JsonHelper;
|
||||
import mops.gruppen2.domain.model.group.Type;
|
||||
import mops.gruppen2.domain.service.helper.CommonHelper;
|
||||
import mops.gruppen2.domain.service.helper.JsonHelper;
|
||||
import mops.gruppen2.persistance.EventRepository;
|
||||
import mops.gruppen2.persistance.dto.EventDTO;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -29,13 +28,12 @@ import static mops.gruppen2.domain.event.EventType.CREATEGROUP;
|
||||
import static mops.gruppen2.domain.event.EventType.DESTROYGROUP;
|
||||
import static mops.gruppen2.domain.event.EventType.SETLINK;
|
||||
import static mops.gruppen2.domain.event.EventType.SETTYPE;
|
||||
import static mops.gruppen2.domain.helper.CommonHelper.eventTypesToString;
|
||||
import static mops.gruppen2.domain.helper.CommonHelper.uuidsToString;
|
||||
import static mops.gruppen2.domain.service.helper.CommonHelper.eventTypesToString;
|
||||
import static mops.gruppen2.domain.service.helper.CommonHelper.uuidsToString;
|
||||
|
||||
@Log4j2
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
@TraceMethodCalls
|
||||
public class EventStoreService {
|
||||
|
||||
private final EventRepository eventStore;
|
||||
@ -301,4 +299,8 @@ public class EventStoreService {
|
||||
private List<Event> findLatestEventsFromGroupsByType(EventType... types) {
|
||||
return getEventsFromDTOs(eventStore.findLatestEventDTOsPartitionedByGroupByType(Arrays.asList(eventTypesToString(types))));
|
||||
}
|
||||
|
||||
public List<Event> findAllEvents() {
|
||||
return getEventsFromDTOs(eventStore.findAllEvents());
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package mops.gruppen2.domain.service;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||
import mops.gruppen2.domain.event.AddMemberEvent;
|
||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||
import mops.gruppen2.domain.event.DestroyGroupEvent;
|
||||
@ -16,7 +15,6 @@ import mops.gruppen2.domain.event.SetTitleEvent;
|
||||
import mops.gruppen2.domain.event.SetTypeEvent;
|
||||
import mops.gruppen2.domain.event.UpdateRoleEvent;
|
||||
import mops.gruppen2.domain.exception.EventException;
|
||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
import mops.gruppen2.domain.model.group.Role;
|
||||
import mops.gruppen2.domain.model.group.Type;
|
||||
@ -26,6 +24,7 @@ import mops.gruppen2.domain.model.group.wrapper.Limit;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Link;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Parent;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Title;
|
||||
import mops.gruppen2.domain.service.helper.ValidationHelper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
@ -37,7 +36,6 @@ import java.util.UUID;
|
||||
* Es werden übergebene Gruppen bearbeitet und dementsprechend Events erzeugt und gespeichert.
|
||||
*/
|
||||
@Log4j2
|
||||
@TraceMethodCalls
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class GroupService {
|
||||
|
@ -5,8 +5,8 @@ import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
import mops.gruppen2.domain.exception.EventException;
|
||||
import mops.gruppen2.domain.exception.GroupNotFoundException;
|
||||
import mops.gruppen2.domain.helper.CommonHelper;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
import mops.gruppen2.domain.service.helper.CommonHelper;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -62,12 +62,12 @@ public class ProjectionService {
|
||||
*
|
||||
* @throws EventException Projektionsfehler
|
||||
*/
|
||||
public static List<Group> projectGroupsByEvents(List<Event> events) throws EventException {
|
||||
public static Map<UUID, Group> projectGroupsByEvents(List<Event> events) throws EventException {
|
||||
Map<UUID, Group> groupMap = new HashMap<>();
|
||||
|
||||
events.forEach(event -> event.apply(getOrCreateGroup(groupMap, event.getGroupid())));
|
||||
|
||||
return new ArrayList<>(groupMap.values());
|
||||
return groupMap;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -91,6 +91,10 @@ public class ProjectionService {
|
||||
// ############################### PROJEKTIONEN MIT DATENBANK ################################
|
||||
|
||||
|
||||
public Map<UUID, Group> projectAllGroups() {
|
||||
return projectGroupsByEvents(eventStoreService.findAllEvents());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die Gruppe zurück, die zu der übergebenen Id passt.
|
||||
* Enthält alle verfügbaren Informationen, also auch User (langsam).
|
||||
@ -120,7 +124,7 @@ public class ProjectionService {
|
||||
return projectGroupById(parent);
|
||||
}
|
||||
|
||||
public List<Group> projectGroupsByIds(List<UUID> groupids) {
|
||||
public Map<UUID, Group> projectGroupsByIds(List<UUID> groupids) {
|
||||
List<Event> events = eventStoreService.findGroupEvents(groupids);
|
||||
|
||||
return projectGroupsByEvents(events);
|
||||
@ -137,7 +141,7 @@ public class ProjectionService {
|
||||
public List<Group> projectChangedGroups(long status) {
|
||||
List<UUID> changedids = eventStoreService.findChangedGroups(status);
|
||||
|
||||
return projectGroupsByIds(changedids);
|
||||
return new ArrayList<>(projectGroupsByIds(changedids).values());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -157,7 +161,7 @@ public class ProjectionService {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return projectGroupsByIds(groupIds);
|
||||
return new ArrayList<>(projectGroupsByIds(groupIds).values());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -174,7 +178,7 @@ public class ProjectionService {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return projectGroupsByIds(groupIds);
|
||||
return new ArrayList<>(projectGroupsByIds(groupIds).values());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -193,7 +197,7 @@ public class ProjectionService {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return projectGroupsByIds(groupIds);
|
||||
return new ArrayList<>(projectGroupsByIds(groupIds).values());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,6 @@
|
||||
package mops.gruppen2.domain.service;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.domain.exception.EventException;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
@ -11,15 +12,12 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Log4j2
|
||||
public class SearchService {
|
||||
|
||||
private final ProjectionService projectionService;
|
||||
|
||||
public SearchService(ProjectionService projectionService) {
|
||||
this.projectionService = projectionService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filtert alle öffentliche Gruppen nach dem Suchbegriff und gibt diese als sortierte Liste zurück.
|
||||
* Groß- und Kleinschreibung wird nicht beachtet.
|
||||
|
@ -1,10 +1,10 @@
|
||||
package mops.gruppen2.domain.helper;
|
||||
package mops.gruppen2.domain.service.helper;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
import mops.gruppen2.web.api.GroupRequestWrapper;
|
||||
import mops.gruppen2.infrastructure.api.GroupRequestWrapper;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.domain.helper;
|
||||
package mops.gruppen2.domain.service.helper;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.domain.helper;
|
||||
package mops.gruppen2.domain.service.helper;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectReader;
|
||||
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
|
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.domain.helper;
|
||||
package mops.gruppen2.domain.service.helper;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.domain.helper;
|
||||
package mops.gruppen2.domain.service.helper;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.web;
|
||||
package mops.gruppen2.infrastructure;
|
||||
|
||||
import mops.gruppen2.domain.Account;
|
||||
import mops.gruppen2.domain.model.group.Role;
|
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.web.api;
|
||||
package mops.gruppen2.infrastructure.api;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.web;
|
||||
package mops.gruppen2.infrastructure.controller;
|
||||
|
||||
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@ -6,12 +6,12 @@ import io.swagger.annotations.ApiParam;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||
import mops.gruppen2.domain.helper.APIHelper;
|
||||
import mops.gruppen2.domain.helper.CommonHelper;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
import mops.gruppen2.domain.service.EventStoreService;
|
||||
import mops.gruppen2.domain.service.ProjectionService;
|
||||
import mops.gruppen2.web.api.GroupRequestWrapper;
|
||||
import mops.gruppen2.domain.service.helper.APIHelper;
|
||||
import mops.gruppen2.domain.service.helper.CommonHelper;
|
||||
import mops.gruppen2.infrastructure.api.GroupRequestWrapper;
|
||||
import org.springframework.security.access.annotation.Secured;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
@ -1,10 +1,8 @@
|
||||
package mops.gruppen2.web;
|
||||
package mops.gruppen2.infrastructure.controller;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||
import mops.gruppen2.domain.helper.CsvHelper;
|
||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
import mops.gruppen2.domain.model.group.Type;
|
||||
import mops.gruppen2.domain.model.group.User;
|
||||
@ -14,6 +12,8 @@ import mops.gruppen2.domain.model.group.wrapper.Parent;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Title;
|
||||
import mops.gruppen2.domain.service.GroupService;
|
||||
import mops.gruppen2.domain.service.ProjectionService;
|
||||
import mops.gruppen2.domain.service.helper.CsvHelper;
|
||||
import mops.gruppen2.domain.service.helper.ValidationHelper;
|
||||
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.stereotype.Controller;
|
@ -1,10 +1,8 @@
|
||||
package mops.gruppen2.web;
|
||||
package mops.gruppen2.infrastructure.controller;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||
import mops.gruppen2.domain.helper.CsvHelper;
|
||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
import mops.gruppen2.domain.model.group.User;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Description;
|
||||
@ -12,6 +10,8 @@ import mops.gruppen2.domain.model.group.wrapper.Limit;
|
||||
import mops.gruppen2.domain.model.group.wrapper.Title;
|
||||
import mops.gruppen2.domain.service.GroupService;
|
||||
import mops.gruppen2.domain.service.ProjectionService;
|
||||
import mops.gruppen2.domain.service.helper.CsvHelper;
|
||||
import mops.gruppen2.domain.service.helper.ValidationHelper;
|
||||
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.stereotype.Controller;
|
@ -1,4 +1,4 @@
|
||||
package mops.gruppen2.web;
|
||||
package mops.gruppen2.infrastructure.controller;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
@ -1,13 +1,13 @@
|
||||
package mops.gruppen2.web;
|
||||
package mops.gruppen2.infrastructure.controller;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
import mops.gruppen2.domain.model.group.Type;
|
||||
import mops.gruppen2.domain.service.ProjectionService;
|
||||
import mops.gruppen2.domain.service.SearchService;
|
||||
import mops.gruppen2.domain.service.helper.ValidationHelper;
|
||||
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
@ -13,6 +13,7 @@ public interface EventRepository extends CrudRepository<EventDTO, Long> {
|
||||
|
||||
// ####################################### GROUP IDs #########################################
|
||||
|
||||
|
||||
/*@Query("SELECT DISTINCT group_id FROM event"
|
||||
+ " WHERE user_id = :userId AND event_type = :type")
|
||||
List<String> findGroupIdsByUserAndType(@Param("userId") String userId,
|
||||
@ -22,8 +23,13 @@ public interface EventRepository extends CrudRepository<EventDTO, Long> {
|
||||
+ " WHERE event_id > :status")
|
||||
List<String> findGroupIdsWhereEventIdGreaterThanStatus(@Param("status") long status);
|
||||
|
||||
|
||||
// ####################################### EVENT DTOs ########################################
|
||||
|
||||
|
||||
@Query("SELECT * FROM event")
|
||||
List<EventDTO> findAllEvents();
|
||||
|
||||
@Query("SELECT * FROM event"
|
||||
+ " WHERE group_id IN (:groupIds) ")
|
||||
List<EventDTO> findEventDTOsByGroup(@Param("groupIds") List<String> groupIds);
|
||||
@ -48,6 +54,7 @@ public interface EventRepository extends CrudRepository<EventDTO, Long> {
|
||||
|
||||
// ################################ LATEST EVENT DTOs ########################################
|
||||
|
||||
|
||||
@Query("WITH ranked_events AS ("
|
||||
+ "SELECT *, ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY event_id DESC) AS rn"
|
||||
+ " FROM event"
|
||||
|
Reference in New Issue
Block a user