package org.dayatang.configuration;
import java.util.Date;
import java.util.Properties;
/**
* 用于读取全局性配置信息的接口。
* @author yyang (<a href="mailto:gdyangyu@gmail.com">gdyangyu@gmail.com</a>)
*
*/
public interface Configuration {
/**
* 获取指定的键对应的字符串型键值。
*
* @param key 键
* @param defaultValue 默认值
* @return 参数key对应的键值。如果键值不存在则返回参数defaultValue代表的默认值。
*/
String getString(String key, String defaultValue);
/**
* 获取指定的键对应的字符串型键值。
*
* @param key 键
* @return 参数key对应的键值。如果键值不存在则返回空字符串。
*/
String getString(String key);
/**
* 获取指定的键对应的整数型键值。
*
* @param key 键
* @param defaultValue 默认值
* @return 参数key对应的键值。如果键值不存在则返回参数defaultValue代表的默认值。
*/
int getInt(String key, int defaultValue);
/**
* 获取指定的键对应的整数型键值。如果键值不存在则返回0。
*
* @param key 键
* @return 参数key对应的键值。
*/
int getInt(String key);
/**
* 获取指定的键对应的长整型键值。
*
* @param key 键
* @param defaultValue 默认值
* @return 参数key对应的键值。如果键值不存在则返回参数defaultValue代表的默认值。
*/
long getLong(String key, long defaultValue);
/**
* 获取指定的键对应的长整型键值。如果键值不存在则返回0。
*
* @param key 键
* @return 参数key对应的键值。
*/
long getLong(String key);
/**
* 获取指定的键对应的双精度型键值。
*
* @param key 键
* @param defaultValue 默认值
* @return 参数key对应的键值。如果键值不存在则返回参数defaultValue代表的默认值。
*/
double getDouble(String key, double defaultValue);
/**
* 获取指定的键对应的双精度型键值。
*
* @param key 键
* @return 参数key对应的键值。如果键值不存在则返回0。
*/
double getDouble(String key);
/**
* 获取指定的键对应的布尔型键值。
*
* @param key 键
* @param defaultValue 默认值
* @return 参数key对应的键值。如果键值不存在则返回参数defaultValue代表的默认值。
*/
boolean getBoolean(String key, boolean defaultValue);
/**
* 获取指定的键对应的布尔型键值。
*
* @param key 键
* @return 参数key对应的键值。如果键值不存在则返回false。
*/
boolean getBoolean(String key);
/**
* 获取指定的键对应的日期型键值。
*
* @param key 键
* @param defaultValue 默认值
* @return 参数key对应的键值。如果键值不存在则返回参数defaultValue代表的默认值。
*/
Date getDate(String key, Date defaultValue);
/**
* 获取指定的键对应的日期型键值。
*
* @param key 键
* @return 参数key对应的键值。如果键值不存在则返回null。
*/
Date getDate(String key);
/**
* 获取指定的键对应的对象型键值。
*
* @param key 键
* @param objectClass 对象的类型
* @param defaultValue 默认值
* @return 参数key对应的键值。如果键值不存在则返回参数defaultValue代表的默认值。
*/
<T> T getObject(String key, Class<T> objectClass, T defaultValue);
/**
* 获取指定的键对应的对象型键值。
*
* @param key 键
* @param objectClass 对象的类型
* @return 参数key对应的键值。如果键值不存在则返回null。
*/
<T> T getObject(String key, Class<T> objectClass);
/**
* 设置指定配置项的字符串型键值
*
* @param key 配置项的键
* @param value 要配置的值
*/
void setString(String key, String value);
/**
* 设置指定配置项的整数型键值
*
* @param key 配置项的键
* @param value 要配置的值
*/
void setInt(String key, int value);
/**
* 设置指定配置项的长整型键值
*
* @param key 配置项的键
* @param value 要配置的值
*/
void setLong(String key, long value);
/**
* 设置指定配置项的双精度型键值
*
* @param key 配置项的键
* @param value 要配置的值
*/
void setDouble(String key, double value);
/**
* 设置指定配置项的布尔型键值
*
* @param key 配置项的键
* @param value 要配置的值
*/
void setBoolean(String key, boolean value);
/**
* 设置指定配置项的日期型键值
*
* @param key 配置项的键
* @param value 要配置的值
*/
void setDate(String key, Date value);
/**
* 设置指定配置项的对象型键值
*
* @param key 配置项的键
* @param value 要配置的值
*/
void setObject(String key, Object value);
/**
* 获得所有属性
* @return
*/
Properties getProperties();
/**
* 从持久化源中获取最新配置,更新当前设置
*/
void load();
}