From 32fcbc5697305ee2a7840d1c8d3d11a22e67bd3e Mon Sep 17 00:00:00 2001 From: Daniel Vogel <daniel.vogel@mni.thm.de> Date: Mon, 12 Jan 2015 00:18:19 +0100 Subject: [PATCH] Get public pool sessions as grouped map --- .../arsnova/controller/SessionController.java | 5 ++-- .../java/de/thm/arsnova/dao/CouchDBDao.java | 25 ++++++++++--------- .../java/de/thm/arsnova/dao/IDatabaseDao.java | 4 ++- .../thm/arsnova/services/ISessionService.java | 4 ++- .../thm/arsnova/services/SessionService.java | 4 ++- .../de/thm/arsnova/dao/StubDatabaseDao.java | 2 +- 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 9b647c51..d09640cd 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -22,6 +22,7 @@ import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletResponse; @@ -192,10 +193,10 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/public_pool", method = RequestMethod.GET) - public final List<Session> getPublicPoolSessions( + public final Map<String, ArrayList<Session>> getPublicPoolSessions( final HttpServletResponse response ) { - List<Session> sessions; + Map<String, ArrayList<Session>> sessions; sessions = sessionService.getPublicPoolSessions(); if (sessions == null || sessions.isEmpty()) { diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 032e013e..171c39d6 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -130,22 +130,22 @@ public class CouchDBDao implements IDatabaseDao { } @Override - public final List<Session> getPublicPoolSessions() { + public final Map<String, ArrayList<Session>> getPublicPoolSessions() { + Map<String, ArrayList<Session>> sessionMap = new HashMap<String, ArrayList<Session>>(); final NovaView view = new NovaView("session/public_pool_by_id"); - + view.setGroup(true); final ViewResults sessions = getDatabase().view(view); - final List<Session> result = new ArrayList<Session>(); - - for (final Document d : sessions.getResults()) { - final Session session = (Session) JSONObject.toBean( - d.getJSONObject().getJSONObject("value"), - Session.class - ); - //session.set_id(d.getId()); - result.add(session); + //final List<Session> result = new ArrayList<Session>(); + Collection<Session> result = null; + for (Document d : sessions.getResults()) { + final JSONArray jsonSessions = d.getJSONObject().getJSONArray("value"); + + sessionMap.put( + d.getJSONObject().getString("key"), + new ArrayList(JSONArray.toCollection(jsonSessions, Session.class))); } - return result; + return sessionMap; } @Override @@ -337,6 +337,7 @@ public class CouchDBDao implements IDatabaseDao { @Override public final Session saveSession(final User user, final Session session) { final Document sessionDocument = new Document(); + sessionDocument.put("type", "session"); sessionDocument.put("name", session.getName()); sessionDocument.put("shortName", session.getShortName()); diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 54083b3b..bfb1502a 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -20,7 +20,9 @@ package de.thm.arsnova.dao; import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import de.thm.arsnova.connector.model.Course; import de.thm.arsnova.entities.Answer; @@ -40,7 +42,7 @@ public interface IDatabaseDao { List<Session> getMySessions(User user); - List<Session> getPublicPoolSessions(); + Map<String, ArrayList<Session>> getPublicPoolSessions(); Session saveSession(User user, Session session); diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index 700e3678..1cf5b978 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -20,7 +20,9 @@ package de.thm.arsnova.services; import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.UUID; import de.thm.arsnova.connector.model.Course; @@ -38,7 +40,7 @@ public interface ISessionService { List<Session> getMySessions(); - List<Session> getPublicPoolSessions(); + Map<String, ArrayList<Session>> getPublicPoolSessions(); List<Session> getMyVisitedSessions(); diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index f3ee451a..1f87b7db 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -21,8 +21,10 @@ package de.thm.arsnova.services; import java.io.Serializable; import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Map; import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; @@ -156,7 +158,7 @@ public class SessionService implements ISessionService { @Override @PreAuthorize("isAuthenticated()") - public final List<Session> getPublicPoolSessions() { + public final Map<String, ArrayList<Session>> getPublicPoolSessions() { return databaseDao.getPublicPoolSessions(); } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index eec8823c..08349c91 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -195,7 +195,7 @@ public class StubDatabaseDao implements IDatabaseDao { } @Override - public List<Session> getPublicPoolSessions() { + public Map<String, ArrayList<Session>> getPublicPoolSessions() { // TODO Auto-generated method stub return null; } -- GitLab