Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
remazela

Java não imprime relatório

Recommended Posts

 

Prezados Amigos

 

Por favor, me perdoa por recorrer ao seu auxílio. Estou montando Relatório usando o JasperReports que está atualmente na Versão 6.3.0,  está me dando o seguinte erro abaixo, que não consigo solucionar, mesmo após várias tentativas para solucionar o problema

 

Quando chamo o relatório através do Sistema (Imprimir), causa um erro que não consigo entender.

 

Erro após gerar Relatório:

Hibernate: select this_.codigo as codigo1_7_1_, this_.descricao as descrica2_7_1_, this_.fabricante_codigo as fabrican5_7_1_, this_.preco as preco3_7_1_, this_.quantidade as quantida4_7_1_, fabricante2_.codigo as codigo1_3_0_, fabricante2_.descricao as descrica2_3_0_ from Produto this_ inner join Fabricante fabricante2_ on this_.fabricante_codigo=fabricante2_.codigo
jul 07, 2016 12:40:49 PM com.sun.faces.application.view.ViewScopeManager <init>

INFORMAÇÕES: CDI @ViewScoped bean functionality unavailable net.sf.jasperreports.engine.JRException: Invalid page index range: 0 - -1 of 0.
	at net.sf.jasperreports.engine.print.JRPrinterAWT.printPages(JRPrinterAWT.java:141)
	at net.sf.jasperreports.engine.JasperPrintManager.print(JasperPrintManager.java:242)
	at net.sf.jasperreports.engine.JasperPrintManager.print(JasperPrintManager.java:129)
	at net.sf.jasperreports.engine.JasperPrintManager.printReport(JasperPrintManager.java:326)
	at br.com.renato.farmaciaweb.bean.ProdutoBean.imprimir(ProdutoBean.java:203)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:149)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)

 

Código fonte do HibernateUtil.java

package br.com.renato.farmaciaweb.util;

import java.sql.Connection;
import java.sql.SQLException;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.jdbc.ReturningWork;
import org.hibernate.service.ServiceRegistry;

public class HibernateUtil {

	private static SessionFactory fabricaDeSessoes = criarFabricaDeSessoes();

	public static SessionFactory getFabricaDeSessoes() {
		return fabricaDeSessoes;
	}
	
	//Converter Sessão em Conexão
	public static Connection getConexao(){
		Session sessao = fabricaDeSessoes.openSession();
		
		Connection conexao = sessao.doReturningWork(new ReturningWork<Connection>() {
			@Override
			public Connection execute(Connection conn) throws SQLException {
				return conn;
			}
		});
		
		return conexao;
	}	
	
	

	private static SessionFactory criarFabricaDeSessoes() {
		try {
			
			Configuration configuração = new Configuration().configure();

			ServiceRegistry registro = new StandardServiceRegistryBuilder()
					                       .applySettings(configuração.getProperties())
					                       .build();

			SessionFactory fabrica = configuração.buildSessionFactory(registro);

			return fabrica;
			
		} catch (Throwable ex) {
			
			System.err.println("A fábrica de sessões não pode ser criada." + ex);
			throw new ExceptionInInitializerError(ex);
			
		}
	}

}

 

Código fonte do ProdutoBean.java

package br.com.renato.farmaciaweb.bean;

import java.io.IOException;
import java.io.Serializable;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

import org.omnifaces.util.Faces;
import org.omnifaces.util.Messages;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

import br.com.renato.farmaciaweb.dao.FabricanteDAO;
import br.com.renato.farmaciaweb.dao.ProdutoDAO;
import br.com.renato.farmaciaweb.domain.Fabricante;
import br.com.renato.farmaciaweb.domain.Produto;
import br.com.renato.farmaciaweb.util.HibernateUtil;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;

