All Downloads are FREE. Search and download functionalities are using the official Maven repository.

consulting.omnia.util.config.ConfigUtil Maven / Gradle / Ivy

package consulting.omnia.util.config;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Logger;

/**
 * ConfigUtil class.
 * 
 * @author Ronaldo Blanc ronaldoblanc at omnia.consulting
 */
// TODO improve
public final class ConfigUtil {
	private static final ConfigUtil INSTANCE = new ConfigUtil();
	private static final Properties properties = new Properties();
	private static final String DEFAULT_CONFIG_FILE = "config.properties";
	private static final Logger LOGGER = Logger.getLogger(ConfigUtil.class.getCanonicalName());

	private ConfigUtil() {
	}

	/**
	 * @param filename
	 *            The configuration data file path.
	 * @return An unique instance of the configuration util class.
	 */
	public static ConfigUtil getInstance(String filename) {
		init(filename);
		LOGGER.finest(ConfigUtil.class.getCanonicalName() + " instanced");
		return INSTANCE;
	}

	public boolean containsKey(String key) {
		return properties.containsKey(key);
	}

	public String getProperty(String property) {
		return properties.getProperty(property);
	}

	public void putProperty(String property, Object value) {
		properties.put(property, value);
	}

	public  T getPropertyAs(Class clazz, String property) {
		if (Boolean.class.equals(clazz)) {
			return clazz.cast(Boolean.valueOf(property));
		}
		return clazz.cast(properties.get(property));
	}

	/**
	 * Reads the configuration data file.
	 * 
	 * @param filename
	 */
	private static void init(String filename) {
		if (filename == null) {
			filename = DEFAULT_CONFIG_FILE;
		}
		getProperties(filename);
	}

	/**
	 * Reads the configuration data file.
	 * Returns the data as Properties.
	 * 
	 * @param filename
	 * @return Configuration data as Properties.
	 */
	public static Properties getProperties(String filename) {
		if (filename == null || filename.isEmpty()) {
			filename = DEFAULT_CONFIG_FILE;
		}
		InputStream is = null;
		try {
			File config = new File(filename);
			if (config.exists()) {
				is = new FileInputStream(config);
			} else {
				is = Thread.currentThread().getContextClassLoader()
						.getResourceAsStream(filename);
			}
			properties.load(is);
		} catch (Exception e) {
			LOGGER.severe("Missing configuration data. Please, check the ["
					+ filename + "] file.");
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException e) {
					/* Ignored */
				}
			}

		}
		return properties;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy