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

         

Конструктор класса...



Листинг 7.21. Конструктор класса Recorder и метод setMethods (Recorder.java)

public Recorder(String id, String typ, String ses,String src ){ userid = id ; usertype = typ ; sessionid = ses ; source = src ; record = new Hashtable();
} /* method information from <Questionnaire>
attributes <Questionnaire title="First Test Quest" author="wbb" date="May 19, 2000" method="xml" file="e:\scripts\questionnaire\testresult.xml" >
*/ public void setMethods( Document doc ){ NamedNodeMap nnm = doc.getDocumentElement().getAttributes();
method = nnm.getNamedItem("method").getNodeValue();
output = nnm.getNamedItem("file").getNodeValue();
// for xml method StringBuffer sb = new StringBuffer( 50 );
sb.append("<Qresults source=\"");
sb.append( source );
sb.append( "\" date=\"" );
sb.append( new Date().toString() );
sb.append( "\" userid=\"");
sb.append(userid);
sb.append( "\" usertype=\"" ) ; sb.append( usertype );
sb.append( "\" sessionid=\"");
sb.append( sessionid );
sb.append("\">
\r\n");
qresultStr = sb.toString();
}

В листинге 7.22 показаны методы terminal, record и toString. Метод terminal отвечает за запись собранных ответов данного пользователя в отведенный для этого файл. Метод toString используется как вспомогательный при отладке.

Метод record вызывается из метода doPost объекта Interpreter после того, как приходит ответ на очередной вопрос. Отметим, что если вам нужно будет создать какой-либо новый тип, требующий специального способа записи, метод record допускает переключение между типами вопросов. Например, если вам потребуется принимать введенный пользователем текст, он будет записан в раздел CDATA, чтобы в случае наличия в этом тексте каких-либо символов, имеющих специальное назначение в XML, не возникло бы затруднений.

При каждом вызове метода record создается строка, содержащая тег Ques, которая записывается в хэш-таблице record и ключом для которой служит переменная quesid. Поскольку хэш-таблица не сохраняет порядок добавления в нее элементов, очередность расположения тегов Ques в ней непредсказуема. Но это не страшно, поскольку для определения порядка следования вопросов мы можем использовать документ XML, содержащий сценарий опроса.



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