JagoVB
20th November 2011, 12:52 AM
pagi agan agan.... ane punya kasus seperti ini,
silahkan diliat dulu codingan ane..... :D
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 :D
bingung nih...., dan sepertinya kodingan ane pun bakal kurang efisien, karena
ada looping di dalam looping.....
beneran deh gan, dah pusing banget ane.... :D
tolong dibantu yaaa...... :loveindonesia :ceriwislove:
</div>
silahkan diliat dulu codingan ane..... :D
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 :D
bingung nih...., dan sepertinya kodingan ane pun bakal kurang efisien, karena
ada looping di dalam looping.....
beneran deh gan, dah pusing banget ane.... :D
tolong dibantu yaaa...... :loveindonesia :ceriwislove:
</div>