package com.hqyg.disjob.common.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
/**
* Load configurations from property file in classpath, default is {@link #PROPERTY_FILE}.
*/
public class Config {
private Log log = org.apache.commons.logging.LogFactory.getLog(this.getClass());
/**
* Default property file for the configuration of the clustering updater
*/
public static final String PROPERTY_FILE = "crawler.properties";
private Properties prop;
/**
* Default Constructor using the default {@link #PROPERTY_FILE}.
*/
public Config() {
// this(PROPERTY_FILE);
}
/**
* Constructor that takes a custom property file.
* @param propertyFile custom property file in classpath
*/
public Config(String propertyFile) {
prop = new Properties();
try {
InputStream stream = getClass().getClassLoader().getResourceAsStream(propertyFile);
if(stream==null) stream = ClassLoader.getSystemResourceAsStream(propertyFile);
prop.load(stream);
} catch (IOException e) {
log.error("Cannot load config file " + PROPERTY_FILE, e);
}
}
/**
* Get the property value of the given property key
* @param key property key
* @return value of the property
*/
public String getProperty(String key) {
return prop.getProperty(key);
}
public String getPropertyNotEmpty(String key) {
String value = getProperty(key);
if(StringUtils.isBlank(value)) throw new RuntimeException("property " + key + " is blank");
return value;
}
/**
* Get the boolean value of the given property key
* @param key property key
* @return true/false
*/
public boolean getBooleanProperty(String key) {
String value = getProperty(key);
if("true".equalsIgnoreCase(value)) return true;
if("false".equalsIgnoreCase(value)) return false;
throw new RuntimeException("value of property " + key + " must be either true/false");
}
public boolean getBooleanPropertyNotEmpty(String key) {
String value = getPropertyNotEmpty(key);
if("true".equalsIgnoreCase(value)) return true;
if("false".equalsIgnoreCase(value)) return false;
throw new RuntimeException("value of property " + key + " must be either true/false");
}
/**
* Get the integer value of the given property key
* @param key property key
* @return integer value of the property
*/
public int getIntProperty(String key) {
String value = getProperty(key);
return Integer.parseInt(value);
}
public int getIntPropertyNotEmpty(String key) {
String value = getPropertyNotEmpty(key);
return Integer.parseInt(value);
}
}