diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 4d89b51a7f093322f819adaeeafde5f2b1b1284c..770a4d7d8b413804a3fab9de7a632ca1145871c0 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -692,6 +692,19 @@ public class CouchDBDao implements IDatabaseDao { view.setStartKeyArray(session.get_id()); view.setEndKeyArray(session.get_id(), "{}"); view.setGroup(true); + return getInterposedReadingCount(view); + } + + @Override + public InterposedReadingCount getInterposedReadingCount(final Session session, final User user) { + final NovaView view = new NovaView("interposed_question/count_by_session_reading_for_creator"); + view.setStartKeyArray(session.get_id(), user.getUsername()); + view.setEndKeyArray(session.get_id(), user.getUsername(), "{}"); + view.setGroup(true); + return getInterposedReadingCount(view); + } + + private InterposedReadingCount getInterposedReadingCount(final NovaView view) { final ViewResults results = getDatabase().view(view); if (results.size() == 0 || results.getResults().size() == 0) { return new InterposedReadingCount(); diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index e1a81d40e9072399ef10224879d36b96687c715b..45926de753f09d1f2f4ce8d558093e8541eab753 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -83,6 +83,8 @@ public interface IDatabaseDao { InterposedReadingCount getInterposedReadingCount(Session session); + InterposedReadingCount getInterposedReadingCount(Session session, User user); + List<InterposedQuestion> getInterposedQuestions(Session session); List<InterposedQuestion> getInterposedQuestions(Session session, User user); diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index 33afeb269000b7fb58dc8b7b4433f21b7c41616d..b19217cdaaa12b96d3231048673b4c96d849387c 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -322,10 +322,15 @@ public class QuestionService implements IQuestionService { @PreAuthorize("isAuthenticated()") public InterposedReadingCount getInterposedReadingCount(final String sessionKey) { final Session session = databaseDao.getSessionFromKeyword(sessionKey); + final User user = getCurrentUser(); if (session == null) { throw new NotFoundException(); } - return databaseDao.getInterposedReadingCount(session); + if (session.isCreator(user)) { + return databaseDao.getInterposedReadingCount(session); + } else { + return databaseDao.getInterposedReadingCount(session, user); + } } @Override diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index b3ba0a4ed8672bcdc1c49862fee6f2941504d69f..699ab3a3df9a27e6a7bf54aceedbbd420393f76c 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -529,4 +529,10 @@ public class StubDatabaseDao implements IDatabaseDao { // TODO Auto-generated method stub } + + @Override + public InterposedReadingCount getInterposedReadingCount(Session session, User user) { + // TODO Auto-generated method stub + return null; + } }