From 3b71c7b69d88e84dbae4f8031b88e7dfcacec290 Mon Sep 17 00:00:00 2001
From: Christoph Thelen <christoph.thelen@mni.thm.de>
Date: Wed, 29 Oct 2014 11:29:57 +0100
Subject: [PATCH] Update feedback of all clients after feedback reset

---
 src/main/java/de/thm/arsnova/FeedbackStorage.java    | 12 +++++++-----
 .../de/thm/arsnova/services/FeedbackService.java     |  5 +++++
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/FeedbackStorage.java b/src/main/java/de/thm/arsnova/FeedbackStorage.java
index 785a268e9..66e58d8e8 100644
--- a/src/main/java/de/thm/arsnova/FeedbackStorage.java
+++ b/src/main/java/de/thm/arsnova/FeedbackStorage.java
@@ -114,8 +114,10 @@ public class FeedbackStorage {
 	public Map<String, List<User>> cleanFeedbackVotes(final int cleanupFeedbackDelay) {
 		final Map<String, List<User>> removedFeedbackOfUsersInSession = new HashMap<String, List<User>>();;
 		for (final String keyword : data.keySet()) {
-			List<User> feedbackOfUsers = cleanFeedbackVotesInSession(keyword, cleanupFeedbackDelay);
-			removedFeedbackOfUsersInSession.put(keyword, feedbackOfUsers);
+			List<User> affectedUsers = cleanFeedbackVotesInSession(keyword, cleanupFeedbackDelay);
+			if (!affectedUsers.isEmpty()) {
+				removedFeedbackOfUsersInSession.put(keyword, affectedUsers);
+			}
 		}
 		return removedFeedbackOfUsersInSession;
 	}
@@ -125,15 +127,15 @@ public class FeedbackStorage {
 		final long maxAllowedTimeInMillis = System.currentTimeMillis() - timelimitInMillis;
 
 		final Map<String, FeedbackStorageObject> sessionFeedbacks = data.get(keyword);
-		final List<User> feedbackOfUsers = new ArrayList<User>();
+		final List<User> affectedUsers = new ArrayList<User>();
 
 		for (final Map.Entry<String, FeedbackStorageObject> entry : sessionFeedbacks.entrySet()) {
 			final boolean timeIsUp = entry.getValue().getTimestamp().getTime() < maxAllowedTimeInMillis;
 			if (timeIsUp) {
 				sessionFeedbacks.remove(entry.getKey());
-				feedbackOfUsers.add(entry.getValue().user);
+				affectedUsers.add(entry.getValue().user);
 			}
 		}
-		return feedbackOfUsers;
+		return affectedUsers;
 	}
 }
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackService.java b/src/main/java/de/thm/arsnova/services/FeedbackService.java
index acd5bba58..96e1b5724 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackService.java
+++ b/src/main/java/de/thm/arsnova/services/FeedbackService.java
@@ -92,11 +92,16 @@ public class FeedbackService implements IFeedbackService {
 				affectedSessionsOfUsers.put(user, affectedSessions);
 			}
 		}
+		// Send feedback reset event to all affected users
 		for (Map.Entry<User, Set<String>> entry : affectedSessionsOfUsers.entrySet()) {
 			final User user = entry.getKey();
 			final Set<String> arsSessions = entry.getValue();
 			server.reportDeletedFeedback(user.getUsername(), arsSessions);
 		}
+		// For each session that has deleted feedback, send the new feedback to all clients
+		for (String sessionKey : deletedFeedbackOfUsersInSession.keySet()) {
+			server.reportUpdatedFeedbackForSession(sessionKey);
+		}
 	}
 
 	@Override
-- 
GitLab