diff --git a/src/main/java/de/thm/arsnova/cache/CacheBuster.java b/src/main/java/de/thm/arsnova/cache/CacheBuster.java index 2335ae5e2c6a5697104450bb438fb63f04a4f7da..3298bc4dcd4477ba5f1791c772e4c36d1d1a86a3 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 1f669dfcdb5d1eac9f577255529cdc803eddd349..60ed2f01ee59ae89564b603396d73f2ffedf7057 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 0000000000000000000000000000000000000000..b82bdfbde726169278c57f49582a21fa71f895d9 --- /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 1f31845720e370fbc998360434811ab18e1c07a3..4f7b77a63833f668a670ca4b95f0189c9e38872f 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 a00ebc3294fb5cc02c3898424c6f531831da61b5..24b5644a17e4d34193c44a3c44737de2d789f526 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