Progresso ao preencher o relatório do jaspe

Eu gostaria de dar progresso ao usuário enquanto Jasper reports está preenchendo um relatório de compilation. Basicamente eu gostaria de obter progresso enquanto isso está sendo executado:

JasperFillManager.fillReport (JasperReport rpt, parâmetros de mapa, JRDataSource src)

Existe alguma maneira de conseguir isso?

Do Jasper Reports versão 4.6.0 Você pode usar FillListener :

 AsynchronousFillHandle handle = AsynchronousFillHandle.createHandle(jasperReport, params, dataSource); handle.addFillListener(new FillListener() { @Override public void pageUpdated(JasperPrint jasperPrint, int pageIndex) { log.info("pageUpdated " + pageIndex); } @Override public void pageGenerated(JasperPrint jasperPrint, int pageIndex) { log.info("pageGenerated " + pageIndex); } }); 

NOTA : para construir a versão 4.6.0, obtenha fonts do svn e use ant:

 svn co http://jasperforge.org/svn/repos/jasperreports (user/pass: anonymous) cd jasperreports\trunk\jasperreports ant jar 

Estou usando esses componentes do PrimeFaces para mostrar que o relatório está gerando:

     

Não tenho nenhuma maneira real de determinar o tempo total que meus relatórios levarão para compilar e preencher, então optei por não usar uma barra de progresso real que às vezes é preenchida antes que o relatório seja concluído.

Eu tenho medo que não seja possível monitorar o progresso do preenchimento do relatório jasper (a partir da versão 4.0.2) – net.sf.jasperreports.engine.fill.JRFiller não oferece nenhum tipo de notificação de progresso.