Pada kesempatan kali ini, penulis akan menunjukkan cara melakukan Pengurutan (Sortir) Object Query di dalam database Db4o.
Misalkan dalam suatu DBMS terdapat table Barang seperti berikut:
Dari table tersebut, akan diurutkan berdasarkan Nama barang dan Harga secara Ascending dan Descending.
Karena kita menggunakan Object Database Db4o maka tabel tersebut dibuat sebagai suatu Class.
Berikut ini kode program dari Class Barang (dari Bagian I):
- package barang;
- /**
- *
- @author team_dakoop
- */
- public class Barang {
- String KodeBarang;
- String NamaBarang;
- String Jenis;
- double HargaSatuan;
- String Supplier;
-
- public Barang(String kd,String nm, String jns,
- double hrg, String sup){
- this.KodeBarang = kd;
- this.NamaBarang = nm;
- this.Jenis =jns;
- this.HargaSatuan =hrg;
- this.Supplier = sup;
- }
- public String getKodeBarang(){
- return KodeBarang;
- }
- public String getNamaBarang(){
- return NamaBarang;
- }
- public String getJenis(){
- return Jenis;
- }
- public double getHarga(){
- return HargaSatuan;
- }
- public String getSupplier(){
- return Supplier;
- }
- public String toString(){
- return KodeBarang+"/"+NamaBarang+"/"+Jenis+"/"+
- String.valueOf(HargaSatuan)+"/"+Supplier;
- }
- }
Buat desain form seperti yang terlihat pada gambar berikut, pada form (JFrame1) terdapat komponen-komponen sebagai berikut:
- JRadioButton (4 buah)
- JButtonGroup (2 buah)
- JPanel (2 buah)
- JButton (1 buah)
- JTabel (1 buah)
Pada project kali ini penulis menggunakan ketentuan nama komponen sebagai berikut untuk memudahkan pemahaman dalam pembuatan kode program.
Komponen | Text | Name |
JRadioButton1 | Ascending | optAsc |
JRadioButton2 | Descending | optDsc |
JRadioButton3 | Nama Barang | optNama |
JRadioButton4 | Harga Satuan | optHarga |
JFrame1 | Aplikasi Barang | FrmBarang |
JButton1 | Tampil | cmdTampil |
Jika komponen JButtonGroup sudah diletakkan pada form (setelah peletakan ke form tidak akan terlihat, namun pada bagian Inspector akan kelihatan) maka klik pada komponen optAsc dan optDsc kemudian pada properties cari button group kemudian ubah menjadi buttonGroup1. begitu juga untuk komponen optNama dan optHarga.
Setelah anda mengubah nama setiap komponen maka sekarang saatnya masuk pada proses Coding.
Dibawah package anda ketikkan perintah import berikut untuk menggunakan object database Db4o dan unit-unit lainnya.
- package appbarang;
- /**
- *
- * @author team_dakoop
- */
- import com.db4o.*;
- import com.db4o.query.*;
- import java.io.File;
Kemudian buat sebuah procedure untuk menginsert data ke dalam object database, kode programmnya sebagai berikut:
- public static void InsertData(){
- new File("Barang.yap").delete();
- ObjectContainer db = Db4o.openFile("Barang.yap");
- Barang barang1 = new Barang("M33",
- "Mie Goreng Ayam","Mie",1200,"Fastfood");
- Barang barang2 = new Barang("S03",
- "Sun Silk","Shampo",6500,"UniClean");
- Barang barang3 = new Barang("M11",
- "Mie Goreng Ayam","Mie",1000,"FlyFood");
- Barang barang4 = new Barang("K31",
- "Kopi cap API","Kopi",2700,"Obor");
- Barang barang5 = new Barang("T01",
- "Teh Aroma Wangi","Teh",4500,"UniClean");
- Barang barang6 = new Barang("M02",
- "Soto Mie","Mie",1100,"Fastfood");
- Barang barang7 = new Barang("M51",
- "Mie Kari","Mie",1300,"FlyFood");
- Barang barang8 = new Barang("K21",
- "Kopi cap Wangi","Kopi",7500,"Uniclean");
- Barang barang9 = new Barang("T05",
- "Teh T-Melati","Teh",5500,"Obor");
- Barang barang10 = new Barang("M82",
- "Mie Bakso","Mie",1200,"Fastfood");
- db.set(barang1);db.set(barang2);
- db.set(barang3);db.set(barang4);
- db.set(barang5);db.set(barang6);
- db.set(barang7);db.set(barang8);
- db.set(barang9);db.set(barang10);
- db.close();
- System.out.println("Data Barang
- sudah tersimpan pada Object Database");
- }
Kemudian ketikkan lagi sebuah procedure yang gunanya untuk menampilkan record-record ke dalam tabel grid.
- private void ShowTable(){
- ObjectContainer db = Db4o.openFile("Barang.yap");
- try
- {
- Query qry = db.query();
- qry.constrain(Barang.class);
- ObjectSet res = qry.execute();
- Object[][] x = new Object[res.size()][6];
- jTable1.setModel(
- new javax.swing.table.DefaultTableModel
- (x, new String []
- {"Kode Barang","Nama Barang","Jenis",
- "Harga Satuan","Supplier"}));
- int y=0;
- while (res.hasNext())
- {
- Barang b = (Barang) res.next();
- jTable1.setValueAt(b.getKodeBarang() ,y,0);
- jTable1.setValueAt(b.getNamaBarang() ,y,1);
- jTable1.setValueAt(b.getJenis() ,y,2);
- jTable1.setValueAt(String.valueOf(
- b.getHarga()) ,y,3);
- jTable1.setValueAt(b.getSupplier() ,y,4);
- y++;
- }
- }
- finally
- {
- db.close();
- }
- }
Nah, satu lagi procedure yang sebenarnya pengembangan dari procedure sebelumnya, yaitu digunakan untuk menampilkan tabel hasil sortir. Kode programnya sebagai berikut:
- private void SortTable(){
- ObjectContainer db = Db4o.openFile("Barang.yap");
- try
- {
- Query qry = db.query();
- qry.constrain(Barang.class);
- if (optNama.isSelected() == true ){
- if (optAsc.isSelected() == true){
- qry.descend(
- "NamaBarang").orderAscending();
- }
- else
- {
- qry.descend(
- "NamaBarang").orderDescending();
- }
- }
- else
- {
- if (optAsc.isSelected() == true){
- qry.descend(
- "HargaSatuan").orderAscending();
- }
- else
- {
- qry.descend(
- "HargaSatuan").orderDescending();
- }
- }
- ObjectSet res = qry.execute();
- Object[][] x = new Object[res.size()][6];
- jTable1.setModel(
- new javax.swing.table.DefaultTableModel
- (x, new String []
- {"Kode Barang","Nama Barang","Jenis",
- "Harga Satuan","Supplier"}));
- int y=0;
- while (res.hasNext())
- {
- Barang b = (Barang) res.next();
- jTable1.setValueAt(b.getKodeBarang() ,y,0);
- jTable1.setValueAt(b.getNamaBarang() ,y,1);
- jTable1.setValueAt(b.getJenis() ,y,2);
- jTable1.setValueAt(String.valueOf(
- b.getHarga()) ,y,3);
- jTable1.setValueAt(b.getSupplier() ,y,4);
- y++;
- }
- }
- finally
- {
- db.close();
- }
- }
Setelah procedure tersebut dibuat maka saatnya kita masuk ke tombol Tampil. Ketikkan kode program berikut :
- private void cmdTampilActionPerformed(
- java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- SortTable();
- }
Nah, sekarang pada program utama yaitu di file main.java, tambahkan kode program seperti tampak berikut:
- package appbarang;
- /**
- *
- * @author team_dakoop
- */
- public class Main {
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- // TODO code application logic here
- new FrmBarang().setVisible(true);
- }
- }
Penjelasan mengenai Sortir pada Object Database Db4o
Sortir pada Object Db4o dapat menggunakan Object Query SODA API yang telah disediakan oleh Db4o. Adapun penulisannya sebagai berikut:
Sort secara Ascending
- Query query=db.query();
- query.constrain(NamaClass.class);
- query.descend("NamaAtribut").orderAscending();
- ObjectSet result=query.execute();
Sort secara Descending
- Query query=db.query();
- query.constrain(NamaClass.class);
- query.descend("NamaAtribut").orderDescending();
- ObjectSet result=query.execute();
Hasil Output program:
Referensi
Db4o-5.2 Tutorial, db4objects Inc., USA
Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta