From 6ccc793908a5b82998dbf3a28d1042f1d4b3999d Mon Sep 17 00:00:00 2001
From: aboeckle <alexander.boeckle@frentix.com>
Date: Mon, 23 Dec 2019 14:02:50 +0100
Subject: [PATCH] OO-4375 Added configuration for file size indicator

---
 .../olat/admin/sysinfo/LargeFilesController.java   |  5 ++++-
 .../sysinfo/gui/LargeFilesSizeCellRenderer.java    | 11 +++++++++--
 .../commons/services/vfs/VFSRepositoryModule.java  | 14 ++++++++++++++
 src/main/resources/serviceconfig/olat.properties   |  6 ++++++
 4 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java b/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java
index d75edd12b6f..124150d74dd 100644
--- a/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java
+++ b/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java
@@ -38,6 +38,7 @@ import org.olat.admin.sysinfo.model.LargeFilesTableModel.LargeFilesTableColumns;
 import org.olat.core.commons.persistence.SortKey;
 import org.olat.core.commons.services.vfs.VFSFilterKeys;
 import org.olat.core.commons.services.vfs.VFSMetadata;
+import org.olat.core.commons.services.vfs.VFSRepositoryModule;
 import org.olat.core.commons.services.vfs.VFSRepositoryService;
 import org.olat.core.commons.services.vfs.VFSRevision;
 import org.olat.core.gui.UserRequest;
@@ -112,6 +113,8 @@ public class LargeFilesController extends FormBasicController implements Extende
 
 	@Autowired
 	private VFSRepositoryService vfsRepositoryService;
+	@Autowired
+	private VFSRepositoryModule vfsRepositoryModule;
 
 
 	public LargeFilesController(UserRequest ureq, WindowControl wControl) {
@@ -297,7 +300,7 @@ public class LargeFilesController extends FormBasicController implements Extende
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.key));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.uuid));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, LargeFilesTableColumns.name, new LargeFilesNameCellRenderer()));
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, LargeFilesTableColumns.size, new LargeFilesSizeCellRenderer()));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, LargeFilesTableColumns.size, new LargeFilesSizeCellRenderer(vfsRepositoryModule)));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, LargeFilesTableColumns.path));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.age, new LargeFilesAgeCellRenderer()));
 
diff --git a/src/main/java/org/olat/admin/sysinfo/gui/LargeFilesSizeCellRenderer.java b/src/main/java/org/olat/admin/sysinfo/gui/LargeFilesSizeCellRenderer.java
index 998efaa3501..d41af00575b 100644
--- a/src/main/java/org/olat/admin/sysinfo/gui/LargeFilesSizeCellRenderer.java
+++ b/src/main/java/org/olat/admin/sysinfo/gui/LargeFilesSizeCellRenderer.java
@@ -19,6 +19,7 @@
  */
 package org.olat.admin.sysinfo.gui;
 
+import org.olat.core.commons.services.vfs.VFSRepositoryModule;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellRenderer;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponent;
 import org.olat.core.gui.render.Renderer;
@@ -36,6 +37,12 @@ import org.olat.core.util.StringHelper;
  *
  */
 public class LargeFilesSizeCellRenderer implements FlexiCellRenderer{
+	VFSRepositoryModule vfsRepositoryModule;
+	
+	public LargeFilesSizeCellRenderer(VFSRepositoryModule vfsRepositoryModule) {
+		this.vfsRepositoryModule = vfsRepositoryModule;
+	}
+	
 	@Override
 	public void render(Renderer renderer, StringOutput target, Object cellValue, int row, FlexiTableComponent source,
 			URLBuilder ubu, Translator translator) {
@@ -44,9 +51,9 @@ public class LargeFilesSizeCellRenderer implements FlexiCellRenderer{
 			String color;
 			Long size = ((Number)cellValue).longValue();
 
-			if(size < 5000) {
+			if(size < vfsRepositoryModule.getLowerBorder()) {
 				color = "okay";
-			} else if(size < 10000) {
+			} else if(size < vfsRepositoryModule.getUpperBorder()) {
 				color = "warning";
 			} else {
 				color = "large";
diff --git a/src/main/java/org/olat/core/commons/services/vfs/VFSRepositoryModule.java b/src/main/java/org/olat/core/commons/services/vfs/VFSRepositoryModule.java
index eb76ad56dd0..8b7fba2030c 100644
--- a/src/main/java/org/olat/core/commons/services/vfs/VFSRepositoryModule.java
+++ b/src/main/java/org/olat/core/commons/services/vfs/VFSRepositoryModule.java
@@ -29,6 +29,7 @@ import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.vfs.VFSConstants;
 import org.olat.core.util.vfs.VFSStatus;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 /**
@@ -44,6 +45,11 @@ public class VFSRepositoryModule extends AbstractSpringModule {
 	
 	private boolean migrated;
 	
+	@Value("${vfs.largefiles.upperborder}")
+	private long upperBorder;
+	@Value("${vfs.largefiles.lowerborder}")
+	private long lowerBorder;
+	
 	@Autowired
 	public VFSRepositoryModule(CoordinatorManager coordinatorManager) {
 		super(coordinatorManager);
@@ -109,5 +115,13 @@ public class VFSRepositoryModule extends AbstractSpringModule {
 				&& !filename.equals("__MACOSX")
 				? VFSConstants.YES : VFSConstants.NO;
 	}
+	
+	public long getUpperBorder() {
+		return upperBorder;
+	}
+	
+	public long getLowerBorder() {
+		return lowerBorder;
+	}
 
 }
diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties
index 08db266263f..661ae44894f 100644
--- a/src/main/resources/serviceconfig/olat.properties
+++ b/src/main/resources/serviceconfig/olat.properties
@@ -1672,3 +1672,9 @@ live.stream.edit.coach=false
 # Profile to control witch stream is visible for the watchers.
 live.stream.player.profile=both
 live.stream.player.profile.values=both,stream1,stream2
+
+###############################################################################
+# Options for the VFS large files admin GUI
+###############################################################################
+vfs.largefiles.upperborder=157286400
+vfs.largefiles.lowerborder=26214400
-- 
GitLab