LAPORAN PRAKTIKUM 7

25
LAPORAN PRAKTIKUM 7 MOBILE PROGRAMMING Oleh : Sendi Hakim (1083068) Kelas : TI / 3B JURUSAN TEKNIK INFORMATIKA POLITEKNIK POS INDONESIA BANDUNG 2010

Transcript of LAPORAN PRAKTIKUM 7

Page 1: LAPORAN   PRAKTIKUM 7

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

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

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

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

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

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

}

//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

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

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

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

// 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

}catch (Exception e){

}

}

}

Page 13: LAPORAN   PRAKTIKUM 7

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

}

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

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

} else{

return(EQUIVALENT);

}

}

}

}

Page 17: LAPORAN   PRAKTIKUM 7

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

}

}

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

}

}

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

} 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
Page 22: LAPORAN   PRAKTIKUM 7

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

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
Page 25: LAPORAN   PRAKTIKUM 7

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.