RetrieveAllMIDlet.java Source code

Java tutorial

Introduction

Here is the source code for RetrieveAllMIDlet.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 RetrieveAllMIDlet extends MIDlet implements CommandListener {
    private Command exitCommand = new Command("Exit", Command.EXIT, 1);

    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 RetrieveAllMIDlet() {
        display = Display.getDisplay(this);
    }

    public void startApp() {
        TextBox aTextBox = new TextBox("Main", null, 256, TextField.ANY);
        RecordStore rs = null;
        boolean existingOrNot = false;
        existingOrNot = existing("aRS3");
        if (existingOrNot) {
            try {
                rs = RecordStore.openRecordStore("aRS3", false);
            } catch (Exception e) {
            }
        } else {
            try {
                rs = RecordStore.openRecordStore("aRS3", true);
            } catch (Exception e) {
            }
        }

        Student aStudent = null;

        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("Adding done");
        } catch (Exception e) {
            aTextBox.setString("Add Falied");
        }

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

        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 + "\n";
            aTextBox.setString(result);
        } catch (Exception e) {
            aTextBox.setString("Failed!");
            try {
                rs.closeRecordStore();
                RecordStore.deleteRecordStore("aRS3");
            } 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 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;
    }
}

class averageFilter implements RecordFilter {
    public boolean matches(byte[] candidate) {
        DataInputStream student = new DataInputStream(new ByteArrayInputStream(candidate));
        int average = 0;
        try {
            average = (student.readInt() + student.readInt() + student.readInt()) / 3;
        } catch (Exception e) {
        }
        if (average >= 80)
            return true;
        else
            return false;

    }
}