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