MessageStore.java
/**
* Copyright (c) 2012 Nokia Corporation. All rights reserved.
* Nokia and Nokia Connecting People are registered trademarks of Nokia
Corporation.
* Oracle and Java are trademarks or registered trademarks of Oracle and/or its
* affiliates. Other product and company names mentioned herein may be trademarks
* or trade names of their respective owners.
* See LICENSE.TXT for license information.
*/
package com.nokia.example.satsa;
import javax.microedition.lcdui.List;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
// 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.
}
}
// 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());
}
}
// 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());
}
}
}