VRaptor 3 + Hibernate + JasperReports

Olá pessoal,

Estou meio desesperado com um problema, tenho de fazer um relatório em Jasper, e estou começando agora mas estou meio perdido lendo os tutoriais online…
Então tenho algumas duvidas
1º tem como passar a conexão hibernate ou já uma Collection pronta para o relatório ?
2º para usar com VRaptor 3 tem de fazer algum tratamento especial por causa dos .jasper ?
3º o menos importante, mas… alguem tem algum exemplo funcionando!! rsrs

No aguardo enquanto vou aprendendo a brincar no iReports kkkkk

Obrigado!!!

Att.
Leonardo Lima


	@Path("/pessoa/listagem")
	@Get
	public InputStream listagem() {
		
		List<Pessoa> results = dao.listaTodos();

	    Map<String, String> parameters = new HashMap<String, String>();
	    parameters.put("Teste", "Testando");

	    JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(results);
	    try {
			File jasperFile = ResourceUtils.getFile("classpath:/PessoasListagem.jasper");
			InputStream jasperStream = new FileInputStream(jasperFile);
			LOG.debug(jasperStream);
	    	byte[] bytes = JasperRunManager.runReportToPdf(jasperStream, parameters, ds);
	    	return new ByteArrayInputStream(bytes);
		} catch (Exception e) {
			LOG.error(e.getLocalizedMessage());
		}
		return null;
	}	

Aooo grande Ricardo!!

Salvador!!!

Então duvidas:

ResourceUtils.getFile(“classpath:/PessoasListagem.jasper”);
O .jasper tem de ficar na pasta src ? ou pode ficar em WebContent\Resources\Relatorios ???

Segunda coisa sem querer abusar mto, no iReports, quando vou iniciar, tem de informar uma conexão eu posso deixar um blank e fazer usando os nomes da minha entity que vou passar ? (tipo no JSTL {model.nomeCampo} )

Só não vou conseguir fazer agora rsrs mas na hora do almoço eu vou implementar esse código!!!

[quote=leolimas]ResourceUtils.getFile(“classpath:/PessoasListagem.jasper”);
O .jasper tem de ficar na pasta src ? ou pode ficar em WebContent\Resources\Relatorios ???

Segunda coisa sem querer abusar mto, no iReports, quando vou iniciar, tem de informar uma conexão eu posso deixar um blank e fazer usando os nomes da minha entity que vou passar ? (tipo no JSTL {model.nomeCampo} )[/quote]

você pode sim deixar em WebContent\Resources\Relatorios, mas não é recomendável. pois o arquivo .jasper fica publicado. caso vc não quiser deixar no classpath, uma opção é deixar em WEB-INF\relatorios.
pesquise algumas opções do ResourceUtils (parte do Spring).

no iReports você deve criar uma conexão do tipo Hibernate, para poder trabalhar.

vc pode adicionar uma source folder só pros relatórios, daí eles vão pro classpath automaticamente

dê uma olhada nesse post:
http://www.guj.com.br/posts/list/201107.java

Duvida cruel e meio burra…

tá criei meu report…
mas ai eu acabei setando uma conexão sql…
agora eu queria usar a collection

tenho uma classe chamada Eventos, filtrei por data usando Hibernate, até ai tudo blz…

agora no iReport, como eu indico que vou usar isso…
e por exemplo como faço para acessar os campos, tenho um relacionamento com Promotor
no java fica, evento.getPromotor(), no iReport como ficaria ???

Obrigadooo

Que droga…
estou tentando criar uma conexão hibernate no iReport, fui lá em Ferramentas -> Opções -> ClassPath, e added o caminho para a folder do meu projeto, e msmo assim fica dando que não encontrou nenhum hibernate.cfg.xml

Que droguinha

mudou o erro…
coloquei o caminho exato até o hibernate.cfg, mas agora o erro diz que não pode abrir uma classe declarada as

já added tbm o caminho exato até a pasta da model :frowning:

Updated…

Arrumei… a parte o iReports rssss
Fechei, apaguei tudo, fui lá compilei de novo (antes apaguei a pasta class do netbeans) apontei agora para a src e class (a que fica dentro de build) e pelo menos achou minhas models, to trocando os nomes do report que ja tava feito para testar kkkk

Olá pessoal…

Fiz progresso…

Olha estou usando as duas formas de gerar o report, mas só estou conseguindo ver está Exception que descrevi abaixo…
Aqui vai também as 2 formas que estou tentando…

Andei pesquisando, e todo lugar diz que falta a jar do iText, fui no site do projeto e baixei a recente, adicionei e mesmo assim continua o erro…
Será que vou ter que usar versão que o Lavieri indico 2.1.0 ?

EDIT:
POUTS BAIXEI E FUNFO… q q será ??

    @Post
    public Download eventos(String dataCadastro) {
        Date dataConsulta = DateUtil.now();
        if (dataCadastro == null ? "" != null : !dataCadastro.equals("")) {
            DateFormat df = DateFormat.getInstance();
            try {
                dataConsulta = df.parse(dataCadastro);
            } catch (ParseException ex) {
                Logger.getLogger(RelatorioController.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        Collection<Evento> resultado = eventoDAO.listaTodosPorDataCadastro(dataConsulta);
        return jasperMaker.makePdf("ReportEvto.jasper", resultado, "Rel", false);
    }

    @Post
    public InputStream eventos2(String dataCadastro) {
        Date dataConsulta = DateUtil.now();
        if (dataCadastro == null ? "" != null : !dataCadastro.equals("")) {
            DateFormat df = DateFormat.getInstance();
            try {
                dataConsulta = df.parse(dataCadastro);
            } catch (ParseException ex) {
                Logger.getLogger(RelatorioController.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


        Collection<Evento> resultado = eventoDAO.listaTodosPorDataCadastro(dataConsulta);

        Map<String, String> parameters = new HashMap<String, String>();
        

        JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(resultado);
        try {
            File jasperFile = ResourceUtils.getFile("classpath:/ReportEvto.jasper");
            InputStream jasperStream = new FileInputStream(jasperFile);
            byte[] bytes = JasperRunManager.runReportToPdf(jasperStream, parameters, ds);
            return new ByteArrayInputStream(bytes);
        } catch (Exception e) {
        }
        return null;
    }
br.com.caelum.vraptor.InterceptionException: an exception was raised while executing resource method
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)


root cause 

java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException
	net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:179)
	net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:406)
	br.com.evto.controller.RelatorioController.eventos2(RelatorioController.java:90)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)


root cause 

java.lang.ClassNotFoundException: com.lowagie.text.DocumentException
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
	net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:179)
	net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:406)
	br.com.evto.controller.RelatorioController.eventos2(RelatorioController.java:90)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

tenta baixar um desses:
http://www.jarfinder.com/index.php/java/info/com.lowagie.text.DocumentException

o que o Lavieri falou 2.1.0 deu certo, fui la no sourceforge e pronto

olá pessoal…
estava vendo o ireports que faz os relatorios para o jasperreports… será que teremos um tutorial para criar relatorios utilizando o Ireport, incluindo um exemplo de como integrar o jasperreports no vraptor3?
aguardo resposta.
obrigado.
Leandro.

não tem nada mto diferente de:

-gere o relatório
-pegue o InputStream do relatorio
-retorne o inputStream em algum método do controller

ou seja, qualquer tutorial de iReport serve…

um exemplo de como integrar: http://www.guj.com.br/posts/list/201107.java