• Tidak ada hasil yang ditemukan

LAMPIRAN A Project SendSMS /////////////////////////////////////////////////////// ParsingKata.java

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN A Project SendSMS /////////////////////////////////////////////////////// ParsingKata.java"

Copied!
13
0
0

Teks penuh

(1)

DAFTAR PUSTAKA

[1] Patrick Naughton, Java Handbook, ANDI and McGraw-Hikk

Co,Yogyakarta, 2002 .

[2] M.Shalahuddin, Rosa A.S., Pemrograman J2ME, Informatika,

Bandung, 2006.

[3] Hendrawan, “Slide Kuliah ET-5014- Dictionary Techniques”.

[4] Hendrawan, “Slide Kuliah ET-5014-Informasi dan Coding”.

[5]

http://ebooks.ee.itb.ac.id/ComputerHardware/Compression_Algorithm/j

eff-Compression-Tute.htm, 12 Juni 2007.

[6]

http://en.wikipedia.org/wiki/Short_Message_Service, 17 Juni 2007.

[7]

http://homepages.uel.ac.uk/D.Bowden, 10 Juli 2007

[8]Budi Raharjo, Imam Heryanto, Arif Haryono, Tuntunan Pemrograman

(2)

LAMPIRAN A

Project SendSMS

///////////////////////////////////////////////////////

ParsingKata.java

package src;

