diff --git a/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java b/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java index 95da8fedda14..cf6f8a29743e 100644 --- a/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java +++ b/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java @@ -2937,6 +2937,7 @@ private void zipSubmissions(String assignmentReference, String assignmentTitle, try { out = new ZipOutputStream(outputStream); + out.setLevel(serverConfigurationService.getInt("zip.compression.level", 1)); // create the folder structure - named after the assignment's title final String root = escapeInvalidCharsEntry(Validator.escapeZipEntry(assignmentTitle)) + Entity.SEPARATOR; @@ -3233,6 +3234,7 @@ protected void zipGroupSubmissions(String assignmentReference, String assignment ZipOutputStream out = null; try { out = new ZipOutputStream(outputStream); + out.setLevel(serverConfigurationService.getInt("zip.compression.level", 1)); // create the folder structure - named after the assignment's title final String root = escapeInvalidCharsEntry(Validator.escapeZipEntry(assignmentTitle)) + Entity.SEPARATOR; diff --git a/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties b/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties index 47c2df9311a7..ab3632b60145 100644 --- a/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties +++ b/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties @@ -564,6 +564,12 @@ # content.zip.expand.charsets.count=1 # content.zip.expand.charsets.1=GBK +# SAK-43573 +# What compression level to use when creating ZIPs for instructor download +# Used in Samigo, Lessons, Assignments, Resources +# 0=no compression (fastest), 1=fastest compression (default), 6=best value, 9=highest compression (most cpu) +# zip.compression.level=6 + # Enable creation of Web Content tools from resources, on by default. # DEFAULT: true # content.make.site.page=true diff --git a/kernel/kernel-util/src/main/java/org/sakaiproject/content/util/ZipContentUtil.java b/kernel/kernel-util/src/main/java/org/sakaiproject/content/util/ZipContentUtil.java index edaa167a5af7..5f9205398484 100644 --- a/kernel/kernel-util/src/main/java/org/sakaiproject/content/util/ZipContentUtil.java +++ b/kernel/kernel-util/src/main/java/org/sakaiproject/content/util/ZipContentUtil.java @@ -164,6 +164,7 @@ public void compressFolder(Reference reference) { temp = File.createTempFile("sakai_content-", ".tmp"); ContentCollection collection = ContentHostingService.getCollection(reference.getId()); out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(temp),BUFFER_SIZE),java.nio.charset.StandardCharsets.UTF_8); + out.setLevel(ServerConfigurationService.getInt("zip.compression.level", 1)); storeContentCollection(reference.getId(),collection,out); } finally { if (out != null) { diff --git a/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java b/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java index 3cf8321f6513..aa86240b4f74 100644 --- a/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java +++ b/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java @@ -1186,6 +1186,7 @@ public boolean download() { try { htmlOut = response.getOutputStream(); out = new ZipPrintStream(htmlOut); + out.setLevel(ServerConfigurationService.getInt("zip.compression.level", 1)); response.setHeader("Content-disposition", "inline; filename=sakai-export.imscc"); response.setContentType("application/zip");