Cimande 2.0 Quick Start Guide

  Cimande 2.0 Quick Start Guide

BAB I CIMANDE 2.0 TOOLS

  Tujuan

  • Mengetahui dan Memahami Eclipse IDE
  • Mengetahui dan Memahami Maven dan M2Eclipse
  • Mengetahui dan Memahami Apache Tomcat • Mengetahui dan Memahami MySQL Database

  Materi Pembelajaran

1.1. Eclipse IDE

  Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platform-

  independent). Berikut ini adalah sifat dari Eclipse:

  • Multi - platform

  Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X

  • Mulit - language

  Eclipse dikembangkan dengan bahasa pemrograman Java, akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti

  C/C++, Cobol, Phyton, Perl, PHP dan lain sebagainya

  • Multi - role

  Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya. Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan open

source, yang berarti setiap orang boleh melihat kode pemrograman perangkat lunak ini. Selain itu kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plugin. Macam – macam plugin yang tersedia di Eclipse :

  • – Subversion – m2eclipse
  • – Glassfish Integration – Jboss Tools – STS (SpringSource Tool Suite)
  • – EGIT (Git Eclipse Plugin)
  • – Mercurial Eclipse (Mercurial Eclipse Plugin)
  • – Windows Builder

   1.2. Maven dan m2eclipse

  Maven adalah salah satu build tool populer yang memiliki fungsi mirip seperti Ant, akan tetapi dengan pendekatan yang lebih kompleks dan sangat berbeda dengan Ant. Maven sangat baik digunakan dalam pengembangan proyek yang dikerjakan secara berkelompok. M2eclipse merupakan plugin yang mendukung pengembangan software berbasis maven pada Eclipse IDE.

   1.3. Apache Tomcat

  Apache Tomcat adalah servlet container yang dikembangkan oleh Apache Software Foundation. Tomcat mengimplementasikan spesifikasi Java Servlet dan JSP dan menyediakan “pure Java” HTTP web server untuk menjalankan kode Java. Tomcat dapat dijalankan di banyak sistem operasi seperti Windows, Linux, Mac, dll.

  Tomcat memiliki fitur-fitur canggih seperti pesan kesalahan yang dapat dikonfigurasi, autentikasi berbasis basis data dan lain-lain. Tomcat juga didukung oleh sejumlah antarmuka pengguna berbasis grafik (GUI) yang memungkinkan penanganan server menjadi lebih mudah.

1.4. MySQL Database

  MySQL adalah perangkat sistem manajemen basis data opensource dibawah lisensi GNU General Public Licence. MySQL merupakan database terpopupler di dunia saat ini yang sering menjadi pilihan dalam penggunaan aplikasi berbasis web. Paket instalasi MySQL dapat di download disesuai dengan sistem operasi yang digunakan.

  Cimande 2.0 Quick Start Guide

BAB II INSTALASI TOOLS

  Tujuan

  • Mengetahui dan Memahami Instalasi Eclipse IDE
  • Mengetahui dan Memahami Instalasi m2eclipse

  Materi Pembelajaran

2.1. Instalasi Eclipse IDE

  Eclipse versi terbaru dapat di download di Berikut langkah-langkah instalasi Eclipse IDE.

  • Download Eclipse, pilih versi sesuai dengan sistem operasi yang digunakan. Gunakan Eclipse IDE for Java EE Developer.
  • Setelah proses download selesai extract paket yang telah terdownload (instalasi

  Eclipse IDE tidak menggunkan wizard sama sekali). Kemudian jalankan Eclipse (secara umum eclipse.exe pada windows atau eclipse pada linux).

  • Pilih workspace yang akan digunakan sebagai tempat penyimpanan proyek dan metadata eclipse.
  • Eclipse IDE siap digunakan.

