// Path: src/main/java/com/ace/cache/service/ICacheManager.java
// public interface ICacheManager {
//     public void removeAll();
// 
//     public void remove(String key);
// 
//     public void remove(List<CacheBean> caches);
// 
//     public void removeByPre(String pre);
// 
//     public List<CacheTree> getAll();
// 
//     public List<CacheTree> getByPre(String pre);
// 
//     public void update(String key, int hour);
// 
//     public void update(List<CacheBean> caches, int hour);
// 
//     public String get(String key);
// }
// 
// Path: src/main/java/com/ace/cache/utils/TreeUtils.java
// public class TreeUtils {
//     public static List<CacheTree> buildTree(List<CacheTree> trees) {
//         List<CacheTree> list = new ArrayList<CacheTree>();
//         for (CacheTree tree : trees) {
//             if (tree.getParentId().equals("-1")) {
//                 list.add(tree);
//             }
//             for (CacheTree t : trees) {
//                 if (t.getParentId().equals(tree.getId())) {
//                     if (tree.getNodes() == null) {
//                         List<CacheTree> myChildrens = new ArrayList<CacheTree>();
//                         myChildrens.add(t);
//                         tree.setNodes(myChildrens);
//                     } else {
//                         tree.getNodes().add(t);
//                     }
//                 }
//             }
//         }
//         return list;
//     }
// 
// }
// 
// Path: src/main/java/com/ace/cache/vo/CacheTree.java
// public class CacheTree extends CacheBean {
//     private String id;
//     private String parentId;
//     private String text = null;
//     private List<CacheTree> nodes = new ArrayList<CacheTree>();
// 
//     public CacheTree(CacheBean cache) {
//         this.setKey(cache.getKey());
//         this.setDesc(cache.getDesc());
//         this.setExpireTime(cache.getExpireTime());
//     }
// 
//     public CacheTree() {
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.text = id;
//         this.id = id;
//     }
// 
//     public String getParentId() {
//         return parentId;
//     }
// 
//     public void setParentId(String parentId) {
//         this.parentId = parentId;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((id == null) ? 0 : id.hashCode());
//         result = prime * result + ((parentId == null) ? 0 : parentId.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;
//         CacheTree other = (CacheTree) obj;
//         if (id == null) {
//             if (other.id != null)
//                 return false;
//         } else if (!id.equals(other.id))
//             return false;
//         if (parentId == null) {
//             if (other.parentId != null)
//                 return false;
//         } else if (!parentId.equals(other.parentId))
//             return false;
//         return true;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     public List<CacheTree> getNodes() {
//         return nodes;
//     }
// 
//     public void setNodes(List<CacheTree> nodes) {
//         this.nodes = nodes;
//     }
// 
// }


import com.ace.cache.service.ICacheManager;
import com.ace.cache.utils.TreeUtils;
import com.ace.cache.vo.CacheTree;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
package com.ace.cache.rest;



@RestController
@RequestMapping("cache")
public class CacheRest {
    @Autowired
    private ICacheManager cacheManager;

    @RequestMapping("/list")
    public List<CacheTree> listAll() {
        return TreeUtils.buildTree(cacheManager.getAll());
    }

    @RequestMapping(path = "/pre/{pre:.*}", method = RequestMethod.GET)
    public List<CacheTree> listPre(@PathVariable("pre") String pre) {
// Path: src/main/java/com/ace/cache/service/ICacheManager.java
// public interface ICacheManager {
//     public void removeAll();
// 
//     public void remove(String key);
// 
//     public void remove(List<CacheBean> caches);
// 
//     public void removeByPre(String pre);
// 
//     public List<CacheTree> getAll();
// 
//     public List<CacheTree> getByPre(String pre);
// 
//     public void update(String key, int hour);
// 
//     public void update(List<CacheBean> caches, int hour);
// 
//     public String get(String key);
// }
// 
// Path: src/main/java/com/ace/cache/utils/TreeUtils.java
// public class TreeUtils {
//     public static List<CacheTree> buildTree(List<CacheTree> trees) {
//         List<CacheTree> list = new ArrayList<CacheTree>();
//         for (CacheTree tree : trees) {
//             if (tree.getParentId().equals("-1")) {
//                 list.add(tree);
//             }
//             for (CacheTree t : trees) {
//                 if (t.getParentId().equals(tree.getId())) {
//                     if (tree.getNodes() == null) {
//                         List<CacheTree> myChildrens = new ArrayList<CacheTree>();
//                         myChildrens.add(t);
//                         tree.setNodes(myChildrens);
//                     } else {
//                         tree.getNodes().add(t);
//                     }
//                 }
//             }
//         }
//         return list;
//     }
// 
// }
// 
// Path: src/main/java/com/ace/cache/vo/CacheTree.java
// public class CacheTree extends CacheBean {
//     private String id;
//     private String parentId;
//     private String text = null;
//     private List<CacheTree> nodes = new ArrayList<CacheTree>();
// 
//     public CacheTree(CacheBean cache) {
//         this.setKey(cache.getKey());
//         this.setDesc(cache.getDesc());
//         this.setExpireTime(cache.getExpireTime());
//     }
// 
//     public CacheTree() {
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.text = id;
//         this.id = id;
//     }
// 
//     public String getParentId() {
//         return parentId;
//     }
// 
//     public void setParentId(String parentId) {
//         this.parentId = parentId;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((id == null) ? 0 : id.hashCode());
//         result = prime * result + ((parentId == null) ? 0 : parentId.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;
//         CacheTree other = (CacheTree) obj;
//         if (id == null) {
//             if (other.id != null)
//                 return false;
//         } else if (!id.equals(other.id))
//             return false;
//         if (parentId == null) {
//             if (other.parentId != null)
//                 return false;
//         } else if (!parentId.equals(other.parentId))
//             return false;
//         return true;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     public List<CacheTree> getNodes() {
//         return nodes;
//     }
// 
//     public void setNodes(List<CacheTree> nodes) {
//         this.nodes = nodes;
//     }
// 
// }


// Path: src/main/java/com/ace/cache/rest/CacheRest.java
import com.ace.cache.service.ICacheManager;
import com.ace.cache.utils.TreeUtils;
import com.ace.cache.vo.CacheTree;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

package com.ace.cache.rest;



@RestController
@RequestMapping("cache")
public class CacheRest {
    @Autowired
    private ICacheManager cacheManager;

    @RequestMapping("/list")
    public List<CacheTree> listAll() {
        return TreeUtils.buildTree(cacheManager.getAll());
    }

    @RequestMapping(path = "/pre/{pre:.*}", method = RequestMethod.GET)
    public List<CacheTree> listPre(@PathVariable("pre") String pre) {
        return TreeUtils.buildTree(cacheManager.getByPre(pre));