您的位置:首页 > 编程语言 > Java开发

java递归菜单树转换成pojo对象

2013-08-09 15:17 896 查看
  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);                        }                    }                }            }        }    }} 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 菜单树 pojo