2.2. Instalasi M2Eclipse

  Cimande menggunakan Ant Build Tool hingga versi 1.3.5, pada versi mayor 2.0 Cimande menggunakan Maven untuk mendukung dependency management dan archetype untuk memudahkan pembuatan proyek dibawah Cimande SDK. Penggunaan maven adalah berbasis perintah/command, Eclipse menyediakan m2e untuk memudahkan pembuatan aplikasi berbasis maven pada Eclipse IDE. Berikut langkah instalasi m2e.

  • Pilih menu Help → Install New Software pada Eclipse
ke dalam kolom

  • Masukkan link

  Work with kemudian tekan enter, tunggu beberapa saat hingga muncul daftar plugin yang dapat diinstal.

  Catatan: Link update site dapat berubah-ubah setiap saat, keterangan lebih lengkap terdapat pada Instalasi plugin membutuhkan koneksi internet.

  • Pilih semua plugin yang dibutuhkan (tekan toombol Select All) → Next

  Finish , maka Eclipse akan mulai men-download

  • Lakukan semua proses, terakhir tekan tombol semua plugin yang dibutuhkan.
  • Restart Eclipse Secara default ketikan m2e diinstal, secara otomatis Maven juga akan ikut terinstal sehingga instalasi m2e tidak membutuhkan instalasi Maven secara terpisah.

2.3. Database

  Cimande 2.0 Quick Start Guide

BAB III Menjalankan Cimande Project

  Tujuan 1.

  Mengetahui dan Memahami Pembuatan Maven Project 2. Mengetahui dan Memahami Generate Schema dengan Maven Build

  Materi Pembelajaran

3.1 Menjalankan Cimande Project

  Sebagai permulaan, kita akan membuat cimande project untuk menampilkan form Admin Cimande, dengan langkah – langkah sebagai berikut : • Buat sebuah database dengan nama cimande.

  • Buat Maven project dengan cara File → New → Other → Maven → Maven Project>Pilih lokasi dimana proyek akan disimpan, jika tidak ada perubahan secara default Eclipse akan meletakkan proyek pada workspace yang telah dipilih ketika Eclipse pertama kali dijalan
  • Pada field Catalog pilih All Catalogs kemudian pada field Filter ketik org.blueoxygen sehingga otomatis GroupId, ArtifactId dan Version akan tampil.

  Catatan: Dalam beberapa kasus eclipse tidak secara otomatis mengindex catalog yag terdapat pada maven central, sehingga ketika memasukkan filter, daftar archetype yang diinginkan tidak muncul. Masalah ini dapat diatasi dengan memasukkan archetype secara manual, pilih Add Archetype

  • Masukkan Group Id dan Artifact Id. Sebagai contoh:

  GroupId : org.blueoxygen ArtifactId : sample Berikut baris perintah bilamana menggunakan maven console.

  mvn archetype:generate

  • DarchetypeGroupId=org.blueoxygen.cimande
  • DarchetypeArtifactId=cimande-archetype-blank
  • DarchetypeVersion=2.0
  • DgroupId=org.blueoxygen
  • DartifactId=sample
    • Setelah proses generate selesai maka eclipse akan secara otomatis meneyesuaikan project layout.
    • Buka file konfigurasi, hibernate.properties, sesuaikan beberapa property sesuai dengan database, seperti: hibernate.connection.username → username database

  ◦

  hibernate.connection.password → password database

  ◦

  hibernate.connection.url → url dan nama database yang digunakan

  ◦

  inta h u nt uk m eng g en erate table schema dengan cara klik kanan pro je ct

  • Masukkan per

  → Run As → Maven Build. Isi Goals dengan perintah hibernate3:hbm2ddl Untuk mengimport data table kedalam database gunakan perintah

  • initialize dbunit:operation

  • Jalankan perintah tomcat:run, maka secara otomatis Maven akan mendeploy aplikasi ke dalam server serta menjalankan ser
  • Setelah server berhasil dijalankan, proyek dapat dibuka melalui url

  artifactId}. Masukkan username admin dan password blueoxygen untuk dapat masuk ke halaman wokspace administrator.

  Cimande 2.0 Quick Start Guide

