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




Класс NetNewsBean


Этот класс выполняет роль интерфейса между сервлетом и хранящимся в памяти объектом NewsModel, который соответствует конкретному источнику сообщений. Как показано в листинге 9.30, конструктор использует класс NetNewsSuper для получения текущего объекта NewsModel для заданного источника.

Листинг 9.30. Начало класса NetNewsBean (NetNewsBean.java) package com.XmlEcomBook.Chap09;

package com.XmlEcomBook.Chap09;

import java.util.* ; import org.w3c.dom.* ;

public class NetNewsBean { static String noDataStr ="No Data is available"; static String dataSourceErr = "Error when loading data " ; NewsModel newsM ; // has public boolean usable and errStr

// create with source url string, dest file path, dest fname NetNewsBean( String source, String pth, String fn ) throws Exception { NetNewsSuper nns = NetNewsSuper.getNetNewsSuper( source,pth,fn ); newsM = nns.getNewsModel() ; // throws exception }

public String getDocDate(){ if( newsM == null ) return noDataStr ; if( newsM.usable ) return newsM.dateStr ; return dataSourceErr ; }

В листинге 9.31 показаны методы, которые обеспечивают доступ к списку тематических категорий в конкретном объекте NewsModel. Метод getTopicsAsArray просто возвращает массив типа String, в то время как getTopicsAsSelect возвращает список в формате HTML.

Листинг 9.31. Методы, которые возвращают тематические категории в виде массива и в виде списка в формате HTML (NetNewsBean.java)

public String[] getTopicsAsArray(){ if( newsM == null || !newsM.usable ) return null; return newsM.getTopics(); } // return available topics as a Select control with values // matching the index of the topics array public String getTopicsAsSelect(){ if( newsM == null ) return noDataStr ; StringBuffer sb = new StringBuffer(1000); if( newsM.usable ){ String[] topics = newsM.getTopics(); sb.append(" <select name=\"topics\" MULTIPLE size=\"3\">\r\n"); for( int i = 0 ; i < topics.length ; i++ ){ sb.append("<option value=\""); sb.append( Integer.toString( i )); sb.append("\" > "); sb.append( topics[i] ); } sb.append("</select>\r\n"); } else { sb.append( dataSourceErr ); sb.append( newsM.lastErr ); } return sb.toString(); }




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