/** * Sets the cacheDir. * * @param cacheDir The cacheDir to set * @throws ConfigurationException if the cache directory cannot be created */ public static void setCacheDir(String cacheDir) throws ConfigurationException { if (!cacheDir.endsWith(FileUtils.getDirSeparator())) { cacheDir += FileUtils.getDefaultDirSeparator(); } final File cDir = new File(cacheDir); if (!cDir.exists() && !cDir.mkdirs()) { throw new ConfigurationException("Can't create cache directory: " + cacheDir); } SvnConfigurationOptions.cacheDir = cacheDir; }
/** * Class for storing all command line parameters. The parameters are set by the {@link * net.sf.statsvn.Main#main} method. Interested classes can read all parameter values from here. * * @todo Should be moved to more appropriate package and made non-public * @author jentzsch * @version $Id: ConfigurationOptions.java,v 1.17 2005/03/20 19:12:25 squig Exp $ */ public final class SvnConfigurationOptions { private static final int DEFAULT_THRESHOLD_MS_FOR_CONCURRENCY = 2000; private static final int DEFAULT_NUMBER_THREADS = 25; private static String cacheDir = ""; private static final String DEFAULT_CACHE_DIR = System.getProperty("user.home") + FileUtils.getDirSeparator() + ".statsvn" + FileUtils.getDirSeparator(); private static String svnUsername = null; private static String svnPassword = null; private static TaskLogger taskLogger = new JavaUtilTaskLogger(); private static int numberSvnDiffThreads = DEFAULT_NUMBER_THREADS; private static long thresholdInMsToUseConcurrency = DEFAULT_THRESHOLD_MS_FOR_CONCURRENCY; private static boolean dump = false; private static boolean anonymize = false; private static String tagsDirectory = "/tags/"; // use the newer diff. will be overridden if this is not possible. private static boolean useLegacyDiff = false; private static ISvnProcessor processor; private static boolean useSvnKit = false; /** A utility class (only static methods) should be final and have a private constructor. */ private SvnConfigurationOptions() {} /** * Returns the cacheDir. * * @return String output Directory */ public static String getCacheDir() { return cacheDir; } /** * Sets the cacheDir. * * @param cacheDir The cacheDir to set * @throws ConfigurationException if the cache directory cannot be created */ public static void setCacheDir(String cacheDir) throws ConfigurationException { if (!cacheDir.endsWith(FileUtils.getDirSeparator())) { cacheDir += FileUtils.getDefaultDirSeparator(); } final File cDir = new File(cacheDir); if (!cDir.exists() && !cDir.mkdirs()) { throw new ConfigurationException("Can't create cache directory: " + cacheDir); } SvnConfigurationOptions.cacheDir = cacheDir; } /** * Sets the cacheDir to the DEFAULT_CACHE_DIR * * @throws ConfigurationException if the cache directory cannot be created */ public static void setCacheDirToDefault() throws ConfigurationException { setCacheDir(DEFAULT_CACHE_DIR); } public static File getCheckedOutDirectoryAsFile() { return new File( FileUtils.getPathWithoutEndingSlash(ConfigurationOptions.getCheckedOutDirectory()) + FileUtils.getDirSeparator()); } /** @return Returns the svnPassword. */ public static String getSvnPassword() { return svnPassword; } /** @param svnPassword The svnPassword to set. */ public static void setSvnPassword(final String svnPassword) { SvnConfigurationOptions.svnPassword = svnPassword; } /** @return Returns the svnUsername. */ public static String getSvnUsername() { return svnUsername; } /** @param svnUsername The svnUsername to set. */ public static void setSvnUsername(final String svnUsername) { SvnConfigurationOptions.svnUsername = svnUsername; } /** @return the taskLogger */ public static TaskLogger getTaskLogger() { return taskLogger; } /** @param taskLogger the taskLogger to set */ public static void setTaskLogger(final TaskLogger taskLogger) { SvnConfigurationOptions.taskLogger = taskLogger; } /** @return the numberSvnDiffThreads */ public static int getNumberSvnDiffThreads() { return numberSvnDiffThreads; } /** @param numberSvnDiffThreads the numberSvnDiffThreads to set */ public static void setNumberSvnDiffThreads(final int numberSvnDiffThreads) { SvnConfigurationOptions.numberSvnDiffThreads = numberSvnDiffThreads; } /** @return the thresholdInMsToUseConcurrency */ public static long getThresholdInMsToUseConcurrency() { return thresholdInMsToUseConcurrency; } /** @param thresholdInMsToUseConcurrency the thresholdInMsToUseConcurrency to set */ public static void setThresholdInMsToUseConcurrency(final long thresholdToUseConcurrency) { SvnConfigurationOptions.thresholdInMsToUseConcurrency = thresholdToUseConcurrency; } public static void setDumpContent(final boolean dumpContent) { dump = dumpContent; } public static boolean isDumpContent() { return dump; } public static void setAnonymize(final boolean bAnon) { anonymize = bAnon; } public static boolean isAnonymize() { return anonymize; } /** Following request 1692245, add option -tags-dir to the command line. */ public static void setTagsDirectory(final String tagsDir) { if (tagsDir != null) { tagsDirectory = tagsDir.replace('\\', '/'); if (!tagsDirectory.endsWith("/")) { tagsDirectory = tagsDir + "/"; } } } /** Following request 1692245, add option -tags-dir to the command line. */ public static String getTagsDirectory() { return tagsDirectory; } /** * Should we use a one diff per-file-per-revision or should we use the newer one diff * per-revision? * * @return true if legacy diff should be used. */ public static boolean isLegacyDiff() { return useLegacyDiff; } /** * Should we use a one diff per-file-per-revision or should we use the newer one diff * per-revision? * * @param isLegacy true if the legacy diff should be used. */ public static void setLegacyDiff(final boolean isLegacy) { useLegacyDiff = isLegacy; } /** * Should we use svnkit to query the repository * * @return true if we should be using SVN kit. */ public static boolean isUsingSVNKit() { return useSvnKit; } /** * Should we use svnkit to query the repository. * * @param isSvnKit true if we should use svnkit */ public static void setUsingSvnKit(final boolean isSvnKit) { useSvnKit = isSvnKit; } public static ISvnProcessor getProcessor() { if (processor == null) { if (isUsingSVNKit()) { try { processor = new SvnKitProcessor(); } catch (NoClassDefFoundError ex) { getTaskLogger() .error( "Unable to find svnkit.jar and/or jna.jar in the same folder as statsvn.jar. Please copy these files and try again."); throw ex; } } else processor = new SvnCommandLineProcessor(); } return processor; } }
public static File getCheckedOutDirectoryAsFile() { return new File( FileUtils.getPathWithoutEndingSlash(ConfigurationOptions.getCheckedOutDirectory()) + FileUtils.getDirSeparator()); }