From de48cbf7202837ba38a67c0b6c8bc43e326109a2 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:04:43 +0100 Subject: [PATCH] Add LockFeedbackEvent --- .../de/thm/arsnova/cache/CacheBuster.java | 4 ++ .../domain/LearningProgressFactory.java | 4 ++ .../thm/arsnova/events/LockFeedbackEvent.java | 37 +++++++++++++++++++ .../thm/arsnova/events/NovaEventVisitor.java | 1 + .../arsnova/socket/ARSnovaSocketIOServer.java | 18 +++++++-- 5 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java diff --git a/src/main/java/de/thm/arsnova/cache/CacheBuster.java b/src/main/java/de/thm/arsnova/cache/CacheBuster.java index 2335ae5e..3298bc4d 100644 --- a/src/main/java/de/thm/arsnova/cache/CacheBuster.java +++ b/src/main/java/de/thm/arsnova/cache/CacheBuster.java @@ -31,6 +31,7 @@ import de.thm.arsnova.events.DeleteInterposedQuestionEvent; import de.thm.arsnova.events.DeleteQuestionEvent; import de.thm.arsnova.events.DeleteSessionEvent; import de.thm.arsnova.events.FeatureChangeEvent; +import de.thm.arsnova.events.LockFeedbackEvent; import de.thm.arsnova.events.LockQuestionEvent; import de.thm.arsnova.events.LockQuestionsEvent; import de.thm.arsnova.events.LockVoteEvent; @@ -151,4 +152,7 @@ public class CacheBuster implements ICacheBuster, NovaEventVisitor { @Override public void visit(FeatureChangeEvent featureChangeEvent) {} + @Override + public void visit(LockFeedbackEvent lockFeedbackEvent) {} + } diff --git a/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java b/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java index 1f669dfc..60ed2f01 100644 --- a/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java +++ b/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java @@ -35,6 +35,7 @@ import de.thm.arsnova.events.DeleteInterposedQuestionEvent; import de.thm.arsnova.events.DeleteQuestionEvent; import de.thm.arsnova.events.DeleteSessionEvent; import de.thm.arsnova.events.FeatureChangeEvent; +import de.thm.arsnova.events.LockFeedbackEvent; import de.thm.arsnova.events.LockQuestionEvent; import de.thm.arsnova.events.LockQuestionsEvent; import de.thm.arsnova.events.LockVoteEvent; @@ -211,4 +212,7 @@ public class LearningProgressFactory implements NovaEventVisitor, ILearningProgr @Override public void visit(FeatureChangeEvent featureChangeEvent) {} + @Override + public void visit(LockFeedbackEvent lockFeedbackEvent) {} + } diff --git a/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java b/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java new file mode 100644 index 00000000..b82bdfbd --- /dev/null +++ b/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java @@ -0,0 +1,37 @@ +/* + * This file is part of ARSnova Backend. + * Copyright (C) 2012-2015 The ARSnova Team + * + * ARSnova Backend is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * ARSnova Backend is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package de.thm.arsnova.events; + +import de.thm.arsnova.entities.Session; + +/** + * Fires whenever voting on a question is disabled. + */ +public class LockFeedbackEvent extends SessionEvent { + + private static final long serialVersionUID = 1L; + + public LockFeedbackEvent(Object source, Session session) { + super(source, session); + } + + @Override + public void accept(NovaEventVisitor visitor) { + visitor.visit(this); + } +} diff --git a/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java b/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java index 1f318457..4f7b77a6 100644 --- a/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java +++ b/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java @@ -80,4 +80,5 @@ public interface NovaEventVisitor { void visit(FeatureChangeEvent featureChangeEvent); + void visit(LockFeedbackEvent lockFeedbackEvent); } diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index a00ebc32..24b5644a 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -61,6 +61,7 @@ import de.thm.arsnova.events.DeleteInterposedQuestionEvent; import de.thm.arsnova.events.DeleteQuestionEvent; import de.thm.arsnova.events.DeleteSessionEvent; import de.thm.arsnova.events.FeatureChangeEvent; +import de.thm.arsnova.events.LockFeedbackEvent; import de.thm.arsnova.events.LockQuestionEvent; import de.thm.arsnova.events.LockQuestionsEvent; import de.thm.arsnova.events.LockVoteEvent; @@ -171,9 +172,15 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor { return; } final String sessionKey = userService.getSessionForUser(u.getUsername()); - LOGGER.debug("Feedback recieved: {}", new Object[] {u, sessionKey, data.getValue()}); - if (null != sessionKey) { - feedbackService.saveFeedback(sessionKey, data.getValue(), u); + final de.thm.arsnova.entities.Session session = sessionService.getSessionInternal(sessionKey, u); + + if (session.getFeedbackLock()) { + LOGGER.debug("Feedback save blocked: {}", new Object[] {u, sessionKey, data.getValue()}); + } else { + LOGGER.debug("Feedback recieved: {}", new Object[] {u, sessionKey, data.getValue()}); + if (null != sessionKey) { + feedbackService.saveFeedback(sessionKey, data.getValue(), u); + } } } }); @@ -609,6 +616,11 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor { broadcastInSession(sessionKey, "featureChange", event.getSession().getFeatures()); } + @Override + public void visit(LockFeedbackEvent event) { + broadcastInSession(event.getSession().getKeyword(), "lockFeedback", event.getSession().getFeedbackLock()); + } + @Override public void visit(DeleteQuestionEvent deleteQuestionEvent) { // TODO Auto-generated method stub -- GitLab