Class JasperReport

java.lang.Object
systextil.jr.JR
br.com.intersys.systextil.global.JasperReport

public class JasperReport extends JR
Utilidades para a geração de relatórios usando JasperReports.

A geração de relatórios usando JasperReports compõe-se das seguintes etapas:

  1. Definição do leiaute (JasperReport ou InputStream)
  2. Definição da fonte de dados (registros no banco de dados, arquivo TXT, JavaBeans)
  3. Processamento do relatório com o JasperFillManager, gerando o objeto JasperPrint
  4. Disponibilização do objeto JasperPrint para exportação
  5. Exportação para algum formato conveniente

Para gerar relatórios muito básicos, pode ser mais interessante usar diretamente a classe JR.

Para gerar relatórios usando os padrões do Systêxtil ERP, pode-se usar métodos utilitários "sujos" desta classe. Sugere-se algo parecido com isto:

    JasperReport.newReport(JasperReport.getJasperStream(nome_jasper))
            .connection(conn.getConnection())
            .fill(JasperReport.getParametros(conn, mdi, utilTag, nome_form, num_aleatorio))
            .saveJasperPrint(JasperReport.getPrintOutFile(nome_relato));
 

É claro, pode-se adicionar outros parâmetros conforme necessário, ou usar outras fontes de dados, ou exportar para outros formatos ou outros destinos.

