} };
return
convertView; }
}
7. UUModel
public class
UUModel {
public
String
bab
;
public
String
name
;
public
String
pattern
;
public
String[]
contentLines
;
public int
[]
pos
;
public UUModelString bab, String name, String pattern, String[]
contentLines,
int
[] pos {
this .
bab = bab;
this
.
name
= name;
this
.
pattern
= pattern;
this
.
contentLines
= contentLines;
this
.
pos
= pos; }
}
8. SearchActivity.class
package
com.tongam.uupa;
import
android.content.res.Resources;
import
android.os.Bundle;
import
android.provider.MediaStore;
import android.support.annotation.Nullable
;
import
android.support.v7.app.AppCompatActivity;
import android.util.Log;
import
android.view.View;
import android.widget.Button;
import
android.widget.EditText;
import
android.widget.ListView;
import
android.widget.TextView;
import
android.widget.Toast;
import
org.w3c.dom.Text;
import
java.io.ByteArrayOutputStream;
import java.io.File;
import
java.io.IOException;
import java.io.InputStream;
import
java.net.URL;
import java.text.DecimalFormat;
import
java.util.ArrayList;
import
java.util.List;
A-9
Universitas Sumatera Utara
public class
SearchActivity
extends
AppCompatActivity {
private
ListView
listView
;
private TextView
statusTextView ;
private
EditText
searchEditText
;
private
Button
boyerMoreButton
;
private
Button
rabinKarpButton
;
private
ArrayListUUModel
uuModels
;
private
UUAdapter
uuAdapter
;
private int MAX_CHAPTER
= 14
; Override
protected void onCreate
Nullable Bundle savedInstanceState
{
super .onCreatesavedInstanceState;
setContentViewR.layout.
activity_search ;
initialisasi view
listView
= ListView findViewByIdR.id. item_list_view
;
statusTextView
= TextView findViewByIdR.id.
status_text_view ;
searchEditText
= EditText findViewByIdR.id.
search_edit_text ;
boyerMoreButton
= Button findViewByIdR.id.
boyer_more_button ;
rabinKarpButton
= Button findViewByIdR.id.
rabin_karp_button ;
initial variable array list dengan item UUModel
uuModels
=
new
ArrayListUUModel; initial adapter dengan data list uuModels
uuAdapter
=
new
UUAdapter
this
, ,
uuModels
; pasangkan adapter ke listview
listView
.setAdapter
uuAdapter
; event saat tombol pencarian dengan boyer moore di klik
boyerMoreButton
.setOnClickListener
new
View.OnClickListener { Override
public void onClickView view {
ngasih status searching
statusTextView
.setText
Searching...
;
statusTextView
.setVisibilityView. VISIBLE
; menghapus pencarian lama
uuModels
.clear;
uuAdapter
.clear; mengambil kata dari kata yg di input lali di
konvert ke string
A-10
Universitas Sumatera Utara
String pattern =
searchEditText
.getText.toString.toLowerCase; jika tdk memasukkan kata maka beri peringatan
silahkan isi kata yang dicari.
if pattern.isEmpty {
Toast.makeTextSearchActivity.
this
,
Silahkan isi kata yang dicari.
, Toast. LENGTH_SHORT
.show; }
else
{ inisialisasi running time awal
long
startMillis = System.currentTimeMillis;
long
endMillis = ;
int
banyak_kata= ;
for int
i = 1
; i =
MAX_CHAPTER
; i++ { membaca bab di folder resourseraw dari
bab1 smp dgn 14 InputStream inputStream =
getResources.openRawResource getResources.getIdentifier
bab_
+ i,
raw
, getPackageName;
baca isi file String content =
readTextFileinputStream; pisahkan content per baris
String[] contentLines = content.split
\r\n
; inisialisasi posisi
int
[] pos =
new int
[contentLines.
length
]; search per lines
boolean
founded =
false
; anggap belum
ditemukan
for int
j = ; j contentLines.
length
; j++{
inisial pencarian boyer moore BoyerMoore bm =
new
BoyerMoorepattern, contentLines[j].toLowerCase; inisial awal -1anggap belum
ditemukan pos[j] = -
1 ;
match found?
if
bm.check2 { set posisi dgn apa yg
ditemukan oleh bm pos[j] = bm.getFoundedAt;
beritahu bahwa sdh ada yg ketemu
founded =
true
; banyak_kata++;
A-11
Universitas Sumatera Utara
} }
jika ketemu...
if
founded{ set data yg sdh ketemu pada UUmodel
UUModel uuModel =
new
UUModel + i,
BAB
+ i, pattern, contentLines, pos; tambah kan ke list UUModels
uuModels
.adduuModel; }
} endMillis = System.currentTimeMillis;
update data
uuAdapter
.notifyDataSetChanged; set status text
if uuModels
.size {
DecimalFormat formatter =
new
DecimalFormat
, ;
statusTextView
.setText
Terdapat
+
uuModels
.size +
bab,
+banyak_kata+
kata dengan durasi
+ formatter.formatendMillis-startMillis +
ms
; }
else
{
statusTextView
.setText
Tidak ditemukan kata yang dicari
; }
} }
};
rabinKarpButton
.setOnClickListener
new
View.OnClickListener { Override
public void
onClickView view {
statusTextView
.setText
Searching...
;
statusTextView
.setVisibilityView. VISIBLE
;
uuModels
.clear;
uuAdapter .clear;
String pattern =
searchEditText
.getText.toString.toLowerCase;
if
pattern.isEmpty { Toast.makeTextSearchActivity.
this
,
Silahkan isi kata yang dicari.
, Toast. LENGTH_SHORT
.show; }
else
{
long
startMillis = System.currentTimeMillis;
long
endMillis = ;
int banyak_kata=
;
A-12
Universitas Sumatera Utara
for int
i = 1
; i =
MAX_CHAPTER
; i++ { InputStream inputStream =
getResources.openRawResource getResources.getIdentifier
bab_ + i,
raw
, getPackageName;
String content = readTextFileinputStream;
String[] contentLines = content.split
\r\n
;
int
[] pos =
new int
[contentLines.
length
]; search per lines
boolean founded =
false ;
for int
j = ; j contentLines.
length
; j++{
RabinKarp rk =
new
RabinKarppattern, contentLines[j].toLowerCase;
pos[j] = - 1
; match found?
if
rk.check { pos[j] = rk.getFoundedAt;
founded =
true
; banyak_kata++;
} }
if founded{
UUModel uuModel =
new
UUModel + i,
BAB
+ i, pattern, contentLines, pos;
uuModels
.adduuModel; }
} endMillis = System.currentTimeMillis;
update data
uuAdapter .notifyDataSetChanged;
set status text
if uuModels
.size {
DecimalFormat formatter = new
DecimalFormat
, ;
statusTextView
.setText
Terdapat
+
uuModels
.size +
bab,
+banyak_kata+
kata dengan durasi
+ formatter.formatendMillis-startMillis +
ms
; }
else
{
statusTextView
.setText
Tidak ditemukan kata yang dicari
; }
}
A-13
Universitas Sumatera Utara
} };
}
private String readTextFileInputStream inputStream {
ByteArrayOutputStream outputStream =
new
ByteArrayOutputStream;
byte
buf[] =
new byte
[ 1024
];
int
len;
try
{
while
len = inputStream.readbuf = - 1
{ outputStream.writebuf,
, len; }
outputStream.close; inputStream.close;
}
catch
IOException e { }
return
outputStream.toString; }
}
9. ContentActivity.class