// Path: home-core/src/main/java/com/sismics/home/core/constant/ConfigType.java
// public enum ConfigType {
// }
// 
// Path: home-core/src/main/java/com/sismics/home/core/dao/dbi/ConfigDao.java
// public class ConfigDao {
//     /**
//      * Gets a configuration parameter by its ID.
//      * 
//      * @param id Configuration parameter ID
//      * @return Configuration parameter
//      */
//     public Config getById(ConfigType id) {
//         final Handle handle = ThreadLocalContext.get().getHandle();
// 
//         // Prevents from getting parameters outside of a transactional context (e.g. jUnit)
//         if (handle == null) {
//             return null;
//         }
//         return handle.createQuery("select CFG_ID_C, CFG_VALUE_C" +
//                 "  from T_CONFIG" +
//                 "  where CFG_ID_C = :id")
//                 .bind("id", id.name())
//                 .mapTo(Config.class)
//                 .first();
//     }
// }
// 
// Path: home-core/src/main/java/com/sismics/home/core/model/dbi/Config.java
// public class Config {
//     /**
//      * Configuration parameter ID.
//      */
//     private ConfigType id;
//     
//     /**
//      * Configuration parameter value.
//      */
//     private String value;
// 
//     public Config() {
//     }
// 
//     public Config(ConfigType id, String value) {
//         this.id = id;
//         this.value = value;
//     }
// 
//     /**
//      * Getter of id.
//      *
//      * @return id
//      */
//     public ConfigType getId() {
//         return id;
//     }
// 
//     /**
//      * Setter of id.
//      *
//      * @param id id
//      */
//     public void setId(ConfigType id) {
//         this.id = id;
//     }
// 
//     /**
//      * Getter of value.
//      *
//      * @return value
//      */
//     public String getValue() {
//         return value;
//     }
// 
//     /**
//      * Setter of value.
//      *
//      * @param value value
//      */
//     public void setValue(String value) {
//         this.value = value;
//     }
//     
//     @Override
//     public String toString() {
//         return Objects.toStringHelper(this)
//                 .add("id", id)
//                 .toString();
//     }
// }


import com.sismics.home.core.constant.ConfigType;
import com.sismics.home.core.dao.dbi.ConfigDao;
import com.sismics.home.core.model.dbi.Config;
import java.util.ResourceBundle;
package com.sismics.home.core.util;



/**
 * Configuration parameter utilities.
 * 
 * @author jtremeaux
 */
public class ConfigUtil {
    /**
     * Returns the textual value of a configuration parameter.
     * 
     * @param configType Type of the configuration parameter
     * @return Textual value of the configuration parameter
     * @throws IllegalStateException Configuration parameter undefined
     */
    public static String getConfigStringValue(ConfigType configType) {
        ConfigDao configDao = new ConfigDao();
        Config config = configDao.getById(configType);
        if (config == null) {
            throw new IllegalStateException("Config parameter not found: " + configType);
        }
        return config.getValue();
    }

    /**
     * Returns the configuration resource bundle.
     * 
     * @return Resource bundle
     */
    public static ResourceBundle getConfigBundle() {
        return ResourceBundle.getBundle("config");
    }

    /**
     * Returns the integer value of a configuration parameter.
     * 
     * @param configType Type of the configuration parameter
     * @return Integer value of the configuration parameter
     * @throws IllegalStateException Configuration parameter undefined
     */
    public static int getConfigIntegerValue(ConfigType configType) {
        String value = getConfigStringValue(configType);
        
        return Integer.parseInt(value);
    }

