From 0d50fb1531c32cc83f3f020cdc36cd1edb192e46 Mon Sep 17 00:00:00 2001
From: Christoph Thelen <christoph.thelen@mni.thm.de>
Date: Sat, 18 Apr 2015 16:38:47 +0200
Subject: [PATCH] Delete sort order documents when deleting a session

---
 .../java/de/thm/arsnova/dao/IDatabaseDao.java |  4 +--
 .../thm/arsnova/services/SessionService.java  | 25 +++++++++++++++++++
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 97666eb0..8501e053 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -29,9 +29,9 @@ import de.thm.arsnova.entities.LoggedIn;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.SessionInfo;
+import de.thm.arsnova.entities.SortOrder;
 import de.thm.arsnova.entities.Statistics;
 import de.thm.arsnova.entities.User;
-import de.thm.arsnova.entities.SortOrder;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 
 public interface IDatabaseDao {
@@ -204,7 +204,7 @@ public interface IDatabaseDao {
 
 	SortOrder createOrUpdateSortOrder(SortOrder sortOrder);
 
-	SortOrder getSortOrder(String sessionkey, String questionVariant, String subject);
+	SortOrder getSortOrder(String sessionId, String questionVariant, String subject);
 
 	void deleteSortOrder(SortOrder sortOrder);
 
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index caa20313..b7087d91 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -18,6 +18,7 @@
 package de.thm.arsnova.services;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.UUID;
@@ -41,6 +42,7 @@ import de.thm.arsnova.entities.LearningProgressOptions;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.SessionFeature;
 import de.thm.arsnova.entities.SessionInfo;
+import de.thm.arsnova.entities.SortOrder;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 import de.thm.arsnova.entities.transport.LearningProgressValues;
@@ -327,6 +329,29 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 	@PreAuthorize("isAuthenticated() and hasPermission(#sessionkey, 'session', 'owner')")
 	public void deleteSession(final String sessionkey) {
 		final Session session = databaseDao.getSessionFromKeyword(sessionkey);
+
+		List<String> prepSubjects = databaseDao.getSubjects(session, "preparation");
+		if (prepSubjects == null) {
+			prepSubjects = new ArrayList<String>();
+		} else {
+			prepSubjects.add("");
+		}
+
+		List<String> lectureSubjects = databaseDao.getSubjects(session, "lecture");
+		if (lectureSubjects == null) {
+			lectureSubjects = new ArrayList<String>();
+		} else {
+			lectureSubjects.add("");
+		}
+
+		for (String subject : prepSubjects) {
+			SortOrder sortOrder = databaseDao.getSortOrder(session.get_id(), "preparation", subject);
+			databaseDao.deleteSortOrder(sortOrder);
+		}
+		for (String subject : lectureSubjects) {
+			SortOrder sortOrder = databaseDao.getSortOrder(session.get_id(), "lecture", subject);
+			databaseDao.deleteSortOrder(sortOrder);
+		}
 		databaseDao.deleteAllQuestionsWithAnswers(session);
 		databaseDao.deleteSession(session);
 
-- 
GitLab