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



         

Метод addText


Метод addText, приведенный в листинге 4.20, вызывается некоторыми другими методами из класса ProductFormatter. Ему передается объект StringBuffer, в который добавляется текст. Параметр name определяет, какой именно текст требуется добавить, а элемент Element соответствует некоторому товару в каталоге. Целое число, являющееся значением параметра name, управляет точками перехода в инструкции switch.

Листинг 4.20. Метод addText (ProductFormatter.java)

// заметим, что в большинстве случаев нам нужно

// значение узла

private void addText(StringBuffer sb, String name, Element el ){

Object obj = fieldHash.get( name );

if( obj == null ){

sb.append( "no " + name + " found " ); return ;

}

switch( ((Integer)obj).intValue()){

case 0 : // "id",

addID( sb, el ); break ;

case 1 : // "keywords",

case 2 : // "prname", product name

addProductName( sb, el ); break ;

case 3 : // "price"

addPrice( sb, el ); break ;

case 4 : // "author",

addAuthor( sb, el ); break ;

case 5 : // "artist",

addArtist( sb, el ); break ;

case 6 : // "description",

addExtendedText( sb, el ); break ;

case 7 : // "image",

addImageTag( sb, el ); break ;

case 8 : // "caption"

addExtendedText( sb, el ); break ;

case 9 : // "quantity_in_stock",

case 10 : // "onsale_date"

}

}

Различные методы, вызываемые методом addText, приведены в листингах 4.21 и 4.22. Эти методы извлекают тот или иной текст из элемента product и добавляют его в Stri ngBuffer.

Листинг 4.21. Различные методы, вызываемые методом addText (ProductFormatter.java)

// Элемент е - это товар <product>

private void addID(StringBuffer sb, Element e ){

String id = e.getAttribute("id" );

sb.append("product code: ");

if( id.length()== 0 ){ sb.append("not assigned");

}

else { sb.append( id );

}

}

// element is either a <product> or <name> as child of a product




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