package ecologylab.bigsemantics; import org.apache.commons.configuration.CompositeConfiguration; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Load configurations. * * @author quyin */ public class Configs { static Logger logger = LoggerFactory.getLogger(Configs.class); /** * According to commons-configuration documentation, property files will be searched: (1) in the * current directory, (2) in the user home directory, and (3) in the classpath. * * @param configFileName * @return */ public static Configuration loadProperties(String configFileName) { CompositeConfiguration result = new CompositeConfiguration(); // load the configurations from the property file. PropertiesConfiguration configs = loadPropertiesHelper(configFileName); if (configs != null) { result.addConfiguration(configs); } int p = configFileName.lastIndexOf('.'); if (p >= 0) { // try to guess the file name for the default configurations and use it. String defaultsFileName = configFileName.substring(0, p) + "-defaults" + configFileName.substring(p); PropertiesConfiguration defaults = loadPropertiesHelper(defaultsFileName); if (defaults != null) { result.addConfiguration(defaults); } } return result; } private static PropertiesConfiguration loadPropertiesHelper(String fileName) { PropertiesConfiguration result = null; try { result = new PropertiesConfiguration(fileName); } catch (ConfigurationException e) { logger.warn("Cannot load configurations from " + fileName + ": " + e.getMessage()); } return result; } }