diff --git a/src/main/java/org/olat/course/export/CourseExportMediaResource.java b/src/main/java/org/olat/course/export/CourseExportMediaResource.java index a986acbefb78acfb8fb1cd4912168ea92914fae5..412e93bc6fe4ddec982bd173053e3a36a480edf3 100644 --- a/src/main/java/org/olat/course/export/CourseExportMediaResource.java +++ b/src/main/java/org/olat/course/export/CourseExportMediaResource.java @@ -235,7 +235,7 @@ public class CourseExportMediaResource implements MediaResource, StreamingOutput // export shared folder CourseConfig config = sourceCourse.getCourseConfig(); if (config.hasCustomSharedFolder()) { - exportSharedFolder(config, sourceCourse, fExportedDataDir, zout); + exportSharedFolder(config, sourceCourse, zout); } // export glossary if (config.hasGlossary()) { @@ -301,24 +301,20 @@ public class CourseExportMediaResource implements MediaResource, StreamingOutput } } - private void exportSharedFolder(CourseConfig config, PersistingCourseImpl sourceCourse, File fExportedDataDir, ZipOutputStream zout) { - File sharedFolderExportDataDir = new File(fExportedDataDir, "sharedfolder"); + private void exportSharedFolder(CourseConfig config, PersistingCourseImpl sourceCourse, ZipOutputStream zout) { try { - sharedFolderExportDataDir.mkdir(); - log.info("exportToFilesystem: exporting shared folder course: {}", sourceCourse); - if (!SharedFolderManager.getInstance().exportSharedFolder(config.getSharedFolderSoftkey(), sharedFolderExportDataDir)) { + String exportPath = ICourse.EXPORTED_DATA_FOLDERNAME + "/" + "sharedfolder"; + if (!SharedFolderManager.getInstance().exportSharedFolder(config.getSharedFolderSoftkey(), exportPath, zout)) { // export failed, delete reference to shared folder in the course config log.info("exportToFilesystem: export of shared folder failed."); config.setSharedFolderSoftkey(CourseConfig.VALUE_EMPTY_SHAREDFOLDER_SOFTKEY); CoreSpringFactory.getImpl(CourseConfigManager.class).saveConfigTo(sourceCourse, config); } log.info("exportToFilesystem: exporting shared folder course done: {}", sourceCourse); - ZipUtil.addDirectoryToZip(sharedFolderExportDataDir.toPath(), ICourse.EXPORTED_DATA_FOLDERNAME, zout); } catch (Exception e) { log.error("", e); } finally { - FileUtils.deleteDirsAndFiles(sharedFolderExportDataDir, true, true); DBFactory.getInstance().commitAndCloseSession(); } } diff --git a/src/main/java/org/olat/modules/sharedfolder/SharedFolderManager.java b/src/main/java/org/olat/modules/sharedfolder/SharedFolderManager.java index e2191d6e3802428542346c95b023c1bd523ea151..54c2ea1e1738ef36ef753be70f645670b51f237b 100644 --- a/src/main/java/org/olat/modules/sharedfolder/SharedFolderManager.java +++ b/src/main/java/org/olat/modules/sharedfolder/SharedFolderManager.java @@ -26,6 +26,7 @@ package org.olat.modules.sharedfolder; import java.io.File; +import java.util.zip.ZipOutputStream; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.services.webdav.servlets.RequestUtil; @@ -96,19 +97,17 @@ public class SharedFolderManager { return new ZippedContainerMediaResource(exportFileName, sharedFolder, true); } - public boolean exportSharedFolder(String sharedFolderSoftkey, File exportedDataDir) { - RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntryBySoftkey( - sharedFolderSoftkey, false); + public boolean exportSharedFolder(String sharedFolderSoftkey, String path, ZipOutputStream zout) { + RepositoryEntry re = RepositoryManager.getInstance() + .lookupRepositoryEntryBySoftkey(sharedFolderSoftkey, false); if (re == null) return false; - File fExportBaseDirectory = new File(exportedDataDir, "sharedfolder"); - if (!fExportBaseDirectory.mkdir()) return false; // do intermediate commit to avoid transaction timeout DBFactory.getInstance().intermediateCommit(); // export properties - RepositoryEntryImportExport reImportExport = new RepositoryEntryImportExport(re, fExportBaseDirectory); - return reImportExport.exportDoExport(); + RepositoryEntryImportExport reImportExport = new RepositoryEntryImportExport(re, null); + return reImportExport.exportDoExport(path, zout); } public RepositoryEntryImportExport getRepositoryImportExport(File importDataDir) {