You are on page 1of 26

LAPORAN PRAKTIKUM

MOBILE PROGRAMMING

Oleh :
RIZQY SEPTIANA A.P (1083066)

Kelas : TI / 3B

JURUSAN TEKNIK INFORMATIKA


POLITEKNIK POS INDONESIA
BANDUNG
2010
HALAMAN PENGESAHAN

Judul Praktikum : Persistence


Sub Judul Praktikum : 1. Record Store
2. Record Enumeration
3. Record Comparator
4. Record Listener
5. Latihan Penyimpanan Pilihan
Tanggal Praktikum : 18 Desember2010
Tanggal Penyerahan Laporan : 25 Desember 2010
Tempat Praktikum : Laboratorium Komputer 306
Alat dan Software : 1. Laptop ACER Aspire 4530
2. Windows XP SP2
3. NetBeans IDE 6.7.1
Kelas : 3B
Nama : Rizqy Septiana A.P (1083066)
Jurusan : Teknik Informatika

Bandung, Desember 2010


Menyetujui
Dosen Pengajar

Azizah Zakiah, S.Kom

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 1


KATA PENGANTAR

Puji syukur kami panjatkan ke hadirat Tuhan Yang Maha Esa yang atas kurniaNya
kami dapat menyelesaikan Laporan Praktikum mata kuliah Mobile Programming.
Adapun isi dari Laporan ini adalah mengenai pemrograman mobile dengan
menggunakan bahasa Java dengan aplikasi NetBeans IDE 6.7.1, Wireless Toolkit 2.5, dan
notepad yang telah kami lakukan di Laboratorium komputer Teknik Informatika selama masa
perkuliahan di semester gasal ini.
Demikian Laporan Praktikum Mobile Programming ini kami buat, sebagai hasil
praktikum yang telah kami lakukan selama semester gasal ini. Kritik dan saran yang
membangun sangat kami harapkan sehingga kedepannya nanti dapat lebih baik.

Penyusun,

Rizqy Septiana A.P

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 2


DAFTAR ISI

JUDUL LAPORAN ............................................................................................................ 1


HALAMAN PENGESAHAN ............................................................................................ 2
KATA PENGANTAR ....................................................................................................... 3
DAFTAR ISI....................................................................................................................... 4

I. LANDASAN TEORI.................................................................................................... 5
1.1 Persistence............................................................................................................... 5

II. HASIL PRAKTIKUM DAN PEMBAHASAN............................................................ 6


Persistence .................................................................................................................... 6
2.1 Record Store........................................................................................................... 6
2.1.1 Membuat dan membuka sebuah record .............................................................. 6
2.1.2 Menambahkan sebuah record ............................................................................. 6
2.1.3 Mengambil kembali record ................................................................................. 6
2.1.4 Meng-update sebuah record................................................................................ 6
2.1.5 Menghapus record............................................................................................... 7
2.1.6 Mendapatkan list dari Record Store.................................................................... 7
2.1.7 Menyimpan data primitive java .......................................................................... 7
2.1.8 Method lain untuk record strores ......................................................................... 7
2.2 Record Enumeration .............................................................................................. 13
2.3 Record Comparator ............................................................................................... 16
2.4 Record Filter .......................................................................................................... 19
2.5 Record Listener ..................................................................................................... 23
2.6 Latihan Penyimpanan Pilihan ................................................................................ 23

III. KESIMPULAN............................................................................................................ 30
3.1 Kesimpulan ............................................................................................................

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 3


BAB I
LANDASAN TEORI

1.1 PERSISTENCE
MIDP menyediakan sebuah API dimana program dapat menyimpan data-data aplikasi
secara lokal didalam device tersebut. MIDP Record Management System adalah sebuah
fasilitas yang dimiliki oleh MIDlets untuk menyimpan data-data aplikasi pada saat MIDlet
invocations. Data akan disimpan dalam non-volatile memory didalam device. Hal ini berarti,
data-data program yang telah disimpan tidak akan hilang walaupun program di restart
maupun device dimatikan.

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 4


