VRaptor 3 + Hibernate + JasperReports

11 respostas
L

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

11 Respostas

ricardosoares
@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;
	}
L

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!!!

ricardosoares

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} )

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.

Lucas_Cavalcanti

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

L

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

L

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

L

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)
Lucas_Cavalcanti

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

L

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

Leandro-SP

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.

Lucas_Cavalcanti

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

Criado 19 de agosto de 2010
Ultima resposta 20 de ago. de 2010
Respostas 11
Participantes 4