From d9f82c7d297b174539620b0d361ca75439cc4225 Mon Sep 17 00:00:00 2001 From: Christoph Thelen <christoph.thelen@mni.thm.de> Date: Mon, 13 Apr 2015 18:10:40 +0200 Subject: [PATCH] Fix for #15617: Store learning progress options in Session --- .../arsnova/controller/SessionController.java | 4 +- .../java/de/thm/arsnova/dao/CouchDBDao.java | 4 +- .../entities/LearningProgressOptions.java | 49 +++++++++++++++++++ .../java/de/thm/arsnova/entities/Session.java | 14 +++--- ...Type.java => LearningProgressOptions.java} | 29 ++++++++--- .../arsnova/socket/ARSnovaSocketIOServer.java | 18 +++---- 6 files changed, 92 insertions(+), 26 deletions(-) create mode 100644 src/main/java/de/thm/arsnova/entities/LearningProgressOptions.java rename src/main/java/de/thm/arsnova/entities/transport/{LearningProgressType.java => LearningProgressOptions.java} (59%) diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 8c0dc373..d777e1a4 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -235,7 +235,7 @@ public class SessionController extends AbstractController { public LearningProgressValues learningProgress( @PathVariable final String sessionkey, @RequestParam(value = "type", defaultValue = "questions") final String progressType, - @RequestParam(value = "variant", required = false) final String questionVariant, + @RequestParam(value = "questionVariant", required = false) final String questionVariant, final HttpServletResponse response ) { return sessionService.getLearningProgress(sessionkey, progressType, questionVariant); @@ -245,7 +245,7 @@ public class SessionController extends AbstractController { public LearningProgressValues myLearningProgress( @PathVariable final String sessionkey, @RequestParam(value = "type", defaultValue = "questions") final String progressType, - @RequestParam(value = "variant", required = false) final String questionVariant, + @RequestParam(value = "questionVariant", required = false) final String questionVariant, final HttpServletResponse response ) { return sessionService.getMyLearningProgress(sessionkey, progressType, questionVariant); diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index ca123082..880502ad 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -438,7 +438,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware sessionDocument.put("courseType", session.getCourseType()); sessionDocument.put("courseId", session.getCourseId()); sessionDocument.put("creationTime", session.getCreationTime()); - sessionDocument.put("learningProgressType", session.getLearningProgressType()); + sessionDocument.put("learningProgressOptions", JSONObject.fromObject(session.getLearningProgressOptions())); sessionDocument.put("ppAuthorName", session.getPpAuthorName()); sessionDocument.put("ppAuthorMail", session.getPpAuthorMail()); sessionDocument.put("ppUniversity", session.getPpUniversity()); @@ -1411,7 +1411,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware s.put("name", session.getName()); s.put("shortName", session.getShortName()); s.put("active", session.isActive()); - s.put("learningProgressType", session.getLearningProgressType()); + s.put("learningProgressOptions", JSONObject.fromObject(session.getLearningProgressOptions())); s.put("features", JSONObject.fromObject(session.getFeatures())); database.saveDocument(s); session.set_rev(s.getRev()); diff --git a/src/main/java/de/thm/arsnova/entities/LearningProgressOptions.java b/src/main/java/de/thm/arsnova/entities/LearningProgressOptions.java new file mode 100644 index 00000000..9c908fd9 --- /dev/null +++ b/src/main/java/de/thm/arsnova/entities/LearningProgressOptions.java @@ -0,0 +1,49 @@ +/* + * 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.entities; + +public class LearningProgressOptions { + + private String type; + + private String questionVariant; + + public LearningProgressOptions(LearningProgressOptions learningProgressOptions) { + this(); + this.type = learningProgressOptions.getType(); + this.questionVariant = learningProgressOptions.getQuestionVariant(); + } + + public LearningProgressOptions() {} + + public String getType() { + return type; + } + + public void setType(String learningProgressType) { + this.type = learningProgressType; + } + + public String getQuestionVariant() { + return questionVariant; + } + + public void setQuestionVariant(String questionVariant) { + this.questionVariant = questionVariant; + } +} diff --git a/src/main/java/de/thm/arsnova/entities/Session.java b/src/main/java/de/thm/arsnova/entities/Session.java index dd87a3ed..ed2ea897 100644 --- a/src/main/java/de/thm/arsnova/entities/Session.java +++ b/src/main/java/de/thm/arsnova/entities/Session.java @@ -25,7 +25,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class Session implements Serializable { private static final long serialVersionUID = 1L; - + private String type; private String name; private String shortName; @@ -37,7 +37,7 @@ public class Session implements Serializable { private String courseId; private List<String> _conflicts; private long creationTime; - private String learningProgressType = "questions"; + private LearningProgressOptions learningProgressOptions; private SessionFeature features; private String ppAuthorName; @@ -71,7 +71,7 @@ public class Session implements Serializable { copy.courseType = original.courseType; copy.courseId = original.courseId; copy.creationTime = original.creationTime; - copy.learningProgressType = original.learningProgressType; + copy.learningProgressOptions = new LearningProgressOptions(original.learningProgressOptions); copy.features = new SessionFeature(original.features); // public pool copy.ppAuthorName = original.ppAuthorName; @@ -203,12 +203,12 @@ public class Session implements Serializable { this.creationTime = creationTime; } - public String getLearningProgressType() { - return learningProgressType; + public LearningProgressOptions getLearningProgressOptions() { + return learningProgressOptions; } - public void setLearningProgressType(String learningProgressType) { - this.learningProgressType = learningProgressType; + public void setLearningProgressOptions(LearningProgressOptions learningProgressOptions) { + this.learningProgressOptions = learningProgressOptions; } public SessionFeature getFeatures() { diff --git a/src/main/java/de/thm/arsnova/entities/transport/LearningProgressType.java b/src/main/java/de/thm/arsnova/entities/transport/LearningProgressOptions.java similarity index 59% rename from src/main/java/de/thm/arsnova/entities/transport/LearningProgressType.java rename to src/main/java/de/thm/arsnova/entities/transport/LearningProgressOptions.java index 4293c34b..081bc4fa 100644 --- a/src/main/java/de/thm/arsnova/entities/transport/LearningProgressType.java +++ b/src/main/java/de/thm/arsnova/entities/transport/LearningProgressOptions.java @@ -17,11 +17,13 @@ */ package de.thm.arsnova.entities.transport; -public class LearningProgressType { +public class LearningProgressOptions { private String sessionKeyword; - private String learningProgressType; + private String type; + + private String questionVariant; public String getSessionKeyword() { return sessionKeyword; @@ -31,11 +33,26 @@ public class LearningProgressType { this.sessionKeyword = sessionKeyword; } - public String getLearningProgressType() { - return learningProgressType; + public String getType() { + return type; + } + + public void setType(String learningProgressType) { + this.type = learningProgressType; + } + + public String getQuestionVariant() { + return questionVariant; + } + + public void setQuestionVariant(String questionVariant) { + this.questionVariant = questionVariant; } - public void setLearningProgressType(String learningProgressType) { - this.learningProgressType = learningProgressType; + public de.thm.arsnova.entities.LearningProgressOptions toEntity() { + de.thm.arsnova.entities.LearningProgressOptions entity = new de.thm.arsnova.entities.LearningProgressOptions(); + entity.setType(this.getType()); + entity.setQuestionVariant(this.getQuestionVariant()); + return entity; } } diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index 1764f9f2..25aab8cd 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -48,7 +48,7 @@ import com.corundumstudio.socketio.protocol.PacketType; import de.thm.arsnova.entities.InterposedQuestion; import de.thm.arsnova.entities.User; -import de.thm.arsnova.entities.transport.LearningProgressType; +import de.thm.arsnova.entities.transport.LearningProgressOptions; import de.thm.arsnova.events.ChangeLearningProgress; import de.thm.arsnova.events.DeleteAllLectureAnswersEvent; import de.thm.arsnova.events.DeleteAllPreparationAnswersEvent; @@ -200,17 +200,17 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor { }); server.addEventListener( - "setLearningProgressType", - LearningProgressType.class, - new DataListener<LearningProgressType>() { + "setLearningProgressOptions", + LearningProgressOptions.class, + new DataListener<LearningProgressOptions>() { @Override - public void onData(SocketIOClient client, LearningProgressType progressType, AckRequest ack) { + public void onData(SocketIOClient client, LearningProgressOptions progressOptions, AckRequest ack) { final User user = userService.getUser2SocketId(client.getSessionId()); - final de.thm.arsnova.entities.Session session = sessionService.getSessionInternal(progressType.getSessionKeyword(), user); + final de.thm.arsnova.entities.Session session = sessionService.getSessionInternal(progressOptions.getSessionKeyword(), user); if (session.isCreator(user)) { - session.setLearningProgressType(progressType.getLearningProgressType()); + session.setLearningProgressOptions(progressOptions.toEntity()); sessionService.updateSessionInternal(session, user); - broadcastInSession(session.getKeyword(), "learningProgressType", progressType.getLearningProgressType()); + broadcastInSession(session.getKeyword(), "learningProgressOptions", progressOptions.toEntity()); } } }); @@ -351,7 +351,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor { client.sendEvent("countLectureQuestionAnswers", questionService.countLectureQuestionAnswersInternal(sessionKey)); client.sendEvent("countPreparationQuestionAnswers", questionService.countPreparationQuestionAnswersInternal(sessionKey)); client.sendEvent("activeUserCountData", sessionService.activeUsers(sessionKey)); - client.sendEvent("learningProgressType", session.getLearningProgressType()); + client.sendEvent("learningProgressOptions", session.getLearningProgressOptions()); final de.thm.arsnova.entities.Feedback fb = feedbackService.getFeedback(sessionKey); client.sendEvent("feedbackData", fb.getValues()); try { -- GitLab