From 412ff5556f1078226325d00b2a5461fa3d91a42d Mon Sep 17 00:00:00 2001 From: Christoph Thelen <christoph.thelen@mni.thm.de> Date: Mon, 25 Aug 2014 14:29:56 +0200 Subject: [PATCH] Fixes #11549: List user's own messages --- src/main/java/de/thm/arsnova/dao/CouchDBDao.java | 13 +++++++++++++ src/main/java/de/thm/arsnova/dao/IDatabaseDao.java | 2 ++ .../de/thm/arsnova/services/QuestionService.java | 7 ++++++- .../java/de/thm/arsnova/dao/StubDatabaseDao.java | 6 ++++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 4d89b51a7..770a4d7d8 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 e1a81d40e..45926de75 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 33afeb269..b19217cda 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 b3ba0a4ed..699ab3a3d 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; + } } -- GitLab