package com.nis.util; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.nis.domain.SysMenu; import com.nis.web.security.UserUtils; /** * 将树构建成上下层结构 * @author Administrator * */ public final class TreeUtil { private List menuList = new ArrayList(); public TreeUtil(List menuList) { this.menuList = menuList; } public List buildTree(){ List newMenuList = new ArrayList(); for (SysMenu menu : menuList) { if (menu.getParent().getId().equals(1l)) { if (isBusinessOfAdmin(menu.getName())) { continue; } build(menu); newMenuList.add(menu); } } return newMenuList; } public List buildTreeLeft(){ List newMenuList = new ArrayList(); for (SysMenu menu : menuList) { if (menu.getIsTop().equals(1)) { if (isBusinessOfAdmin(menu.getName())) { continue; } build(menu); newMenuList.add(menu); } } return newMenuList; } /** * 过滤admin的业务功能 * @return */ private boolean isBusinessOfAdmin(String menuName) { if (UserUtils.getUser().isAdmin() && menuName.equals(Constants.SYS_BUSINESS_MENU_NAME) ) { return true; } return false; } private void build(SysMenu rootMenu) { List children = getChildren(rootMenu); if ( !StringUtil.isEmpty(children) ) { rootMenu.setChildren(children); for (SysMenu child : children) { if (StringUtils.isBlank(child.getHref())) { //根据url是否为空判断结束 build(child); } } } } private List getChildren(SysMenu rootMenu){ List children = new ArrayList(); for(SysMenu child : menuList) { if (rootMenu.getId().equals(child.getParent().getId())) { children.add(child); } } return children; } }