From ad42d5ff1cb9eda921001e0c001af7cf2439675e Mon Sep 17 00:00:00 2001
From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de>
Date: Thu, 28 Feb 2013 12:03:37 +0100
Subject: [PATCH] Add number of sessions to name and short name

If the current session is linked to a course and there are other sessions
for this course, add a number to the name and short name of the session,
indicating which session is ment since all sessions will have the same
name and short name.
---
 .../arsnova/controller/SessionController.java | 23 +++++++++++++++----
 .../thm/arsnova/services/ISessionService.java |  3 +++
 .../thm/arsnova/services/SessionService.java  | 10 ++++++++
 3 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index c68ee6a91..fdafc5270 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -18,6 +18,7 @@
  */
 package de.thm.arsnova.controller;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -36,6 +37,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseStatus;
 
+import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.entities.LoggedIn;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
@@ -91,13 +93,26 @@ public class SessionController extends AbstractController {
 	@ResponseBody
 	@ResponseStatus(HttpStatus.CREATED)
 	public final Session postNewSession(@RequestBody final Session session, final HttpServletResponse response) {
+		if (session != null && session.isCourseSession()) {
+			List<Course> courses = new ArrayList<Course>();
+			Course course = new Course();
+			course.setId(session.getCourseId());
+			courses.add(course);
+			int sessionCount = sessionService.countSessions(courses);
+			if (sessionCount > 0) {
+				String appendix = " (" + String.valueOf(sessionCount + 1) + ")";
+				session.setName(session.getName() + appendix);
+				session.setShortName(session.getShortName() + appendix);
+			}
+		}
 		Session newSession = sessionService.saveSession(session);
-		if (session != null) {
-			return newSession;
+
+		if (newSession == null) {
+			response.setStatus(HttpStatus.SERVICE_UNAVAILABLE.value());
+			return null;
 		}
 
-		response.setStatus(HttpStatus.SERVICE_UNAVAILABLE.value());
-		return null;
+		return newSession;
 	}
 
 	@RequestMapping(value = "/", method = RequestMethod.GET)
diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java
index 24641cc7a..17ebdef32 100644
--- a/src/main/java/de/thm/arsnova/services/ISessionService.java
+++ b/src/main/java/de/thm/arsnova/services/ISessionService.java
@@ -21,6 +21,7 @@ package de.thm.arsnova.services;
 
 import java.util.List;
 
+import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.entities.LoggedIn;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
@@ -41,4 +42,6 @@ public interface ISessionService {
 	LoggedIn registerAsOnlineUser(User user, String sessionkey);
 
 	int countActiveUsers(String sessionkey);
+
+	int countSessions(List<Course> courses);
 }
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index 61a85a0e2..d61533588 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -32,6 +32,7 @@ import org.springframework.stereotype.Service;
 
 import de.thm.arsnova.annotation.Authenticated;
 import de.thm.arsnova.connector.client.ConnectorClient;
+import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.dao.IDatabaseDao;
 import de.thm.arsnova.entities.LoggedIn;
 import de.thm.arsnova.entities.Session;
@@ -173,4 +174,13 @@ public class SessionService implements ISessionService {
 			return session1.getShortName().compareToIgnoreCase(session2.getShortName());
 		}
 	}
+
+	@Override
+	public int countSessions(List<Course> courses) {
+		List<Session> sessions = databaseDao.getCourseSessions(courses);
+		if (sessions == null) {
+			return 0;
+		}
+		return sessions.size();
+	}
 }
-- 
GitLab