From 456cc3f4b22ac212b3b2f74e2e9e4021bb3efe81 Mon Sep 17 00:00:00 2001 From: Daniel Vogel <daniel.vogel@mni.thm.de> Date: Thu, 8 Jan 2015 02:24:57 +0100 Subject: [PATCH] Added Interface for getting public pool sessions --- .../arsnova/controller/SessionController.java | 16 ++++++++++++++++ .../java/de/thm/arsnova/dao/CouchDBDao.java | 19 +++++++++++++++++++ .../java/de/thm/arsnova/dao/IDatabaseDao.java | 2 ++ .../thm/arsnova/services/ISessionService.java | 2 ++ .../thm/arsnova/services/SessionService.java | 6 ++++++ .../de/thm/arsnova/dao/StubDatabaseDao.java | 6 ++++++ 6 files changed, 51 insertions(+) diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index e828b24e9..9b647c513 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -189,6 +189,22 @@ public class SessionController extends AbstractController { } return sessions; } + + + @RequestMapping(value = "/public_pool", method = RequestMethod.GET) + public final List<Session> getPublicPoolSessions( + final HttpServletResponse response + ) { + List<Session> sessions; + sessions = sessionService.getPublicPoolSessions(); + + if (sessions == null || sessions.isEmpty()) { + response.setStatus(HttpServletResponse.SC_NO_CONTENT); + return null; + } + + return sessions; + } @RequestMapping(value = "/{sessionkey}/lock", method = RequestMethod.POST) public final Session lockSession( diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 5ccceb285..032e013eb 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -128,7 +128,26 @@ public class CouchDBDao implements IDatabaseDao { } return result; } + + @Override + public final List<Session> getPublicPoolSessions() { + final NovaView view = new NovaView("session/public_pool_by_id"); + + 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); + } + return result; + } + @Override public final List<SessionInfo> getMySessionsInfo(final User user) { final List<Session> sessions = this.getMySessions(user); diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 7a1c205f9..54083b3b2 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -39,6 +39,8 @@ public interface IDatabaseDao { Session getSession(String keyword); List<Session> getMySessions(User user); + + List<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 a215b57a2..700e36786 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -37,6 +37,8 @@ public interface ISessionService { String generateKeyword(); List<Session> getMySessions(); + + List<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 f51a8016e..f3ee451ae 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -153,6 +153,12 @@ public class SessionService implements ISessionService { public final List<Session> getMySessions() { return databaseDao.getMySessions(userService.getCurrentUser()); } + + @Override + @PreAuthorize("isAuthenticated()") + public final List<Session> getPublicPoolSessions() { + return databaseDao.getPublicPoolSessions(); + } @Override @PreAuthorize("isAuthenticated()") diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index 956d49566..eec8823cd 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -193,6 +193,12 @@ public class StubDatabaseDao implements IDatabaseDao { // TODO Auto-generated method stub return null; } + + @Override + public List<Session> getPublicPoolSessions() { + // TODO Auto-generated method stub + return null; + } @Override public LoggedIn registerAsOnlineUser(User u, Session s) { -- GitLab