Mega Code Archive

 
Categories / Java Tutorial / J2ME
 

Filter Fields

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;   } }