Encoraja-se o uso do formato acima em vez dos inúmeros métodos estáticos (ou não) desta classe, os quais espera-se depreciar em algum momento.

  • Field Details

    • EMPRESA_CABECALHO

      public static final String EMPRESA_CABECALHO
      Nome do parâmetro que contém o código e o nome da empresa para imprimir no cabeçalho do relatório.
      See Also:
    • MODULO

      public static final String MODULO
      Nome do parâmetro que contém o nome do módulo a que se refere este relatório, no idioma do mesmo.
      See Also:
    • TITULO_RELATORIO

      public static final String TITULO_RELATORIO
      Nome do parâmetro que contém o título do relatório, no idioma do mesmo.
      See Also:
    • NOME_FORM

      public static final String NOME_FORM
      Nome do parâmetro que contém o nome do formulário que gerou o relatório, p. ex. basi_e010.
      See Also:
    • NR_SOLICITACAO

      public static final String NR_SOLICITACAO
      Nome do parâmetro que contém o número da solicitação, isto é, o valor numérico correspondente ao campo nr_solicitacao.
      See Also:
    • CODIGO_USUARIO

      public static final String CODIGO_USUARIO
      Nome do parâmetro que contém o número do código do usuário.
      See Also:
    • CODIGO_EMPRESA

      public static final String CODIGO_EMPRESA
      Nome do parâmetro que contém o número do código da empresa.
      See Also:
    • REPORT_LOCALE

      public static final String REPORT_LOCALE
      Nome do parâmetro que contém o Locale com o idioma do relatório.
      See Also:
    • MODULES

      public static final HashMap<String,String> MODULES
    • JASPER_FOLDER_PATH

      public static final String JASPER_FOLDER_PATH
      Esta variável também é usada por CrystalReport.
    • nomeRelato

      protected final String nomeRelato
    • parametros

      protected final Map<String,Object> parametros
  • Constructor Details

    • JasperReport

      public JasperReport(String nomeJasper, String nomeRelato, Map<String,Object> parametros)
      Configura um processo para gerar relatórios JasperReports.

      O parâmetro nomeJasper pode indicar um arquivo real no sistema de arquivos, ou um recurso disponível no classpath (p. ex. em um arquivo JAR).

      Se for um arquivo físico na pasta de leiautes JasperReports, basta informar o nome do arquivo, sem caminho nem extensão.

      Se for um recurso no classpath, então informar o caminho completo para o leiaute dentro do classpath, com barras ("/"), sem a barra inicial. Se não terminar com a extensão ".jasper", ela será adicionada.

      Parameters:
      nomeJasper - o nome ou caminho para o leiaute JasperReports que será usado
      nomeRelato - o nome, sem extensão, que será usado para gerar o arquivo de saída
      parametros - os parâmetros
    • JasperReport

      public JasperReport(InputStream jasperStream, String nomeRelato, Map<String,Object> parametros)
      Configura um processo para gerar relatórios JasperReports a partir do leiaute em um InputStream. Isso é conveniente quando o leiaute está no classpath, especialmente na mesma package que a classe atual. Num caso assim, bastaria informar algo como this.getClass().getResourceAsStream("leiaute.jasper")
      Parameters:
      jasperStream - o "stream" aberto com o leiaute Jasper a usar; será fechado depois de usado.
      nomeRelato - o nome, sem extensão, que será usado para gerar o arquivo de saída
      parametros - os parâmetros
    • JasperReport

      public JasperReport(String nomeRelato)
      Configura um processo com leiaute JasperReports nulo; portanto, não funciona se for para gerar um relatório. Só pode ser usado para exportar (converter) para PDF ou qualquer outro formato.
      Parameters:
      nomeRelato - o nome, sem extensão, que será usado para gerar o arquivo de saída
  • Method Details

    • setBeans

      public void setBeans(Collection<?> beans)
      Permite que se informe uma fonte de dados como uma coleção de JavaBeans antes de executar o relatório. Desta forma, os dados serão lidos desta fonte de dados, e não da conexão ao banco de dados.

      Se esta fonte de dados tiver sido informada, terá prioridade sobre todas as outras (arquivo TXT ou conexão ao banco de dados).

      Parameters:
      beans - a fonte de dados
    • getPrintOutFile

      public static File getPrintOutFile(String nomeRelato)
      Obtém o caminho para gravação do arquivo de saída na pasta de relatórios do sistema.
      Parameters:
      nomeRelato - o nome do arquivo de saída, sem a extensão .jrprint.
      Returns:
      o caminho para esse arquivo
    • setNomeTxt

      public void setNomeTxt(String nomeTxt)
      Permite que se informe uma fonte de dados TXT antes de executar o relatório. Desta forma, os dados serão lidos desta fonte de dados, e não da conexão ao banco de dados.
      Parameters:
      nomeTxt - apenas o nome do arquivo TXT (com a extensão), que deve estar localizado dentro da pasta de arquivos TXT do sistema
    • setReader

      public void setReader(Reader reader)
      Permite que se informe uma fonte de dados TXT antes de executar o relatório. Desta forma, os dados serão lidos desta fonte de dados, e não da conexão ao banco de dados.

      Os métodos getTxtReader(File) e getTxtReader(String) podem ajudar.

      Parameters:
      reader - um leitor com a fonte de dados
    • getJasperStream

      public static InputStream getJasperStream(String nomeJasper)
      Abre um InputStream para leitura do leiaute JasperReport a partir do nome do arquivo. O nome pode, ou não, terminar em .jasper. Se contiver o caractere de barra ("/"), será buscado no classloader da thread atual. Caso contrário, será buscado na pasta de instalação dos leiautes JasperReports do ERP, pelo nome do arquivo.
      Parameters:
      nomeJasper - o nome ou caminho do arquivo jasper
      Returns:
      o InputStream para leitura do leiaute JasperReport
    • export

      public void export(JasperReport.OutputFormat outputFormat, net.sf.jasperreports.engine.JasperPrint jasperPrint, OutputStream outputStream)
      Exporta o relatório jasperPrint no formato outputFormat para ser gravado em outputStream.
      Parameters:
      outputFormat - o formato de arquivo para a exportação
      jasperPrint - o relatório que já foi gerado (preenchido)
      outputStream - o canal onde o arquivo será gravado, que pode ser um arquivo em disco, um campo binário no banco de dados, um anexo de e-mail, uma página web, etc.
    • generateReport

      public File generateReport(Connection conn)
      Gera o arquivo .jrprint definido para este objeto.
      Parameters:
      conn - a conexão ao banco de dados
      Returns:
      o arquivo gerado
    • convert

      public String convert(JasperReport.OutputFormat outputFormat)
      Converte para outputFormat o arquivo do relatório que foi gerado, isto é, o arquivo que ESPERA-SE que tenha sido gerado por um processo como este. Este método é para ser usado principalmente pelo formulário de saída de processos agendados, para visualização e download.
      Parameters:
      outputFormat - o formato o arquivo gerado
      Returns:
      o nome do arquivo gerado
    • getOutputFormat

      public static JasperReport.OutputFormat getOutputFormat(String fileExtension)
      Retorna um objeto OutputFormat correspondente a uma extensão de arquivo.
      Parameters:
      fileExtension - a extensão do arquivo; tanto faz em maiúsculas ou minúsculas
      Returns:
      o formato encontrado
      Throws:
      IllegalArgumentException - se o formato não for suportado
    • generateAndExport

      public void generateAndExport(Connection conn, JasperReport.OutputFormat outputFormat, OutputStream outputStream)
      Atalho para gerar um relatório e exportá-lo diretamente para um OutputStream. Tipicamente, serve para gerar um relatório em PDF e anexá-lo diretamente a um e-mail.
      Parameters:
      conn - a conexão ao banco de dados
      outputFormat - o formato de saída
      outputStream - a saída
    • getParametros

      public static HashMap<String,Object> getParametros(AppConnection conn, Mdi mdi, UtilTag utilTag, String nome_form, int nr_solicitacao)
      Monta e retorna os parâmetros que serão passados ao Jasper. Já vem alimentado com os parâmetros definidos nas constantes desta classe (p. ex. CODIGO_USUARIO). Esses parâmetros podem ser sobrescritos se necessário.

      Também estão disponíveis o parâmetro pLogoSystextil contendo um Image da logomarca, e o parâmetro pCaminhoLogoSystextil contendo o caminho do arquivo dessa logomarca.

      Parameters:
      conn - a conexão ao banco de dados
      mdi - a MDI
      utilTag - o tradutor de mensagens
      nome_form - o nome do formulário
      nr_solicitacao - o número da solicitação
      Returns:
      os parâmetros
    • gerarRelatorioPDF

      public static String gerarRelatorioPDF(AppConnection conn, HashMap<String,Object> parametros, String nome_jasper, String nome_relato)
      Conveniência para gerar um único relatório PDF na pasta de relatórios com parâmetros personalizados.
      Parameters:
      conn - a conexão ao banco de dados
      parametros - os parâmetros
      nome_jasper - o nome ou caminho para o leiaute JasperReports que será usado.
      nome_relato - o nome, sem extensão, que será usado para gerar o arquivo de saída
      Returns:
      o nome do arquivo gerado
      See Also:
    • gerarRelatorioPDF

      public static String gerarRelatorioPDF(AppConnection conn, Mdi mdi, UtilTag utilTag, String nome_form, int nr_solicitacao, String nome_jasper, String nome_relato)
      Conveniência para gerar um único relatório PDF na pasta de relatórios com parâmetros default.
      Parameters:
      conn - a conexão ao banco de dados
      mdi - a MDI
      utilTag - o tradutor de mensagens
      nome_form - o nome do formulário
      nr_solicitacao - o número da solicitação
      nome_jasper - o nome ou caminho para o leiaute JasperReports que será usado.
      nome_relato - o nome, sem extensão, que será usado para gerar o arquivo de saída
      Returns:
      o nome do arquivo gerado
      See Also:
    • view

      public static void view(String jasperPrintFileLocation)
      Visualiza com o JasperViewer o arquivo .jrprint gerado.
      Parameters:
      jasperPrintFileLocation - a localização do arquivo
    • imprimirEtiquetas

      public static void imprimirEtiquetas(String printerName, String nome_jasper, Collection<?> beans)
      Imprime etiquetas Jasper tendo como fonte de dados uma coleção de JavaBeans.
      Parameters:
      printerName - o nome da impressora padrão de etiquetas
      nome_jasper - o nome ou caminho para o leiaute JasperReports que será usado.
      beans - a coleção de JavaBeans.
      See Also:
    • imprimirEtiquetas

      public static void imprimirEtiquetas(String printerName, InputStream jasperStream, Collection<?> beans)
      Imprime etiquetas Jasper tendo como fonte de dados uma coleção de JavaBeans.
      Parameters:
      printerName - o nome da impressora padrão de etiquetas
      jasperStream - o InputStream com o leiaute Jasper
      beans - a coleção de JavaBeans.
    • imprimirEtiquetas

      public static void imprimirEtiquetas(InputStream jasperStream, Collection<?> beans, String pdfFileName)
      Imprime etiquetas Jasper tendo como fonte de dados uma coleção de JavaBeans.
      Parameters:
      jasperStream - o InputStream com o leiaute Jasper
      beans - a coleção de JavaBeans.
      pdfFileName - o nome do arquivo PDF a gravar na pasta de relatórios
    • imprimirEtiquetas

      public static void imprimirEtiquetas(Connection conn, String printerName, HashMap<String,Object> parametros, String nome_jasper)
      Imprime etiquetas Jasper tendo como fonte de dados uma consulta SQL e utilizando parâmetros.
      Parameters:
      conn - a conexão ao banco de dados
      printerName - o nome da impressora padrão de etiquetas
      parametros - os parâmetros a passar para o leiaute Jasper
      nome_jasper - o nome ou caminho para o leiaute JasperReports que será usado.
      See Also:
    • imprimirEtiquetas

      public static void imprimirEtiquetas(String printerName, String nome_jasper, String nome_txt)
      Imprime etiquetas Jasper tendo como fonte de dados um arquivo TXT. Este arquivo deve estar formatado para uso como fonte de dados para relatórios Jasper, isto é, a primeira linha deve conter as definições dos cabeçalhos das colunas de dados.
      Parameters:
      printerName - o nome da impressora padrão de etiquetas
      nome_jasper - o nome ou caminho para o leiaute JasperReports que será usado.
      nome_txt - o nome do arquivo da fonte de dados TXT
      See Also:
    • getTxtReader

      public static Reader getTxtReader(String nome_txt)
      Lê o arquivo na pasta de TXTs, na codificação de caracteres do sistema local.
      Parameters:
      nome_txt - o nome do arquivo
      Returns:
      o leitor do arquivo
    • getTxtReader

      public static Reader getTxtReader(File txtFile)
      Lê o arquivo na codificação de caracteres do sistema local.
      Parameters:
      txtFile - o arquivo TXT
      Returns:
      o leitor do arquivo
    • imprimirEtiquetas

      public static void imprimirEtiquetas(Connection conn, String printerName, HashMap<String,Object> parametros, File jasperFile, Reader txtReader)
      Imprime etiquetas Jasper, venham os dados de uma fonte TXT ou de uma consulta SQL.
      Parameters:
      conn - a conexão ao banco de dados se a fonte de dados for uma consulta SQL, ou null
      printerName - o nome da impressora de etiquetas como deve ser encontrada no painel de controle de etiquetas do sistema operacional
      parametros - os parâmetros a passar para o leiaute Jasper
      jasperFile - o arquivo do leiaute Jasper
      txtReader - a fonte de dados TXT se for mesmo esta a fonte, ou null
      Throws:
      IllegalArgumentException - se não for informada uma e somente uma fonte de dados