BAB II
HASIL PRAKTIKUM DAN PEMBAHASAN

2.1 RECORD STORE


Sebuah Record Store adalah sebuah koleksi daripada record-record. Record Id didalam
Record Store selalu unique. Record Id akan secara otomatis dialokasikan pada saat
pembentukan sebuah record dan bertindak sebagai index atau primary key.
MIDlets dapat menciptakan lebih dari satu Record Store. Nama dari sebuah record store
didalam MIDlet suite haruslah unique. Nama dari record store juga case sensitive dan
memiliki panjang maksimal 32 karakter.

2.1.1 Membuat dan Membuka sebuah record


Method-method dibawah ini digunakan untuk membuat dan membuka sebuah record
store:

2.1.2 Menambahkan sebuah record


Method addRecord akan membuat record yang baru didalam Record Store dan akan
mengembalikan record ID.

2.1.3 Mengambil kembali Record


Bentuk pertama dari method getRecord akan mengembalikan copy dari data stored
yang ada didalam record tertentu berdasarkan RecordID. Bentuk kedua akan mengcopy data
pada paramater byte array yang telah disediakan. Pada saat menggunakan bentuk kedua, byte
array tersebut haruslah dialokasikan terlebih dahulu. Jika ukuran dari record lebih besar
daripada ukuran dari parameter, maka akan terjadi ArrayIndexOutOfBoundsException.

2.1.4 Meng-update sebuah Record


Anda tidak dapat memodifikasi hanya sebagian dari data record. Jika Anda ingin
untuk memodifikasi sebuah record Anda harus:

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 5


1. Membaca tiap record dengan menggunakan getRecord
2. Meng-update record didalam memory
3. Memanggil setRecord untuk mengupdate data record

2.1.5 Menghapus Record


Pada saat sebuah record dihapus, record Id akan digunakan kembali di pemanggilan
berikutnya pada addRecord. Hal ini berarti, ada sebuah celah didalam Record Id. Oleh karena
itu, tidak disarankan untuk menggunakan counter increment untuk membuat list dari
keseluruhan record didalam record store.

2.1.6 Mendapatkan list dari Record Store didalam MIDLET Suite


Method ini akan mengembalikan array dari nama record store tersebut yang dimiliki
oleh MIDlet suite. Jika MIDlet suite tidak memiliki sebuah Record Store, maka method ini
akan memiliki nilai pengembalian null.

2.1.7 Menyimpan Data Primitive Java


Sejauh ini, data yang telah dibuat dan dibaca dari Record Store adalah berupa String. CLDC
memiliki standard classes dalam manipulasi data primitif. Class tersebut berasal dari standard
library platform Java 2, yaitu Standard Edition (J2SE).

2.1.8 Method Lain untuk Record Stores


Sistem merekam bilamana sebuah Record Store mengalami modifikasi terakhir.
Method getLastModified memberikan informasi bahwa sebuah Record Store mengalami
perubahan terakhir, dalam bentuk long dan sesuai format yang digunakan oleh
System.currentTimeMillis().

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 6


