From 492494ae430451fe6293522abf63c44810056c01 Mon Sep 17 00:00:00 2001
From: Julian Hochstetter <julian.hochstetter@mni.thm.de>
Date: Tue, 16 Oct 2012 21:03:17 +0200
Subject: [PATCH] Task #4030: countSkillQuestions

---
 .../java/de/thm/arsnova/SessionController.java  |  5 +++++
 .../java/de/thm/arsnova/dao/CouchDBDao.java     | 17 +++++++++++++++++
 .../java/de/thm/arsnova/dao/IDatabaseDao.java   |  1 +
 .../thm/arsnova/services/ISessionService.java   |  1 +
 .../de/thm/arsnova/services/SessionService.java |  5 +++++
 5 files changed, 29 insertions(+)

diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java
index 11383ca6..7f16f4fc 100644
--- a/src/main/java/de/thm/arsnova/SessionController.java
+++ b/src/main/java/de/thm/arsnova/SessionController.java
@@ -121,6 +121,11 @@ public class SessionController {
 		return questions;
 	}
 	
+	@RequestMapping(value="/getSkillQuestionCount/{sessionkey}", method=RequestMethod.GET)
+	@ResponseBody
+	public int getSkillQuestionCount(@PathVariable String sessionkey, HttpServletResponse response) {
+		return sessionService.getSkillQuestionCount(sessionkey);
+	}
 	
 	
 	@RequestMapping(value="/socketurl", method=RequestMethod.GET)
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index da671be6..75d41c1c 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -224,6 +224,23 @@ public class CouchDBDao implements IDatabaseDao {
 		}
 	}
 	
+	@Override
+	public int getSkillQuestionCount(String sessionkey) {
+		try {
+			View view = new View("skill_question/count_by_session");
+			view.setKey(URLEncoder.encode("\"" + sessionkey + "\"", "UTF-8"));
+			ViewResults results = this.getDatabase().view(view);
+	
+			if (results.getJSONArray("rows").optJSONObject(0) == null) {
+				return 0;
+			}
+			
+			return results.getJSONArray("rows").optJSONObject(0).optInt("value");
+			
+		} catch (UnsupportedEncodingException e) {
+			return 0;
+		}
+	}
 	
 	@Override
 	public Session getSessionFromKeyword(String keyword) {
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 8cd6eb1e..27fc1f58 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -38,4 +38,5 @@ public interface IDatabaseDao {
 	
 	public boolean saveQuestion(Session session, Question question);
 	List<Question> getSkillQuestions(String session, String sort);
+	public int getSkillQuestionCount(String sessionkey);
 }
\ No newline at end of file
diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java
index d56b3051..73de3b58 100644
--- a/src/main/java/de/thm/arsnova/services/ISessionService.java
+++ b/src/main/java/de/thm/arsnova/services/ISessionService.java
@@ -46,4 +46,5 @@ public interface ISessionService {
 	public List<Session> getMySessions(String username);
 	public boolean saveQuestion(Question question);
 	public List<Question> getSkillQuestions(String sessionkey, String sort);
+	public int getSkillQuestionCount(String sessionkey);
 }
\ No newline at end of file
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index 4dfaf0c2..72189c5c 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -81,6 +81,11 @@ public class SessionService implements ISessionService {
 		return databaseDao.getSkillQuestions(sessionkey, sort);
 	}
 	
+	@Override
+	public int getSkillQuestionCount(String sessionkey) {
+		return databaseDao.getSkillQuestionCount(sessionkey);
+	}
+	
 	@Override
 	public Session saveSession(Session session) {
 		return databaseDao.saveSession(session);
-- 
GitLab