From 5316d20e861640867d10405b25cfe75aeca0a34c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 11 Jan 2013 23:50:59 -0500 Subject: [PATCH] Fanout service for Sparkleshare clients --- src/com/gitblit/utils/FileUtils.java | 45 +++++++++++++++++++++++++++++++-------------- 1 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java index c291da6..0834867 100644 --- a/src/com/gitblit/utils/FileUtils.java +++ b/src/com/gitblit/utils/FileUtils.java @@ -99,6 +99,25 @@ } return defaultValue; } + + /** + * Returns the byte [] content of the specified file. + * + * @param file + * @return the byte content of the file + */ + public static byte [] readContent(File file) { + byte [] buffer = new byte[(int) file.length()]; + try { + BufferedInputStream is = new BufferedInputStream(new FileInputStream(file)); + is.read(buffer, 0, buffer.length); + is.close(); + } catch (Throwable t) { + System.err.println("Failed to read byte content of " + file.getAbsolutePath()); + t.printStackTrace(); + } + return buffer; + } /** * Returns the string content of the specified file. @@ -157,19 +176,17 @@ public static long folderSize(File directory) { if (directory == null || !directory.exists()) { return -1; - } - if (directory.isFile()) { - return directory.length(); - } - long length = 0; - for (File file : directory.listFiles()) { - if (file.isFile()) { - length += file.length(); - } else { + } + if (directory.isDirectory()) { + long length = 0; + for (File file : directory.listFiles()) { length += folderSize(file); } + return length; + } else if (directory.isFile()) { + return directory.length(); } - return length; + return 0; } /** @@ -226,7 +243,10 @@ public static String getRelativePath(File basePath, File path) { File exactBase = getExactFile(basePath); File exactPath = getExactFile(path); - if (exactPath.getPath().startsWith(exactBase.getPath())) { + if (path.getAbsolutePath().startsWith(basePath.getAbsolutePath())) { + // absolute base-path match + return StringUtils.getRelativePath(basePath.getAbsolutePath(), path.getAbsolutePath()); + } else if (exactPath.getPath().startsWith(exactBase.getPath())) { // canonical base-path match return StringUtils.getRelativePath(exactBase.getPath(), exactPath.getPath()); } else if (exactPath.getPath().startsWith(basePath.getAbsolutePath())) { @@ -235,9 +255,6 @@ } else if (path.getAbsolutePath().startsWith(exactBase.getPath())) { // mixed path match return StringUtils.getRelativePath(exactBase.getPath(), path.getAbsolutePath()); - } else if (path.getAbsolutePath().startsWith(basePath.getAbsolutePath())) { - // absolute base-path match - return StringUtils.getRelativePath(basePath.getAbsolutePath(), path.getAbsolutePath()); } // no relative relationship return null; -- Gitblit v1.9.1