Skip to content
Snippets Groups Projects
Commit 4a5766a0 authored by srosse's avatar srosse
Browse files

OO-4201: validate the quota numbers (as number and between 1 and 5TB)

parent 3a7b923b
No related branches found
No related tags found
No related merge requests found
...@@ -38,6 +38,8 @@ import org.olat.core.gui.components.link.Link; ...@@ -38,6 +38,8 @@ import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event; import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
import org.olat.core.util.Formatter;
import org.olat.core.util.StringHelper;
import org.olat.core.util.vfs.Quota; import org.olat.core.util.vfs.Quota;
import org.olat.core.util.vfs.QuotaManager; import org.olat.core.util.vfs.QuotaManager;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -48,6 +50,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -48,6 +50,8 @@ import org.springframework.beans.factory.annotation.Autowired;
* @author Mike Stock * @author Mike Stock
*/ */
public class QuotaForm extends FormBasicController { public class QuotaForm extends FormBasicController {
private static final long MAX_QUOTA = 5l * 1000l * 1000l * 1000l;
private TextElement path; private TextElement path;
private TextElement quotaKB; private TextElement quotaKB;
...@@ -101,9 +105,7 @@ public class QuotaForm extends FormBasicController { ...@@ -101,9 +105,7 @@ public class QuotaForm extends FormBasicController {
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
if (quota != null && quota.getPath() != null && !quota.getPath().equals("")) { if (quota != null && quota.getPath() != null && !quota.getPath().equals("")) {
path = uifactory.addTextElement("qf_path", "qf.path", 255, quota.getPath(), formLayout); path = uifactory.addTextElement("qf_path", "qf.path", 255, quota.getPath(), formLayout);
if (quota != null) { path.setEnabled(false);
path.setEnabled(false);
}
} else { } else {
path = uifactory.addTextElement("qf_path", "qf.path", 255, "", formLayout); path = uifactory.addTextElement("qf_path", "qf.path", 255, "", formLayout);
path.setNotEmptyCheck("qf.error.path.invalid"); path.setNotEmptyCheck("qf.error.path.invalid");
...@@ -149,6 +151,36 @@ public class QuotaForm extends FormBasicController { ...@@ -149,6 +151,36 @@ public class QuotaForm extends FormBasicController {
path.setErrorKey("qf.error.path.invalid", null); path.setErrorKey("qf.error.path.invalid", null);
allOk &= false; allOk &= false;
} }
allOk &= validateQuota(quotaKB);
allOk &= validateQuota(ulLimitKB);
return allOk;
}
private boolean validateQuota(TextElement textEl) {
boolean allOk = true;
textEl.clearError();
if(textEl.isEnabled()) {
if(!StringHelper.containsNonWhitespace(textEl.getValue())) {
textEl.setErrorKey("form.legende.mandatory", null);
allOk &= false;
} else if(!StringHelper.isLong(textEl.getValue())) {
textEl.setErrorKey("form.error.nointeger", null);
allOk &= false;
} else {
try {
long val = Long.parseLong(textEl.getValue());
if(val <= 0 || val > MAX_QUOTA) {
textEl.setErrorKey("error.quota.range", new String[] { Long.toString(MAX_QUOTA), Formatter.formatBytes(MAX_QUOTA * 1000l) });
allOk &= false;
}
} catch (NumberFormatException e) {
textEl.setErrorKey("form.error.nointeger", null);
allOk &= false;
}
}
}
return allOk; return allOk;
} }
......
...@@ -29,14 +29,13 @@ import java.util.ArrayList; ...@@ -29,14 +29,13 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.olat.core.gui.components.table.BaseTableDataModelWithoutFilter; import org.olat.core.gui.components.table.BaseTableDataModelWithoutFilter;
import org.olat.core.gui.components.table.TableDataModel;
import org.olat.core.util.vfs.Quota; import org.olat.core.util.vfs.Quota;
/** /**
* Initial Date: Mar 30, 2004 * Initial Date: Mar 30, 2004
* @author Mike Stock * @author Mike Stock
*/ */
public class QuotaTableModel extends BaseTableDataModelWithoutFilter<Quota> implements TableDataModel<Quota> { public class QuotaTableModel extends BaseTableDataModelWithoutFilter<Quota> {
private List<Quota> quotaList; private List<Quota> quotaList;
......
#Mon Mar 02 09:54:03 CET 2009 #Mon Mar 02 09:54:03 CET 2009
error.quota.range=Bitte geben Sie ein Quota zwischen 1 und {0} ({1}) ein.
qd.coursefolder=Kursordner qd.coursefolder=Kursordner
qd.groups=Gruppen qd.groups=Gruppen
qd.nodefolder=Kursbausteine qd.nodefolder=Kursbausteine
......
#Fri Feb 24 12:00:07 CET 2012 #Fri Feb 24 12:00:07 CET 2012
error.quota.range=Please enter a quota between 1 and {0} ({1}).
qd.coursefolder=Course folder qd.coursefolder=Course folder
qd.feeds=Blogs and podcasts qd.feeds=Blogs and podcasts
qd.groups=Groups qd.groups=Groups
......
#Fri Sep 07 11:33:33 CEST 2018 #Fri Sep 07 11:33:33 CEST 2018
error.quota.range=Entrez s'il vous pla\u00EEt un quota entre 1 et {0} ({1}).
qd.coursefolder=Dossier de cours qd.coursefolder=Dossier de cours
qd.feeds=Blogues et podcasts qd.feeds=Blogues et podcasts
qd.groups=Groupes qd.groups=Groupes
......
...@@ -386,7 +386,7 @@ public class Formatter { ...@@ -386,7 +386,7 @@ public class Formatter {
* @return human readable formatted bytes * @return human readable formatted bytes
*/ */
public static String formatBytes(long bytes) { public static String formatBytes(long bytes) {
int unit = BYTE_UNIT; long unit = BYTE_UNIT;
if (bytes < unit) return bytes + " B"; if (bytes < unit) return bytes + " B";
int exp = (int) (Math.log(bytes) / Math.log(unit)); int exp = (int) (Math.log(bytes) / Math.log(unit));
String pre = "kMGTPE".charAt(exp-1) + ""; String pre = "kMGTPE".charAt(exp-1) + "";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment