From bc25f0665ab204f64b174abb374ee72fe7ecb935 Mon Sep 17 00:00:00 2001 From: Christoph Thelen <christoph.thelen@mni.thm.de> Date: Tue, 3 Sep 2013 16:19:41 +0200 Subject: [PATCH] Added methods to count answers of question variants Note that this is currently untested. :o --- .../LecturerQuestionController.java | 10 +++++++++- .../java/de/thm/arsnova/dao/CouchDBDao.java | 20 +++++++++++++++++++ .../java/de/thm/arsnova/dao/IDatabaseDao.java | 4 ++++ .../arsnova/services/IQuestionService.java | 4 ++++ .../thm/arsnova/services/QuestionService.java | 13 +++++++++++- .../de/thm/arsnova/dao/StubDatabaseDao.java | 12 +++++++++++ 6 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java index 97ebdd9e..5042f201 100644 --- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java +++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java @@ -366,11 +366,19 @@ public class LecturerQuestionController extends AbstractController { @ResponseBody public final int getTotalAnswerCount( @RequestParam final String sessionkey, + @RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureQuestionsOnly, + @RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationQuestionsOnly, final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return questionService.getTotalAnswerCount(sessionkey); + if (lectureQuestionsOnly) { + return questionService.countLectureQuestionAnswers(sessionkey); + } else if (preparationQuestionsOnly) { + return questionService.countPreparationQuestionAnswers(sessionkey); + } else { + return questionService.getTotalAnswerCount(sessionkey); + } } } diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 2a7df949..e612893e 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1197,4 +1197,24 @@ public class CouchDBDao implements IDatabaseDao { } return results.getJSONArray("rows").optJSONObject(0).optInt("value"); } + + @Override + public int countLectureQuestionAnswers(Session session) { + return countQuestionVariantAnswers(session, "lecture"); + } + + @Override + public int countPreparationQuestionAnswers(Session session) { + return countQuestionVariantAnswers(session, "preparation"); + } + + private int countQuestionVariantAnswers(Session session, String variant) { + NovaView view = new NovaView("skill_question/count_answers_by_session_and_question_variant"); + view.setKey(session.get_id(), variant); + ViewResults results = this.getDatabase().view(view); + if (results.getResults().size() == 0) { + return 0; + } + return results.getJSONArray("rows").optJSONObject(0).optInt("value"); + } } diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 91260a0a..897e09ee 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -141,4 +141,8 @@ public interface IDatabaseDao { int getFlashcardCount(Session session); int getPreparationQuestionCount(Session session); + + int countLectureQuestionAnswers(Session session); + + int countPreparationQuestionAnswers(Session session); } diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index dddd5031..33239d8e 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -91,4 +91,8 @@ public interface IQuestionService { int getPreparationQuestionCount(String sessionkey); + int countLectureQuestionAnswers(String sessionkey); + + int countPreparationQuestionAnswers(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 8f15e860..2162802b 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -35,7 +35,6 @@ import de.thm.arsnova.entities.InterposedReadingCount; import de.thm.arsnova.entities.Question; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; -import de.thm.arsnova.exceptions.NoContentException; import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.exceptions.UnauthorizedException; import de.thm.arsnova.socket.ARSnovaSocketIOServer; @@ -434,4 +433,16 @@ public class QuestionService implements IQuestionService { public int getPreparationQuestionCount(String sessionkey) { return databaseDao.getPreparationQuestionCount(getSession(sessionkey)); } + + @Override + @Authenticated + public int countLectureQuestionAnswers(String sessionkey) { + return databaseDao.countLectureQuestionAnswers(getSession(sessionkey)); + } + + @Override + @Authenticated + public int countPreparationQuestionAnswers(String sessionkey) { + return databaseDao.countPreparationQuestionAnswers(getSession(sessionkey)); + } } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index 94ac7ec3..c5c5cdc6 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -439,4 +439,16 @@ public class StubDatabaseDao implements IDatabaseDao { // TODO Auto-generated method stub return 0; } + + @Override + public int countLectureQuestionAnswers(Session session) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int countPreparationQuestionAnswers(Session session) { + // TODO Auto-generated method stub + return 0; + } } -- GitLab