membuat-crud-menggunakan-zk-spring-hibernate-framework2

Lanjutan untuk tulisan sebelumnya :
https://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

<space width="5px" />
<button label="Delete" sclass="mybutton orange bigrounded" onClick="@command('delete')" image="/image/iconcrud/btn_delete.gif" />

q> Menambahkan checkbox pada listbox, untuk memilih row data mana yang akan didelete –>inputMahasiswa.zul

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

q> Menambahkan method “cek” pada InputMahasiswaVM.java untuk event checkbox pada listbox

@NotifyChange({"mahasiswaCheckList"})
@Command
public void cek(@BindingParam("checked") boolean isPicked, @BindingParam("picked") Mahasiswa mhs){
mahasiswaCheckList.add(mhs);
}

q> Menambahkan method “delete” pada InputMahasiswaVM.java untuk event tombol Delete

@NotifyChange({"mahasiswaModel","mahasiswa"})
@Command
public void delete(){

getMasterFacade().getMahasiswaDao().deleteCollection(getMahasiswaCheckList());
reset();

}

q> Menambahkan property mahasiswaCheckList untuk menyimpan row data yang dipilih (checkbox dicek)

private ListModelList<Mahasiswa> mahasiswaCheckList = new ListModelList<Mahasiswa>();

public ListModelList<Mahasiswa> getMahasiswaCheckList() {
return mahasiswaCheckList;
}

public void setMahasiswaCheckList(ListModelList<Mahasiswa> mahasiswaCheckList) {
this.mahasiswaCheckList = mahasiswaCheckList;
}

q> Menambahkan method “deleteCollection” pada MahasiswaDao

public void deleteCollection(List<Mahasiswa> listMahasiswa);

q> Menambahkan implement method “deleteCollection”Ā  pada MahasiswaDaoImpl

@Transactional(readOnly=false)
public void deleteCollection(List<Mahasiswa> listMahasiswa) {
// TODO , masbro

for (Mahasiswa mhs : listMahasiswa){
getHibernateTemplate().delete(mhs);
}

}

q> Code inputMahasiswa.zul full

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

q> Code InputMahasiswaVM.java full

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;
}



}

q> Code MahasiswaDao.java full

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();

}

q> Code MahasiswaDaoImpl.java full

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);
}

}

}

q> Screenshotnya dongšŸ™‚

Selection_096

q> Proses deletenya gmn dong ?
Selection_098

q> Data setelah didelete ?
Selection_097

Alhamdulillah

Published by

saifiahmada

Begin a big Process with a bit trying

One thought on “membuat-crud-menggunakan-zk-spring-hibernate-framework2”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s