From 8da9a781e27dbed61d7e09516090e96250fad818 Mon Sep 17 00:00:00 2001 From: Julian Hochstetter <julian.hochstetter@mni.thm.de> Date: Thu, 1 Nov 2012 12:19:08 +0100 Subject: [PATCH] Task #4033: countFeedbackQuestions --- .../controller/QuestionController.java | 10 ++++++-- .../java/de/thm/arsnova/dao/CouchDBDao.java | 25 +++++++++++++++++++ .../java/de/thm/arsnova/dao/IDatabaseDao.java | 2 ++ .../arsnova/services/IQuestionService.java | 2 ++ .../thm/arsnova/services/QuestionService.java | 7 ++++++ .../de/thm/arsnova/dao/StubDatabaseDao.java | 6 +++++ 6 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/thm/arsnova/controller/QuestionController.java b/src/main/java/de/thm/arsnova/controller/QuestionController.java index d1cb3a65..d6941449 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionController.java @@ -248,7 +248,13 @@ public class QuestionController extends AbstractController { return questionService.getTotalAnswerCount(sessionKey); } - - + @RequestMapping(value = "/session/{sessionKey}/interposedcount", method = RequestMethod.GET) + @ResponseBody + public final int getInterposedCount( + @PathVariable final String sessionKey, + final HttpServletResponse response + ) { + return questionService.getInterposedCount(sessionKey); + } } diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index e3163bd7..2955b161 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -954,6 +954,31 @@ public class CouchDBDao implements IDatabaseDao { View view = new View("skill_question/count_answers_by_session"); view.setKey(URLEncoder.encode("\"" + s.get_id() + "\"", "UTF-8")); ViewResults results = this.getDatabase().view(view); + if(results.size() == 0) { + return 0; + } + return results.getJSONArray("rows").optJSONObject(0).optInt("value"); + } catch (UnsupportedEncodingException e) { + LOGGER.error("Error while retrieving total answer count", e); + } + return 0; + } + + @Override + public int getInterposedCount(String sessionKey) { + Session s = this.getSessionFromKeyword(sessionKey); + if (s == null) { + throw new NotFoundException(); + } + + try { + View view = new View("interposed_question/count_by_session"); + view.setKey(URLEncoder.encode("\"" + s.get_id() + "\"", "UTF-8")); + view.setGroup(true); + ViewResults results = this.getDatabase().view(view); + if(results.size() == 0 || results.getResults().size() == 0) { + return 0; + } return results.getJSONArray("rows").optJSONObject(0).optInt("value"); } catch (UnsupportedEncodingException e) { LOGGER.error("Error while retrieving total answer count", e); diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 277a29ab..ac8d9b6e 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -78,4 +78,6 @@ public interface IDatabaseDao { List<Answer> getMyAnswers(String sessionKey); int getTotalAnswerCount(String sessionKey); + + int getInterposedCount(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 eb54e0ed..748d23f2 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -50,4 +50,6 @@ public interface IQuestionService { List<Answer> getMytAnswers(String sessionKey); int getTotalAnswerCount(String sessionKey); + + int getInterposedCount(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 f7c5e12a..172a719c 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -126,7 +126,14 @@ public class QuestionService implements IQuestionService { } @Override + @Authenticated public int getTotalAnswerCount(String sessionKey) { return databaseDao.getTotalAnswerCount(sessionKey); } + + @Override + @Authenticated + public int getInterposedCount(String sessionKey) { + return databaseDao.getInterposedCount(sessionKey); + } } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index a0c6e100..b84732a5 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -251,5 +251,11 @@ public class StubDatabaseDao implements IDatabaseDao { // TODO Auto-generated method stub return 0; } + + @Override + public int getInterposedCount(String sessionKey) { + // TODO Auto-generated method stub + return 0; + } } -- GitLab