Tutorial Belajar Grails Part 5: CRUD Controller

Berlanjut dari artikel sebelumnya pada part 4, kali ini kita ingin mengetahui apa yang ada dibalik dynamic scaffolding, grails menyediakan script yang akan mengenerate code dibalik magic dari dynamic scaffolding. Menggunakan terminal, kita arahkan directory pada root project kita lalu masukkan command berikut,

grails generate-all “*”

Setelah command tersebut dijalankan maka grails telah mengenerate semua code dibalik dynamic scaffolding tersebut. Termasuk view dari fitur-fitur yang dihasilkan oleh dynamic scaffolding akan digenerate juga.

grails5

Dapat kita lihat grails mengenerate view untuk fitur create, edit, list, show dan juga form untuk tiap modelnya. Grails menggunakan Groovy Server Pages(GSP) untuk menampilkan view yang dibutuhkan. Anda dapat melihat code yang dihasilkan dari dynamic scaffolding pada bagian controller, unit testing, view. Kita dapat memodifikasi code tersebut sesuai dengan kebutuhan kita. Namun untuk yang baru saja belajar grails, tentunya bukan hal yang mudah untuk memahami dan memodifikasi code yang sudah dihasilkan oleh dynamic scaffolding. Oleh sebab itu pada bagian berikutnya kita akan membuat fitur-fitur yang dihasilkan oleh dynamic scaffolding secara manual dari awal tanpa menggunakan dynamic scaffolding.

Sekarang kita akan membuat controller yang berisi fitur-fitur dari dyanamic scaffolding secara manual. Kembali ke aplikasi Event Organizer yang telah kita buat pada bagian sebelumnya, sebagai contoh kita akan menambahkan fitur Create, Read, Update, Delete(CRUD) secara sederhana untuk domain class EOUser. Kita buka EOUserController lalu kosongkan class tersebut seperti berikut

class EOUserController {
}

Setelah kita kosongkan, sekarang kita akan membutuhkan 5 method untuk CRUD.

  1. Method index

Method index kita gunakan untuk menampilkan semua user yang ada, berikut isi method index()

def index() {
    def users = EOUser.list()
    [listUser : users]
}

Dalam method tersebut kita akan mengambil semua record EOUser lalu memasukkannya dalam field users. Setelah itu akan kita return map yang berisi list dari user. Lagi-lagi grails sudah menyediakan method list() untuk mengambil semua record EOUser.

  1. Method save

Kita mulai dengan method Save. Akan kita tambahkan method sederhana untuk fitur Create seperti dibawah,

def save(){
    def user = new EOUser(params)
    user.save()
    redirect(action:’index’)
}

Method save yang kita buat cukup sederhana, kita akan membuat object dari domain class EOUser dengan parameter “params”. Pada grails kita bisa menggunakan “params” untuk menerima request parameter dari client dengan bentuk tipe data map. Setelah itu kita akan memanggil method save() yang telah disediakan oleh grails tanpa harus repot-repot membuat method save() sendiri. Lalu redirect kita gunakan untuk kembali ke method index pada controller yang sama

  1. Method delete

Untuk method delete kita akan menerima parameter id, sehingga nantinya kita akan melakukan delete berdasarkan dari id yang diterima. Berikut merupakan codenya

def delete(Long id){
    def user = EOUser.findById(id)
    user.delete()
    redirect(action: 'index')
}

Dapat kita lihat setelah id diterima, kita akan mencari user yang sesuai menggunakan fitur dynamic finder pada grails tanpa kita deklarasikan method findById(id), grails sudah menyediakannya untuk kita gunakan. Mungkin yang pernah berurusan dengan spring data repositories sudah tidak asing lagi dengan method tersebut. Setelah itu kita panggil method delete() dan user akan terhapus sudah.

  1. Method edit

Method edit kita gunakan untuk mengambil user berdasarkan id yang diterima. Berikut isi code edit,

def edit(Long id){
    def user = EOUser.findById(id)
    [eouser:user]
}

Code tersebut juga memanfaatkan dynamic finder dari grails lalu mengembalikan hasilnya dengan tipe data map.

  1. Method update
def update(Long id){
    def user = EOUser.findById(id)
    user.properties = params
    user.save()
    redirect(action: 'index')
}

Method update digunakan untuk mengupdate record user yang sudah ada. Parameter yang diterima yaitu id, lalu menggunakan dynamic finder akan kita get user berdasarkan id. Setelah itu set properties dengan requast params yang kita terima dari view. Setelah itu dilakukan save() dan redirect ke method index().

Pada bagian berikutnya kita akan membuat view yang diperlukan untuk method-method yang telah kita buat sehingga fitur CRUD dapat berjalan seutuhnya.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s