Cimande 2.0 Quick Start - Indonesia Version

Embed Size (px)

Citation preview

Cimande 2.0 Quick Start Guide

BAB I CIMANDE 2.0 TOOLS

created by Meruvian Developer (Ind.version)

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 IDEadalah sebuah IDE (Integrated Development Environment) untuk Eclipse

mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platformindependent). 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 Created by Meruvian Education (Ind.version)2

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 Tomcatmengimplementasikan spesifikasi Java Servlet dan JSP dan

Apache Tomcat adalah servlet container yang dikembangkan oleh Apache Software Foundation. Tomcat 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. Created by Meruvian Education (Ind.version)3

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 di http://www.mysql.com sesuai dengan sistem operasi yang digunakan.

Created by Meruvian Education (Ind.version)

4

Cimande 2.0 Quick Start Guide

BAB II INSTALASI TOOLS

Created by Meruvian Education (Ind.version)

5

Tujuan Mengetahui dan Memahami Instalasi Eclipse IDE Mengetahui dan Memahami Instalasi m2eclipse

Materi Pembelajaran 2.1. Instalasi Eclipse IDEEclipse versi terbaru dapat di download di http://eclipse.org/. 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).

Created by Meruvian Education (Ind.version)

6

Pilih workspace yang akan digunakan sebagai tempat penyimpanan proyek dan metadata eclipse.

Eclipse IDE siap digunakan.

Created by Meruvian Education (Ind.version)

7

2.2. Instalasi M2EclipseCimande 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

Created by Meruvian Education (Ind.version)

8

Masukkan link http://download.eclipse.org/technology/m2e/releases/ ke dalam kolom 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 http://eclipse.org/m2e/. Instalasi plugin membutuhkan koneksi internet.

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

Created by Meruvian Education (Ind.version)

9

Lakukan semua proses, terakhir tekan tombol Finish, maka Eclipse akan mulai men-download 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

Created by Meruvian Education (Ind.version)

10

Cimande 2.0 Quick Start Guide

BAB III Menjalankan Cimande Project

Created by Meruvian Education (Ind.version)

11

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

Materi Pembelajaran 3.1 Menjalankan Cimande ProjectSebagai 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 dijalankan.

Pada field Catalog pilih All Catalogs kemudian pada field Filter ketik org.blueoxygen sehingga otomatis GroupId, ArtifactId dan Version akan tampil.

Created by Meruvian Education (Ind.version)

12

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 ArtifactId : org.blueoxygen : sample

Created by Meruvian Education (Ind.version)

13

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.

Created by Meruvian Education (Ind.version)

14

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 Masukkan perintah untuk menggenerate table schema dengan cara klik kanan project Run As Maven Build. Isi Goals dengan perintah hibernate3:hbm2ddl

Untuk mengimport data table kedalam database gunakan perintahinitialize dbunit:operation

Created by Meruvian Education (Ind.version)

15

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

http://localhost:8080/{artifactId}.

Masukkan

username

password

blueoxygen untuk dapat masuk ke halaman wokspace administrator.

Created by Meruvian Education (Ind.version)

16

Cimande 2.0 Quick Start Guide

BAB IV CIMANDE 2.0 CRUD

Created by Meruvian Education (Ind.version)

17

Tujuan1. 2. Mengetahui dan Memahami Project Cimande Mengimplementasikan CRUD dalam Project Cimande

Materi Pembelajaran 4.1 Cimande 2.0 OverviewCimande 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 Created by Meruvian Education (Ind.version)18

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 PackageDalam implementasi CRUD Cimande 2.0 kali ini kita tidak menggunakan contoh ItemCategory 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 Created by Meruvian Education (Ind.version)19

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

Created by Meruvian Education (Ind.version)

20

4.3 Pembuatan Java Class 4.3.1 Buat class Person.java di package org.blueoxygen.entitypackageorg.blueoxygen.entity; importjava.util.Date; importjavax.persistence.Entity; importjavax.persistence.Inheritance; importjavax.persistence.InheritanceType; importjavax.persistence.Table; importorg.blueoxygen.cimande.commons.DefaultPersistence; /** *@authorNetyHerawaty * */ @Entity @Table(name="module_person") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) publicclassPersonextendsDefaultPersistence{ privateStringfname; privateStringlname; privateStringsex; privateDatebirthdate; privateStringaddress; privateStringcity; privateStringcountry; privateStringemail; privateStringphone; publicStringgetFname(){ returnfname; } publicvoidsetFname(Stringfname){ this.fname=fname; } publicStringgetLname(){ returnlname; } publicvoidsetLname(Stringlname){ this.lname=lname; } publicStringgetSex(){ returnsex; } publicvoidsetSex(Stringsex){ this.sex=sex; } publicDategetBirthdate(){ returnbirthdate; } publicvoidsetBirthdate(Datebirthdate){ this.birthdate=birthdate; }

Created by Meruvian Education (Ind.version)

21

publicStringgetAddress(){ returnaddress; } publicvoidsetAddress(Stringaddress){ this.address=address; } publicStringgetCity(){ returncity; } publicvoidsetCity(Stringcity){ this.city=city; } publicStringgetCountry(){ returncountry; } publicvoidsetCountry(Stringcountry){ this.country=country; } publicStringgetEmail(){ returnemail; } publicvoidsetEmail(Stringemail){ this.email=email; } publicStringgetPhone(){ returnphone; } publicvoidsetPhone(Stringphone){ this.phone=phone; } }

4.3.2 Buat class PersonDao.java di package org.blueoxygen.daopackageorg.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; /** *@authorNetyHerawaty * */

Created by Meruvian Education (Ind.version)

22

