package com.zillabyte.motherbrain.flow.config;
import java.io.Serializable;
import java.util.Map;
import net.sf.json.JSONObject;
import com.google.common.collect.Maps;
import com.zillabyte.motherbrain.utils.JSONUtil;
/***
* Contains env variables for the flow. Thins like auth_token, etc
* @author jake
*
*/
@SuppressWarnings("unchecked")
public class UserConfig implements Serializable {
private static final long serialVersionUID = -2121354184495729948L;
protected Map<String,Object> _settings = Maps.newHashMap();
/***
*
*/
public UserConfig() {
}
public boolean containsKey(String key) {
return _settings.containsKey(key);
}
/****
*
* @param key
* @param def
* @return
*/
public <T> T get(String key, T def) {
if (_settings.containsKey(key)) {
return (T)_settings.get(key);
} else {
return def;
}
}
/***
*
* @param key
* @return
*/
public <T> T get(String key) {
return get(key, null);
}
/***
*
* @param key
* @param val
* @return
*/
public <T extends UserConfig> T set(String key, Object val) {
_settings.put(key, val);
return (T)this;
}
/***
*
* @param map
* @return
*/
public <T extends UserConfig> T setAll(Map<String,Object> map) {
_settings.putAll(map);
return (T)this;
}
public <T extends UserConfig> T setAll(UserConfig config) {
_settings.putAll(config._settings);
return (T)this;
}
public UserConfig mergeWith(Map<String, Object> conf) {
UserConfig c = new UserConfig();
c._settings.putAll(this._settings);
c._settings.putAll(conf);
return c;
}
public JSONObject toJSON() {
return JSONUtil.toJSON(_settings);
}
}