Membuat project web blueoxygen sederhana dengan SpringSource Tool Suite


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(“dd­MM­yy”);
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) {
// TODOAuto­generated 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
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>Person­Create</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 &nbsp;&nbsp;&nbsp;
<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=dd­mm­yy”
“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%”>E­mail</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
  1. Hibernate Mapping
Masukkan  Entity  Person.java  ke  di  package  src/main/resources/cimandehibernate-sample.xml
<?xml version=’1.0′ encoding=’utf­8′?>
<!DOCTYPE hibernate­configuration PUBLIC
“­//Hibernate/Hibernate Configuration DTD 3.0//EN”
http://hibernate.sourceforge.net/hibernate­configuration­3.0.dtd”&gt;
<hibernate­configuration>
<session­factory>
<mapping class=”org.blueoxygen.entity.Person”/>
</session­factory>
</hibernate­configuration>

kemudian Membuat alur data di src/main/resources/cimande-struts-example.xml
<?xml version=”1.0″ encoding=”UTF­8″ ?>
<!DOCTYPE struts PUBLIC
“­//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
http://struts.apache.org/dtds/struts­2.0.dtd”&gt;
<struts>
<package name=”person” extends=”cimande­default” namespace=”/module/person”>
<action name=”create” class=”org.blueoxygen.controller.PersonController” method=”person”>
<result name=”input” type=”velocity”>
/module/template/person/person­create.vm
</result>
<result name=”success” type=”velocity”>
/module/template/person/person­grid­list.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/person­grid­list.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/person­create.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..


SHARE

Milan Tomic

Hi. I’m Designer of Blog Magic. I’m CEO/Founder of ThemeXpose. I’m Creative Art Director, Web Designer, UI/UX Designer, Interaction Designer, Industrial Designer, Web Developer, Business Enthusiast, StartUp Enthusiast, Speaker, Writer and Photographer. Inspired to make things looks better.

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 komentar:

Posting Komentar