From 7207bad9d74ef23af14012a2440cb6ae5a394af5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20G=C3=A4rtner?= <andreas.gaertner@hotmail.com>
Date: Tue, 8 Dec 2015 14:10:26 +0100
Subject: [PATCH] Add "liveClicker" use case for abcd-live-questions.

Feedback reset will be disabled for liveClicker-sessions.
---
 src/main/java/de/thm/arsnova/FeedbackStorage.java     | 11 +++++++----
 .../java/de/thm/arsnova/entities/SessionFeature.java  | 10 ++++++++++
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/FeedbackStorage.java b/src/main/java/de/thm/arsnova/FeedbackStorage.java
index 07a203b4..e6ec8854 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 f5fa72c6..4cbfbcd4 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;
+	}
+
 }
-- 
GitLab