@Repository publicclassPersonDaoextendsHibernatePersistenceDaoManager{ publicvoidsavePerson(Personperson){ if(person==null) return; if(person.getId()==null){ createPerson(person); }elseif(person.getId().trim().equalsIgnoreCase("")){ createPerson(person); }else{ person.getLogInformation() .setLastUpdateBy(getCurrentUser().getId()); person.getLogInformation().setLastUpdateDate(getCurretTime()); } } publiclonggetPersonCountByCriteria(Stringfname,Stringlname){ Criteriacriteria=getPersonCriteria(fname,lname); criteria.setProjection(Projections.rowCount()); } returnnewLong(criteria.uniqueResult()+""); merge(person);

@SuppressWarnings("unchecked") publicListgetPersonByCriteria(Stringfname,Stringlname, intlimit,intpage){ returngetPersonCriteria(fname,lname).setMaxResults(limit) .setFirstResult((page1)*limit).list(); } privateCriteriagetPersonCriteria(Stringfname,Stringlname){ Criteriacriteria=sessionFactory.getCurrentSession().createCriteria( Person.class); criteria.add(Restrictions.like("fname",fname,MatchMode.ANYWHERE)); criteria.add(Restrictions.like("lname",lname,MatchMode.ANYWHERE)); } returncriteria;

privatevoidcreatePerson(Personperson){ Useruser=getCurrentUser(); LogInformationlogInformation=newLogInformation(); logInformation.setCreateBy(user.getId()); logInformation.setCreateDate(getCurretTime()); logInformation.setLastUpdateBy(user.getId()); logInformation.setLastUpdateDate(getCurretTime()); person.setId(null); person.setLogInformation(logInformation); persist(person); } }

Created by Meruvian Education (Ind.version)

23

4.3.3 Buat class PersonService.java di package org.blueoxygen.servicepackageorg.blueoxygen.service; importjava.util.List; importorg.blueoxygen.entity.Person; /** *@authorNetyHerawaty * */ publicinterfacePersonService{ voidsavePerson(Personperson); voiddeletePerson(Personperson); PersongetPersonById(Stringid); longgetPersonCount(Stringfname,Stringlname); ListgetPersonList(Stringfname,Stringlname,intlimit,intpage); }

4.3.4 Buat class PersonServiceImpl.java di package org.blueoxygen.service.implpackageorg.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; /** *@authorNetyHerawaty * */ @Service @Transactional(readOnly=true) publicclassPersonServiceImplimplementsPersonService{ @Autowired privatePersonDaopersonDao; @Transactional publicvoidsavePerson(Personperson){ personDao.savePerson(person); } @Transactional publicvoiddeletePerson(Personperson){ personDao.remove(person); } publicPersongetPersonById(Stringid){ returnpersonDao.getById(Person.class,id); }

Created by Meruvian Education (Ind.version)

24

publiclonggetPersonCount(Stringfname,Stringlname){ returnpersonDao.getPersonCountByCriteria(fname,lname); } @Override publicListgetPersonList(Stringfname,Stringlname,intlimit, intpage){ returnpersonDao.getPersonByCriteria(fname,lname,limit,page); } }

4.3.5 Buat class PersonController.java di package org.blueoxygen.controllerpackageorg.blueoxygen.controller; importjava.text.ParseException; importjava.text.SimpleDateFormat; importjavax.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; publicclassPersonControllerextendsCimandeModuleAction{ @Autowired privatePersonServicepersonService; privatePersonperson=newPerson(); privateintlimit=0; privateintpage=0; SimpleDateFormatdf=newSimpleDateFormat("ddMMyy"); publicPersonController(){ model.put("person",person); } //POST/module/person/create //POST/module/person/create/{id} @Validations(requiredStrings={ @RequiredStringValidator(fieldName="person.fname",message="FirstNamecannotbeempty", trim=true), @RequiredStringValidator(fieldName="person.lname",message="LastNamecannotbeempty", trim=true)}) publicStringpersonPost(){ try{ person.setBirthdate(df.parse(model.get("birthdate").toString())); }catch(ParseExceptione){ //TODOAutogeneratedcatchblock e.printStackTrace(); } personService.savePerson(person); } returnSUCCESS;

Created by Meruvian Education (Ind.version)

25

//GET/module/person/create //GET/module/person/edit/{id} publicStringpersonGet(){ model.put("person",personService.getPersonById(person.getId()+"")); //model.put("itemCategorys",itemCategoryService.getAllItemCategory()); returnINPUT; } //DELETE/module/person/edit/{id} publicStringpersonDelete(){ personService.deletePerson(personService.getPersonById(person.getId())); } returnSUCCESS;

//POST/GET/module/person/filter publicStringfilter(){ try{ limit=model.get("rows")==null?0:newInteger(model.get( "rows").toString()); page=model.get("page")==null?0:newInteger(model .get("page").toString()); }catch(NumberFormatExceptione){ 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); returnSUCCESS; } }

Created by Meruvian Education (Ind.version)

26

4.4 Pembuatan View atau TampilanPembuatan kode untuk view atau tampilan di simpan di dalam package src/main/resources/module/template/person

4.4.1Buat view person-create.vm PersonCreate #sjhead("ajaxcache=true""jquerytheme=lightness" "loadFromGoogle=false" "jqueryui=true") #shead

"label=FirstName") "label=LastName")

Sex #stextfield("name=person.lname""size=25" #stextfield("name=person.fname""size=25"

Male Female

BirthDate #sjdatepicker("name=person.birthdate" "changeYear=true""displayFormat=ddmmyy" #end

"showOn=both""changeMonth=true" "buttonImageOnly=true")

class="label">Address

Country: #foreach($cin$personCountries)