MainActivity.java Implementasi Algoritma Apostolico-Crochemore Pada Aplikasi Kumpulan Hadits Shahih Berbasis Android

LISTING PROGRAM

1. MainActivity.java

package com.skripsi.zahra.haditsshahih; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.MenuItemCompat; import android.support.v7.app.ActionBar; import android.support.v7.widget.SearchView; import android.view.KeyEvent; import android.view.View; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; Universitas Sumatera Utara public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private boolean isSearchOpened = false; private EditText edPencarian; private MenuItem mSearchAction; List view private ListView lv; Listview Adapter ArrayAdapterString adapter; List untuk dbhadits ListString dbhadits; ALGORITMA APOSTOLICO-CROCHEMORE static int xsize = 256; static int[] kmpNext = new int[xsize]; menghitung fungsi pinggiran pada pattern public static void preKmpString x, int m{ int i,j; i = 0; j = kmpNext[0] = -1; whilei m{ whilej -1 x.charAti = x.charAtj{ j = kmpNext[j]; } i++; j++; char xi = 0; char xj = 0; ifim xi = x.charAti; xj = x.charAtj; ifxi == xj{ kmpNext[i] = kmpNext[j]; } Universitas Sumatera Utara else{ kmpNext[i] = j; }}} public static int AXAMACString x, int m, String y, int n{ Preprocessing int ell, i, j, k; preKmpx, m; ell = 1; try{ forell = 1; x.charAtell - 1 == x.charAtell; ell++{ }}catchException e{} ifell == m{ ell = 0; } Searching i = ell; j = k = 0; whilej = n - m{ whilei m x.charAti == y.charAti+j{ ++i; } ifi = m{ whilek ell x.charAtk == y.charAtj + k{ ++k; } ifk = ell return j; } j += i - kmpNext[i]; ifi == ell{ k = Math.max0, k-1; } else{ ifkmpNext[i] = ell{ k = Math.max0, kmpNext[i]; i = ell; Universitas Sumatera Utara } else{ k = ell; i = kmpNext[i]; }}} return -1; } AKHIR DARI ALGORITMA APOSTOLICO-CROCHEMORE Override protected void onCreateBundle savedInstanceState { super.onCreatesavedInstanceState; setContentViewR.layout.activity_main; PENGAMBILAN DATABASES DatabaseAccess databaseAccess = DatabaseAccess.getInstancethis; databaseAccess.open; dbhadits = databaseAccess.getData; databaseAccess.close; PENAMBAHAN list dbhadits ke dalam ListView lv lv = ListView findViewByIdR.id.list_view; adapter = new ArrayAdapterStringthis, R.layout.content_main, R.id.label, dbhadits; lv.setAdapteradapter; Toolbar toolbar = Toolbar findViewByIdR.id.toolbar; setSupportActionBartoolbar; DrawerLayout drawer = DrawerLayout findViewByIdR.id.drawer_layout; ActionBarDrawerToggle toggle = new ActionBarDrawerToggle this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close; drawer.setDrawerListenertoggle; toggle.syncState; NavigationView navigationView = NavigationView Universitas Sumatera Utara findViewByIdR.id.nav_view; navigationView.setNavigationItemSelectedListenerthis; } protected void handleMenuSearch{ ActionBar action = getSupportActionBar; ifisSearchOpened{ action.setDisplayShowCustomEnabledfalse; action.setDisplayShowTitleEnabledtrue; InputMethodManager imm = InputMethodManager getSystemServiceContext.INPUT_METHOD_SERVICE; imm.hideSoftInputFromWindowedPencarian.getWindowToken, 0; mSearchAction.setIconR.drawable.search_black; isSearchOpened = false; } else { action.setDisplayShowCustomEnabledtrue; action.setCustomViewR.layout.activity_search; untuk menyembunyikan judul action.setDisplayShowTitleEnabledfalse; text editor edPencarian = EditTextaction.getCustomView.findViewByIdR.id.idCari; edPencarian.setVisibilityView.VISIBLE; saat user klik tombol cari edPencarian.setOnEditorActionListenernew TextView.OnEditorActionListener { Override public boolean onEditorActionTextView v, int actionId, KeyEvent event { if actionId == EditorInfo.IME_ACTION_SEARCH{ Universitas Sumatera Utara MASUK KE PROSES PENCARIAN String pattern = edPencarian.getText.toString; ArrayList saveResult = new ArrayList; PENYERATAAN HURUF String ptn = pattern.toLowerCase; String txt[] = new String[dbhadits.size]; forint i=0;idbhadits.size;i++{ txt[i] = dbhadits.geti.toLowerCase; } PENYIMPANAN HASIL PENCARIAN int jumlah_hasil=0; int result; forint i=0;idbhadits.size;i++ { result = AXAMACptn, ptn.length, txt[i], txt[i].length; if result = -1 { jumlah_hasil++; saveResult.adddbhadits.geti; }} MENAMPILKAN HASIL PENCARIAN DARI DATABASE adapter = new ArrayAdaptergetBaseContext, R.layout.content_main, R.id.label, saveResult; lv.setAdapteradapter; MENAMPILKAN JUMLAH HADITS YANG BERHASIL DITEMUKAN SISTEM String jml = Integer.toStringjumlah_hasil; Toast.makeTextgetBaseContext, Hadits yang ditemukan sebanyak +jml+ hadits, Toast.LENGTH_LONG.show; return true;} return false;} }; edPencarian.requestFocus; perintah membuka keyboard InputMethodManager imm = InputMethodManager getSystemServiceContext.INPUT_METHOD_SERVICE; Universitas Sumatera Utara imm.showSoftInputedPencarian, InputMethodManager.SHOW_IMPLICIT; mSearchAction.setIconR.drawable.search_color; isSearchOpened = true; }} Override public boolean onPrepareOptionsMenuMenu menu { mSearchAction = menu.findItemR.id.action_search; SearchView searchView = SearchView MenuItemCompat.getActionViewmenu.findItemR.id.action_search; return super.onPrepareOptionsMenumenu; } Override public void onBackPressed { DrawerLayout drawer = DrawerLayout findViewByIdR.id.drawer_layout; if drawer.isDrawerOpenGravityCompat.START { drawer.closeDrawerGravityCompat.START; } else ifisSearchOpened { handleMenuSearch; return; }else { super.onBackPressed; }} Override public boolean onCreateOptionsMenuMenu menu { Inflate the menu; this adds items to the action bar if it is present. getMenuInflater.inflateR.menu.main, menu; return true; } Override public boolean onOptionsItemSelectedMenuItem item { Menu Toolbar int id = item.getItemId; switch id { Universitas Sumatera Utara case R.id.action_search: handleMenuSearch; return true; } return super.onOptionsItemSelecteditem; } SuppressWarningsStatementWithEmptyBody Override public boolean onNavigationItemSelectedMenuItem item { int id = item.getItemId; if id == R.id.nav_help { Menampilkan Petunjuk Penggunaan Intent about = new IntentMainActivity.this,HelpActivity.class; startActivityabout; } else if id == R.id.nav_about { Menampilkan About Intent about = new IntentMainActivity.this,AboutActivity.class; startActivityabout; } else if id == R.id.nav_allhadits { Menampilkan Semua Hadits adapter = new ArrayAdaptergetBaseContext, R.layout.content_main, R.id.label, dbhadits; lv.setAdapteradapter; Toast.makeTextthis, Kembali menampilkan semua hadits, Toast.LENGTH_LONG.show; } DrawerLayout drawer = DrawerLayout findViewByIdR.id.drawer_layout; drawer.closeDrawerGravityCompat.START; return true; } } Universitas Sumatera Utara

2. DatabaseOpenHelper.java