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......