Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° J2MeΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 31

Автор Автор нСизвСстСн

MIDP ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ постоянноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмы управлСния записями (Record Management System (RMS)). ΠŸΠ°ΠΊΠ΅Ρ‚ javax.microedition.rms опрСдСляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ интСрфСйсы прилоТСния, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ постоянноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТит этот ΠΏΠ°ΠΊΠ΅Ρ‚.


ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° постоянного хранСния устройством

КаТдоС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ трСбованиям MIDP устройство ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти для постоянного хранСния Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния. Π”Π°Π½Π½Ρ‹Π΅ MID-Π»Π΅Ρ‚Π°, хранящиСся Ρ‚Π°ΠΌ, постоянно ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΈ мноТСствС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚. Как физичСскоС мСстополоТСниС, Ρ‚Π°ΠΊ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… зависят ΠΎΡ‚ устройства.

RMS API ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± области хранСния устройства ΠΈ доступС ΠΊ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для создания, уничтоТСния ΠΈ измСнСния Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ MID-Π»Π΅Ρ‚ΠΎΠ² Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ устройства.


МодСль хранСния Π΄Π°Π½Π½Ρ‹Ρ… RMS

RMS ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ созданиС мноТСства Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ записСй, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½Π° рисункС 7.1, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΈ. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ записСй β€” это Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, основным понятиСм ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся запись. КаТдоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ записСй содСрТит ноль ΠΈΠ»ΠΈ большС записСй. НазваниС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° записСй Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ рСгистру ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ максимум ΠΈΠ· 32 Π·Π½Π°ΠΊΠΎΠ² ΡƒΠ½ΠΈΠΊΠΎΠ΄Π°. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ записСй создаСтся МШ-Π»Π΅Ρ‚ΠΎΠΌ.



Рисунок 7.1. RMS состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ записСй, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ записСй, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… собой массив Π±Π°ΠΉΡ‚ΠΎΠ²


MID-Π»Π΅Ρ‚Ρ‹ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° MID-Π»Π΅Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° записСй Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. Набор MID-Π»Π΅Ρ‚ΠΎΠ² опрСдСляСт пространство ΠΈΠΌΠ΅Π½ для Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ записСй, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ записСй Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π½Π°Π±ΠΎΡ€Π° MID-Π»Π΅Ρ‚ΠΎΠ² имя. Однако Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… MID-Π»Π΅Ρ‚Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, MID-Π»Π΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ список ΠΈΠΌΠ΅Π½ всСх Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ записСй, доступных ΠΈΠΌ. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ свободного мСста, доступного для хранСния Π΄Π°Π½Π½Ρ‹Ρ….

Π’ этой связи Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° всС MID-Π»Π΅Ρ‚Ρ‹ Π² Π½Π°Π±ΠΎΡ€Π΅ MID-Π»Π΅Ρ‚ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ с устройства, AMS устройства удаляСт всС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° записСй Π² пространствС ΠΈΠΌΠ΅Π½ Π½Π°Π±ΠΎΡ€Π° MID-Π»Π΅Ρ‚ΠΎΠ². ВсС Π΄Π°Π½Π½Ρ‹Π΅ постоянного хранСния Π±ΡƒΠ΄ΡƒΡ‚ потСряны. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прилоТСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ прСдупрСТдСния ΠΈΠ»ΠΈ подтвСрТдСния, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ поняли ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ! ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования записСй Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ со стороны сСрвСра, Π·Π°Π΄Π°Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽ Π² Π³Π»Π°Π²Π΅ 11.

RMS опрСдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ абстрактныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° записСй:

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ записи. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записи. ИзмСнСниС записи. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ (ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅) записи. БоставлСниС списка всСх записСй.

Записи ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ID записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся СдинствСнным ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ ваТнСйшим ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ. Π’ΠΈΠΏ ID всСх записСй являСтся встроСнным Ρ‚ΠΈΠΏΠΎΠΌ Java int. RMS Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ свойств β€” Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, строки, столбцы, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, β€” ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² рСляционных Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….


Записи

Π—Π°ΠΏΠΈΡΡŒ являСтся массивом Π±Π°ΠΉΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° byte []. RMS Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ описаниС ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ записи. Π’Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… записи ΠΈ ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ записи поэтому Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался ΠΏΡ€ΠΈ Π΅Π΅ создании. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ запись являСтся просто массивом Π±Π°ΠΉΡ‚ΠΎΠ², прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² Π±Π°ΠΉΡ‚Ρ‹ ΠΏΡ€ΠΈ создании записСй, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΠ· Π±Π°ΠΉΡ‚ΠΎΠ² Π² Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния

Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части этой Π³Π»Π°Π²Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ частныС подробности RMS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ свойства RMS. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ являСтся простой адрСсной ΠΊΠ½ΠΈΠ³ΠΎΠΉ, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ².

МногиС ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с созданиСм ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ структуры ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ MIDP. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ RMS ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΎΠ΄Π½ΠΈΠΌ классом. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ использованиС постоянного хранСния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹, вСроятно, Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° настоящСм мобильном устройствС.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² этой Π³Π»Π°Π²Π΅, для получСния прСдставлСния ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ продвигаСтся Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ экранам. Π― ΠΎΡΡ‚Π°Π²Π»ΡΡŽ это Π½Π° вашС усмотрСниС вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Π°ΠΌ здСсь изобраТСния всСх этих экранов.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

β€” AddScreen.java;

β€” AddressBook.java;

β€” AddressBookMain.java;

β€” DeleteAllConfirmationScreen.java;

β€” PersistenceDemo.java;

