表结构是:
classID,className,parentId ,depth,allChildId , ................
Stackstack=newStack();
StringBuffertree=newStringBuffer("");
Listlist=this.siteClassDao.queryRootClass();//得到根
if(list!=null&&list.size()!=0)...{
for(inti=0;i<list.size();i++)...{
stack.push(((TCmsSiteClass)list.get(i)).getClassID());
}
}
TCmsSiteClasspo=null;
String[]children=null;
TCmsSiteClassparent=null;
intdep=0;
Stringspace=" ";
StringBufferperSpace=newStringBuffer("");
while(!stack.isEmpty())...{
parent=null;
po=this.siteClassDao.querySiteClass((String)stack.pop());
if(po.getParentId().length()==32)...{
parent=this.siteClassDao.querySiteClass(po.getParentId());
}else...{
dep=0;
perSpace.delete(0,perSpace.length());
}
if(po.getDepth().intValue()>dep)...{
dep++;
perSpace.append(space);
}elseif(po.getDepth().intValue()<=dep)...{
perSpace.delete(perSpace.length()-(space.length()*(dep-po.getDepth().intValue())),perSpace.length());
if(perSpace.length()>1&&perSpace.charAt(perSpace.length()-1)!=';')...{
perSpace.deleteCharAt(perSpace.length()-1);
}
dep=po.getDepth().intValue();
}
tree.append("<option");
if(po.getClassID().equals(classID))...{
tree.append("selected");
}
tree.append("value='");
tree.append(po.getClassID());
tree.append("'>");
//判断此节点是不是所有兄弟节点里面的最后一个
if(parent!=null)...{
inti;
String[]brotherIDs=StrUtils.split(parent.getAllChildId(),
'#');
for(i=0;i<brotherIDs.length-1;i++)...{
if(po.getClassID().equals(brotherIDs[i]))...{
break;
}
}
if(i==0)...{//是所有兄弟节点里面的最后一个
tree.append(perSpace);
tree.append("└ ");
}else...{
tree.append(perSpace);
tree.append("├ ");//不是所有兄弟节点里面的最后一个
perSpace.append("│");
}
}
tree.append(po.getClassName());
tree.append("</option> ");
//把所有孩子的ID加到堆栈里面去
if(po.getAllChildId()!=null)...{
children=StrUtils.split(po.getAllChildId(),'#');
for(inti=0;i<children.length-1;i++)...{
stack.push(children[i]);
}
}
}
returntree.toString();
}