Implementing the MessageStore class

This class handles the record store. It stores and retrieves the encrypted messages using the local RMS.

To create the class:

  1. Assign the class to the package satsa and import the required classes.

    package satsa;
    
    import javax.microedition.lcdui.List;
    import javax.microedition.rms.RecordEnumeration;
    import javax.microedition.rms.RecordStore;
    import javax.microedition.rms.RecordStoreException;
  2. Create the class and open the MessageStore.

    // Stores the messages as byte arrays in the RMS
    class MessageStore
    {
      private final SATSAMIDlet midlet;
      private RecordStore recordStore;
      private RecordEnumeration recordEnumeration;
      private int[] messageIdArray;
      private int numberOfMessages;
    
      MessageStore(SATSAMIDlet midlet)
      {
        this.midlet = midlet;
        openMessageStore();
      }
    
      void close()
      {
        try 
        {
          recordStore.closeRecordStore();
        }
        catch (RecordStoreException rse)
        {
          // Ignore, since the application is closing anyway.
        }
      }
  3. List all messages in Record Store.

      // List all messages in Record Store
      void fillList(List list)
      {
        list.deleteAll();
    
        try
        {
          numberOfMessages = recordStore.getNumRecords();
          messageIdArray = new int[numberOfMessages+1];
    
          recordEnumeration = recordStore.enumerateRecords(null,
            null,
            false);
          int i=0;
    
          while (recordEnumeration.hasNextElement())
          {
            i++;
            int id=recordEnumeration.nextRecordId();
    
            list.append("Message " + id, null);
            messageIdArray[i]=id;
          }
        }
        catch (RecordStoreException rse)
        {
          midlet.showError("Record Store Exception. " + rse.getMessage());
        }
      }
  4. Add a record to Record Store.

      // Add a record to Record Store
      void addMessage(byte[] messageData)
      {
        try
        {
          recordStore.addRecord(messageData, 0, messageData.length);
        }
        catch (RecordStoreException rse)
        {
          midlet.showError("Record Store Exception. " + rse.getMessage());
        }
      }
    
      // Get message from Record Store
      byte[] getMessage(int index)
      {
        try
        {
          byte[] messageData = recordStore.getRecord(messageIdArray[index]);
          return messageData;
        }
        catch (RecordStoreException rse)
        {
          midlet.showError("Record Store Exception. " + rse.getMessage());
          return null;
        }
      }
    
      // Delete a record from Record Store
      void deleteMessage(int index)
      {
        try
        {
          recordStore.deleteRecord(messageIdArray[index]);
        }
        catch (RecordStoreException rse)
        {
          midlet.showError("Record Store Exception. " + rse.getMessage());
        }
      }
      
      private void openMessageStore()
      {
        try 
        {
          recordStore = RecordStore.openRecordStore("SATSA_test", true);
        }
        catch (RecordStoreException rse)
        {
          midlet.showError("Record Store Exception. " + rse.getMessage());
        }
      }
    }