Coverage Summary for Class: ConfigMain (org.kitodo.config)

Class Class, % Method, % Line, %
ConfigMain 100% (1/1) 100% (7/7) 66,7% (18/27)


 /*
  * (c) Kitodo. Key to digital objects e. V. <contact@kitodo.org>
  *
  * This file is part of the Kitodo project.
  *
  * It is licensed under GNU General Public License version 3 or later.
  *
  * For the full copyright and license information, please read the
  * GPL3-License.txt file that was distributed with this source code.
  */
 
 package org.kitodo.config;
 
 import java.util.NoSuchElementException;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.ConversionException;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 public class ConfigMain {
     private static final Logger logger = LogManager.getLogger(ConfigMain.class);
     private static volatile PropertiesConfiguration config;
     private static final String CONFIG_FILE = "kitodo_config.properties";
 
     /**
      * Private constructor to hide the implicit public one.
      */
     private ConfigMain() {
 
     }
 
     /**
      * Get properties from configuration file.
      *
      * @return PropertiesConfiguration object
      */
     private static PropertiesConfiguration getConfig() {
         if (config == null) {
             synchronized (ConfigMain.class) {
                 PropertiesConfiguration initialized = config;
                 if (initialized == null) {
                     PropertiesConfiguration.setDefaultListDelimiter('&');
                     try {
                         initialized = new PropertiesConfiguration(CONFIG_FILE);
                     } catch (ConfigurationException e) {
                         logger.warn("Loading of {} failed. Trying to start with empty configuration. Exception: {}",
                             CONFIG_FILE, e);
                         initialized = new PropertiesConfiguration();
                     }
                     initialized.setListDelimiter('&');
                     initialized.setReloadingStrategy(new FileChangedReloadingStrategy());
                     config = initialized;
                 }
             }
         }
         return config;
     }
 
     /**
      * Request selected parameter with given default value from configuration.
      *
      * @param inParameter
      *            name of parameter in config file
      * @param inDefaultIfNull
      *            default value in case parameter taken from config file is null or
      *            exception occurred
      * @return Parameter as String
      */
     public static String getParameter(String inParameter, String inDefaultIfNull) {
         try {
             return getConfig().getString(inParameter, inDefaultIfNull);
         } catch (ConversionException e) {
             return inDefaultIfNull;
         }
     }
 
     /**
      * Request boolean parameter from configuration, default if missing: false.
      *
      * @return Parameter as String
      */
     public static boolean getBooleanParameter(String inParameter) {
         return getBooleanParameter(inParameter, false);
     }
 
     /**
      * Request boolean parameter from configuration.
      *
      * @param inParameter
      *            name of parameter in config file
      * @param inDefault
      *            default value in case parameter taken from config file is null or
      *            exception occurred
      * @return Parameter as boolean
      */
     public static boolean getBooleanParameter(String inParameter, boolean inDefault) {
         try {
             return getConfig().getBoolean(inParameter, inDefault);
         } catch (ConversionException e) {
             return inDefault;
         }
     }
 
     /**
      * Request int-parameter from Configuration with default-value.
      *
      * @param inParameter
      *            name of parameter in config file
      * @param inDefault
      *            default value in case parameter taken from config file is null or
      *            exception occurred
      * @return Parameter as int
      */
     public static int getIntParameter(String inParameter, int inDefault) {
         try {
             return getConfig().getInt(inParameter, inDefault);
         } catch (NoSuchElementException e) {
             return inDefault;
         }
     }
 
     /**
      * Request String[]-parameter from Configuration.
      *
      * @param inParameter
      *            as Parameter whose value is to be returned
      * @return Parameter as String[]
      */
     public static String[] getStringArrayParameter(String inParameter) {
         return getConfig().getStringArray(inParameter);
     }
 }