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

Class Class, % Method, % Line, %
ConfigCore 100% (1/1) 90% (9/10) 58,3% (21/36)


 /*
  * (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.io.File;
 import java.time.Duration;
 import java.time.temporal.TemporalUnit;
 import java.util.NoSuchElementException;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.kitodo.config.beans.Parameter;
 import org.kitodo.config.enums.ParameterCore;
 import org.kitodo.exceptions.ConfigParameterException;
 
 public class ConfigCore extends KitodoConfig {
     private static final Logger logger = LogManager.getLogger(ConfigCore.class);
 
     /**
      * Private constructor to hide the implicit public one.
      */
     private ConfigCore() {
 
     }
 
     /**
      * Request string parameter from configuration, if parameter is not there - use
      * default value.
      *
      * @param key
      *            as Parameter whose value is to be returned
      * @return parameter as String or default value for this parameter
      */
     public static String getParameterOrDefaultValue(ParameterCore key) {
         Parameter<?> parameter = key.getParameter();
 
         if (parameter.getDefaultValue() instanceof String) {
             return getParameter(key.getName(), (String) parameter.getDefaultValue());
         }
         throw new ConfigParameterException(parameter.getKey(), "String");
     }
 
     /**
      * Request boolean parameter from configuration, if parameter is not there - use
      * default value.
      *
      * @param key
      *            as Parameter whose value is to be returned
      * @return parameter as boolean or default value for this parameter
      */
     public static boolean getBooleanParameterOrDefaultValue(ParameterCore key) {
         Parameter<?> parameter = key.getParameter();
 
         if (parameter.getDefaultValue() instanceof Boolean) {
             return getBooleanParameter(key, (Boolean) parameter.getDefaultValue());
         }
         throw new ConfigParameterException(parameter.getKey(), "boolean");
     }
 
     /**
      * Request int parameter from configuration, if parameter is not there - use
      * default value.
      *
      * @param key
      *            as Parameter whose value is to be returned
      * @return parameter as int or default value for this parameter
      */
     public static int getIntParameterOrDefaultValue(ParameterCore key) {
         Parameter<?> parameter = key.getParameter();
 
         if (parameter.getDefaultValue() instanceof Integer) {
             return getIntParameter(key, (Integer) parameter.getDefaultValue());
         }
         throw new ConfigParameterException(parameter.getKey(), "int");
     }
 
     /**
      * Request long parameter from configuration, if parameter is not there - use
      * default value.
      *
      * @param key
      *            as Parameter whose value is to be returned
      * @return Parameter as long or default value
      */
     public static long getLongParameterOrDefaultValue(ParameterCore key) {
         Parameter<?> parameter = key.getParameter();
 
         if (parameter.getDefaultValue() instanceof Long) {
             return getLongParameter(key, (Long) parameter.getDefaultValue());
         }
         throw new ConfigParameterException(parameter.getKey(), "long");
     }
 
     /**
      * Request long parameter or default value from configuration.
      *
      * @param key
      *            as Parameter whose value is to be returned
      * @param defaultValue
      *            as long
      * @return Parameter as long or default value
      */
     public static long getLongParameter(ParameterCore key, long defaultValue) {
         return getConfig().getLong(key.getName(), defaultValue);
     }
 
     /**
      * Request Duration parameter from configuration.
      *
      * @param key
      *            as Parameter whose value is to be returned
      * @param temporalUnit
      *            as TemporalUnit
      * @return Parameter as Duration
      */
     public static Duration getDurationParameter(ParameterCore key, TemporalUnit temporalUnit) {
         long duration = getLongParameterOrDefaultValue(key);
         return Duration.of(duration, temporalUnit);
     }
 
     /**
      * Request String[]-parameter from Configuration.
      *
      * @param key
      *            as Parameter whose value is to be returned
      * @return Parameter as String[]
      */
     public static String[] getStringArrayParameter(ParameterCore key) {
         return getConfig().getStringArray(key.getName());
     }
 
     /**
      * Get Kitodo debug directory.
      *
      * @return String
      */
     public static File getKitodoDebugDirectory() {
         try {
             File debugDirectory = new File(ConfigCore.getParameter(ParameterCore.DIR_DEBUG));
             if (!debugDirectory.exists()) {
                 logger.debug("Cannot save debug output to {}: Directory does not exist", debugDirectory);
                 return null;
             }
             if (!debugDirectory.isDirectory()) {
                 logger.debug("Cannot save debug output to {}: Not a directory", debugDirectory);
                 return null;
             }
             if (!debugDirectory.canWrite()) {
                 logger.debug("Cannot save debug output to {}: Directory is not writable", debugDirectory);
                 return null;
             }
             return debugDirectory;
         } catch (NoSuchElementException debugDirectoryNotConfigured) {
             logger.catching(Level.TRACE, debugDirectoryNotConfigured);
             return null;
         }
     }
 
     /**
      * Get Kitodo diagram directory.
      *
      * @return String
      */
     public static String getKitodoDiagramDirectory() {
         return getParameter(ParameterCore.DIR_DIAGRAMS);
     }
 }