From 1cd4807beed5fec71760a4193d9d4b7971879158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20K=C3=A4sler?= <tom.kaesler@mni.thm.de> Date: Tue, 17 Mar 2015 16:47:40 +0100 Subject: [PATCH] #15391 add null-query to not get nullpointerexception and rework getQuestionBySortOrder and some minor bugs --- .../java/de/thm/arsnova/dao/CouchDBDao.java | 8 ++-- .../thm/arsnova/services/QuestionService.java | 44 +++++++++++++------ 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 46d51d4d..4663c229 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1943,7 +1943,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware Set<String> uniqueSubjects = new HashSet(); for (final Document d : results.getResults()) { - uniqueSubjects.add(d.getJSONObject().getJSONArray("value").getString(0)); + uniqueSubjects.add(d.getString("value")); } List<String> uniqueSubjectsList = new ArrayList(uniqueSubjects); @@ -1961,17 +1961,17 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware viewString = "skill_question/preparation_question_ids_by_session_and_subject"; } NovaView view = new NovaView(viewString); - view.setKey(session.get_id()); + view.setKey(session.get_id(), subject); ViewResults results = this.getDatabase().view(view); - if (results.getResults().isEmpty()) { + if (results.getJSONArray("rows").optJSONObject(0) == null) { return null; } List<String> qids = new ArrayList(); for (final Document d : results.getResults()) { - final String s = d.getJSONObject().getJSONArray("value").getString(0); + final String s = d.getString("value"); qids.add(s); /*final Answer a = new Answer(); a.setAnswerCount(d.getInt("value")); diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index 6fdd0d0f..f75086ac 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -839,20 +839,30 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis return sortOrder; } - public List<Question> getQuestionsBySortOrder(SortOrder sortOrder, boolean onlyActive) { - List<Question> questions = new ArrayList<Question>(); - List<String> questionIds = sortOrder.getSortOrder(); - for (String t : questionIds) { - Question tempQuestion = getQuestion(t); - if (onlyActive) { - if (tempQuestion.isActive()) { - questions.add(tempQuestion); - } - } - else { - questions.add(tempQuestion); - } - } + public List<Question> getQuestionsBySortOrder(SortOrder subjectSortOrder, boolean onlyActive) { + if (subjectSortOrder.getSortOrder() == null) { + return null; + } + if (subjectSortOrder.getSortOrder().isEmpty()) { + return null; + } + List<Question> questions = new ArrayList<Question>(); + List<String> subjects = subjectSortOrder.getSortOrder(); + for (String sub : subjects) { + SortOrder questionSortOrder = databaseDao.getSortOrder(subjectSortOrder.getSessionId(), subjectSortOrder.getQuestionVariant(), sub); + List<String> questionIds = questionSortOrder.getSortOrder(); + for (String t : questionIds) { + Question tempQuestion = getQuestion(t); + if (onlyActive) { + if (tempQuestion.isActive()) { + questions.add(tempQuestion); + } + } + else { + questions.add(tempQuestion); + } + } + } return questions; } @@ -884,6 +894,12 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis } public SortOrder alphabeticalSort(SortOrder sortOrder){ + if (sortOrder.getSortOrder() == null) { + return null; + } + if (sortOrder.getSortOrder().isEmpty()) { + return null; + } if ("".equals(sortOrder.getSubject())) { List<String> subjects = sortOrder.getSortOrder(); Collections.sort(subjects); -- GitLab