From 7c916b2da6345b70d0a64f91451a09ce59378f9c Mon Sep 17 00:00:00 2001 From: Christoph Thelen <christoph.thelen@mni.thm.de> Date: Wed, 13 Feb 2013 17:07:47 +0100 Subject: [PATCH] Added methods to save answers --- .../QuestionByLecturerController.java | 10 +++++++++ .../java/de/thm/arsnova/dao/CouchDBDao.java | 21 ++++++++++++++++++- .../java/de/thm/arsnova/dao/IDatabaseDao.java | 2 ++ .../arsnova/services/IQuestionService.java | 2 ++ .../thm/arsnova/services/QuestionService.java | 8 +++++++ 5 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java index d93f1fa6..1fda317e 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java @@ -248,6 +248,16 @@ public class QuestionByLecturerController extends AbstractController { return answers; } + @RequestMapping(value = "/{questionId}/answer", method = RequestMethod.POST) + @ResponseBody + public final Answer saveAnswer( + @PathVariable final String questionId, + @RequestBody final Answer answer, + final HttpServletResponse response + ) { + return questionService.saveAnswer(answer); + } + @RequestMapping(value = "/{questionId}/answers", method = RequestMethod.DELETE) @ResponseBody public final void deleteAnswers( diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index c23e7333..3a75ab9d 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -816,7 +816,7 @@ public class CouchDBDao implements IDatabaseDao { ); ViewResults results = this.getDatabase().view(view); if (results.getResults().isEmpty()) { - throw new NotFoundException(); + return null; } return (Answer) JSONObject.toBean( results.getJSONArray("rows").optJSONObject(0).optJSONObject("value"), @@ -1263,4 +1263,23 @@ public class CouchDBDao implements IDatabaseDao { return null; } } + + @Override + public Answer saveAnswer(Answer answer, User user) { + try { + Document a = new Document(); + a.put("type", "skill_question_answer"); + a.put("sessionId", answer.getSessionId()); + a.put("questionId", answer.getQuestionId()); + a.put("answerText", answer.getAnswerText()); + a.put("user", user.getUsername()); + this.database.saveDocument(a); + answer.set_id(a.getId()); + answer.set_rev(a.getRev()); + return answer; + } catch (IOException e) { + LOGGER.error("Could not save answer {}", answer); + } + 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 1dd2ab0b..8c1775fb 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -118,4 +118,6 @@ public interface IDatabaseDao { void updateQuestion(Question question); void deleteAnswers(Question question); + + Answer saveAnswer(Answer answer, User user); } diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index cad84bfb..2d932dca 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -67,4 +67,6 @@ public interface IQuestionService { void deleteAnswers(String questionId); + Answer saveAnswer(Answer answer); + } diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index d3d519f5..069ae091 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -234,4 +234,12 @@ public class QuestionService implements IQuestionService { } this.databaseDao.updateQuestion(question); } + + @Override + @Authenticated + public Answer saveAnswer(Answer answer) { + // TODO: Sanity checks... + User user = userService.getCurrentUser(); + return this.databaseDao.saveAnswer(answer, user); + } } -- GitLab