Contoh Program Record Store “Menambah Item”
/* NAMA : RIZQY SEPTIANA A.P
* NPM : 1083066
* FILE : RMSExample.java
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;

public class RMSExample extends MIDlet implements CommandListener{


Display display;
List recList;
RecordStore recStore;
byte[] data=null;
Command exitCommand=new Command("EXIT",Command.EXIT,1);
Command newCommand=new Command("New Item",Command.OK,1);
Ticker ticker=new Ticker(
"JENI-Java Education Network Indonesia");

public RMSExample(){
recList=new List("Record Store",List.IMPLICIT);
dispRec();
recList.setTicker(ticker);
recList.addCommand(exitCommand);
recList.addCommand(newCommand);
recList.setCommandListener(this);
}
public void startApp(){
if(display==null){
display=Display.getDisplay(this);
display.setCurrent(recList);
}
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
}
public void commandAction(Command c,Displayable d){
if(c==exitCommand){
destroyApp(true);
notifyDestroyed();//exit
}
if(c==newCommand){
try{
//buka dan buatlah record store dengan nama "RMSExample1"
recStore=RecordStore.openRecordStore("RmsExample1",true);

//ini adalah String yang akan kita masukkan kedalam record


String newItem="Record#"+recStore.getNextRecordID();

//Konversikan String ke byte array


data=newItem.getBytes();

//tulislah record ke dalam record store


recStore.addRecord(data,0,data.length);
recStore.closeRecordStore();
}catch(Exception e){
System.out.println(e.toString());
}

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 7


dispRec();
}
}
public void dispRec(){
recList.deleteAll();
String[]data=getRecordList();
if(data.length>0){
for(int i=0;i<data.length;i++)
recList.append(data[i],null);
}
}
public String[] getRecordList(){
try{
//buka dan buatlah record store dengan nama "RMSExample1"
recStore=RecordStore.openRecordStore("RmsExample1",true);
//masukkan content ke dalam record store

String[] dataList=new String[recStore.getNumRecords()];


if(recStore.getNumRecords()>0){
for(int recld=1;recld<=recStore.getNumRecords();recld++){
int size=recStore.getRecordSize(recld);
if(data==null || data.length<size){
data=new byte[size+20];
}

//getRecord memiliki return value berupa panjang dari record


int recLength=recStore.getRecord(recld,data,0);
//mengkonversi byte array menjadi String
dataList[recld-1]=new String(data,0,recLength);
}
}
recStore.closeRecordStore();
return dataList;
}catch(Exception e){
return null;
}
}
}

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 8


Output :

Contoh Program Record Store “Membaca Record Store”


/* NAMA : RIZQY SEPTIANA A.P
* NPM : 1083066
* FILE : RmsList.java
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
public class RmsList extends MIDlet implements CommandListener {
Display display;
List recList;
RecordStore recStore;
byte[] data = null;
Command exitCommand = new Command("Exit", Command.EXIT, 1);
Ticker ticker = new Ticker(
"Rizqy Septiana - Informatic Engineering");
public RmsList(){
recList = new List("Record Store List",List.IMPLICIT);
dispList();
recList.setTicker(ticker);
recList.addCommand(exitCommand);
recList.setCommandListener(this);
}
public void startApp() {
if (display == null){
display = Display.getDisplay(this);
display.setCurrent(recList);
}

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 9


}
public void pauseApp(){
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d){
if (c== exitCommand){
destroyApp(true);
notifyDestroyed();// Exit
}
}
public void dispList(){
recList.deleteAll();
try{
String[] data= recStore.listRecordStores();
if(data.length>0){
for(int i=0;i<data.length;i++)
recList.append(data[i],null);
}
}catch (Exception e){
}
}
}

Output

2.2 RECORD ENUMERATION


Memeriksa sebuah record store menggunakan incerementing index adalah tidak efisien.
Record stores yang telah dihapus akan terlewati jika Record Id dari record tersebut tidak

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 10


digunakan kembali. Penggunaan record enumeration dapat menyelesaikan permasalahan
tersebut dengan melakukan pemeriksaaan pada record yang telah dihapus.

Contoh Program Record Enumeration


/* NAMA : RIZQY SEPTIANA A.P
* NPM : 1083066
* FILE : RMSExample2.java
*/

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;

