From 4bd715014f26dde16cc0cd6e44f5ef54b50ae62e Mon Sep 17 00:00:00 2001 From: Julian Hochstetter <julian.hochstetter@mni.thm.de> Date: Thu, 1 Nov 2012 12:06:59 +0100 Subject: [PATCH] Task #4036: getAnswerByUserAndSession --- .../controller/QuestionController.java | 9 +++++ .../java/de/thm/arsnova/dao/CouchDBDao.java | 36 +++++++++++++++++++ .../java/de/thm/arsnova/dao/IDatabaseDao.java | 2 ++ .../arsnova/services/IQuestionService.java | 2 ++ .../thm/arsnova/services/QuestionService.java | 6 ++++ .../de/thm/arsnova/dao/StubDatabaseDao.java | 6 ++++ 6 files changed, 61 insertions(+) diff --git a/src/main/java/de/thm/arsnova/controller/QuestionController.java b/src/main/java/de/thm/arsnova/controller/QuestionController.java index 3f7b63a0..3a0f66b3 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionController.java @@ -230,5 +230,14 @@ public class QuestionController extends AbstractController { return questionService.getFreetextAnswers(sessionKey, questionId); } + @RequestMapping(value = "/session/{sessionKey}/myanswers", method = RequestMethod.GET) + @ResponseBody + public final List<Answer> getMyAnswers( + @PathVariable final String sessionKey, + final HttpServletResponse response + ) { + return questionService.getMytAnswers(sessionKey); + } + } diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 0273a70b..468da08b 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -904,6 +904,42 @@ public class CouchDBDao implements IDatabaseDao { LOGGER.error("Error while retrieving freetext answers", e); } + return null; + } + + @Override + public List<Answer> getMyAnswers(String sessionKey) { + Session s = this.getSessionFromKeyword(sessionKey); + if (s == null) { + throw new NotFoundException(); + } + + User user = userService.getCurrentUser(); + if(user == null) { + throw new UnauthorizedException(); + } + + try { + View view = new View("answer/by_user_and_session"); + view.setKey("[" + URLEncoder.encode("\"" + user.getUsername() + "\",\"" + s.get_id() + "\"", "UTF-8") + "]"); + ViewResults results = this.getDatabase().view(view); + if (results.getResults().isEmpty()) { + throw new NotFoundException(); + } + List<Answer> answers = new ArrayList<Answer>(); + for (Document d : results.getResults()) { + Answer a = (Answer) JSONObject.toBean(d.getJSONObject().getJSONObject("value"), Answer.class); + a.set_id(d.getId()); + a.setSessionId(s.get_id()); + answers.add(a); + } + return answers; + + } catch (UnsupportedEncodingException e) { + LOGGER.error("Error while retrieving user answers", e); + } + + return null; } } diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index dc5f7ebd..da1829e7 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -74,4 +74,6 @@ public interface IDatabaseDao { List<Answer> getFreetextAnswers(String sessionKey, String questionId); int getActiveUsers(long since); + + List<Answer> getMyAnswers(String sessionKey); } diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index a6977fe0..33aca21b 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -46,4 +46,6 @@ public interface IQuestionService { int getAnswerCount(String sessionKey, String questionId); List<Answer> getFreetextAnswers(String sessionKey, String questionId); + + List<Answer> getMytAnswers(String sessionKey); } diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index e8677527..8dc8c620 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -118,4 +118,10 @@ public class QuestionService implements IQuestionService { public List<Answer> getFreetextAnswers(String sessionKey, String questionId) { return databaseDao.getFreetextAnswers(sessionKey, questionId); } + + @Override + @Authenticated + public List<Answer> getMytAnswers(String sessionKey) { + return databaseDao.getMyAnswers(sessionKey); + } } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index 76b4f2b3..bfd6ec67 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -239,5 +239,11 @@ public class StubDatabaseDao implements IDatabaseDao { public int getActiveUsers(long since) { return stubUsers.size(); } + + @Override + public List<Answer> getMyAnswers(String sessionKey) { + // TODO Auto-generated method stub + return null; + } } -- GitLab