UUModel SearchActivity.class Perbandingan Algoritma Boyer-Moore Dan Algoritma Rabin Karp Pada Pencarian Teks Dalam Undang Undang Perlindungan Anak

} }; 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