Электронный магазин на Java и XML



         

Класс NewsFormatter - часть 2


У нас имеются две версии метода doNews. Версия, приведенная в листинге 8.4, используется для вывода нескольких сообщений в виде заголовков новостей, краткого и полного форматов изложения. Эта версия метода обеспечивает следующие возможности: выбор сообщений по их тематике и времени появления, пропуск указанного количества сообщений и ограничение общего количества отображаемых сообщений. Строки hs и fs — необязательные параметры, которые обеспечивают некоторые небольшие дополнительные возможности форматирования.

Метод doNews проверяет наличие параметров типа Srting, которые ограничивают выбор сообщений определенными тематическими или временными рамками. Если параметр topstr отличен от null и не пуст, вызывается метод selectNodes, который ограничивает полный список сообщений набором новостей, соответствующим заданной тематике. Аналогично, если указана строка age, вызывается метод limitAge. Если какой-либо из этих методов сокращает список сообщений до нуля, метод doNews сразу же прекращает свое выполнение. Другие параметры контролируют максимальное количество новостей на странице и относительный номер сообщения, с которого начинается их просмотр.

Листинг 8.4. Метод doNews выбирает способ представления сообщений (NewsFormatter.java)

// hs and fs are head and foot used in short and long display // you can also specify templates in the <Newsfile element // PrintWriter, hs, fs, topics, H,S or L, age, mx# // skpN is used to skip the first N items that qualify // presumably printed elsewhere on the page, use 0 to see all // returns number of news items printed public int doNews( PrintWriter out, String hs, String fs, String topstr, String sz, String age, int skpN, int mxN ){ headStr = hs ; footStr = fs ; skipNitems = skpN ; maxNitems = mxN ; itemsCount = 0 ; if( topstr != null && topstr.length() > 0 ){ if( selectNodes(topstr, out )== 0 ) return 0 ; } if( age != null && age.length() > 0 ){ if( limitAge( age, out ) == 0 ) return 0 ; } char szch ; if( sz == null || sz.length() == 0 ) szch = 'L' ; // default to long form else szch = sz.toUpperCase().charAt(0); switch( szch ) { case 'H' : doHeadlineNews( out ); break ; case 'S' : doShortNews( out ); break ; case 'L' : default : doLongNews(out ); } return itemsCount ; }




Содержание  Назад  Вперед