From f87e5e4ff34d2babc569c9ed08c81c1fee127eec Mon Sep 17 00:00:00 2001
From: Daniel Knapp <daniel.knapp@thm.de>
Date: Thu, 29 Nov 2012 16:36:34 +0100
Subject: [PATCH] added server methods for single interposed question

---
 .gitignore                                       |  6 ------
 pom.xml                                          |  6 +++---
 .../arsnova/controller/QuestionController.java   | 10 ++++++++++
 src/main/java/de/thm/arsnova/dao/CouchDBDao.java | 16 ++++++++++++++++
 .../java/de/thm/arsnova/dao/IDatabaseDao.java    |  2 ++
 .../thm/arsnova/services/IQuestionService.java   |  2 ++
 .../de/thm/arsnova/services/QuestionService.java |  6 ++++++
 7 files changed, 39 insertions(+), 9 deletions(-)
 delete mode 100644 .gitignore

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 043004ca..00000000
--- a/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.project
-.classpath
-.settings/*
-target/*
-chromedriver.log
-.checkstyle
diff --git a/pom.xml b/pom.xml
index d5c28008..94048192 100644
--- a/pom.xml
+++ b/pom.xml
@@ -336,10 +336,10 @@
 				<groupId>org.mortbay.jetty</groupId>
 				<artifactId>jetty-maven-plugin</artifactId>
 				<version>7.6.5.v20120716</version>
-				<!-- <configuration> <scanIntervalSeconds>5</scanIntervalSeconds> <webApp> 
+				<configuration> <scanIntervalSeconds>1</scanIntervalSeconds> <webApp> 
 					<contextPath>/</contextPath> <baseResource implementation="org.eclipse.jetty.util.resource.ResourceCollection"> 
-					<resourcesAsCSV>src/main/webapp,../arsnova-js/src/main/webapp,../arsnova-legacy-js/src/main/webapp,../dojo-war/src/main/webapp</resourcesAsCSV> 
-					</baseResource> </webApp> </configuration> -->
+					<resourcesAsCSV>src/main/webapp,../arsnova-js/src/main/webapp,../arsnova-legacy-js/src/main/webapp</resourcesAsCSV> 
+					</baseResource> </webApp> </configuration>
 			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
diff --git a/src/main/java/de/thm/arsnova/controller/QuestionController.java b/src/main/java/de/thm/arsnova/controller/QuestionController.java
index 64074fa7..58af4be1 100644
--- a/src/main/java/de/thm/arsnova/controller/QuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/QuestionController.java
@@ -267,5 +267,15 @@ public class QuestionController extends AbstractController {
 	) {
 		return questionService.getInterposedQuestions(sessionKey);
 	}
+	
+	@RequestMapping(value = "/session/{sessionKey}/interposed/{documentId}", method = RequestMethod.GET)
+	@ResponseBody
+	public final Question getInterposedQuestion(
+			@PathVariable final String sessionKey,
+			@PathVariable final String documentId,
+			final HttpServletResponse response
+	) {
+		return questionService.getInterposedQuestion(sessionKey, documentId);
+	}
 
 }
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index c2687b09..40434a63 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -1048,6 +1048,22 @@ public class CouchDBDao implements IDatabaseDao {
 		}
 		return null;
 	}
+	
+	public Question getInterposedQuestion(String sessionKey, String documentId) {
+		try {
+			Document document = this.getDatabase().getDocument(documentId);
+			
+			if(document != null) {
+				Question question = (Question) JSONObject.toBean(document.getJSONObject().getJSONObject("value"), Question.class);
+				question.setQuestionType("interposed_question");
+				
+				return question;
+			}
+		} catch (IOException e) {
+			LOGGER.error("Error while retrieving interposed question", e);
+		}
+		return null;
+	}
 
 	@Override
 	public void vote(String menu) {
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 0f53ed9e..ad03cf43 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -101,4 +101,6 @@ public interface IDatabaseDao {
 	int countAnswers();
 
 	int countQuestions();
+
+	Question getInterposedQuestion(String sessionKey, String documentId);
 }
diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java
index 1ca5ccdc..f97af720 100644
--- a/src/main/java/de/thm/arsnova/services/IQuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java
@@ -54,4 +54,6 @@ public interface IQuestionService {
 	int getInterposedCount(String sessionKey);
 
 	List<Question> getInterposedQuestions(String sessionKey);
+
+	Question getInterposedQuestion(String sessionKey, String documentId);
 }
diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java
index 7cd40613..74a72a84 100644
--- a/src/main/java/de/thm/arsnova/services/QuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/QuestionService.java
@@ -142,4 +142,10 @@ public class QuestionService implements IQuestionService {
 	public List<Question> getInterposedQuestions(String sessionKey) {
 		return databaseDao.getInterposedQuestions(sessionKey);
 	}
+	
+	@Override
+	@Authenticated
+	public Question getInterposedQuestion(String sessionKey, String documentId) {
+		return databaseDao.getInterposedQuestion(sessionKey, documentId);
+	}
 }
-- 
GitLab