(
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.