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

         

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


Для добавления нового типа вы просто должны будете определить новую строку String и целочисленную константу типа int в качестве статических переменных класса Interpreter и в хэш-таблице typeHash.

Листинг 7.9. Константы и инструкции импорта в начале исходного кода класса Interpreter (Interpreter.java)

package com.XmlEcomBook.Chap07; // import org.w3c.dom.* ; import com.sun.xml.tree.* ; import java.io.*; import java.util.* ; import javax.servlet.*; import javax.servlet.http.*;

public class Interpreter { static final String brcrlf = "<br>\r\n"; static final int QMC = 1 ; static final int QMCM = 2 ;

static Hashtable typeHash = new Hashtable(); static { // static initialization block typeHash.put("QMC", new Integer( QMC )); typeHash.put("QMCM", new Integer( QMCM )); }

static int lookUpType( String type ){ Integer N = (Integer)typeHash.get( type ); if( N == null ) return 0 ; return N.intValue(); }

В листинге 7.10 приводятся переменные экземпляра и конструктор класса Interpreter. Для каждого сеанса работы пользователя создается экземпляр класса Interpreter, в котором хранится сам документ и отмечается текущая позиция пользователя в процессе его «продвижения» по анкете. Переменные nowBlock и nowNode являются ссылками на объекты, реализующие интерфейс org.w3c.dom.Node.

Листинг 7.10. Переменные экземпляра и конструктор класса Interpreter (Interpreter.java)

// instance variables below this Document theDom ; Node nowBlock, nowNode ; // nowNode should be quest type boolean terminal = false ; // true if the block is terminal String title ; String css = "" ; // may change from block to block String actionStr ;

NodeList blockNodeList ; // Nodes that are <Block type // the constructor public Interpreter( Document doc, String handler ){ theDom = doc ; actionStr = handler ; Element E = theDom.getDocumentElement(); // the root blockNodeList = E.getElementsByTagName("Block"); // note that in contrast to other get methods, getAttributes // returns "" if the attribute does not exist title = E.getAttribute("title"); css = E.getAttribute("css"); // used for <Intro> }




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