From 9af47c10c6a268877c1d232c8d71ee6df4f8a7ab Mon Sep 17 00:00:00 2001 From: Jeroen Baten <jeroen@jeroenbaten.nl> Date: Fri, 04 Jan 2013 05:18:37 -0500 Subject: [PATCH] Dutch translation before spellcheck --- src/com/gitblit/utils/StringUtils.java | 93 +++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 83 insertions(+), 10 deletions(-) diff --git a/src/com/gitblit/utils/StringUtils.java b/src/com/gitblit/utils/StringUtils.java index e440790..86823db 100644 --- a/src/com/gitblit/utils/StringUtils.java +++ b/src/com/gitblit/utils/StringUtils.java @@ -263,13 +263,25 @@ */ public static String getMD5(String string) { try { - MessageDigest md = MessageDigest.getInstance("MD5"); - md.reset(); - md.update(string.getBytes("iso-8859-1")); - byte[] digest = md.digest(); - return toHex(digest); + return getMD5(string.getBytes("iso-8859-1")); } catch (UnsupportedEncodingException u) { throw new RuntimeException(u); + } + } + + /** + * Calculates the MD5 of the string. + * + * @param string + * @return md5 of the string + */ + public static String getMD5(byte [] bytes) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.reset(); + md.update(bytes); + byte[] digest = md.digest(); + return toHex(digest); } catch (NoSuchAlgorithmException t) { throw new RuntimeException(t); } @@ -315,11 +327,16 @@ * @return the relative path */ public static String getRelativePath(String basePath, String fullPath) { - String relativePath = fullPath.substring(basePath.length()).replace('\\', '/'); - if (relativePath.charAt(0) == '/') { - relativePath = relativePath.substring(1); + String bp = basePath.replace('\\', '/').toLowerCase(); + String fp = fullPath.replace('\\', '/').toLowerCase(); + if (fp.startsWith(bp)) { + String relativePath = fullPath.substring(basePath.length()).replace('\\', '/'); + if (relativePath.charAt(0) == '/') { + relativePath = relativePath.substring(1); + } + return relativePath; } - return relativePath; + return fullPath; } /** @@ -367,7 +384,7 @@ * @return the first invalid character found or null if string is acceptable */ public static Character findInvalidCharacter(String name) { - char[] validChars = { '/', '.', '_', '-' }; + char[] validChars = { '/', '.', '_', '-', '~' }; for (char c : name.toCharArray()) { if (!Character.isLetterOrDigit(c)) { boolean ok = false; @@ -422,6 +439,8 @@ public static int compareRepositoryNames(String r1, String r2) { // sort root repositories first, alphabetically // then sort grouped repositories, alphabetically + r1 = r1.toLowerCase(); + r2 = r2.toLowerCase(); int s1 = r1.indexOf('/'); int s2 = r2.indexOf('/'); if (s1 == -1 && s2 == -1) { @@ -660,4 +679,58 @@ } return input; } + + /** + * Returns the first path element of a path string. If no path separator is + * found in the path, an empty string is returned. + * + * @param path + * @return the first element in the path + */ + public static String getFirstPathElement(String path) { + if (path.indexOf('/') > -1) { + return path.substring(0, path.indexOf('/')).trim(); + } + return ""; + } + + /** + * Returns the last path element of a path string + * + * @param path + * @return the last element in the path + */ + public static String getLastPathElement(String path) { + if (path.indexOf('/') > -1) { + return path.substring(path.lastIndexOf('/') + 1); + } + return path; + } + + /** + * Variation of String.matches() which disregards case issues. + * + * @param regex + * @param input + * @return true if the pattern matches + */ + public static boolean matchesIgnoreCase(String input, String regex) { + Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); + Matcher m = p.matcher(input); + return m.matches(); + } + + /** + * Removes new line and carriage return chars from a string. + * If input value is null an empty string is returned. + * + * @param input + * @return a sanitized or empty string + */ + public static String removeNewlines(String input) { + if (input == null) { + return ""; + } + return input.replace('\n',' ').replace('\r', ' ').trim(); + } } \ No newline at end of file -- Gitblit v1.9.1