From 0c478359ec8f160b452f9f6037cbd4df10da5089 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Wed, 1 Apr 2020 20:11:38 +0200
Subject: [PATCH] OO-4612: remove ZIP as backup and unused offline ZIP of CPs

---
 src/main/java/org/olat/ims/cp/CPManager.java  |  9 -----
 .../java/org/olat/ims/cp/CPManagerImpl.java   | 35 ++++---------------
 .../olat/ims/cp/ui/CPEditMainController.java  |  5 ---
 .../modules/cp/CPOfflineReadableManager.java  | 21 -----------
 .../repository/handlers/ImsCPHandler.java     |  5 ---
 .../olat/modules/ims/cp/CPManagerTest.java    |  9 -----
 6 files changed, 6 insertions(+), 78 deletions(-)

diff --git a/src/main/java/org/olat/ims/cp/CPManager.java b/src/main/java/org/olat/ims/cp/CPManager.java
index e0decc642ab..ab7c9fbe808 100644
--- a/src/main/java/org/olat/ims/cp/CPManager.java
+++ b/src/main/java/org/olat/ims/cp/CPManager.java
@@ -30,7 +30,6 @@ import org.dom4j.tree.DefaultDocument;
 import org.dom4j.tree.DefaultElement;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.util.vfs.VFSContainer;
-import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.ims.cp.objects.CPOrganization;
 import org.olat.ims.cp.objects.CPResource;
 import org.olat.ims.cp.ui.CPPackageConfig;