BAB IV CIMANDE 2.0 CRUD

  Tujuan

  1. Mengetahui dan Memahami Project Cimande

  2. Mengimplementasikan CRUD dalam Project Cimande

  Materi Pembelajaran

4.1 Cimande 2.0 Overview

  Cimande adalah sebuah aplikasi berbasis MVC yang menggunakan Velocity sebagai presentation layer, Struts sebagai controller, serta Hibernate sebagai modelnya. Integrasi antara Struts dengan Hibernate menggunakan Spring dan Integrasi Struts dengan Velocity menggunakan XWork. Beberapa keunggulan Cimande 2.0 daripada versi sebelumnya yaitu :

  a. Maven Build Tool

  Jika Cimande versi sebelumnya menggunakan Ant sebagai Build Tool, pada Cimande 2.0 ini menggunakan Maven dengan plugin dan dependency managementnya yang sangat powerful. Hal ini juga menghilangkan kesan Cimande yang kurang ramah dengan IDE selain Eclipse, sehingga developer yang akan mengembangkan aplikasi diatas Cimande dapat memilih menggunakan IDE sesuai yang dikehendaki

  b. Archetype

  Cimande 2.0 telah di-host di java.net , dengan Nexus yang telah termirror dengan Maven

  Central membuat para developer yang akan mengembangkan Cimande cukup

  menggenerate Archetype untuk membuat sebuah workspace yang siap pakai

  c. REST REST (Representational State Transfer) merupakan sebuah arsitektur dari sistem jaringan

  dimana setiap server hanya menyajikan konten data yang diminta oleh client tanpa mempengaruhi client itu sendiri. Dengan adanya fitur REST, Cimande 2.0 menyediakan beberapa layer presentation (multiple presentation) yang mendukung output selain html, seperti JSON dan XML

  d. Multiple Datasource

  Cimande 2.0 dapat mengambil datasource selain database, contohnya Content Management dengan CMIS dan Workflow dengan Joget

  e. Security Interceptor (Debus)

  Security Interceptor ini merupakan penyempurnaan dari beberapa celah keamanan Cimande versi sebelumnya

  f. Social Network Support

  Cimande 2.0 mendukung koneksi ke beberapa jejaring sosial seperti Facebook dan Twitter

4.2 Pembuatan Package

  Dalam implementasi CRUD Cimande 2.0 kali ini kita tidak menggunakan contoh Item- Category lagi, namun kita akan membuat form untuk pengisian keterangan diri seseorang. Setelah membuat Maven project dan mengimportnya ke Eclipse pada BAB sebelumnya, sekarang kita perlu membuat package – package sebagai tempat kita meletakkan java class.

  Buat 4 package di dalam package org.blueoxygen, yaitu package entity, dao,

  

service, dan controller. Fungsi pembuatan package – package tersebut adalah sebagai

  berikut :

  • Package org.blueoxygen.entity

  Package ini berisi entity class yang berfungsi sebagai penghubung framework dengan database. Pembuatan table dan semua variabel yang akan ditampilkan dalam database di deklarasikan disini

  • Package org.blueoxygen.dao

  Data Access Object (DAO) merupakan sebuah object yang menyediakan sebuah abstract interface terhadap beberapa database atau mekanisme persistence, dan operasi tertentu tanpa memperlihatkan detail database. Penerapan konsep ini sering disebut dengan separation of concern, dimana setiap kode dipisahkan berdasarkan fungsinya sehingga kode diatasnya hanya perlu mengetahui secara abstrak cara mengakses data tanpa perlu mengetahui bagaimana akses ke sumber data di implementasikan

  • Package org.blueoxygen.service

  Service merupakan sebuah objek yang berfungsi untuk menyederhanakan kumpulan kode besar seperti library. Dalam kasus database kita dapat menggunakan Service untuk mengelompokkan beberapa DAO dalam sebuah transaksi

  • Package org.blueoxygen.controller

  Controller adalah sebuah layer yang bekerja untuk mengatur urusan “antar layer”, yang artinya bertanggung jawab terhadap eksekusi aplikasi

