From b0a522cf2ed6242e6e0cf0dceb56035ff2b198a8 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 16 Nov 2015 15:24:48 +0100
Subject: [PATCH] OO-1770	: rewrite the delete method for forum to make
 it work

---
 .../olat/modules/fo/manager/ForumManager.java  | 18 +++++++++++-------
 .../org/olat/modules/fo/ForumManagerTest.java  |  3 +--
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/olat/modules/fo/manager/ForumManager.java b/src/main/java/org/olat/modules/fo/manager/ForumManager.java
index 8daf2ac3a5b..379eca8fa77 100644
--- a/src/main/java/org/olat/modules/fo/manager/ForumManager.java
+++ b/src/main/java/org/olat/modules/fo/manager/ForumManager.java
@@ -595,18 +595,22 @@ public class ForumManager {
 			.setParameter("forumKey", forumKey)
 			.executeUpdate();
 		// delete messages
-		//TODO forum
-		/*
-		String deleteMessages = "delete from fomessage as msg where msg.forum.key=:forumKey";
-		dbInstance.getCurrentEntityManager().createQuery(deleteMessages)
-			.setParameter("forumKey", forumKey)
-			.executeUpdate();
+		String messagesToDelete = "select msg from fomessage as msg where msg.forum.key=:forumKey and msg.threadtop.key is null";
+		List<Message> threadsToDelete = dbInstance.getCurrentEntityManager()
+					.createQuery(messagesToDelete, Message.class)
+					.setParameter("forumKey", forumKey)
+					.getResultList();
+		for(Message threadToDelete:threadsToDelete) {
+			deleteMessageTree(forumKey, threadToDelete);
+			dbInstance.getCurrentEntityManager().remove(threadToDelete);
+		}
+		dbInstance.commit();
+		
 		// delete forum
 		String deleteForum = "delete from forum as fo where fo.key=:forumKey";
 		dbInstance.getCurrentEntityManager().createQuery(deleteForum)
 			.setParameter("forumKey", forumKey)
 			.executeUpdate();
-		*/
 		//delete all flags
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance(Forum.class, forum.getKey());
 		markingService.getMarkManager().deleteMarks(ores);
diff --git a/src/test/java/org/olat/modules/fo/ForumManagerTest.java b/src/test/java/org/olat/modules/fo/ForumManagerTest.java
index fc2eaed4454..143a8ff7d5e 100644
--- a/src/test/java/org/olat/modules/fo/ForumManagerTest.java
+++ b/src/test/java/org/olat/modules/fo/ForumManagerTest.java
@@ -31,7 +31,6 @@ import java.util.Date;
 import java.util.List;
 
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.id.Identity;
@@ -203,7 +202,7 @@ public class ForumManagerTest extends OlatTestCase {
 		dbInstance.commitAndCloseSession();
 	}
 	
-	@Ignore @Test
+	@Test
 	public void testDeleteForum() {
 		Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("fo-7");
 		Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("fo-8");
-- 
GitLab