public class RMSExample2 extends MIDlet implements CommandListener{


Display display;
List recList;
RecordStore recStore;
byte[] data=null;
Command exitCommand=new Command("EXIT",Command.EXIT,1);
Command newCommand=new Command("New Item",Command.OK,1);
Ticker ticker=new Ticker(
"JENI-Java Education Network Indonesia");

public RMSExample2(){
recList=new List("Record Store",List.IMPLICIT);
dispRec();
recList.setTicker(ticker);
recList.addCommand(exitCommand);
recList.addCommand(newCommand);
recList.setCommandListener(this);
}
public void startApp(){
if(display==null){
display=Display.getDisplay(this);
display.setCurrent(recList);
}
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
}
public void commandAction(Command c,Displayable d){
if(c==exitCommand){
destroyApp(true);
notifyDestroyed();//exit
}
if(c==newCommand){
try{
//buka dan buatlah record store dengan nama "RMSExample2"
recStore=RecordStore.openRecordStore("RmsExample2",true);

ByteArrayOutputStream out=new ByteArrayOutputStream();


DataOutputStream dOut=new DataOutputStream(out);
//menyimpan sebuah integer
dOut.writeInt(recStore.getNextRecordID()*recStore.getNextRecordID());
//Menyimpan sebuah string

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 11


dOut.writeUTF("Record#"+recStore.getNextRecordID());
byte[]bytes=out.toByteArray();
//Menuliskan Record pada Store
recStore.addRecord(bytes,0,bytes.length);
dOut.close();
out.close();
recStore.closeRecordStore();
}catch(Exception e){
System.out.println(e.toString());
}
dispRec();
}
}
public void dispRec(){
recList.deleteAll();
try{
//Membuka atau membuat sebuah record store dengan nama "RmsExample2"
recStore=RecordStore.openRecordStore("RmsExample2",true);
//Mengambil isi dari record store
RecordEnumeration enumerator=recStore.enumerateRecords(null,null,false);
while (enumerator.hasNextElement()){
//Menuju Record selanjutnya
byte[] recBytes=enumerator.nextRecord();
ByteArrayInputStream in=new ByteArrayInputStream(recBytes);
DataInputStream dln=new DataInputStream(in);
int count= dln.readInt();
String item=dln.readUTF();
recList.append(count+","+item,null);
dln.close();
in.close();
}
recStore.closeRecordStore();
}catch(Exception e){
}
}
}

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 12


Output

2.3 RECORD COMPARATOR


Pengurutan sebuah enumerasi dapat didefinisikan menggunakan sebuah Record
Comparator. Record Comparator digunakan pada method enumerateRecords. Jika anda ingin
mengurutkan output dari enumerasi, anda harus membuat comparator dan
mengimplementasikannya sebagai parameter kedua pada enumerateRecords.

Contoh Program Record Comparator


/* Nama : Rizqy Septiana A.P
* TI 3B – 1083066
* FILE : RmsComparator.java
*/

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class RmsComparator extends MIDlet implements CommandListener,RecordComparator {

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 13


Display display;
List recList;
RecordStore recStore;
byte[] data = null;
Command exitCommand = new Command("Exit", Command.EXIT, 1);
Command newCommand = new Command("New Item", Command.OK, 1);
Ticker ticker = new Ticker("Rizqy Septiana - Informatic Engineering");
public RmsComparator(){
recList = new List("Record List",List.IMPLICIT);
dispRec();
recList.setTicker(ticker);
recList.addCommand(exitCommand);
recList.addCommand(newCommand);
recList.setCommandListener(this);
}
public void startApp() {
if (display == null){
display = Display.getDisplay(this);
display.setCurrent(recList);
}
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d){
if (c== exitCommand){
destroyApp(true);
notifyDestroyed();// Exit
}
if (c== newCommand){
try{
// Buka dan atau buatlah record store dengan nama “RmsComparator”
recStore= RecordStore.openRecordStore("RmsComparator", true);
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dOut= new DataOutputStream(out);
//Menyimpansebuahinteger
dOut.writeInt(recStore.getNextRecordID()* recStore.getNextRecordID());
// Menyimpan sebuah string
dOut.writeUTF("Record #" + recStore.getNextRecordID());

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 14


byte[] bytes = out.toByteArray();
// Menuliskan Record pada Store
recStore.addRecord(bytes,0,bytes.length);
dOut.close();
out.close();
recStore.closeRecordStore();
}catch(Exception e){
System.out.println(e.toString());
}
dispRec();
}
}
public void dispRec(){
recList.deleteAll();
try{
// Membuka atau membuat sebuah record store dengan nama "RmsComparator"
recStore= RecordStore.openRecordStore("RmsComparator", true);
// Mengambil isi dari record store
RecordEnumeration enumerator
= recStore.enumerateRecords(null, this, false);
while (enumerator.hasNextElement()){
//MenujuRecordselanjutnya
byte[] recBytes = enumerator.nextRecord();
ByteArrayInputStream in = new ByteArrayInputStream(recBytes);
DataInputStream dIn = new DataInputStream(in);
int count=dIn.readInt();
String item = dIn.readUTF();
recList.append(count+","+item,null);
dIn.close();
in.close();
}
recStore.closeRecordStore();
}catch (Exception e){
}
}
public int compare(byte[] rec1, byte[] rec2){
String record1 = new String(rec1).toUpperCase();
String record2 = new String(rec2).toUpperCase();
//Sorting Ascending
if (record1.compareTo(record2) < 0){

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 15


return(PRECEDES);
} else{
if (record1.compareTo(record2) > 0){
return(FOLLOWS);
} else{
return(EQUIVALENT);
}
}
}
}

