mirror of https://github.com/sismics/docs.git
115 lines
3.2 KiB
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;
|
|
}
|
|
}
|