summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit/utils/FileUtils.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2012-06-06 23:40:30 -0400
committerJames Moger <james.moger@gitblit.com>2012-06-06 23:40:30 -0400
commit47867891efc2aa996fa78f7c224e46d65dc04457 (patch)
treeda278ba71cf775618f2faefec4c66d11ae65b174 /src/com/gitblit/utils/FileUtils.java
parentf96d3233fde0d6dc5b61690e59794d209d77ae90 (diff)
downloadgitblit-47867891efc2aa996fa78f7c224e46d65dc04457.tar.gz
gitblit-47867891efc2aa996fa78f7c224e46d65dc04457.zip
Expose JGit's runtime configuration settings (issue 93)
Diffstat (limited to 'src/com/gitblit/utils/FileUtils.java')
-rw-r--r--src/com/gitblit/utils/FileUtils.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java
index f8d35c84..a14928f2 100644
--- a/src/com/gitblit/utils/FileUtils.java
+++ b/src/com/gitblit/utils/FileUtils.java
@@ -34,6 +34,71 @@ import java.nio.charset.Charset;
*
*/
public class FileUtils {
+
+ /** 1024 (number of bytes in one kilobyte) */
+ public static final int KB = 1024;
+
+ /** 1024 {@link #KB} (number of bytes in one megabyte) */
+ public static final int MB = 1024 * KB;
+
+ /** 1024 {@link #MB} (number of bytes in one gigabyte) */
+ public static final int GB = 1024 * MB;
+
+ /**
+ * Returns an int from a string representation of a file size.
+ * e.g. 50m = 50 megabytes
+ *
+ * @param aString
+ * @param defaultValue
+ * @return an int value or the defaultValue if aString can not be parsed
+ */
+ public static int convertSizeToInt(String aString, int defaultValue) {
+ return (int) convertSizeToLong(aString, defaultValue);
+ }
+
+ /**
+ * Returns a long from a string representation of a file size.
+ * e.g. 50m = 50 megabytes
+ *
+ * @param aString
+ * @param defaultValue
+ * @return a long value or the defaultValue if aString can not be parsed
+ */
+ public static long convertSizeToLong(String aString, long defaultValue) {
+ // trim string and remove all spaces
+ aString = aString.toLowerCase().trim();
+ StringBuilder sb = new StringBuilder();
+ for (String a : aString.split(" ")) {
+ sb.append(a);
+ }
+ aString = sb.toString();
+
+ // identify value and unit
+ int idx = 0;
+ int len = aString.length();
+ while (Character.isDigit(aString.charAt(idx))) {
+ idx++;
+ if (idx == len) {
+ break;
+ }
+ }
+ long value = 0;
+ String unit = null;
+ try {
+ value = Long.parseLong(aString.substring(0, idx));
+ unit = aString.substring(idx);
+ } catch (Exception e) {
+ return defaultValue;
+ }
+ if (unit.equals("g") || unit.equals("gb")) {
+ return value * GB;
+ } else if (unit.equals("m") || unit.equals("mb")) {
+ return value * MB;
+ } else if (unit.equals("k") || unit.equals("kb")) {
+ return value * KB;
+ }
+ return defaultValue;
+ }
/**
* Returns the string content of the specified file.