package com.nvarghese.beowulf.common;
import java.io.File;
import java.net.URL;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BeowulfCommonConfigManager implements ServletContextListener {
private static PropertiesConfiguration propertiesConfiguration;
private static final String MONGODB_URI = "mongodb://127.0.0.1:10001";
private static final String BWCOMMON__DB__NAME = "bw-common.db.name";
private static final String BWCOMMON__DB__URI = "bw-common.db_uri";
static Logger logger = LoggerFactory.getLogger(BeowulfCommonConfigManager.class);
public BeowulfCommonConfigManager() {
}
public static void initialize(String filename) throws ConfigurationException {
File file = new File(filename);
if (file.exists()) {
logger.info("Found the configuration file for bw-common library");
propertiesConfiguration = new PropertiesConfiguration(new File(filename));
} else {
logger.info("Trying to find the bw-common configuration resource using class loader");
URL url = BeowulfCommonConfigManager.class.getClassLoader().getResource(filename);
logger.info("Found the configuration file for bw-common library at `{}`", url);
propertiesConfiguration = new PropertiesConfiguration(url);
}
}
public static void initialize() throws ConfigurationException {
initialize("bw-common.conf");
}
public static String getDbName() {
if (propertiesConfiguration == null) {
try {
initialize();
} catch (ConfigurationException e) {
logger.error("Failed to initialize bw-common.", e);
}
}
return propertiesConfiguration.getString(BWCOMMON__DB__NAME, "beowulfDB");
}
public static String getDbUri() throws ConfigurationException {
if (propertiesConfiguration == null) {
try {
initialize();
} catch (ConfigurationException e) {
logger.error("Failed to initialize bw-common.", e);
}
}
return propertiesConfiguration.getString(BWCOMMON__DB__URI, MONGODB_URI);
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent event) {
ServletContext ctx = event.getServletContext();
String settingsFile = ctx.getInitParameter("bw-common-conf-filename");
try {
if (settingsFile != null) {
initialize(settingsFile);
} else
initialize();
} catch (ConfigurationException e) {
logger.error("ConfigurationException while initializing BW-Common: " + e.getMessage(), e);
}
}
}