From 42c38a630f0d3ef3ad3575a9f400f79692c22d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20K=C3=A4sler?= <tom.kaesler@mni.thm.de> Date: Mon, 13 Aug 2018 11:41:52 +0200 Subject: [PATCH] put content without group in a no-name contentgroup when querying a room --- .../thm/arsnova/service/RoomServiceImpl.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java b/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java index 5546c98c6..6df577940 100644 --- a/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java +++ b/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java @@ -59,6 +59,9 @@ import java.util.Comparator; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; +import java.util.Map; +import java.util.Set; +import java.util.HashSet; /** * Performs all room related operations. @@ -165,6 +168,35 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R } } + /** + * Fetches the room. + * Adds content from this room that is in no content group to a no-name group. + * @param id room id to fetch + * @return Room with no-name content group + */ + @Override + public Room get(final String id) { + Room r = super.get(id); + // creates a set from all room content groups + Set<String> cIdsWithGroup = r.getContentGroups().values().stream() + .map(Room.ContentGroup::getContentIds) + .flatMap(ids -> ids.stream()) + .collect(Collectors.toSet()); + + Set<String> cIds = new HashSet<String>(contentRepository.findIdsByRoomId(id)); + cIds.removeAll(cIdsWithGroup); + + if (!cIds.isEmpty()) { + Map<String, Room.ContentGroup> cgs = r.getContentGroups(); + Room.ContentGroup defaultGroup = new Room.ContentGroup(); + defaultGroup.setContentIds(cIds); + defaultGroup.setAutoSort(true); + cgs.put("", defaultGroup); + } + + return r; + } + @Override public Room join(final String id, final UUID socketId) { Room room = null != id ? roomRepository.findOne(id) : null; -- GitLab