diff --git a/src/main/java/de/thm/arsnova/services/FeedbackService.java b/src/main/java/de/thm/arsnova/services/FeedbackService.java index 5085a298d7bd2b354424ae3caae22c958631b4a8..53a0ee4f793ebd5cca1061025b17b78ed6f55410 100644 --- a/src/main/java/de/thm/arsnova/services/FeedbackService.java +++ b/src/main/java/de/thm/arsnova/services/FeedbackService.java @@ -102,9 +102,7 @@ public class FeedbackService implements IFeedbackService { public final boolean saveFeedback(final String keyword, final int value, final User user) { boolean result = databaseDao.saveFeedback(keyword, value, user); if (result) { - HashSet<String> set = new HashSet<String>(); - set.add(keyword); - this.server.reportUpdatedFeedbackForSessions(set); + this.server.reportUpdatedFeedbackForSession(keyword); } return result; } @@ -130,7 +128,10 @@ public class FeedbackService implements IFeedbackService { this.server.reportDeletedFeedback(e.getKey(), e.getValue()); } } - this.server.reportUpdatedFeedbackForSessions(allAffectedSessions); + for(String session : allAffectedSessions) { + this.server.reportUpdatedFeedbackForSession(session); + } + } @Override diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index 8d1b7ad50bcc394eab76f5356eef2a61029f3a3a..896c9f991a8599975c192e50053b89e6cc0f308e 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -91,30 +91,11 @@ public class ARSnovaSocketIOServer { } feedbackService.saveFeedback(data.getSessionkey(), data.getValue(), u); - + /** - * collect a list of users which are in the current - * session iterate over all connected clients and if - * send feedback, if user is in current session + * send feedback back to clients */ - List<String> users = userService.getUsersInSession(data - .getSessionkey()); - - logger.info(u.toString()); - logger.info(users.toString()); - logger.info(data.getSessionkey()); - - de.thm.arsnova.entities.Feedback fb = feedbackService - .getFeedback(data.getSessionkey()); - - for (SocketIOClient c : server.getAllClients()) { - u = userService.getUser2SocketId(c.getSessionId()); - if (u != null && users.contains(u.getUsername())) { - logger.info("sending out to client {}, username is: {}, current session is: {}", - new Object[] {c.getSessionId(), u.getUsername(), data.getSessionkey()}); - c.sendEvent("updateFeedback", fb.getValues()); - } - } + reportUpdatedFeedbackForSession(data.getSessionkey()); } }); @@ -225,12 +206,22 @@ public class ARSnovaSocketIOServer { return result; } - public void reportUpdatedFeedbackForSessions(Set<String> allAffectedSessions) { - for (String sessionKey : allAffectedSessions) { - de.thm.arsnova.entities.Feedback fb = feedbackService - .getFeedback(sessionKey); - server.getBroadcastOperations().sendEvent("updateFeedback", - fb.getValues()); + public void reportUpdatedFeedbackForSession(String session) { + /** + * collect a list of users which are in the current + * session iterate over all connected clients and if + * send feedback, if user is in current session + */ + List<String> users = userService.getUsersInSession(session); + de.thm.arsnova.entities.Feedback fb = feedbackService.getFeedback(session); + + for (SocketIOClient c : server.getAllClients()) { + User u = userService.getUser2SocketId(c.getSessionId()); + if (u != null && users.contains(u.getUsername())) { + logger.info("sending out to client {}, username is: {}, current session is: {}", + new Object[] {c.getSessionId(), u.getUsername(), session}); + c.sendEvent("updateFeedback", fb.getValues()); + } } } } \ No newline at end of file