summaryrefslogtreecommitdiff
path: root/src/com/p4square/grow/config/Config.java
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2016-04-09 14:22:20 -0700
committerJesse Morgan <jesse@jesterpm.net>2016-04-09 15:48:01 -0700
commit3102d8bce3426d9cf41aeaf201c360d342677770 (patch)
tree38c4f1e8828f9af9c4b77a173bee0d312b321698 /src/com/p4square/grow/config/Config.java
parentbbf907e51dfcf157bdee24dead1d531122aa25db (diff)
Switching from Ivy+Ant to Maven.
Diffstat (limited to 'src/com/p4square/grow/config/Config.java')
-rw-r--r--src/com/p4square/grow/config/Config.java203
1 files changed, 0 insertions, 203 deletions
diff --git a/src/com/p4square/grow/config/Config.java b/src/com/p4square/grow/config/Config.java
deleted file mode 100644
index 2fc2ea3..0000000
--- a/src/com/p4square/grow/config/Config.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright 2013 Jesse Morgan
- */
-
-package com.p4square.grow.config;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.apache.log4j.Logger;
-
-/**
- * Manage configuration for an application.
- *
- * Config reads one or more property files as the application config. Duplicate
- * properties loaded later override properties loaded earlier. Config has the
- * concept of a domain to distinguish settings for development and production.
- * The default domain is prod for production. Domain can be any String such as
- * dev for development or test for testing.
- *
- * The property files are processed like java.util.Properties except that the
- * keys are specified as DOMAIN.KEY. An asterisk (*) can be used in place of a
- * domain to indicate it should apply to all domains. If a domain specific entry
- * exists for the current domain, it will override any global config.
- *
- * @author Jesse Morgan <jesse@jesterpm.net>
- */
-public class Config {
- private static final Logger LOG = Logger.getLogger(Config.class);
-
- private String mDomain;
- private Properties mProperties;
-
- /**
- * Construct a new Config object.
- *
- * Sets the domain to the value of the system property CONFIG_DOMAIN, if present.
- * If the system property is not set then the environment variable CONFIG_DOMAIN is checked.
- * If neither are set the domain defaults to prod.
- */
- public Config() {
- // Check the command line for a domain property.
- mDomain = System.getProperty("CONFIG_DOMAIN");
-
- // If the domain was not set with a property, check for an environment variable.
- if (mDomain == null) {
- mDomain = System.getenv("CONFIG_DOMAIN");
- }
-
- // If neither were set, default to prod
- if (mDomain == null) {
- mDomain = "prod";
- }
-
- mProperties = new Properties();
- }
-
- /**
- * Change the domain from the default string "prod".
- *
- * @param domain The new domain.
- */
- public void setDomain(String domain) {
- LOG.info("Setting Config domain to " + domain);
- mDomain = domain;
- }
-
- /**
- * @return the current domain.
- */
- public String getDomain() {
- return mDomain;
- }
-
- /**
- * Load properties from a file.
- * Any exception are logged and suppressed.
- */
- public void updateConfig(String propertyFilename) {
- final File propFile = new File(propertyFilename);
-
- LOG.info("Loading properties from " + propFile);
-
- try {
- InputStream in = new FileInputStream(propFile);
- updateConfig(in);
-
- } catch (IOException e) {
- LOG.error("Could not load properties file: " + e.getMessage(), e);
- }
- }
-
- /**
- * Load properties from an InputStream.
- * This method closes the InputStream when it completes.
- *
- * @param in The InputStream
- */
- public void updateConfig(InputStream in) throws IOException {
- LOG.info("Loading properties from InputStream");
- mProperties.load(in);
- in.close();
- }
-
- /**
- * Get a String from the config.
- *
- * @return The config value or null if it is not found.
- */
- public String getString(String key) {
- return getString(key, null);
- }
-
- /**
- * Get a String from the config.
- *
- * @return The config value or defaultValue if it can not be found.
- */
- public String getString(final String key, final String defaultValue) {
- String result;
-
- // Command line properties trump all.
- result = System.getProperty(key);
- if (result != null) {
- LOG.debug("Reading System.getProperty(" + key + "). Got result = { " + result + " }");
- return result;
- }
-
- // Environment variables can also override configs
- result = System.getenv(key);
- if (result != null) {
- LOG.debug("Reading System.getenv(" + key + "). Got result = { " + result + " }");
- return result;
- }
-
- final String domainKey = mDomain + "." + key;
- result = mProperties.getProperty(domainKey);
- if (result != null) {
- LOG.debug("Reading config for key = { " + key + " }. Got result = { " + result + " }");
- return result;
- }
-
- final String globalKey = "*." + key;
- result = mProperties.getProperty(globalKey);
- if (result != null) {
- LOG.debug("Reading config for key = { " + key + " }. Got result = { " + result + " }");
- return result;
- }
-
- LOG.debug("Reading config for key = { " + key + " }. Got default value = { " + defaultValue + " }");
- return defaultValue;
- }
-
- /**
- * Get an integer from the config.
- *
- * @return The config value or Integer.MIN_VALUE if the key is not present or the
- * config can not be parsed.
- */
- public int getInt(String key) {
- return getInt(key, Integer.MIN_VALUE);
- }
-
- /**
- * Get an integer from the config.
- *
- * @return The config value or defaultValue if the key is not present or the
- * config can not be parsed.
- */
- public int getInt(String key, int defaultValue) {
- final String propertyValue = getString(key);
-
- if (propertyValue != null) {
- try {
- final int result = Integer.valueOf(propertyValue);
- return result;
-
- } catch (NumberFormatException e) {
- LOG.warn("Expected property to be an integer: "
- + key + " = { " + propertyValue + " }");
- }
- }
-
- return defaultValue;
- }
-
- public boolean getBoolean(String key) {
- return getBoolean(key, false);
- }
-
- public boolean getBoolean(String key, boolean defaultValue) {
- final String propertyValue = getString(key);
-
- if (propertyValue != null) {
- return (propertyValue.charAt(0) & 0xDF) == 'T';
- }
-
- return defaultValue;
- }
-}