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

         

Код класса Recorder...



Листинг 7.22. Код класса Recorder, продолжение (Recorder.java)

// called when a <Terminal block is reached // if altdest is not "" this changes the default output public void terminal(String altdest ) throws IOException { if( altdest != null && altdest.length() >
4 ) output = altdest ; if( output == null || output.length() < 5 ){ System.out.println("QARG output is: " + output );
return ; } terminated = true ; // write in append mode synchronized( filelock ){ FileWriter fw = new FileWriter( output,true );
PrintWriter pw = new PrintWriter( fw );
pw.print( qresultStr );
Enumeration e = record.elements();
while( e.hasMoreElements() ){ pw.print( (String)e.nextElement() ) ; } pw.print("</Qresults>
\r\n");
pw.close();
} // end synchronized block } // recording format in xml /*<Qresults source=.... date= >
<Ques id="start:1">
<Qopt val="a">
</Qopt>
<Qopt val="b">
</Qopt>
</Ques>
</Qresults>
*/ public void record( String quesid, int type, String[] optS ){ if( terminated ) return ; // prevent backing up from terminal Q // System.out.println("Start record: " + quesid );
StringBuffer sb = new StringBuffer( 100 );
sb.append("<Ques id=\"" );
sb.append( quesid );
sb.append("\" >
");
switch( type ){ case Interpreter.QMC : case Interpreter.QMCM : if( optS == null || optS.length == 0 ) break ; for(int i =0 ; i < optS.length ; i++ ){ sb.append("<Qopt val=\"");
sb.append( optS[i] );
sb.append("\">
</Qopt>
");
} break ; default : sb.append("UNKNOWN TYPE");
} sb.append("\r\n</Ques>
\r\n");
String tmp = sb.toString();
// note this will replace answer if user backed up with browser back record.put( quesid, tmp );
return ; } public String toString() // for debugging { StringBuffer sb = new StringBuffer( "Recorder user: " );
sb.append( userid );
sb.append(" type: " );
sb.append( usertype );
sb.append(" session: " );
sb.append( sessionid );
sb.append(" method: ");
sb.append( method );
sb.append( " output: " );
sb.append( output );
// how and where we save return sb.toString() ; } }

В листинге 23 показаны результаты ответа одного пользователя на простой опрос. Атрибут source указывает, какой файл XML использовался для создания анкеты. В атрибут date записывается дата первого вхождения пользователя в систему и открытия страницы введения в анкету. Мы также включили атрибут sessionid для помощи в отладке, но, вероятно, без него можно обойтись.



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