From 49569a793e2171b8d227c21709f081172aa3b6f0 Mon Sep 17 00:00:00 2001 From: Felix Schmidt <felix.schmidt@mni.thm.de> Date: Thu, 15 Jan 2015 17:08:44 +0100 Subject: [PATCH] Implemented methods to get public pool sessions for the current user. --- .../arsnova/controller/SessionController.java | 6 ++++- .../java/de/thm/arsnova/dao/CouchDBDao.java | 22 +++++++++++++++++++ .../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, 43 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 92d64fb2b..c0bb0e8d0 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -194,10 +194,14 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/publicpool", method = RequestMethod.GET) public final List<Session> getPublicPoolSessions( + @RequestParam(value = "myonly", defaultValue = "false") final boolean myOnly, final HttpServletResponse response ) { List<Session> sessions; - sessions = sessionService.getPublicPoolSessions(); + if (!myOnly) + sessions = sessionService.getPublicPoolSessions(); + else + sessions = sessionService.getMyPublicPoolSessions(); if (sessions == null || sessions.isEmpty()) { response.setStatus(HttpServletResponse.SC_NO_CONTENT); diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 8e6a06161..25e78b55b 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -148,6 +148,28 @@ public class CouchDBDao implements IDatabaseDao { return result; } + @Override + public final List<Session> getMyPublicPoolSessions(final User user) { + final NovaView view = new NovaView("session/public_pool_by_creator"); + view.setStartKeyArray(user.getUsername()); + view.setEndKeyArray(user.getUsername(), "{}"); + + 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.setCreator(d.getJSONObject().getJSONArray("key").getString(0)); + session.setName(d.getJSONObject().getJSONArray("key").getString(1)); + 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 b0cada556..37081dc92 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -43,6 +43,8 @@ public interface IDatabaseDao { List<Session> getMySessions(User user); List<Session> getPublicPoolSessions(); + + List<Session> getMyPublicPoolSessions(User user); 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 37672066a..108a8ff90 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -41,6 +41,8 @@ public interface ISessionService { List<Session> getMySessions(); List<Session> getPublicPoolSessions(); + + List<Session> getMyPublicPoolSessions(); 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 7d749784e..dd02f5303 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -172,6 +172,12 @@ public class SessionService implements ISessionService { public final List<Session> getPublicPoolSessions() { return databaseDao.getPublicPoolSessions(); } + + @Override + @PreAuthorize("isAuthenticated()") + public final List<Session> getMyPublicPoolSessions() { + return databaseDao.getMyPublicPoolSessions(userService.getCurrentUser()); + } @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 eec8823cd..cd89e6a55 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -199,6 +199,12 @@ public class StubDatabaseDao implements IDatabaseDao { // TODO Auto-generated method stub return null; } + + @Override + public List<Session> getMyPublicPoolSessions(User user) { + // TODO Auto-generated method stub + return null; + } @Override public LoggedIn registerAsOnlineUser(User u, Session s) { -- GitLab