Output

2.4 RECORD FILTER


Kita dapat menggunakan sebuah filter untuk mendapatkan hanya record yang kita
inginkan. Program Anda harus mengimpelementasikan method match() untuk menyeleksi
record. Method tersebut akan menghasilkan nilai true jika record sesuai dengan kriteria.
Contoh Program Record Filter
/* NAMA : RIZQY SEPTIANA A.P
* NPM : 1083066
* FILE : RmsFilter.java
*/

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 16


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class RmsFilter extends MIDlet implements
CommandListener,RecordComparator,RecordFilter {
Display display;
List recList;
RecordStore recStore;
byte[] data = null;
Command exitCommand = new Command("Exit", Command.EXIT, 1);
Command newCommand = new Command("New Item", Command.OK, 1);
Ticker ticker = new Ticker("Rizqy Septiana - Informatic Engineering");
public RmsFilter(){
recList = new List("Record List",List.IMPLICIT);
dispRec();
recList.setTicker(ticker);
recList.addCommand(exitCommand);
recList.addCommand(newCommand);
recList.setCommandListener(this);
}
public void startApp() {
if (display == null){
display = Display.getDisplay(this);
display.setCurrent(recList);
}
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d){
if (c== exitCommand){
destroyApp(true);
notifyDestroyed();// Exit
}
if (c== newCommand){
try{
// Buka dan atau buatlah record store dengan nama “RmsFilter”
recStore= RecordStore.openRecordStore("RmsFilter", true);
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dOut= new DataOutputStream(out);
//Menyimpansebuahinteger
dOut.writeInt(recStore.getNextRecordID()* recStore.getNextRecordID());
// Menyimpan sebuah string
dOut.writeUTF("Record #" + recStore.getNextRecordID());
byte[] bytes = out.toByteArray();
// Menuliskan Record pada Store
recStore.addRecord(bytes,0,bytes.length);
dOut.close();
out.close();
recStore.closeRecordStore();
}catch(Exception e){
System.out.println(e.toString());
}
dispRec();
}
}
public void dispRec(){

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 17


recList.deleteAll();
try{
// Membuka atau membuat sebuah record store dengan nama "RmsFilter"
recStore= RecordStore.openRecordStore("RmsFilter", true);
// Mengambil isi dari record store
RecordEnumeration enumerator
= recStore.enumerateRecords(this, this, false);
while (enumerator.hasNextElement()){
//MenujuRecordselanjutnya
byte[] recBytes = enumerator.nextRecord();
ByteArrayInputStream in = new ByteArrayInputStream(recBytes);
DataInputStream dIn = new DataInputStream(in);
int count=dIn.readInt();
String item = dIn.readUTF();
recList.append(count+","+item,null);
dIn.close();
in.close();
}
recStore.closeRecordStore();
}catch (Exception e){
}
}
public int compare(byte[] rec1, byte[] rec2){
String record1 = new String(rec1).toUpperCase();
String record2 = new String(rec2).toUpperCase();
//Sorting Ascending
if (record1.compareTo(record2) < 0){
return(PRECEDES);
} else{
if (record1.compareTo(record2) > 0){
return(FOLLOWS);
} else{
return(EQUIVALENT);
}
}
}
public boolean matches(byte[] candidate){
boolean isaMatch = false;
try{
ByteArrayInputStream bin = new ByteArrayInputStream(candidate);
DataInputStream dIn = new DataInputStream(bin);
int count=dIn.readInt();
String item = dIn.readUTF();
// mendapatkan record dengan akhiran “0”
if (item.endsWith("0")){
isaMatch=true;
} else{
isaMatch=false;
}
}catch (Exception e){recList.append(e.toString(), null); }
return(isaMatch);
}
}

