package com.mfh.comn.code;
import java.util.List;
/**
* 编码服务集成门户
* 每一种编码类我们称为一个domain
* 每一种编码有一个编码提供者CodeHouse
*
* @author zhangyz created on 2013-6-7
* @since Framework 1.0
*/
public interface ICodeService {
public final static String DOMAIN_DEFAULT = "default";//缺省的编码域名
/**
* 使用指定的实现类,初始化一个编码提供者
* @param houseClassName
* @param domain
* @return
* @author zhangyz created on 2013-6-7
*/
public <T extends ICodeHouse<?>> T initCodeHouse(Class<T> houseClassName, String... domain);
/**
* 增加一个编码提供者
* @param codeHouse
* @param domain
* @author zhangyz created on 2013-6-7
*/
public void addCodeHouse(ICodeHouse<?> codeHouse, String... domain);
/**
* 根据编码值获取一个编码描述(在默认编码域内)
* @param code 编码值
* @return 编码描述
* @author zhangyz created on 2014-3-17
*/
public <T> String getValue(T code);
/**
* 在指定编码域内根据编码值获取一个编码描述
* @param domain 编码域,哪类编码
* @param code 编码值
* @return 编码描述
* @author zhangyz created on 2013-6-7
*/
public <T> String getValue(String domain, T code);
/**
* 在指定编码域内根据编码值获取一个编码描述
* @param domain 编码域,以该类名命名的
* @param code 编码值,字符型
* @return 编码描述
* @author zhangyz created on 2013-6-7
*/
public <T> String getValue(Class<?> domain, T code);
/**
* 简单的布尔编码转换
* @param code
* @return false:否:true:是
* @author zhangyz created on 2013-6-7
*/
public String getBooleanValue(boolean code);
/**
* 简单的0-1布尔编码转换
* @param code
* @return 0:否:>0 是
* @author zhangyz created on 2013-6-7
*/
public String getIntBooleanValue(int code);
/**
* 根据编码类获取其对应的简单编码提供者
* @param domain
* @return
* @author zhangyz created on 2013-6-7
*/
public <T> ISimpleCodeHouse<T> getSimleCodeHouse(String... domain);
/**
* 根据编码类获取其对应的树编码提供者
* @param domain
* @return
* @author zhangyz created on 2013-6-7
*/
//public <T> ITreeCodeHouse<T> getTreeCodeHouse(String... domain);
/**
* 获取该编码类下所有简单编码项,如果存在
* @param domain
* @return
* @author zhangyz created on 2013-6-7
*/
public <T> List<ICodeItem<T>> getOptions(String domain);
/**
* 获取该编码类下指定父编码的所有简单编码项,如果存在
* @param parentCode 父编码值
* @param domain
* @return
* @author zhangyz created on 2013-6-7
*/
public <T> List<ICodeItem<T>> getOptions(T parentCode, String domain);
/**
* 获取该编码类下所有树编码项,如果存在
* @param domain
* @return
* @author zhangyz created on 2013-6-7
*/
//public <T> List<ITreeCodeItem<T>> getTreeOptions(String... domain);
/**
* 获取该编码类下指定父编码的所有树编码项,如果存在
* @param parentCode 父编码值
* @param domain
* @return
* @author zhangyz created on 2013-6-7
*/
//public <T> List<ITreeCodeItem<T>> getTreeOptions(T parentCode, String... domain);
}