Lingkungan Implementasi Implementasi Basis Data

51

BAB IV IMPLEMENTASI SISTEM

4.1. Lingkungan Implementasi

Pada bagian ini akan dijelaskan mengenai spesifikasi handphone pada gambar 4.1 yang akan digunakan dalam implementasi sistem kali ini. Gambar 4.1. Spesifikasi Handphone Nokia 7610 Selain handphone, perangkat lain yang digunakan untuk implementasi sistem yaitu laptop dengan spesifikasi berikut: Perangkat Keras: - Intel Centrino Core Duo 1.66 GHZ RAM 1 GB Perangkat Lunak: - Microsoft Windows XP SP2 - Java Development Kit 6 Update 2 - J2ME Wireless ToolKit 2.2

4.2. Implementasi Basis Data

Pada tahap ini akan dibahas mengenai implementasi basis data dari perancangan yang telah dibahas sebelumnya. Berbeda dengan pemrograman database pada aplikasi web maupun desktop, pada pemrograman java midlet tidak dikenal adanya penyimpanan data ke dalam file. Untuk menyimpan data, pemrograman java midlet menyediakan suatu mekanisme penyimpanan data secara persisten tetap di memori device bersangkutan, yang berupa kumpulan-kumpulan record. Mekanisme penyimpanan data seperti ini dinamakan dengan Record Management System RMS. Untuk menggunakan mekanisme ini aplikasi harus meng-import class dari paket javax.microedition.rms. Pada perancangan yang telah dibuat sebelumnya, terdapat 5 tabel yang akan digunakan oleh aplikasi, namun terdapat 2 tabel yang tidak akan digunakan untuk operasi insert, update, dan delete melainkan hanya dilakukan operasi select saja, yaitu: tabel konversi singkatan kata ke biner dan tabel konversi huruf ke biner. Karena data-data pada dua tabel ini nantinya akan sering diakses oleh sistem, dalam hal ini proses kompres dan dekompres, maka 2 tabel ini tidak disimpan di memori, tetapi akan disimpan dalam array yang dideklarasikan dari suatu class agar proses pembacaan data dapat dilakukan dengan cepat. Tabel konversi huruf akan direpresentasikan dengan 1 satu buah array yang menyimpan hasil konversi biner dan indeks dari array tersebut bernilai nomor karakter sesuai urutan pada kode ASCII. Sedangkan implementasi dari 3 tiga tabel lainnya yaitu dengan cara menyimpannya pada memori device bersangkutan melalui method-method yang tersedia pada class RMS. Berikut penjelasan dari script-script yang digunakan untuk implementasi dari 5 lima tabel tersebut: file name Language.java package com.farid.costfix.net; import javax.microedition.rms.; RecordStore rs = RecordStore.openRecordStoreLanguage, true; byte[] temp = null; ByteArrayInputStream bais; ByteArrayOutputStream baos = new ByteArrayOutputStream; DataInputStream dis; DataOutputStream dos = new DataOutputStreambaos; void cekBahasa { RecordEnumerasion re = rs.enumerateRecordsnull, null, false; while re.hasNextElement { int i = re.nextRecordId; temp = rs.getRecordi; bais = new ByteArrayInputStreamtemp; dis = new DataInputStreambais; String nama = dis.readUTF; } ifnama.equals1 costfix.cekLanguage=1; else ifnama.equals2 costfix.cekLanguage=2; } void simpanBahasa { re = rs.enumerateRecordsnull, null, false; while re.hasNextElement { int i = re.nextRecordId; rs.deleteRecordi; } dos.writeUTF+costfix.cekLanguage; temp = baos.toByteArray; rs.addRecordtemp, 0, temp.length; } Gambar 4.2. Script Implementasi Tabel Konfigurasi Bahasa Pembuatan tabel untuk menyimpan konfigurasi bahasa dimulai dengan pembacaan terhadap record dengan judul Language dengan menggunkan method RecordStore.openRecordStoreLanguage,true. Hasil dari pembacaan ini akan disimpan pada variable rs yang berupa objek dari class RecordStore. Setelah proses pembacaan judul record selesai, proses selanjutnya yang dapat dilakukan adalah proses untuk mengetahui konfigurasi bahasa terakhir yang tersimpan dengan method cekBahasa dan menyimpan konfigurasi bahasa baru dengan method simpanBahasa. file name inbox.java package com.farid.costfix.net; import javax.microedition.rms.; RecordStore rs = RecordStore.openRecordStoreinbox, true; byte[] temp = null; ByteArrayInputStream bais; ByteArrayOutputStream baos = new ByteArrayOutputStream; DataInputStream dis; DataOutputStream dos = new DataOutputStreambaos; void tambahRecordString no, String Pesan,String tgl,String stat { dos.writeUTFno; dos.writeUTFPesan; dos.writeUTFtgl; dos.writeUTFstat; temp = baos.toByteArray; rs.addRecordtemp, 0, temp.length; } void hapusRecordString not, String Tgl { boolean ok = true; re = rs.enumerateRecordsnull, null, false; while re.hasNextElement ok == true { int i = re.nextRecordId; temp = rs.getRecordi; String noTelp = dis.readUTF; String isiPesan = dis.readUTF; String tgl = dis.readUTF; String stat = dis.readUTF; if noTelp.equalsnottgl.equalsTgl { rs.deleteRecordi; re.rebuild; ok = false; } } } void updateRecordString not, String isiPesan, String Tgl { hapusRecordnot,Tgl; tambahRecordnot,isiPesan,Tgl,sudah; } void showInbox { while re.hasNextElement { String noTelp = dis.readUTF; String isiPesan = dis.readUTF; String tgl = dis.readUTF; String stat = dis.readUTF; ifstat.equalssudah listInbox.appendnoTelp, imgMailOpen; else ifstat.equalsbelum listInbox.appendnoTelp, imgMailClose; } } Gambar 4.3. Script Implementasi Tabel Pesan Masuk Pembuatan tabel untuk menyimpan pesan masuk dimulai dengan pembacaan terhadap record dengan judul inbox dengan menggunkan method RecordStore.openRecordStoreinbox,true. Hasil dari pembacaan ini akan disimpan pada variable rs yang berupa objek dari class RecordStore. Setelah proses pembacaan judul record selesai, proses selanjutnya yang dapat dilakukan adalah proses pembacaan data dengan menggunakan method showInbox yang dibaca dengan menggunakan method dis.readUTF , sebelum hasil ditampilkan dicek dulu mana pesan yang sudah dibaca dan pesan yang belum dibaca berdasarkan status pesan, hal ini mempengaruhi icon yang akan ditampilkan pada daftar pesan masuk. Proses menambah record-record dengan menggunakan method tambahRecord yang menangkap parameter-parameter pesan masuk, kemudian parameter-parameter tersebut akan ditampung sementara dengan method dos.writeUTF pada variabel temp yang bertipe byte array. Kemudian isi data dari variabel temp akan dituliskan ke dalam memori device dengan menggunakan method rs.addRecordtemp, 0, temp.length. Proses menghapus record-record dimulai dengan pemanggilan sebuah method hapusRecord yang menangkap parameter unik yaitu nomor telepon pengirim dan tanggal pesan dikirimkan. Kemudian akan dilakukan pembacaan data dari awal sampai akhir sampai ketemu data yang akan dihapus, jika tidak ditemukan data yang akan dihapus akan dicari pada record berikutnya. Jika record berikutnya mengandung data yang akan dihapus maka akan dilakukan proses penghapusan dengan method rs.deleteRecord . Untuk proses update data dilakukan dengan memanggil method deleteRecord dan tambahRecord , biasanya proses ini dilakukan ketika membaca pesan agar tampilan icon berubah menjadi surat terbaca. file name outbox.java package com.farid.costfix.net; import javax.microedition.rms.; RecordStore rs = RecordStore.openRecordStoreoutbox, true; byte[] temp = null; ByteArrayInputStream bais; ByteArrayOutputStream baos = new ByteArrayOutputStream; DataInputStream dis; DataOutputStream dos = new DataOutputStreambaos; void tambahRecordString no, String Pesan,String tgl,String stat { dos.writeUTFno; dos.writeUTFPesan; dos.writeUTFtgl; dos.writeUTFstat; temp = baos.toByteArray; rs.addRecordtemp, 0, temp.length; } void hapusRecordString not, String Tgl { boolean ok = true; re = rs.enumerateRecordsnull, null, false; while re.hasNextElement ok == true { int i = re.nextRecordId; temp = rs.getRecordi; String noTelp = dis.readUTF; String isiPesan = dis.readUTF; String tgl = dis.readUTF; String stat = dis.readUTF; if noTelp.equalsnottgl.equalsTgl { rs.deleteRecordi; re.rebuild; ok = false; } } } void updateRecordString not, String isiPesan, String Tgl { hapusRecordnot,Tgl; tambahRecordnot,isiPesan,Tgl,sudah; } void showOutbox { while re.hasNextElement { String noTelp = dis.readUTF; String isiPesan = dis.readUTF; String tgl = dis.readUTF; String stat = dis.readUTF; ifstat.equalssudah listOutbox.appendnoTelp, imgMailOpen; else ifstat.equalsbelum listOutbox.appendnoTelp, imgMailClose; } } Gambar 4.4. Script Implementasi Tabel Pesan Keluar Pembuatan tabel untuk menyimpan pesan keluar dimulai dengan pembacaan terhadap record dengan judul outbox dengan menggunkan method RecordStore.openRecordStoreinbox,true. Hasil dari pembacaan ini akan disimpan pada variable rs yang berupa objek dari class RecordStore. Setelah proses pembacaan judul record selesai, proses selanjutnya yang dapat dilakukan adalah proses pembacaan data dengan menggunakan method showOutbox yang dibaca dengan menggunakan method dis.readUTF , sebelum hasil ditampilkan dicek dulu mana pesan yang sudah dibaca dan pesan yang belum dibaca berdasarkan status pesan, hal ini mempengaruhi icon yang akan ditampilkan pada daftar pesan masuk. Proses menambah record-record dengan menggunakan method tambahRecord yang menangkap parameter-parameter pesan keluar, kemudian parameter-parameter tersebut akan ditampung sementara dengan method dos.writeUTF pada variabel temp yang bertipe byte array. Kemudian isi data dari variabel temp akan dituliskan ke dalam memori device dengan menggunakan method rs.addRecordtemp, 0, temp.length. Proses menghapus record-record dimulai dengan pemanggilan sebuah method hapusRecord yang menangkap parameter unik yaitu nomor telepon penerima dan tanggal pesan dikirimkan. Kemudian akan dilakukan pembacaan data dari awal sampai akhir sampai ketemu data yang akan dihapus, jika tidak ditemukan data yang akan dihapus akan dicari pada record berikutnya. Jika record berikutnya mengandung data yang akan dihapus maka akan dilakukan proses penghapusan dengan method rs.deleteRecord . Untuk proses update data dilakukan dengan memanggil method deleteRecord dan tambahRecord , biasanya proses ini dilakukan ketika membaca pesan agar tampilan icon berubah menjadi surat terbaca. file name DataKata.java package com.farid.costfix.net; public class DataKata { static String bit[] = new String[32]; static String kata[] = new String[32]; public DataKata public DataKata constructor { bit[0] = 11001; kata[0]=aq; bit[1] = 11111; kata[1]=km; bit[2] = 11110; kata[2]=yg; bit[3] = 11101; kata[3]=kt; bit[4] = 11010; kata[4]=sy; bit[5] = 11000; kata[5]=lm; bit[6] = 10110; kata[6]=jg; bit[7] = 10111; kata[7]=in; bit[8] = 10000; kata[8]=ap; bit[9] = 10001; kata[9]=mo; bit[10] = 01101; kata[10]=klo; bit[11] = 01110; kata[11]=qm; bit[12] = 01100; kata[12]=tp; bit[13] = 011001; kata[13]=btw; bit[14] = 01000; kata[14]=lg; bit[15] = 00111; kata[15]=jk; bit[16] = 00101; kata[16]=dr; bit[17] = 00100; kata[17]=mkn; bit[18] = 00011; kata[18]=coz; bit[19] = 000000; kata[19]=gpl; bit[20] = 111001; kata[20]=knp; bit[21] = 101011; kata[21]=syg; bit[22] = 101010; kata[22]=untk; bit[23] = 010110; kata[23]=plg; bit[24] = 001101; kata[24]=jgn; bit[25] = 000011; kata[25]=dgn; bit[26] = 01111; kata[26]=mlm; bit[27] = 01010; kata[27]=hrs; bit[28] = 1110000; kata[28]=bsk; bit[29] = 011000; kata[29]=dmn; bit[30] = 11100011; kata[30]=utk; bit[31] = 010111; kata[31]=bls; } } Gambar 4.5. Script Implementasi Tabel Konversi Singkatan Kata Ke Biner Tabel konversi singkatan kata ke biner diimplementasikan pada sebuah class yang terdiri dari 2 dua buah array bertipe string yang salah satu array digunakan untuk menyimpan singkatan kata yang sering dipakai dan array lainnya digunakan untuk menyimpan data biner hasil konversi kata tersebut. file name DataHuruf.java package com.farid.costfix.net; public class DataHuruf { static String kar[] = new String[128]; public DataHuruf { kar[32] = 01001; spasi kar[49] = 1110001; 1 kar[50] = 1110010; 2 kar[51] = 1110011; 3 kar[52] = 1110100; 4 kar[53] = 1110101; 5 kar[54] = 1110110; 6 kar[55] = 1110111; 7 kar[56] = 1111000; 8 kar[57] = 1111001; 9 kar[63] = 1100010; ? kar[64] = 1111010; kar[65] = 1000000; A kar[66] = 10000101; B kar[67] = 1001101; C kar[68] = 10001011; D kar[70] = 10010110; F kar[71] = 10010101; G kar[72] = 1001000; H kar[73] = 1000001; I kar[74] = 11111010; J kar[76] = 1000111; L kar[97] = 0111; a kar[98] = 000101; b kar[99] = 01101; c kar[100] = 001011; d kar[101] = 1010; e kar[102] = 011001; f kar[103] = 010101; g kar[104] = 01000; h kar[105] = 1011; i kar[106] = 100111; j kar[107] = 01100011; k kar[108] = 000100; l kar[109] = 00110; m kar[110] = 010100; n kar[111] = 00000; o kar[112] = 010110; p kar[114] = 00111; r kar[115] = 00011; s kar[116] = 00001; t kar[117] = 010111; u kar[118] = 1100111; v kar[119] = 00101000; w kar[121] = 00100; y tidak semua ditampilkan selengkapnya lihat lampiran } } Gambar 4.6. Script Implementasi Tabel Konversi Huruf Ke Biner

4.3. Implementasi Proses Latar