Листинг 9.21. Метод run класса NetNewsSuper (NetNewsSuper.java)
// low priority - check for need to update xml public void run(){ running = true ; try { // runs when first started if( !checkSrc() ){ XMLgrabber grab = new XMLgrabber ( sourceURL, destPath, destFname ); System.out.println("NetNewsSuper runs doQueryNow"); if( !grab.doQueryNow() ){ errCt++ ; System.out.println ("NetNewsSuper.run - bad return from grab"); } } createModel(); }catch(Exception e1){ errCt++ ; } while( running ){ try { sleep( longTime ); XMLgrabber grab = new XMLgrabber ( sourceURL, destPath, destFname ); //System.out.println("NetNewsSuper.run runs doQueryNow"); if( running && grab.doQueryNow() ){ if( errCt > 0 ) errCt-- ; createModel(); } else { errCt++ ; System.out.println ("NetNewsSuper.run - bad return from grab"); } }catch(InterruptedException ie){ errCt++ ; System.err.println("NetNewsSuper.run " + ie ); }catch(Exception ee ){ errCt++ ; System.err.println("NetNewsSuper.run " + ee ); } if( errCt > maxErrCt ){ System.out.println ("NetNewsSuper.run too many errors: " + errCt +" run exiting."); running = false ; } } System.out.println("Leaving NetNewsSuper.run method"); }
// return true if XML source file is found private boolean checkSrc(){ File f = new File( destPath, destFname ); return (f.exists() && f.canRead()); }
В листинге 9.22 показан метод, который создает новый экземпляр класса NewsModel и затем вызывает методы экземпляра loadXML и locateCategories. В случае ошибки переменная usabl е устанавливается равной fal se.