diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java index b617a3c96156e728db720a545ce7cfb91ba8e84a..e283957c726c5b3914364e6e4c57145cd1c38747 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 65772653ad42fb9eb8044c2a216497a69abcbdb8..d90ee94aa953c9c9ace690fcd0bacdfa85ec13f2 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 84bd0a7b8639ea78bce800f266167ba9aeb238aa..d42be57a1466b3d4c6543fe0db95163764f0a3ce 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 0dfb1c8dee82d3eeed5f946e8fcd1be47b256d2b..12382d6c8463886e77225794fd3517d0edd48a81 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 e169cb00977e9a902561cb966d373ac97394edb6..9a5c774c4a18d178649433bac4ff35e62ee918ea 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) {