package jp.aegif.nemaki.util.spring;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
public class SpringPropertiesUtil extends PropertyPlaceholderConfigurer {
private static final Log log = LogFactory
.getLog(SpringPropertiesUtil.class);
private Map<String, String> propertiesMap;
// Default as in PropertyPlaceholderConfigurer
private int springSystemPropertiesMode = SYSTEM_PROPERTIES_MODE_FALLBACK;
@Override
public void setSystemPropertiesMode(int systemPropertiesMode) {
super.setSystemPropertiesMode(systemPropertiesMode);
springSystemPropertiesMode = systemPropertiesMode;
}
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException {
super.processProperties(beanFactory, props);
propertiesMap = new HashMap<String, String>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String valueStr = resolvePlaceholder(keyStr, props, springSystemPropertiesMode);
propertiesMap.put(keyStr, valueStr);
}
}
public String getValue(String key) {
String value = propertiesMap.get(key);
if(log.isTraceEnabled()){
log.trace("key=" + key + " has no value");
}
return value;
}
//TODO error handling
public String getHeadValue(String key){
String val = propertiesMap.get(key).toString();
String[] _val = val.split(",");
if(_val.length == 0) return null;
return _val[0].trim();
}
public List<String> getValues(String key){
try{
String val = propertiesMap.get(key).toString();
String[] _val = val.split(",");
if(_val.length == 0) return null;
List<String> result = new ArrayList<String>();
for(String _v : _val){
result.add(_v.trim());
}
return result;
}catch(Exception e){
log.error("key=" + key, e);
return null;
}
}
}