root.addElement( "Click on a url to take it out of the list" +
" and retry it in when requested. " );
root.addElement( new BR() );
UL ul = new UL();
//FIXME: the getReason() call has to be escaped from HTML markup, CR&LF
DynamicURI uri = new DynamicURI( rundata );
ParameterParser params = rundata.getParameters();
uri.addQueryData( params );
Iterator i = urls.iterator();
while ( i.hasNext() ) {
URLInfo info = URLManager.getInfo( (String)i.next() );
/* It can happen that url is no longer in list while
we are processing */
if( info != null ) {
uri.removeQueryData( RETRY_URL );
uri.addQueryData(RETRY_URL, info.getURL());
ul.addElement( new LI()
.addElement( new A(uri.toString() )
.addElement( info.getURL() ) )
.addElement( new B( info.getMessage() ) ) );
}
}
root.addElement( ul );
java.util.Hashtable rt = URLFetcher.getRealtimeURLs();
root.addElement( "The following " +
rt.size() +
" URL(s) are being loaded: " );
root.addElement( new BR() );
ul = new UL();
java.util.Enumeration en = rt.keys();
while (en.hasMoreElements()) {
String key = (String)en.nextElement();
LI li = new LI().addElement( key )
.addElement( " - by " );
if (rt.get(key) != null )
li.addElement( String.valueOf(((Vector)rt.get(key)).size()) )
.addElement( " threads." );
ul.addElement( li );
}
root.addElement( ul );