1. Java 2 Second Edition .
• Software yang diperlukan :
- Java 2 Platform, J2SE SDK (Development Kit) versi j2sdk- 1_4_2_08-windows- i586-p.
- BlueCove Bluetooth Stack <http://sourceforge.net/projects/bluecove/>
nama file BlueCove-20050514.jar.
- Microsoft Bluetooth Stack, terdapat pada Windows XP service pack 2.
Jika pada komputer telah ter-install driver Bluetooth lainnya (seperti wildcomm stack), supaya untuk di uninstall.
- JDBC driver : Connector/J MySQL versi mysql-connector-java- 3.1.10. <http://www.mysql.com/ products/connector/> nama file mysql-connector-java-3.1.10-bin.jar
- File PesanTiket.java yang merupakan aplikasi server.
• Instalasi
- Konfigurasi pada Bluetooth Devices. Langkah- langkahnya yaitu
Control Panel > Bluetooth Devices > Options > Discovery > Cek Turn discovery on seperti pada gambar 1
.
Gambar 1. Konfigurasi Bluetooth Devices
Lampiran 1 : Panduan Instalasi (sambungan)
- J2SE SDK di install, setelah selesai di install lakukan konfigurasi PATH.
Langkah- langkah konfigurasi PATH pada Windows XP yaitu klik kanan ikon MyComputer > Properties > Advance > Environment Variables, kemudian pada System Variables klik New dan masukan Variable name dengan PATH serta Variable value dengan lokasi lengkap dari SDK.
Gambar 2. Konfigurasi PATH
- Masukkan file BlueCove
-20050514.jar, mysql-connector-java- 3.1.10-bin.jar,
PesanTiket.javadalam satu folder. Compile file PesanTiket.java dan jalankan file
PesanTiket.class. Seperti pada gambar 3.
Gambar 3. Compile dan menjalankan aplikasi Java server.
- Jika muncul window Pesan Tiket, pilih Bluetooth menu, pilih Bluetooth
item, tekan tombol Start untuk mengawali koneksi dengan client.
2. Java 2 Micro Edition .
• Software yang diperlukan :
- Wireless Tool Kit (WTK) 2.2 <http://java.sun.com/products /sjwtoolkit/download-2_2.html> di install pada komputer, untuk compile file J2ME. Java API Bluetooth, terdapat pada telepon selular yang mendukung JSR-82.
• Compile dan Running.
- Setelah WTK 2.2 di install (diasumikan ter-install pada directory C:\WTK22), buka Ktoolbar dari start menu.
- Tekan tombol New Project.
- Masukkan BT-Ticketing pada Project Name.
- Masukkan bluetooth.client.BluetClient pada MIDlet Class Name,kemudian tekan tombol Create Project.
- Pada Setting for project “BT-Ticketing” dialog, pilih Bluetooth/OBEX for J2ME (JSR82) cek bok pada bagian Additional APIs.
- Buka file
LibraryConnect.java, ganti alamat USB Bluetooth dongle dengan alamat USB bluetooth dongle yang dipakai.
private static final String BT_ADDRESS = "001060D08581";pada aplikasi ini alamat USB bluetooth dongle yaitu 001060D08581. Untuk mengetahui alamat USB bluetooth dongle, Control Panel > Bluetooth Device >
Hardware > Generic Bluetooth Radio > tekan tombol Properties >
Radio Information > address. Kemudian Save.
- Masukkan semua file J2ME pada C:\WTK22\apps \BT-Ticketing\scr directory.
- Tekan tombol Build.
- Buka Project menu > Package item > Create Package item. Ini akan membuat file JAD dan JAR yang diletakkan pada directory C:\WTK22\apps \BT-Ticketing\bin.
- Pindahkan file JAR ke telepon selular dan install. Jalankan MIDlet
bersamaan dengan aplikasi server.
Lampiran 1 : Panduan Instalasi (sambungan) 3. MySQL.
• Setelah MySQL di install, buat database dengan nama
tiket, lalu keluar.
• Ketik perintah
[Commandpromt]mysql -localhost -u root -p tiket < PesanTiket.sql
Lampiran 2:
Listing Program
Lampiran 2 : Listing Program Katalog Perpustakaan U.K. Petra
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.*;
import java.io.*;
public final class LibraryClient extends MIDlet implements CommandListener {
static final int ALERT_TIMEOUT = 2000;
private final Command KELUAR_CMD = new Command("Exit",Command.EXIT,1 );
private final Command OK_CMD = new Command( "Ok", Command.SCREEN, 2 );
private final Form menu = new Form( "Bluetooth Library" );
private LibraryGUI LibraryBTClient = null;
public LibraryClient() {
menu.addCommand( KELUAR_CMD );
menu.addCommand( OK_CMD );
menu.setCommandListener( this );}
public void startApp() { show( null );}
public void pauseApp() {}
public void destroyApp( boolean unconditional ) { if ( LibraryBTClient != null ) {
LibraryBTClient.destroy();}}
public void commandAction( Command c, Displayable d ) { if ( c == KELUAR_CMD ){
destroyApp( true );
notifyDestroyed();}
if ( c == OK_CMD ){
LibraryBTClient = new LibraryGUI( this );}}
void show( Alert a ) { if ( a == null ){
Display.getDisplay(this).setCurrent(menu);}
else{
Display.getDisplay(this).setCurrent( a, menu );}}
Displayable getDisplayable(){
return menu;}
}
import javax.bluetooth.BluetoothStateException;
import javax.bluetooth.DataElement;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import java.io.*;
/**
* Inisialisasi Bluetooth Device, pencarian Bluetooth Service, * login, pemesanan tiket bioskop oleh pelanggan.
*/
final class LibraryConnect implements Runnable, DiscoveryListener {
/** UUID Server */
private static final UUID LIBRARY_UUID =
new UUID( "102030405060708090A0B0C0D0E0F010", false );
/** Menyatakan bahwa program berjalan */
private static final int SIAP = 0;
/** Menyatakan bahwa pencarian bluetooth device dilakukan */
private static final int SEARCH_BT_DEVICES = 1;
/** Menyatakan bahwa pencarian bluetooth service dilakukan */
private static final int SEARCH_BT_SERVICE = 2;
private static final int LOGIN_STATE = 3;
private static final int JUDUL_STATE = 4;
private static final int SUBYEK_STATE = 5;
private static final int PENGARANG_STATE = 6;
private static final int DETAIL_JUDUL_STATE = 7;
private static final int DETAIL_SUBYEK_STATE = 8;
private static final int DETAIL_PENGARANG_STATE =9 ; private static final int STATUS_JUDUL_STATE = 10;
private static final int STATUS_SUBYEK_STATE = 11;
private static final int STATUS_PENGARANG_STATE = 12;
private static final int EMPTY_JUDUL = 13;
private static final int EMPTY_SUBYEK = 14;
private static final int EMPTY_PENGARANG = 15;
/**Kata sandi server */
private static final String AUTHENTIC = "P312PUST4K44N;";
private static final String BT_ADDRESS = "001060A8E3A9";
/** Kondisi awal dari program */
private int kondisi = SIAP;
/** Referensi discovery agent */
private DiscoveryAgent discoveryAgent = null;
/** Referensi local device ( local bluetooth manager ) */
private LocalDevice localDevice = null;
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
private boolean isClosed;
/** Proses loginScreen dijalankan */
private boolean isLogin;
/** Autentikasi server */
private boolean isServer;
/** Proses pengiriman data */
private boolean isOrderCanceled;
/** Mendeteksi proses autentikasi */
private boolean AUT_PROC = true;
/** Mendeteksi proses login */
private boolean Process_Login = false;
/** Mendeteksi proses list judul */
private boolean Menu_List = false;
private boolean MENU_LIST = false;
/* Mendeteksi proses List Judul */
private boolean judul = false;
/** Mendeteksi proses List Subyek **/
private boolean subyek = false;
/** Mendeteksi proses list Pengarang **/
private boolean pengarang = false;
/** Mendeteksi Tampilan inputan */
private boolean tampilanjudul = false;
/** Mendeteksi Tampilan inputan */
private boolean tampilansubyek = false;
/** Mendeteksi Tampilan inputan */
private boolean tampilanpengarang = false;
/* Mendeteksi Tampilan Detail Judul */
private boolean detailjudul = false;
/* Mendeteksi Tampilan Detail Subyek */
private boolean detailsubyek = false;
/* Mendeteksi Tampilan Detail Pengarang */
private boolean detailpengarang = false;
/*Input status */
private boolean inputstatus = false;
/* Mendeteksi Status */
private boolean statusjudul = false;
private boolean statussubyek = false;
private boolean statuspengarang = false;
// private boolean status = false;
/* Mendeteksi Konfirmasi */
private boolean konfirmasi = false;
/** nilai proses device discovery */
private int discType;
/** service search ID */
private int[] searchIDs;
/** Proses pencarian dan pengiriman data */
private Thread thread;
/** Pengumpulan remote device selama pencarian */
private Vector devices = new Vector();
/** Pengumpulan service device selama pencarian */
private Vector Blue_Services = new Vector();
public int selectedDevice;
/** Koneksi Serial Port Profile */
private StreamConnection con = null;
private DataOutputStream out = null;
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
private DataInputStream in = null;
/** */
private UUID[] uuidSet = null;
private int[] attrSet;
private String data = null;
private String[] array;
private String[] arrayBackUpTitle;
/** referensi parent */
private LibraryGUI parent;
/**
* Construct ticketing server */
LibraryConnect( LibraryGUI parent ) { this.parent = parent;
thread = new Thread( this );
thread.start();
}
public void run() {
/** Inisialisasi local device untuk mendapatkan discoveryAgent yang digunakan pada proses device, service discovery*/
boolean LbBlue_Ok = false;
try {
LocalDevice localDevice = LocalDevice.getLocalDevice();
discoveryAgent = localDevice.getDiscoveryAgent();
LbBlue_Ok = true;
}
catch( Exception e ) {
System.err.println( "Tidak dapat di inisialisasi..." );}
parent.completeInizialization( LbBlue_Ok );
if ( !LbBlue_Ok ) { return;}
uuidSet = new UUID[2];
// UUID untuk btspp, (0x300) uuid untuk koneksi RFCOM //
// LIBRARY_UUID merupakan UUID server //
uuidSet[0] = new UUID( 0x0003 );
uuidSet[1] = LIBRARY_UUID;
attrSet = new int[1];
LbBlue_Connect();}
public void deviceDiscovered( RemoteDevice remoteDevice, DeviceClass deviceClass ) {
int majorDeviceClass = deviceClass.getMajorDeviceClass();
// Beberapa Bluetooth device telah ditemukan dalam pencarian if ( devices.indexOf( remoteDevice ) == -1 ){
if ( remoteDevice.getBluetoothAddress().equals(BT_ADDRESS) &&
majorDeviceClass == 0x0100 ){
devices.addElement( remoteDevice );}}}
/** discType nilai proses device discovery */
public void inquiryCompleted( int discType ) { this.discType = discType;
synchronized( this ) {
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
notify();}}
public void servicesDiscovered( int transID,ServiceRecord[]servRecord ) {
for ( int i = 0 ; i < servRecord.length ; i++ ) { Blue_Services.addElement( servRecord[i] );}}
public void serviceSearchCompleted( int transID, int respCode ) { int index = -1;
for ( int i = 0; i < searchIDs.length; i++ ) { if ( searchIDs[i] == transID ) {
index = i;
break;}}
if ( index == -1 ) {
System.err.println( "Unexpected transaction index :" + transID );
} else{
searchIDs[index] = -1;}
for ( int i = 0; i < searchIDs.length; i++ ) { if ( searchIDs[i] != -1 ) {
return;}}
synchronized( this ) { notify();}}
public ServiceRecord getFirstDiscoveredService() { if ( Blue_Services.size() > 0 )
return ( ServiceRecord ) Blue_Services.elementAt( 0 );
else
return null;}
// Mengsinkronkan pada Blue_Connect() untuk pencarian device dan service //
void searchRequest() { synchronized( this ) { notify();}}
void selectRequest() {
// selectedDevice = selcReq; //
synchronized( this ) { notify();}}
void searchCancel() { synchronized( this ) {
if ( kondisi == SEARCH_BT_DEVICES ) {
discoveryAgent.cancelInquiry( this );}
else if ( kondisi == SEARCH_BT_SERVICE ) {
for ( int i = 0; i < searchIDs.length; i++ ) {
discoveryAgent.cancelServiceSearch( searchIDs[i] );}}}}
void Send_Req( String strLogin, int i ) { synchronized( this ) {
switch ( i ) { case 0 :
Menu_List = true;
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
data = strLogin;
notify();
break;
case 1 :
Menu_List = false;
judul = false;
subyek = false;
pengarang = false;
tampilanjudul = true;
tampilansubyek = false;
tampilanpengarang = false;
data = strLogin;
notify();
break;
case 2 :
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = true;
pengarang = false;
tampilanpengarang = false;
data = strLogin;
notify();
break;
case 3 :
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
pengarang = false;
tampilanpengarang = true;
detailjudul = false;
statusjudul = false;
data = strLogin;
notify();
break;
case 4 :
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
pengarang = false;
tampilanpengarang = false;
detailjudul= true;
konfirmasi = false;
data = strLogin;
notify();
break;
case 5 :
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
tampilansubyek = false;
pengarang = false;
tampilanpengarang = false;
detailjudul = false;
detailsubyek = true;
statussubyek = false;
konfirmasi = false;
data = strLogin;
notify();
break;
case 6 :
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
pengarang = false;
tampilanpengarang = false;
detailjudul = false;
detailsubyek = false;
detailpengarang = true;
data = strLogin;
notify();
break;
case 7 :
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
pengarang = false;
tampilanpengarang = false;
detailjudul = false;
detailsubyek = false;
detailpengarang = false;
statusjudul = true;
data = strLogin;
notify();
break;
case 8 :
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
pengarang = false;
tampilanpengarang = false;
detailjudul = false;
detailsubyek = false;
detailpengarang = false;
statusjudul = false;
statussubyek = true;
data = strLogin;
notify();
break;
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
case 9 :
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
pengarang = false;
tampilanpengarang = false;
detailjudul = false;
detailsubyek = false;
detailpengarang = false;
statusjudul = false;
statussubyek = false;
statuspengarang = true;
data = strLogin;
notify();
break;
default :
data = strLogin;
notify();
break;}}}
void destroy() {
synchronized( this ) { isClosed = true;
isOrderCanceled = true;
cleanUp();
notify();}
try {
thread.join();}
catch( InterruptedException e ) {}}
private synchronized void LbBlue_Connect() { while ( !isClosed ) {
kondisi = SIAP;
isLogin = true;
// Menunggu permintaan pencarian ( search request ) dari user try {
wait();}
catch( InterruptedException e ) {
System.err.println( "Unxepected interuption : " + e );
return;}
// Mengecek komponen telah di hilangkan if ( isClosed ) {
return;}
// Pencarian untuk bluetooth device if ( !searchDevices() ) {
return;}
else if ( devices.size() == 0 ) { continue;}
if ( !searchServices() ) { return;}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
else if ( Blue_Services.size() == 0 ) { continue;}
if ( AUT_PROC ) { data = AUTHENTIC;
AUT_PROC = false;}
Send_Data( getFirstDiscoveredService(), data );
if (!isLogin) { continue;}
if ( Process_Login ) { kondisi = LOGIN_STATE;
parent.loginScreen();}
while( true ) {
isOrderCanceled = false;
try {
wait();
}
catch( InterruptedException e ) {
System.err.println( "Unxepected interuption : " + e );
return;}
if ( Process_Login ) {
Process_Login = false;
MENU_LIST = true;}
if ( data == null ) { break;}
if ( isClosed ) { return;}
// urut urutan proes pengiriman data...//
Send_Data( getFirstDiscoveredService(), data );
if ( isClosed ) { return;}
if ( Process_Login ) { Menu_List = true;
continue;}
if ( Menu_List ) {
parent.showMessageMenu();
Menu_List = false;
continue;}
if ( judul ) {
parent.judulbuku();
tampilanjudul = true;
continue;}
if (tampilanjudul){
parent.tampilanjudul(array);
tampilanjudul = false;
tampilansubyek = false;
detailjudul = true;
statusjudul = true;
continue;}
if (detailjudul){
parent.detailbuku(array);
detailjudul = false;
statusjudul = true;
continue;}
if (statusjudul){
detailjudul = false;
parent.status(array);
statusjudul = false;
tampilanjudul = true;
continue;}
if ( subyek ){
parent.subyekbuku();
tampilansubyek = true;
continue;}
if ( tampilansubyek ) {
parent.tampilansubyek(array);
tampilansubyek = false;
detailsubyek = true;
statussubyek = true;
continue;}
if (detailsubyek){
parent.detailbuku(array);
detailsubyek = false;
statussubyek = true;
continue;}
if (statussubyek){
detailsubyek = false;
parent.status(array);
statussubyek = false;
tampilansubyek = true;
continue;}
if ( pengarang ){
parent.pengarangbuku();
tampilanpengarang = true;
continue;}
if (tampilanpengarang){
parent.tampilanpengarang(array);
tampilanpengarang = false;
detailpengarang = true;
statuspengarang = true;
continue;}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
if (detailpengarang){
parent.detailbuku(array);
detailpengarang = false;
statuspengarang = true;
continue;}
if (statuspengarang){
detailpengarang = false;
parent.status(array);
statuspengarang = false;
tampilanpengarang = true;
continue;}
if ( inputstatus ){
parent.inputstatus();
inputstatus = false;}
if ( MENU_LIST ) {
parent.showMessageMenu();
continue;}
if ( isClosed ) { return;}
if ( isOrderCanceled ) { continue;}
continue;}}}
private boolean searchDevices() {
// Proses yang dilakukan pertama kali adalah inquiry//
String[] friendlyName;
kondisi = SEARCH_BT_DEVICES;
devices.removeAllElements();
try {
discoveryAgent.startInquiry( DiscoveryAgent.GIAC, this );}
catch( BluetoothStateException bse ) { System.out.println( "Inquiry Fail" );
parent.Send_Error( "Can't start device search", SEARCH_BT_DEVICES );
return true;}
/**
* Menunggu bluetooth device ditemukan
* sampai proses inquiry complete, proses berikutnya akan dilanjutkan
try {
wait();}
catch( InterruptedException e ) {
System.err.println( "Unexpected interuption : " + e );
return false;}
if ( isClosed ) { return false;}
switch ( discType ) { case INQUIRY_ERROR :
parent.Send_Error( "Inquiry fail...", SEARCH_BT_DEVICES );
case INQUIRY_TERMINATED : devices.removeAllElements();
break;
case INQUIRY_COMPLETED : if ( devices.size() == 0 ) {
parent.Send_Error( "No Devices in range", SEARCH_BT_DEVICES );}
break;
default:
System.err.println( "system error : unexpected device discovery code: " + discType );
destroy();
return false;}
return true; }
private boolean searchServices() { kondisi = SEARCH_BT_SERVICE;
searchIDs = new int[devices.size()];
boolean isSearchStarted = false;
String[] friendlyName = new String[devices.size()];
RemoteDevice rd = null;
if ( devices.size() > 0 ) {
System.out.println( devices.size() + "Device found" );}
for ( int i = 0; i < devices.size(); i++ ) {
rd = ( RemoteDevice ) devices.elementAt( i );
try {
searchIDs[i] =discoveryAgent.searchServices( null, uuidSet, rd, this );
}catch( BluetoothStateException e ) {
System.err.println( "Cant't search services for: "
+ rd.getBluetoothAddress() + " due to " + e );
searchIDs[selectedDevice] = -1;}
isSearchStarted = true;}
if ( !isSearchStarted ) {
parent.Send_Error( "Can't search services.", SEARCH_BT_SERVICE );
return true;}
try {
wait();}
catch( InterruptedException e ) {
System.err.println( "Unexpected interuption : " + e );
return false;}
if ( isClosed ) { return false;}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
if ( Blue_Services.size() == 0 ) {
parent.Send_Error( "No proper service were found", SEARCH_BT_SERVICE );}
return true;}
//proses Pengiriman dan Penerimaan Data//
void Send_Data( ServiceRecord r, String s ) {
System.out.println( "Pesan yang dikirim : " + s );
String url = r.getConnectionURL(
ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false );
System.out.println( "url:\\" + url );
try {
con = ( StreamConnection ) Connector.open( url );
out = con.openDataOutputStream();
out.writeUTF( s );
out.flush();
out.close();
in = con.openDataInputStream();
String ackMessage = in.readUTF();
System.out.println( "Pesan ack : " + ackMessage );
if ( s.equals( ackMessage ) ) { Process_Login = true;}
else {
AUT_PROC = true;}
if ( !Process_Login ) {
string2array( ackMessage );
if ( array[0].equals( "LOGIN_INVALID" ) ) { convertData( true, LOGIN_STATE );
parent.Send_Error( "Password atau Username Salah!!!", LOGIN_STATE);}
else if ( array[0].equals( "NULL_JUDUL" ) ) { convertData( true, EMPTY_JUDUL );
parent.Send_Error( array[1], EMPTY_JUDUL);}
else if ( array[0].equals( "NULL_SUBYEK" ) ) { convertData( true, EMPTY_SUBYEK );
parent.Send_Error( array[1], EMPTY_SUBYEK);}
else if ( array[0].equals( "NULL_PENGARANG" ) ) { convertData( true, EMPTY_PENGARANG );
parent.Send_Error( array[1], EMPTY_PENGARANG);}}
cleanUp();}
catch(Exception e ) { cleanUp();
parent.failMessage( "Pesan Tidak Terkirim !!" );
e.printStackTrace();
}}
void cleanUp() { try {
if ( out != null ) { out.close();}
if (in != null ) { in.close();}
if ( con != null ) {con.close();}}
catch ( IOException e ) {}}
// Untuk memperose jika ingin kembali ke halaman sebelumnnya, Menyimpan kondisi namun dalam tampilan List//
void convertData( boolean convert, int state ) { if ( state == LOGIN_STATE ) {
Process_Login = true;
tampilansubyek = false;
pengarang = false;
tampilanpengarang = false;
detailjudul = false;
konfirmasi = false;}
if ( state == JUDUL_STATE ) { Process_Login = false;
Menu_List = false;
tampilanjudul = true;
subyek = false;
tampilansubyek = false;
pengarang = false;
tampilanpengarang = false;
detailjudul = true;
konfirmasi = false;}
if (state == SUBYEK_STATE){
Process_Login = false;
Menu_List = false;
judul = false;
tampilanjudul = false;
tampilansubyek = true;
pengarang = false;
tampilanpengarang = false;
detailsubyek = false;
konfirmasi = false;}
if ( state == PENGARANG_STATE){
Process_Login = false;
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
tampilanpengarang = true;
detailpengarang = false;
konfirmasi = false;}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
if ( state == DETAIL_JUDUL_STATE){
Process_Login = false;
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
pengarang = false;
detailjudul = true;
detailsubyek = false;
detailpengarang = false;
tampilanpengarang = false;
konfirmasi = false;}
if ( state == DETAIL_SUBYEK_STATE){
Process_Login = false;
Menu_List = false;
judul = false;
detailjudul = false;
detailsubyek = true;
detailpengarang = false;
tampilanpengarang = false;
konfirmasi = false;}
if ( state == DETAIL_PENGARANG_STATE){
Process_Login = false;
Menu_List = false;
judul = false;
tampilanjudul = false;
subyek = false;
tampilansubyek = false;
pengarang = false;
detailjudul = false;
detailsubyek = false;
detailpengarang = true;
tampilanpengarang = false;
konfirmasi = false;}
if ( state == STATUS_JUDUL_STATE ){
statusjudul = true;}}
void string2array( String sta ) { String data = sta;
int jumlahIndex = 0;
int j = 0;
for ( int i = 0; i < data.length(); i++ ) { if ( data.charAt(i) == ';' ) {
jumlahIndex++;}}
array = new String[jumlahIndex];
int k = 0;
for ( int i = 0; i < data.length(); i++ ) { if ( data.charAt(i) == ';' ) {
if ( j == 0 ){
array[j] = data.substring(0,i);
k = i + 1;
j = j + 1;
} else {
array[j] = data.substring(k,i);
k = i + 1;
j = j + 1;}}}
if ( Menu_List ) {
arrayBackUpTitle = new String[jumlahIndex];
arrayBackUpTitle = array;}}}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
final class LibraryGUI implements CommandListener {
private static final int SEARCH_BT_SERVICE = 2;
private static final int LOGIN_STATE = 3;
private static final int JUDUL_STATE = 4;
private static final int SUBYEK_STATE = 5;
private static final int PENGARANG_STATE = 6;
private static final int DETAIL_JUDUL_STATE = 7;
private static final int DETAIL_SUBYEK_STATE = 8;
private static final int DETAIL_PENGARANG_STATE= 9;
private static final int STATUS_JUDUL_STATE = 10;
private static final int STATUS_SUBYEK_STATE = 11;
private static final int STATUS_PENGARANG_STATE = 12;
private final Command BACK_CMD = new Command( "Kembali", Command.SCREEN, 2 );
private final Command Login_Back_CMD = new Command( "Kembali", Command.BACK, 1 );
private final Command SEARCH_CANCEL_CMD = new Command( "Kembali", Command.BACK, 1 );
private final Command BACK_LAYANAN = new Command( "Kembali", Command.BACK, 1 );
private final Command BACK_INPUT_JUDUL = new Command( "Kembali", Command.BACK, 1 );
private final Command BACK_INPUT_SUBYEK = new Command( "Kembali", Command.BACK, 1 );
private final Command BACK_INPUT_PENGARANG = new Command(
"Kembali", Command.BACK, 1 );
private final Command BACK_DETAIL_BUKU = new Command( "Kembali", Command.BACK, 1);
private final Command BACK_INPUT_PESAN = new Command( "Kembali", Command.BACK, 1);
private final Command BACK_LIST = new Command( "Kembali", Command.BACK, 1);
private final Command BACK_LOGIN = new Command( "Kembali", Command.BACK, 1);
private final Command BACK_LOGIN1 = new Command( "Kembali", Command.BACK, 1);
private final Command BACK_DETAIL_INPUTJUDUL = new Command(
"Kembali Jdl", Command.BACK, 2);
private final Command BACK_DETAIL_INPUTSUBYEK = new Command(
"Kembali Sby", Command.BACK, 2);
private final Command BACK_DETAIL_INPUTPENGARANG = new Command(
"Kembali Pgr", Command.BACK, 2);
private final Command BACK_JUDUL_DETAIL = new Command("Kembali Jdl", Command.BACK, 2);
private final Command BACK_SUBYEK_DETAIL = new Command("Kembali Sby", Command.BACK, 2);
private final Command BACK_PENGARANG_DETAIL = new Command("Kembali Pgr", Command.BACK, 2);
private final Command CONNECT_CMD = new Command( "Koneksi", Command.BACK, 1 );
private final Command Login_Send_CMD = new Command( "Kirim", Command.SCREEN, 2 );
private final Command SELECT_MENU_CMD = new Command( "Pilih", Command.BACK, 1 );
private final Command SELECT_CMD = new Command( "Pilih", Command.SCREEN, 2 );
private final Command STATUS_BUKU = new Command("Pilih", Command.SCREEN, 2);
private final Command KONFIRMASI = new Command( "Pilih", Command.SCREEN, 2);
private final Command TAMPILAN_DETAIL_JUDUL = new Command(
"Pilih", Command.SCREEN, 2);
private final Command TAMPILAN_DETAIL_SUBYEK = new Command(
"Pilih", Command.SCREEN, 2);
private final Command TAMPILAN_DETAIL_PENGARANG = new Command(
"Pilih", Command.SCREEN, 2);
private final Command STATUS_JUDUL = new Command("Pilih", Command.SCREEN, 2);
private final Command STATUS_SUBYEK = new Command ("Pilih", Command.SCREEN, 2);
private final Command STATUS_PENGARANG = new Command ("Pilih", Command.SCREEN, 2);
private final Command DETAIL_INPUT_JUDUL = new Command( "Detail", Command.SCREEN, 2 );
private final Command DETAIL_INPUT_SUBYEK = new Command( "Detail", Command.SCREEN, 2 );
private final Command DETAIL_INPUT_PENGARANG = new Command(
"Detail", Command.SCREEN, 2 );
private final Command STATUSBUKUJUDUL = new Command ("Status", Command.SCREEN,2);
private final Command STATUSBUKUSUBYEK = new Command ("Status", Command.SCREEN,2);
private final Command STATUSBUKUPENGARANG = new Command ("Status", Command.SCREEN,2);
private final Command STATUS = new Command ("Status", Command.SCREEN, 1);
private final Command PEMESANAN = new Command( "Pesan", Command.SCREEN, 2 );
private final Command EXIT_PGRM_CMD = new Command( "Keluar", Command.SCREEN, 2 );
private final Form formMenuDisplay = new Form( "Main" );
private final Form formLoginDisplay = new Form( "Login" );
private final Form formSendData = new Form( "Pengiriman Data" );
private final Form formLayananDisplay = new Form( "Layanan");
private final Form formDisplay_judul = new Form( "Judul");
private final Form formDisplay_subyek= new Form( "Subyek");
private final Form formDisplay_pengarang = new Form( "Pengarang");
private final Form formTampilan_detail = new Form( "Detail");
private final Form formList_status = new Form( "Status Buku");
private final Form formInputStatus = new Form( "Input KNOKAT Buku
");
private List menuDisplayLibrary = null;
private List bluetoothListDisplay = null;
private List list = null;
private List formList_judul = null;
private List formList_subyek = null;
private List formList_pengarang = null;
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
private List detailDisplaySubyek = null;
private List detailDisplayPengarang= null;
private List detailDisplay = null;
private Form formDisplay;
private Form formKonfirmasi;
private Form f = new Form( "Proses Pencarian" );
private String[] array;
private final TextField username = new TextField( "Username :",
"", 9, TextField.ANY );
private final TextField password = new TextField( "Password :",
"", 9, TextField.PASSWORD );
private final TextField judul = new TextField( "Masukan Judul :",
"", 50, TextField.ANY );
private final TextField subyek = new TextField( "Subyek :", "", 50, TextField.ANY );
private final TextField pengarang = new TextField( "Pengarang :",
"", 50, TextField.ANY );
private final TextField inputstatus = new TextField("No Knokat:",
"", 20,TextField.NUMERIC);
private String dataStream;
private LibraryClient parent;
private LibraryConnect bc_client;
public LibraryGUI( LibraryClient parent ) { this.parent = parent;
bc_client = new LibraryConnect( this );
//Tampilan awal//
formMenuDisplay.setTitle( "Koneksi" );
formMenuDisplay.addCommand( BACK_CMD );
formMenuDisplay.addCommand( CONNECT_CMD );
formMenuDisplay.setCommandListener( this );
//Tampilan Login //
formLoginDisplay.setTitle( "Login" );
formLoginDisplay.append( username );
formLoginDisplay.append( password );
formLoginDisplay.addCommand( Login_Back_CMD);
formLoginDisplay.addCommand( Login_Send_CMD);
formLoginDisplay.setCommandListener( this );
formSendData.setCommandListener( this );
// form masukan nama Judul //
formDisplay_judul.setTitle( "Judul" );
formDisplay_judul.append( judul );
formDisplay_judul.addCommand( BACK_LAYANAN);
formDisplay_judul.setCommandListener( this );
//form masukan nama subyek//
formDisplay_subyek.setTitle( "Subyek" );
formDisplay_subyek.append( subyek );
formDisplay_subyek.addCommand( BACK_LAYANAN);
formDisplay_subyek.setCommandListener( this );
//form masukan nama pengarang //
formDisplay_pengarang.setTitle( "Pengarang" );
formDisplay_pengarang.append( pengarang );
formDisplay_pengarang.addCommand( BACK_LAYANAN);
formDisplay_pengarang.setCommandListener( this );
//form masukan no knokat untuk mengetahui sataus//
// tidak digunakan karena sudah langsung di list judul, subyek dan pengarang//
formInputStatus.setTitle(" Status ");
formInputStatus.append( inputstatus );
formInputStatus.addCommand(BACK_LAYANAN);
formInputStatus.setCommandListener( this );
}
public void commandAction( Command c, Displayable d ) {
if ( c == CONNECT_CMD && d == formMenuDisplay ) { Form f = new Form( "Pencarian..." );
f.addCommand( SEARCH_CANCEL_CMD );
f.setCommandListener( this );
f.append( new Gauge( "Pencarian perangkat...", false, Gauge.INDEFINITE,
Gauge.CONTINUOUS_RUNNING ) );
Display.getDisplay( parent ).setCurrent( f );
bc_client.searchRequest();
return;}
if ( c == BACK_CMD ) { destroy();
parent.show( null );
return; }
if (c == BACK_LOGIN){
bc_client.Send_Req( null, 0 );
parent.show( null );
return;}
if (c == BACK_LOGIN1){
//kembali ke tampilan Login //
bc_client.convertData( true, LOGIN_STATE );
Display.getDisplay( parent ).setCurrent( formLoginDisplay );
return;}
if (c == BACK_DETAIL_INPUTJUDUL ){
// kembali ke List judul//
bc_client.convertData( true, JUDUL_STATE );
Display.getDisplay( parent ).setCurrent( formList_judul );
return;}
if (c == BACK_DETAIL_INPUTSUBYEK ){
//kembali ke list subyek //
bc_client.convertData( true, SUBYEK_STATE );
Display.getDisplay( parent ).setCurrent( formList_subyek );
return;}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
if (c == BACK_DETAIL_INPUTPENGARANG ){
//kembali ke list pengarang //
bc_client.convertData( true, PENGARANG_STATE );
Display.getDisplay(parent).setCurrent( formList_pengarang );
return;}
if (c == BACK_JUDUL_DETAIL){
bc_client.convertData (true, JUDUL_STATE);
Display.getDisplay( parent ).setCurrent (formList_judul);
return;}
if (c == BACK_SUBYEK_DETAIL){
bc_client.convertData (true, SUBYEK_STATE );
Display.getDisplay( parent ).setCurrent (formList_subyek);
return;}
if (c == BACK_PENGARANG_DETAIL){
bc_client.convertData (true, PENGARANG_STATE );
Display.getDisplay( parent ).setCurrent (formList_pengarang);
return;}
if ( c == BACK_LAYANAN){
Display.getDisplay(parent).setCurrent( menuDisplayLibrary );
return;}
if (c == BACK_INPUT_JUDUL){
bc_client.convertData( true, JUDUL_STATE );
Display.getDisplay( parent ).setCurrent( formDisplay_judul );
return;}
if (c == BACK_INPUT_SUBYEK){
bc_client.convertData( true, SUBYEK_STATE );
Display.getDisplay(parent).setCurrent( formDisplay_subyek );
return;}
if (c == BACK_INPUT_PENGARANG){
bc_client.convertData( true, PENGARANG_STATE );
Display.getDisplay( parent ).setCurrent(
formDisplay_pengarang );
return;}
if (c == BACK_LIST){
Display.getDisplay( parent ).setCurrent(
menuDisplayLibrary);
return;}
if ( c == SELECT_CMD ) {
bc_client.selectedDevice =
bluetoothListDisplay.getSelectedIndex();
bc_client.selectRequest();
return;}
if (c == BACK_DETAIL_BUKU ){
Display.getDisplay(parent).setCurrent(formTampilan_detail );
return;}
if ( c == SELECT_MENU_CMD){
switch (menuDisplayLibrary.getSelectedIndex()) { case 0:
judulbuku();
break;
case 1:
subyekbuku();
break;
default:
pengarangbuku();
break;}}
if ( c == Login_Back_CMD){
bc_client.Send_Req( null, 0 );
destroy();
parent.show( null );
return;}
if(c == TAMPILAN_DETAIL_JUDUL){
String jdl = judul.getString();
String dataPacket= "JUDUL_STATE;" + jdl + ";";
if ( jdl.equals( "" ) || jdl == null ) {
Alert a = new Alert( "Error","Inputan Judul Data Kurang !!", null, AlertType.ERROR );
a.setTimeout( LibraryClient.ALERT_TIMEOUT );
Display.getDisplay( parent ).setCurrent(
a,formDisplay_judul);
return;
} else {
formSendData.deleteAll();
formSendData.addCommand( DETAIL_INPUT_JUDUL );
formSendData.append(new Gauge("Pengiriman Data Judul",false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING ) );
bc_client.Send_Req( dataPacket, 1 );
Display.getDisplay( parent ).setCurrent( formSendData );
return;}}
if(c == TAMPILAN_DETAIL_SUBYEK){
String sby = subyek.getString();
String dataPacket = "SUBYEK_STATE;" + sby + ";";
if ( sby.equals( "" ) || sby == null ) {
Alert a = new Alert( "Error","Inputan Subyek Data Kurang
!!", null, AlertType.ERROR );
a.setTimeout( LibraryClient.ALERT_TIMEOUT );
Display.getDisplay( parent ).setCurrent(
a,formDisplay_subyek);
return;
} else {
formSendData.deleteAll();
formSendData.addCommand( DETAIL_INPUT_SUBYEK );
formSendData.append( new Gauge( "Pengiriman Data
Subyek",false,Gauge.INDEFINITE,Gauge.CONTINUOUS_RUNNING ) );
bc_client.Send_Req( dataPacket, 2 );
Display.getDisplay( parent ).setCurrent( formSendData );
return;}}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
if(c == TAMPILAN_DETAIL_PENGARANG){
String pgr = pengarang.getString();
String dataPacket = "PENGARANG_STATE;" + pgr + ";";
if ( pgr.equals( "" ) || pgr == null ) {
Alert a = new Alert( "Error","Inputan Pengarang Data Kurang
!!", null, AlertType.ERROR );
a.setTimeout( LibraryClient.ALERT_TIMEOUT );
Display.getDisplay( parent).setCurrent (a,formDisplay_pengarang);
return;
} else {
formSendData.deleteAll();
formSendData.addCommand( DETAIL_INPUT_PENGARANG );
formSendData.append( new Gauge( "Pengiriman Data Pengarang", false,Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING ) );
bc_client.Send_Req( dataPacket, 3 );
Display.getDisplay( parent ).setCurrent( formSendData );
return;}}
if (c == DETAIL_INPUT_JUDUL){
int index = formList_judul.getSelectedIndex();
String dataPacket = "DETAIL_JUDUL_STATE;" + formList_judul.getString( index ) + ";";
bc_client.Send_Req( dataPacket, 4 );
formSendData.deleteAll();
formSendData.append(new Gauge("Pengiriman Data Judul",false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING ) );
Display.getDisplay( parent ).setCurrent( formSendData );
return;}
if (c == DETAIL_INPUT_SUBYEK){
int index = formList_subyek.getSelectedIndex();
String dataPacket = "DETAIL_SUBYEK_STATE;" + formList_subyek.getString( index ) + ";";
bc_client.Send_Req( dataPacket, 5 );
formSendData.deleteAll();
formSendData.append(new Gauge("Pengiriman Data
Subyek",false,Gauge.INDEFINITE,Gauge.CONTINUOUS_RUNNING ) );
Display.getDisplay( parent ).setCurrent( formSendData );
return;}
if (c == DETAIL_INPUT_PENGARANG){
int index = formList_pengarang.getSelectedIndex();
String dataPacket = "DETAIL_PENGARANG_STATE;" + formList_pengarang.getString( index ) + ";";
bc_client.Send_Req( dataPacket, 6 );
formSendData.deleteAll();
formSendData.append( new Gauge( "Pengiriman Data Penagarang", false,Gauge.INDEFINITE,
Gauge.CONTINUOUS_RUNNING ) );
Display.getDisplay( parent ).setCurrent( formSendData );
return;}
if (c == STATUSBUKUJUDUL){
int index = formList_judul.getSelectedIndex();
String dataPacket = "STATUS_JUDUL_STATE;" + formList_judul.getString( index ) + ";";
bc_client.Send_Req( dataPacket, 7);
formSendData.deleteAll();
formSendData.append(new Gauge ("Pengiriman Status", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING ) );
Display.getDisplay( parent ).setCurrent ( formSendData );
return;}
if (c == STATUSBUKUSUBYEK){
int index = formList_subyek.getSelectedIndex();
String dataPacket = "STATUS_SUBYEK_STATE;" + formList_subyek.getString( index ) + ";";
bc_client.Send_Req( dataPacket, 8);
formSendData.deleteAll();
formSendData.append(new Gauge ("Pengiriman Status", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING ) );
Display.getDisplay( parent ).setCurrent ( formSendData );
return;}
if (c == STATUSBUKUPENGARANG){
int index = formList_pengarang.getSelectedIndex();
String dataPacket = "STATUS_PENGARANG_STATE;" + formList_pengarang.getString( index ) + ";";
bc_client.Send_Req( dataPacket, 9);
formSendData.deleteAll();
formSendData.append(new Gauge ("Pengiriman Status", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING ) );
Display.getDisplay( parent ).setCurrent ( formSendData );
return;}
if (c == STATUS){
inputstatus();}
if (c == STATUS_BUKU ){
String sts = inputstatus.getString();
String dataPacket= "STATUS_STATE;" + sts + ";";
if ( sts.equals( "" ) || sts == null ) {
Alert a = new Alert( "Error","Inputan KNOKAT salah !!", null, AlertType.ERROR );
a.setTimeout( LibraryClient.ALERT_TIMEOUT );
Display.getDisplay( parent ).setCurrent( a,formInputStatus);
return;}
else {
formSendData.deleteAll();
formSendData.append(new Gauge("Pengiriman Data Status", false,Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING ) );
bc_client.Send_Req( dataPacket, 8 );
Display.getDisplay( parent ).setCurrent( formSendData );
return;}}
if ( c == Login_Send_CMD ){
String un = username.getString();
String pswd = password.getString();
dataStream = "LOGIN_STATE;" + un + ";" + pswd + ";";
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
if ( un.equals( "" ) || un == null ||
pswd == null || pswd.equals ( "" ) ) {
Send_Error( "Login tidak lengkap!!!", LOGIN_STATE );
return;
} else {
formSendData.deleteAll();
formSendData.append( new Gauge( "Pengiriman Data", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING ) );
bc_client.Send_Req( dataStream, 0 );
Display.getDisplay( parent ).setCurrent( formSendData );
return;}}
if (c == KONFIRMASI ){
Display.getDisplay( parent ).setCurrent( formKonfirmasi );
return;}
if ( c == SEARCH_CANCEL_CMD ) { bc_client.searchCancel();
Display.getDisplay( parent ).setCurrent( formMenuDisplay );
return;}}
void completeInizialization( boolean LbBlue_Ok ) { // Inisialisasi bluetooth sukses
if ( LbBlue_Ok ) {
StringItem si=new StringItem( "Siap Melakukan Koneksi...", null );
si.setLayout(StringItem.LAYOUT_CENTER|StringItem.LAYOUT_VCENTER );
formMenuDisplay.append( si );
formMenuDisplay.setTitle( "Koneksi" );
Display.getDisplay( parent ).setCurrent( formMenuDisplay );
return;}
// Terdapat kesalahan
Alert a = new Alert( "Error", "Tidak dapat menginisialisasi bluetooth",
null, AlertType.ERROR );
a.setTimeout( LibraryClient.ALERT_TIMEOUT );
Display.getDisplay( parent ).setCurrent( a, formMenuDisplay );}
void destroy(){
bc_client.destroy();}
void failMessage( String fm/*, int state */ ) {
Alert afm = new Alert( "Error", fm, null,AlertType.ERROR );
afm.setTimeout( Alert.FOREVER );
list = new List( "Error", List.IMPLICIT );
list.addCommand( BACK_CMD );
list.setCommandListener( this );
Display.getDisplay( parent ).setCurrent( afm, list );}
void showMessageMenu(){
menuDisplayLibrary = new List ("MENU LAYANAN ", List.IMPLICIT);
menuDisplayLibrary.append("1.Judul Buku",null);
menuDisplayLibrary.append("2.Subyek Buku", null);
menuDisplayLibrary.append("3.Pengarang Buku",null);
menuDisplayLibrary.addCommand(SELECT_MENU_CMD);
menuDisplayLibrary.addCommand(BACK_LOGIN1);
menuDisplayLibrary.setCommandListener(this);
Display.getDisplay( parent).setCurrent(menuDisplayLibrary);}
void judulbuku(){
formDisplay_judul.deleteAll();
formDisplay_judul.append(judul);
formDisplay_judul.addCommand(BACK_LAYANAN);
formDisplay_judul.addCommand(TAMPILAN_DETAIL_JUDUL);
formDisplay_judul.setCommandListener(this);
Display.getDisplay( parent ).setCurrent(formDisplay_judul);}
void subyekbuku(){
formDisplay_subyek.deleteAll();
formDisplay_subyek.append(subyek);
formDisplay_subyek.addCommand(BACK_LAYANAN);
formDisplay_subyek.addCommand(TAMPILAN_DETAIL_SUBYEK);
formDisplay_subyek.setCommandListener(this);
Display.getDisplay( parent).setCurrent(formDisplay_subyek);}
void pengarangbuku(){
formDisplay_pengarang.deleteAll();
formDisplay_pengarang.append(pengarang);
formDisplay_pengarang.addCommand(BACK_LAYANAN);
formDisplay_pengarang.addCommand(TAMPILAN_DETAIL_PENGARANG);
formDisplay_pengarang.setCommandListener(this);
Display.getDisplay(parent).setCurrent(formDisplay_pengarang)
;}
void tampilanjudul(String[] j){
formList_judul = new List( "List Judul", List.IMPLICIT );
for ( int i=0; i<j.length; i++ ) { formList_judul.append( j[i],null );}
formList_judul.addCommand(BACK_INPUT_JUDUL);
formList_judul.addCommand(DETAIL_INPUT_JUDUL);
formList_judul.addCommand(STATUSBUKUJUDUL);
formList_judul.setCommandListener(this);
Display.getDisplay( parent ).setCurrent(formList_judul);}
void tampilansubyek(String[] s){
formList_subyek = new List( "List Subyek", List.IMPLICIT );
for ( int i=0; i<s.length; i++ ) { formList_subyek.append( s[i],null );}
formList_subyek.addCommand(BACK_INPUT_SUBYEK);
formList_subyek.addCommand(DETAIL_INPUT_SUBYEK);
formList_subyek.addCommand(STATUSBUKUSUBYEK);
formList_subyek.setCommandListener(this);
Display.getDisplay( parent ).setCurrent(formList_subyek);
}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
void tampilanpengarang(String[] p){
formList_pengarang = new List( "List Pengarang", List.IMPLICIT );
for ( int i=0; i<p.length; i++ ) {
formList_pengarang.append( p[i],null );}
formList_pengarang.addCommand(BACK_INPUT_PENGARANG);
formList_pengarang.addCommand(DETAIL_INPUT_PENGARANG);
formList_pengarang.addCommand(STATUSBUKUPENGARANG);
formList_pengarang.setCommandListener(this);
Display.getDisplay(parent ).setCurrent(formList_pengarang);}
void detailbuku(String[] sml){
formTampilan_detail.deleteAll();
for ( int i=0; i<sml.length; i++ ) {
if(i==0) {
formTampilan_detail.append("No KNOKAT : " + sml[i]+ "\n");
}
if(i==1) {
formTampilan_detail.append("No Panggil : " + sml[i]+ "\n");
}
if(i==2) {
formTampilan_detail.append("Judul : " + sml[i]+ "\n");
}
if(i==3) {
formTampilan_detail.append("Pengarang : " + sml[i]+ "\n");
}
if(i==4) {
formTampilan_detail.append("Kota Penerbit : " + sml[i]+
"\n");
}
if(i==5) {
formTampilan_detail.append("No Induk Buku: " + sml[i]+
"\n");
}}
formTampilan_detail.append("Perpustakaan Universitas Kristen Petra\n");
formTampilan_detail.addCommand(BACK_DETAIL_INPUTJUDUL);
formTampilan_detail.addCommand(BACK_DETAIL_INPUTSUBYEK);
formTampilan_detail.addCommand(BACK_DETAIL_INPUTPENGARANG);
formTampilan_detail.setCommandListener(this);
Display.getDisplay( parent ).setCurrent(formTampilan_detail);}
void inputstatus(){
formInputStatus.deleteAll();
formInputStatus.append( inputstatus );
formInputStatus.addCommand(BACK_LAYANAN);
formInputStatus.addCommand(STATUS_BUKU);
formInputStatus.setCommandListener(this);
Display.getDisplay( parent ).setCurrent(formInputStatus);}
void status(String[] st ){
formList_status.deleteAll();
formList_status.append("\nTanggal Kembali Buku :\n" + st[0]) formList_status.append("\nInformasi :\n ");
formList_status.append("\nJika hasil Pencarian NULL_JUDUL\n");
formList_status.append("Maka Buku tersebut statusnya ADA\n");
formList_status.append("\n\nTERIMAKASIH ATAS KUNJUNGANNYA
\n");
formList_status.addCommand(BACK_JUDUL_DETAIL);
formList_status.addCommand(BACK_SUBYEK_DETAIL);
formList_status.addCommand(BACK_PENGARANG_DETAIL);
formList_status.setCommandListener(this);
Display.getDisplay( parent ).setCurrent(formList_status);}
void Send_Error( String pesan, int kondisi ) {
Alert a = new Alert("Error", pesan, null, AlertType.ERROR );
a.setTimeout( LibraryClient.ALERT_TIMEOUT );
if ( kondisi == 1 ) { f.deleteAll();
f.append( "No Bluetooth server found" );
Display.getDisplay( parent ).setCurrent( a, f );
} else if ( kondisi == 2 ) { f.deleteAll();
f.append( "No Bluetooth sevices found" );
Display.getDisplay( parent ).setCurrent( a, f );
} else if ( kondisi == LOGIN_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke Login Menu." );
formSendData.addCommand( BACK_LOGIN1 );
Display.getDisplay( parent ).setCurrent( a, formSendData );
} else if ( kondisi == JUDUL_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke Judul Menu." );
formSendData.addCommand( BACK_INPUT_JUDUL );
Display.getDisplay( parent ).setCurrent( a, formSendData );
} else if ( kondisi == SUBYEK_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke Subyek Menu." );
formSendData.addCommand( BACK_INPUT_SUBYEK );
Display.getDisplay( parent ).setCurrent( a, formSendData );
} else if ( kondisi == PENGARANG_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nPress \"Kembali\" untuk ke Pengarang Menu." );
formSendData.addCommand( BACK_INPUT_PENGARANG );
Display.getDisplay( parent ).setCurrent( a, formSendData );
} else if ( kondisi == DETAIL_JUDUL_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke Detail Menu." );
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
formSendData.addCommand( BACK_DETAIL_INPUTJUDUL );
Display.getDisplay( parent ).setCurrent( a, formSendData );
} else if ( kondisi == DETAIL_SUBYEK_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke Detail Menu." );
formSendData.addCommand( BACK_DETAIL_INPUTPENGARANG );
Display.getDisplay( parent ).setCurrent( a, formSendData );
} else if ( kondisi == DETAIL_PENGARANG_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke pengarang Menu." );
formSendData.addCommand( BACK_DETAIL_INPUTPENGARANG );
Display.getDisplay( parent ).setCurrent( a, formSendData );
} else if ( kondisi == STATUS_JUDUL_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke Layanan Menu." );
formSendData.addCommand( BACK_LAYANAN);
Display.getDisplay( parent ).setCurrent( a, formSendData );
} else if ( kondisi == STATUS_SUBYEK_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke Layanan Menu." );
formSendData.addCommand( BACK_LAYANAN);
Display.getDisplay( parent ).setCurrent( a, formSendData );
}else if ( kondisi == STATUS_PENGARANG_STATE ) { formSendData.deleteAll();
formSendData.append( pesan + "\nTekan \"Kembali\" untuk ke Layanan Menu." );
formSendData.addCommand( BACK_LAYANAN);
Display.getDisplay( parent ).setCurrent( a, formSendData );
}}
boolean loginScreen() {
Display.getDisplay( parent ).setCurrent( formLoginDisplay );
return true;}
void StringToArray( String sta ) {
String data = sta;int jumlahIndex = 0;
int j = 0;
for ( int i = 0; i < data.length(); i++ ) { if ( data.charAt(i) == ';' ) {
jumlahIndex++;}}
array = new String[jumlahIndex];
int k = 0;
for ( int i = 0; i < data.length(); i++ ) { if ( data.charAt(i) == ';' ) {
if ( j == 0 ){
array[j] = data.substring(0,i);
k = i + 1;j = j + 1;
} else {
array[j] = data.substring(k,i);
k = i + 1; j = j + 1;}}}}
void sendScreen( boolean isSended) {
Display.getDisplay( parent ).setCurrent( formSendData );
return;}}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.sql.*;
import java.util.Date;
import java.util.Random;
import java.util.Vector;
import java.lang.System;
import java.lang.Math;
import javax.swing.table.*;
import javax.bluetooth.*;
import javax.microedition.io.StreamConnectionNotifier;
import javax.microedition.io.StreamConnection;
import javax.microedition.io.Connector;
import java.io.*;
import java.awt.print.*;
import java.awt.geom.*;
import java.text.*;
public class Perpustakaan extends JFrame { JMenuBar menuBar;
JMenu menuSearch,menuAbout, menuLogin;
JMenuItem menuConnection,menuItemConnection,menuExit, menuAuthor, menumasukanlogin, submenumasukanlogin;
final JDesktopPane desktopPane = new JDesktopPane();
final Container container;
private Connection con;
int jumlah = 0;
String[] dataId,dataJudul,dataIdStudio;
private String[][] seatResult = new String[10][20];
public Perpustakaan() {
super( "Perpustakaan Program" );
container = getContentPane();
container.add( desktopPane );
menuBar = new JMenuBar();
setJMenuBar( menuBar );
/************************ MENU CONNECTION **********************/
menuConnection = new JMenu( "Koneksi" );
menuConnection.setMnemonic( 'K' );
menuBar.add( menuConnection );
menuItemConnection = new JMenuItem( "Bluetooth" , KeyEvent.VK_B);
menuConnection.add( menuItemConnection );
menuItemConnection.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ){
logConnectionFrame lcf = new logConnectionFrame();
}});
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
/********************** MENU INSERT NEW LOGIN *******************/
menuLogin = new JMenu("Perpustakaan");
menuBar.add(menuLogin);
menuLogin.setMnemonic('P');
/********************* Menu Masukan Login ***********************/
menumasukanlogin = new JMenuItem ( "Login", KeyEvent.VK_I);
menumasukanlogin.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_I, ActionEvent.CTRL_MASK));
menuLogin.add(menumasukanlogin);
menumasukanlogin.addActionListener(
new ActionListener(){
public void actionPerformed( ActionEvent e ){
entryDataMahasiswa MahasiswaBaru = new entryDataMahasiswa();}});
/*********************** MENU ABOUT *****************************/
menuAbout = new JMenu( "Perihal" );
menuAbout.setMnemonic( 'P' );
menuBar.add( menuAbout );
menuAuthor = new JMenuItem( "Mahasiswa" , KeyEvent.VK_U);
menuAbout.add( menuAuthor );
menuAuthor.addActionListener(
new ActionListener() {
public void actionPerformed ( ActionEvent e ) { JOptionPane.showMessageDialog(
desktopPane,"[email protected]" );}});
JMenuItem menuPerpustakaan = new JMenuItem(
"KatalogPerpustakaan" ,KeyEvent.VK_C );
menuAbout.add( menuPerpustakaan );
menuPerpustakaan.addActionListener(
new ActionListener() {
public void actionPerformed ( ActionEvent e ) {
JOptionPane.showMessageDialog( desktopPane,"Copyright (c) 2006 Gerrid Elektro 2002" );}});
addWindowListener(new WindowAdapter() { public void windowClosing( WindowEvent e) { dispose();
System.exit(0);
}});}
class entryDataMahasiswa{
private JButton tombolAdd;
private JTextField textUsername;
private JPasswordField textPassword;
private static final int NORMAL = 0;
private static final int ADD_MAHASISWA = 1;
private int kondisi = NORMAL;
public entryDataMahasiswa(){
JInternalFrame frameMahasiswaBaru = new JInternalFrame(
"Data Username dan Password Mahasiswa", false,true,false,true);
desktopPane.add( frameMahasiswaBaru );
Container c = frameMahasiswaBaru.getContentPane();
tombolAdd = new JButton( "Add" );
getRootPane().setDefaultButton( tombolAdd );
JLabel labelUsername = new JLabel( "UserName :", SwingConstants.RIGHT );
labelUsername.setBorder(BorderFactory.createEmptyBorder(
5,5,5,5 ) );
textUsername = new JTextField( null,30 );
textUsername.setEnabled( true );
JLabel labelPassword = new JLabel( "Password : ", SwingConstants.RIGHT );
labelPassword.setBorder(BorderFactory.createEmptyBorder(
5,5,0,0 ) );
textPassword = new JPasswordField( null,15 );
// untuk menampilkan panel username dn password//
JPanel panelUsername = new JPanel( new GridLayout(
1,2,0,3));
panelUsername.add( labelUsername );
panelUsername.add( textUsername );
JPanel panelPassword = new JPanel( new GridLayout(
1,2,0,3));
panelPassword.add( labelPassword );
panelPassword.add( textPassword );
// jika dihilangkan maka tampilan untuk memasukan new login tidak tampil //
JPanel panelBawah = new JPanel( new GridLayout( 5,1 ) );
panelBawah.add( panelUsername );
panelBawah.add( panelPassword );
panelBawah.add( panelPassword );
panelBawah.setPreferredSize( new Dimension(340, 110 ) );
c.setLayout( new BorderLayout() );
JPanel panelTombol = new JPanel( new FlowLayout(
FlowLayout.CENTER,0,5 ));
panelTombol.add( tombolAdd );
c.add( panelBawah, BorderLayout.LINE_START );
c.add( panelTombol,BorderLayout.PAGE_END );
TombolHandler handler = new TombolHandler();
tombolAdd.addActionListener( handler );
frameMahasiswaBaru.addInternalFrameListener(
new InternalFrameAdapter() {
public void internalFrameOpened(InternalFrameEvent event){
menumasukanlogin.setEnabled( false );}
Lampiran 2: Listing Program Katalog Perpustakaan U.K. Petra(sambungan)
public void internalFrameClosed(InternalFrameEvent event){
menumasukanlogin.setEnabled( true );}});
frameMahasiswaBaru.pack();
int offset = 30 * desktopPane.getAllFrames().length;
frameMahasiswaBaru.setLocation( offset,offset );
frameMahasiswaBaru.setVisible( true );
frameMahasiswaBaru.show();}
protected class TombolHandler implements ActionListener { boolean tampil;
public void actionPerformed ( ActionEvent e ){
if ( e.getActionCommand() == "Add" ) { if ( textUsername.getText() == null ||
textUsername.getText().equals( "" ) ||
textPassword.getPassword() == null ||
textPassword.getPassword().equals( "" )) JOptionPane.showMessageDialog(
desktopPane,"Data Kurang Lengkap");
else {
kondisi = ADD_MAHASISWA;
cek();
if ( kondisi == NORMAL ) { mySqlInsertData();
normal();}}}}}
private void mySqlInsertData(){
con = null;
try{
int hasil;
koneksi();
if ( !con.isClosed() )
System.out.println( "Koneksi Sukses" );
String namaUser = textUsername.getText();
char[] password = textPassword.getPassword();
String passwd = new String(password);
String sqlMember = "INSERT INTO m_anggota(
FCKD_INDUK,FCNAMA_LENGKAP)" +
"VALUES( '" + namaUser + "','" + passwd + "')";
Statement stmt = con.createStatement();
hasil = stmt.executeUpdate( sqlMember );
JOptionPane.showMessageDialog( desktopPane, "Pemasukan Data Sukses");
con.close();}
catch ( Exception sqlException ) {
JOptionPane.showMessageDialog( desktopPane,
"Exception: " + sqlException.getMessage() );
System.err.println("Exception: " + sqlException.getMessage());}}
private void cek(){
if ( kondisi == ADD_MAHASISWA) {