β€” RecordList.java;

β€” SearchResultScreen.java;

β€” SearchScreen.java.


ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ листинги этих Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Web-сайтС Β«Prentice-HallΒ» ΠΏΠΎ адрСсу http://www.phptr.com. Π€Π°ΠΉΠ» PersistenceDemo.java опрСдСляСт MID-Π»Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт мСню, содСрТащСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ адрСсной ΠΊΠ½ΠΈΠ³ΠΈ. Π€Π°ΠΉΠ» AddressBookMain.java опрСдСляСт Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ адрСсной ΠΊΠ½ΠΈΠ³ΠΈ.

Π’ листингС 7.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ класса AddressBook.java. Π­Ρ‚ΠΎΡ‚ класс ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°Ρ… RMS API ΠΈΠ· ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части МID-Π»Π΅Ρ‚Π°. ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ MID-Π»Π΅Ρ‚Π° ΠΎΠ½ создаСт экзСмпляр класса AddressBook, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ записСй с ΠΈΠΌΠ΅Π½Π΅ΠΌ addressbook.


Листинг 7.1. Класс AddressBook позволяСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ записСй


import javax.microedition.rms.RecordComparator;

import javax.microedition.rms.RecordEnumeration;

import javax.microedition.rms.RecordFilter;

import javax.microedition.rms.RecordStore;

import javax.microedition.rms.RecordStoreException;

import javax.microedition.rms.RecordStoreNotOpenException;

import Java.io.ByteArrayInputStream/

import java.io.ByteArrayOutputStream;

import Java.io.DatalnputStream;

import java.io.DataOutputStream;

import Java.io.lOException;

/**


Π­Ρ‚ΠΎΡ‚ класс внСдряСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ с Ρ†Π΅Π»ΡŒΡŽ дСмонстрации.

Π’ Π½Π΅ΠΌ хранятся записи, состоящиС ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠΌΠ΅Π½ΠΈ String ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° String.

Π­Ρ‚ΠΎΡ‚ класс опрСдСляСт Π΄Π²Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… класса, ΠΎΠ΄ΠΈΠ½ являСтся Π±Π»ΠΎΠΊΠΎΠΌ сравнСния записСй, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ записСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ записСй.


*/

public class AddressBook

private static final String RECORD_STORE_NAME = Β«address-bookΒ»;

private RecordStore recordStore;

public AddressBook () throws RecordStoreException

super!);

recordStore = RecordStore.openRecordStore(RECORD_STORE_NAME, true);

{

void close() throws RecordStoreException

{

try

{

recordStore.closeRecordStore();

}

catch (RecordStoreNotOpenException rsno)

{

}

}

/*


ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ записСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.


@Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ссылку Π½Π° RecordStore, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

public RecordStore getRecordStore()

}

return recordStore;

/**


ДобавляСт ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ запись Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ записСй Π΄Π°Π½Π½ΠΎΠΉ адрСсной ΠΊΠ½ΠΈΠ³ΠΈ.


@param name имя Π²Ρ…ΠΎΠ΄Π° Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ.

@parara phone Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ для Π²Ρ…ΠΎΠ΄Π° Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.

@сбрасываСт RecordStoreException, Ссли Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ записи.

public void addRecord(String name, String phone)

throws RecordStoreException

}

ByteArrayOutputStreara baos = new ByteArrayOutputStream();

DataOutputStream dos = new DataOutputStream(baos);

try

dos.writeUTF(name); dos.writeUTF(phone);

}

catch (lOException ioe)

{

ioe.printStackTrace();

)

int id =

recordstore.addRecord(baos.toByteArray(), 0,

baos.toByteArrayO.lengthy-System, out. println ("Record id = " + id);

}

/**


RecordEnumerator, ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ записи Π² лСксикографичСском порядкС ΠΏΠΎ полям ΠΈΠΌΠ΅Π½ записСй.


*/

RecordEnumeration getMatchesByNarae(String matchKey)

throws RecordStoreNotOpenException

(

MacchAllNaraesFilter filter =

new MatchAllNamesFilter(matchKey);

AlphabeticalOrdering comparator =

new AlphabeticalOrdering();

return recordStore.enuraerateRecords(filter,

comparator, false);

}

/**


RecordFilter, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ совпадСниС, Ссли имя Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° (ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π² записи Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°)!) Ρ‚ΠΎΡ‡Π½ΠΎ соотвСтствуСт ΠΈΠΌΠ΅Π½ΠΈ элСмСнта списка ΠΈΠ»ΠΈ 2) Ссли строка ΠΈΠΌΠ΅Π½ΠΈ элСмСнта списка начинаСтся с ΠΈΠΌΠ΅Π½ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Π΅Π΅ установлСно соотвСтствиС, false β€” Π² ΠΈΠ½ΠΎΠΌ случаС.


*/

class MatchAllNamesFilter implements RecordFilter

{

String requestString;

public MatchAllNamesFilter(String matchKey);

requestString = matchKey;

}

public boolean matches(byte [] candidate)

{

ByteArraylnputStream bais =

new ByteArraylnputStream(candidate);

DatalnputStream dis = new DatalnputStream(bais);

Siring name = null;

try

}

name = dis.readUTF();

if (name.indexOf(requestString) == 0)

return true;

else

return false;

}

catch (lOException ioe)

{

ioe.printStackTrace!);

return true;

}

}

/**


Π­Ρ‚ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ RecordCornparator, Ρ‡ΡŒΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π—Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ сортировки ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ.


*/

class AlphabeticalOrdering implements RecordCoraparator

}

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€.