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

  1. package com.sothr.imagetools;
  2. import com.sothr.imagetools.dao.HibernateUtil;
  3. import com.sothr.imagetools.util.ResourceLoader;
  4. import com.sothr.imagetools.util.PropertiesService;
  5. import com.sothr.imagetools.util.PropertiesEnum;
  6. import net.sf.ehcache.CacheManager;
  7. import org.slf4j.LoggerFactory;
  8. import ch.qos.logback.classic.Logger;
  9. import ch.qos.logback.classic.LoggerContext;
  10. import ch.qos.logback.classic.joran.JoranConfigurator;
  11. import ch.qos.logback.core.joran.spi.JoranException;
  12. import ch.qos.logback.core.util.StatusPrinter;
  13. import java.io.File;
  14. import java.util.Properties;
  15. public class AppConfig {
  16. private static Logger logger;
  17. public static CacheManager cacheManager;
  18. //Logging defaults
  19. private static final String LOGSETTINGSFILE = "./logback.xml";
  20. private static Boolean configuredLogging = false;
  21. //Properties defaults
  22. private static final String DEFAULTPROPERTIESFILE = "application.conf";
  23. private static final String USERPROPERTIESFILE = "user.conf";
  24. private static Boolean loadedProperties = false;
  25. //Cache defaults
  26. private static Boolean configuredCache = false;
  27. public static void configureApp() {
  28. logger = (Logger)LoggerFactory.getLogger(AppConfig.class);
  29. loadProperties();
  30. configLogging();
  31. configCache();
  32. }
  33. public static void configLogging(String location) {
  34. //Logging Config
  35. //remove previous configuration if it exists
  36. Logger rootLogger = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
  37. LoggerContext context = rootLogger.getLoggerContext();
  38. context.reset();
  39. File file = new File(location);
  40. Boolean fromFile = false;
  41. if (file.exists()) {
  42. fromFile = true;
  43. try {
  44. JoranConfigurator configurator = new JoranConfigurator();
  45. configurator.setContext(context);
  46. // Call context.reset() to clear any previous configuration, e.g. default
  47. // configuration. For multi-step configuration, omit calling context.reset().
  48. context.reset();
  49. configurator.doConfigure(location);
  50. } catch (JoranException je) {
  51. // StatusPrinter will handle this
  52. }
  53. StatusPrinter.printInCaseOfErrorsOrWarnings(context);
  54. } else {
  55. try {
  56. JoranConfigurator configurator = new JoranConfigurator();
  57. configurator.setContext(context);
  58. // Call context.reset() to clear any previous configuration, e.g. default
  59. // configuration. For multi-step configuration, omit calling context.reset().
  60. context.reset();
  61. configurator.doConfigure(ResourceLoader.get().getResource("logback-minimum-config.xml"));
  62. } catch (JoranException je) {
  63. // StatusPrinter will handle this
  64. }
  65. StatusPrinter.printInCaseOfErrorsOrWarnings(context);
  66. }
  67. String message = fromFile ? "From File" : "From Defaults";
  68. logger.info(String.format("Configured Logger %s", message));
  69. logger.info("Detected Version: %s of Image Tools".format(PropertiesService.getVersion().toString()));
  70. }
  71. //Only configure logging from the default file once
  72. public static void configLogging() {
  73. if (!configuredLogging) {
  74. configLogging(LOGSETTINGSFILE);
  75. configuredLogging = true;
  76. logger.info("Configured logging");
  77. }
  78. }
  79. public static void loadProperties() {
  80. if (!loadedProperties) {
  81. File file = new File(USERPROPERTIESFILE);
  82. if (file.exists()) {
  83. PropertiesService.loadProperties(DEFAULTPROPERTIESFILE, USERPROPERTIESFILE);
  84. } else {
  85. PropertiesService.loadProperties(DEFAULTPROPERTIESFILE, null);
  86. }
  87. loadedProperties = true;
  88. logger.info("Loaded Properties");
  89. }
  90. }
  91. public static void configCache() {
  92. if (!configuredCache) {
  93. cacheManager = CacheManager.newInstance();
  94. configuredCache = true;
  95. logger.info("Configured EHCache");
  96. }
  97. }
  98. public static void shutdown() {
  99. saveProperties();
  100. HibernateUtil.getSessionFactory().close();
  101. }
  102. public static void saveProperties() {
  103. PropertiesService.saveConf(USERPROPERTIESFILE);
  104. logger.debug("Saved properties");
  105. }
  106. }