A.6. RMS

6.1. Vamos a implementar un almacén de notas. En el directorio Notas tenemos la base de esta aplicación. Vamos a ampliarla haciendo que estas notas se almacenen de forma persistente utilizando RMS. Para ello deberemos completar el código de la clase Notas de la siguiente forma:

a) En el constructor se debe abrir el almacén de registros de nombre RS_NAME (creándolo si es necesario) y cargando todas las notas que tenemos almacenadas en él. Podemos utilizar la deserialización definida en el objeto Nota para leerlos. Conforme leamos las notas las añadiremos al vector notas.

El índice de cada registro en el almacén nos servirá para luego poder modificar o eliminar dicha nota. Por esta razón deberemos guardarnos este valor en alguna parte. Podemos utilizar para ello el campo id de cada objeto Nota creado.

b) En eliminaNota deberemos eliminar las notas del almacén. Para ello deberemos obtener el id asociado a la nota y eliminar dicho registro del almacén.

c) En cambiaNota modificaremos una nota del almacén sobrescribiéndola con la nueva nota proporcionada. Para ello obtendremos el id correspondiente a la antigua nota, y en ese registro escribiremos la nueva nota utilizando la serialización del objeto Nota.

d) En nuevaNota añadiremos una nueva nota al almacén, utilizando la serialización del objeto Nota. Nos guardaremos el id del registro en el que hemos guardado la nota por si necesitamos modificarlo posteriormente.

6.2. Obtener la información de la cantidad de memoria ocupada y disponible a partir del objeto RecordStore. Deberemos hacer que los métodos getMem y getFree de la clase Notas devuelvan esta información.

6.3. Utilizar un listener para actualizar la lista de notas en memoria. Añadiendo este listener sobre el almacén de registros ya no necesitaremos modificar el vector de notas en los métodos eliminaNota, cambiaNota y nuevaNota, podemos usar estos métodos sólo para modificar el almacén, y actualizar el vector en memoria únicamente desde nuestro listener. De esta forma la lista de notas que se muestra en pantalla se actualizará siempre que se produzca un cambio en el almacén, aunque no haya sido producido por el usuario desde nuestro MIDlet.