Java ME, RMS (Record Management System)

____________________________________________________________________

uygulamalar─▒nda bir oyunda y├╝ksek skorlar, uygulamada son yap─▒lan i┼člem veya daha ba┼čka bilgilerin uygulama kapat─▒ld─▒ktan sonra da saklanmas─▒ ve sonraki a├ž─▒l─▒┼čta kullan─▒labilir olmas─▒ istenebilir. Bunu sa─člamak i├žin Java ME platformunda RMS (Record Management System – Kay─▒t Y├Ânetim Sistemi) kullan─▒l─▒r. Bu sistem Java yaz─▒l─▒m─▒na b├╝t├╝nle┼čik bir veri taban─▒ y├Ânetim sistemi gibidir. Kay─▒tlar─▒n─▒z─▒ bir veri taban─▒ gibi kaydedebilir, okuyabilir ve de─či┼čtirebilirsiniz. Java ME platformuna dahil bir s─▒n─▒f oldu─ču i├žin de JSR 75 gibi bir├žok izinler gerektiren dosya eri┼čim aray├╝zleri gerekmez.

RMS sisteminde kay─▒tlar kay─▒t indeksini belirten bir int ve verinin bulundu─ču bir byte de─čeri ┼čeklindedir. Yani her farkl─▒ kayd─▒n bir int de─čeri olur ve veri byte olarak saklan─▒r. Kay─▒tlar platform ba─č─▒ml─▒ konumlarda kullan─▒c─▒n─▒n normal ┼čartlarda eri┼čemeyece─či dosyalarda tutulur. RMS sistemine bir veri taban─▒ y├Ânetim sistemi de diyebiliriz.

Bir RecordStore
Kay─▒tID intVeri byte[]
1abc
2def

RMS i├žin javax.microedition.rms.RecordStore s─▒n─▒f─▒ kullan─▒l─▒r. RecordStoreException buradaki t├╝m istisnalar i├žin s├╝per s─▒n─▒ft─▒r.

RecordStore olu┼čturmak ve a├žmak:

Bir RecordStore a├žmak veya yeni bir RecordStore┬áolu┼čturmak i├žin RecordStore.openRecordstore(String kay─▒t_ismi, boolean true/false) y├Ântemi kullan─▒l─▒r. RecordStore ismi 32 karaktere kadar bir Unicode de─čeri olabilir. Boolean k─▒sm─▒ da yeni RecordStore olu┼čturma ile ilgilidir. E─čer true ise belirtilen isimde bir RecordStore olmamas─▒ durumunda yeni bir RecordStore olu┼čturulacak, false ise RecordStore┬áolu┼čturulmayacak ve RecordStoreNotFoundException istisnas─▒ olu┼čacakt─▒r. Ayr─▒ca e─čer kay─▒t sistemi dolu, yeterli haf─▒za yok ve yeni RecordStore olu┼čturulam─▒yorsa RecordStoreFullException istisnas─▒ olu┼čur.

├ľrnek:

try{
RecordStore rs = RecordStore.openRecordStore("Kay─▒t", true );
}
catch (RecordStoreException ex){birseylerYap();}

Uygulaman─▒z MIDP 2.0 ise isterseniz uygulaman─▒zda payla┼č─▒k bir RecordStore olu┼čturabilirsiniz, b├Âylece di─čer uygulamalar ya da sizin yazd─▒─č─▒n─▒z di─čer uygulamalar buraya eri┼čebilir.

T├╝m uygulamalara a├ž─▒k bir RecordStore olu┼čturmak i├žin a├žma kodu ┼č├Âyle olmal─▒:

int authMode = RecordStore.AUTHMODE_ANY;
boolean yazilabilir = true;
rs = RecordStore.openRecordStore( "Kay─▒t", true, authMode, yazilabilir );

RecordStore.AUTHMODE_ANY olunca RecordStore t├╝m MIDlet s├╝itleri taraf─▒ndan a├ž─▒labilir. AUTHMODE_PRIVATE olarak da kullan─▒labilir ama bunun sonucu ├Ânceki kullan─▒mla ayn─▒ olacakt─▒r, yani sadece kendi MIDlet s├╝itimiz bu alana eri┼čebilecek.

