/* ==================================================================
* 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.um.permission.dispaly;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.jinhe.tss.core.util.EasyUtils;
import com.jinhe.tss.core.web.dispaly.tree.ITreeParser;
import com.jinhe.tss.core.web.dispaly.tree.TreeNode;
import com.jinhe.tss.um.UMConstants;
public class ResourceTreeParser implements ITreeParser {
public final static String RESOUCE_NODE = "node";
public final static String OPTIONS = "options";
public TreeNode parse(Object data) {
TreeNode root = new TreeNode();
@SuppressWarnings("unchecked")
List<ResourceTreeNode> leftTree = (List<ResourceTreeNode>) data; // 资源树 or 角色树
if( EasyUtils.isNullOrEmpty(leftTree) ) return root;
Map<Long, TreeNode> treeNodeMap = new HashMap<Long, TreeNode>();
for ( ResourceTreeNode resource : leftTree ) {
if(checkIsAdmin(resource)) continue; // 过滤掉系统管理员用户或者系统管理员角色
TreeNode item = new TreeNode(resource);
Map<String, Object> optionsMap = resource.getOptionAttributes();
for(String key : optionsMap.keySet()){
item.setAttribute(key, optionsMap.get(key).toString());
}
treeNodeMap.put(resource.getId(), item);
}
for ( ResourceTreeNode resource : leftTree ) {
if(checkIsAdmin(resource)) continue; // 过滤掉系统管理员用户或者系统管理员角色
TreeNode parent = treeNodeMap.get(resource.getParentId());
TreeNode treeNode = treeNodeMap.get(resource.getId());
if (parent == null) {
root.addChild(treeNode);
}
else {
parent.addChild(treeNode);
}
}
return root;
}
// 检查是否为 系统管理员用户资源 或者 系统管理员角色。
private boolean checkIsAdmin(ResourceTreeNode resource) {
return resource.getId().equals( UMConstants.ADMIN_ROLE_ID ) || resource.getResourceName().equals(UMConstants.ADMIN_ROLE_NAME);
}
}