diff --git a/src/main/java/de/thm/arsnova/controller/QuestionController.java b/src/main/java/de/thm/arsnova/controller/QuestionController.java index d1cb3a654543a3791fce228a84dd4c56c8679b81..d694144943e6029ccfd7329f71be2e9d33f6e70b 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 e3163bd70f73f31ddc1e13debcdf3b3c0ed14aac..2955b161219c05824bb661f820dd24fcaefdc51f 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 277a29abf7764e0765c1d2534f9be9d184e07590..ac8d9b6e196e39eb03642ed6574a71dafc5b5b1e 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 eb54e0ed18e946c0865f72a4fa1bdfe312a91386..748d23f2c62429528c2be34f292c2a33448c067c 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 f7c5e12a1fa5bf0176c1db3f7ee44cc1e3a75f2d..172a719c1040986ee70268d4676b322ee16822dd 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 a0c6e100d5435bcf711fcead8b66b7db05544db6..b84732a5d630402cc5bba13472df9273812df34d 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; + } }