Indo_to_jawa_Fragments.java
package studio.arti.kamusjawaindonesia; import android.content.DialogInterface; import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.os.Bundle;
import android.support.design.widget.FloatingActionButton; import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog; import android.text.Html;
import android.view.LayoutInflater; import android.view.View;
import android.view.ViewGroup; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import java.util.ArrayList; import java.util.List;
public class Indo_to_Jawa_fragment extends Fragment { View view;
private ImageButton bt_cari; private EditText et_cari;
private List<Hasil> hasilList = new ArrayList<Hasil>(); private ListView listView;
private CustomListAdapter adapter; String kata;//kata yg di inputkan
int jumlah = 0;//hitung jumlah string ditemukan double waktu = 0;
double waktuAwal=0, waktuAkhir =0;
public Indo_to_Jawa_fragment() { }
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.indo_to_jawa_tab_layout, container, false);
et_cari = (EditText) view.findViewById(R.id.txt_indo_jawa); bt_cari = (ImageButton)
view.findViewById(R.id.imb_cari_indo_jawa);
@Override
public void onClick(View v) {
String pattern = et_cari.getText().toString(); kata = pattern;
waktuAwal = System.currentTimeMillis(); ReadDB(pattern);
waktuAkhir = System.currentTimeMillis(); waktu = (waktuAkhir - waktuAwal);
} });
FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { MunculHasil(kata, jumlah, waktu); }
});
listView = (ListView) view.findViewById(R.id.lv_hasil); adapter = new CustomListAdapter(inflater, hasilList); listView.setAdapter(adapter);
return view; }
public void MunculHasil(String getKata, int getJumah, double getWaktu) {
AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setTitle("Hasil Pencarian")
.setMessage(Html.fromHtml(
"<b>" + "Karp Rabin" + "</b>" +
"<br/>Kata/String : " + getKata + "<br/>Jumlah : " + getJumah + "<br/>Waktu : " + getWaktu + ms"))
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
public void ReadDB(String getPattern) { String pattern = getPattern;
SQLiteOpenHelper helper = new DatabaseOpenHelper(getContext());
//DbHelper helper = new DbHelper(getContext()); SQLiteDatabase db;
db = helper.getReadableDatabase(); Cursor cursor = null;
hasilList.clear(); jumlah = 0;
cursor = db.rawQuery("SELECT * FROM tabel_kamus_jawa ORDER BY indonesia; ", null);
if (cursor != null) {
cursor.moveToFirst(); do {
// pengisian list try {
String ngoko = cursor.getString(1); String madya = cursor.getString(2); String inggil = cursor.getString(3); String indo = cursor.getString(4);
KR_start(pattern, indo, ngoko, madya, inggil); } catch (Exception e) {}
} while (cursor.moveToNext()); }
db.close();
listView.setAdapter(adapter); }
// Algoritma nya
static String txt; // text tersedia
static String pat;//pattern - yg maudi cari static char[] x; //
static char[] y; // static int n; // static int m; // static String ngoko; static String madya; static String inggil;
public void KR_start(String pat, String txt, String ngoko, String madya, String inggil) {
this.txt = txt; this.pat = pat; this.ngoko = ngoko; this.madya = madya; this.inggil = inggil;
x = pat.toCharArray();//conversi string suapaya ke char array y = txt.toCharArray();
n = txt.length();//panjnga txt
m = pat.length();//pnjang yg di cari KR();
}//end void kr start
public static int REHASH(int a, int b, int d, int h) { return ((((h) - (a) * d) << 1) + (b));
}
public void KR() {
int hx = 0, hy = 0, B = 3; int d, i, j;
for (d = i = 1; i < m; ++i)
d = (d << 1); // d<<1 == d*2 (2 ^ m-1) = 2^8-1 = 128 . nilai d untuk cari pergeseran nya
/* Searching */ j = 0;
while (j <= n - m) {
if (hx == hy && memcmp(x,y,j,m)==0){ Hasil h = new Hasil();
h.setNgoko(ngoko); h.setMadya(madya); h.setInggil(inggil); h.setIndo(txt); h.setPat(pat); h.setPos(j); hasilList.add(h); jumlah++;
} try {
//hy = REHASH(y[j], y[j + m], d, hy);//remove terkiri hy = ((( (hy) - (y[j]) * d) << 1)+(y[j + m])); } catch (Exception e) {}
++j;
}//end while
}//end kr
public static int memcmp(char[] x2, char[] y2, int sj, int sz) { for (int i = 0; i < sz; i++) {
if (x2[i] != y2[i + sj]) {
if ((x2[i] >= 0 && y2[i + sj] >= 0)
|| (x2[i] < 0 && y2[i + sj] < 0)) return x2[i] - y2[i];
if (x2[i] < 0 && y2[i + sj] >= 0)
}//end fragments
import android.widget.ImageButton; import android.widget.ListView; import java.util.ArrayList; import java.util.List;
public class Jawa_to_Indo_fragment extends Fragment { View view;
private ImageButton bt_cari; private EditText et_cari;
private List<Hasil> hasilList = new ArrayList<Hasil>(); private ListView listView;
private CustomListAdapter2 adapter; String kata;
int jumlah = 0; double waktu = 0;
double waktuAwal = 0, waktuAkhir = 0; public Jawa_to_Indo_fragment() {
// Required empty public constructor }
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.jawa_to_indo_tab_layout, container, false);
et_cari = (EditText) view.findViewById(R.id.txt_jawa_indo); bt_cari = (ImageButton)
view.findViewById(R.id.imb_cari_jawa_indo);
bt_cari.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
String pattern = et_cari.getText().toString(); kata = pattern;
waktuAwal = System.currentTimeMillis(); ReadDB(pattern);
waktuAkhir = System.currentTimeMillis(); waktu = (waktuAkhir - waktuAwal);
} });
FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { MunculHasil(kata, jumlah, waktu); }
});
listView = (ListView) view.findViewById(R.id.lv_hasil); adapter = new CustomListAdapter2(inflater, hasilList); listView.setAdapter(adapter);
public void MunculHasil(String getKata, int getJumah, double getWaktu) {
AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setTitle("Hasil Pencarian")
.setMessage(Html.fromHtml(
"<b>" + "Karp Rabin" + "</b>" +
"<br/>Kata/String : " + getKata + "<br/>Jumlah : " + getJumah + "<br/>Waktu : " + getWaktu + " ms"))
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
public void ReadDB(String getPattern) { String pattern = getPattern;
SQLiteOpenHelper helper = new DatabaseOpenHelper(getContext());
//DbHelper helper = new DbHelper(getContext()); SQLiteDatabase db;
db = helper.getReadableDatabase(); Cursor cursor = null;
hasilList.clear(); jumlah = 0;
cursor = db.rawQuery("SELECT * FROM tabel_kamus_jawa ; ", null);
if (cursor != null) { cursor.moveToFirst(); do {
// pengisian list try {
String ngoko = cursor.getString(1); String madya = cursor.getString(2); String inggil = cursor.getString(3); String indo = cursor.getString(4);
KR_start(pattern, ngoko, indo); KR_start(pattern, madya, indo); KR_start(pattern, inggil, indo); } catch (Exception e) {
//Toast.makeText(getContext(), "DB Belum tersedia!!", Toast.LENGTH_SHORT).show();
}
} while (cursor.moveToNext()); }
db.close();
listView.setAdapter(adapter); }
// Algoritma nya
static String txt; // text tersedia
static String pat;//pattern - yg maudi cari static char[] x;//
static char[] y;// static int n;// static int m;// static String ngoko; static String madya; static String inggil; static String indo;
public void KR_start(String pat, String txt, String indo) { this.txt = txt;
this.pat = pat; this.indo = indo;
x = pat.toCharArray();//conversi string suapaya ke char array y = txt.toCharArray();
n = txt.length();//panjnga txt
m = pat.length();//pnjang yg di cari KR();
}
public static int REHASH(int a, int b, int d, int h) { return ((((h) - (a) * d) << 1) + (b));
}
public void KR() {
int hx = 0, hy = 0, B = 3;
/* Searching */ j = 0;
while (j <= n - m) {
if (hx == hy && memcmp(x,y,j,m)==0) { Hasil h = new Hasil();
h.setNgoko(txt); h.setIndo(indo); h.setPat(pat); h.setPos(j); hasilList.add(h); jumlah++;
} try {
}
catch (Exception e) { } ++j;
}//end while
}//end public void KR
public static int memcmp(char[] x2, char[] y2, int sj, int sz) { for (int i = 0; i < sz; i++) {
if (x2[i] != y2[i + sj]) {
if ((x2[i] >= 0 && y2[i + sj] >= 0)
|| (x2[i] < 0 && y2[i + sj] < 0)) return x2[i] - y2[i];
if (x2[i] < 0 && y2[i + sj] >= 0) return 1;
if (y2[i + sj] < 0 && x2[i] >= 0) return -1;
} }
return 0; }
}//end public class fragments