docs/docs-core/src/main/java/com/sismics/docs/core/util/DirectoryUtil.java

115 lines
3.2 KiB
Java

package com.sismics.docs.core.util;
import java.io.File;
import org.apache.commons.lang.StringUtils;
import com.sismics.util.EnvironmentUtil;
/**
* Utilities to gain access to the storage directories used by the application.
*
* @author jtremeaux
*/
public class DirectoryUtil {
/**
* Returns the base data directory.
*
* @return Base data directory
*/
public static File getBaseDataDirectory() {
File baseDataDir = null;
if (EnvironmentUtil.getWebappRoot() != null) {
// We are in a webapp environment
if (StringUtils.isNotBlank(EnvironmentUtil.getDocsHome())) {
// If the docs.home property is set then use it
baseDataDir = new File(EnvironmentUtil.getDocsHome());
if (!baseDataDir.isDirectory()) {
baseDataDir.mkdirs();
}
} else {
// Use the base of the Webapp directory
baseDataDir = new File(EnvironmentUtil.getWebappRoot() + File.separator + "sismicsdocs");
if (!baseDataDir.isDirectory()) {
baseDataDir.mkdirs();
}
}
}
if (baseDataDir == null) {
// Or else (for unit testing), use a temporary directory
baseDataDir = new File(System.getProperty("java.io.tmpdir"));
}
return baseDataDir;
}
/**
* Returns the database directory.
*
* @return Database directory.
*/
public static File getDbDirectory() {
return getDataSubDirectory("db");
}
/**
* Returns the lucene indexes directory.
*
* @return Lucene indexes directory.
*/
public static File getLuceneDirectory() {
return getDataSubDirectory("lucene");
}
/**
* Returns the storage directory.
*
* @return Storage directory.
*/
public static File getStorageDirectory() {
return getDataSubDirectory("storage");
}
/**
* Returns the log directory.
*
* @return Log directory.
*/
public static File getLogDirectory() {
return getDataSubDirectory("log");
}
/**
* Returns the themes directory.
*
* @return Theme directory.
*/
public static File getThemeDirectory() {
String webappRoot = EnvironmentUtil.getWebappRoot();
File themeDir = null;
if (webappRoot != null) {
themeDir = new File(webappRoot + File.separator + "style" + File.separator + "theme");
} else {
themeDir = new File(DirectoryUtil.class.getResource("/style/theme").getFile());
}
if (themeDir != null && themeDir.isDirectory()) {
return themeDir;
}
return null;
}
/**
* Returns a subdirectory of the base data directory
*
* @return Subdirectory
*/
private static File getDataSubDirectory(String subdirectory) {
File baseDataDir = getBaseDataDirectory();
File faviconDirectory = new File(baseDataDir.getPath() + File.separator + subdirectory);
if (!faviconDirectory.isDirectory()) {
faviconDirectory.mkdirs();
}
return faviconDirectory;
}
}