06_J2ME_RMS.

Transcription

06_J2ME_RMS.
J2ME
RMS
(Record Management
Store)
20/03/2007
Formation ITIN
Record Management Store
API qui permettent aux applications MIDP la
persistance sur les appareils.
Seul moyen de persistance sur la plupart
des téléphones (JSR 75 sur les plus
récents)
2
Formation ITIN
20/03/2007
RecordStore
Un RecordStore est une petite base de
données constitué d’enregistrements qui
persisteront au fur et à mesure des
instanciations de la MIDlet.
RecordStore
MIDlet 1
MIDlet 2
3
RecordStore
Formation ITIN
20/03/2007
RecordStore
Les implémentations assurent que toutes
les opérations sur un record store sont
• atomiques
• synchrones
• sérialisées
Ö pas de corruption avec des accès multiples.
Présence d’un timestamp et d’un numéro de
version pour des buts des synchronisation.
4
Formation ITIN
20/03/2007
Accès au RecordStore
Une MIDlet peut créer plusieurs record
stores
Une MIDlet peut accéder aux record stores
des autres MIDlets de la suite
Depuis MIDP 2.0, une MIDlet peut autoriser
l’accès à son record store par d’autres
MIDlets de suites différentes
Pour cela, le nom du record store doit être
connu
5
Formation ITIN
20/03/2007
Limites de stockage
L’espace disponible pour la persistance
varie selon les appareils (8ko minimum
selon la spécification MIDP, pas de
maximum)
Bonne pratique, fixer l’attribut
MIDlet-Data-Size
dans le manifeste et le JAD. L’appareil
pourra refuser l’installation si il n’a pas la
place. Dans la pratique, la plupart des
appareil permettent d’excéder le seuil fixé.
6
Formation ITIN
20/03/2007
RecordStore et enregistrements
Un enregistrement :
• un id
• une suite de bytes
Les id effacés ne
sont plus réutilisés.
7
Formation ITIN
id
data
1
byte[]
2
byte[]
3
byte[]
20/03/2007
Contenu d’un record store
Représentation des
enregistrements
Record #1 of length 56 bytes
Les différents
enregistrements
5f 62 06 75 2e 6b 1c 42 58 3f
_b.u.k.BX?
1e 2e 6a 24 74 29 7c 56 30 32
..j$t)|V02
5f 67 5a 13 47 7a 77 68 7d 49
_gZ.Gzwh}I
50 74 50 20 6b 14 78 60 58 4b
PtP k.x`XK
1a 61 67 20 53 65 0a 2f 23 2b
.ag Se./#+
16 42 10 4e 37 6f
.B.N7o
Record #2 of length 35 bytes
22 4b 19 22 15 7d 74 1f 65 26
"K.".}t.e&
4e 1e 50 62 50 6e 4f 47 6a 26
N.PbPnOGj&
31 11 74 36 7a 0a 33 51 61 0e
1.t6z.3Qa.
04 75 6a 2a 2a
.uj**
Record #3 of length 5 bytes
47 04 43 22 1f
8
Formation ITIN
G.C".
20/03/2007
Ouvrir un RecordStore
Identifié par une combinaison de 1 à 32
caractères unicodes, sensible à la casse.
Nom unique dans une MIDlet suite donnée.
Deux noms identiques autorisés pour deux
MIDlet suite différentes.
9
Formation ITIN
20/03/2007
Ouvrir un RecordStore
Exemple
10
Formation ITIN
20/03/2007
Fermer un RecordStore
Toujours penser à fermer un record store
ouvert.
11
Formation ITIN
20/03/2007
Supprimer un RecordStore
Attention, toutes les données contenues
seront irrémédiablement perdues.
12
Avec l’émulateur, pendant la phase de développement, on peut
supprimer toutes les bases présentes sur le téléphone. (Utilities)
Formation ITIN
20/03/2007
Lister les RecordStore
On peut obtenir la liste des record stores
détenus par une suite de MIDlets :
13
Formation ITIN
20/03/2007
Insérer un enregistrement
Méthode addRecord() de la classe
RecordStore.
Opération bloquante et atomique qui
retourne l’id du nouvel enregistrement créé.
14
Formation ITIN
20/03/2007
MAJ d’un enregistrement
Implique de connaître l’identifiant de
l’enregistrement à mettre à jour.
Possibilité de récupérer le contenu et
de le modifier grâce aux méthodes :
public int getRecord(
int recordId, byte[] buffer, int offset)
public byte[] getRecord(int recorded)
15
Formation ITIN
20/03/2007
Supprimer un enregistrement
Implique de connaître l’identifiant de
l’enregistrement à supprimer.
Cet identifiant n’est plus réutilisé par la suite
16
Formation ITIN
20/03/2007
Utiliser les flux en écriture
17
Formation ITIN
20/03/2007
Utiliser les flux en lecture
18
Formation ITIN
20/03/2007
Énumération d’enregistrements
Interface RecordEnumeration
Énumérateur bidirectionnel sur une séquence
d’identifiants d’enregistrements.
Itère sur tous (ou une partie si un filtre est appliqué)
les enregistrements d’un RecordStore dans un
ordre déterminé par un comparateur optionnel.
Peut être mis à jour automatiquement en fonction
des ajouts / suppressions d’enregistrements.
19
Formation ITIN
20/03/2007
Énumération d’enregistrements
20
Formation ITIN
20/03/2007
Filtrer une énumération
Interface RecordFilter.
Implémenter la méthode
boolean matches(byte[] candidate)
Méthode appliquée à chaque
enregistrement. Si la méthode renvoie vrai,
l’enregistrement est conservé dans
l’énumération.
21
Formation ITIN
20/03/2007
Filtrer une énumération
Filtrer les enregistrements qui sont qui contiennent une chaîne donnée :
22
Formation ITIN
20/03/2007
Trier une énumération
Interface RecordComparator.
Implémenter la méthode
int compare (byte[] b1, byte[] b2)
Pour les classer/comparer, la méthode
renvoie
23
Formation ITIN
20/03/2007
Trier une énumération
Tri par ordre alphabétique :
24
Formation ITIN
20/03/2007

Documents pareils