Java by API/javax.microedition.rms/RecordFilter
implements RecordFilter
<source lang="java">
import java.io.ByteArrayInputStream; import java.io.DataInputStream; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; 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) { } }
}
</source>