From 3fd3b41f27c8065475ebfc9033876fe24c64df5b Mon Sep 17 00:00:00 2001 From: agrt56 <andreas.gaertner@mni.thm.de> Date: Sun, 25 Jan 2015 13:38:29 +0100 Subject: [PATCH] Added numUnredInterposed to SessionInfo and SessionInfo retrieval in databaseDao. Task #14478 --- .../java/de/thm/arsnova/dao/CouchDBDao.java | 33 ++++++++++++++----- .../de/thm/arsnova/entities/SessionInfo.java | 9 +++++ 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 01482c04..9d86d34b 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -155,18 +155,22 @@ public class CouchDBDao implements IDatabaseDao { private List<SessionInfo> getInfosForSessions(final List<Session> sessions) { final ExtendedView questionCountView = new ExtendedView("skill_question/count_by_session"); final ExtendedView answerCountView = new ExtendedView("skill_question/count_answers_by_session"); - final ExtendedView interposedCountView = new ExtendedView("interposed_question/count_by_session_reading"); + final ExtendedView interposedCountView = new ExtendedView("interposed_question/count_by_session"); + final ExtendedView unredInterposedCountView = new ExtendedView("interposed_question/count_by_session_reading"); + + interposedCountView.setSessionIdKeys(sessions); + interposedCountView.setGroup(true); questionCountView.setSessionIdKeys(sessions); questionCountView.setGroup(true); answerCountView.setSessionIdKeys(sessions); answerCountView.setGroup(true); - List<String> interposedQueryKeys = new ArrayList<String>(); + List<String> unredInterposedQueryKeys = new ArrayList<String>(); for (Session s : sessions) { - interposedQueryKeys.add("[\"" + s.get_id() + "\",\"unread\"]"); + unredInterposedQueryKeys.add("[\"" + s.get_id() + "\",\"unread\"]"); } - interposedCountView.setKeys(interposedQueryKeys); - interposedCountView.setGroup(true); - return getSessionInfoData(sessions, questionCountView, answerCountView, interposedCountView); + unredInterposedCountView.setKeys(unredInterposedQueryKeys); + unredInterposedCountView.setGroup(true); + return getSessionInfoData(sessions, questionCountView, answerCountView, interposedCountView, unredInterposedCountView); } private List<SessionInfo> getInfosForVisitedSessions(final List<Session> sessions, final User user) { @@ -245,10 +249,12 @@ public class CouchDBDao implements IDatabaseDao { private List<SessionInfo> getSessionInfoData(final List<Session> sessions, final ExtendedView questionCountView, final ExtendedView answerCountView, - final ExtendedView interposedCountView) { + final ExtendedView interposedCountView, + final ExtendedView unredInterposedCountView) { final ViewResults questionCountViewResults = getDatabase().view(questionCountView); final ViewResults answerCountViewResults = getDatabase().view(answerCountView); final ViewResults interposedCountViewResults = getDatabase().view(interposedCountView); + final ViewResults unredInterposedCountViewResults = getDatabase().view(unredInterposedCountView); Map<String, Integer> questionCountMap = new HashMap<String, Integer>(); for (final Document d : questionCountViewResults.getResults()) { @@ -260,13 +266,19 @@ public class CouchDBDao implements IDatabaseDao { } Map<String, Integer> interposedCountMap = new HashMap<String, Integer>(); for (final Document d : interposedCountViewResults.getResults()) { - interposedCountMap.put(d.getJSONArray("key").getString(0), d.getInt("value")); + interposedCountMap.put(d.getString("key"), d.getInt("value")); } + Map<String, Integer> unredInterposedCountMap = new HashMap<String, Integer>(); + for (final Document d : unredInterposedCountViewResults.getResults()) { + unredInterposedCountMap.put(d.getJSONArray("key").getString(0), d.getInt("value")); + } + List<SessionInfo> sessionInfos = new ArrayList<SessionInfo>(); for (Session session : sessions) { int numQuestions = 0; int numAnswers = 0; int numInterposed = 0; + int numUnredInterposed = 0; if (questionCountMap.containsKey(session.get_id())) { numQuestions = questionCountMap.get(session.get_id()); } @@ -276,10 +288,15 @@ public class CouchDBDao implements IDatabaseDao { if (interposedCountMap.containsKey(session.get_id())) { numInterposed = interposedCountMap.get(session.get_id()); } + if (unredInterposedCountMap.containsKey(session.get_id())) { + numUnredInterposed = unredInterposedCountMap.get(session.get_id()); + } + SessionInfo info = new SessionInfo(session); info.setNumQuestions(numQuestions); info.setNumAnswers(numAnswers); info.setNumInterposed(numInterposed); + info.setNumUnredInterposed(numUnredInterposed); sessionInfos.add(info); } return sessionInfos; diff --git a/src/main/java/de/thm/arsnova/entities/SessionInfo.java b/src/main/java/de/thm/arsnova/entities/SessionInfo.java index 8910586d..671211fa 100644 --- a/src/main/java/de/thm/arsnova/entities/SessionInfo.java +++ b/src/main/java/de/thm/arsnova/entities/SessionInfo.java @@ -32,6 +32,7 @@ public class SessionInfo { private int numQuestions; private int numAnswers; private int numInterposed; + private int numUnredInterposed; private int numUnanswered; public SessionInfo(Session session) { @@ -130,4 +131,12 @@ public class SessionInfo { public void setCreationTime(long creationTime) { this.creationTime = creationTime; } + + public int getNumUnredInterposed() { + return numUnredInterposed; + } + + public void setNumUnredInterposed(int numUnredInterposed) { + this.numUnredInterposed = numUnredInterposed; + } } -- GitLab