package fr.jcgay.notification.configuration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Properties; public class ConfigurationReader { private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationReader.class); private final Properties properties; private final URL location; private ConfigurationReader(Properties properties) { this(properties, null); } public ConfigurationReader(Properties configuration, URL location) { this.properties = configuration; this.location = location; } public static ConfigurationReader atPath(String path) { try { return atUrl(new File(path).toURI().toURL()); } catch (MalformedURLException e) { LOGGER.debug("URL built for path [{}] is malformed will use default configuration.", path, e); return new ConfigurationReader(new Properties()); } } public static ConfigurationReader atUrl(URL url) { Properties configuration = new Properties(); try { configuration.load(url.openStream()); } catch (IOException e) { LOGGER.debug("Cannot read configuration at [{}], will use default one.", url, e); } return new ConfigurationReader(configuration, url); } public Properties get() { LOGGER.debug("Notification configuration read from {} is: {}.", location, properties); return properties; } }