Mega Code Archive

 
Categories / Java / J2ME
 

Birthday Database

/**** Chapter 5 Sample code for RMS Package****/ import java.io.*; import javax.microedition.midlet.*; import javax.microedition.rms.*; public class BirthdayDB extends MIDlet {     static final String RSNAME = "birthdayDB";   private RecordStore rs = null;     public BirthdayDB() {       try {       openBirthdayDB(RSNAME);       populateSampleRecords();       //BEGIN: Test for basic funcitionality of a record store       displayRecordStoreinfo();       searchAndDisplayRecords(null, null); //Simple enumeration withouit any criteria       deleteBirthday(2);       updateBirthday(3, "Lisa", "03/07/99");       searchAndDisplayRecords(null, null); //Simple enumeration withouit any criteria       //END: Test for basic funcitionality of a record store       //BEGIN: Test for record listener       rs.addRecordListener((RecordListener) new BirthdayDBListener());       addBirthday("Maya","09/08/96");       deleteBirthday(3);       updateBirthday(4, "NewLisa", "03/08/99");       rs.removeRecordListener((RecordListener) new BirthdayDBListener());       //END: Test for record listener       //BEGIN: Complex test for record enumeration with record filter and record comparator       NameFilter nameFilter = new NameFilter("John");       NameComparator nameComparator = new NameComparator();       searchAndDisplayRecords(nameFilter,nameComparator);       //END: Complex test for record enumeration with record filter and record comparator       closeBirthdayDB();         }         catch( Exception e ){             System.out.print("Error in BirthdayDB.BirthdayDB-> ");       System.out.println("Exception : " + e.getMessage());         }         notifyDestroyed();     }   /****   This function will create/open database.   ****/   private void openBirthdayDB(String name) {         // Just to avoid using wrong DB,     // First clear out the old record store         try {             RecordStore.deleteRecordStore( name );         }         catch( Exception e ){             // ignore any errors...         }     // attempt to create a new RecordStore database     try {           rs = RecordStore.openRecordStore( name, true );         }         catch( Exception e ){       System.out.print("Error in BirthdayDB.openBirthdayDB -> ");       System.out.println("Exception : " + e.getMessage());         }   }   /****   This function closes the DB if it is open.   ****/   private void closeBirthdayDB() {     if (rs != null) {       try {           rs.closeRecordStore();       } catch (Exception e) {         System.out.print("Error in BirthdayDB.closeBirthdayDB -> ");         System.out.println("Exception : " + e.getMessage());       }     }   }   /****   This function will search for the records using criteria defined in   Filter class and it will display records in the order specfied in   Comparator class   ****/   public void searchAndDisplayRecords(NameFilter f, NameComparator c){     try {         RecordEnumeration rEnum = rs.enumerateRecords( f, c , false);         System.out.println("Total Records in Enumeration: " + rEnum.numRecords());         while (rEnum.hasNextElement()){           byte [] bRec = rEnum.nextRecord();           //unpack a multi-column record           ByteArrayInputStream bais = new ByteArrayInputStream(bRec);           DataInputStream dis = new DataInputStream(bais);           String name = dis.readUTF();           String bDay = dis.readUTF();           System.out.println("Name: " + name + " BirthDay: "+ bDay);         }       }       catch (Exception e) {         System.out.print("Error in BirthdayDB.searchAndDisplayRecords -> ");         System.out.println("Exception : " + e.getMessage());       }       return;   }   /****   This function creates a byte stream for record and adds a record to database   ****/   public void addBirthday(String name, String bDay) {     try{       ByteArrayOutputStream baos = new ByteArrayOutputStream();       DataOutputStream dos = new DataOutputStream(baos);       dos.writeUTF(name);       dos.writeUTF(bDay);       byte [] bRec = baos.toByteArray();       rs.addRecord(bRec,0,bRec.length);       dos.close();       baos.close();     }     catch (Exception e) {       System.out.print("Error in BirthdayDB.addBirthdayDB -> ");       System.out.println("Exception : " + e.getMessage());     }     return;   }   /****   This function deleted a record with given recordId   ****/   public void deleteBirthday(int recordId) {     try{       rs.deleteRecord(recordId);     }     catch (Exception e) {       System.out.print("Error in BirthdayDB.deleteBirthday -> ");       System.out.println("Exception : " + e.getMessage());     }     return;   }   /****   This function updates the record with new name and birthday at given recordId   ****/   public void updateBirthday(int recordId, String newName, String newBDay) {     try{       // convert new data into byte stream       ByteArrayOutputStream baos = new ByteArrayOutputStream();       DataOutputStream dos = new DataOutputStream(baos);       dos.writeUTF(newName);       dos.writeUTF(newBDay);       byte [] bRec = baos.toByteArray();       rs.setRecord(recordId, bRec,0,bRec.length);       dos.close();       baos.close();     }     catch (Exception e) {       System.out.print("Error in BirthdayDB.updateBirthday -> ");       System.out.println("Exception : " + e.getMessage());     }     return;   }   /****   This function populates seed records   ****/   public void populateSampleRecords() {     addBirthday("John", "01/04/1969");     addBirthday("Joe", "05/05/1976");     addBirthday("Keran", "09/12/1976");     addBirthday("Marry", "04/22/1979");     addBirthday("Paul", "06/26/1972");     addBirthday("Robert", "08/30/1971");     addBirthday("John", "01/04/1970");   }   /****   This function displays information of a record store   ****/   public void displayRecordStoreinfo() {     try {       System.out.println("Name of the record store is " + rs.getName());       System.out.println("Number of records in this record store are " + rs.getNumRecords());       System.out.println("Size of record store is " + rs.getSize());       System.out.println("Available size for the record store " + rs.getSizeAvailable());       System.out.println("Version number of the record store is " + rs.getVersion());       System.out.println("Last Modified Date is " + rs.getLastModified());     }     catch (Exception e) {       System.out.print("Error in BirthdayDB.displayRecordStoreinfo -> ");       System.out.println("Exception : " + e.getMessage());     }   }   /****   MIDlet lifecycle functions   ****/     public void destroyApp( boolean unconditional ) {     if (rs != null)       closeBirthdayDB();     }     public void startApp() {     }     public void pauseApp() {     } } class NameFilter implements RecordFilter { String name; public NameFilter(String filterOnThisName) {   name = filterOnThisName; } public boolean matches(byte [] candidateRecord) {   try{     ByteArrayInputStream bais = new ByteArrayInputStream(candidateRecord);     DataInputStream dis = new DataInputStream(bais);     String nameFromRec = dis.readUTF();     dis.close();     bais.close();     if (name.compareTo(nameFromRec) == 0 )       return true;     }   catch (Exception e) {     System.out.print("Error in NameFilter.matches -> ");     System.out.println("Exception : " + e.getMessage());   }   return false; } } class NameComparator implements RecordComparator { public int compare(byte [] rec1, byte [] rec2) {   try{     // read first record and extract name     ByteArrayInputStream bais1 = new ByteArrayInputStream(rec1);     DataInputStream dis1 = new DataInputStream(bais1);     String name1 = dis1.readUTF();     dis1.close();     bais1.close();     // read second record and extract name     ByteArrayInputStream bais2 = new ByteArrayInputStream(rec2);     DataInputStream dis2 = new DataInputStream(bais2);     String name2 = dis2.readUTF();     dis2.close();     bais2.close();     if (name1.compareTo(name2) < 0 )       return PRECEDES;     if (name1.compareTo(name2) > 0 )       return FOLLOWS;   }   catch (Exception e) {     System.out.print("Error in NameComparator.compare -> ");     System.out.println("Exception : " + e.getMessage());   }   return EQUIVALENT; } } class BirthdayDBListener implements RecordListener { public void recordAdded(RecordStore rs, int recordId) {   System.out.println("Record Added in record store " ); } public void recordDeleted(RecordStore rs, int recordId) {   System.out.println("Record Deleted from record store "); } public void recordChanged(RecordStore rs, int recordId) {   System.out.println("Record Changed in record store "); } }