package com.n11.imic.config; import org.apache.commons.configuration.ConfigurationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.util.Arrays; public class ImageScalerConfigFileLocator { private static final Logger LOGGER = LoggerFactory.getLogger(ImageScalerConfigFileLocator.class); private static final String USER_DEFINED_CONFIGFILE_PARAM = "config.file"; private ImageScalerConfigFileLocator() { } private static final String[] predefinedConfigFilePaths = new String[]{ "/etc/imic/imic.xml", }; public static File findConfigFile() throws ConfigurationException { for (String configFilePath : predefinedConfigFilePaths) { File file = new File(configFilePath); if (properFileToRead(file)) { return file; } } LOGGER.info("Could not found any configuration file in predefined paths:" + Arrays.deepToString(predefinedConfigFilePaths)); LOGGER.info("Looking at VM's '" + USER_DEFINED_CONFIGFILE_PARAM + "' parameter for configuration file..."); String userDefinedConfigFilePath = System.getProperty("config.file"); if (userDefinedConfigFilePath == null) { throw new ConfigurationException("Could not found '"+ USER_DEFINED_CONFIGFILE_PARAM +"' parameter for configuration file."); } File userDefinedConfigFile = new File(userDefinedConfigFilePath); if (properFileToRead(userDefinedConfigFile)) { return userDefinedConfigFile; } else { throw new ConfigurationException("User defined config file:'"+ userDefinedConfigFile.getAbsolutePath() +"' is not proper to read."); } } private static boolean properFileToRead(File file) { return file.isFile() && file.canRead(); } }