    /**
     * Returns the boolean value of a configuration parameter.
     * 
     * @param configType Type of the configuration parameter
     * @return Boolean value of the configuration parameter
     * @throws IllegalStateException Configuration parameter undefined
     */
    public static boolean getConfigBooleanValue(ConfigType configType) {
// Path: home-core/src/main/java/com/sismics/home/core/constant/ConfigType.java
// public enum ConfigType {
// }
// 
// Path: home-core/src/main/java/com/sismics/home/core/dao/dbi/ConfigDao.java
// public class ConfigDao {
//     /**
//      * Gets a configuration parameter by its ID.
//      * 
//      * @param id Configuration parameter ID
//      * @return Configuration parameter
//      */
//     public Config getById(ConfigType id) {
//         final Handle handle = ThreadLocalContext.get().getHandle();
// 
//         // Prevents from getting parameters outside of a transactional context (e.g. jUnit)
//         if (handle == null) {
//             return null;
//         }
//         return handle.createQuery("select CFG_ID_C, CFG_VALUE_C" +
//                 "  from T_CONFIG" +
//                 "  where CFG_ID_C = :id")
//                 .bind("id", id.name())
//                 .mapTo(Config.class)
//                 .first();
//     }
// }
// 
// Path: home-core/src/main/java/com/sismics/home/core/model/dbi/Config.java
// public class Config {
//     /**
//      * Configuration parameter ID.
//      */
//     private ConfigType id;
//     
//     /**
//      * Configuration parameter value.
//      */
//     private String value;
// 
//     public Config() {
//     }
// 
//     public Config(ConfigType id, String value) {
//         this.id = id;
//         this.value = value;
//     }
// 
//     /**
//      * Getter of id.
//      *
//      * @return id
//      */
//     public ConfigType getId() {
//         return id;
//     }
// 
//     /**
//      * Setter of id.
//      *
//      * @param id id
//      */
//     public void setId(ConfigType id) {
//         this.id = id;
//     }
// 
//     /**
//      * Getter of value.
//      *
//      * @return value
//      */
//     public String getValue() {
//         return value;
//     }
// 
//     /**
//      * Setter of value.
//      *
//      * @param value value
//      */
//     public void setValue(String value) {
//         this.value = value;
//     }
//     
//     @Override
//     public String toString() {
//         return Objects.toStringHelper(this)
//                 .add("id", id)
//                 .toString();
//     }
// }


// Path: home-core/src/main/java/com/sismics/home/core/util/ConfigUtil.java
import com.sismics.home.core.constant.ConfigType;
import com.sismics.home.core.dao.dbi.ConfigDao;
import com.sismics.home.core.model.dbi.Config;
import java.util.ResourceBundle;

package com.sismics.home.core.util;



/**
 * Configuration parameter utilities.
 * 
 * @author jtremeaux
 */
public class ConfigUtil {
    /**
     * Returns the textual value of a configuration parameter.
     * 
     * @param configType Type of the configuration parameter
     * @return Textual value of the configuration parameter
     * @throws IllegalStateException Configuration parameter undefined
     */
    public static String getConfigStringValue(ConfigType configType) {
        ConfigDao configDao = new ConfigDao();
        Config config = configDao.getById(configType);
        if (config == null) {
            throw new IllegalStateException("Config parameter not found: " + configType);
        }
        return config.getValue();
    }

    /**
     * Returns the configuration resource bundle.
     * 
     * @return Resource bundle
     */
    public static ResourceBundle getConfigBundle() {
        return ResourceBundle.getBundle("config");
    }

    /**
     * Returns the integer value of a configuration parameter.
     * 
     * @param configType Type of the configuration parameter
     * @return Integer value of the configuration parameter
     * @throws IllegalStateException Configuration parameter undefined
     */
    public static int getConfigIntegerValue(ConfigType configType) {
        String value = getConfigStringValue(configType);
        
        return Integer.parseInt(value);
    }

    /**
     * Returns the boolean value of a configuration parameter.
     * 
     * @param configType Type of the configuration parameter
     * @return Boolean value of the configuration parameter
     * @throws IllegalStateException Configuration parameter undefined
     */
    public static boolean getConfigBooleanValue(ConfigType configType) {
        String value = getConfigStringValue(configType);