Fala galera!
Pois bem, no último post criamos o projeto e desenvolvemos as classes Cliente e ClienteFactory (caso não tenha o arquivo anterior, acesse o repositório Github para obter o código).
Hoje vamos desenvolver a classe principal que será responsável por executar o método que irá gerar o relatório, assim como será nossa classe para teste. Em seu projeto você poderá adicionar o método de impressão de relatório em outra classe de sua preferência e de acordo com o contexto de sua aplicação.
Aqui chamamos a classe principal de ReportDevIsComing. Veja o código a seguir:
Classe ReportDevIsComing
package br.com.deviscoming; import java.net.URL; import java.util.List; import javax.swing.JOptionPane; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.JasperViewer;/** * * @author renan.ramos */ public class ReportDevIsComing { /** * @param args the command line arguments */ public static void main(String[] args) { new ReportDevIsComing(); } public ReportDevIsComing() { execute(); } private void execute() { ClienteFactory clienteFactory = new ClienteFactory(); List<cliente> lista = (List) clienteFactory.getCliente(); geraRelatorio(lista); } private void geraRelatorio(List<cliente> lista) { try{ URL arquivo = getClass().getResource("/br/com/deviscoming/relatorio/relDevComing.jasper"); JasperReport report = (JasperReport) JRLoader.loadObject(arquivo); JasperPrint print = JasperFillManager.fillReport(report, null,new JRBeanCollectionDataSource(lista)); JasperViewer jasperViewer = new JasperViewer(print, false ); jasperViewer.setVisible(true); }catch(Exception ex){ JOptionPane.showMessageDialog(null, ex.getMessage()); } } }
Essa classe possui dois métodos o execute() e o geraRelatório(). O método execute tem a função de instanciar um objeto da classe ClienteFactory, obter a lista de clientes e enviá-la ao método geraRelatório. Como o método execute tem uma funcionalidade simples, não abordaremos seus detalhes neste post.
geraRelatório()
private void geraRelatorio(List<cliente> lista) { try{ URL arquivo = getClass().getResource("/br/com/deviscoming/relatorio/relDevComing.jasper"); JasperReport report = (JasperReport) JRLoader.loadObject(arquivo); JasperPrint print = JasperFillManager.fillReport(report, null, new JRBeanCollectionDataSource(lista)); JasperViewer jasperViewer = new JasperViewer(print, false ); jasperViewer.setVisible(true); }catch(Exception ex){ JOptionPane.showMessageDialog(null, ex.getMessage()); } }
A classe instanciamos um objeto da classe URL e definimos a ele onde está localizado nosso relatório. Este objeto será utilizado como parâmetro para o método da classe JRLoader. O método loadObject vai receber o objeto arquivo e ficará responsável por carregar o relatório e o retorno irá para o objeto report da classe JasperReport.
No método fillReport receberá o objeto report, parâmetros (se houver) e um objeto de JRBeanCollectionDataSource e enviamos a lista de clientes por parâmetro.
Após estes pontos bem definidos, basta somente apresentá-los ao usuário com a classe JasperViewer.
No próximo post vamos passar para o ponto onde faremos o relatório e o configuraremos corretamente para receber os dados JavaBean.
Até mais!
;)
Nenhum comentário:
Postar um comentário