GARANTIR DESCONTO

Fórum Relatórios JasperReports #511070

18/02/2015

0

Olá pessoal,

Criei uma classe para gerar relatórios com o JasperReport. Só que no exemplo que usei como base tem algumas classes que estão em desuso. Uma eu consegui alterar, mas a JRExporterParameter não. Vocês saberiam alterar para a forma que está sendo utilizada agora? Segue abaixo o código da classe:

public class RelatorioUtil {
    
    public static final int RELATORIO_PDF = 1;
    public static final int RELATORIO_EXCEL = 2;
    public static final int RELATORIO_HTML = 3;
    public static final int RELATORIO_PLANILHA_OPEN_OFFICE = 4;
       
    public StreamedContent geraRelatorio(HashMap parametrosRelatorio, String nomeRelatorioJasper, String nomeRelatorioSaida, int tipoRelatorio) throws UtilException {
      
        StreamedContent arquivoRetorno = null;
        
        try {
            FacesContext context = FacesContext.getCurrentInstance();
            
            Connection conexao = this.getConexao();
                   
            String caminhoRelatorio = context.getExternalContext().getRealPath("relatorios");                   
            String caminhoArquivoJasper = caminhoRelatorio + File.separator + nomeRelatorioJasper + ".jasper";
            String caminhoArquivoRelatorio = null;
            
           JasperReport relatorioJasper;
           relatorioJasper = (JasperReport) JRLoader.loadObject(getClass().getClassLoader().getResourceAsStream(caminhoArquivoJasper));

            JasperPrint impressoraJasper = JasperFillManager.fillReport(relatorioJasper, parametrosRelatorio, conexao);
            
           Exporter tipoArquivoExportado = null;
            String extensaoArquivoExportado = "";
            File arquivoGerado = null;
            
            switch (tipoRelatorio) {
                case RelatorioUtil.RELATORIO_PDF :
                    tipoArquivoExportado = new JRPdfExporter();
                    extensaoArquivoExportado = "pdf";
                    break;
                    
                case RelatorioUtil.RELATORIO_HTML :
                    tipoArquivoExportado = new HtmlExporter();
                    extensaoArquivoExportado = "html";
                    break;
                    
                case RelatorioUtil.RELATORIO_EXCEL :
                    tipoArquivoExportado = new JRXlsExporter();
                    extensaoArquivoExportado = "xls";
                    break; 
                    
                case RelatorioUtil.RELATORIO_PLANILHA_OPEN_OFFICE :
                    tipoArquivoExportado = new JROdtExporter();
                    extensaoArquivoExportado = "ods";
                    break;
                    
                default :
                    tipoArquivoExportado = new JRPdfExporter();
                    extensaoArquivoExportado = "pdf";
                    break;                    
            }
            
            caminhoArquivoRelatorio = caminhoRelatorio + File.separator + nomeRelatorioSaida + "." + extensaoArquivoExportado;
            arquivoGerado = new java.io.File(caminhoArquivoRelatorio);
            tipoArquivoExportado.setParameter(JRExporterParameter.JASPER_PRINT, impressoraJasper);
            tipoArquivoExportado.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, arquivoGerado);
            tipoArquivoExportado.exportReport();     
            arquivoGerado.deleteOnExit();
            
            InputStream conteudoRelatorio = new FileInputStream(arquivoGerado);
            arquivoRetorno = new DefaultStreamedContent(conteudoRelatorio, "application/" + extensaoArquivoExportado, nomeRelatorioSaida + "." + extensaoArquivoExportado);
        } catch (JRException e) {
            throw new UtilException("Não foi possível gerar o relatório.", e);
        } catch (FileNotFoundException e) {
            throw new UtilException("Arquivo do relatório não encontrado.", e);
        }
        return arquivoRetorno;
    }
    
    private Connection getConexao() throws UtilException {
        java.sql.Connection conexao = null;
        try {
            Context initContext = new InitialContext();
            Context envContext = (Context) initContext.lookup("java:/comp/env/");
            javax.sql.DataSource ds = (javax.sql.DataSource) envContext.lookup("jdbc/segurosdb");
            conexao = (java.sql.Connection) ds.getConnection();
        } catch (NamingException e) {
            throw new UtilException("Não foi possível encontrar o nome da conexão do banco.", e);
        } catch (SQLException e) {
            throw new UtilException("Ocorreu um erro de SQL,", e);
        }
        return conexao;
    }
}



Obrigada.
Sgrandini

Sgrandini

Responder

Posts

18/02/2015

Ronaldo Lanhellas

Desuso porque ? Ainda hoje uso o JRExporterParameter nos meus relatórios.
Responder

Gostei + 0

20/02/2015

Sgrandini

Ronaldo,

O Netbeans informa que a classe JRExporterParameter está obsoleta. Não sei se isso causará algum problema à aplicação. setParameter, JRExporterParameter.JASPER_PRINT e JRExporterParameter.OUTPUT_FILE_NAME aparecem riscados nas duas linhas abaixo:

tipoArquivoExportado.setParameter(JRExporterParameter.JASPER_PRINT, impressoraJasper);

tipoArquivoExportado.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, arquivoGerado);


Não sei como substituir para o que está sendo usado agora.
Responder

Gostei + 0

21/02/2015

Ronaldo Lanhellas

Entendi, no seu seu problema é com o "deprecated". Você tem 3 opções:

1 - Ignorar o deprecated e continuar usando.
2 - Fazer um downgrade da versão do seu jasper.
3 - User o JasperReportsContext, que é a nova forma de fazer o que você citou, veja:

LocalJasperReportsContext ctx = new LocalJasperReportsContext(DefaultJasperReportsContext.getInstance());
ctx.setClassLoader(getClass().getClassLoader());
ctx.setFileResolver(resolver);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperfile);

JasperFillManager fillmgr = JasperFillManager.getInstance(ctx);
JasperExportManager exmgr = JasperExportManager.getInstance(ctx);
Responder

Gostei + 0

21/02/2015

Ronaldo Lanhellas

Entendi, no seu seu problema é com o "deprecated". Você tem 3 opções:

1 - Ignorar o deprecated e continuar usando.
2 - Fazer um downgrade da versão do seu jasper.
3 - User o JasperReportsContext, que é a nova forma de fazer o que você citou, veja:

LocalJasperReportsContext ctx = new LocalJasperReportsContext(DefaultJasperReportsContext.getInstance());
ctx.setClassLoader(getClass().getClassLoader());
ctx.setFileResolver(resolver);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperfile);

JasperFillManager fillmgr = JasperFillManager.getInstance(ctx);
JasperExportManager exmgr = JasperExportManager.getInstance(ctx);
Responder

Gostei + 0

21/02/2015

Ronaldo Lanhellas

Entendi, no seu seu problema é com o "deprecated". Você tem 3 opções:

1 - Ignorar o deprecated e continuar usando.
2 - Fazer um downgrade da versão do seu jasper.
3 - User o JasperReportsContext, que é a nova forma de fazer o que você citou, veja:

LocalJasperReportsContext ctx = new LocalJasperReportsContext(DefaultJasperReportsContext.getInstance());
ctx.setClassLoader(getClass().getClassLoader());
ctx.setFileResolver(resolver);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperfile);

JasperFillManager fillmgr = JasperFillManager.getInstance(ctx);
JasperExportManager exmgr = JasperExportManager.getInstance(ctx);
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar