diff --git a/src/main/java/de/thm/arsnova/cache/CacheBuster.java b/src/main/java/de/thm/arsnova/cache/CacheBuster.java index 8a3d9fce334bbee10a51cb9171541775a3595e30..2335ae5e2c6a5697104450bb438fb63f04a4f7da 100644 --- a/src/main/java/de/thm/arsnova/cache/CacheBuster.java +++ b/src/main/java/de/thm/arsnova/cache/CacheBuster.java @@ -30,6 +30,7 @@ import de.thm.arsnova.events.DeleteFeedbackForSessionsEvent; 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.LockQuestionEvent; import de.thm.arsnova.events.LockQuestionsEvent; import de.thm.arsnova.events.LockVoteEvent; @@ -147,4 +148,7 @@ public class CacheBuster implements ICacheBuster, NovaEventVisitor { @Override public void visit(UnlockVotesEvent unlockVotesEvent) {} + @Override + public void visit(FeatureChangeEvent featureChangeEvent) {} + } diff --git a/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java b/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java index 4de4fa37c2cf07aac7f421cafd264bf099e399f8..1f669dfcdb5d1eac9f577255529cdc803eddd349 100644 --- a/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java +++ b/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java @@ -34,6 +34,7 @@ import de.thm.arsnova.events.DeleteFeedbackForSessionsEvent; 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.LockQuestionEvent; import de.thm.arsnova.events.LockQuestionsEvent; import de.thm.arsnova.events.LockVoteEvent; @@ -207,4 +208,7 @@ public class LearningProgressFactory implements NovaEventVisitor, ILearningProgr @Override public void visit(UnlockVotesEvent unlockVotesEvent) {} + @Override + public void visit(FeatureChangeEvent featureChangeEvent) {} + } diff --git a/src/main/java/de/thm/arsnova/entities/SessionFeature.java b/src/main/java/de/thm/arsnova/entities/SessionFeature.java index b8f59b38a6eb16bee4f9966bce04368bdfc19bdb..a09cb402d659bdecad172534b14e1711322bfa07 100644 --- a/src/main/java/de/thm/arsnova/entities/SessionFeature.java +++ b/src/main/java/de/thm/arsnova/entities/SessionFeature.java @@ -23,6 +23,7 @@ package de.thm.arsnova.entities; public class SessionFeature { private boolean jitt = true; + private boolean lecture = true; private boolean feedback = true; private boolean interposed = true; private boolean pi = true; @@ -31,6 +32,7 @@ public class SessionFeature { public SessionFeature(SessionFeature features) { this(); if (features != null) { + this.lecture = features.lecture; this.jitt = features.jitt; this.feedback = features.feedback; this.interposed = features.interposed; @@ -41,6 +43,14 @@ public class SessionFeature { public SessionFeature() {} + public boolean isLecture() { + return lecture; + } + + public void setLecture(boolean lecture) { + this.lecture = lecture; + } + public boolean isJitt() { return jitt; } diff --git a/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java b/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..9e305e8792f0d95db11243fec446d1d22635e4ce --- /dev/null +++ b/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java @@ -0,0 +1,38 @@ +/* + * 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 a new session is created. + */ +public class FeatureChangeEvent extends SessionEvent { + + private static final long serialVersionUID = 1L; + + public FeatureChangeEvent(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 216c38f8e6b9b803dc18a76a6f13b24939f14c43..1f31845720e370fbc998360434811ab18e1c07a3 100644 --- a/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java +++ b/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java @@ -78,4 +78,6 @@ public interface NovaEventVisitor { void visit(UnlockVotesEvent unlockVotesEvent); + void visit(FeatureChangeEvent featureChangeEvent); + } diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index eb341b7b4ada4b6ce698c8bd8d887c9cae4231f3..74940d24a7919625005402968ec09590b7f14963 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -47,6 +47,7 @@ import de.thm.arsnova.entities.User; import de.thm.arsnova.entities.transport.ImportExportSession; import de.thm.arsnova.entities.transport.LearningProgressValues; import de.thm.arsnova.events.DeleteSessionEvent; +import de.thm.arsnova.events.FeatureChangeEvent; import de.thm.arsnova.events.NewSessionEvent; import de.thm.arsnova.events.StatusSessionEvent; import de.thm.arsnova.exceptions.BadRequestException; @@ -240,6 +241,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe session.setLearningProgressOptions(lpo); SessionFeature sf = new SessionFeature(); + sf.setLecture(true); sf.setFeedback(true); sf.setInterposed(true); sf.setJitt(true); @@ -412,6 +414,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe throw new UnauthorizedException(); } session.setFeatures(features); + this.publisher.publishEvent(new FeatureChangeEvent(this, session)); return databaseDao.updateSession(session).getFeatures(); } diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index 1283b2664a73d891535dc3652c7ea0daadeb2182..a00ebc3294fb5cc02c3898424c6f531831da61b5 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -60,6 +60,7 @@ import de.thm.arsnova.events.DeleteFeedbackForSessionsEvent; 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.LockQuestionEvent; import de.thm.arsnova.events.LockQuestionsEvent; import de.thm.arsnova.events.LockVoteEvent; @@ -602,6 +603,12 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor { broadcastInSession(event.getSession().getKeyword(), "unlockVotes", questions); } + @Override + public void visit(FeatureChangeEvent event) { + final String sessionKey = event.getSession().getKeyword(); + broadcastInSession(sessionKey, "featureChange", event.getSession().getFeatures()); + } + @Override public void visit(DeleteQuestionEvent deleteQuestionEvent) { // TODO Auto-generated method stub