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