J2ME Java Tutorial

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordFilter;
import javax.microedition.rms.RecordStore;
public class J2MESearchExample extends MIDlet implements CommandListener {
  private Display display;
  private Alert alert;
  private Form form = new Form("Mixed RecordEnumeration", null);
  private Command exit = new Command("Exit", Command.SCREEN, 1);
  private Command start = new Command("Start", Command.SCREEN, 1);
  private RecordStore recordstore = null;
  private RecordEnumeration recordEnumeration = null;
  private Filter filter = null;
  public J2MESearchExample() {
    display = Display.getDisplay(this);
    form.addCommand(exit);
    form.addCommand(start);
    form.setCommandListener(this);
  }
  public void startApp() {
    display.setCurrent(form);
  }
  public void pauseApp() {
  }
  public void destroyApp(boolean unconditional) {
  }
  public void commandAction(Command command, Displayable displayable) {
    if (command == exit) {
      destroyApp(true);
      notifyDestroyed();
    } else if (command == start) {
      try {
        recordstore = RecordStore.openRecordStore("myRecordStore", true);
        String outputData[] = { "M", "B", "A" };
        for (int x = 0; x < 3; x++) {
          byte[] byteOutputData = outputData[x].getBytes();
          recordstore.addRecord(byteOutputData, 0, byteOutputData.length);
        }
        filter = new Filter("Bob");
        recordEnumeration = recordstore.enumerateRecords(filter, null, false);
        if (recordEnumeration.numRecords() > 0) {
          String string = new String(recordEnumeration.nextRecord());
          alert = new Alert("Reading", string, null, AlertType.WARNING);
          alert.setTimeout(Alert.FOREVER);
          display.setCurrent(alert);
        }
        recordstore.closeRecordStore();
        if (RecordStore.listRecordStores() != null) {
          RecordStore.deleteRecordStore("myRecordStore");
          recordEnumeration.destroy();
          filter.filterClose();
        }
      } catch (Exception error) {
        alert = new Alert("Error Removing", error.toString(), null, AlertType.WARNING);
        alert.setTimeout(Alert.FOREVER);
        display.setCurrent(alert);
      }
    }
  }
}
class Filter implements RecordFilter {
  private String search = null;
  private ByteArrayInputStream inputstream = null;
  private DataInputStream datainputstream = null;
  public Filter(String search) {
    this.search = search.toLowerCase();
  }
  public boolean matches(byte[] suspect) {
    String string = new String(suspect).toLowerCase();
    if (string != null && string.indexOf(search) != -1)
      return true;
    else
      return false;
  }
  public void filterClose() {
    try {
      if (inputstream != null) {
        inputstream.close();
      }
      if (datainputstream != null) {
        datainputstream.close();
      }
    } catch (Exception error) {
    }
  }
}