Mega Code Archive

 
Categories / Java / J2ME
 

Sort Mixed Record Data Type Example

/* J2ME: The Complete Reference James Keogh Publisher: McGraw-Hill ISBN 0072227109 */ //jad file (please verify the jar size) /* MIDlet-Name: SortMixedRecordDataTypeExample MIDlet-Version: 1.0 MIDlet-Vendor: MyCompany MIDlet-Jar-URL: SortMixedRecordDataTypeExample.jar MIDlet-1: SortMixedRecordDataTypeExample, ,            SortMixedRecordDataTypeExample MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-1.0 MIDlet-JAR-SIZE: 100 */ import javax.microedition.rms.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.io.*; public class SortMixedRecordDataTypeExample           extends MIDlet implements CommandListener {   private Display display;   private Alert alert;   private Form form;    private Command exit;    private Command start;   private RecordStore recordstore = null;   private RecordEnumeration recordEnumeration = null;   private Comparator comparator = null;   public SortMixedRecordDataTypeExample ()   {     display = Display.getDisplay(this);     exit = new Command("Exit", Command.SCREEN, 1);     start = new Command("Start", Command.SCREEN, 1);     form = new Form("Mixed RecordEnumeration");     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 );       }       catch (Exception error)       {         alert = new Alert("Error Creating",                    error.toString(), null, AlertType.WARNING);          alert.setTimeout(Alert.FOREVER);          display.setCurrent(alert);       }       try       {         byte[] outputRecord;         String outputString[] = {"Mary", "Bob", "Adam"};         int outputInteger[] = {15, 10, 5};         ByteArrayOutputStream outputStream =                  new ByteArrayOutputStream();         DataOutputStream outputDataStream =                   new DataOutputStream(outputStream);         for (int x = 0; x < 3; x++)         {           outputDataStream.writeUTF(outputString[x]);           outputDataStream.writeInt(outputInteger[x]);            outputDataStream.flush();                          outputRecord = outputStream.toByteArray();           recordstore.addRecord(outputRecord, 0,                   outputRecord.length);           outputStream.reset();         }           outputStream.close();         outputDataStream.close();       }       catch ( Exception error)       {         alert = new Alert("Error Writing",                error.toString(), null, AlertType.WARNING);          alert.setTimeout(Alert.FOREVER);          display.setCurrent(alert);       }       try       {          String[] inputString = new String[3];          int z = 0;          byte[] byteInputData = new byte[300];           ByteArrayInputStream inputStream =                      new ByteArrayInputStream(byteInputData);          DataInputStream inputDataStream =                      new DataInputStream(inputStream);          StringBuffer buffer = new StringBuffer();          comparator = new Comparator();          recordEnumeration = recordstore.enumerateRecords(                               null, comparator, false);          while (recordEnumeration.hasNextElement())          {            recordstore.getRecord( recordEnumeration.nextRecordId(),                                    byteInputData, 0);           buffer.append(inputDataStream.readUTF());           buffer.append(inputDataStream.readInt());           buffer.append("\n");           inputDataStream.reset();          }          alert = new Alert("Reading", buffer.toString(), null,                              AlertType.WARNING);           alert.setTimeout(Alert.FOREVER);           display.setCurrent(alert);          inputDataStream.close();          inputStream.close();       }       catch (Exception error)       {         alert = new Alert("Error Reading",                              error.toString(), null, AlertType.WARNING);          alert.setTimeout(Alert.FOREVER);          display.setCurrent(alert);       }       try       {         recordstore.closeRecordStore();       }       catch (Exception error)       {         alert = new Alert("Error Closing",                       error.toString(), null, AlertType.WARNING);          alert.setTimeout(Alert.FOREVER);          display.setCurrent(alert);       }       if (RecordStore.listRecordStores() != null)       {         try         {           RecordStore.deleteRecordStore("myRecordStore");           comparator.compareClose();           recordEnumeration.destroy();         }         catch (Exception error)         {          alert = new Alert("Error Removing",                     error.toString(), null, AlertType.WARNING);           alert.setTimeout(Alert.FOREVER);           display.setCurrent(alert);         }       }           }   }      } class Comparator implements RecordComparator {   private byte[] comparatorInputData = new byte[300];   private ByteArrayInputStream comparatorInputStream = null;   private DataInputStream comparatorInputDataType = null;   public int compare(byte[] record1, byte[] record2)   {     int record1int, record2int;     try     {       int maxlen = Math.max(record1.length, record2.length);       if (maxlen > comparatorInputData.length)       {         comparatorInputData = new byte[maxlen];       }       comparatorInputStream = new ByteArrayInputStream(record1);       comparatorInputDataType =                 new DataInputStream(comparatorInputStream);       comparatorInputDataType.readUTF();       record1int = comparatorInputDataType.readInt();         comparatorInputStream = new ByteArrayInputStream(record2);       comparatorInputDataType =                new DataInputStream(comparatorInputStream);       comparatorInputDataType.readUTF();       record2int = comparatorInputDataType.readInt();         if (record1int == record2int)       {         return RecordComparator.EQUIVALENT;       }       else if (record1int < record2int)       {         return RecordComparator.PRECEDES;       }       else       {         return RecordComparator.FOLLOWS;       }     }           catch (Exception error)     {        return RecordComparator.EQUIVALENT;     }    }   public void compareClose()   {     try     {       if (comparatorInputStream!= null)       {         comparatorInputStream.close();       }       if (comparatorInputDataType!= null)       {         comparatorInputDataType.close();       }     }     catch (Exception error)     {     }   } }