package com.jinhe.tss.component.param;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
import org.dom4j.Document;
import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Autowired;
import com.jinhe.tss.component.TxTestSupport;
import com.jinhe.tss.component.param.entity.Param;
import com.jinhe.tss.core.util.XMLDocUtil;
public class ParamServiceTest extends TxTestSupport {
@Autowired private ParamService paramService;
/** 导入application.properties文件 */
public void testImportApplicationProperties(){
ResourceBundle resources = ResourceBundle.getBundle("application", Locale.getDefault());
if (resources == null) return;
Param group = addParamGroup(ParamConstants.DEFAULT_PARENT_ID, "系统参数");
for (Enumeration<String> enumer = resources.getKeys(); enumer.hasMoreElements();) {
String key = enumer.nextElement();
String value = resources.getString(key);
addSimpleParam(group.getId(), key, key, value);
}
printParams();
paramService.delete(group.getId());
}
/** 导入应用服务配置文件 appServers.xml */
public void testImportAppServerConfig(){
Param group = addParamGroup(ParamConstants.DEFAULT_PARENT_ID, "应用服务配置");
Document doc = XMLDocUtil.createDoc("appServers.xml");
List<?> elements = doc.getRootElement().elements();
for (Iterator<?> it = elements.iterator(); it.hasNext();) {
Element element = (Element) it.next();
String name = element.attributeValue("name");
String code = element.attributeValue("code");
addSimpleParam(group.getId(), code, name, element.asXML());
}
printParams();
paramService.delete(group.getId());
}
private void printParams() {
List<?> list = paramService.getAllParams();
assertTrue(list.size() > 0);
for(Object temp :list) {
Param p = (Param) temp;
log.debug(p.getAttributesForXForm());
// log.debug(p.getId() + p.getName() + p.getCode() + p.getText() + p.getDecode());
}
}
/** CRUD/排序/移动/复制/停用启用等 */
public void testParamFunction() {
Param paramGroup = addParamGroup(ParamConstants.DEFAULT_PARENT_ID, "测试参数组1");
Param comboParam = addComboParam(paramGroup.getId(), "book", "可选书籍");
addParamItem(comboParam.getId(), "Thinking in JAVA", "Thinking in JAVA", ParamConstants.COMBO_PARAM_MODE);
addParamItem(comboParam.getId(), "Effictive JAVA", "Effictive JAVA", ParamConstants.COMBO_PARAM_MODE);
addParamItem(comboParam.getId(), "Design Pattern", "Design Pattern", ParamConstants.COMBO_PARAM_MODE);
Param paramGroup2 = addParamGroup(ParamConstants.DEFAULT_PARENT_ID, "测试参数组2");
Param treeParam = addTreeParam(paramGroup2.getId(), "group", "组织");
Param temp = addParamItem(treeParam.getId(), "group1", "组一", ParamConstants.TREE_PARAM_MODE);
addParamItem(temp.getId(), "group2", "组二", ParamConstants.TREE_PARAM_MODE);
addParamItem(treeParam.getId(), "group3", "组三", ParamConstants.TREE_PARAM_MODE);
printParams();
paramService.startOrStop(treeParam.getId(), 1);
paramService.startOrStop(treeParam.getId(), 0);
paramService.sortParam(paramGroup2.getId(), paramGroup.getId(), -1);
paramService.copyParam(treeParam.getId(), paramGroup.getId());
printParams();
}
/** 建参数组 */
private Param addParamGroup(Long parentId, String name) {
Param param = new Param();
param.setName(name);
param.setParentId(parentId);
param.setType(ParamConstants.GROUP_PARAM_TYPE);
return paramService.saveParam(param);
}
/** 简单参数 */
private Param addSimpleParam(Long parentId, String code, String name, String value) {
Param param = new Param();
param.setCode(code);
param.setName(name);
param.setValue(value);
param.setParentId(parentId);
param.setType(ParamConstants.NORMAL_PARAM_TYPE);
param.setModality(ParamConstants.SIMPLE_PARAM_MODE);
paramService.saveParam(param);
return param;
}
/** 下拉型参数 */
private Param addComboParam(Long parentId, String code, String name) {
Param param = new Param();
param.setCode(code);
param.setName(name);
param.setParentId(parentId);
param.setType(ParamConstants.NORMAL_PARAM_TYPE);
param.setModality(ParamConstants.COMBO_PARAM_MODE);
paramService.saveParam(param);
return param;
}
/** 树型参数 */
private Param addTreeParam(Long parentId, String code, String name) {
Param param = new Param();
param.setCode(code);
param.setName(name);
param.setParentId(parentId);
param.setType(ParamConstants.NORMAL_PARAM_TYPE);
param.setModality(ParamConstants.TREE_PARAM_MODE);
paramService.saveParam(param);
return param;
}
/** 新建设参数项 */
private Param addParamItem(Long parentId, String value, String text, Integer mode) {
Param param = new Param();
param.setValue(value);
param.setText(text);
param.setParentId(parentId);
param.setType(ParamConstants.ITEM_PARAM_TYPE);
param.setModality(mode);
paramService.saveParam(param);
return param;
}
}