T├╝m de─čil de sadece belirli bir MIDlet s├╝it taraf─▒ndan ula┼č─▒lmas─▒n─▒ istiyorsak kodumuzu ┼ču ┼čekilde yazabiliriz:

rs = RecordStore.openRecordStore("Kay─▒t", String uretici, String suit);

Di─čer uygulamam─▒z da bunu ┼č├Âyle a├žabilir:

String isim = "Kay─▒t";
String uretici = "f-blog.info";
String suit = "XXXUygulamas─▒";
RecordStore rs = RecordStore.openRecordStore( isim, uretici, suit );

Uygulama ismi yani MIDlet s├╝itinin ismi ve ├╝retici de─čerleri kayd─▒ olu┼čturan uygulaman─▒n de─čerleri ile ayn─▒ olmak zorundad─▒r.

RecordStore kapamak:

─░┼či biten bir kayd─▒ kapamak gereklidir, bunun i├žin de RecordStore.closeRecordStore(String rs_ismi) y├Ântemi kullan─▒l─▒r. E─čer kay─▒t kapal─▒ ise RecordStoreNotOpenException istisnas─▒ olu┼čur.

try{
rs.closeRecordStore();
}
catch (RecordStoreException ex){ ... }

RecordStore s─▒ralanmas─▒:

RecordStore s─▒ralamak i├žin public String[] listRecordStores() metodu kullan─▒l─▒r. ├ľrnek:
String[] rsler = RecordStore.listRecordStores();

RecordStore silme:

RecordStore silme i┼člemi RecordStore.deleteRecordStore(String “kayit”) ile yap─▒l─▒r. Silinecek RecordStore kapal─▒ olmal─▒d─▒r.


if (RecordStore.listRecordStores() != null){//─░stisnaya kar┼č─▒ kay─▒t olup olmad─▒─č─▒ kontrol edilir
try{RecordStore.deleteRecordStore("Kay─▒t");}
catch (Exception ex){ ... }
}

RecordStore i├žine┬áveri girme :

RecordStore i├žine┬áveri girmek i├žin ┼ču metot kullan─▒labilir:
public int addRecord(byte[] veri, 0, int byteSay─▒s─▒)
Bu metotla kayda bir byte verisi girilir. Olu┼čabilecek istisnalar;┬áRecordStoreNotOpenException, RecordStoreException,
RecordStoreFullException, (MIDP 2.0) SecurityException
.

String yazi = "veri...";
byte[] veri = yazi.toByteArray();
rs.addRecord( veri, 0, veri.length );}

Veri okuma:

Veri okuma RecordStore.getRecord(int kayitID) ile yap─▒l─▒r. ├ľr:

int kayitID = 1;
byte[] veri = kayit.getRecord( kayitID );

Veri g├╝ncelleme:

Veri g├╝ncelleme RecordStore.setRecord(int KayitID, byte veri, 0, int baytSayisi) ile yap─▒l─▒r. KayitID de─čeri kayd─▒n kay─▒t alan─▒ i├žindeki s─▒ras─▒ veya indeksidir.

String yazi = "veri xxx...";
byte[] veri = yazi.toByteArray();
int kayitID = 0;
rs.setRecord(kayitID,veri, 0, veri.length );

─░stisnalar:

RecordStore i┼člemlerinde RecordStoreException s├╝per s─▒n─▒f─▒n─▒n alt─▒nda a┼ča─č─▒daki istisnalar olu┼čabilir:
InvalidRecordIDException – RecordStore i├žindeki kay─▒tlar─▒n ID de─čerlerinde hata vard─▒r. Olmayan bir kay─▒t i├žin ID belirtilmi┼čtir.
RecordStoreFullException – RecordStore haf─▒za yetersizli─či ya da sistemde ├Ântan─▒ml─▒ kay─▒t say─▒s─▒na ula┼člm─▒┼č oldu─ču i├žin yeni kay─▒t olu┼čturulamaz.
RecordStoreNotFoundException – Belirtilen isimde bir RecordStore yok.
RecordStoreNotOpenException – RecordStore kapal─▒.