You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
4.0 KiB
123 lines
4.0 KiB
package com.sothr.imagetools;
|
|
|
|
import com.sothr.imagetools.dao.HibernateUtil;
|
|
import com.sothr.imagetools.util.ResourceLoader;
|
|
import com.sothr.imagetools.util.PropertiesService;
|
|
import com.sothr.imagetools.util.PropertiesEnum;
|
|
import net.sf.ehcache.CacheManager;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import ch.qos.logback.classic.Logger;
|
|
import ch.qos.logback.classic.LoggerContext;
|
|
import ch.qos.logback.classic.joran.JoranConfigurator;
|
|
import ch.qos.logback.core.joran.spi.JoranException;
|
|
import ch.qos.logback.core.util.StatusPrinter;
|
|
|
|
import java.io.File;
|
|
import java.util.Properties;
|
|
|
|
public class AppConfig {
|
|
|
|
private static Logger logger;
|
|
public static CacheManager cacheManager;
|
|
|
|
//Logging defaults
|
|
private static final String LOGSETTINGSFILE = "./logback.xml";
|
|
private static Boolean configuredLogging = false;
|
|
|
|
//Properties defaults
|
|
private static final String DEFAULTPROPERTIESFILE = "application.conf";
|
|
private static final String USERPROPERTIESFILE = "user.conf";
|
|
private static Boolean loadedProperties = false;
|
|
|
|
//Cache defaults
|
|
private static Boolean configuredCache = false;
|
|
|
|
public static void configureApp() {
|
|
logger = (Logger)LoggerFactory.getLogger(AppConfig.class);
|
|
loadProperties();
|
|
configLogging();
|
|
configCache();
|
|
}
|
|
|
|
public static void configLogging(String location) {
|
|
//Logging Config
|
|
//remove previous configuration if it exists
|
|
Logger rootLogger = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
|
|
LoggerContext context = rootLogger.getLoggerContext();
|
|
context.reset();
|
|
File file = new File(location);
|
|
Boolean fromFile = false;
|
|
if (file.exists()) {
|
|
fromFile = true;
|
|
try {
|
|
JoranConfigurator configurator = new JoranConfigurator();
|
|
configurator.setContext(context);
|
|
// Call context.reset() to clear any previous configuration, e.g. default
|
|
// configuration. For multi-step configuration, omit calling context.reset().
|
|
context.reset();
|
|
configurator.doConfigure(location);
|
|
} catch (JoranException je) {
|
|
// StatusPrinter will handle this
|
|
}
|
|
StatusPrinter.printInCaseOfErrorsOrWarnings(context);
|
|
} else {
|
|
try {
|
|
JoranConfigurator configurator = new JoranConfigurator();
|
|
configurator.setContext(context);
|
|
// Call context.reset() to clear any previous configuration, e.g. default
|
|
// configuration. For multi-step configuration, omit calling context.reset().
|
|
context.reset();
|
|
configurator.doConfigure(ResourceLoader.get().getResource("logback-minimum-config.xml"));
|
|
} catch (JoranException je) {
|
|
// StatusPrinter will handle this
|
|
}
|
|
StatusPrinter.printInCaseOfErrorsOrWarnings(context);
|
|
}
|
|
String message = fromFile ? "From File" : "From Defaults";
|
|
logger.info(String.format("Configured Logger %s", message));
|
|
logger.info("Detected Version: %s of Image Tools".format(PropertiesService.getVersion().toString()));
|
|
}
|
|
|
|
//Only configure logging from the default file once
|
|
public static void configLogging() {
|
|
if (!configuredLogging) {
|
|
configLogging(LOGSETTINGSFILE);
|
|
configuredLogging = true;
|
|
logger.info("Configured logging");
|
|
}
|
|
}
|
|
|
|
public static void loadProperties() {
|
|
if (!loadedProperties) {
|
|
File file = new File(USERPROPERTIESFILE);
|
|
if (file.exists()) {
|
|
PropertiesService.loadProperties(DEFAULTPROPERTIESFILE, USERPROPERTIESFILE);
|
|
} else {
|
|
PropertiesService.loadProperties(DEFAULTPROPERTIESFILE, null);
|
|
}
|
|
loadedProperties = true;
|
|
logger.info("Loaded Properties");
|
|
}
|
|
}
|
|
|
|
public static void configCache() {
|
|
if (!configuredCache) {
|
|
cacheManager = CacheManager.newInstance();
|
|
configuredCache = true;
|
|
logger.info("Configured EHCache");
|
|
}
|
|
}
|
|
|
|
public static void shutdown() {
|
|
saveProperties();
|
|
HibernateUtil.getSessionFactory().close();
|
|
}
|
|
|
|
public static void saveProperties() {
|
|
PropertiesService.saveConf(USERPROPERTIESFILE);
|
|
logger.debug("Saved properties");
|
|
}
|
|
|
|
}
|