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