How to preview more than one Ireport file

Asked

Viewed 304 times

1

I would like to know how to make one preview of various reports from Ireport, i.e., I created a test project to run the reports or forms created to check how they looked before putting them on the system.

I wanted to pass the array with the names and it run in batch all, I did a for and when executing the second on, that the "The document has no pages".

public static void main(String[] args) throws JRException {

    final String pastaImagens = "imagens/";
    final String pastaFormulario = "formularios/";

    // aqui deve se colocar o nome do arquivo da imagem do logotipo
    final String imagem = pastaImagens.concat("logoBanco.png");

    PropostaEmprestimoTest propostaEmprestimoTest = new PropostaEmprestimoTest();

    // aqui deve alterar pelo tipo da proposta
    //PropostaEmprestimo proposta = propostaEmprestimoTest.propostaEmprestimoVazia();
    PropostaEmprestimo proposta = propostaEmprestimoTest.propostaEmprestimo();

    String[] formularios = nomesDosFormulario();

    HashMap<String, Object> parametros = new HashMap<String, Object>();

    parametros.put("REPORT_LOCALE", new Locale("pt", "BR"));
    parametros.put("logo", imagem);
    parametros.put("empresa", propostaEmprestimoTest.createEmpresa());
    parametros.put("endereco", EcredUtil.formatarEndereco(proposta.getCliente()));

    setParameterRefinList(parametros, proposta.getRefins());

    List<PropostaEmprestimo> propostaList = new ArrayList<>();
    propostaList.add(proposta);

    JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(propostaList);

    // nome do formulário
    String nomeArquivo = "";
    String formulario = "";         

    for (int i = 0; i < formularios.length; i++) {

        nomeArquivo = formularios[i];
        formulario = pastaFormulario.concat(nomeArquivo).concat(".jrxml");          

        JasperReport pathjrmxl = JasperCompileManager.compileReport(formulario);
        JasperPrint printReport = JasperFillManager.fillReport(pathjrmxl, parametros, ds);
        JasperViewer.viewReport(printReport);           
    }
}

private static String[] nomesDosFormulario() {

    return new String[] { "declaracaoConcordancia",
            "declaracaoDesistenciaPortabilidade", "propostaPortabilidade",
            "propostaPortabilidadeINSS",
            "termoAutorizacaoLiquidacaoEmprestimoINSS",
            "termoAutorizacaoLiquidacaoEmprestimoREFIN" };      
}

private static void setParameterRefinList(HashMap<String, Object> parameters, List<ContratoRefin> contratoRefins) {

    int i = 1;
    Double somatorioRefin = contratoRefins.size() > 0 ? 0D : null;;

    for (ContratoRefin contratoRefin : contratoRefins) {

        parameters.put("contrato" + i, contratoRefin.getContrato());
        parameters.put("valor" + i, contratoRefin.getValor());          
        parameters.put("dataAntecipacao" + i, contratoRefin.getDataAntecipacao());
        somatorioRefin += Double.valueOf(contratoRefin.getValor());
        i++;
    }
    parameters.put("somatorio_refin", somatorioRefin);
}

1 answer

1

I don’t know why, but when I moved a line of code.

public static void main(String[] args) throws JRException {

    final String pastaImagens = "imagens/";
    final String pastaFormulario = "formularios/";

    // aqui deve se colocar o nome do arquivo da imagem do logotipo
    final String imagem = pastaImagens.concat("logoBanco.png");

    PropostaEmprestimoTest propostaEmprestimoTest = new PropostaEmprestimoTest();

    // aqui deve alterar pelo tipo da proposta
    //PropostaEmprestimo proposta = propostaEmprestimoTest.propostaEmprestimoVazia();
    PropostaEmprestimo proposta = propostaEmprestimoTest.propostaEmprestimo();

    String[] formularios = nomesDosFormulario();

    HashMap<String, Object> parametros = new HashMap<String, Object>();

    parametros.put("REPORT_LOCALE", new Locale("pt", "BR"));
    parametros.put("logo", imagem);
    parametros.put("empresa", propostaEmprestimoTest.createEmpresa());
    parametros.put("endereco", EcredUtil.formatarEndereco(proposta.getCliente()));

    setParameterRefinList(parametros, proposta.getRefins());

    List<PropostaEmprestimo> propostaList = new ArrayList<>();
    propostaList.add(proposta);


    JRBeanCollectionDataSource dataSource = null;
    JasperReport formularioCompilado = null;
    JasperPrint printReport = null;

    for (int i = 0; i < formularios.length; i++) {

        dataSource = new JRBeanCollectionDataSource(propostaList);
        formularioCompilado = JasperCompileManager.compileReport(pastaFormulario.concat(formularios[i]));
        printReport = JasperFillManager.fillReport(formularioCompilado, parametros, dataSource);
        JasperViewer.viewReport(printReport);           
    }
}

private static String[] nomesDosFormulario() {

    return new String[] { "declaracaoConcordancia.jrxml",
            "declaracaoDesistenciaPortabilidade.jrxml",
            "propostaPortabilidade.jrxml",
            "propostaPortabilidadeINSS.jrxml",
            "termoAutorizacaoLiquidacaoEmprestimoINSS.jrxml",
            "termoAutorizacaoLiquidacaoEmprestimoREFIN.jrxml" };
}

private static void setParameterRefinList(HashMap<String, Object> parameters, List<ContratoRefin> contratoRefins) {

    int i = 1;
    Double somatorioRefin = contratoRefins.size() > 0 ? 0D : null;;

    for (ContratoRefin contratoRefin : contratoRefins) {

        parameters.put("contrato" + i, contratoRefin.getContrato());
        parameters.put("valor" + i, contratoRefin.getValor());          
        parameters.put("dataAntecipacao" + i, contratoRefin.getDataAntecipacao());
        somatorioRefin += Double.valueOf(contratoRefin.getValor());
        i++;
    }
    parameters.put("somatorio_refin", somatorioRefin);
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.