public class ParsingKata {

public static short[] parser(String kalimat) { String [] kata = new String [320];

String [] katabaru = new String[320]; int j = 0;

int l = 0; int i;

for (i = 0 ; i < kalimat.length() ; i++) {

//misahin kalo ada spasi

if (kalimat.substring(i,i+1).equals(" ")) {

String tmp = "";

tmp = kalimat.substring(j,i+1); kata [i] = tmp.trim();

j = i+1; }

//buat objek buat nyimpen kata sebelum spasi if (i == kalimat.length()-1) { kata[i] = kalimat.substring(j,i+1); } } //nge-short null

for (int k = 0 ; k < kalimat.length() ; k++) { if (kata[k] != null) { katabaru[l]= kata[k]; l++; } }

short [] b = new short [2*i]; String temp;

byte [] z = new byte [2*l]; for (int m = 0 ; m < l ; m++) {

temp = katabaru[m];

System.out.println(katabaru[m]); // ngeluarin parsing katanya System.out.println(""+ParsingHuruf.huruf(temp)); // ngeluarin dict ParsingHuruf.sisa = new StringBuffer();

b[2*m] = (byte)(ParsingHuruf.huruf(temp) >>> 8);

(3)

}

short [] baru = new short [2*l]; for (int r = 0 ; r < 2*l ; r++) { System.out.println(b[r]+","); baru [r] = b[r]; } return baru; } }

///////////////////////////////////////////////////////

ParsingHuruf.java

package src; import java.util.Vector; import java.lang.StringBuffer; public class ParsingHuruf { public static StringBuffer sisa;

/** Creates a new instance of ParsingHuruf */ public static int huruf(String kata) {

boolean ketemu = false; int i;

int j = 0;

Vector dict = DictTable.getDict();

for (i = 0 ; i < kata.length() ; i++) {

String temp = kata.substring(i);

sisa = new StringBuffer(kata.substring(0, i)); // nyimpen huruf yang ga ada di dict

for (j = 0 ; j < dict.size() ; j++){

String temp2 = (String)dict.elementAt(j);

if (temp.equals(temp2)){ // buat nyocokin ama dict ketemu = true;

break; }else {

String hasil="";

hasil = kata.substring(0, i+1); // nyimpen hasilnya }

}

if (ketemu == false) return 0; else return j;

} return -1; }

(4)

///////////////////////////////////////////////////////

SendSMS.java

import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import src.*;

public class SendSMS extends MIDlet implements CommandListener { private Display display;

private Command cmExit, cmOk; private PhoneInput form;

public TextBox tbClip;

public SendSMS(){

display = Display.getDisplay(this);

cmOk = new Command("Lanjut", Command.OK, 1); cmExit = new Command("Keluar", Command.EXIT, 1); tbClip = new TextBox("Pesan", "",600, TextField.ANY); tbClip.addCommand(cmOk);

tbClip.addCommand(cmExit); tbClip.setCommandListener(this); }

public void startApp(){

display.setCurrent(tbClip); }

public void pauseApp(){ }

public void destroyApp(boolean unconditional){ }

public void commandAction(Command c, Displayable s) { if (c == cmOk){

String smsPort = getAppProperty("SMS-Port");

form = new PhoneInput(this, display, tbClip.getString(), smsPort); display.setCurrent(form);

}else if (c == cmExit){ exitMIDlet();

} }

public void exitMIDlet(){

destroyApp(false); notifyDestroyed(); } }

///////////////////////////////////////////////////////

PhoneInput.java

import javax.microedition.lcdui.*;

(5)

import javax.microedition.io.*; import javax.wireless.messaging.*; import java.io.IOException; import src.*; class PhoneInput extends Form

implements ItemCommandListener, ItemStateListener, CommandListener, Runnable {

private Display display;

private Command cmSend, cmCancel, cmExit; private TextField tfPhone;

private SendSMS midlet; private String msg;

private StringItem itemCancel, itemSend, itemExit; private Alert al;

private String adr; private String smsPort;

public PhoneInput(SendSMS midlet, Display display, String msg, String smsPort) { super("Nomor HP");

this.display = display; this.midlet = midlet;

this.msg = msg;

this.smsPort = smsPort;

cmSend = new Command("Kirim", Command.OK, 1); cmCancel = new Command("Batal", Command.CANCEL, 1); cmExit = new Command("Keluar", Command.EXIT, 1);

tfPhone = new TextField("Nomor HP", "", 30,TextField.PHONENUMBER); this.append(tfPhone);

this.setCommandListener(this);

itemSend = new StringItem(null, "Kirim", Item.BUTTON); itemSend.setDefaultCommand(cmSend);

itemSend.setItemCommandListener(this); append(itemSend);

itemCancel = new StringItem(null, "Batal", Item.BUTTON); itemCancel.setDefaultCommand(cmCancel);

itemCancel.setItemCommandListener(this); append(itemCancel);

itemExit = new StringItem(null, "Keluar", Item.BUTTON); itemExit.setDefaultCommand(cmExit);

itemExit.setItemCommandListener(this); append(itemExit); setItemStateListener(this); }

public void itemStateChanged(Item item) { }

(6)

public void commandAction(Command c, Item item) { if (c == cmSend) {

if ((tfPhone.size() == 0)){

al = new Alert("Error", "Nomor HP Tidak Valid", null, AlertType.ERROR);

al.setTimeout(Alert.FOREVER); display.setCurrent(al);

}else {

this.adr = "sms://" + tfPhone.getString() + ":" + smsPort;

new Thread(this).start();

}

}else if(c == cmCancel){

display.setCurrent(midlet.tbClip); }else if(c == cmExit){

midlet.exitMIDlet(); }

}

public void commandAction(Command c, Displayable s) { }

public void run() {

MessageConnection smsconn = null;; try {

smsconn = (MessageConnection)Connector.open(adr);

TextMessage txtmessage = (TextMessage)smsconn.newMessage( MessageConnection.TEXT_MESSAGE); txtmessage.setAddress(adr); short [] m = ParsingKata.parser(msg); String s = "";

for (int i = 0 ; i < m.length ; i++) { s = s + String.valueOf(m[i]) + ","; } txtmessage.setPayloadText(String.valueOf(s)); //String m = ParsingKata.parser(msg); //txtmessage.setPayLoadText(String.valueOf(m)); System.out.println(s);

int persentase = ((s.length()*800)/(msg.length()*7));

System.out.println("Besarnya persentase kompresi = "+persentase+"%"); System.out.println("panjang sms = "+msg.length());

smsconn.send(txtmessage);

Alert alert = new Alert("Info", "Pesan Terkirim", null, AlertType.INFO);

(7)

display.setCurrent(alert); } catch (Throwable t) {

System.out.println("error : " + t.toString());

Alert alert = new Alert("Error", "Pesan Gagal Terkirim", null, AlertType.ERROR); alert.setTimeout(Alert.FOREVER); display.setCurrent(alert); } if (smsconn != null) { try { smsconn.close(); } catch (IOException ioe) { } } } }

///////////////////////////////////////////////////////

Project TerimaSMS

///////////////////////////////////////////////////////

Decompress.java

package src; import java.util.*;

public class Decompress {

public static String decompress(byte [] data) {

Vector dict = DictTable.getDict(); String str = "";

boolean ketemu; int temp;

short [] hasil_decode = new short [80];

for (int i = 0; i < data.length/2 ; i++) {

hasil_decode[i] = (short)((short)(data[2*i] << 8) | (short)(data[2*i+1])); temp=0; temp = dict.indexOf(hasil_decode); if (hasil_decode[i]==temp) { ketemu = true; break; } str += dict.elementAt((hasil_decode[i])); str += " ";

(8)

if (data[i]==-1) { break; } } return str; } }

///////////////////////////////////////////////////////

TerimaSMS.java

/*************************************************** Program 5.2. Menerima SMS ***************************************************/ package src; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.wireless.messaging.*; import javax.microedition.io.*; import java.io.IOException; import src.*;

public class TerimaSMS extends MIDlet

implements CommandListener, Runnable, MessageListener { private Display display;

private Alert alert; private TextBox tfPesan; private Thread thread;

private MessageConnection conn; private Message pesan;

private String[] daftarKoneksi; private boolean selesaiProses; private String port;

String [] karakter = new String [100]; String [] hilangkoma = new String [100]; int jumlahdata = 0;

int temp = 0;

private final Command cmdKeluar = new Command("Keluar", Command.EXIT, 1); public TerimaSMS() { port = getAppProperty("Port-SMS"); display = Display.getDisplay(this);

alert = new Alert("Terima SMS"); alert.setTimeout(Alert.FOREVER); alert.addCommand(cmdKeluar);

(9)

alert.setCommandListener(this);

tfPesan = new TextBox(null, null, 500, TextField.ANY); tfPesan.addCommand(cmdKeluar);

tfPesan.setCommandListener(this); }

public void startApp() {

String alamatKoneksi = "sms://:" + port; if (conn == null) {

try {

conn = (MessageConnection) Connector.open(alamatKoneksi); conn.setMessageListener(this);

} catch (IOException ioe) { ioe.printStackTrace(); }

}

daftarKoneksi = PushRegistry.listConnections(true); if (daftarKoneksi == null || daftarKoneksi.length == 0) { alert.setString("Menunggu SMS pada port " + port + "..."); }

startNewThread(); display.setCurrent(alert); }

public void pauseApp() { selesaiProses = true; thread = null; }

public void destroyApp(boolean unconditional) { selesaiProses = true; thread = null; if (conn != null) { try { conn.close(); } catch (IOException e) {} } }

public void commandAction(Command c, Displayable s) { if (c == cmdKeluar || c == Alert.DISMISS_COMMAND) { destroyApp(false);

notifyDestroyed(); }

}

// method ini ada karena kita mengimplementasikan // interface Runnable

public void run() { try {

pesan = conn.receive(); if (pesan != null) {

(10)

String alamatPengirim = pesan.getAddress(); tfPesan.setTitle("Pesan dari: " +

alamatPengirim.substring(6)); if (pesan instanceof TextMessage) {

TextMessage pesanTeks = (TextMessage) pesan;

String awal = pesanTeks.getPayloadText();

for (int i = 0; i < awal.length(); i++) {

karakter [i] = awal.substring(i,i+1); if(jumlahdata == 0) { hilangkoma[jumlahdata] = awal.substring(0,i); jumlahdata++; temp = i; } else {

hilangkoma[jumlahdata] = awal.substring(temp+1 , i); jumlahdata++;

temp = i; }

}

byte [] ubahkebyte = new byte [jumlahdata];

//String m = "";

for (int j = 0; j < jumlahdata ; j++) { ubahkebyte [j] = Byte.parseByte(hilangkoma[j]); //m += ubahkebyte[j] + " "; } String m = Decompress.decompress(ubahkebyte); tfPesan.setString(m); } display.setCurrent(tfPesan); }

} catch (IOException ioe) { ioe.printStackTrace(); }

}

// method ini ada karena kita mengimplementasikan // interface MessageListener

public void notifyIncomingMessage(MessageConnection conn) { if (thread == null) {

startNewThread(); }

}

(11)

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

///////////////////////////////////////////////////////

(12)

LAMPIRAN B

Atribut dan Method Class Java

Atribut dan method yang akan dijelaskan pada lampiran ini hanya atribut dan

method pada class Java yang berkaitan dengan proses kompresi dan dekompresi ,

yaitu class ParsingKata.java,

ParsingHuruf.java,

DictTable.java, Decompress.java

Tabel Lampiran - 1 Atribut Kompresi dan Dekompresi

Deklarasi Fungsi

String [] Menyediakan suatu variabel penampung dalam

bentuk array of string

short [ ] Menyediakan suatu variabel penampung dalam

bentuk array of short

byte [ ] Menyediakan variabel penampung dalam

bentuk array of byte

boolean Nilai kembalian dari atribut ini nilai true atau false

Vector Menyediakan variabel penampung dalam

bentuk kolom seperti vector

Tabel Lampiran - 2 Method Kompresi dan Dekompresi

Deklarasi Fungsi getDict() Suatu cara untuk mendapatkan suatu nilai yang

ada pada dictionary

dict.addElement Menambahkan suatu eleman yang spesifik ke dalam dictionary. Jika elemen sudah ditambahkan maka ukuran vektor dari dictionary akan bertambah 1.

public static string decompress() Suatu metode untuk mengembalikan suatu hasil decoding menjadi kalimat semula

indexOf Mencari nilai indeks dari suatu objek yang

diberikan dengan menggunakan metode persamaan.

elementAt Mengembalikan objek dari suatu nilai indeks

yang diberikan

length() Metode untuk mencari panjang dari suatu objek yang diberikan

(13)

public static short [ ] parser metode yang digunakan untuk memarsing kata

dict.size() Metode untuk mengetahui ukuran dari suatu

dictionary

public static int huruf() Metode untuk memarsing huruf dan membandingkan dengan dictionary. Nilai kembalian dari metode ini adalah indeks dari dictionary

substring() Nilai kembaliannya adalah suatu string baru yang merupakan substring dari string sebelumnya. Substring diawali dari suatu index string tertentu sampai dengan akhir kalimat

Gambar

Tabel Lampiran - 1 Atribut Kompresi dan Dekompresi

Referensi

Dokumen terkait

Hanya 1 Kota dari 26 Kabupaten/Kota di Provinsi Jawa Barat yang dapat mencapai target tersebut pada tahun 2013... CAKUPAN PERSALINAN DITOLONG TENAGA KESEHATAN DI INDONESIA

Perancangan halaman tambah data pakar merupakan halaman untuk menambah ciri-ciri pakar yang digunakan dalam menentukan jenis buah durian yang dapat dilihat pada

To fulfill the minimum Capital Adequacy Ratio (CAR) stipulated by Bank Indonesia as a consequence of the legal transfer of all assets and liabilities from the ) 4 BUR to the

Dengan mengamati guru bernyanyi, siswa dapat mengidentifikasi bentuk pola irama sederhana dalam lagu dengan tepat.. Setelah mengidentifikasi pola irama sederhana,

Sejalan dengan rumusan masalah tersebut di atas, penelitian tahun ke-1 ini bertujuan: (1) mendeskripsikan dan memaknai kecirian register KST kebahasaan lintas-bahasa berbahasa

Pertumbuhan kredit yang luar biasa akan menjadi pendorong utama BBRI menikmati pertumbuhan double - digit pada interest.. income 2019, menghentikan tren pertumbuhan

KOH 10% sering digunakan untuk menipiskan lapisan kitin dengan waktu perendaman 10 jam, karena konsentrasi KOH yang rendah dan membutuhkan waktu yang relatif lama,

Dapat diambil kesimpulan bahwa pola komunikasi yang dilakukan adalah pola komunikasi ketiga yaitu pola komunikasi massa karena komunikasi yang terjadi bukan