diff options
author | Florian Zschocke <florian.zschocke@cycos.com> | 2013-08-21 21:53:08 +0200 |
---|---|---|
committer | Florian Zschocke <florian.zschocke@cycos.com> | 2013-08-26 12:30:53 +0200 |
commit | 0a16a66452e425a19755c6b7a629c8ff0c7ade50 (patch) | |
tree | e8dc1cd075ec00cf40ddcc4ee8b68d95f3def79b /src/main/java/com/gitblit/utils/ModelUtils.java | |
parent | 0c5c1c872ace327087ba665a51d03a81bcba60f0 (diff) | |
download | gitblit-0a16a66452e425a19755c6b7a629c8ff0c7ade50.tar.gz gitblit-0a16a66452e425a19755c6b7a629c8ff0c7ade50.zip |
Check user prefix for invalid options. Add JavaDoc. Add unit tests.
Diffstat (limited to 'src/main/java/com/gitblit/utils/ModelUtils.java')
-rw-r--r-- | src/main/java/com/gitblit/utils/ModelUtils.java | 143 |
1 files changed, 99 insertions, 44 deletions
diff --git a/src/main/java/com/gitblit/utils/ModelUtils.java b/src/main/java/com/gitblit/utils/ModelUtils.java index 6316dc5d..8f929aad 100644 --- a/src/main/java/com/gitblit/utils/ModelUtils.java +++ b/src/main/java/com/gitblit/utils/ModelUtils.java @@ -1,52 +1,107 @@ package com.gitblit.utils; import com.gitblit.IStoredSettings; +import com.gitblit.Keys; +/** + * Utility functions for model classes that do not fit in any other category. + * + * @author Florian Zschocke + */ public class ModelUtils { - private static final String DEFAULT_USER_REPO_PREFIX = "~"; - - private static String userRepoPrefix = DEFAULT_USER_REPO_PREFIX; - - - - public static void setUserRepoPrefix(IStoredSettings settings) - { - userRepoPrefix = settings.getString("repo.userPrefix", DEFAULT_USER_REPO_PREFIX); - } - - - public static String getUserRepoPrefix() - { - return userRepoPrefix; - } - - - public static String getPersonalPath(String username) - { - return userRepoPrefix + username.toLowerCase(); - } - - - public static boolean isPersonalRepository(String name) - { - if ( name.startsWith(getUserRepoPrefix()) ) return true; - return false; - } - - - public static boolean isUsersPersonalRepository(String username, String name) - { - if ( name.equalsIgnoreCase(getPersonalPath(username)) ) return true; - return false; - } - - - public static String getUserNameFromRepoPath(String path) - { - if ( !isPersonalRepository(path) ) return ""; - - return path.substring(getUserRepoPrefix().length()); - } + /** + * Default value for the prefix for user repository directories. + */ + private static final String DEFAULT_USER_REPO_PREFIX = "~"; + + private static String userRepoPrefix = DEFAULT_USER_REPO_PREFIX; + + + + /** + * Set the user repository prefix from configuration settings. + * @param settings + */ + public static void setUserRepoPrefix(IStoredSettings settings) + { + String newPrefix = DEFAULT_USER_REPO_PREFIX; + if (settings != null) { + String prefix = settings.getString(Keys.git.userRepositoryPrefix, DEFAULT_USER_REPO_PREFIX); + if (prefix != null && !prefix.trim().isEmpty()) { + if (prefix.charAt(0) == '/') prefix = prefix.substring(1); + newPrefix = prefix; + } + } + + userRepoPrefix = newPrefix; + } + + + /** + * Get the active user repository project prefix. + */ + public static String getUserRepoPrefix() + { + return userRepoPrefix; + } + + + /** + * Get the user project name for a user. + * + * @param username name of user + * @return the active user repository project prefix concatenated with the user name + */ + public static String getPersonalPath(String username) + { + return userRepoPrefix + username.toLowerCase(); + } + + + /** + * Test if a repository path is for a personal repository. + * + * @param name + * A project name, a relative path to a repository. + * @return true, if the name starts with the active user repository project prefix. False, otherwise. + */ + public static boolean isPersonalRepository(String name) + { + if ( name.startsWith(getUserRepoPrefix()) ) return true; + return false; + } + + + /** + * Test if a repository path is for a personal repository of a specific user. + * + * @param username + * Name of a user + * @param name + * A project name, a relative path to a repository. + * @return true, if the name starts with the active user repository project prefix. False, otherwise. + */ + public static boolean isUsersPersonalRepository(String username, String name) + { + if ( name.equalsIgnoreCase(getPersonalPath(username)) ) return true; + return false; + } + + + /** + * Exrtract a user's name from a personal repository path. + * + * @param path + * A project name, a relative path to a repository. + * @return If the path does not point to a personal repository, an empty string is returned. + * Otherwise the name of the user the personal repository belongs to is returned. + */ + public static String getUserNameFromRepoPath(String path) + { + if ( !isPersonalRepository(path) ) return ""; + + return path.substring(getUserRepoPrefix().length()); + } } |