@@ -224,14 +223,6 @@ public interface CPManager {
 	 */
 	public void writeToFile(ContentPackage cp);
 
-	/**
-	 * Writes the cp to a zip file.
-	 * 
-	 * @param cp
-	 * @return The VFS zip archive
-	 */
-	public VFSLeaf writeToZip(ContentPackage cp);
-
 	/**
 	 * this is case-sensitive!
 	 * 
diff --git a/src/main/java/org/olat/ims/cp/CPManagerImpl.java b/src/main/java/org/olat/ims/cp/CPManagerImpl.java
index b8e0c839d48..cd18fa46f46 100644
--- a/src/main/java/org/olat/ims/cp/CPManagerImpl.java
+++ b/src/main/java/org/olat/ims/cp/CPManagerImpl.java
@@ -43,7 +43,6 @@ import org.olat.core.logging.OLATRuntimeException;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.CodeHelper;
 import org.olat.core.util.FileUtils;
-import org.olat.core.util.ZipUtil;
 import org.olat.core.util.vfs.LocalFolderImpl;
 import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSItem;
@@ -150,7 +149,7 @@ public class CPManagerImpl implements CPManager {
 		} else {
 			cp = new ContentPackage(null, directory, ores);
 			cp.setLastError("Exception reading XML for IMS CP: IMS-Manifest not found in " + directory.getName());
-			log.error("IMS manifiest xml couldn't be found in dir " + directory.getName() + ". Ores: " + ores.getResourceableId());
+			log.error("IMS manifiest xml couldn't be found in dir {}. Ores: {}",  directory.getName(), ores.getResourceableId());
 			throw new OLATRuntimeException(CPManagerImpl.class, "The imsmanifest.xml file was not found.", new IOException());
 		}
 		return cp;
@@ -162,8 +161,8 @@ public class CPManagerImpl implements CPManager {
 		if (copyTemplCP(ores)) {
 			File cpRoot = FileResourceManager.getInstance().unzipFileResource(ores);
 			if(log.isDebugEnabled()) {
-				log.debug("createNewCP: cpRoot=" + cpRoot);
-				log.debug("createNewCP: cpRoot.getAbsolutePath()=" + cpRoot.getAbsolutePath());
+				log.debug("createNewCP: cpRoot={}", cpRoot);
+				log.debug("createNewCP: cpRoot.getAbsolutePath()={}", cpRoot.getAbsolutePath());
 			}
 			
 			LocalFolderImpl vfsWrapper = new LocalFolderImpl(cpRoot);
@@ -186,7 +185,7 @@ public class CPManagerImpl implements CPManager {
 			return cp;
 
 		} else {
-			log.error("CP couldn't be created. Error when copying template. Ores: " + ores.getResourceableId());
+			log.error("CP couldn't be created. Error when copying template. Ores: {}", ores.getResourceableId());
 			throw new OLATRuntimeException("ERROR while creating new empty cp. an error occured while trying to copy template CP", null);
 		}
 	}
@@ -307,28 +306,6 @@ public class CPManagerImpl implements CPManager {
 		cp.writeToFile();
 	}
 
-	@Override
-	public VFSLeaf writeToZip(ContentPackage cp) {
-		OLATResourceable ores = cp.getResourcable();
-		VFSContainer cpRoot = cp.getRootDir();
-		VFSContainer oresRoot = FileResourceManager.getInstance().getFileResourceRootImpl(ores);
-		RepositoryEntry repoEntry = RepositoryManager.getInstance().lookupRepositoryEntry(ores, false);
-		String zipFileName = "imscp.zip";
-		if (repoEntry != null) {
-			String zipName = repoEntry.getResourcename();
-			if (zipName != null && zipName.endsWith(".zip")) {
-				zipFileName = zipName;
-			}
-		}
-		// delete old archive and create new one
-		VFSItem oldArchive = oresRoot.resolve(zipFileName);
-		if (oldArchive != null) {
-			oldArchive.deleteSilently();//don't versioned the zip
-		}
-		ZipUtil.zip(cpRoot.getItems(), oresRoot.createChildLeaf(zipFileName), true);
-		return (VFSLeaf) oresRoot.resolve(zipFileName);
-	}
-
 	@Override
 	public String getPageByItemId(ContentPackage cp, String itemIdentifier) {
 		return cp.getPageByItemId(itemIdentifier);
@@ -354,10 +331,10 @@ public class CPManagerImpl implements CPManager {
 			if (f.exists() && root.exists()) {
 				FileUtils.copyFileToDir(f, root, "copy imscp template");
 			} else {
-				log.error("cp template was not copied. Source:  " + url + " Target: " + root.getAbsolutePath());
+				log.error("cp template was not copied. Source:  {} Target: {}", url, root.getAbsolutePath());
 			}
 		} catch (URISyntaxException e) {
-			log.error("Bad url syntax when copying cp template. url: " + url + " Ores:" + ores.getResourceableId());
+			log.error("Bad url syntax when copying cp template. url: {} Ores: {}", url, ores.getResourceableId());
 			return false;
 		}
 
diff --git a/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java b/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
index 0ef50abc34b..233c19cc777 100644
--- a/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
+++ b/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
@@ -128,11 +128,6 @@ public class CPEditMainController extends BasicController implements ToolbarAwar
 	@Override
 	protected void doDispose() {
 		Long oresId = cp.getResourcable().getResourceableId();
-		logAudit("cp editor closing. oresId: " + oresId);
-		if (lock.isSuccess() && contentCtr != null) {
-			// Save CP to zip
-			cpManager.writeToZip(cp);
-		}
 		// In any case, release the lock
 		CoordinatorManager.getInstance().getCoordinator().getLocker().releaseLock(lock);
 		logAudit("finished editing cp. ores-id: " + oresId);
diff --git a/src/main/java/org/olat/modules/cp/CPOfflineReadableManager.java b/src/main/java/org/olat/modules/cp/CPOfflineReadableManager.java
index 62be000b01c..9ecaa6d3170 100644
--- a/src/main/java/org/olat/modules/cp/CPOfflineReadableManager.java
+++ b/src/main/java/org/olat/modules/cp/CPOfflineReadableManager.java
@@ -103,27 +103,6 @@ public class CPOfflineReadableManager {
 	public static CPOfflineReadableManager getInstance() {
 		return instance;
 	}
-
-	/**
-	 * "exports" the the given CP (specified by its containing _unzipped_ directory) to a
-	 * zipFile.<br />
-	 * The resulting zip contains a "offline-readable" version of the CP.
-	 * including style-sheets, menu-Tree and OpenOLAT branding
-	 * 
-	 * @param ores
-	 *            the containing directory
-	 * @param targetZip
-	 *            the resulting zip-filename
-	 */
-	public void makeCPOfflineReadable(File unzippedDir, File targetZip) {
-		try {
-			writeOfflineCPStartHTMLFile(unzippedDir);
-			File cpOfflineMat = new File(WebappHelper.getContextRealPath("/static/" + DIRNAME_CPOFFLINEMENUMAT));
-			zipOfflineReadableCP(unzippedDir, targetZip, cpOfflineMat);
-		} catch (IOException e) {
-			log.error("", e);
-		}
-	}
 	
 	public void makeCPOfflineReadable(String manifest, String indexSrc, ZipOutputStream exportStream) {
 		try {
diff --git a/src/main/java/org/olat/repository/handlers/ImsCPHandler.java b/src/main/java/org/olat/repository/handlers/ImsCPHandler.java
index 5934f000488..38517445a1e 100644
--- a/src/main/java/org/olat/repository/handlers/ImsCPHandler.java
+++ b/src/main/java/org/olat/repository/handlers/ImsCPHandler.java
@@ -67,7 +67,6 @@ import org.olat.ims.cp.ui.CPEditMainController;
 import org.olat.ims.cp.ui.CPPackageConfig;
 import org.olat.ims.cp.ui.CPRuntimeController;
 import org.olat.modules.cp.CPDisplayController;
-import org.olat.modules.cp.CPOfflineReadableManager;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryStatusEnum;
 import org.olat.repository.RepositoryManager;
@@ -148,8 +147,6 @@ public class ImsCPHandler extends FileHandler {
 		File fResourceFileroot = FileResourceManager.getInstance().getFileResourceRoot(resource);
 		File zipRoot = new File(fResourceFileroot, FileResourceManager.ZIPDIR);
 		FileResource.copyResource(file, filename, zipRoot);
-		CPOfflineReadableManager.getInstance().makeCPOfflineReadable(cpResource, displayname);
-
 		DBFactory.getInstance().commit();
 		return re;
 	}
@@ -178,8 +175,6 @@ public class ImsCPHandler extends FileHandler {
 		if(cpConfig != null) {
 			cpManager.setCPPackageConfig(targetResource, cpConfig);
 		}
-
-		CPOfflineReadableManager.getInstance().makeCPOfflineReadable(targetResource, target.getDisplayname() + ".zip");
 		return target;
 	}
 
diff --git a/src/test/java/org/olat/modules/ims/cp/CPManagerTest.java b/src/test/java/org/olat/modules/ims/cp/CPManagerTest.java
index 365f520e6e2..d565ad5df57 100644
--- a/src/test/java/org/olat/modules/ims/cp/CPManagerTest.java
+++ b/src/test/java/org/olat/modules/ims/cp/CPManagerTest.java
@@ -31,14 +31,12 @@ import static org.junit.Assert.assertTrue;
 
 import org.apache.logging.log4j.Logger;
 import org.junit.After;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.core.util.vfs.VFSItem;
-import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.ims.cp.CPManager;
 import org.olat.ims.cp.ContentPackage;
 import org.olat.ims.cp.objects.CPItem;
@@ -126,11 +124,4 @@ public class CPManagerTest extends OlatTestCase {
 	public void testWriteToFile() {
 		cpManager.writeToFile(cp); // Throws exception on failure
 	}
-	
-	@Test
-	public void testWriteToZip() {
-		VFSLeaf zip = cpManager.writeToZip(cp);
-		Assert.assertNotNull("The zip file wasn't created properly", zip);
-		Assert.assertTrue("The zip file cannot be empty", zip.getSize() > 0);
-	}
 }
-- 
GitLab