Output

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 18


2.5 RECORD LISTENER
Sebuah Record Store dapat menggunakan lebih dari satu record listener. Record listener
adalah object yang dipanggil pada saat sebuah record ditambahkan, diubah atau dihapus dari
record store. Record listeners harus mengimplementasikan interface RecordListener. Record
Listener diregristrasikan pada record store menggunakan method addRecordListener(). Pada
saat sebuah record store ditutup, seluruh record listener yang terkait juga akan dihapus.
Penggunaan method deleteRecordStore() tidak akan menghasilkan pemanggilan
recordDeleted() pada record listener manapun yang terkait.

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 19


2.6 LATIHAN PENYIMPANAN PILIHAN
/* NAMA : RIZQY SEPTIANA A.P
* NPM : 1083066
* FILE : DemoRMS.java
*/

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;

public class DemoRMS extends MIDlet


implements CommandListener {

private Display display;


private Form form;
private RecordStore rs;
private RecordEnumeration re;
private ChoiceGroup choicegroup;
private Alert alert;
private List list;

//untuk proses entri data


private Form entri; private TextField tfNama, tfNoTelp;

private final Command cmdKeluar =


new Command("Keluar", Command.EXIT, 1);
private final Command cmdPilih =
new Command("Pilih", Command.OK, 1);
private final Command cmdSimpan =
new Command("Simpan", Command.SCREEN, 1);
private final Command cmdHapus =
new Command("Hapus", Command.SCREEN, 1);
private final Command cmdKembali =
new Command("Kembali", Command.BACK, 1);

public DemoRMS() {
display = Display.getDisplay(this);

alert = new Alert(null);


alert.setTimeout(Alert.FOREVER);

list = new List(null, Choice.IMPLICIT);

rs = null;
// membuat atau membuka record store
try {
rs = RecordStore.openRecordStore("contohDB", true);
} catch (RecordStoreException rse) {
alert.setString("Record store tidak dapat dibuka. " +
"Aplikasi akan dihetikan");
alert.setType(AlertType.ERROR);
display.setCurrent(alert, null);
System.exit(1);
}

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 20


}

public void startApp() {


form = new Form("Demo RMS");

choicegroup = new ChoiceGroup("Menu:", Choice.EXCLUSIVE);


choicegroup.append("Tambah Record", null);
choicegroup.append("Daftar Record", null);

form.append(choicegroup);
form.addCommand(cmdKeluar);
form.addCommand(cmdPilih);
form.setCommandListener(this);
display.setCurrent(form);
}

public void pauseApp() {


}

public void destroyApp(boolean unconditional) {


}

public void commandAction(Command c, Displayable s) {


if (c == cmdKeluar) {
destroyApp(false);
notifyDestroyed();
} else if (c == cmdPilih) {
switch (choicegroup.getSelectedIndex()) {
case 0: {
entriData();
break;
}
case 1: {
lihatRecord();
break;
}
}
} else if (c == cmdKembali) {
display.setCurrent(form);
} else if (c == cmdSimpan) {
alert.setType(AlertType.INFO);
if (!tfNama.equals("") && !tfNoTelp.equals("")) {
tambahRecord(tfNama.getString(), tfNoTelp.getString());
alert.setString("Data baru telah berhasil disimpan");
display.setCurrent(alert, form);
} else {
alert.setString("Data NAMA dan NO. TELP " +
"tidak boleh kosong");
display.setCurrent(alert, entri);
}
} else if (c == cmdHapus) {
int pos =
list.getString(list.getSelectedIndex()).indexOf(" [");
String nama = list.getString(
list.getSelectedIndex()).substring(0, pos);
hapusRecord(nama);
}
}

public void tambahRecord(String nama, String noTelp) {

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 21


byte[] temp = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeUTF(nama);
dos.writeUTF(noTelp);
temp = baos.toByteArray();
} catch (IOException ioe) {
ioe.printStackTrace();
}
try {
rs.addRecord(temp, 0, temp.length);
} catch (RecordStoreNotOpenException rsnoe) {
rsnoe.printStackTrace();
} catch (RecordStoreException rse) {
rse.printStackTrace();
}
}

