diff --git a/src/main/java/de/thm/arsnova/FeedbackStorage.java b/src/main/java/de/thm/arsnova/FeedbackStorage.java index 07a203b4af61c69b497dadd970c27556acc9b507..e6ec8854ca01d43780134e552394c832eece230a 100644 --- a/src/main/java/de/thm/arsnova/FeedbackStorage.java +++ b/src/main/java/de/thm/arsnova/FeedbackStorage.java @@ -119,15 +119,18 @@ public class FeedbackStorage { public Map<Session, List<User>> cleanFeedbackVotes(final int cleanupFeedbackDelay) { final Map<Session, List<User>> removedFeedbackOfUsersInSession = new HashMap<Session, List<User>>(); for (final Session session : data.keySet()) { - List<User> affectedUsers = cleanFeedbackVotesInSession(session, cleanupFeedbackDelay); - if (!affectedUsers.isEmpty()) { - removedFeedbackOfUsersInSession.put(session, affectedUsers); + if (!session.getFeatures().isLiveClicker()) { + List<User> affectedUsers = cleanFeedbackVotesInSession(session, cleanupFeedbackDelay); + if (!affectedUsers.isEmpty()) { + removedFeedbackOfUsersInSession.put(session, affectedUsers); + } } } return removedFeedbackOfUsersInSession; } - private List<User> cleanFeedbackVotesInSession(final Session session, final int cleanupFeedbackDelayInMins) { + @Transactional(isolation = Isolation.READ_COMMITTED) + public List<User> cleanFeedbackVotesInSession(final Session session, final int cleanupFeedbackDelayInMins) { final long timelimitInMillis = TimeUnit.MILLISECONDS.convert(cleanupFeedbackDelayInMins, TimeUnit.MINUTES); final Date maxAllowedTime = new Date(System.currentTimeMillis() - timelimitInMillis); diff --git a/src/main/java/de/thm/arsnova/entities/SessionFeature.java b/src/main/java/de/thm/arsnova/entities/SessionFeature.java index f5fa72c6bd5d49e94b7cce2a073b8a19d5735536..4cbfbcd4ca1fac4daa2a220ae389e8e082fdbe9b 100644 --- a/src/main/java/de/thm/arsnova/entities/SessionFeature.java +++ b/src/main/java/de/thm/arsnova/entities/SessionFeature.java @@ -29,6 +29,7 @@ public class SessionFeature { private boolean clicker = false; private boolean peerGrading = false; private boolean liveFeedback = false; + private boolean liveClicker = false; private boolean flashcard = false; private boolean total = false; @@ -46,6 +47,7 @@ public class SessionFeature { this.clicker = features.clicker; this.peerGrading = features.peerGrading; this.liveFeedback = features.liveFeedback; + this.liveClicker = features.liveClicker; this.flashcard = features.flashcard; this.total = features.total; this.lecture = features.lecture; @@ -160,4 +162,12 @@ public class SessionFeature { this.liveFeedback = liveFeedback; } + public boolean isLiveClicker() { + return liveClicker; + } + + public void setLiveClicker(boolean liveClicker) { + this.liveClicker = liveClicker; + } + }