16
Latihan Spring 1. Siapkan folder lib untuk jarnya 2. Buat database dengan nama latihan dan buat table sbb: 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! 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

Latihan Spring Bagian 2

Embed Size (px)

Citation preview

Page 1: Latihan Spring Bagian 2

Latihan Spring

1. Siapkan folder lib untuk jarnya2. Buat database dengan nama latihan dan buat table sbb:

3. Buka Eclipse dan pilih file -> new project-> Dynamic Web Project4. 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!

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 ;

Page 2: Latihan Spring Bagian 2
Page 3: Latihan Spring Bagian 2

<?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.xsdhttp://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>

Page 4: Latihan Spring Bagian 2

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

package com.padicon.bean;

import java.io.Serializable;import java.util.Date;

import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import 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; }

}

Page 5: Latihan Spring Bagian 2

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;

Page 6: Latihan Spring Bagian 2

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")@Transactionalpublic 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); }}

Page 7: Latihan Spring Bagian 2

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

Page 8: Latihan Spring Bagian 2

(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 blocke.printStackTrace();

}}

public void messageInformation(String result){try {

Messagebox.show(result,"Padicon Training",Messagebox.OK, Messagebox.INFORMATION);

} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();

}}

}

package com.padicon.composer;

import java.util.Iterator;import java.util.List;

import org.hibernate.HibernateException;import org.zkoss.zul.Datebox;import org.zkoss.zul.Intbox;import org.zkoss.zul.Listbox;import org.zkoss.zul.Listcell;import org.zkoss.zul.Listitem;

Page 9: Latihan Spring Bagian 2

import org.zkoss.zul.Longbox;import org.zkoss.zul.Messagebox;import org.zkoss.zul.Textbox;import 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(""))

//

Page 10: Latihan Spring Bagian 2

LoadEvent(Long.parseLong(win.getDesktop().getExecution().getParameter("id").toString()));

}

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

Page 11: Latihan Spring Bagian 2

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;

}

Page 12: Latihan Spring Bagian 2

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

}

}

Page 13: Latihan Spring Bagian 2

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-MM-d"/></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>

Page 14: Latihan Spring Bagian 2

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