Está en la página 1de 15

Latihan Spring 1. Siapkan folder lib untuk jarnya 2.

Buat database dengan nama latihan dan buat table sbb:


CREATE TABLE IF NOT EXISTS `events` ( `id` bigint(20) NOT NULL auto_increment, `name` varchar(100) NOT NULL, `start_date` date NOT NULL, `duration` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

3. Buka Eclipse dan pilih file -> new project-> Dynamic Web Project 4. Beri nama latihan_spring dan setting configurasi dengan cara click modify dan checklist zk support. 5. Klick kanan nama project pilih properties -> pilih tab Liblaries -> add External JARs..

6. Klick kanan pilih Spring Tools dan Klick Add Spring Project Nature. 7. Klick kanan, pilih new -> klick others -> pilih Spring beans Definition di Spring, dan buat application-context.xml seperti berikut ini!

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost/latihan</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value></value> </property> </bean> <bean id="factory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="packagesToScan"> <list> <value>com.padicon.bean</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <!-- Use the C3P0 connection pool provider --> <prop key="hibernate.c3p0.min_size">10</prop> <prop key="hibernate.c3p0.max_size">15</prop> <prop key="hibernate.c3p0.timeout">5000</prop> <prop key="hibernate.c3p0.max_statements">100000</prop> <prop key="hibernate.c3p0.idle_test_period">3000</prop> </props> </property> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="factory"/> </bean> </beans>

8. Klick src dan pilih new package, buat paket com.padicon.bean 9. Bua class Event di paket com.padicon.bean

package com.padicon.bean; import java.io.Serializable; import java.util.Date; import import import import import import javax.persistence.Column; javax.persistence.Entity; javax.persistence.GeneratedValue; javax.persistence.GenerationType; javax.persistence.Id; javax.persistence.Table;

@Entity @Table(name="events") public class Event implements Serializable { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; private int duration; private String name; private Date start_date; public Event() { } public Event(String name) { this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column () public String getName() { return name; } public void setName(String name) { this.name = name;

public Date getStartDate() { return start_date; } public void setStartDate(Date startDate) { this.start_date = startDate; } public int getDuration() { return duration; } public void setDuration(int duration) { this.duration = duration; } }

10.Buat Class di paket com.padicon.dao

package com.padicon.dao;

import java.util.List;

import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public abstract class AbstractSpringDao extends HibernateDaoSupport {

public AbstractSpringDao() { }

public void setSession(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); }

protected void saveOrUpdate(Object obj) { getHibernateTemplate().saveOrUpdate(obj); }

protected void delete(Object obj) {

getHibernateTemplate().delete(obj); }

protected Object find(Class clazz, Long id) { return getHibernateTemplate().load(clazz, id); }

protected List findAll(Class clazz) { return getHibernateTemplate().find("from " + clazz.getName()); } }

package com.padicon.dao; import javax.sql.DataSource; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.hibernate.SessionFactory; public class DaoRegistry { private static ApplicationContext ctx; static { ctx = new ClassPathXmlApplicationContext("application-context.xml"); } /** * Private to make this a singleton. */ private DaoRegistry(){ } public static SessionFactory getSessionFactory(){ return (SessionFactory) ctx.getBean("factory", SessionFactory.class); } public static DataSource getDataSource(){ return (DataSource)ctx.getBean("dataSource", DataSource.class); }

} package com.padicon.dao; import java.util.List; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import com.padicon.bean.Event; @Repository("EventSpringDao") @Transactional public class EventSpringDao extends AbstractSpringDao{ public EventSpringDao(){} public Event find(Long id){ return (Event) super.find(Event.class, id); } public void saveOrUpdate(Event event){ super.saveOrUpdate(event); } public void delete(Event event){ super.delete(event); } public List findAll(){ return super.findAll(Event.class); }

11.Buat Main di paket com.padicon.app

package com.padicon.app; import java.util.Iterator; import java.util.List; import com.padicon.bean.Event; import com.padicon.dao.DaoRegistry; import com.padicon.dao.EventSpringDao; public class Main { public static void main(String[] args) { // Create Dao object EventSpringDao eventDao = new EventSpringDao(); eventDao.setSession(DaoRegistry.getSessionFactory());

// Create domain objects and save them Event event = new Event(); // event.setName("Java Course in Boston"); //event.setStartDate(new java.util.Date()); //event.setDuration(60); //eventDao.saveOrUpdate(event); // event = new Event(); // event.setId(1l); event.setName("Boronong"); event.setStartDate(new java.util.Date()); event.setDuration(100); eventDao.saveOrUpdate(event); List listEvent = eventDao.findAll(); for (Iterator it = listEvent.iterator(); it.hasNext();) { Event result = (Event)it.next(); System.out.println("id : " + result.getId().toString()+ "Nama : "+result.getName()); } } }

(Catatan : Ketik yah jangn copy paste!) 12.Buat paket com.padicon.composer dan buat Class sbb :

package com.padicon.composer; import org.zkoss.zk.ui.util.GenericForwardComposer;

import org.zkoss.zul.Button; import org.zkoss.zul.Messagebox; import org.zkoss.zul.Window; public class BaseComposer extends GenericForwardComposer { protected Button btnSave; protected Button btnEdit; protected Button btnUpdate; protected Button btnDelete; protected Button btnCancel; protected Window win; Boolean hasilnya; public void messageWarning(String result){ try { Messagebox.show(result,"Padicon Training",Messagebox.OK, Messagebox.EXCLAMATION); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void messageInformation(String result){ try { Messagebox.show(result,"Padicon Training",Messagebox.OK, Messagebox.INFORMATION); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

package com.padicon.composer; import java.util.Iterator; import java.util.List; import import import import import import import import import import org.hibernate.HibernateException; org.zkoss.zul.Datebox; org.zkoss.zul.Intbox; org.zkoss.zul.Listbox; org.zkoss.zul.Listcell; org.zkoss.zul.Listitem; org.zkoss.zul.Longbox; org.zkoss.zul.Messagebox; org.zkoss.zul.Textbox; org.zkoss.zul.Window;

import org.zkoss.zk.ui.event.Event;

import com.padicon.dao.DaoRegistry; import com.padicon.dao.EventSpringDao; public class EventComposer extends BaseComposer{ private Window win; private Longbox id; private Intbox duration; private Textbox name; private Datebox start_date; private com.padicon.bean.Event event; private Listbox levents; public void loadEvents(){ levents.getItems().clear(); EventSpringDao esd= new EventSpringDao(); esd.setSession(DaoRegistry.getSessionFactory()); com.padicon.bean.Event event= new com.padicon.bean.Event(); List events = esd.findAll(); for(Iterator iter = events.iterator();iter.hasNext();){ Listitem li = new Listitem(); event = (com.padicon.bean.Event)iter.next(); li.setValue(event.getId()); li.setHeight("28px"); Listcell lc = new Listcell(); lc.setLabel(event.getName()); lc.setParent(li); lc = new Listcell(); lc.setLabel(String.valueOf(event.getDuration())); lc.setParent(li); lc = new Listcell(); lc.setLabel(String.valueOf(event.getStartDate())); lc.setParent(li); li.setParent(levents); } } public void onSelect$levents(Event event) { LoadEvent(Long.parseLong(levents.getSelectedItem().getValue().toString())); } public void onCreate$win(Event event) { loadEvents(); //if(! win.getDesktop().getExecution().getParameter("id").toString().equals("")) // LoadEvent(Long.parseLong(win.getDesktop().getExecution().getParameter("id").t oString())); } private void LoadEvent(long value) { com.padicon.bean.Event event = new com.padicon.bean.Event();

EventSpringDao esd= new EventSpringDao(); esd.setSession(DaoRegistry.getSessionFactory()); event =(com.padicon.bean.Event) esd.findBy("id = "+value).get(0); id.setValue(event.getId()); duration.setValue(event.getDuration()); name.setValue(event.getName()); start_date.setText(event.getStartDate().toString());

public void clearText() { id.setText(""); duration.setText(""); name.setText(""); start_date.setText(""); } public void onClick$btnEdit(Event event) { if (id.getText().equals("")) { messageInformation("Anda harus memasukkan id "); name.focus(); return; } try { EventSpringDao esd= new EventSpringDao(); esd.setSession(DaoRegistry.getSessionFactory()); if (esd.findBy("id = "+id.getValue()).size() < 1) { messageInformation("Event Name : " + id.getValue() + " tidak ditemukan "); name.focus(); return; } LoadEvent(Long.parseLong(id.getValue().toString().trim())); id.setDisabled(true); } catch (HibernateException e) { try { Messagebox.show(e.getMessage()); } catch (InterruptedException e1) { } } btnSave.setDisabled(true); btnUpdate.setDisabled(false); btnDelete.setDisabled(false); btnCancel.setDisabled(false); } public void onClick$btnSave(Event event) { if(name.getValue().equals("")){ return; } com.padicon.bean.Event event1 = new com.padicon.bean.Event(); event1.setName(name.getText()); event1.setDuration(duration.getValue()); event1.setStartDate(start_date.getValue()); EventSpringDao esd= new EventSpringDao(); esd.setSession(DaoRegistry.getSessionFactory());

String result=""; try{ esd.saveOrUpdate(event1); result="Data telah disimpan"; }catch(Exception je){ result=je.getCause().getMessage(); } if (result.equalsIgnoreCase("Data telah disimpan")) { messageInformation(result); clearText(); loadEvents(); } else { messageWarning(result); } } public void onClick$btnUpdate(Event event) { if(name.getValue().equals("")){ return; } com.padicon.bean.Event event1 = new com.padicon.bean.Event(); event1.setId(id.getValue()); event1.setName(name.getText()); event1.setDuration(duration.getValue()); event1.setStartDate(start_date.getValue()); EventSpringDao esd= new EventSpringDao(); esd.setSession(DaoRegistry.getSessionFactory()); String result=""; try{ esd.saveOrUpdate(event1); result="Data telah diubah"; }catch(Exception je){ result=je.getCause().getMessage(); } if (result.equalsIgnoreCase("Data telah diubah")) { messageInformation(result); clearText(); loadEvents(); btnSave.setDisabled(false); id.setDisabled(false); btnUpdate.setDisabled(true); } else { messageWarning(result); } } public void onClick$btnDelete() { try { if(id.getValue().equals("")){ return; } if (Messagebox.show("Anda yakin untuk menghapus " + name.getText(), "JOSSO", Messagebox.YES + Messagebox.NO, Messagebox.QUESTION) == Messagebox.NO) { return; }

com.padicon.bean.Event event1 = new com.padicon.bean.Event(); event1.setId(id.getValue()); EventSpringDao esd= new EventSpringDao(); esd.setSession(DaoRegistry.getSessionFactory()); String result=""; try{ esd.delete(event1); result="Data telah dihapus"; }catch(Exception je){ result=je.getCause().getMessage(); } if (result.equalsIgnoreCase("Data telah dihapus")) { messageInformation(result); clearText(); name.setDisabled(false); name.focus(); btnSave.setDisabled(false); btnUpdate.setDisabled(true); loadEvents(); } else { messageWarning(result); } } catch (HibernateException e) { try { Messagebox.show(e.getMessage()); } catch (InterruptedException e1) { } } catch (InterruptedException e1) { } catch (NullPointerException e) { try { Messagebox .show("Error: Null Pointer Exception. Please rename and try again."); } catch (InterruptedException e1) { } } } public void onClick$btnCancel() { messageInformation("Data nama : " + name.getText() + " gagal diubah."); clearText(); btnSave.setDisabled(false); btnUpdate.setDisabled(true); btnDelete.setDisabled(true); btnCancel.setDisabled(true); name.setDisabled(false); } }

13.Buat folder di WebContent dengan nama event dan buat file zul di dalamnya dengan nama event.zul sbb:

<?page title="Event" contentType="text/html;charset=UTF-8"?> <zk> <window title="Event" border="normal" id="win" apply="com.padicon.composer.EventComposer"> <groupbox mold="3d"> <caption label="Data Events" style="font-weight:600;"/> <grid> <columns height="22px"> <column label="Type" width="150px"/> <column label="Content" /> </columns> <rows> <row>Id :<longbox id="id" /></row> <row>Name :<textbox id="name" maxlength="100" width="200px"/></row> <row>Duration :<intbox id="duration" maxlength="10" /></row> <row>Description :<datebox id="start_date" format="yyyy-MMd"/></row> <row spans="2" > <toolbar> <button id="btnSave" label="Save" orient="vertical"/> <button id="btnCancel" label="Cancel" orient="vertical"/> <button id="btnEdit" label="Edit" orient="vertical"/> <button id="btnUpdate" label="Update" orient="vertical" disabled="true"/> <button id="btnDelete" label="Delete" orient="vertical"/> </toolbar> </row> </rows> </grid> </groupbox> <separator/> <listbox id="levents" rows="10" mold="paging" pageSize="10"> <listhead height="28px"> <listheader label="Name" width="20%" sort="auto"/> <listheader label="Duration" width="40%" sort="auto"/> <listheader label="Start" width="40%" sort="auto"/> </listhead> </listbox> </window> </zk>

14.Copy kan jar yang ada di lib latihan Spring ke lib WebContent/WEB-INF/lib 15.Klick kanan event.zul dan pilih Run As Run on Server

También podría gustarte