FilterFieldsMIDlet.java Source code

Java tutorial

Introduction

Here is the source code for FilterFieldsMIDlet.java

Source

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordFilter;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreNotFoundException;

public class FilterFieldsMIDlet extends MIDlet implements CommandListener {

    private Command exitCommand;

    private Display display;

    private String[] names = { "A", "B", "C", "D" };

    private int[] chineseScore = { 74, 98, 89, 76 };

    private int[] englishScore = { 67, 89, 89, 78 };

    private int[] mathScore = { 80, 76, 80, 78 };

    public FilterFieldsMIDlet() {
        display = Display.getDisplay(this);
        exitCommand = new Command("Exit", Command.EXIT, 1);
    }

    public void startApp() {
        TextBox aTextBox = new TextBox("Main", null, 256, TextField.ANY);

        RecordStore rs = null;
        byte[] nameEmail = null;
        boolean existingOrNot = false;
        boolean OK = true;

        existingOrNot = existing("aRS3");
        if (existingOrNot) {
            try {
                rs = RecordStore.openRecordStore("aRS3", false);
            } catch (Exception e) {
                OK = false;
            } finally {
                if (OK) {
                    aTextBox.setString("Ok");
                } else {
                    aTextBox.setString("not tOk");
                }
            }
        } else {
            try {
                rs = RecordStore.openRecordStore("aRS3", true);
            } catch (Exception e) {
                OK = false;
            } finally {
                if (OK) {
                    aTextBox.setString("Ok");
                } else {
                    aTextBox.setString("Not Ok");
                }
            }
        }

        Student aStudent = null;

        if (OK)
            try {
                for (int i = 0; i < names.length; i++) {
                    aStudent = new Student();
                    aStudent.write(names[i], chineseScore[i], englishScore[i], mathScore[i]);
                    byte[] data = aStudent.changeToByteArray();
                    int recordID = aStudent.getRecordID();
                    if (recordID != -1) {
                        rs.setRecord(recordID, data, 0, data.length);
                    } else {
                        recordID = rs.addRecord(data, 0, data.length);
                        aStudent.setRecordID(recordID);
                    }
                    aStudent = null;
                }
                aTextBox.setString("Added");
            } catch (Exception e) {
                aTextBox.setString("Failed");
            }

        String result = "";
        aStudent = new Student();

        if (OK)
            try {
                byte[] data;
                int number = 0;
                RecordFilter rf = new averageFilter();
                RecordEnumeration re = rs.enumerateRecords(rf, null, false);
                while (re.hasNextElement()) {
                    int recordID = re.nextRecordId();
                    data = rs.getRecord(recordID);
                    aStudent.changeFromByteArray(data);
                    result += recordID + "\n" + "Name:" + aStudent.getName() + "\n" + aStudent.getChineseScore()
                            + "\n" + aStudent.getEnglishScore() + "\n" + aStudent.getMathScore() + "\n";
                    number++;
                }
                result += number;
                aTextBox.setString(result);
            } catch (Exception e) {
                aTextBox.setString("Failed");
                try {
                    rs.closeRecordStore();
                    System.out.println("1.Closed.");
                    RecordStore.deleteRecordStore("aRS3");
                    System.out.println("delete OK");
                } catch (Exception x) {
                }
            } finally {
                try {
                    if (rs != null)
                        rs.closeRecordStore();
                    rs.deleteRecordStore("aRS3");
                } catch (Exception e) {
                }
            }

        aTextBox.setString(result);
        aTextBox.addCommand(exitCommand);
        aTextBox.setCommandListener(this);
        display.setCurrent(aTextBox);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public boolean existing(String recordStoreName) {
        boolean existingOrNot = false;
        RecordStore rs = null;
        if (recordStoreName.length() > 32)
            return false;
        try {
            rs = RecordStore.openRecordStore(recordStoreName, false);
        } catch (RecordStoreNotFoundException e) {
            existingOrNot = false;
        } catch (Exception e) {
        } finally {
            try {
                rs.closeRecordStore();
            } catch (Exception e) {
            }
        }
        return existingOrNot;
    }

    public void commandAction(Command c, Displayable s) {
        destroyApp(false);
        notifyDestroyed();
    }
}

class averageFilter implements RecordFilter {
    public boolean matches(byte[] candidate) {
        DataInputStream student = new DataInputStream(new ByteArrayInputStream(candidate));
        int average = 0;
        try {
            String dummy = student.readUTF();
            average = (student.readInt() + student.readInt() + student.readInt()) / 3;

        } catch (Exception e) {
        }
        if (average >= 80)
            return true;
        else
            return false;

    }
}

class Student {
    private int ID = -1;

    private String name;

    private int chineseScore;

    private int englishScore;

    private int mathScore;

    public void write(String name, int chineseScore, int englishScore, int mathScore) {
        this.name = name;
        this.chineseScore = chineseScore;
        this.englishScore = englishScore;
        this.mathScore = mathScore;
    }

    public void setRecordID(int ID) {
        this.ID = ID;
    }

    public int getRecordID() {
        return ID;
    }

    public byte[] changeToByteArray() {
        byte[] data = null;

        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            dos.writeUTF(name);
            dos.writeInt(chineseScore);
            dos.writeInt(englishScore);
            dos.writeInt(mathScore);
            data = baos.toByteArray();

            baos.close();
            dos.close();
        } catch (Exception e) {
        }
        return data;
    }

    public void changeFromByteArray(byte[] data) {
        try {
            ByteArrayInputStream bais = new ByteArrayInputStream(data);
            DataInputStream dis = new DataInputStream(bais);

            name = dis.readUTF();
            chineseScore = dis.readInt();
            englishScore = dis.readInt();
            mathScore = dis.readInt();

            bais.close();
            dis.close();
        } catch (Exception e) {
        }
    }

    public String getName() {
        return name;
    }

    public int getChineseScore() {
        return chineseScore;
    }

    public int getEnglishScore() {
        return englishScore;
    }

    public int getMathScore() {
        return mathScore;
    }
}