From 177963837ef0f3f5b59773e82a2adc609f50e62e Mon Sep 17 00:00:00 2001 From: Julian Hochstetter <julian.hochstetter@mni.thm.de> Date: Tue, 30 Oct 2012 14:16:53 +0100 Subject: [PATCH] Task #4043: getAnsweredFreetextQuestions --- .../controller/QuestionController.java | 11 +++++++ .../java/de/thm/arsnova/dao/CouchDBDao.java | 30 +++++++++++++++++++ .../java/de/thm/arsnova/dao/IDatabaseDao.java | 2 ++ .../java/de/thm/arsnova/entities/Answer.java | 26 ++++++++++++++++ .../arsnova/services/IQuestionService.java | 2 ++ .../thm/arsnova/services/QuestionService.java | 6 ++++ .../de/thm/arsnova/dao/StubDatabaseDao.java | 6 ++++ 7 files changed, 83 insertions(+) diff --git a/src/main/java/de/thm/arsnova/controller/QuestionController.java b/src/main/java/de/thm/arsnova/controller/QuestionController.java index f2d1baad..3f7b63a0 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionController.java @@ -219,5 +219,16 @@ public class QuestionController extends AbstractController { ) { return questionService.getAnswerCount(sessionKey, questionId); } + + @RequestMapping(value = "/session/{sessionKey}/question/{questionId}/freetextanswers", method = RequestMethod.GET) + @ResponseBody + public final List<Answer> getFreetextAnswers( + @PathVariable final String sessionKey, + @PathVariable final String questionId, + final HttpServletResponse response + ) { + return questionService.getFreetextAnswers(sessionKey, questionId); + } + } diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 21a51dd3..9a5c3336 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -792,4 +792,34 @@ public class CouchDBDao implements IDatabaseDao { } return 0; } + + @Override + public List<Answer> getFreetextAnswers(String sessionKey, String questionId) { + Session s = this.getSessionFromKeyword(sessionKey); + if (s == null) { + throw new NotFoundException(); + } + + try { + View view = new View("skill_question/freetext_answers"); + view.setKey(URLEncoder.encode("\"" + questionId + "\"", "UTF-8")); + ViewResults results = this.getDatabase().view(view); + if (results.getResults().isEmpty()) { + throw new NotFoundException(); + } + List<Answer> answers = new ArrayList<Answer>(); + for (Document d : results.getResults()) { + Answer a = (Answer) JSONObject.toBean(d.getJSONObject().getJSONObject("value"), Answer.class); + a.setSessionId(s.get_id()); + a.setQuestionId(questionId); + answers.add(a); + } + return answers; + + } catch (UnsupportedEncodingException e) { + LOGGER.error("Error while retrieving freetext answers", e); + } + + return null; + } } diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 524a8d98..7c7aeeb3 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -70,4 +70,6 @@ public interface IDatabaseDao { List<Answer> getAnswers(String sessionKey, String questionId); int getAnswerCount(String sessionKey, String questionId); + + List<Answer> getFreetextAnswers(String sessionKey, String questionId); } diff --git a/src/main/java/de/thm/arsnova/entities/Answer.java b/src/main/java/de/thm/arsnova/entities/Answer.java index 3a3ef5d4..4159ea62 100644 --- a/src/main/java/de/thm/arsnova/entities/Answer.java +++ b/src/main/java/de/thm/arsnova/entities/Answer.java @@ -11,6 +11,7 @@ public class Answer { private String answerText; private String answerSubject; private String user; + private long timestamp; private int answerCount; public Answer() { @@ -65,6 +66,15 @@ public class Answer { this.answerText = answerText; } + public final String getText() { + return answerText; + } + + public final void setText(final String answerText) { + this.answerText = answerText; + } + + public final String getAnswerSubject() { return answerSubject; } @@ -72,6 +82,14 @@ public class Answer { public final void setAnswerSubject(final String answerSubject) { this.answerSubject = answerSubject; } + + public final String getSubject() { + return answerSubject; + } + + public final void setSubject(final String answerSubject) { + this.answerSubject = answerSubject; + } public final String getUser() { return user; @@ -81,6 +99,14 @@ public class Answer { this.user = user; } + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + public final int getAnswerCount() { return answerCount; } diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index ebc3704b..a6977fe0 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -44,4 +44,6 @@ public interface IQuestionService { List<Answer> getAnswers(String sessionKey, String questionId); int getAnswerCount(String sessionKey, String questionId); + + List<Answer> getFreetextAnswers(String sessionKey, 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 7572c77f..e8677527 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -112,4 +112,10 @@ public class QuestionService implements IQuestionService { public int getAnswerCount(String sessionKey, String questionId) { return databaseDao.getAnswerCount(sessionKey, questionId); } + + @Override + @Authenticated + public List<Answer> getFreetextAnswers(String sessionKey, String questionId) { + return databaseDao.getFreetextAnswers(sessionKey, questionId); + } } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index c2e8a13d..033548ec 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -218,4 +218,10 @@ public class StubDatabaseDao implements IDatabaseDao { return 0; } + @Override + public List<Answer> getFreetextAnswers(String sessionKey, String questionId) { + // TODO Auto-generated method stub + return null; + } + } -- GitLab