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