diff --git a/src/main/java/org/olat/course/nodes/BigBlueButtonCourseNode.java b/src/main/java/org/olat/course/nodes/BigBlueButtonCourseNode.java index 1a22d18d2b10f331fbe2e5ab0ba8347ca43bfbad..5700f89e3784d68ff2c32620b1c4e11fc6cafcd3 100644 --- a/src/main/java/org/olat/course/nodes/BigBlueButtonCourseNode.java +++ b/src/main/java/org/olat/course/nodes/BigBlueButtonCourseNode.java @@ -21,6 +21,7 @@ package org.olat.course.nodes; import java.util.List; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.stack.BreadcrumbPanel; import org.olat.core.gui.control.Controller; @@ -42,6 +43,9 @@ import org.olat.course.run.navigation.NodeRunConstructionResult; import org.olat.course.run.userview.NodeEvaluation; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.modules.ModuleConfiguration; +import org.olat.modules.bigbluebutton.BigBlueButtonManager; +import org.olat.modules.bigbluebutton.BigBlueButtonMeeting; +import org.olat.modules.bigbluebutton.model.BigBlueButtonErrors; import org.olat.modules.bigbluebutton.ui.BigBlueButtonMeetingDefaultConfiguration; import org.olat.modules.bigbluebutton.ui.BigBlueButtonRunController; import org.olat.repository.RepositoryEntry; @@ -150,4 +154,18 @@ public class BigBlueButtonCourseNode extends AbstractAccessableCourseNode { return false; } + @Override + public void cleanupOnDelete(ICourse course) { + BigBlueButtonManager bigBlueButtonManager = CoreSpringFactory.getImpl(BigBlueButtonManager.class); + RepositoryEntry courseEntry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); + List<BigBlueButtonMeeting> meetings = bigBlueButtonManager.getMeetings(courseEntry, getIdent(), null); + BigBlueButtonErrors errors = new BigBlueButtonErrors(); + for(BigBlueButtonMeeting meeting:meetings) { + CoreSpringFactory.getImpl(BigBlueButtonManager.class).deleteMeeting(meeting, errors); + } + super.cleanupOnDelete(course); + } + + + } diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java index c39ef65c2c1b648f3d5352e085505b9e05554585..20027db1dd2ae999d48140b3a8a0bc72f7390cf9 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java +++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java @@ -70,6 +70,7 @@ import org.olat.modules.bigbluebutton.model.BigBlueButtonMeetingImpl; import org.olat.modules.bigbluebutton.model.BigBlueButtonMeetingInfos; import org.olat.modules.bigbluebutton.model.BigBlueButtonServerInfos; import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryEntryDataDeletable; import org.olat.repository.RepositoryEntryRef; import org.olat.repository.RepositoryManager; import org.olat.repository.manager.RepositoryEntryDAO; @@ -86,7 +87,8 @@ import org.w3c.dom.Document; * */ @Service -public class BigBlueButtonManagerImpl implements BigBlueButtonManager, DeletableGroupData, InitializingBean { +public class BigBlueButtonManagerImpl implements BigBlueButtonManager, + DeletableGroupData, RepositoryEntryDataDeletable, InitializingBean { private static final Logger log = Tracing.createLoggerFor(BigBlueButtonManagerImpl.class); @@ -225,6 +227,16 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Deletable } return !errors.hasErrors(); } + + @Override + public boolean deleteRepositoryEntryData(RepositoryEntry re) { + List<BigBlueButtonMeeting> meetings = bigBlueButtonMeetingDao.getMeetings(re, null, null); + BigBlueButtonErrors errors = new BigBlueButtonErrors(); + for(BigBlueButtonMeeting meeting:meetings) { + deleteMeeting(meeting, errors); + } + return !errors.hasErrors(); + } @Override public BigBlueButtonServer createServer(String url, String recordingUrl, String sharedSecret) {