Lanjutan untuk tulisan sebelumnya :
http://saifiahmada.wordpress.com/2013/04/05/membuat-crud-menggunakan-zk-spring-hibernate-framework/
Bismillah
q> Melanjutkan tulisan sebelumnya :) ,, untuk menambahkan [D] action ,, delete dengan collection.
q> Menbambahkan Button Delete pada View / Interface -> inputMahasiswa.zul
[sourcecode language="xml"]<space width="5px" />
<button label="Delete" sclass="mybutton orange bigrounded" onClick="@command('delete')" image="/image/iconcrud/btn_delete.gif" />[/sourcecode]
q> Menambahkan checkbox pada listbox, untuk memilih row data mana yang akan didelete -->inputMahasiswa.zul
[sourcecode language="xml"]<listbox sclass="mylist" model="@load(vm.mahasiswaModel)" selectedItem="@bind(vm.mahasiswa)"
mold="paging" pageSize="10" pagingPosition="bottom">
<listhead sizable="true">
<listheader width="100px" label="NIM" />
<listheader width="150px" label="Nama" />
<listheader width="300px" label="Alamat" />
<listheader width="150px" label="NO HP" />
<listheader label="Pilih" />
</listhead>
<template name="model" var="p1">
<listitem>
<listcell label="@load(p1.nim)" />
<listcell label="@load(p1.nama)" />
<listcell label="@load(p1.alamat)" />
<listcell label="@load(p1.noHP)" />
<listcell>
<checkbox onCheck="@command('cek', checked=self.checked, picked=p1)" />
</listcell>
</listitem>
</template>
</listbox>[/sourcecode]
q> Menambahkan method "cek" pada InputMahasiswaVM.java untuk event checkbox pada listbox
[sourcecode language="java"]@NotifyChange({"mahasiswaCheckList"})
@Command
public void cek(@BindingParam("checked") boolean isPicked, @BindingParam("picked") Mahasiswa mhs){
mahasiswaCheckList.add(mhs);
}[/sourcecode]
q> Menambahkan method "delete" pada InputMahasiswaVM.java untuk event tombol Delete
[sourcecode language="java"]@NotifyChange({"mahasiswaModel","mahasiswa"})
@Command
public void delete(){
getMasterFacade().getMahasiswaDao().deleteCollection(getMahasiswaCheckList());
reset();
}[/sourcecode]
q> Menambahkan property mahasiswaCheckList untuk menyimpan row data yang dipilih (checkbox dicek)
[sourcecode language="java"]private ListModelList<Mahasiswa> mahasiswaCheckList = new ListModelList<Mahasiswa>();
public ListModelList<Mahasiswa> getMahasiswaCheckList() {
return mahasiswaCheckList;
}
public void setMahasiswaCheckList(ListModelList<Mahasiswa> mahasiswaCheckList) {
this.mahasiswaCheckList = mahasiswaCheckList;
}[/sourcecode]
q> Menambahkan method "deleteCollection" pada MahasiswaDao
[sourcecode language="java"]public void deleteCollection(List<Mahasiswa> listMahasiswa);[/sourcecode]
q> Menambahkan implement method "deleteCollection" pada MahasiswaDaoImpl
[sourcecode language="java"]@Transactional(readOnly=false)
public void deleteCollection(List<Mahasiswa> listMahasiswa) {
// TODO , masbro
for (Mahasiswa mhs : listMahasiswa){
getHibernateTemplate().delete(mhs);
}
}[/sourcecode]
q> Code inputMahasiswa.zul full
[sourcecode language="xml"]<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
<style src="../css/triostyle.css"/>
<div
apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('com.saifiahmada.belajarzk.input.InputMahasiswaVM')">
<separator />
<groupbox><caption label="Input Mahasiswa" sclass="mycaption" />
<vbox>
<hbox>
<cell width="100px"><label sclass="mylabel" value="NIM" /></cell>
<cell><textbox sclass="mytext" value="@bind(vm.mahasiswa.nim)" /></cell>
</hbox>
<hbox>
<cell width="100px"><label sclass="mylabel" value="Nama" /></cell>
<cell><textbox sclass="mytext" value="@bind(vm.mahasiswa.nama)" /></cell>
</hbox>
<hbox>
<cell width="100px"><label sclass="mylabel" value="Alamat" /></cell>
<cell><textbox sclass="mytext" value="@bind(vm.mahasiswa.alamat)" /></cell>
</hbox>
<hbox>
<cell width="100px"><label sclass="mylabel" value="No HP" /></cell>
<cell><textbox sclass="mytext" value="@bind(vm.mahasiswa.noHP)" /></cell>
</hbox>
</vbox>
<separator />
<button label="Save" sclass="mybutton orange bigrounded" onClick="@command('save')" image="/image/iconcrud/btn_save.gif" />
<space width="5px" />
<button label="Reset" sclass="mybutton orange bigrounded" onClick="@command('reset')" image="/image/iconcrud/btn_reset.gif" />
<space width="5px" />
<button label="Delete" sclass="mybutton orange bigrounded" onClick="@command('delete')" image="/image/iconcrud/btn_delete.gif" />
</groupbox>
<separator />
<listbox sclass="mylist" model="@load(vm.mahasiswaModel)" selectedItem="@bind(vm.mahasiswa)"
mold="paging" pageSize="10" pagingPosition="bottom">
<listhead sizable="true">
<listheader width="100px" label="NIM" />
<listheader width="150px" label="Nama" />
<listheader width="300px" label="Alamat" />
<listheader width="150px" label="NO HP" />
<listheader label="Pilih" />
</listhead>
<template name="model" var="p1">
<listitem>
<listcell label="@load(p1.nim)" />
<listcell label="@load(p1.nama)" />
<listcell label="@load(p1.alamat)" />
<listcell label="@load(p1.noHP)" />
<listcell>
<checkbox onCheck="@command('cek', checked=self.checked, picked=p1)" />
</listcell>
</listitem>
</template>
</listbox>
</div>
</zk>[/sourcecode]
q> Code InputMahasiswaVM.java full
[sourcecode language="java"]package com.saifiahmada.belajarzk.input;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zul.ListModelList;
import com.saifiahmada.belajarzk.base.TrioBasePageVM;
import com.saifiahmada.belajarzk.bean.Mahasiswa;
/** @author Saifi Ahmada Apr 4, 2013 4:46:43 PM **/
public class InputMahasiswaVM extends TrioBasePageVM {
private Mahasiswa mahasiswa;
private ListModelList<Mahasiswa> mahasiswaModel;
private ListModelList<Mahasiswa> mahasiswaCheckList = new ListModelList<Mahasiswa>();
public ListModelList<Mahasiswa> getMahasiswaCheckList() {
return mahasiswaCheckList;
}
public void setMahasiswaCheckList(ListModelList<Mahasiswa> mahasiswaCheckList) {
this.mahasiswaCheckList = mahasiswaCheckList;
}
public ListModelList<Mahasiswa> getMahasiswaModel(){
if (mahasiswaModel == null) {
mahasiswaModel = new ListModelList<Mahasiswa>();
mahasiswaModel.addAll(getMasterFacade().getMahasiswaDao().findAll());
}
return mahasiswaModel;
}
@NotifyChange({"mahasiswa","mahasiswaModel"})
@Command
public void save(){
System.out.println("save");
System.out.println("Nama "+mahasiswa.getNama());
getMasterFacade().getMahasiswaDao().saveOrUpdate(getMahasiswa());
reset();
}
@NotifyChange({"mahasiswa","mahasiswaModel"})
@Command
public void reset(){
mahasiswaModel = new ListModelList<Mahasiswa>();
mahasiswaModel.addAll(getMasterFacade().getMahasiswaDao().findAll());
mahasiswa = new Mahasiswa();
}
@NotifyChange({"mahasiswaCheckList"})
@Command
public void cek(@BindingParam("checked") boolean isPicked, @BindingParam("picked") Mahasiswa mhs){
mahasiswaCheckList.add(mhs);
}
@NotifyChange({"mahasiswaModel","mahasiswa"})
@Command
public void delete(){
getMasterFacade().getMahasiswaDao().deleteCollection(getMahasiswaCheckList());
reset();
}
public Mahasiswa getMahasiswa() {
if (mahasiswa == null) mahasiswa = new Mahasiswa();
return mahasiswa;
}
public void setMahasiswa(Mahasiswa mahasiswa) {
this.mahasiswa = mahasiswa;
}
}
[/sourcecode]
q> Code MahasiswaDao.java full
[sourcecode language="java"]package com.saifiahmada.belajarzk.dao;
import java.util.List;
import com.saifiahmada.belajarzk.bean.Mahasiswa;
/** @author Saifi Ahmada Apr 4, 2013 4:35:37 PM **/
public interface MahasiswaDao {
public void saveOrUpdate(Mahasiswa mhs);
public void delete(Mahasiswa mhs);
public void deleteCollection(List<Mahasiswa> listMahasiswa);
public List<Mahasiswa> findAll();
}
[/sourcecode]
q> Code MahasiswaDaoImpl.java full
[sourcecode language="java"]package com.saifiahmada.belajarzk.dao;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Transactional;
import com.saifiahmada.belajarzk.bean.Mahasiswa;
/** @author Saifi Ahmada Apr 4, 2013 4:35:49 PM **/
public class MahasiswaDaoImpl extends HibernateDaoSupport implements MahasiswaDao {
@Transactional(readOnly=false)
public void saveOrUpdate(Mahasiswa mhs) {
// TODO , masbro
Mahasiswa entity = (Mahasiswa) getHibernateTemplate().getSessionFactory().getCurrentSession().get(Mahasiswa.class, mhs.getNim());
if (entity == null){
getHibernateTemplate().save(mhs);
System.out.println("insert");
}else{
getHibernateTemplate().merge(mhs);
System.out.println("update");
}
}
public void delete(Mahasiswa mhs) {
// TODO , masbro
}
@Transactional(readOnly=true)
public List<Mahasiswa> findAll() {
// TODO , masbro
return getHibernateTemplate().find("from Mahasiswa");
}
@Transactional(readOnly=false)
public void deleteCollection(List<Mahasiswa> listMahasiswa) {
// TODO , masbro
for (Mahasiswa mhs : listMahasiswa){
getHibernateTemplate().delete(mhs);
}
}
}
[/sourcecode]
q> Screenshotnya dong :)
q> Proses deletenya gmn dong ?
q> Data setelah didelete ?
Alhamdulillah
[...] membuat-crud-menggunakan-zk-spring-hibernate-framework2 [...]
ReplyDelete