@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class ProdutoBean implements Serializable {
	private Produto produto;
	private List<Produto> produtos;
	private List<Fabricante> fabricantes;
	
	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public List<Produto> getProdutos() {
		return produtos;
	}

	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}

	public List<Fabricante> getFabricantes() {
		return fabricantes;
	}

	public void setFabricantes(List<Fabricante> fabricantes) {
		this.fabricantes = fabricantes;
	}

	@PostConstruct
	public void listar() {
		try {
			ProdutoDAO produtoDAO = new ProdutoDAO();
			produtos = produtoDAO.listar();
		} catch (RuntimeException erro) {
			Messages.addGlobalError("Ocorreu um erro ao tentar listar os produtos");
			erro.printStackTrace();
		}
	}

	public void novo() {
		try {
			produto = new Produto();

			FabricanteDAO fabricanteDAO = new FabricanteDAO();
			fabricantes = fabricanteDAO.listar("descricao");
		} catch (RuntimeException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar gerar um novo produto");
			erro.printStackTrace();
		}
	}

	public void editar(ActionEvent evento) {
		try {
			
			produto = (Produto) evento.getComponent().getAttributes().get("produtoSelecionado");
            
			FabricanteDAO fabricanteDAO = new FabricanteDAO();
			fabricantes = fabricanteDAO.listar("descricao");
			
			
			if(produto.getCaminho() == null || produto.getCaminho().isEmpty() ){
				produto.setCaminho("C:/Desenvolvimento/FarmaciaWeb/Uploads/branco.png");
				return;
			} else {
			    //Caminho das imagens p/ editar
			    produto.setCaminho("C:/Desenvolvimento/FarmaciaWeb/Uploads/" + produto.getCodigo() + ".png");
			}
			
			
		} catch (RuntimeException erro) {
			
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar selecionar um produto");
			erro.printStackTrace();
					
		}
	}

	public void salvar() {
		try {
			
			if (produto.getCaminho() == null) {
				Messages.addGlobalError("O campo foto é obrigatório");
				return;
			}			
			
			ProdutoDAO produtoDAO = new ProdutoDAO();
			Produto produtoRetorno = produtoDAO.merge(produto);

			// Criando referência
			Path origem = Paths.get(produto.getCaminho());

			// Criando destino
			Path destino = Paths.get("C:/Desenvolvimento/FarmaciaWeb/Uploads/" + produtoRetorno.getCodigo() + ".png");

			//Fazendo a cópia para pasta de destino
			Files.copy(origem, destino, StandardCopyOption.REPLACE_EXISTING);
			
			produto = new Produto();

			FabricanteDAO fabricanteDAO = new FabricanteDAO();
			fabricantes = fabricanteDAO.listar("descricao");

			produtos = produtoDAO.listar();

			Messages.addGlobalInfo("Produto salvo com sucesso");

		} catch (RuntimeException | IOException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar salvar o produto");
			erro.printStackTrace();
		}
	}

	public void excluir(ActionEvent evento) {
		try {
			produto = (Produto) evento.getComponent().getAttributes().get("produtoSelecionado");

			ProdutoDAO produtoDAO = new ProdutoDAO();
			produtoDAO.excluir(produto);
			
			//Excluir Imagem Upload
			Path arquivo = Paths.get("C:/Desenvolvimento/FarmaciaWeb/Uploads/" + produto.getCodigo() + ".png");
			Files.deleteIfExists(arquivo);

			produtos = produtoDAO.listar();

			Messages.addGlobalInfo("Produto removido com sucesso");
		} catch (RuntimeException | IOException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar remover o produto");
			erro.printStackTrace();
		}
	}

	public void upload(FileUploadEvent evento) {

		try {
			UploadedFile arquivoUpload = evento.getFile();

			// Arquivo temporário dentro sistema operacional
			Path arquivoTemp = Files.createTempFile(null, null);
			Files.copy(arquivoUpload.getInputstream(), arquivoTemp, StandardCopyOption.REPLACE_EXISTING);

			// Origem do caminho temporário
			produto.setCaminho(arquivoTemp.toString());

			Messages.addGlobalInfo("Upload Efetuado com Sucesso");
		} catch (IOException erro) {

			Messages.addFlashGlobalError("Ocorreu um erro ao tentar fazer Upload.");
			erro.printStackTrace();

		}

	}
	
	public void imprimir() {
		try {
			
			String caminho = Faces.getRealPath("/reports/produtos.jasper");
			
			Map<String, Object> parametros = new HashMap<>();

			Connection conexao = HibernateUtil.getConexao();		   
			
			JasperPrint relatorio = JasperFillManager.fillReport(caminho, parametros, conexao);
			
			JasperPrintManager.printReport(relatorio, true);  //Linha n.203 que apresenta o erro
			
		} catch (JRException erro) {
			
			Messages.addGlobalError("Ocorreu um erro ao tentar gerar o relatório");
			erro.printStackTrace();
			
		}
	}
	
	
	

}

 

Agradeço humildemente a todos.

 

Atenciosamente,

 

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×