buat
4 package di dalam package org.blueoxygen, yaitu
•
•
setelah
itu pada masing-masing package isikan class java berikut :
Buat
class Person.java di package org.blueoxygen.entity
packageorg.blueoxygen.entity;
importjava.util.Date; importjavax.persistence.Entity; importjavax.persistence.Inheritance; importjavax.persistence.InheritanceType; importjavax.persistence.Table; importorg.blueoxygen.cimande.commons.DefaultPersistence;
@Entity
@Table(name = “module_person”) @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public class Person extendsDefaultPersistence { privateString fname; privateString lname; privateString sex; privateDate birthdate; privateString address; privateString city; privateString country; privateString email; privateString phone; publicString getFname() { return fname; } public voidsetFname(String fname) { this.fname= fname; } publicString getLname() { return lname; } public voidsetLname(String lname) { this.lname= lname; } publicString getSex() { return sex; } public voidsetSex(String sex) { this.sex= sex; } publicString getAddress() { return address; } public voidsetAddress(String address) { this.address= address; } publicString getCity() { return city; } public voidsetCity(String city) { this.city= city; } publicString getCountry() { return country; } public voidsetCountry(String country) { this.country= country; } publicString getEmail() { return email; } public voidsetEmail(String email) { this.email= email; } publicString getPhone() { return phone; } public voidsetPhone(String phone) { this.phone= phone; } } publicDate getBirthdate() { return birthdate; } public voidsetBirthdate(Date birthdate) { this.birthdate= birthdate; } |
setelah
itu Buat class PersonDao.java di package org.blueoxygen.dao
packageorg.blueoxygen.dao;
importjava.util.List; importorg.blueoxygen.cimande.commons.LogInformation; importorg.blueoxygen.cimande.persistence.hibernate.dao.HibernatePersistenceDaoManager; importorg.blueoxygen.cimande.security.User; importorg.blueoxygen.entity.Person; importorg.hibernate.Criteria; importorg.hibernate.criterion.MatchMode; importorg.hibernate.criterion.Projections; importorg.hibernate.criterion.Restrictions; importorg.springframework.stereotype.Repository;
@Repository
public classPersonDao extendsHibernatePersistenceDaoManager<Person> { public voidsavePerson(Person person) { if(person == null) return; if(person.getId() == null) { createPerson(person); } else if(person.getId().trim().equalsIgnoreCase(“”)) { createPerson(person); } else{ person.getLogInformation() .setLastUpdateBy(getCurrentUser().getId()); person.getLogInformation().setLastUpdateDate(getCurretTime()); merge(person); } } public longgetPersonCountByCriteria(String fname, String lname) { Criteria criteria = getPersonCriteria(fname, lname); criteria.setProjection(Projections.rowCount()); return newLong(criteria.uniqueResult() + “”); } @SuppressWarnings(“unchecked”) publicList<Person> getPersonByCriteria(String fname, String lname, intlimit, intpage) { returngetPersonCriteria(fname, lname).setMaxResults(limit) .setFirstResult((page 1) * limit).list(); } privateCriteria getPersonCriteria(String fname, String lname) { Criteria criteria = sessionFactory.getCurrentSession().createCriteria( Person.class); criteria.add(Restrictions.like(“fname”, fname, MatchMode.ANYWHERE)); criteria.add(Restrictions.like(“lname”, lname, MatchMode.ANYWHERE)); returncriteria; } private voidcreatePerson(Person person) { User user = getCurrentUser(); LogInformation logInformation = newLogInformation(); logInformation.setCreateBy(user.getId()); logInformation.setCreateDate(getCurretTime()); logInformation.setLastUpdateBy(user.getId()); logInformation.setLastUpdateDate(getCurretTime()); person.setId(null); person.setLogInformation(logInformation); persist(person); } } |
kemudian Buat
class PersonService.java di package org.blueoxygen.service
packageorg.blueoxygen.service;
importjava.util.List; importorg.blueoxygen.entity.Person;
public
interfacePersonService {
voidsavePerson(Person person); voiddeletePerson(Person person); Person getPersonById(String id); longgetPersonCount(String fname, String lname); List<Person> getPersonList(String fname, String lname, intlimit, intpage); } |
Buat
class PersonServiceImpl.java di package org.blueoxygen.service.impl
packageorg.blueoxygen.service.impl; importjava.util.List; importorg.blueoxygen.dao.PersonDao; importorg.blueoxygen.entity.Person; importorg.blueoxygen.service.PersonService; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.stereotype.Service; importorg.springframework.transaction.annotation.Transactional; @Service @Transactional(readOnly = true) public classPersonServiceImpl implementsPersonService { @Autowired privatePersonDao personDao; @Transactional public voidsavePerson(Person person) { personDao.savePerson(person); } @Transactional public voiddeletePerson(Person person) { personDao.remove(person); } publicPerson getPersonById(String id) { return personDao.getById(Person.class, id); } public longgetPersonCount(String fname, String lname) { return personDao.getPersonCountByCriteria(fname, lname); } @Override publicList<Person> getPersonList(String fname, String lname, intlimit, intpage) { return personDao.getPersonByCriteria(fname, lname, limit, page); } } |
Buat
class PersonController.java di package org.blueoxygen.controller
packageorg.blueoxygen.controller; importjava.text.ParseException; importjava.text.SimpleDateFormat; import javax.swing.JOptionPane; importorg.blueoxygen.cimande.commons.CimandeModuleAction; importorg.blueoxygen.entity.Person; importorg.blueoxygen.service.PersonService; importorg.springframework.beans.factory.annotation.Autowired; importcom.opensymphony.xwork2.validator.annotations.RequiredStringValidator; importcom.opensymphony.xwork2.validator.annotations.Validations; public class PersonController extendsCimandeModuleAction { @Autowired privatePersonService personService; privatePerson person= newPerson(); private int limit= 0; private int page= 0; SimpleDateFormat df= newSimpleDateFormat(“ddMMyy”); publicPersonController() { model.put(“person”, person); } // POST /module/person/create // POST /module/person/create/{id} @Validations(requiredStrings = { @RequiredStringValidator(fieldName = “person.fname”, message = “First Name cannot be empty”, trim = true), @RequiredStringValidator(fieldName = “person.lname”, message = “Last Name cannot be empty”, trim = true) }) publicString personPost() { try{ person.setBirthdate(df.parse(model.get(“birthdate”).toString())); } catch(ParseException e) { // TODOAutogenerated catch block e.printStackTrace(); } personService.savePerson(person); return SUCCESS; } // GET /module/person/create // GET /module/person/edit/{id} publicString personGet() { model.put(“person”, personService.getPersonById(person.getId() + “”)); // model.put(“itemCategorys”, itemCategoryService.getAllItemCategory()); return INPUT; } // DELETE /module/person/edit/{id} publicString personDelete() { personService.deletePerson(personService.getPersonById(person.getId())); return SUCCESS; } // POST/GET /module/person/filter publicString filter() { try{ limit= model.get(“rows”) == null? 0 : newInteger(model.get( “rows”).toString()); page= model.get(“page”) == null? 0 : newInteger(model .get(“page”).toString()); } catch(NumberFormatException e) { e.printStackTrace(); } if(limit== 0 && page== 0) { limit= 10; page= 1; } model.put(“rows”, limit); model.put(“page”, page); intcount = (int) personService.getPersonCount(“”, “”); inttotal = count / limit; if(total % limit> 0) total++; System.out.println(); model.put(“persons”, personService.getPersonList(“”, “”, limit, page)); if(total == 0) total++; model.put(“total”, total); model.put(“records”, total); return SUCCESS; } } |
Pembuatan
View atau Tampilan
Pembuatan kode untuk view atau tampilan di simpan di dalam package
src/main/resources/module/template/person
Pembuatan kode untuk view atau tampilan di simpan di dalam package
src/main/resources/module/template/person
maksud
dari src/main/resources/module/template/person adalah folder
dalam folder, jadi bila belum terdapat folder yang telah saya
sebutkan anjurkan untuk membuat project baru.
Buat
view person-create.vm dengan kode berikut :
<html>
<head> <meta httpequiv=”contenttype” content=”text/html; charset=utf8″ /> <title>PersonCreate</title> #sjhead(“ajaxcache=true” “jquerytheme=lightness” “loadFromGoogle=false” “jqueryui=true”) #shead </head> <body> <form action=”#surl(” value=$request.servletPath “)” method=”post”> <table style=”border: 1px black solid;”> <tr> #stextfield(“name=person.fname” “size=25” “label=First Name”) </tr> <tr> #stextfield(“name=person.lname” “size=25” “label=Last Name”) </tr> <tr> <td> Sex </td> <td> <input type=”radio” name=”person.sex” value=”Male” checked=”checked” /> Male <input type=”radio” name=”person.sex” value=”Female” /> Female </td> </tr> <tr> <td>BirthDate</td> <td> #sjdatepicker(“name=person.birthdate” “showOn=both” “changeMonth=true” “changeYear=true” “displayFormat=ddmmyy” “buttonImageOnly=true” ) #end </td> </tr> <tr> <td><label for=”person.address” class=”label”>Address </label></td> <td><textarea rows=”3″ cols=”25″ name=”person.address”>$!person.address</textarea></td> </tr>
<tr>
#stextfield(“name=person.city” “size=25” “label=City”) </tr> <tr> <td> Country:</td> <td> <select name=”person.country.id”> #foreach($c in $personCountries) <option value=”$!c.id” #if($c.id == $!person.country.id)selected #end> $!c.countryname </option> #end </tr> <tr> #stextfield(“name=person.email” “size=25” “label=Email”) </tr> <tr> #stextfield(“name=person.phone” “size=25” “label=Phone”) </tr> <tr> <td colspan=”2″ align=”right”> <input type=”submit” value=”Save”> <input type=”hidden” name=”person.id” value=”$!person.id” /> </td> </tr> </table> </form> </body> </html> |
nah,
untuk class vm sendiri saya menggunakan copas pada sruts-default.vm,
karena saya tidak menemukan class pada pembuatannya.. setelah itu
saya mengganti nama dari sruts-default dengan nama
person-create.vm
Buat
view person-grid-list.vm
<html>
<head> <meta httpequiv=”contenttype” content=”text/html; charset=utf8″ /> </head> <body> <br><br><br> <table border=”0,1″ width=”100%”> <tr> <td colspan=”10″ width=”100%” height=”10%” align=”right” bgcolor=”#2554C7″><font color=”white” size=”8″>Result Person</font></td> </tr> <tr> <td width=”10%”>Name</td> <td width=”10%”>Gender</td> <td width=”15%”>Birtdate</td> <td width=”15%”>Address</td> <td width=”10%”>City</td> <td width=”10%”>Country</td> <td width=”10%”>Email</td> <td width=”10%”>Phone</td> <td width=”10%”>Action</td> </tr> <tr> <td colspan=”10″ width=”100%” height=”10%” ></td> </tr> #foreach($a in $persons) <tr> <td>$!a.fname $!a.lname</td> <td>$!a.sex</td> <td>$!a.birthdate</td> <td>$!a.address</td> <td>$!a.city</td> <td>$!a.country</td> <td>$!a.email</td> <td>$!a.phone</td> <td> <a href=”edit.action?person.id=$a.id”> <img src=”../../images/silk/page_edit.png” border=”0″ title=”Edit”> </a> <a href=”delete.action?person.id=$a.id”> <img src=”../../images/silk/delete.png” border=”0″ title=”Delete”> </a> </td> </tr> #end <tr> <td colspan=”10″ width=”100%” height=”10%” ></td> </tr> <tr> <td colspan=”10″ width=”100%” height=”10%” align=”right” bgcolor=”#2554C7″></td> </tr> </table> </body> </html> |
dengan
menggunakan cara yang sama untuk class .vm
sekarang Pembuatan
Alur Data Aplikasi
-
Hibernate Mapping
Masukkan
Entity Person.java ke di package
src/main/resources/cimandehibernate-sample.xml
<?xml
version=’1.0′ encoding=’utf8′?> <!DOCTYPE hibernateconfiguration PUBLIC “//Hibernate/Hibernate Configuration DTD 3.0//EN” “http://hibernate.sourceforge.net/hibernateconfiguration3.0.dtd”> <hibernateconfiguration> <sessionfactory> <mapping class=”org.blueoxygen.entity.Person”/> </sessionfactory> </hibernateconfiguration> |
kemudian Membuat
alur data di src/main/resources/cimande-struts-example.xml
<?xml
version=”1.0″ encoding=”UTF8″ ?> <!DOCTYPE struts PUBLIC “//Apache Software Foundation//DTD Struts Configuration 2.0//EN” “http://struts.apache.org/dtds/struts2.0.dtd”> <struts> <package name=”person” extends=”cimandedefault” namespace=”/module/person”> <action name=”create” class=”org.blueoxygen.controller.PersonController” method=”person”> <result name=”input” type=”velocity”> /module/template/person/personcreate.vm </result> <result name=”success” type=”velocity”> /module/template/person/persongridlist.vm </result> </action> <action name=”filter/*” class=”org.blueoxygen.controller.PersonController” method=”filter”> <result name=”input” type=”redirect”> filter/${limit}/${page} </result> <result name=”success” type=”velocity”> /module/template/person/persongridlist.vm </result> </action> <action name=”edit/*” class=”org.blueoxygen.controller.PersonController” method=”person”> <param name=”person.id”>{1}</param> <result name=”input” type=”velocity”> /module/template/person/personcreate.vm </result> <result name=”success” type=”redirect”> /module/person/filter </result> </action> <action name=”delete/*” class=”org.blueoxygen.controller.PersonController” method=”personDelete”> <param name=”person.id”>{1}</param> <result name=”success” type=”redirect”> filter </result> </action> </package> </struts> |
selesai..
0 komentar:
Posting Komentar