laporan praktikum 7
TRANSCRIPT
![Page 1: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/1.jpg)
LAPORAN PRAKTIKUM 7
MOBILE PROGRAMMING
Oleh :
Sendi Hakim (1083068)
Kelas : TI / 3B
JURUSAN TEKNIK INFORMATIKA
POLITEKNIK POS INDONESIA
BANDUNG
2010
![Page 2: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/2.jpg)
HALAMAN PENGESAHAN
Judul Praktikum : Persistence
Sub Judul Praktikum : 1. Menambah Item
2. Membaca Record Store
3. Penggunaan Enumerator
4. Penggunaan Record Comparator
5. Penggunaan Record Filter
Tanggal Praktikum : 18 Desember 2010
Tanggal Penyerahan Laporan : 25 Desember 2010
Tempat Praktikum : Laboratorium Komputer 306
Alat dan Software : Sun Java Wireless Toolkit 2.5
Kelas : TI / 3B
Nama : Sendi Hakim (1083068)
Jurusan : Teknik Informatika
Bandung, Desember 2010
Menyetujui
Dosen Pengajar
Azizah Zakiah, S.Kom
![Page 3: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/3.jpg)
KATA PENGANTAR
Puji syukur saya panjatkan ke hadirat Tuhan Yang Maha Esa yang atas kurniaNya kami
dapat menyelesaikan Laporan Praktikum mata kuliah Mobile Programming ini.
Adapun isi dari Laporan ini adalah mengenai Persistence
Demikian Laporan Praktikum Mobile Programming ini saya buat, sebagai hasil
praktikum yang telah saya lakukan. Kritik dan saran yang membangun sangat saya harapkan
sehingga kedepannya nanti dapat lebih baik.
Penyusun,
![Page 4: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/4.jpg)
BAB I
LANDASAN TEORI
1.1 Persistence
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. Pemberian record Id dilaksanakan secara
sekuensial dan nilai yang diberikan kepada record Id pertama pada setiap Record Store adalah 1
(satu). Pada saat sebuah record dihapus, record id-nya tidak akan bisa digunakan kembali. Jika
kita membuat empat buah record dan menghapus record ke-empat, maka record Id selanjutnya
yang akan diberikan oleh system.
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. Pada saat MIDlet suite dihapus dari sebuah device, maka semua record
store yang terkoneksi dengan MIDlet didalam suite tersebut juga akan terhapus.
![Page 5: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/5.jpg)
BAB II
HASIL PRAKTIKUM
PERSISTENCE
2.1 Menambah Item
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(
"Sendi Hakim- politeknik pos 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){
![Page 6: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/6.jpg)
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 kedalam record store
recStore.addRecord(data, 0, data.length);
recStore.closeRecordStore();
}catch(Exception e){
System.out.println(e.toString());
}
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 kedalam record store
String[] dataList= new String[recStore.getNumRecords()];
if (recStore.getNumRecords()>0){
for(int recId=1; recId<=recStore.getNumRecords(); recId++){
int size = recStore.getRecordSize( recId );
if( data == null || data.length < size ){
data=new byte[size+20];
![Page 7: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/7.jpg)
}
//getRecordmemilikireturnvalue berupa panjang dari record
int recLength = recStore.getRecord(recId,data,0);
// Mengkonversikan byte array menjadi String
dataList[recId-1] = new String(data, 0, recLength);
}
}
recStore.closeRecordStore();
return dataList;
}catch (Exception e){
return null;
}
}
}
![Page 8: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/8.jpg)
2.2 Membaca Record Store
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(
"SENDI – POLTEKPOS INDONESIA");
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);
}
}
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();
![Page 9: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/9.jpg)
if(data.length>0){
for(int i=0;i<data.length;i++)
recList.append(data[i],null);
}
}catch (Exception e){
}
}
}
![Page 10: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/10.jpg)
2.3 Penggunaan Enumerator
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(
"Sendi Hakim – Politeknik Pos Indonesia");
public RmsExample2(){
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{
![Page 11: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/11.jpg)
// Buka dan atau buatlah record store dengan nama “RmsExample2”
recStore= RecordStore.openRecordStore("RmsExample2", 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(){
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()){
//MenujuRecordselanjutnya
byte[] recBytes = enumerator.nextRecord();
ByteArrayInputStream in = new ByteArrayInputStream(recBytes);
DataInputStream dIn = new DataInputStream(in);
intcount=dIn.readInt();
String item = dIn.readUTF();
recList.append(count+","+item,null);
dIn.close();
in.close();
}
recStore.closeRecordStore();
![Page 12: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/12.jpg)
}catch (Exception e){
}
}
}
![Page 13: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/13.jpg)
2.4 Penggunaan Record Comparator
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class RmsComparator extends MIDlet implements
CommandListener,RecordComparator {
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(
"Sendi Hakim – Politeknik Pos Indonesia");
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(){
![Page 14: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/14.jpg)
}
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());
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(){
![Page 15: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/15.jpg)
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);
intcount=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);
![Page 16: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/16.jpg)
} else{
return(EQUIVALENT);
}
}
}
}
![Page 17: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/17.jpg)
2.5 Penggunaan Record Filter
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(
"Sendi Hakim – Politeknik Pos Indonesia");
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);
![Page 18: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/18.jpg)
}
}
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();
![Page 19: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/19.jpg)
}
}
public void dispRec(){
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);
intcount=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);
![Page 20: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/20.jpg)
} 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);
intcount=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);
}
}
![Page 21: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/21.jpg)
![Page 22: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/22.jpg)
2.6 LATIHAN
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
public class RmsPrefs implements RecordFilter {
String searchName = null;
public boolean matches(byte[] candidate){
boolean isaMatch = false;
try {
ByteArrayInputStream bIn = new ByteArrayInputStream(candidate);
DataInputStream dIn = new DataInputStream(bIn);
String item = dIn.readUTF();
if (searchName != null){
if (searchName.indexOf(item) != -1){
isaMatch = true;
}
}
dIn.close();
bIn.close();
} catch (Exception e){}
return(isaMatch);
}
public String readVar(RecordStore recStore, String name, String defaultValue){
String value = defaultValue;
searchName = name;
try {
// Load contents of Record Store
RecordEnumeration enumerator = recStore.enumerateRecords(this, null, false);
// get only the first matching record
![Page 23: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/23.jpg)
if (enumerator.hasNextElement()){
// Get the next record
byte[] recBytes = enumerator.nextRecord();
ByteArrayInputStream in = new ByteArrayInputStream(recBytes);
DataInputStream dIn = new DataInputStream(in);
String sname = dIn.readUTF();
value = dIn.readUTF();
dIn.close();
in.close();
}
} catch (Exception e){}
return(value);
}
public void writeString(RecordStore recStore, String name, String value){
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dOut = new DataOutputStream(out);
// Store the name
dOut.writeUTF(name);
// Store the value
dOut.writeUTF(value);
byte[] bytes = out.toByteArray();
// Write the Record into the Store
recStore.addRecord(bytes, 0, bytes.length);
dOut.close();
out.close();
} catch (Exception e){}
}
}
![Page 24: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/24.jpg)
![Page 25: LAPORAN PRAKTIKUM 7](https://reader034.vdocuments.site/reader034/viewer/2022051014/552129df497959842f8b52c0/html5/thumbnails/25.jpg)
BAB III
KESIMPULAN
3.1 Kesimpulan
Adapun kesimpulan yang dapat diperoleh berdasarkan hasil pembahasan dan praktikum, yaitu di
dalam Persistence adalah 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.