display.setCurrent (a, AddressBookMain.get Instance ());
})
catch (RecordStoreException re)
re.printStackTrace(); Alert a = new Alert("Error retrieving record",
"Error retrieving record.", AlertType.CONFIRMATION);
a. setTimeout(Alert.FOREVER); display.setCurrent (a, this);
catch (lOException ioe)
}
ioe.printStackTrace();
}
finally
{
return numRecords;
{
public void coramandAction(Command c, Displayable d)
if (c == back)
AddressBookMain.getlnstancel). display ();
}
}
}
ΠΠ΅ΡΠΎΠ΄ buildRecordList() ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΡ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ , ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΈΠΌΠ΅Π½. ΠΡΠ·ΠΎΠ² enumerateRecords () Π²ΡΠ΄Π°Π΅Ρ RecordEnumeration, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² hasNextRecord() ΠΈ nextRecord() ΡΠΈΠΊΠ» while ΠΏΡΠΎΡΡΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π° ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡ List Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ Π±Π°ΠΉΡΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΠ°Π½Π΅Π΅. ΠΡ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΈΠΌΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ string, ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ· Π±Π°ΠΉΡΠΎΠ² Π² String. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ° ΠΆΠ΅ ΡΠ°ΠΌΠ°Ρ ΠΈΠ΄ΠΈΠΎΠΌΠ° ΠΏΠΎΡΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π΄Π΅ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ DatalnputStream, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ API Π΄Π»Ρ Π»Π΅Π³ΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Java.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΊΠΈ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΊΠΈ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ.
ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ enumerateRecords() ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠ»ΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. Π€ΠΈΠ»ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π½Π°Π±ΠΎΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ Π·Π°ΠΏΠΈΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² Π½Π°Π±ΠΎΡ ΡΠΏΠΈΡΠΊΠ°.
Π€ΠΈΠ»ΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ RecordFilter, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ javax.microedition.rms. ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ boolean matches (byte [] candidate). ΠΠ°Ρ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ RecordFilter Π·Π°Π΄Π°Π΅Ρ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠ΅ΡΠΎΠ΄ enumerateRecords() Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.3 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° SearchScreen. Java. ΠΠ½ ΠΈΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΈΠ»ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΡΡΠΎΠΊΠ΅.
ΠΠΈΡΡΠΈΠ½Π³ 7.3. ΠΠΎΠΈΡΠΊ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ API Π² ΠΊΠ»Π°ΡΡΠ΅ AddressBook, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅ΠΌ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΠΏΠΎΠΈΡΠΊΠ°
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStoreException;
import Java.util.Enumeration;
import Java.util.Vector;
/**
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π²Π½Π΅Π΄ΡΡΠ΅Ρ ΡΠΊΡΠ°Π½, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΡΠΊΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²ΠΎΠ΄ΠΈΡ ΠΈΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠΌΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅.
*/
public class SearchScreen extends Form
implements CommandListener
{
private static Command go =
new Command("Go", Command.SCREEN, 1);
private static Command back = new Command("Back", Command.BACK, 1);
private static SearchScreen instance; private Display display;
private AddressBookMain addressBook; private TextField keyEntry;
/**
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
*/
public SearchScreen(}
(
super("Search for entry");
instance = this;
PersistenceDerao pDemo = PersistenceDemo.getlnstance ();
display = Display.getDisplay (pDerno);
addressBook = AddressBookMain.getlnstance ();
keyEntry = new TextField("Enter name",
null, 20, TextFieid.ANY); append(keyEntry);
addCommand(go); addCommand(back);
setCoramandListener(this);
}
/**
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠ·ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
/**
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
**/
public static SearchScreen getlnstance ()
return instance;) void display!)
(display.setCurrentlthis);
}
/**
ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ ΠΏΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ SearchResultScreen. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ°ΡΡΠ°ΡΠ° Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² Vector Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΠ· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.
*/
void displaySearchResults(Vector results)
SearchResultScreen screen =
new SearchResultScreen (results);
display. setCurrenJ: (screen);
)
Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ.
ΠΡΠΈΡΠ΅ΡΠΈΠΈ ΠΎΡΠ±ΠΎΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½ΠΈ, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π² TextField Β«keyEntryΒ». ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ AddressBook.getMatchesByName() Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
*/
Vector buildSearchResults()
{
AddressBook addressBook =
AddressBookMain.getInstance(). getAddressBook();
String matchKey = keyEntry.getString(); Vector results = new Vector();
try
{
RecordEnuraeration re =
addressBook.getMatchesByName(matchKey);
byte [] record = null;
while (re.hasNextElement())
record = re.nextRecord (); results.addElement(record);
}
}
catch (RecordStoreException rse)
}
rse.printStackTracet);
)
return results;
)
/**
Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅.
class BuildSearchResultsAction implements Runnable
{
public void run ()
Vector results = buildSearchResults ();
displaySearchResults(results);
}
}
public void commandAction(Command c, Displayable d);
if (c == go)
Runnable action = new BuildSearchResultsAction();
action.run ();
)
else if (c == beck)
}
AddressBookMain.getInstanced.display!);
}
}
}
ΠΠ΅ΡΠΎΠ΄ buildSearchResults() Π² ΠΊΠ»Π°ΡΡΠ΅ SearchScreen ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π²ΡΠ·ΡΠ²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ getMatchesByName (String matchKey) Π² ΠΊΠ»Π°ΡΡΠ΅ AddressBook. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ»ΡΡΡΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π»ΠΈΡΡ ΡΠ΅Ρ , Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ matchKey.
ΠΠ΅ΡΠΎΠ΄ getMatchesByName () Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Ρ ΡΠΈΠ»ΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΌΠ΅ΡΠΎΠ΄ enumerateRecords (). ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ MatchAllNamesFilter ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΡΠΈΠ»ΡΡΡΠ° Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ matchKey.
ΠΠ΅ΡΠΎΠ΄ enumerateRecords () ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠ»ΡΡΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅:
boolean matches(byte [] candidate)
ΠΡΠ»ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ true, ΠΎΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΡ Π·Π°ΠΏΠΈΡΡ Π² Π½Π°Π±ΠΎΡ ΡΠΏΠΈΡΠΊΠ°. Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΡΡ ΠΎΠ΄Π½ΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡΠ° SQL Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ . ΠΠ±ΡΠ΅ΠΊΡ RecordFilter ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.2 Π°ΡΠ³ΡΠΌΠ΅Π½Ρ RecordFilter Π±ΡΠ» ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠ»Π°ΡΡ RecordList ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅, ΡΠΈΠ»ΡΡΡ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ»ΡΡΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ. Π‘Π»Π΅Π΄ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π»ΠΈΡΡΠΈΠ½Π³Π° 7.4, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ RecordFilter ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΠΌΠΎΠΌΡ ΠΏΠΎΠΈΡΠΊΡ.
ΠΡ, Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΠΎ, Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΏΠ΅ΡΠ΅ΡΠ»Π°Π½Π½ΡΠΉ Π² enumerateRecords () Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , Π±ΡΠ» ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ. ΠΡΠΎΡ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΌΒ» Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΄Π²Π΅ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ.
ΠΠ°ΠΊ ΠΈ ΡΠΈΠ»ΡΡΡΡ, ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ. ΠΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° RecordComparator, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄
int ccmparefbyte [] recordl, byte [] record2)
ΠΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 7.1, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°.
Π’Π°Π±Π»ΠΈΡΠ° 7.1. ΠΠΎΠ½ΡΡΠ°Π½ΡΡ RecordComparator
ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
public static int EQUIVALENT β ΠΠ²Π΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
public static int FOLLOWS β ΠΠ°ΠΏΠΈΡΡ 1 Β«Π±ΠΎΠ»ΡΡΠ΅Β», ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΡ 2, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
public static int PRECEDES β ΠΠ°ΠΏΠΈΡΡ 1 Β«ΠΌΠ΅Π½ΡΡΠ΅Β», ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΡ 2, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
ΠΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠΎΠ² ΡΡ ΠΎΠ΄Π½Π° Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ javax.microedition.rras.RecordComparator. ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² Π²ΡΠ·ΠΎΠ² enumerateRecords (). ΠΠ°ΠΏΠΈΡΠΈ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, ΠΏΠΎ Π΄Π²Π΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΡΡΠΈΡΡΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠΎΠΌ.
Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.4 Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΊΠ»Π°ΡΡΠ° AddressBook, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.1. ΠΠΎΠ²ΡΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ AlphabeticalOrdering ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ RecordComparator. ΠΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΈΡ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ (ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ).