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