From 7f428fa15d77643b89b3734a55205011484df71b Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de>
Date: Wed, 22 Jan 2014 13:58:41 +0100
Subject: [PATCH] Filter total answer count for questions by PI round

---
 src/main/java/de/thm/arsnova/dao/CouchDBDao.java          | 8 +++++---
 src/main/java/de/thm/arsnova/dao/IDatabaseDao.java        | 2 +-
 .../java/de/thm/arsnova/services/QuestionService.java     | 5 +++--
 src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java     | 2 +-
 4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 86cd5271..23b79018 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -560,10 +560,12 @@ public class CouchDBDao implements IDatabaseDao {
 	}
 
 	@Override
-	public final int getAnswerCount(final String questionId) {
-		NovaView view = new NovaView("skill_question/count_answers_by_question");
-		view.setKey(questionId);
+	public final int getAnswerCount(final Question question, final int piRound) {
+		LOGGER.debug("coudbdao: getAnswerCount, piRound: ", piRound);
+		NovaView view = new NovaView("skill_question/count_total_answers_by_question_and_piround");
 		view.setGroup(true);
+		view.setStartKey(question.get_id(), String.valueOf(piRound));
+		view.setEndKey(question.get_id(), String.valueOf(piRound), "{}");
 		ViewResults results = this.getDatabase().view(view);
 		if (results.getResults().size() == 0) {
 			return 0;
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 2a99de4f..b7f153c1 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -68,7 +68,7 @@ public interface IDatabaseDao {
 
 	List<Answer> getAnswers(String questionId, int piRound);
 
-	int getAnswerCount(String questionId);
+	int getAnswerCount(Question question, int piRound);
 
 	List<Answer> getFreetextAnswers(String questionId);
 
diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java
index 24d67b2e..b8f795de 100644
--- a/src/main/java/de/thm/arsnova/services/QuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/QuestionService.java
@@ -236,11 +236,12 @@ public class QuestionService implements IQuestionService {
 		return getAnswers(questionId, question.getPiRound());
 	}
 
-	/* TODO add implementation for piRound */
 	@Override
 	@Authenticated
 	public int getAnswerCount(String questionId) {
-		return databaseDao.getAnswerCount(questionId);
+		Question question = getQuestion(questionId);
+		
+		return databaseDao.getAnswerCount(question, question.getPiRound());
 	}
 
 	@Override
diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
index f8a9d63d..8e354540 100644
--- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
+++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
@@ -217,7 +217,7 @@ public class StubDatabaseDao implements IDatabaseDao {
 	}
 
 	@Override
-	public int getAnswerCount(String questionId) {
+	public int getAnswerCount(Question question, int piRound) {
 		// TODO Auto-generated method stub
 		return 0;
 	}
-- 
GitLab