From adef42eefc08541f0433147441c2f2d575ac134f Mon Sep 17 00:00:00 2001
From: Lukasz Jader <ljaderdev@gmail.com>
Date: Sat, 14 Jul 2012 08:01:52 -0400
Subject: [PATCH] Add polish variants of welcome.mkd, login.mkd and EmptyRepositoryPage
---
src/com/gitblit/utils/FileUtils.java | 140 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 140 insertions(+), 0 deletions(-)
diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java
index 73bef34..a14928f 100644
--- a/src/com/gitblit/utils/FileUtils.java
+++ b/src/com/gitblit/utils/FileUtils.java
@@ -15,11 +15,14 @@
*/
package com.gitblit.utils;
+import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
+import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
@@ -31,6 +34,71 @@
*
*/
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.
@@ -103,4 +171,76 @@
}
return length;
}
+
+ /**
+ * Copies a file or folder (recursively) to a destination folder.
+ *
+ * @param destinationFolder
+ * @param filesOrFolders
+ * @return
+ * @throws FileNotFoundException
+ * @throws IOException
+ */
+ public static void copy(File destinationFolder, File... filesOrFolders)
+ throws FileNotFoundException, IOException {
+ destinationFolder.mkdirs();
+ for (File file : filesOrFolders) {
+ if (file.isDirectory()) {
+ copy(new File(destinationFolder, file.getName()), file.listFiles());
+ } else {
+ File dFile = new File(destinationFolder, file.getName());
+ BufferedInputStream bufin = null;
+ FileOutputStream fos = null;
+ try {
+ bufin = new BufferedInputStream(new FileInputStream(file));
+ fos = new FileOutputStream(dFile);
+ int len = 8196;
+ byte[] buff = new byte[len];
+ int n = 0;
+ while ((n = bufin.read(buff, 0, len)) != -1) {
+ fos.write(buff, 0, n);
+ }
+ } finally {
+ try {
+ bufin.close();
+ } catch (Throwable t) {
+ }
+ try {
+ fos.close();
+ } catch (Throwable t) {
+ }
+ }
+ dFile.setLastModified(file.lastModified());
+ }
+ }
+ }
+
+ /**
+ * Determine the relative path between two files. Takes into account
+ * canonical paths, if possible.
+ *
+ * @param basePath
+ * @param path
+ * @return a relative path from basePath to path
+ */
+ public static String getRelativePath(File basePath, File path) {
+ File exactBase = getExactFile(basePath);
+ File exactPath = getExactFile(path);
+ return StringUtils.getRelativePath(exactBase.getPath(), exactPath.getPath());
+ }
+
+ /**
+ * Returns the exact path for a file. This path will be the canonical path
+ * unless an exception is thrown in which case it will be the absolute path.
+ *
+ * @param path
+ * @return the exact file
+ */
+ public static File getExactFile(File path) {
+ try {
+ return path.getCanonicalFile();
+ } catch (IOException e) {
+ return path.getAbsoluteFile();
+ }
+ }
}
--
Gitblit v1.9.1