Java类:team.bangbang.common.utility.TreeUtil
Tree树的操作集合
概念定义: 1. Ancestor: 处于父路径上的所有节点; 2. Parent 处于父路径上的最近父节点,即上级节点 3. Node 节点 4. Family 当前节点及所辖子节点 5. Son 所辖子节点
包括以下方法:
/**
* 把一个树节点根据Id-ParentId关系插入到一棵树中
*
* @param tree
* 目标树
* @param node
* 等待放入目标树的节点
* @return 节点插入操作后的树
*/
public static TreeNode insertNode(TreeNode tree, TreeNode node);
/**
* 从源树中根据Id找到匹配指定编号的节点
*
* @param tree
* 源树
* @param objId
* 指定的节点编号
* @return 匹配指定编号的节点
*/
public static TreeNode findNode(TreeNode tree, Object objId);
/**
*
* 从整棵树中根据Id找到一个树节点并删除之。
*
* @param tree
* 目标树
* @param node
* 等待从目标树中删除的节点
* @return 节点删除操作后的树
*/
public static TreeNode deleteNode(TreeNode tree, TreeNode node);
/**
* 从一棵树中剔除允许范围列表之外的所有节点,保留允许范围内节点(及子节点)及其父节点。
*
* 注意此方法返回结果包括允许节点的所有父路径上的节点,可以用于构造登录后的功能菜单。
*
* @param tree
* 需要过滤的树
* @param ids
* 允许的节点Id集合
*
* @return 剔除操作完成之后的树,因为With Ancestor,所以此时仍然是一棵树。
*/
public static TreeNode filterWithAncestor(TreeNode tree, Collection<? extends Object> ids);
/**
* 从一棵树中剔除允许范围列表之外的所有节点,保留允许范围内节点(可以指定是否含子节点)及其父节点。
*
* 注意此方法返回结果包括允许节点的所有父路径上的节点。
*
* @param tree
* 需要过滤的树
* @param ids
* 允许的节点Id集合
* @param retainSon
* 是否保留子节点
*
* @return 剔除操作完成之后的树,因为With Ancestor,所以此时仍然是一棵树。
*/
public static TreeNode filterWithAncestor(TreeNode tree, Collection<? extends Object> ids, boolean retainSon);
/**
* 从一棵树中剔除允许范围列表之外的所有节点,仅保留允许范围内节点及其子节点。
*
* 注意保留允许范围内节点及其子节点,不包括允许节点的祖先节点。
*
* @param tree
* 需要过滤的树
* @param ids
* 允许的节点Id集合
*
* @return 剔除操作完成之后的树数组,因为Without Ancestor,所以此时有可能是多棵树。
*/
public static TreeNode[] filterWithoutAncestor(TreeNode tree, Collection<? extends Object> ids);
Java类:team.bangbang.common.utility.TreeNode
树节点,可以使用TreeUtil进行梳理。
包括以下属性: 1. id 当前树顶节点编号 2. parentId 父节点编号 3. name 节点名称 4. orderBy 序号 5. activeFlag 有效标识 6. sons[] 子树
另外包含以下方法:
/**
* @param son 要添加为子树的数组
*/
public void addSons(TreeNode[] son);
/**
* 对子节点进行排序
*/
public void sortSons();
/**
* @param son 待删除的子树
* @return true: 删除成功
* false: 删除未成功
*/
public boolean removeSon(TreeNode son);
/**
* 设置树的顶节点自定义属性
*
* @param key 属性Key值
* @param value 属性值
*/
public void setAttribute(Object key, Object value);
/**
* 得到所有自定义属性数据
*
* @return 所有属性数据
*/
public Map<Object, Object> getAttributes();
/**
* 得到自定义属性值
*
* @param key 属性Key值
* @return 属性值
*/
public Object getAttribute(Object key);
/**
* 得到树顶节点的各种自定义属性Key集合
* @return 树顶节点的属性Key集合
*/
public Iterator<Object> getAttributeKeys();
/**
* 当前树节点的克隆
*
* @return 克隆获得的节点
*/
public TreeNode cloneNode();
/**
* 整棵树的克隆
*
* @return 克隆得到的树
*/
public TreeNode clone();