From: <max...@us...> - 2009-09-27 18:14:46
|
Revision: 3879 http://uni-d.svn.sourceforge.net/uni-d/?rev=3879&view=rev Author: max_brod Date: 2009-09-27 18:14:31 +0000 (Sun, 27 Sep 2009) Log Message: ----------- [UNI-473] Change the print-tool to not stop at first report with an error and display the creation timestamp. Modified Paths: -------------- trunk/Uni-d/tool/src/main/java/be/unid/tool/print/PrintWorker.java Modified: trunk/Uni-d/tool/src/main/java/be/unid/tool/print/PrintWorker.java =================================================================== --- trunk/Uni-d/tool/src/main/java/be/unid/tool/print/PrintWorker.java 2009-09-26 08:19:14 UTC (rev 3878) +++ trunk/Uni-d/tool/src/main/java/be/unid/tool/print/PrintWorker.java 2009-09-27 18:14:31 UTC (rev 3879) @@ -119,60 +119,11 @@ if ( log.isDebugEnabled() ) log.debug( "start loop to print reports" ); for ( ReportPrintInfo info : provider.getReports() ) { - if ( log.isDebugEnabled() ) - { - log.debug( "found report for printing " + info.getReportName() + " : " + info ); - } - HttpClient httpConn = new HttpClient(); - // set timeout to 5 min - httpConn.setConnectionTimeout( 5 * 60000 ); - httpConn.setTimeout( 5 * 60000 ); - PostMethod post = new PostMethod( reportURL.toString() ); - post.setParameter( "file", info.getReportName() ); - post.setParameter( "type", REPORT_TYPE_PRINT ); - post.setParameter( "username", username ); - post.setParameter( "password", password ); - post.setParameter( "language", info.getReportLanguage() ); - - Hashtable<String, String> parameters = info.getParameters(); - Enumeration<String> keys = parameters.keys(); - while ( keys.hasMoreElements() ) + if ( !printOneReport( info, classes.get( i ) ) ) { - String param = keys.nextElement(); - String value = parameters.get( param ); - post.setParameter( param, value ); + continue; } - - if ( log.isDebugEnabled() ) log.debug( "fill report " + info.getReportName() + " : " + info ); - httpConn.executeMethod( post ); - InputStream in = post.getResponseBodyAsStream(); - - JasperPrint print = (JasperPrint) ( new ObjectInputStream( in ) ).readObject(); - - if ( print.getPages().size() == 0 ) - { - if ( log.isDebugEnabled() ) - { - log.debug( "report has no pages " + info.getReportName() + " : " + info ); - } - listener.notifyInfo( ToolListener.STATUS_ENDED, classes.get( i ), - i18n.txt( "nopages", workerId ) ); - listener.notifyPersistentMessage( - i18n.txt( "finished", workerId ) + " " + classes.get( i ) + " " + - i18n.txt( "nopages", workerId ) ); - return; - } - listener.notifyInfo( ToolListener.STATUS_ENDED, classes.get( i ), i18n.txt( "ok", workerId ) ); - listener - .notifyPersistentMessage( i18n.txt( "finished", workerId ) + " " + classes.get( i ) + " " + - i18n.txt( "ok", workerId ) ); - - if ( log.isDebugEnabled() ) log.debug( "print report " + info.getReportName() + " : " + info ); - PrintService ps = getPrintService( info.getPrinterName() ); - new Printer( print, ps != null ? ps : printService ) - .print( forcedPortraitReports, forcedLandscapeReports ); - // add report infos in order to perform the postPrint actions(update/delete) printedReports.add( info ); if ( log.isDebugEnabled() ) @@ -187,18 +138,6 @@ listener.notifyInfo( ToolListener.STATUS_ENDED, classes.get( i ), cnfe.toString() ); throw new ToolException( "problems using the class " + classes.get( i ), cnfe ); } - catch ( JRException jre ) - { - if ( log.isDebugEnabled() ) log.debug( jre, jre ); - listener.notifyInfo( ToolListener.STATUS_ENDED, classes.get( i ), jre.toString() ); - throw new ToolException( "problems printing ", jre ); - } - catch ( IOException ioe ) - { - if ( log.isDebugEnabled() ) log.debug( ioe, ioe ); - listener.notifyInfo( ToolListener.STATUS_ENDED, classes.get( i ), ioe.toString() ); - throw new ToolException( "problems reading report", ioe ); - } catch ( Exception e ) { if ( log.isDebugEnabled() ) log.debug( e, e ); @@ -218,6 +157,74 @@ setWorking( false ); } + private boolean printOneReport( ReportPrintInfo info, String className ) + { + try + { + if ( log.isDebugEnabled() ) + { + log.debug( "found report for printing " + info.getReportName() + " : " + info ); + } + HttpClient httpConn = new HttpClient(); + // set timeout to 5 min + httpConn.setConnectionTimeout( 5 * 60000 ); + httpConn.setTimeout( 5 * 60000 ); + PostMethod post = new PostMethod( reportURL.toString() ); + post.setParameter( "file", info.getReportName() ); + + post.setParameter( "type", REPORT_TYPE_PRINT ); + post.setParameter( "username", username ); + post.setParameter( "password", password ); + post.setParameter( "language", info.getReportLanguage() ); + + Hashtable<String, String> parameters = info.getParameters(); + Enumeration<String> keys = parameters.keys(); + while ( keys.hasMoreElements() ) + { + String param = keys.nextElement(); + String value = parameters.get( param ); + post.setParameter( param, value ); + } + + if ( log.isDebugEnabled() ) log.debug( "fill report " + info.getReportName() + " : " + info ); + httpConn.executeMethod( post ); + InputStream in = post.getResponseBodyAsStream(); + + JasperPrint print = (JasperPrint) ( new ObjectInputStream( in ) ).readObject(); + + if ( print.getPages().size() == 0 ) + { + if ( log.isDebugEnabled() ) + { + log.debug( + "Report " + info.getReportName() + " has no pages. Report creation date: " + info.getTime() ); + } + listener.notifyInfo( ToolListener.STATUS_ENDED, className, + i18n.txt( "nopages", workerId ) ); + listener.notifyPersistentMessage( + i18n.txt( "finished", workerId ) + " " + className + " " + + i18n.txt( "nopages", workerId ) ); + return false; + } + listener.notifyInfo( ToolListener.STATUS_ENDED, className, i18n.txt( "ok", workerId ) ); + listener + .notifyPersistentMessage( i18n.txt( "finished", workerId ) + " " + className + " " + + i18n.txt( "ok", workerId ) ); + + if ( log.isDebugEnabled() ) log.debug( "print report " + info.getReportName() + " : " + info ); + PrintService ps = getPrintService( info.getPrinterName() ); + new Printer( print, ps != null ? ps : printService ) + .print( forcedPortraitReports, forcedLandscapeReports ); + return true; + + } + catch ( Exception e ) + { + log.error( "Problem printing report " + info.getReportName() + " from " + info.getTime(), e ); + } + return false; + } + private PrintService getPrintService( String printer ) { if ( log.isDebugEnabled() ) log.debug( "looking for printer: " + printer ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |