/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.component.param;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.jinhe.tss.component.param.entity.Param;
import com.jinhe.tss.component.support.web.webwork.PTActionSupport;
import com.jinhe.tss.core.sso.context.Context;
import com.jinhe.tss.core.util.EasyUtils;
import com.jinhe.tss.core.web.dispaly.tree.ITreeTranslator;
import com.jinhe.tss.core.web.dispaly.tree.LevelTreeParser;
import com.jinhe.tss.core.web.dispaly.tree.TreeEncoder;
import com.jinhe.tss.core.web.dispaly.xform.XFormEncoder;
public class ParamAction extends PTActionSupport {
private static final long serialVersionUID = 6808094457268436875L;
private ParamService paramService;
private Param param = new Param();
private Integer type;
private Integer mode;
private Long parentId;
private Long paramId;
private String toParamId;
private Integer disabled;
private Long targetId;
private int direction;
/** 树型展示所有已配置参数 */
public String get2Tree(){
TreeEncoder treeEncoder = new TreeEncoder(paramService.getAllParams(), new LevelTreeParser());
return print("ParamTree", treeEncoder);
}
/** 刷新一下参数的缓存 */
public String flushParamCache() {
ParamManager.remove(paramService.getParam(paramId).getCode());
return printSuccessMessage();
}
/** 删除 */
public String delParam() {
paramService.delete(paramId);
return printSuccessMessage();
}
/** 新建、编辑 */
public String saveParam(){
boolean isnew = (null == param.getId());
paramService.saveParam(param);
return doAfterSave(isnew, param, "ParamTree");
}
/** 取参数信息 */
public String getParamInfo() {
boolean isnew = isNew != null && ParamConstants.IS_NEW_TAG.equals(isNew);
XFormEncoder xformEncoder = null;
String uri = null;
if(ParamConstants.GROUP_PARAM_TYPE.equals(type)){
uri = ParamConstants.XFORM_NEW_GROUP;
}
else if(ParamConstants.NORMAL_PARAM_TYPE.equals(type)){
if(ParamConstants.SIMPLE_PARAM_MODE.equals(mode)){
uri = ParamConstants.XFORM_NEW_PARAM_SIMPLE;
} else {
uri = ParamConstants.XFORM_NEW_PARAM_COMPLEX;
}
} else if(ParamConstants.ITEM_PARAM_TYPE.equals(type)){
uri = ParamConstants.XFORM_NEW_PARAM_ITEM;
}
if( isnew ){
Map<String, Object> map = new HashMap<String, Object>();
parentId = parentId == null ? ParamConstants.DEFAULT_PARENT_ID : parentId;
map.put("parentId", parentId);
map.put("type", type);
map.put("modality", mode);
xformEncoder = new XFormEncoder(uri, map);
}
else {
Param param = paramService.getParam(paramId);
xformEncoder = new XFormEncoder(uri, param);
}
return print("ParamInfo", xformEncoder);
}
/** 停用、启用参数 */
public String startOrStopParam(){
paramService.startOrStop(paramId,disabled);
return printSuccessMessage();
}
/** 参数排序 */
public String sortParam(){
paramService.sortParam(paramId, targetId, direction);
return printSuccessMessage();
}
/** 参数复制 */
public String copyParam(){
Long targetId = null;
if(toParamId != null) {
targetId = "_rootId".equals(toParamId) ? ParamConstants.DEFAULT_PARENT_ID : new Long(toParamId);
}
List<?> result = paramService.copyParam(paramId, targetId);
TreeEncoder encoder = new TreeEncoder(result, new LevelTreeParser());
encoder.setNeedRootNode(false);
return print("ParamTree", encoder);
}
/** 移动参数 */
public String moveParam(){
Long id = "_rootId".equals(toParamId) ? ParamConstants.DEFAULT_PARENT_ID : new Long(toParamId);
paramService.move(paramId, id);
return printSuccessMessage();
}
/** 取可以新增的参数树 */
public String getCanAddParamsTree(){
Object[] datas = ParamConstants.ITEM_PARAM_TYPE.equals(type) ?
paramService.getCanAddParams(mode) : paramService.getCanAddGroups();
final String canAddIds = (String) datas[1];
TreeEncoder paramTree = new TreeEncoder(datas[0], new LevelTreeParser());
paramTree.setTranslator(new ITreeTranslator(){
public Map<String, Object> translate(Map<String, Object> attributesMap) {
if(EasyUtils.isNullOrEmpty(canAddIds)){
return attributesMap;
}
List<String> canAddParamIds = Arrays.asList(canAddIds.split(","));
if(!canAddParamIds.contains(attributesMap.get("id").toString())) {
attributesMap.put("canselected", "0");
}
return attributesMap;
}
});
//如果移动的不是参数组而是参数项,则"全部节点(Root Node)"不可选
if (!ParamConstants.GROUP_PARAM_TYPE.equals(type)) {
paramTree.setRootCanSelect(false);
}
return print("ParamTree", paramTree);
}
/***************************************** 以下为应用系统初始化相关 *************************************************/
private String code;
private String name;
private String value;
/**
* 初始化应用系统,主要是生成appServer配置信息。
* @return
*/
public String initSystem(){
value = "<server code=" + code + " userDepositoryCode=\"tss\" name="
+ code + " sessionIdName=\"JSESSIONID\" baseURL=" + value + "/>";
Param param = paramService.getParam(code);
if(param == null){
param = new Param();
param.setCode(code);
param.setName(name);
param.setType(ParamConstants.NORMAL_PARAM_TYPE);
param.setModality(ParamConstants.SIMPLE_PARAM_MODE);
param.setParentId(ParamConstants.DEFAULT_PARENT_ID);
paramService.saveParam(param);
}
param.setValue(value);
paramService.saveParam(param);
String msg = Context.getApplicationContext().getCurrentAppCode() + "应用里设置(" + code + ")应用配置信息成功";
return printSuccessMessage(msg);
}
/***************************************************************************************************************/
public void setParamService(ParamService paramService) {
this.paramService = paramService;
}
public Param getParam() {
return param;
}
public void setParamId(Long paramId) {
this.paramId = paramId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public void setType(Integer type) {
this.type = type;
}
public void setMode(Integer mode) {
this.mode = mode;
}
public void setDisabled(Integer disabled) {
this.disabled = disabled;
}
public void setDirection(int direction) {
this.direction = direction;
}
public void setTargetId(Long targetId) {
this.targetId = targetId;
}
public void setToParamId(String toParamId) {
this.toParamId = toParamId;
}
public void setCode(String code) {
this.code = code;
}
public void setName(String name) {
this.name = name;
}
public void setValue(String value) {
this.value = value;
}
}