| package com.xzx.gc.role.rbac.tree; | 
|   | 
| import com.fasterxml.jackson.annotation.JsonIgnore; | 
| import com.xzx.gc.entity.CoreFunction; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.LinkedList; | 
| import java.util.List; | 
|   | 
| public class FunctionItem  implements TreeItem{ | 
|     CoreFunction sysFunction = null; | 
|     List<FunctionItem> children = new ArrayList<>(); | 
|     @JsonIgnore | 
|     FunctionItem parent = null; | 
|     String name ; | 
|     public FunctionItem(CoreFunction sysFunction){ | 
|         this.sysFunction = sysFunction; | 
|         this.name = sysFunction!=null?sysFunction.getName():null; | 
|     } | 
|      | 
|      | 
|     public void setParent(FunctionItem parent){ | 
|         this.parent = parent; | 
|         parent.children.add(this); | 
|     } | 
|     @Override | 
|     public List<FunctionItem> getChildren(){ | 
|         return this.children; | 
|     } | 
|     @Override | 
|     public Long getId(){ | 
|         return sysFunction.getId(); | 
|     } | 
|      | 
|     public CoreFunction getData(){ | 
|         return this.sysFunction; | 
|     } | 
|      | 
|     /** | 
|      * 查找某个指定的子功能 | 
|      * @param functionId | 
|      * @return | 
|      */ | 
|     public FunctionItem findChild(long functionId){ | 
|         if(sysFunction.getId()==functionId){ | 
|             return this; | 
|         } | 
|         for(FunctionItem item:children){ | 
|             FunctionItem find = item.findChild(functionId); | 
|             if(find!=null){ | 
|                 return find; | 
|             } | 
|         } | 
|         return null; | 
|          | 
|     } | 
|      | 
|     /** | 
|      * 查找所有的子功能 | 
|      * @return | 
|      */ | 
|     public List<FunctionItem> findAllItem(){ | 
|         List<FunctionItem> all = new LinkedList<>(); | 
|         findAllChildItem(all,this); | 
|         return all; | 
|     } | 
|      | 
|     public List<Long> findAllChildrenId(){ | 
|         List<FunctionItem> items =findAllItem(); | 
|         List<Long> children = new ArrayList<Long>(); | 
|         for(FunctionItem item:items){ | 
|             children.add(item.getId()); | 
|         } | 
|         return children; | 
|     } | 
|      | 
|      | 
|     private void findAllChildItem(List<FunctionItem> all,FunctionItem parent){ | 
|         for(FunctionItem item:parent.children){ | 
|             all.add(item); | 
|             findAllChildItem(all,item); | 
|         } | 
|          | 
|     } | 
|      | 
|      | 
|      | 
|   | 
|     @Override | 
|     public int hashCode() { | 
|         final int prime = 31; | 
|         int result = 1; | 
|         result = prime * result + ((sysFunction == null) ? 0 : sysFunction.hashCode()); | 
|         return result; | 
|     } | 
|   | 
|   | 
|     @Override | 
|     public boolean equals(Object obj) { | 
|         if (this == obj){ | 
|             return true;} | 
|         if (obj == null){ | 
|             return false;} | 
|         if (getClass() != obj.getClass()){ | 
|             return false;} | 
|         FunctionItem other = (FunctionItem) obj; | 
|         if (sysFunction == null) { | 
|             if (other.sysFunction != null) | 
|                 return false; | 
|         } else if (!sysFunction.equals(other.sysFunction)) | 
|             return false; | 
|         return true; | 
|     } | 
|   | 
|   | 
|     @Override | 
|     public String toString() { | 
|         return "MenuItem [sysFunction=" + sysFunction.getName() + ","+this.children.size()+"]"; | 
|     } | 
|   | 
|   | 
|     @Override | 
|     public String getName() { | 
|         return sysFunction==null?"":sysFunction.getName(); | 
|     } | 
|   | 
|   | 
|   | 
|      | 
|      | 
|      | 
|      | 
|   | 
| } |