How to preview with more than one Ireport file

1

I would like to know how to do a preview of multiple reports of Ireport , that is, I created a test project to run reports or forms created to check how they were before system.

I wanted to pass array with names and it batch all, I made a for and when running the second on, that "The document does not have 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);
}
    
asked by anonymous 16.07.2014 / 20:45

1 answer

1

I do not know why, but when I rearranged a line of code I got that done.

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);
}
    
16.07.2014 / 21:06