4.3 Pembuatan Java Class

  Buat class Person.java di package org.blueoxygen.entity

  4.3.1 package

  org.blueoxygen.entity;

  import java.util.Date; import

  javax.persistence.Entity;

  import javax.persistence.Inheritance; import

  javax.persistence.InheritanceType;

  import javax.persistence.Table; import

  org.blueoxygen.cimande.commons.DefaultPersistence;

  /** @author

  Nety Herawaty *

  • /

  @Entity @Table (name = "module_person" ) @Inheritance (strategy = InheritanceType. SINGLE_TABLE ) public class extends

  Person DefaultPersistence {

  private

  String fname ;

  private

  String lname ;

  private

  String sex ;

  private

  Date birthdate ;

  private

  String address ;

  private

  String city ;

  private

  String country ;

  private

  String email ;

  private

  String phone ;

  public String getFname() { return fname ;

  }

  public void

  setFname(String fname) {

  this . fname = fname;

  }

  public String getLname() { return lname ;

  }

  public void

  setLname(String lname) {

  this . lname = lname;

  }

  public String getSex() { return sex ;

  }

  public void

  setSex(String sex) {

  this . sex = sex;

  }

  public Date getBirthdate() { return birthdate ;

  }

  public void

  setBirthdate(Date birthdate) {

  this . birthdate = birthdate;

  }

  public

  String getAddress() {

  return address ;

  }

  public void

  setAddress(String address) {

  this

  . address = address; }

  public

  String getCity() {

  return city ;

  }

  public void

  setCity(String city) {

  this

  . city = city; }

  public

  String getCountry() {

  return country ;

  }

  public void

  setCountry(String country) {

  this

  . country = country; }

  public

  String getEmail() {

  return email ;

  }

  public void

  setEmail(String email) {

  this

  . email = email; }

  public

  String getPhone() {

  return phone ;

  }

  public void

  setPhone(String phone) {

  this

  . phone = phone; }

  } Buat class PersonDao.java di package org.blueoxygen.dao

  4.3.2 package

  org.blueoxygen.dao;

  import java.util.List; import

  org.blueoxygen.cimande.commons.LogInformation;

  import org.blueoxygen.cimande.persistence.hibernate.dao.HibernatePersistenceDaoManager; import

  org.blueoxygen.cimande.security.User;

  import org.blueoxygen.entity.Person; import

  org.hibernate.Criteria;

  import org.hibernate.criterion.MatchMode; import

  org.hibernate.criterion.Projections;

  import org.hibernate.criterion.Restrictions; import

  org.springframework.stereotype.Repository;

  /** @author

  Nety Herawaty *

  • /

  @Repository public class extends

  PersonDao HibernatePersistenceDaoManager<Person> {

  public void

  savePerson(Person person) {

  if (person == null ) return

  ;

  if null

  (person.getId() == ) { createPerson(person); } else if (person.getId().trim().equalsIgnoreCase( "" )) { createPerson(person);

  else

  } { person.getLogInformation() .setLastUpdateBy(getCurrentUser().getId()); person.getLogInformation().setLastUpdateDate(getCurretTime()); merge(person);

  } }

  public long

  getPersonCountByCriteria(String fname, String lname) { Criteria criteria = getPersonCriteria(fname, lname); criteria.setProjection(Projections.rowCount());

  return new

  Long(criteria.uniqueResult() + "" ); }

  @SuppressWarnings ( "unchecked" ) public

  List<Person> getPersonByCriteria(String fname, String lname,

  int int

  limit, page) {

  return getPersonCriteria(fname, lname).setMaxResults(limit)

  .setFirstResult((page - 1) * limit).list(); }

  private

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

  return

  criteria; }

  private void

  createPerson(Person person) { User user = getCurrentUser();

  new

  LogInformation logInformation = LogInformation(); logInformation.setCreateBy(user.getId()); logInformation.setCreateDate(getCurretTime()); logInformation.setLastUpdateBy(user.getId()); logInformation.setLastUpdateDate(getCurretTime()); person.setId( null ); person.setLogInformation(logInformation); persist(person);

  } }

  Buat class PersonService.java di package org.blueoxygen.service

  4.3.3 package

  org.blueoxygen.service;

  import

  java.util.List;

  import

  org.blueoxygen.entity.Person;

  /** @author

  • Nety Herawaty *
  • /

  public interface

  PersonService {

  void

  savePerson(Person person);

  void

  deletePerson(Person person); Person getPersonById(String id);

  long

  getPersonCount(String fname, String lname);

  int int

  List<Person> getPersonList(String fname, String lname, limit, page); }

  Buat class PersonServiceImpl.java di package org.blueoxygen.service.impl

  4.3.4 package

  org.blueoxygen.service.impl;

  import java.util.List; import

  org.blueoxygen.dao.PersonDao;

  import org.blueoxygen.entity.Person; import

  org.blueoxygen.service.PersonService;

  import org.springframework.beans.factory.annotation.Autowired; import

  org.springframework.stereotype.Service;

  import org.springframework.transaction.annotation.Transactional; /**

  • @author Nety Herawaty *
  • /

  @Service true

  @Transactional (readOnly = ) public class PersonServiceImpl implements PersonService {

  @Autowired private PersonDao personDao ; @Transactional public void savePerson(Person person) { personDao .savePerson(person);

  }

  @Transactional public void

  deletePerson(Person person) {

  personDao .remove(person);

  }

  public

  Person getPersonById(String id) {

  return class personDao .getById(Person. , id);

  }

  public long

  getPersonCount(String fname, String lname) {

  return personDao .getPersonCountByCriteria(fname, lname);

  }

  @Override public int

  List<Person> getPersonList(String fname, String lname, limit,

  int page) { return

personDao .getPersonByCriteria(fname, lname, limit, page);

  } }

  Buat class PersonController.java di package org.blueoxygen.controller

  4.3.5 package

  org.blueoxygen.controller;

  import java.text.ParseException; import

  java.text.SimpleDateFormat;

  import javax.swing.JOptionPane; import

  org.blueoxygen.cimande.commons.CimandeModuleAction;

  import org.blueoxygen.entity.Person; import

  org.blueoxygen.service.PersonService;

  import org.springframework.beans.factory.annotation.Autowired; import

  com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;

  import com.opensymphony.xwork2.validator.annotations.Validations; public class extends

  PersonController CimandeModuleAction {

  @Autowired private

  PersonService personService ;

  private new

  Person person = Person();

  private int limit = 0; private int page = 0;

  SimpleDateFormat df = new SimpleDateFormat( "dd-MM-yy" );

  public

  PersonController() {

  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" , true

  trim = ) })

  public

  String personPost() {

  try

  {

  person .setBirthdate( df .parse( model .get( "birthdate" ).toString()));

  } catch (ParseException e) {

  TODO // Auto-generated catch block

  e.printStackTrace(); }

  personService .savePerson( person ); return SUCCESS ;

  }

  // GET /module/person/create // GET /module/person/edit/{id} public String personGet() { model .put( "person" , personService .getPersonById( person .getId() + "" ));

// model.put("itemCategorys", itemCategoryService.getAllItemCategory());

return

  INPUT ;

  }

  // DELETE /module/person/edit/{id} public

  String personDelete() {

  

personService .deletePerson( personService .getPersonById( person .getId()));

return

  SUCCESS ;

  }

  // POST/GET /module/person/filter public

  String filter() {

  try

  {

  limit = model .get( "rows" ) == null ? 0 : new Integer( model .get( "rows" ).toString()); null new

page = model .get( "page" ) == ? 0 : Integer( 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 ); int int

  count = ( ) personService .getPersonCount( "" , "" );

  int

  total = 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 ;

  } }

4.4 Pembuatan View atau Tampilan

  Pembuatan kode untuk view atau tampilan di simpan di dalam package

  src/main/resources/module/template/person

4.4.1 Buat view person-create.vm

  <title>Person-Create</title> # sjhead (" ajaxcache =true" " jquerytheme =lightness"

  <td>BirthDate</td> <td> # sjdatepicker ("name=person.birthdate"

  <html>

  </tr>

  cols ="25" name="person.address">$!person.address </textarea> </td>

  <td><label for="person.address" class="label">Address </label></td> <td><textarea rows="3"

  </tr> <tr>

  "buttonImageOnly=true" ) #end </td>

  "showOn=both" "changeMonth=true" "changeYear=true" "displayFormat= dd - mm - yy "

  </td> </tr> <tr>

  "loadFromGoogle=false" " jqueryui =true") # shead

  <input type="radio" name="person.sex" value="Male" checked="checked" /> Male     <input type="radio" name="person.sex" value="Female" /> Female

  <head> <meta httpequiv="contenttype" content="text/ html ; charset =utf8" />

  </tr> <tr>

  # stextfield ("name=person.lname" "size=25" "label=Last Name")

  "label=First Name") </tr> <tr>

  <tr> # stextfield ("name=person.fname" "size=25"

  <form action="# surl (" value=$request.servletPath ")" method="post"> <table style="border: 1px black solid;">

  </head> <body>

  <td> Sex </td> <td>

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

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

4.5 Pembuatan Alur Data Aplikasi

4.5.1 Hibernate Mapping

  Hibernate adalah perangkat untuk memudahkan akses ke database. Hibernate menangani koneksi database dari aplikasi Java ke database server. Hibernate juga dapat membuat tabel otomatis di database, jadi semua Entity yang ada harus dimasukkan ke dalam file konfigurasi Hibernate Masukkan Entity Person.java ke di package src/main/resources/cimande-

  hibernate-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" > < hibernate-configuration > < session-factory >

4.5.2 Membuat alur data di src/main/resources/cimande-struts-example.xml

  </ result > </ action >

< action name = "edit/*" class = "org.blueoxygen.controller.PersonController" method = "person" >

< param name = "person.id" > {1} </ param >

  </ result > </ action > </ package > </ struts >

  < result name = "success" type = "redirect" > filter

  </ result > </ action > < action name = "delete/*" class = "org.blueoxygen.controller.PersonController" method = "personDelete" > < param name = "person.id" > {1} </ param >

  /module/person/filter

  </ result > < result name = "success" type = "redirect" >

  /module/template/person/person-create.vm

  < result name = "input" type = "velocity" >

  /module/template/person/person-grid-list.vm

  < mapping class = "org.blueoxygen.entity.Person" /> </ session-factory > </ hibernate-configuration >

  </ result > < result name = "success" type = "velocity" >

  filter/${limit}/${page}

  </ result > </ action > < action name = "filter/*" class = "org.blueoxygen.controller.PersonController" method = "filter" > < result name = "input" type = "redirect" >

  /module/template/person/person-grid-list.vm

  </ result > < result name = "success" type = "velocity" >

  /module/template/person/person-create.vm

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

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

4.5.3 Start Server

4.6 Cimande BackEnd

  Buka web browser dan ketikan url . Kemudian login dengan username : admin, password : blueoxygen untuk membuat module, user manager, beserta securitynya

  Ada beberapa hal yang perlu diperhatikan di dalam Cimande BackEnd, diantaranya adalah :

  • Site Manager - Descriptor Manager : Descriptor - Module Manager : Module Function Role Manager Role Privilage Role Site Privilage - Multi Site : Site - User Management : Company Job Position User Manager - Workflow Role : WF Role

  Descriptor Manager

4.6.1 Descriptor digunakan untuk otomatisasi action new dan search yang akan

  dieksekusi berdasarkan namespace yang di deklarasikan dalam cimande-

  struts-example.xml Membuat Descriptor Person :

  1. Name : person

  2. Description : Person

  Module Function

4.6.2 Module Function digunakan untuk membuat Menu Dinamis. Menu utama

  menggunakan thread master id “master” sedangkan submenu menggunakan

  thread master id menu utama / menu diatasnya. Jika dikehendaki sebuah menu

  mengeksekusi sebuah action new / search, maka tambahkan descriptor berdasarkan descriptor yang dibuat

  Membuat Module Function Person :

  1. Name : md_person

  2. Description : Person

  3. Thread Master Id : Master

  4. Descriptor : person

4.6.3 Site

  Digunakan untuk membuat site yang nantinya digunakan untuk memisahkan site masing – masing role yang dibuat Membuat Site Person :

  1. Name : person_site

  2. Description : Person Site

  3. Workspace Type : tree

4.6.4 WF Role

  Digunakan untuk membuat role yang bertujuan untuk membedakan hak akses dari masing – masing user yang diregistrasikan di dalam framework cimande

  Membuat Role Person :

  1. Name : person

  2. Description : Person

  3. Workspace Type : tree

4.6.5 Role Manager

  Digunakan untuk menentukan site dari role yang telah dibuat. Hal ini bertujuan untuk memisahkan dan memilah menu yang tersedia untuk masing – masing

  role yang berbeda Membuat Role Manager Person :

  Masuk ke dalam module function person yang ada di role manager, kemudian tambahkan site person_site dengan cara tekan view site → submit

  Role Privilage

4.6.5 Digunakan untuk menentukan menu yang disediakan untuk role terpilih

  berdasarkan Module Function yang telah dibuat

  Membuat Role Privilage Person :

  Masuk ke dalam module function person yang ada di role privilage, kemudian tambahkan module function md_person dengan cara tekan view site → submit

  Role Site Privilage

4.6.6 Digunakan untuk menentukan atau menambahkan menu (module function)

  berdasarkan role privilage yang telah dibentuk merujuk pada site sesuai dengan

  role Membuat Role Site Privilage Person :

  Masuk ke dalam module function person dan site person yang ada di role site

  privilage, kemudian tambahkan module function md_person dengan cara tekan view site → submit

  User Manager

4.6.7 Digunakan untuk registrasi user ke dalam framework cimande . Registrasi ini

  digunakan untuk user yang berkepentingan di dalam aplikasi yang akan dibentuk menggunakan framework cimande.

  Membuat User Manager Person :

  1. Login : person

  2. Password : person

  3. Confirm Password : person

  4. First Name : Person

  5. Company : Blueoxygen Tech

  6. Position : Manager

  7. Workspace Type : tree

4.7 Cimande CRUD

  Setelah membuat Cimande BackEnd, logout dan login kembali dengan username:

  person, password : person CREATE

4.7.1 Pilih menu new untuk menampilkan form pengisian data diri

  READ

  4.7.2 Jika button save ditekan, maka data yang telah di inputkan akan di tampilkan

  4.7.3 UPDATE

  Untuk mengedit data, tekan tombol edit di form View atau form Search

4.7.4 DELETE

  Untuk menghapus data, tekan tombol delete di form View atau Search

4.7.5 SEARCH

  Pilih menu Search untuk mencari data yang pernah di inputkan

4.7 Koneksi Jejaring Sosial

  Cimande 2.0 juga mendukung koneksi ke beberapa jejaring sosial seperti Facebook dan Twitter. Untuk login ke Cimande melalui jejaring sosial, tekan icon Facebook dan Twitter pada form Login seperti gambar dibawah ini

4.7.1 Koneksi Facebook

  Ketika icon Facebook diklik, maka anda akan terkoneksi dengan Facebook yang meminta untuk Request for Permission . Dan ketika button Allow ditekan akan tampil form notifikasi Request Success

4.7.2 Koneksi Twitter

  Untuk koneksi ke Twitter, klik icon Twitter pada form login sehingga tampil seperti gambar dibawah ini. Jika button Authorize app ditekan, akan tampil notifikasi Request Success untuk login ke Cimande