View Single Post
  #1  
Old 20th November 2011
JagoVB JagoVB is offline
Ceriwiser
 
Join Date: Nov 2011
Posts: 508
Rep Power: 14
JagoVB mempunyai hidup yang Normal
Default [ASK]Recursive Tree Java

pagi agan agan.... ane punya kasus seperti ini,

silahkan diliat dulu codingan ane.....




Spoiler for parents:





Code:

public List listParents() {
return (List) getHibernateTemplate().find("from Category c where c.parentId = 0 order by c.name asc");
}












Spoiler for childs:





Code:

public List listChilds(Category category) {
return (List) getHibernateTemplate().find("from Category c where c.parentId = ?", new Object[]{category.getId()});
}












Spoiler for main:





Code:

public List listMain() {
List hl = new ArrayList();

List parents = listParents();
for (Category ctg : parents) {
CategoryListModelHelper cmh = new CategoryListModelHelper();
cmh.setId(ctg.getId());
cmh.setName(ctg.getName());
hl.add(cmh);

List childs = listChilds(ctg);
for (Category childCtg : childs) {
CategoryListModelHelper cmh2 = new CategoryListModelHelper();
String name = ctg.getName() + " >> " + childCtg.getName();
cmh2.setId(childCtg.getId());
cmh2.setName(name);
hl.add(cmh2);

List childs2 = listChilds(childCtg);
for (Category childCtg2 : childs2) {
CategoryListModelHelper cmh3 = new CategoryListModelHelper();
String name2 = ctg.getName() + " >> " + childCtg.getName() + " >> "+childCtg2.getName();
cmh3.setId(childCtg2.getId());
cmh3.setName(name2);
hl.add(cmh3);
}
}
}
return hl;
}











Jadi, ane tuh mo bikin list tree recursive yang ditampung ke dalam satu list,

nah, klo pake kodingan di atas, ane cuman bisa sampe level 2 doang, sedangkan

kalo dari DB nya itu, level nya bisa unlimited, misal:



Kategori level 0 ==> KatRoot

Kategori level 1 ==> KatChild1

Kategori level 2 ==> KatChild2



klo dirangkum, jadinya ==> KatRoot >> KatChild1 >> KatChild2



Nah, itu klo hanya sampe level dua, klo levelnya lebih dari itu, ada ide gan

bingung nih...., dan sepertinya kodingan ane pun bakal kurang efisien, karena

ada looping di dalam looping.....

beneran deh gan, dah pusing banget ane....



tolong dibantu yaaa......



Reply With Quote