public void lihatRecord() {


byte[] temp = null;
list.setTitle("Daftar Record");
list.deleteAll();
try {
re = rs.enumerateRecords(null, null, false);
while (re.hasNextElement()) {
int i = re.nextRecordId();
temp = rs.getRecord(i);
ByteArrayInputStream bais =
new ByteArrayInputStream(temp);
DataInputStream dis = new DataInputStream(bais);
try {
String nama = dis.readUTF();
String noTelp = dis.readUTF();
list.append(nama + " [" + noTelp + "]", null);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
list.addCommand(cmdKembali);
list.addCommand(cmdHapus);
list.setCommandListener(this);
display.setCurrent(list);
} catch (InvalidRecordIDException invID) {
invID.printStackTrace();
} catch (RecordStoreNotOpenException rsnoe) {
rsnoe.printStackTrace();
} catch (RecordStoreException rse) {
rse.printStackTrace();
}

public void hapusRecord(String nama) {


byte[] temp = null;
try {
re = rs.enumerateRecords(null, null, false);
while (re.hasNextElement()) {
int i = re.nextRecordId();
temp = rs.getRecord(i);

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 22


ByteArrayInputStream bais =
new ByteArrayInputStream(temp);
DataInputStream dis = new DataInputStream(bais);
try {
String vNama = dis.readUTF();
if (vNama.equals(nama)) {
rs.deleteRecord(i);
break;
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
re.rebuild();
lihatRecord();
} catch (RecordStoreNotOpenException rsnoe) {
rsnoe.printStackTrace();
} catch (RecordStoreException rse) {
rse.printStackTrace();
}
}

public Form entriData() {


entri = new Form("Entri Data");
tfNama = new TextField("Nama:", null, 25, TextField.ANY);
tfNoTelp = new TextField("No. Telepon:", null, 15,
TextField.PHONENUMBER);
entri.append(tfNama);
entri.append(tfNoTelp);
entri.addCommand(cmdSimpan);
entri.addCommand(cmdKembali);
entri.setCommandListener(this);
display.setCurrent(entri);
return entri;
}
}

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 23


Output Program

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 24


BAB III
KESIMPULAN
3.1 Kesimpulan
Kesimpulan berdasarkan hasil pembahasan dan praktikum, yaitu:
MIDP menyediakan sebuah API dimana program dapat menyimpan data-data aplikasi secara
lokal didalam device tersebut. Data akan disimpan dalam non-volatile memory didalam
device.
MIDP Record Management System adalah sebuah fasilitas yang dimiliki oleh MIDlets
untuk menyimpan data-data aplikasi pada saat MIDlet invocations. Data akan disimpan
dalam non-volatile memory didalam device. Hal ini berarti, data-data program yang telah
disimpan tidak akan hilang walaupun program di restart maupun device dimatikan.

Rizqy Septiana A.P / Politeknik Pos Indonesia Page 25

You might also like