AgentFrameworkTreeUtil.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.fdkankan.agent.util;
  2. import com.fdkankan.agent.entity.AgentFrameworkEntity;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. public class AgentFrameworkTreeUtil {
  6. private List<AgentFrameworkTree> resultNodes = new ArrayList<AgentFrameworkTree>();//树形结构排序之后list内容
  7. private List<AgentFrameworkTree> nodes = new ArrayList<AgentFrameworkTree>();
  8. //传入list参数
  9. public AgentFrameworkTreeUtil(List<AgentFrameworkEntity> nodesList) {//通过构造函数初始化
  10. for (AgentFrameworkEntity n : nodesList) {
  11. AgentFrameworkTree treeGrid = new AgentFrameworkTree();
  12. treeGrid.setId(n.getId());
  13. treeGrid.setName(n.getName());
  14. // treeGrid.setIcon(n.getIcon());
  15. if (n.getParentId() != null) {
  16. treeGrid.setParentId(n.getParentId());
  17. }
  18. nodes.add(treeGrid);
  19. }
  20. }
  21. public AgentFrameworkTreeUtil() {
  22. }
  23. /**
  24. * 构建树形结构list
  25. *
  26. * @return 返回树形结构List列表
  27. */
  28. public List<AgentFrameworkTree> buildTree() {
  29. for (AgentFrameworkTree node : nodes) {
  30. Long id = node.getParentId();
  31. if (id == null) {//通过循环一级节点 就可以通过递归获取二级以下节点
  32. resultNodes.add(node);//添加一级节点
  33. // node.setLevel(1);
  34. build(node, node.getLevel());//递归获取二级、三级、。。。节点
  35. }
  36. }
  37. return resultNodes;
  38. }
  39. /**
  40. * 递归循环子节点
  41. *
  42. * @param node 当前节点
  43. */
  44. private void build(AgentFrameworkTree node, int level) {
  45. List<AgentFrameworkTree> children = getChildren(node);
  46. if (!children.isEmpty()) {//如果存在子节点
  47. node.setChildren(children);
  48. // level++;
  49. for (AgentFrameworkTree child : children) {//将子节点遍历加入返回值中
  50. // child.setLevel(level);
  51. build(child, child.getLevel());
  52. }
  53. }
  54. }
  55. /**
  56. * @param node
  57. * @return 返回
  58. */
  59. private List<AgentFrameworkTree> getChildren(AgentFrameworkTree node) {
  60. List<AgentFrameworkTree> children = new ArrayList<AgentFrameworkTree>();
  61. Long id = node.getId();
  62. for (AgentFrameworkTree child : nodes) {
  63. if (child.getParentId() != null && id.longValue() == child.getParentId().longValue()) {//如果id等于父id
  64. children.add(child);//将该节点加入循环列表中
  65. }
  66. }
  67. return children;
  68. }
  69. public List<AgentFrameworkTree> buildTree(List<AgentFrameworkEntity> all, List<AgentFrameworkEntity> in) {
  70. for (AgentFrameworkEntity n : all) {
  71. AgentFrameworkTree treeGrid = new AgentFrameworkTree();
  72. treeGrid.setId(n.getId());
  73. treeGrid.setName(n.getName());
  74. for (AgentFrameworkEntity nin : in) {
  75. if (nin.getId().equals(n.getId())) {
  76. treeGrid.setChecked(true);
  77. }
  78. }
  79. if (n.getParentId() != null) {
  80. treeGrid.setParentId(n.getParentId());
  81. }
  82. nodes.add(treeGrid);
  83. }
  84. return buildTree();
  85. }
  86. }