public MyTreeNode getFuncPointTreeByProjectid(Long projectid) {
List<FuncPoint> funcPointList = funcPointMaintDao
.getFuncPointByProjectid(projectid);
MyTreeNode rootTreeNode = new MyTreeNode(Long.valueOf(0));
rootTreeNode.setNodeName("ROOT");
rootTreeNode.setNodeDepth(Long.valueOf(-1));
Map<Long, MyTreeNode> nodeCache = new LinkedHashMap<Long, MyTreeNode>();
for (FuncPoint fp : funcPointList){
MyTreeNode myTreeNode = new MyTreeNode(fp.getFpid());
myTreeNode.setNodeName(fp.getName());
myTreeNode.setOrderNum(fp.getOrderNum());
myTreeNode.setNodeDepth(fp.getDepth());
myTreeNode.setPid(fp.getParentid());
if (myTreeNode.getNodeDepth() == 0) {
rootTreeNode = myTreeNode;
}
nodeCache.put(myTreeNode.getNodeid(), myTreeNode);
}
Iterator it = nodeCache.keySet().iterator();
while (it.hasNext()){
Long key = (Long) it.next();
MyTreeNode mt = nodeCache.get(key);
if (mt.getNodeDepth() > 0){
Long pid = mt.getPid();
MyTreeNode pmt = nodeCache.get(pid);
mt.setParent(pmt);
pmt.addChild(mt);
}
}
return rootTreeNode;
}