diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index f067ff6dc1e3df80ca1d15003e5f09d6094fe49d..b98d0c8bf8fffb15dfb8120f9dc59c4c6d38ef4e 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -630,25 +630,14 @@ public class CouchDBDao implements IDatabaseDao { @Override public final Question getQuestion(final String id) { try { - final NovaView view = new NovaView("skill_question/by_id"); - view.setKey(id); - final ViewResults results = getDatabase().view(view); - - if (results.getJSONArray("rows").optJSONObject(0) == null) { - return null; - } - - final Question q = (Question) JSONObject.toBean( - results.getJSONArray("rows").optJSONObject(0).optJSONObject("value"), - Question.class - ); - final JSONArray possibleAnswers = results.getJSONArray("rows").optJSONObject(0).optJSONObject("value") - .getJSONArray("possibleAnswers"); + final Document q = getDatabase().getDocument(id); + final Question question = (Question) JSONObject.toBean(q.getJSONObject(), Question.class); + final JSONArray possibleAnswers = q.getJSONObject().getJSONArray("possibleAnswers"); @SuppressWarnings("unchecked") final Collection<PossibleAnswer> answers = JSONArray.toCollection(possibleAnswers, PossibleAnswer.class); - q.setPossibleAnswers(new ArrayList<PossibleAnswer>(answers)); - q.setSessionKeyword(getSessionKeyword(q.getSessionId())); - return q; + question.setPossibleAnswers(new ArrayList<PossibleAnswer>(answers)); + question.setSessionKeyword(getSessionKeyword(question.getSessionId())); + return question; } catch (final IOException e) { LOGGER.error("Could not get question with id {}", id); } diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index e5a4adfbd5c2a1f348a5828007d2b7aff488b3dc..bea2278ddd839278c393dea8e37c3c3455d368b0 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -255,7 +255,9 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis @PreAuthorize("isAuthenticated()") public Answer getMyAnswer(final String questionId) { final Question question = getQuestion(questionId); - + if (question == null) { + throw new NotFoundException(); + } return databaseDao.getMyAnswer(userService.getCurrentUser(), questionId, question.getPiRound()); } @@ -263,7 +265,9 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis @PreAuthorize("isAuthenticated()") public List<Answer> getAnswers(final String questionId, final int piRound) { final Question question = databaseDao.getQuestion(questionId); - + if (question == null) { + throw new NotFoundException(); + } return "freetext".equals(question.getQuestionType()) ? getFreetextAnswers(questionId) : databaseDao.getAnswers(questionId, piRound); @@ -273,7 +277,9 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis @PreAuthorize("isAuthenticated()") public List<Answer> getAnswers(final String questionId) { final Question question = getQuestion(questionId); - + if (question == null) { + throw new NotFoundException(); + } return getAnswers(questionId, question.getPiRound()); }