From f36f58c7ead3b3b89973f3721ddc023f22471e8f Mon Sep 17 00:00:00 2001
From: Christoph Thelen <christoph.thelen@mni.thm.de>
Date: Wed, 11 Feb 2015 13:44:09 +0100
Subject: [PATCH] Store learning progress type in session object

---
 .../java/de/thm/arsnova/dao/CouchDBDao.java   |  2 ++
 .../java/de/thm/arsnova/entities/Session.java |  9 +++++++
 .../transport/LearningProgressType.java       | 24 +++++++++++++++++++
 .../thm/arsnova/services/ISessionService.java |  2 --
 .../arsnova/socket/ARSnovaSocketIOServer.java | 16 +++++++++++++
 5 files changed, 51 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/de/thm/arsnova/entities/transport/LearningProgressType.java

diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 598d80da2..cdb87b61d 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -402,6 +402,7 @@ public class CouchDBDao implements IDatabaseDao {
 		sessionDocument.put("courseType", session.getCourseType());
 		sessionDocument.put("courseId", session.getCourseId());
 		sessionDocument.put("creationTime", session.getCreationTime());
+		sessionDocument.put("learningProgressType", session.getLearningProgressType());
 		sessionDocument.put("ppAuthorName", session.getPpAuthorName());
 		sessionDocument.put("ppAuthorMail", session.getPpAuthorMail());
 		sessionDocument.put("ppUniversity", session.getPpUniversity());
@@ -1290,6 +1291,7 @@ public class CouchDBDao implements IDatabaseDao {
 			s.put("name", session.getName());
 			s.put("shortName", session.getShortName());
 			s.put("active", session.isActive());
+			s.put("learningProgressType", session.getLearningProgressType());
 			database.saveDocument(s);
 			session.set_rev(s.getRev());
 
diff --git a/src/main/java/de/thm/arsnova/entities/Session.java b/src/main/java/de/thm/arsnova/entities/Session.java
index 78e7dbd38..f93ddbba4 100644
--- a/src/main/java/de/thm/arsnova/entities/Session.java
+++ b/src/main/java/de/thm/arsnova/entities/Session.java
@@ -37,6 +37,7 @@ public class Session implements Serializable {
 	private String courseId;
 	private List<String> _conflicts;
 	private long creationTime;
+	private String learningProgressType = "questions";
 
 	private String ppAuthorName;
 	private String ppAuthorMail;
@@ -186,6 +187,14 @@ public class Session implements Serializable {
 		this.creationTime = creationTime;
 	}
 
+	public String getLearningProgressType() {
+		return learningProgressType;
+	}
+
+	public void setLearningProgressType(String learningProgressType) {
+		this.learningProgressType = learningProgressType;
+	}
+
 	public String getPpAuthorName() {
 		return ppAuthorName;
 	}
diff --git a/src/main/java/de/thm/arsnova/entities/transport/LearningProgressType.java b/src/main/java/de/thm/arsnova/entities/transport/LearningProgressType.java
new file mode 100644
index 000000000..3fa990db5
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/entities/transport/LearningProgressType.java
@@ -0,0 +1,24 @@
+package de.thm.arsnova.entities.transport;
+
+public class LearningProgressType {
+
+	private String sessionKeyword;
+
+	private String learningProgressType;
+
+	public String getSessionKeyword() {
+		return sessionKeyword;
+	}
+
+	public void setSessionKeyword(String sessionKeyword) {
+		this.sessionKeyword = sessionKeyword;
+	}
+
+	public String getLearningProgressType() {
+		return learningProgressType;
+	}
+
+	public void setLearningProgressType(String learningProgressType) {
+		this.learningProgressType = learningProgressType;
+	}
+}
diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java
index aa1250b9b..60c7479e2 100644
--- a/src/main/java/de/thm/arsnova/services/ISessionService.java
+++ b/src/main/java/de/thm/arsnova/services/ISessionService.java
@@ -37,8 +37,6 @@ public interface ISessionService {
 
 	List<Session> getMySessions();
 
-	List<Session> getPublicPoolSessions();
-
 	List<Session> getMyVisitedSessions();
 
 	int countSessions(List<Course> courses);
diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
index 2cb748b7c..94fa0787f 100644
--- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
+++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
@@ -48,6 +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.events.DeleteAnswerEvent;
 import de.thm.arsnova.events.NewAnswerEvent;
 import de.thm.arsnova.events.NewInterposedQuestionEvent;
@@ -188,6 +189,21 @@ public class ARSnovaSocketIOServer implements ApplicationListener<NovaEvent>, No
 			}
 		});
 
+		server.addEventListener(
+				"setLearningProgressType",
+				LearningProgressType.class,
+				new DataListener<LearningProgressType>() {
+			@Override
+			public void onData(SocketIOClient client, LearningProgressType progressType, AckRequest ack) {
+				final User user = userService.getUser2SocketId(client.getSessionId());
+				final de.thm.arsnova.entities.Session session = sessionService.getSession(progressType.getSessionKeyword());
+				if (session.isCreator(user)) {
+					session.setLearningProgressType(progressType.getLearningProgressType());
+					sessionService.updateSession(progressType.getSessionKeyword(), session);
+				}
+			}
+		});
+
 		server.addConnectListener(new ConnectListener() {
 			@Override
 			public void onConnect(final SocketIOClient client) { }
-- 
GitLab