Aplikasi ini terdiri dari 2 bagian, yaitu sisi klien dan sisi server. Sisi client, yang diberikan pada bagian I ini, dibuat dengan menggunakan Java 5.0 dan WTK 2.0, sedangkan bagian server, dibuat dengan menggunakan
ASP.
Aplikasi client nantinya akan di-deploy ke dalam ponsel dalam bentuk midlet, sedangkan aplikasi server diletakkan pada server internet.
Untuk memudahkan pemahaman, hanya ada 1 kelas java, yaitu
class bioskop. Cara kerjanya sbb:
- User menjalankan midlet dan menuju ke menu utama yg berisi pilihan untuk melihat informasi film, jadwal film, dan melakukan transaksi ticketing.
- Jika menu info film dan jadwal film dipilih, aplikasi akan melakukan koneksi ke aplikasi server via internet dengan menggunakan metode koneksi StreamConnection. Metode ini dipilih krn pengimplementasiannya cukup sederhana dan mudah dipahami. Cara lain yg dapat digunakan adalah metode HTTPConnection. Pada saat koneksi berlangsung, server akan mengirimkan output berupa info/jadwal film yg diminta ke client. Selanjutnya client akan memproses output tsb dan menampilkan hasilnya ke layar ponsel.
- Apabila menu transaksi yg dipilih, user akan melakukan pengisian sejumlah form. Stl itu, aplikasi client akan melakukan koneksi ke server untuk men-trigger proses update pada database yang terdapat di server internet. Status transaksi akan dikembalikan oleh server ke client dan ditampilkan ke layar ponsel.
- Selesai :d
Berikut ini source code dari bioskop.java. Lumayan panjang ) tapi baru 900 baris kok, belum nyampe 1000 :p Kalo ada error, dicoba dibenerin sendiri yeeee :p[##] [##] [##] [##] [##] Biar semangat, ayo nari dulu bareng Spongebob!!! [##] [##] [##] [##] [##[java]//nama kelas : bios//nama file : bioskop.java
//author : cosa aranda & christina fdl
//import paket yang diperlukan
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.microedition.rms.*;
import java.io.*;
import java.util.Vector;
import java.util.Date;
public class bioskop extends MIDlet implements Runnable, CommandListener {
//deklarasi variabel
private Display display; //interface tampilan
private List menu; //menu untuk tampilan yg menggunakan pilihan menu
private Form form; //form untuk tampilan yg tidak menggunakan pilihan menu
private Ticker ticker; //teks berjalan di bagian atas layar
private Command cmdBack, cmdOK, cmdExit, cmdAbout; //command di bagian bawah layar
//cmdBack untuk kembali ke tampilan sebelumnya
//cmdOK untuk proses form
//cmdExit untuk keluar dari
program
//cmdAbout untuk menampilkan informasi
program
private TextField txtNama,txtAlamat,txtNoKTP,txtJumlah,txtTransaksi; //textfield pada form
private ChoiceGroup group; //radiobutton pada form
private StringItem strStatus,strMemo; //stringitem pada form
private DateField tanggal; //tanggal pada form
private String currentWindow; //menyimpan lokasi tampilan yg aktif saat ini (menu/form)
private Vector dataTemp; //array penyimpanan sementara
//untuk feedback dari koneksi ke server
private String strTemp; //string penyimpanan sementara
private Thread thread; //thread untuk proses koneksi ke server
private RecordStore
database; //database rms untuk menyimpan id transaksi
//konstruktor class – dijalankan pertama kali
public bioskop() {
//arahkan variabel display supaya mengacu pada layar program
display = Display.getDisplay(this);
//inisialiasi command – prioritas 0 di kanan bawah, prioritas 1 di kiri bawah
cmdBack = new Command(”Kembali”,Command.BACK,1);
cmdExit = new Command(”Keluar”,Command.STOP,1);
cmdOK = new Command(”OK”,Command.OK,0);
cmdAbout = new Command(”Tentang”,Command.SCREEN,0);
}
//dijalankan saat program dijalankan
public void startApp() {
//siapkan datatabase rms
bukaDatabase();
//tampilkan menu utama
menuUtama();
}
//dijalankan saat program dipause
public void pauseApp() {
//display = null;
//menu = null;
}
//dijalankan saat program ditutup
public void destroyApp(boolean b) {
notifyDestroyed();
}
//destruktor class – dijalankan saat keluar program, akan mentrigger fungsi destroyApp
private void keluar() {
try {
//tutup database
tutupDatabase();
//jika sukses, tutup program
this.destroyApp(true);
} catch(NullPointerException e) { //ignore jika ada error, tetap tutup program
this.destroyApp(true);
}
}
//fungsi untuk melakukan koneksi ke internet dengan menggunakan StreamConnection
//digunakan untuk mengambil
data dari web atau mengirim
data form dengan metode GET
//input : alamat URL yang akan diakses
//output : array dataTemp berisi output
private void openURL(String URLSite) {
//deklarasi dan inisialiasi variabel koneksi
StreamConnection con = null;
InputStream in = null;
//stringbuffer – penyimpanan sementara untuk output
StringBuffer data = new StringBuffer();
//kosongkan array dataTemp
dataTemp = new Vector();
try {
//lakukan koneksi ke URLSite
con = (StreamConnection)Connector.open(URLSite);
//buka input stream
in = con.openInputStream();
int ch;
//baca output dari input stream karakter per karakter hingga output habis
//ch menampung karakter yang saat ini sedang dibaca (in.read())
//jika output sudah habis, ch akan bernilai -1
while ((ch=in.read()) != -1) {
//jika ch <> “|”
if (ch!=’|') {
//tambahkan ch ke dalam string penyimpanan sementara (stringbuffer)
data.append((char)ch);
} else if (ch==’|') { //jika ch = “|”
//tambahkan stringbuffer ke dalam array dataTemp
dataTemp.addElement(data.toString());
//kosongkan kembali stringbuffer
data = new StringBuffer();
}
}
//jika output habis, tambahkan stringbuffer ke dalam array dataTemp
dataTemp.addElement(data.toString());
} catch (IOException e) {
formError(”Ada kesalahan!”);
}
}
//fungsi untuk membuat tampilan menu utama
private void menuUtama() {
//simpan lokasi tampilan
currentWindow = “menuUtama”;
//set tulisan pada ticker
ticker = new Ticker(”Selamat Datang di Bioskop Online”);
//siapkan menu
menu = new List(”Menu Utama”,Choice.IMPLICIT);
//tambahkan pilihan menu
menu.append(”Info Film”,null);
menu.append(”Jadwal Film”,null);
menu.append(”Pesan Tiket”,null);
//tambahkan command
menu.addCommand(cmdExit); menu.addCommand(cmdAbout);
//tempelkan ticker ke menu
menu.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
menu.setCommandListener(this);
//tampilkan menu ke layar
display.setCurrent(menu);
}
//fungsi untuk membuat tampilan menu Info Film
private void menuInfo () {
//simpan lokasi tampilan
currentWindow = “menuInfo”;
//set tulisan pada ticker
ticker = new Ticker(”Informasi dan Sinopsis Film”);
menu = new List(”Menu Info Film”,Choice.IMPLICIT);
//karena ada pengkasesan ke internet (baca judul film – movie.asp), siapkan thread
if (thread==null) {
thread = new Thread(this);
}
//jalankan thread
thread.start();
//tambahkan command
menu.addCommand(cmdBack);
//tempelkan ticker ke menu
menu.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
menu.setCommandListener(this);
//tampilkan menu ke layar
display.setCurrent(menu);
}
//fungsi untuk membuat tampilan form Info Film
private void formInfo(String title) {
//simpan lokasi tampilan
currentWindow = “formInfo”;
//set tulisan pada ticker
ticker = new Ticker(”Informasi dan Sinopsis Film”);
form = new Form(title);
//karena ada pengkasesan ke internet (baca informasi film – movie.asp?movie=judulfilm), siapkan thread
if (thread==null) {
thread = new Thread(this);
}
//jalankan thread
thread.start();
//tambahkan command
form.addCommand(cmdBack);
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan form Jadwal Film
private void formJadwal() {
//simpan lokasi tampilan
currentWindow = “formJadwal”;
//set tulisan pada ticker
ticker = new Ticker(”Jadwal Pemutaran Film Hari Ini”);
form = new Form(”Jadwal Hari Ini”);
//karena ada pengkasesan ke internet (baca jadwal film – jadwal.asp), siapkan thread
if (thread==null) {
thread = new Thread(this);
}
//jalankan thread
thread.start();
//tambahkan command
form.addCommand(cmdBack);
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan menu Pesan Tiket
private void menuPesan() {
//simpan lokasi tampilan
currentWindow = “menuPesan”;
//set tulisan pada ticker
ticker = new Ticker(”Pemesanan Tiket Bioskop Online”);
menu = new List(”Pesan Tiket”,Choice.IMPLICIT);
menu.append(”Pesan”,null);
menu.append(”Batal”,null);
menu.append(”History”,null);
//tambahkan command
menu.addCommand(cmdBack); menu.addCommand(cmdOK);
//tempelkan ticker ke menu
menu.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
menu.setCommandListener(this);
//tampilkan menu ke layar
display.setCurrent(menu);
}
//fungsi untuk membuat tampilan form Pesan Tiket
private void formPesan() {
//simpan lokasi tampilan
currentWindow = “formPesan”;
//set tulisan pada ticker
ticker = new Ticker(”Pemesanan Tiket Bioskop Online”);
form = new Form(”Pemesanan Tiket”);
txtNama = new TextField(”Nama”,”",25,TextField.ANY);
txtAlamat = new TextField(”Alamat”,”",50,TextField.ANY);
txtNoKTP = new TextField(”No KTP”,”",20,TextField.ANY);
txtJumlah = new TextField(”Jumlah”,”",3,TextField.ANY);
group = new ChoiceGroup(”Studio / Waktu”,Choice.EXCLUSIVE);
tanggal = new DateField(”Tanggal”,DateField.DATE);
//karena ada pengkasesan ke internet (baca jadwal film – jadwal.asp), siapkan thread
if (thread==null) {
thread = new Thread(this);
}
//jalankan thread
thread.start();
form.append(txtNama); form.append(txtAlamat); form.append(txtNoKTP);
form.append(tanggal); form.append(group); form.append(txtJumlah);
//tambahkan command
form.addCommand(cmdBack); form.addCommand(cmdOK);
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan proses Pesan Tiket
private void formPesankan() {
//simpan lokasi tampilan
currentWindow = “formPesankan”;
//set tulisan pada ticker
ticker = new Ticker(”Pemesanan Tiket Bioskop Online”);
form = new Form(”Proses Transaksi”);
strStatus = new StringItem(”Sedang proses…”,”");
strMemo = new StringItem(”",”");
txtTransaksi = new TextField(”ID Transaksi”,”",50,TextField.ANY);
//karena ada pengkasesan ke internet (simpan transaksi – pesan.asp), siapkan thread
if (thread==null) {
thread = new Thread(this);
}
//jalankan thread
thread.start();
form.append(strStatus); form.append(txtTransaksi); form.append(strMemo);
//tambahkan command
form.addCommand(cmdBack);
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan form Pembatalan Tiket
private void formBatal() {
//simpan lokasi tampilan
currentWindow = “formBatal”;
//set tulisan pada ticker
ticker = new Ticker(”Pembatalan Pemesanan Tiket Bioskop Online”);
form = new Form(”Pembatalan Tiket”);
//siapkan radiobutton untuk menampung daftar ID transaksi yang di-load di fungsi ambilDatabase()
group = new ChoiceGroup(”ID Transaksi”,Choice.EXCLUSIVE);
//ambil catatan ID transaksi dari database rms
ambilDatabase();
//strTemp berisi ID transaksi yang terakhir dibaca dari database rms
//jika kosong, berarti tidak ada catatan transaksi dalam database
if (strTemp.equals(”")) { //tidak ada catatan transaksi dalam database
form.append(”Tidak ada catatan transaksi pemesanan tiket”);
//tambahkan command
form.addCommand(cmdBack);
} else { //ada catatan transaksi dalam database
txtNoKTP = new TextField(”No KTP”,”",20,TextField.ANY);
form.append(”Untuk membatalkan pemesanan tiket, pilih ID Transaksi yang ingin dibatalkan dan masukkan No KTP Anda”);
form.append(group);
form.append(txtNoKTP);
form.append(”Tekan OK untuk proses.”);
//tambahkan command
form.addCommand(cmdBack); form.addCommand(cmdOK);
}
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan form proses Pembatalan Tiket
private void formBatalkan() {
//simpan lokasi tampilan
currentWindow = “formBatalkan”;
//set tulisan pada ticker
ticker = new Ticker(”Pembatalan Pemesanan Tiket Bioskop Online”);
form = new Form(”Proses Pembatalan Transaksi”);
strStatus = new StringItem(”Sedang proses…”,”");
strMemo = new StringItem(”",”");
//karena ada pengkasesan ke internet (batalkan pemesanan tiket, batal.asp), siapkan thread
if (thread==null) {
thread = new Thread(this);
}
//jalankan thread
thread.start();
form.append(strStatus); form.append(strMemo);
//tambahkan command
form.addCommand(cmdBack);
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan form History Pemesanan Tiket
private void formHistory() {
//simpan lokasi tampilan
currentWindow = “formHistory”;
//set tulisan pada ticker
ticker = new Ticker(”History Pemesanan Tiket Bioskop Online”);
form = new Form(”History”);
//siapkan radiobutton untuk menampung daftar ID transaksi yang di-load di fungsi ambilDatabase()
group = new ChoiceGroup(”ID Transaksi”,Choice.EXCLUSIVE);
//ambil catatan ID transaksi dari database rms
ambilDatabase();
//strTemp berisi ID transaksi yang terakhir dibaca dari database rms
//jika kosong, berarti tidak ada catatan transaksi dalam database
if (strTemp.equals(”")) { //tidak ada catatan transaksi dalam database
form.append(”Tidak ada catatan transaksi pemesanan tiket”);
//tambahkan command
form.addCommand(cmdBack);
} else { //ada catatan transaksi dalam database
form.append(”Di bawah ini adalah ID Transaksi Anda”);
form.append(group);
form.append(”Tekan OK untuk menampilkan detail transaksi.”);
//tambahkan command
form.addCommand(cmdBack); form.addCommand(cmdOK);
}
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan form Detail History Pemesanan Tiket
private void formHistorykan() {
//simpan lokasi tampilan
currentWindow = “formHistorykan”;
//set tulisan pada ticker
ticker = new Ticker(”History Pemesanan Tiket Bioskop Online”);
form = new Form(”");
form.append(”ID Transaksi: ” + group.getString(group.getSelectedIndex()) + “n”);
//karena ada pengkasesan ke database (lihat detail transaksi – lihat.asp), siapkan thread
if (thread==null) {
thread = new Thread(this);
}
//jalankan thread
thread.start();
//tambahkan command
form.addCommand(cmdBack);
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan form About
private void formAbout() {
//simpan lokasi tampilan
currentWindow = “formAbout”;
//set tulisan pada ticker
ticker = new Ticker(”Tentang Bioskop Online”);
form = new Form(”Tentang”);
form.append(”Program Bioskop Online v1.0″);
form.append(”Dibuat oleh Christina F.D.L (00.41010.0004)”);
form.append(”J2ME + ASP (EditPlus, KToolbar, DreamweaverMX, Access)”);
//tambahkan command
form.addCommand(cmdBack);
//tempelkan ticker ke form
form.setTicker(ticker);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
//fungsi untuk membuat tampilan form Error
private void formError(String msg) {
//simpan lokasi tampilan
currentWindow = “formError”;
form = new Form(”Error!”);
form.append(msg);
//tambahkan command
form.addCommand(cmdBack);
//set CommandListener untuk mengacu pada fungsi CommandAction di class ini
//fungsi tsb dijalankan jika salah satu command / pilihan menu dipilih
form.setCommandListener(this);
//tampilkan form ke layar
display.setCurrent(form);
}
public void run() {
if(currentWindow.equals(”menuInfo”)) {
try {
openURL(”http://localhost/BioskopOnline/movie.asp”);
thread = null;
if (dataTemp.size()>0) {
for(int i=0;i
menu.append(dataTemp.elementAt(i).toString(),null);
}
menu.addCommand(cmdOK);
} else {
formError("Koneksi ke server gagal!");
}
} catch(Exception e) {
formError("Ada kesalahan!");
}
} else if (currentWindow.equals("formInfo")) {
try {
openURL("http://localhost/BioskopOnline/movie.asp?movie=" + form.getTitle().replace(' ','+'));
thread = null;
if (dataTemp.size()>0) {
form.append(”Jenis: ” + dataTemp.elementAt(0).toString() + “n”);
form.append(”Pemain: ” + dataTemp.elementAt(1).toString() + “n”);
form.append(”Sinopsis: ” + dataTemp.elementAt(2).toString() + “n”);
} else {
formError(”Koneksi ke server gagal!”);
}
} catch(Exception e) {
formError(”Ada kesalahan!”);
}
} else if (currentWindow.equals(”formJadwal”)) {
try {
openURL(”http://localhost/BioskopOnline/jadwal.asp”);
thread = null;
if (dataTemp.size()>0) {
int i = 0;
while(i
{
form.append("Studio " + dataTemp.elementAt(i).toString() + " - " +
dataTemp.elementAt(i+1).toString() + ": " +
dataTemp.elementAt(i+2).toString() + "n");
form.append("Kapasitas: " + dataTemp.elementAt(i+3).toString() +
"kursi, HTM: Rp " + dataTemp.elementAt(i+4).toString() + "n");
i = i+5;
}
} else {
formError("Koneksi ke server gagal!");
}
} catch(Exception e) {
formError("Ada kesalahan!");
}
} else if (currentWindow.equals("formPesan")) {
try {
openURL("http://localhost/BioskopOnline/jadwal.asp");
thread = null;
if (dataTemp.size()>0) {
int i = 0;
while(i
{
group.append("Studio " + dataTemp.elementAt(i).toString() + " - " +
dataTemp.elementAt(i+1).toString(),null);
i = i+5;
}
} else {
formError("Koneksi ke server gagal!");
}
} catch(Exception e) {
formError("Ada kesalahan!");
}
} else if (currentWindow.equals("formPesankan")) {
try {
System.err.println(tanggal.toString());
openURL("http://localhost/BioskopOnline/pesan.asp?nama=" + txtNama.getString().replace(' ','+')
+ "&alamat=" + txtAlamat.getString().replace(' ','+')
+ "&noktp=" + txtNoKTP.getString()
+ "&tanggal=" + tanggal.getDate()
+ "&jadwal=" + (group.getSelectedIndex()+1)
+ "&jumlah=" + txtJumlah.getString());
thread = null;
if (dataTemp.size()>0) {
System.err.println(dataTemp);
if(dataTemp.elementAt(0).toString().equals(”gagal”)) {
strStatus.setText(”gagal”);
strMemo.setText(”Koneksi gagal. Silahkan coba beberapa saat lagi”);
} else if (dataTemp.elementAt(0).toString().equals(”penuh”)) {
strStatus.setText(”gagal”);
strMemo.setText(”Kapasitas kursi tidak mencukupi”);
} else {
txtTransaksi.setString(dataTemp.elementAt(1).toString());
strStatus.setText(”sukses”);
strMemo.setText(”Simpan ID Transaksi di atas untuk konfirmasi pembelian tiket.” +
” Biaya yang harus Anda bayar adalah ” + dataTemp.elementAt(2).toString());
}
//save to rms
tambahDatabase(dataTemp.elementAt(0).toString());
} else {
formError(”Koneksi ke server gagal!”);
}
} catch(Exception e) {
formError(”Ada kesalahan!”);
}
} else if (currentWindow.equals(”formBatalkan”)) {
try {
openURL(”http://localhost/BioskopOnline/batal.asp?id=” + group.getString(group.getSelectedIndex()) + “&noktp=” + txtNoKTP.getString());
thread = null;
if (dataTemp.size()>0) {
strStatus.setText(dataTemp.elementAt(0).toString());
//remove from rms
hapusDatabase(group.getString(group.getSelectedIndex()));
strMemo.setText(”Transaksi telah dibatalkan dan catatan transaksi telah dihapus dari database.”);
} else {
formError(”Koneksi ke server gagal!”);
}
} catch(Exception e) {
formError(”Ada kesalahan!”);
}
} else if (currentWindow.equals(”formHistorykan”)) {
try {
openURL(”http://localhost/BioskopOnline/lihat.asp?id=” + group.getString(group.getSelectedIndex());
thread = null;
if (dataTemp.size()>0) {
form.append(”Nama: ” + dataTemp.elementAt(0).toString + “n”);
form.append(”Alamat: ” + dataTemp.elementAt(1).toString + “n”);
form.append(”No KTP: ” + dataTemp.elementAt(2).toString + “n”);
form.append(”Tanggal: ” + dataTemp.elementAt(3).toString + “n”);
form.append(”Jadwal: ” + dataTemp.elementAt(4).toString + “n”);
form.append(”Jumlah: ” + dataTemp.elementAt(5).toString + “n”);
form.append(”Biaya: ” + dataTemp.elementAt(6).toString + “n”);
} else {
formError(”Koneksi ke server gagal!”);
}
} catch(Exception e) {
formError(”Ada kesalahan!”);
}
}
}
public void commandAction(Command c,Displayable d) {
String label = c.getLabel();
if (c==cmdBack) {
if (currentWindow.equals(”formPesankan”)) {
menuPesan();
} else if (currentWindow.equals(”formBatalkan”)) {
menuPesan();
} else if (currentWindow.equals(”formHistorykan”)) {
menuPesan();
} else if (currentWindow.equals(”formInfo”)) {
menuInfo();
} else {
menuUtama();
}
} else if (c==cmdOK) {
if (currentWindow.equals(”formPesan”)) {
formPesankan();
} else if (currentWindow.equals(”formBatal”)) {
formBatalkan();
} else if (currentWindow.equals(”formHistory”)) {
formHistorykan();
}
} else if (c==cmdAbout) {
formAbout();
} else if (c==cmdExit) {
keluar();
} else { //menu
List currentmenu = (List)display.getCurrent();
if (currentWindow.equals(”menuUtama”)) {
switch(currentmenu.getSelectedIndex()) {
case 0: menuInfo(); break;
case 1: formJadwal(); break;
case 2: menuPesan(); break;
}
} else if (currentWindow.equals(”menuInfo”)) {
String title = new String(currentmenu.getString(currentmenu.getSelectedIndex()));
formInfo(title);
} else if (currentWindow.equals(”menuPesan”)) {
switch(currentmenu.getSelectedIndex()) {
case 0: formPesan(); break;
case 1: formBatal(); break;
case 2: formHistory(); break;
}
}
}
}
//*********************************************************************************************
// FUNGSI-FUNGSI YANG BERHUBUNGAN DENGAN DATABASE RMS
//*********************************************************************************************
//fungsi untuk membuka database
//jika database tidak ada, maka database akan dibuat
private void bukaDatabase() {
try {
//buka database
//parameter TRUE menunjukkan bahwa database akan dibuat jika belum ada
database = RecordStore.openRecordStore(”database”,true);
} catch (RecordStoreException e) {
formError(”Ada kesalahan pembuatan database”);
}
}
//fungsi untuk menambah data (string ID transaksi) ke dalam database
//input: ID Transaksi yang ingin ditambahkan (data)
private void tambahDatabase(String data) {
try {
//tambahkan data ke dalam database
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeUTF(data);
byte[] b = baos.toByteArray();
database.addRecord(b,0,b.length);
} catch(IOException e) {
formError(”Ada kesalahan IO”);
} catch(RecordStoreFullException e) {
formError(”Database RMS penuh”);
} catch(RecordStoreException e) {
formError(”Ada kesalahan!”);
}
}
//fungsi untuk mengambil data (ID transaksi) dari database
//ID transaksi langsung disimpan dalam variabel group (ChoiceGroup) yang harus diinisialisasikan sebelumnya
private void ambilDatabase() {
//kosongi strTemp
strTemp = new String(”");
try {
ByteArrayInputStream bais;
DataInputStream dis;
RecordEnumeration enum = database.enumerateRecords(null,null,false);
while (enum.hasNextElement()) {
//ambil ID record
int recId = enum.nextRecordId();
//ambil DATA record
bais = new ByteArrayInputStream(database.getRecord(recId));
dis = new DataInputStream(bais);
//simpan ke dalam strTemp
strTemp = dis.readUTF();
//tambahkan di group
group.append(strTemp,null);
}
} catch(IOException e) {
formError(”Ada kesalahan!”);
} catch(IllegalArgumentException e) {
formError(”Ada kesalahan!”);
} catch(IndexOutOfBoundsException e) {
formError(”Ada kesalahan!”);
} catch(NullPointerException e) {
formError(”Ada kesalahan!”);
} catch(RecordStoreNotOpenException e) {
formError(”Ada kesalahan!”);
} catch(RecordStoreException e) {
formError(”Ada kesalahan!”);
}
}
//fungsi untuk menghapus data (string ID transaksi) dari database
//input: ID Transaksi yang ingin dihapus (data)
private void hapusDatabase(String data) {
try {
ByteArrayInputStream bais;
DataInputStream dis;
String in;
RecordEnumeration enum = database.enumerateRecords(null,null,false);
while(enum.hasNextElement()) {
//ambil ID record
int recId = enum.nextRecordId();
//ambil DATA record
bais = new ByteArrayInputStream(database.getRecord(recId));
dis = new DataInputStream(bais);
in = dis.readUTF();
//cek apakah DATA record sama dengan data ID TRANSAKSI yang dicari
if (in.equals(data)) { //jika ya,
database.deleteRecord(recId); //hapus record
break; //selesai
}
}
} catch(IOException e) {
formError(”Ada kesalahan!”);
} catch(RecordStoreNotOpenException e) {
formError(”Ada kesalahan!”);
} catch(RecordStoreException e) {
formError(”Ada kesalahan!”);
}
}
//prosedur untuk menutup database
//dipanggil saat akan keluar dari program
private void tutupDatabase() {
try {
//tutup database
database.closeRecordStore();
} catch(RecordStoreNotOpenException e) {
//do nothing
} catch(RecordStoreException e) {
//do nothing
}
}
}[/java]