Java Micro: Record Stores

Das J2ME "record management system(RMS)" bietet den Programmierer_innen die Möglichkeit persistent Daten zu speichern und sie später erneut abzurufen. J2ME bietet den Nutzer_innen mehrere sogenannte "Record Stores" an. Auf diese kann wie die folgende Zeichnung erläutern soll von verschiedenen MiDlet's zugegriffen werden. Die Record Store wird durch die Klasse |javax.microedition.rms.RecordStore repräsentiert. Sie bietet verschieden Funktionen zum Erstellen und Löschen von Speichern sowie zum Einfügen, Erneuern (Update), Löschen von Daten.

Beschreibung des Record Stores

Die Grundidee ist einen Speicher zu haben der keine feste Größe besitzt, sprich mit den Daten wächst die in ihm gespeichert werden. Jeder Eintrag in diesem Speicher ist ein Array von Bytes und kann durch einen einzigartigen Integerwert abgerufen werden (einfache Nummerierung nach einfügen). Bei diesen Record Stores handelt es sich um eingebettete Schlüssel-Wert-Datenbanken. Solche Datenbanken sind auch in anderen Bereichen im Einsatz. Sie eigenen sich beispielsweise zur Speicherung von Einstellungen oder um vorher aus externen Quellen abgerufene oder berechnete Werte zeitweise vorzuhalten (also als Cache).

Anlegen und Verwalten des Record Store Bearbeiten

Ein solcher Speicher wird durch die Methode RecordStore.createRecordStore(“name“, true); erstellt. Wichtig hierbei ist das der Name des Speichers case sensitive ist. Eine andere Variante einen Record Store zu erstellen ist die Funktion:

RecordStore speicher = RecordStore.openRecordStore("Name",true/false[erstellen falls nicht vorhanden]);

Diese Methode ist zusätzlich dafür gedacht um vorhandene Speicher zu öffnen, kann aber auch zum Erstellen und direktem Öffnen genutzt werden. Diese beiden Funktionen können zusätzlich mit einem Parameter zur Einstellung von Zugriffsrechten aufgerufen werden. Hier gibt es die Auswahl zwischen "AUTHMODE_PRIVATE" welche die Standard Einstellung ist. Sie erlaubt es nur MiDlet's der eigenen Suite auf den Record Store zuzugreifen. Alternativ dazu können die Programmierer_innen auch anderen MiDlet's auf dem Gerät zugriff auf den Record Store geben, dies ist durch setzen des Parameters "AUTHMODE_ANY" möglich.

openRecordStore(String Name,boolean true/false [erstellen, falls nicht vorhanden], int AUTHMODE ,boolean true/false [Schreibrechte?]);

Dies sind alle Parameter die dieser Funktion übergeben werden können.

RecordStore.closeRecordStore();

wird genutzt um einen geöffneten Speicher zu schließen.

RecordStore.deleteRecordStore("Name");

Hiermit wird ein Vorhandener Speicher gelöscht (mit allen darin enthaltenen Daten).

Schreiben eines Records Bearbeiten

Die Größe des Speichers wächst mit jedem Aufruf der Methode: addRecord(byte[] data, int offset, int numBytes). Wichtig dabei ist zu wissen ist, das die Zählung bei 1 und nicht wie üblich bei 0 beginnt. Durch addRecord() werden Daten an das Ende des Stores gespeichert. Hier ein Beispiel für die Implementierung von addRecord():

String beispiel = "neuer record";
byte bytes[] = beispiel.getBytes();
RecordStore.addRecord(bytes,0,bytes.length);

Es ist aber auch Möglich bereits hinzugefügte Records zu manipulieren. Dies erfolgt durch die Methode:

setRecord(int recordId, byte[] data, int offset, int numBytes); 
 
Veranschaulichung der Funktion deleteRecord();

Beispiel einer Implementierung hierfür:

String beispiel = "update record";
Byte data = beispiel.getBytes();
RecordStore.setRecord(1, data, 0, data.length());

Eine letzte Art der Datenmanipulation ist das löschen von Daten. Hierfür wird die Funktion deleteRecord(int recordId) verwendet. Nach dem löschen eines Eintrags bleibt dieser leer und kann nur durch die setRecord() Methode neu beschrieben werden.

Um Informationen zu einem bestehenden Record Store zu bekommen gibt es im wesentlichen zwei wichtige Funktionen. Zum einen könnte es für die Programmierer_innen hilfreich sein, wie viele Records vorhanden sind. Dafür sorgt die Funktion getNumRecords(). Eine weitere Wichtige Methode ist getNextRecordID(). Sie dient dazu herauszufinden welche die Nächste RecordID in der Liste ist.

Das Prinzip des RecordListeners Bearbeiten

 

Nähere Erläuterungen zum RecordListener folgen!