数据库结构:
因为flex前台的tree需要绑定一个xml的文件,这里数据量不是很大,选择一次性全部加载返回xml给前台,代码如下
//获取元数据路径的数据(为XML格式)
public String convertDataToXml()throws Exception{
if("".equals(xmlData)||xmlData==null){
List<DeclarationDataPath> alldeclarationDataPaths = findAllDeclarationDataPath();
List<DeclarationDataPath> topDeclarationDataPaths = findTopDeclarationDataPath();
String treedata="<node foddersortId='0' fodderso" +
"rtName='所有分类'>\n";
for(DeclarationDataPath dpath:topDeclarationDataPaths){
if(removelists.size()>0){
String result="";
for(int i=0;i<removelists.size();i++){
if(i+1==removelists.size()){
result+=removelists.get(i).toString();
}else{
result+=removelists.get(i).toString()+",";
}
}
String sql = "select * from "+TABLENAME+" where menuitemid not in ("+result+")" +" order by "+SORTNUM ;
alldeclarationDataPaths = findDeclarationDataPathByJDBC(sql);
}
treedata=treedata+"<node nodeId='"+dpath.getMenuItemId() +"' nodeName='"+dpath.getMenuItemTitle()+"' nodeparentId='"+dpath.getParentId()+"'>\n";
//alldeclarationDataPaths.removeAll(removelists);
treedata=createXmlNode(alldeclarationDataPaths,dpath.getMenuItemId(),treedata);
treedata=treedata+"</node>\n";
}
treedata=treedata+"</node>\n";
xmlData = treedata;
return treedata;
}
else{
return xmlData;
}
}
private List<Integer> removelists = new ArrayList<Integer>();
//递归解析数据-->xml
public String createXmlNode(List<DeclarationDataPath> list,String dpathId,String cratedata)throws Exception {
//String sql = "select * from "+TABLENAME+" a where a."+PARENTID+"="+dpathId;
for(int a=0;a<list.size();a++) {
DeclarationDataPath dpath = list.get(a);
if(null==dpath.getParentId()||"".equals(dpath.getParentId())){
}else {
if(dpath.getParentId().equals(dpathId)){
//list.remove(dpath);
removelists.add(Integer.parseInt(dpath.getMenuItemId()));
cratedata=cratedata+"<node nodeId='"+dpath.getMenuItemId()
+"' nodeName='"+dpath.getMenuItemTitle()+"' nodeparentId='"+dpath.getParentId()+"'>\n";
cratedata = createXmlNode(list,dpath.getMenuItemId(),cratedata);
cratedata = cratedata+"</node>\n";
}else {
}
}
}
return cratedata;
}