Merge remote-tracking branch 'origin/master'
This commit is contained in:
@ -14,6 +14,6 @@ public class EventDTO {
|
||||
Long event_id;
|
||||
Long group_id;
|
||||
String user_id;
|
||||
String event_type;
|
||||
String event_payload;
|
||||
boolean visibility;
|
||||
}
|
||||
|
@ -20,9 +20,6 @@ public interface EventRepository extends CrudRepository<EventDTO, Long> {
|
||||
//@Query("SELECT * FROM event WHERE event_id > ?#{[0]}")
|
||||
//Iterable<EventDTO> findNewEventSinceStatus(@Param("status") Long status);
|
||||
|
||||
@Query("select distinct group_id from event where visibility =:vis")
|
||||
List<Long> findGroup_idsWhereVisibility(@Param("vis") Boolean visibility);
|
||||
|
||||
@Query("SELECT DISTINCT group_id FROM event WHERE event_id > :status")
|
||||
List<Long> findNewEventSinceStatus(@Param("status") Long status);
|
||||
|
||||
@ -34,4 +31,7 @@ public interface EventRepository extends CrudRepository<EventDTO, Long> {
|
||||
|
||||
@Query("SELECT MAX(group_id) FROM event")
|
||||
Long getMaxGroupID();
|
||||
|
||||
@Query("SELECT * FROM event WHERE event_type = :type")
|
||||
List<EventDTO> findAllEventsByType(@Param("type") String type);
|
||||
}
|
||||
|
@ -1,9 +1,7 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import mops.gruppen2.domain.Visibility;
|
||||
import mops.gruppen2.domain.dto.EventDTO;
|
||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
import mops.gruppen2.repository.EventRepository;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -40,11 +38,6 @@ public class EventService {
|
||||
* @return EventDTO Neues DTO
|
||||
*/
|
||||
public EventDTO getDTO(Event event) {
|
||||
boolean visibility = false;
|
||||
if (event instanceof CreateGroupEvent) {
|
||||
visibility = ((CreateGroupEvent) event).getGroupVisibility() == Visibility.PUBLIC;
|
||||
}
|
||||
|
||||
String payload = "";
|
||||
try {
|
||||
payload = jsonService.serializeEvent(event);
|
||||
@ -52,7 +45,13 @@ public class EventService {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return new EventDTO(null, event.getGroupId(), event.getUserId(), payload, visibility);
|
||||
return new EventDTO(null, event.getGroupId(), event.getUserId(), getEventType(event), payload);
|
||||
}
|
||||
|
||||
private String getEventType(Event event) {
|
||||
int lastDot = event.getClass().getName().lastIndexOf('.');
|
||||
|
||||
return event.getClass().getName().substring(lastDot + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,8 +1,6 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import mops.gruppen2.domain.Group;
|
||||
import mops.gruppen2.domain.GroupType;
|
||||
import mops.gruppen2.domain.User;
|
||||
import mops.gruppen2.domain.dto.EventDTO;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
import mops.gruppen2.domain.exception.EventException;
|
||||
@ -14,6 +12,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class GroupService {
|
||||
@ -52,10 +51,8 @@ public class GroupService {
|
||||
public List<Group> projectEventList(List<Event> events) throws EventException {
|
||||
Map<Long, Group> groupMap = new HashMap<>();
|
||||
|
||||
for (Event event : events) {
|
||||
Group group = getOrCreateGroup(groupMap, event.getGroupId());
|
||||
event.apply(group);
|
||||
}
|
||||
events.parallelStream()
|
||||
.forEachOrdered(event -> event.apply(getOrCreateGroup(groupMap, event.getGroupId())));
|
||||
|
||||
return new ArrayList<>(groupMap.values());
|
||||
}
|
||||
@ -68,13 +65,6 @@ public class GroupService {
|
||||
return groups.get(groupId);
|
||||
}
|
||||
|
||||
private List<Group> removeUserGroups(List<Group> visibleGroups, List<Group> userGroups) {
|
||||
for (Group group : userGroups) {
|
||||
visibleGroups.remove(group);
|
||||
}
|
||||
return visibleGroups;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sucht alle Zeilen in der DB mit visibility=true.
|
||||
* Erstellt eine Liste aus öffentlichen Gruppen (ohen bereits beigetretenen Gruppen).
|
||||
@ -83,33 +73,30 @@ public class GroupService {
|
||||
* @throws EventException Projektionsfehler
|
||||
*/
|
||||
public List<Group> getAllGroupWithVisibilityPublic(String userId) throws EventException {
|
||||
User user = new User(userId,null, null, null);
|
||||
List<Event> eventsVisible = eventService.translateEventDTOs(eventRepository.findAllEventsOfGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE)));
|
||||
List<Group> visibleGroups = projectEventList(eventsVisible);
|
||||
List<Event> eventsUser = getGroupEvents(eventRepository.findGroup_idsWhereUser_id(userId));
|
||||
List<Group> groups = projectEventList(eventsUser);
|
||||
List<Group> newGroups = new ArrayList<>();
|
||||
for (Group group : visibleGroups) {
|
||||
if (group.getMembers().contains(user)) {
|
||||
newGroups.add(group);
|
||||
}
|
||||
}
|
||||
return removeUserGroups(visibleGroups, newGroups);
|
||||
List<Event> createEvents = eventService.translateEventDTOs(eventRepository.findAllEventsByType("CreateGroupEvent"));
|
||||
createEvents.addAll(eventService.translateEventDTOs(eventRepository.findAllEventsByType("UpdateGroupDescriptionEvent")));
|
||||
createEvents.addAll(eventService.translateEventDTOs(eventRepository.findAllEventsByType("UpdateGroupTitleEvent")));
|
||||
createEvents.addAll(eventService.translateEventDTOs(eventRepository.findAllEventsByType("DeleteGroupEvent")));
|
||||
List<Group> visibleGroups = projectEventList(createEvents);
|
||||
|
||||
List<Long> userGroupIds = eventRepository.findGroup_idsWhereUser_id(userId);
|
||||
|
||||
return visibleGroups.parallelStream()
|
||||
.filter(group -> group.getType() != null)
|
||||
.filter(group -> !userGroupIds.contains(group.getId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
public List<Group> getAllLecturesWithVisibilityPublic() throws EventException {
|
||||
List<Event> eventsVisible = eventService.translateEventDTOs(eventRepository.findAllEventsOfGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE)));
|
||||
List<Group> visibleGroups = projectEventList(eventsVisible);
|
||||
List<Group> visibleLectures = new ArrayList<>();
|
||||
for (Group group : visibleGroups) {
|
||||
if(group.getType() == null){
|
||||
continue;
|
||||
}
|
||||
if (group.getType().equals(GroupType.LECTURE)) {
|
||||
visibleLectures.add(group);
|
||||
}
|
||||
}
|
||||
return visibleLectures;
|
||||
List<Event> createEvents = eventService.translateEventDTOs(eventRepository.findAllEventsByType("CreateGroupEvent"));
|
||||
createEvents.addAll(eventService.translateEventDTOs(eventRepository.findAllEventsByType("UpdateGroupTitleEvent")));
|
||||
|
||||
List<Group> visibleGroups = projectEventList(createEvents);
|
||||
|
||||
return visibleGroups.parallelStream()
|
||||
.filter(group -> group.getType() != null)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
@ -122,15 +109,11 @@ public class GroupService {
|
||||
* @throws EventException Projektionsfehler
|
||||
*/
|
||||
public List<Group> findGroupWith(String search, Account account) throws EventException {
|
||||
List<Group> groups = new ArrayList<>();
|
||||
for (Group group : getAllGroupWithVisibilityPublic(account.getName())) {
|
||||
if(group.getType() == null){
|
||||
continue;
|
||||
}
|
||||
if (group.getTitle().toLowerCase().contains(search.toLowerCase()) || group.getDescription().toLowerCase().contains(search.toLowerCase())) {
|
||||
groups.add(group);
|
||||
}
|
||||
}
|
||||
return groups;
|
||||
return getAllGroupWithVisibilityPublic(account.getName())
|
||||
.parallelStream()
|
||||
.filter(group ->
|
||||
group.getTitle().toLowerCase().contains(search.toLowerCase()) ||
|
||||
group.getDescription().toLowerCase().contains(search.toLowerCase()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
insert into event values
|
||||
(1,1,'orga','{"type":"CreateGroupEvent","groupId":1,"userId":"orga","groupVisibility":"PUBLIC","groupParent":null,"groupType":"SIMPLE","groupUserMaximum":2}', TRUE),
|
||||
(2,1,'orga','{"type":"AddUserEvent","groupId":1,"userId":"orga","givenname":"orga","familyname":"orga","email":"blorga@orga.org"}', FALSE),
|
||||
(3,1,'orga','{"type":"UpdateGroupTitleEvent","groupId":1,"userId":"orga","newGroupTitle":"sdsad"}', FALSE),
|
||||
(4,1,'orga','{"type":"UpdateGroupDescriptionEvent","groupId":1,"userId":"orga","newGroupDescription":"sadsad"}', FALSE),
|
||||
(5,1,'orga','{"type":"UpdateRoleEvent","groupId":1,"userId":"orga","newRole":"ADMIN"}', FALSE);
|
||||
(1,1,'orga','CreateGroupEvent','{"type":"CreateGroupEvent","groupId":1,"userId":"orga","groupVisibility":"PUBLIC","groupParent":null,"groupType":"SIMPLE","groupUserMaximum":2}'),
|
||||
(2,1,'orga','AddUserEvent','{"type":"AddUserEvent","groupId":1,"userId":"orga","givenname":"orga","familyname":"orga","email":"blorga@orga.org"}'),
|
||||
(3,1,'orga','UpdateGroupTitleEvent','{"type":"UpdateGroupTitleEvent","groupId":1,"userId":"orga","newGroupTitle":"sdsad"}'),
|
||||
(4,1,'orga','UpdateGroupDescriptionEvent','{"type":"UpdateGroupDescriptionEvent","groupId":1,"userId":"orga","newGroupDescription":"sadsad"}'),
|
||||
(5,1,'orga','UpdateRoleEvent','{"type":"UpdateRoleEvent","groupId":1,"userId":"orga","newRole":"ADMIN"}');
|
||||
|
@ -9,8 +9,8 @@ CREATE TABLE event
|
||||
event_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
group_id INT NOT NULL,
|
||||
user_id VARCHAR(50),
|
||||
event_payload VARCHAR(2500),
|
||||
visibility BOOLEAN
|
||||
event_type VARCHAR(50),
|
||||
event_payload VARCHAR(2500)
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS invite;
|
||||
|
@ -1,10 +1,6 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import mops.gruppen2.domain.GroupType;
|
||||
import mops.gruppen2.domain.Visibility;
|
||||
import mops.gruppen2.domain.dto.EventDTO;
|
||||
import mops.gruppen2.domain.event.AddUserEvent;
|
||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||
import mops.gruppen2.repository.EventRepository;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -15,8 +11,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ -54,7 +48,7 @@ class EventServiceTest {
|
||||
assertEquals(eventService.checkGroup(), 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
/*@Test
|
||||
void getDTOOffentlichTest() {
|
||||
CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), "test", null, GroupType.LECTURE, Visibility.PUBLIC, null);
|
||||
EventDTO eventDTO = eventService.getDTO(createGroupEvent);
|
||||
@ -66,6 +60,6 @@ class EventServiceTest {
|
||||
AddUserEvent addUserEvent = new AddUserEvent(eventService.checkGroup(), "test", "franz", "mueller", "a@a");
|
||||
EventDTO eventDTO = eventService.getDTO(addUserEvent);
|
||||
assertFalse(eventDTO.isVisibility());
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user