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

       

Класс ProductFormatter


Мы добавили множество методов в класс ProductFormatter, описанный в главе 3. Вообще говоря, эти методы просто расширяют те возможности, которыми уже обладал этот класс. В листинге 4.16 показаны статические переменные, которые определяют два различных стиля. «Краткий» (short) стиль используется для отображения списков товаров (всего каталога или одной серии), а полный (full) стиль используется в методе doFullItem класса CatalogBean для отображения полной информации об одном товаре. Также мы создали коллекцию fieldHash, которая связывает названия товаров с целочисленными константами.

Листинг 4.16. Статические переменные класса ProductFormatter (ProductFormatter.java)

package com.XmlEcomBook.catalog;

import java.util.* ;

import java.io.* ;

import org.xml.sax.* ;

import org.w3c.dom.* ;

public class ProductFormatter

{

static String brcrlf = "<br />\r\n" ; // xhtml style br

static String[] shortEl = { "prname", "price" // for product name

};



static String[] shortSt = { "ch3", "ch4"

};

// as used in doListOutput

static String[] fullEl = { "prname",

"author","artist","description",

"price" // for product name

};

static String[] fullSt = { "ch3",

"au1", "au1", "ch4", "ch4"

};

static Hashtable fieldHash ;

// field names for lookup

static String[] fields = { "id", "keywords",

"prname", "price", "author", "artist", "description",

"image", "caption", "quantity_in_stock", "onsale_date",

"shipping_info"

} ;

static { fieldHash = new Hashtable() ;

for( int i = 0 ; i < fields.length ; i++ ){

fieldHash.put( fields[i], new Integer( i ) );

}

}

В листинге 4.17 показано начало кода для методов и переменных экземпляра и конструктора ProductFormatter. Заметим, что конструктор задает формат в соответствии с переданной ему переменной frmt, которая может принимать значение "short" или "full".




Листинг 4.17. Начало кода методов и переменных экземпляра (Product Formatter.java)

String[] elem, style ;

String resourcePath ;

String aLink ;

int linkN ;

// when aLink is supplied, it should be something like

// "/servlet/catalog?action=showproduct", then the doListOutput will build a

// complete link adding &id=xxxxxx to attach to the first parameter

public void setALink(String s, int pos ) { aLink = s ; linkN = pos ;}

public void setResourcePath( String s ){ resourcePath = s ; }

// throws exception if unknown format

public ProductFormatter( String frmt ){

if( frmt.equals("short")){

elem = shortEl ; style = shortSt ;

}

else if( frmt.equals("full")){

elem = fullEl ; style = fullSt ;

}

else { throw new IllegalArgumentException ("ProductFormatter: " + frmt );

}

}

 




Содержание раздела