/* * Copyright 2013 gitblit.com * Copyright 2013 Florian Zschocke * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.gitblit.utils; import com.gitblit.Constants; /** * Utility functions for model classes that do not fit in any other category. * * @author Florian Zschocke */ public class ModelUtils { private static String userRepoPrefix = Constants.DEFAULT_USER_REPOSITORY_PREFIX; /** * Set the user repository prefix. * @param prefix */ public static void setUserRepoPrefix(String prefix) { if (StringUtils.isEmpty(prefix)) { userRepoPrefix = Constants.DEFAULT_USER_REPOSITORY_PREFIX; return; } String newPrefix = prefix.replace('\\', '/'); if (prefix.charAt(0) == '/') { newPrefix = prefix.substring(1); } 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(userRepoPrefix) ) 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(userRepoPrefix.length()); } }