package com.cjonline.foundation.authority.pojo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List; import org.apache.log4j.Logger; import com.cjonline.foundation.util.CheckNullEmpty; /**
* 实现递归的帮助类,最终的结果可以描述成如下:
* 根(root)
* --1(子系统1)
* -----1.1
* -------1.1.1
* -------1.1.2
* ------- ....
* -----1.2
* --2(子系统2)
* -----2.1
* -------2.1.1
* -------2.1.2
* ------- ....
* -----2.2
*/
public class ModelList implements java.io.Serializable { private static final Logger logger = Logger.getLogger(ModelList.class); private static final long serialVersionUID = 6384598893693849820L; /**
* model代表当前模块
*/
private SysModel model;
/**
* models代表当前模块下面的子模块,
*/
private List<ModelList> subList = new ArrayList<ModelList>(); /**
* 菜单级别
*/
private int flag = 0; public SysModel getModel() {
return model;
}
public void setModel(SysModel model) {
this.model = model;
}
public List<ModelList> getSubList() {
return subList;
}
public void setSubList(List<ModelList> subList) {
this.subList = subList;
}
public void setFlag(int flag) {
this.flag = flag;
} public int getFlag() {
return flag;
}
/**
* 递归方法根据传入的模块集合形成层级菜单
*/
@SuppressWarnings("unchecked")
public ModelList createTree2(List<SysModel> ms) {
//
ModelList node = new ModelList();
ArrayList<SysModel> fu = new ArrayList<SysModel>();// 用来存储parentId为空的父节点;
ArrayList<SysModel> childs = new ArrayList<SysModel>();// 用来存储不是系统的模块
// 将系统和模块菜单分开
for (Iterator<SysModel> it = ms.iterator(); it.hasNext();) {
SysModel mode = (SysModel) it.next();
String parentId = mode.getParentId();
if (parentId == null || parentId.equals("")) {
fu.add(mode);
} else {
childs.add(mode);
}
}
//由于是多个子系统,首先要找出有多少个子系统
for (SysModel model : fu) {
ModelList node1 = new ModelList();
node1.setFlag(0);
node1.setModel(model);
node.subList.add(node1);
appendChild(node1, childs);
}
return node; } /**
* node节点 childs为所以系统下的子节点
*/
public void appendChild(ModelList node, List<SysModel> childs) {
if (node != null) {
String systemId = node.getModel().getSystemId();
String smid = node.getModel().getSysModuleId();
int flag = node.getFlag();
if (childs != null && childs.size() > 0) {
for (SysModel model : childs) {
String systemId2 = model.getSystemId();
String parentId2 = model.getParentId();
if (systemId.equals(systemId2)) {
if (parentId2.equals(smid)) {
ModelList child = new ModelList();
child.setModel(model);
child.setFlag(flag + 1);
node.getSubList().add(child);
appendChild(child, childs);
}
}
}
}
}
}
}

最新文章

  1. 【视频处理】YV12ToARGB
  2. Spring 4集成 Quartz2(转)
  3. WIA Property Constant Definitions
  4. linux内核移植 I
  5. docker四种网络模式
  6. .NET开源 FAQ
  7. HDU5723 Abandoned country (最小生成树+深搜回溯法)
  8. Lambda表达式详解 (转)
  9. javascript中this指向问题
  10. eclipse添加market ,maven
  11. vue 轮播图插件 vue-awesome-swiper
  12. js发送邮件 不会调用客户端。
  13. Oracle——trunc()函数的使用
  14. 【C】NO.85.EBook.10.C.1.001-【C primer plus】-
  15. configparser配置文件管理
  16. alpha冲刺(2/10)
  17. CentOS 6 添加root权限账户
  18. VS中属性配置ABC
  19. Gridview各种功能+AspNetPager+Ajax实现无刷新存储过程分页 (留着用)
  20. mysql对执行结果进行html格式的输出?输出html格式?

热门文章

  1. Git~GitLab当它是一个源代码管理工具时
  2. VS 连接数据库报错:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误
  3. 研究SSIS时候的一些常见错误
  4. javascript动态添加表格以及获取数据
  5. 1.net平台
  6. js正则验证表达式
  7. Csharp: Detect Mobile Browsers
  8. Web前端面试指导(八):iframe有那些缺点
  9. 关于easyui 圆角按钮在ie9不能隐藏
  10. Not able to find Java executable or version转载