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