ConfigLoader.java
package no.ntnu.idatt1002.demo;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Properties;
/**
* Class for loading properties from a config file.
*/
public class ConfigLoader {
private static ConfigLoader instance;
private Properties properties;
private String path;
private ConfigLoader() {
}
private static ConfigLoader getInstance() {
if (instance == null) {
instance = new ConfigLoader();
}
return instance;
}
/**
* Loads properties from the config file.
*
* @param path The path to the config file.
* @return The properties.
*/
public static Properties load(String path) {
Properties properties = new Properties();
try {
InputStream inputStream = ConfigLoader.class.getResourceAsStream(path);
properties.load(inputStream);
} catch (Exception e) {
e.printStackTrace();
return new Properties();
}
try {
Integer loggerLevel = Integer.parseInt(properties.getProperty("logger_level"));
if (loggerLevel > 4) {
throw new NumberFormatException();
}
Logger.setLevel(loggerLevel);
} catch (NumberFormatException e) {
Logger.fatal("logger_level not set to a valid number");
} catch (Exception e) {
Logger.fatal("Could not set logger level");
}
Logger.info("Loaded properties from " + path);
getInstance().properties = properties;
return properties;
}
/**
* Returns the properties.
*
* @return The properties.
*/
public static Properties getProperties() {
return getInstance().properties;
}
/**
* Sets a specified property.
*
* @param key The key of the property.
* @param value The value of the property.
*/
public static void setProperty(String key, String value) {
getInstance().properties.setProperty(key, value);
}
}