LISTING PROGRAM
Main Activity.java
package marsupilami.kamus; import android.content.Intent; import android.os.Bundle;
import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar;
import android.view.Menu; import android.view.MenuItem; import java.util.ArrayList; import java.util.List;
import javax.xml.transform.Source;
public class MainActivity extends AppCompatActivity { private Toolbar toolbar;
private TabLayout tabLayout; private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
viewPager = (ViewPager) findViewById(R.id.viewpager); setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu); return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// automatically handle clicks on the Home/Up button, so long
Intent i = new Intent(MainActivity.this,about.class); startActivity(i);
Intent j = new Intent(MainActivity.this,source.class); startActivity(j);
}
private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new
ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new OneFragment(), "Morris-Pratt"); adapter.addFragment(new TwoFragments(),"Horspool"); viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
return mFragmentList.size(); }
public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment);
mFragmentTitleList.add(title); }
@Override
public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); }
} }
OneFragment.java
package marsupilami.kamus;
/**
* Created by 752 on 10/03/2016. */
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.util.Log;
import android.view.LayoutInflater; import android.view.View;
import android.view.ViewGroup; import android.widget.Button;
import android.widget.CompoundButton; import android.widget.EditText;
import android.widget.ListAdapter; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.SimpleAdapter; import android.widget.Toast;
import java.util.ArrayList; import java.util.HashMap;
public class OneFragment extends Fragment implements View.OnClickListener{
Button btn2, bt_cari; EditText txt2;
ListView lv2;
ArrayList<HashMap<String, String>> list_data; HashMap<String, String> map;
String arti = "", kata = "", pat = ""; int urutan = 0;
ProgressBar pbar; boolean cek;
String TAG = "OneFragmentTAG";
public OneFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { // Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.one_fragment, container, false);
btn2 = (Button) rootView.findViewById(R.id.remove2); bt_cari = (Button) rootView.findViewById(R.id.bt_cari); txt2 = (EditText) rootView.findViewById(R.id.teks2);
lv2 = (ListView) rootView.findViewById(android.R.id.list); pbar = (ProgressBar) rootView.findViewById(R.id.progressBar); list_data = new ArrayList<HashMap<String, String>>();
btn2.setOnClickListener(this); bt_cari.setOnClickListener(this); ambildata();
return rootView;
}
public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState);
}
@Override
public void onClick(View v) {
if (v == btn2) {
txt2.setText("");
} else if (v == bt_cari) { search();
public void search() {
helper = new DatabaseHelper(getActivity()); database = helper.getReadableDatabase();
cursor = database.query("istilah", new String[]{"kata",
"arti"}, null, null, null, null,"kata"); pat = txt2.getText().toString(); int ketemu = 0, i = 0;
urutan = 0;
morris_pratt b = new morris_pratt();
Log.d(TAG, "Masuk 1 : " + pat);
try {
Log.d(TAG, "Masuk dan Coba"); list_data.clear();
long t = System.currentTimeMillis();
if (cursor != null) {
Log.d(TAG, "Masuk IF 1"); cursor.moveToFirst(); do {
Log.d(TAG, "Masuk Lagi");
kata = cursor.getString(0); arti = cursor.getString(1);
if (pat.length() <= kata.length()) { ketemu = b.MP(pat.toUpperCase(), kata.toUpperCase());
if (ketemu == 1) {
Log.d(TAG, "Masuk Jika Ketemu"); urutan++;
map = new HashMap<String, String>(); map.put("urutan",
Integer.toString(urutan));
map.put("kata", kata); map.put("arti", arti);
list_data.add(map);
i += 1; }
}
} while (cursor.moveToNext()); }
long rt2 = (System.currentTimeMillis() - t);
if (i == 0) {
Toast.makeText(getActivity().getBaseContext(), "Kata tidak ditemukan & Running Time : " + rt2 + " ms",
Toast.LENGTH_SHORT).show(); } else {
ListAdapter adapt = new SimpleAdapter(getActivity(), list_data, R.layout.list_row, new String[]{"urutan", "kata", "arti"}, new int[]{R.id.id, R.id.kata, R.id.arti}); lv2.setAdapter(adapt);
Toast.makeText(getActivity().getBaseContext(),
"Running Time : " + rt2 + " ms", Toast.LENGTH_SHORT).show(); }
} catch (Exception e) {
Toast.makeText(getActivity().getBaseContext(), "Silahkan Masukkan Kata", Toast.LENGTH_SHORT).show();
} }
public void ambildata() { list_data.clear();
DatabaseHelper helper = new DatabaseHelper(getActivity()); SQLiteDatabase database;
database = helper.getReadableDatabase();
Cursor cursor = null;
cursor = database.query("istilah", new String[]{"Kata",
"Arti"}, null, null, null, null, null); String kata = "", arti = ""; String[]{"urutan", "Kata", "Arti"},
TwoFragments.java
package marsupilami.kamus;
/**
* Created by 752 on 10/03/2016. */
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.util.Log;
import android.view.LayoutInflater; import android.view.View;
import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.SimpleAdapter; import android.widget.Toast;
import java.util.ArrayList; import java.util.HashMap;
public class TwoFragments extends Fragment implements View.OnClickListener{
Button btn, btn_cari; EditText txt;
ListView lv;
ArrayList<HashMap<String, String>> list_data2; HashMap<String, String> map;
Cursor cursor = null; DatabaseHelper helper; SQLiteDatabase database;
String arti = "", kata = "", pat = ""; int urutan = 0;
ProgressBar pbar; boolean cek;
String TAG = "TwoFragmentTAG";
public TwoFragments() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
}
@Override
container,
Bundle savedInstanceState) { // Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.two_fragments, container, false);
btn = (Button) rootView.findViewById(R.id.remove);
btn_cari = (Button) rootView.findViewById(R.id.btn_cari); txt = (EditText) rootView.findViewById(R.id.teks1);
lv = (ListView) rootView.findViewById(android.R.id.list); pbar = (ProgressBar) rootView.findViewById(R.id.progressBar); list_data2 = new ArrayList<HashMap<String, String>>();
btn.setOnClickListener(this); btn_cari.setOnClickListener(this); ambildata();
return rootView;
}
public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState);
}
@Override
public void onClick(View v) { if (v == btn) {
txt.setText("");
} else if (v == btn_cari) { search();
} }
public void search() {
helper = new DatabaseHelper(getActivity()); database = helper.getReadableDatabase();
cursor = database.query("istilah", new String[]{"kata",
"arti"}, null, null, null, null, "kata"); pat = txt.getText().toString(); int ketemu = 0, i = 0;
urutan = 0; HP b = new HP();
Log.d(TAG, "Masuk 1 : " + pat);
try {
Log.d(TAG, "Masuk dan Coba"); list_data2.clear();
long t = System.currentTimeMillis();
if (cursor != null) {
Log.d(TAG, "Masuk Lagi");
kata = cursor.getString(0); arti = cursor.getString(1);
if (pat.length() <= kata.length()) { ketemu = b.search(pat.toUpperCase(), kata.toUpperCase());
if (ketemu == 1) {
Log.d(TAG, "Masuk Jika Ketemu"); urutan++;
map = new HashMap<String, String>(); map.put("urutan",
Integer.toString(urutan));
map.put("kata", kata); map.put("arti", arti);
list_data2.add(map);
i += 1; }
}
} while (cursor.moveToNext()); }
long rt = (System.currentTimeMillis() - t);
if (i == 0) {
Toast.makeText(getActivity().getBaseContext(), "Kata tidak ditemukan & Running Time : " + rt + " ms",
Toast.LENGTH_SHORT).show(); } else {
Log.d(TAG, "Masuk ELSE KELUAR TOAS RUNNING TIME");
ListAdapter adapt = new SimpleAdapter(getActivity(), list_data2, R.layout.list_row, new String[]{"urutan", "kata",
"arti"},
new int[]{R.id.id, R.id.kata, R.id.arti}); lv.setAdapter(adapt);
Toast.makeText(getActivity().getBaseContext(),
"Running Time : " + rt + " ms", Toast.LENGTH_SHORT).show(); }
} catch (Exception e) {
Toast.makeText(getActivity().getBaseContext(), "Silahkan Masukkan Kata", Toast.LENGTH_SHORT).show();
} }
public void ambildata() { list_data2.clear();
DatabaseHelper helper = new DatabaseHelper(getActivity()); SQLiteDatabase database;
database = helper.getReadableDatabase();
cursor = database.query("istilah", new String[]{"Kata",
"Arti"}, null, null, null, null, null); String kata = "", arti = ""; int urutan = 0;
try {
if (cursor != null) { cursor.moveToFirst(); do {
urutan++;
kata = cursor.getString(0); arti = cursor.getString(1);
HashMap<String, String> map = new HashMap<String, String>();
map.put("urutan", Integer.toString(urutan) +
".");
map.put("Kata", kata); map.put("Arti", arti);
list_data2.add(map);
} while (cursor.moveToNext());
ListAdapter adapter = new
SimpleAdapter(getActivity(), list_data2, R.layout.list_row, new String[]{"urutan", "Kata", "Arti"},
new int[]{R.id.id, R.id.kata, R.id.arti}); lv.setAdapter(adapter);
}
} catch (Exception e) {
Toast.makeText(getActivity().getBaseContext(), "Data Kosong", Toast.LENGTH_SHORT).show();
}
database.close(); }
}
About.java
package com.example.yuninainggolan.kamustetun; package marsupilami.kamus;
import android.content.Intent; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar;
import android.view.Menu; import android.view.MenuItem;
public class about extends AppCompatActivity { Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.about);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.about, menu); return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) { case R.id.action_about: // source
About(); return true;
case R.id.action_help: // about
Help(); return true;
case R.id.action_settings: // source
Source(); return true; default:
return super.onOptionsItemSelected(item); }
}
public void About(){
Intent i = new Intent(about.this,about.class); startActivity(i);
}
public void Help(){
Intent j = new Intent(about.this,help.class); startActivity(j);
}
public void Source(){
Intent j = new Intent(about.this,source.class); startActivity(j);
Help.java
public class help extends AppCompatActivity { Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.help);
toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it
public boolean onOptionsItemSelected(MenuItem item) {
}
public void Help(){
Intent j = new Intent(help.this,help.class); startActivity(j);
}
public void Source(){
Intent j = new Intent(help.this,source.class); startActivity(j);
} }
Source.java
package marsupilami.kamus;
/**
* Created by Laura Angelina on 12/06/2017. */
import android.content.Intent; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar;
import android.view.Menu; import android.view.MenuItem;
public class source extends AppCompatActivity { private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.source);
toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.source, menu); return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) { case R.id.action_about: // about
return true;
case R.id.action_help: // help
Help(); return true;
case R.id.action_settings: // source
Source(); return true; default:
return super.onOptionsItemSelected(item); }
}
public void About(){
Intent i = new Intent(source.this,about.class); startActivity(i);
}
public void Help(){
Intent j = new Intent(source.this,help.class); startActivity(j);
}
public void Source(){
Intent j = new Intent(source.this,source.class); startActivity(j);
} }
morris_pratt.java
package marsupilami.kamus;
/**
* Created by Laura Angelina on 06/06/2017. */
public class morris_pratt { static String txt; static String pat; static char[] x; static char[] y; static int n; static int m; boolean nilai;
static int[] mpNext = new int[256];
public morris_pratt() { }
public static void main(String[] args) { x = pat.toCharArray();
y = txt.toCharArray(); n = txt.length(); m = pat.length();
public static void preMp() { int i = 0;
for(int j = mpNext[0] = -1; i < m; mpNext[i] = j) { while(j > -1 && x[i] != x[j]) {
j = mpNext[j]; }
++i; ++j; }
}
public int MP(String pat, String text) { x = pat.toCharArray();
y = text.toCharArray(); n = text.length(); m = pat.length(); nilai = false;
preMp(); int j = 0; int i = 0;
while(j < n) {
while(i > -1 && x[i] != y[j]) { i = mpNext[i];
}
++i; ++j;
if(i >= m) { nilai = true; i = mpNext[i]; }
}
if(nilai) {
return 1; }
return 0;
}
HP.java
package marsupilami.kamus; import java.util.ArrayList; import java.util.List;
/**
* Created by Laura Angelina on 13/06/2017. */
public class HP {
static int[] bmBc = new int[256];
public static void preBmBc(String pat, int m, int [] bmBc) {
for (int i = 0; i < 256; ++i) bmBc[i] = m;
for (int i = 0; i < m - 1; ++i) bmBc[pat.charAt(i)] = m - i - 1; }
public int search(String pat, String target) { int j;
int m = pat.length(); int n = target.length();
preBmBc(pat, m, bmBc);
j = 0;
while (j <= n - m) {
if(pat.compareTo(target.substring(j,m+j))==0) return j + 1;
//if (x[m - 1] == c && memcmp(x, y + j, m - 1) == 0) j += bmBc[target.charAt(j + m - 1)];
}
return -1; }
}
activity_main.xml
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
android:layout_height="match_parent" android:background="@drawable/icon_back">
<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/holo_blue_dark" app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout android:id="@+id/tabs"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:background="@android:color/holo_blue_light" app:tabGravity="fill"
app:tabMode="fixed" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager android:id="@+id/viewpager"
android:layout_width="match_parent" android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>