org.tinygroup.menutree.util.MenuUtil Maven / Gradle / Ivy
The newest version!
package org.tinygroup.menutree.util;
import org.tinygroup.menutree.config.Menu;
import org.tinygroup.menutree.dto.MenuNode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by wangwy11342 on 2016/7/29.
*/
public class MenuUtil {
public MenuNode[] toTree(Integer[] menuIds,
Menu[] menus) {
if (menuIds == null) {
return new MenuNode[0];
}
// 存放所有的权限菜单
Map nodeMap = new HashMap();
for (Menu tsysMenu : menus) {
MenuNode node = new MenuNode(tsysMenu.getId(), tsysMenu);
nodeMap.put(node.getId(), node);
}
// 存放已计算过的节点Id
List computedIds = new ArrayList();
// 存放已计算过的节点
Map computedNodes = new HashMap();
for (Integer menuId : menuIds) {
if(!nodeMap.containsKey(menuId)){
//所有菜单中不包含的菜单被排除
continue;
}
MenuNode node = nodeMap.get(menuId);
// MenuNode node = new MenuNode(userMenu.getId(), userMenu);
computed(node, computedIds, computedNodes, nodeMap);
}
return toArray(computedNodes);
}
protected MenuNode[] toArray(Map computedNodes) {
List list = new ArrayList();
for (MenuNode node : computedNodes.values()) {
Menu tsysMenu = (Menu) node.getInfo();
if (tsysMenu.getParentId()==null || tsysMenu.getParentId() == 0) {
list.add(node);
continue;
}
}
MenuNode[] tree = new MenuNode[list.size()];
int i = 0;
for (MenuNode node : list) {
tree[i] = node;
i++;
}
return tree;
}
protected void computed(MenuNode node, List computedIds,
Map computedNodes, Map nodeMap) {
Integer id = node.getId();
if (computedNodes.containsKey(id)) {
return;
}
// 如果没算过,就把他存放到已算列表
computedNodes.put(id, node);
computedIds.add(id);
// 然后计算该节点的父节点
Menu tsysMenu = (Menu) node.getInfo();
Integer parentId = null;
if(tsysMenu.getParentId()!=null && tsysMenu.getParentId()!=0){
parentId = Integer.valueOf(tsysMenu.getParentId());
}
if (parentId == null || parentId==0) {
return;
}
Menu parent = (Menu) nodeMap.get(parentId).getInfo();
MenuNode nodeParent = computedNodes.get(parentId);
if (nodeParent == null) {
nodeParent = new MenuNode(parentId, parent);
}
nodeParent.getSubNode().add(node);
computed(nodeParent, computedIds, computedNodes, nodeMap);
}
public MenuNode[] toTreeByList(List tUserTFunctionIds, List © 2015 - 2025 Weber Informatics LLC | Privacy Policy