From a3511aede78dddd604af2be546f0eeec99dedeaa Mon Sep 17 00:00:00 2001 From: Julian Hochstetter <julian.hochstetter@mni.thm.de> Date: Tue, 16 Oct 2012 10:42:28 +0200 Subject: [PATCH] Task #4026: getMySessions server implementation --- .../de/thm/arsnova/SessionController.java | 17 +++++++++++++++++ .../java/de/thm/arsnova/dao/CouchDBDao.java | 19 +++++++++++++++++++ .../java/de/thm/arsnova/dao/IDatabaseDao.java | 3 +++ .../thm/arsnova/services/ISessionService.java | 1 + .../thm/arsnova/services/SessionService.java | 4 ++++ 5 files changed, 44 insertions(+) diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java index b617a3c96..e283957c7 100644 --- a/src/main/java/de/thm/arsnova/SessionController.java +++ b/src/main/java/de/thm/arsnova/SessionController.java @@ -18,6 +18,7 @@ */ package de.thm.arsnova; +import java.util.List; import java.util.UUID; import javax.servlet.http.HttpServletResponse; @@ -91,6 +92,22 @@ public class SessionController { return null; } + @RequestMapping(value="/mySessions", method=RequestMethod.GET) + @ResponseBody + public List<Session> getMySession(HttpServletResponse response) { + String username = userService.getUser(SecurityContextHolder.getContext().getAuthentication()).getUsername(); + if(username == null) { + response.setStatus(HttpStatus.NOT_FOUND.value()); + return null; + } + List<Session> sessions = sessionService.getMySessions(username); + if (sessions == null || sessions.isEmpty()) { + response.setStatus(HttpStatus.NOT_FOUND.value()); + return null; + } + return sessions; + } + @RequestMapping(value="/socketurl", method=RequestMethod.GET) @ResponseBody public String getSocketUrl() { diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 65772653a..d90ee94aa 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -158,6 +158,25 @@ public class CouchDBDao implements IDatabaseDao { return null; } + @Override + public List<Session> getMySessions(String username) { + try { + View view = new View("session/by_creator"); + view.setStartKey("[" + URLEncoder.encode("\"" + username + "\"", "UTF-8") + "]"); + view.setEndKey("[" + URLEncoder.encode("\"" + username + "\",{}", "UTF-8") + "]"); + + ViewResults sessions = this.getDatabase().view(view); + + List<Session> result = new ArrayList<Session>(); + for (Document d : sessions.getResults()) { + result.add((Session) JSONObject.toBean(d.getJSONObject().getJSONObject("value"), Session.class)); + } + return result; + } catch (UnsupportedEncodingException e) { + return null; + } + } + @Override public Session getSessionFromKeyword(String keyword) { try { diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 84bd0a7b8..d42be57a1 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -19,6 +19,8 @@ package de.thm.arsnova.dao; +import java.util.List; + import de.thm.arsnova.entities.Feedback; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; @@ -28,6 +30,7 @@ public interface IDatabaseDao { public void cleanFeedbackVotes(int cleanupFeedbackDelay); public Session getSessionFromKeyword(String keyword); public Session getSession(String keyword); + public List<Session> getMySessions(String username); public Session saveSession(Session session); public Feedback getFeedback(String keyword); public boolean saveFeedback(String keyword, int value, User user); diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index 0dfb1c8de..12382d6c8 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -44,5 +44,6 @@ public interface ISessionService { public List<String> getUsersInSession(String keyword); public void broadcastFeedbackChanges(Map<String, Set<String>> affectedUsers, Set<String> allAffectedSessions); + public List<Session> getMySessions(String username); public boolean saveQuestion(Question question); } \ No newline at end of file diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index e169cb009..9a5c774c4 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -71,6 +71,10 @@ public class SessionService implements ISessionService { public Session getSession(String keyword) { return databaseDao.getSession(keyword); } + @Override + public List<Session> getMySessions(String username) { + return databaseDao.getMySessions(username); + } @Override public Session saveSession(Session session) { -- GitLab