/* ================================================================== * 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); } }