Class JasperReport
A geração de relatórios usando JasperReports compõe-se das seguintes etapas:
- Definição do leiaute (JasperReport ou InputStream)
- Definição da fonte de dados (registros no banco de dados, arquivo TXT, JavaBeans)
- Processamento do relatório com o JasperFillManager, gerando o objeto JasperPrint
- Disponibilização do objeto JasperPrint para exportação
- 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.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class systextil.jr.JR
JR.DataSource, JR.Export, JR.Print, JR.Report
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
Nome do parâmetro que contém o número do código da empresa.static final String
Nome do parâmetro que contém o número do código do usuário.static final String
Nome do parâmetro que contém o código e o nome da empresa para imprimir no cabeçalho do relatório.static final String
Esta variável também é usada porCrystalReport
.static final String
Nome do parâmetro que contém o nome do módulo a que se refere este relatório, no idioma do mesmo.static final String
Nome do parâmetro que contém o nome do formulário que gerou o relatório, p. ex.protected final String
static final String
Nome do parâmetro que contém o número da solicitação, isto é, o valor numérico correspondente ao camponr_solicitacao
.static final String
static final String
Nome do parâmetro que contém oLocale
com o idioma do relatório.static final String
Nome do parâmetro que contém o título do relatório, no idioma do mesmo. -
Constructor Summary
ConstructorsConstructorDescriptionJasperReport
(InputStream jasperStream, String nomeRelato, Map<String, Object> parametros) Configura um processo para gerar relatórios JasperReports a partir do leiaute em umInputStream
.JasperReport
(String nomeRelato) Configura um processo com leiaute JasperReports nulo; portanto, não funciona se for para gerar um relatório.Configura um processo para gerar relatórios JasperReports. -
Method Summary
Modifier and TypeMethodDescriptionconvert
(JasperReport.OutputFormat outputFormat) Converte paraoutputFormat
o arquivo do relatório que foi gerado, isto é, o arquivo que ESPERA-SE que tenha sido gerado por um processo como este.void
export
(JasperReport.OutputFormat outputFormat, net.sf.jasperreports.engine.JasperPrint jasperPrint, OutputStream outputStream) Exporta o relatóriojasperPrint
no formatooutputFormat
para ser gravado emoutputStream
.void
generateAndExport
(Connection conn, JasperReport.OutputFormat outputFormat, OutputStream outputStream) Atalho para gerar um relatório e exportá-lo diretamente para umOutputStream
.generateReport
(Connection conn) Gera o arquivo.jrprint
definido para este objeto.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.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.static InputStream
getJasperStream
(String nomeJasper) Abre um InputStream para leitura do leiaute JasperReport a partir do nome do arquivo.static JasperReport.OutputFormat
getOutputFormat
(String fileExtension) Retorna um objetoOutputFormat
correspondente a uma extensão de arquivo.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.static File
getPrintOutFile
(String nomeRelato) Obtém o caminho para gravação do arquivo de saída na pasta de relatórios do sistema.static Reader
getTxtReader
(File txtFile) Lê o arquivo na codificação de caracteres do sistema local.static Reader
getTxtReader
(String nome_txt) Lê o arquivo na pasta de TXTs, na codificação de caracteres do sistema local.static void
imprimirEtiquetas
(InputStream jasperStream, Collection<?> beans, String pdfFileName) Imprime etiquetas Jasper tendo como fonte de dados uma coleção de JavaBeans.static void
imprimirEtiquetas
(String printerName, InputStream jasperStream, Collection<?> beans) Imprime etiquetas Jasper tendo como fonte de dados uma coleção de JavaBeans.static void
imprimirEtiquetas
(String printerName, String nome_jasper, String nome_txt) Imprime etiquetas Jasper tendo como fonte de dados um arquivo TXT.static void
imprimirEtiquetas
(String printerName, String nome_jasper, Collection<?> beans) Imprime etiquetas Jasper tendo como fonte de dados uma coleção de JavaBeans.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.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.void
setBeans
(Collection<?> beans) Permite que se informe uma fonte de dados como uma coleção de JavaBeans antes de executar o relatório.void
setNomeTxt
(String nomeTxt) Permite que se informe uma fonte de dados TXT antes de executar o relatório.void
Permite que se informe uma fonte de dados TXT antes de executar o relatório.static void
Visualiza com o JasperViewer o arquivo .jrprint gerado.Methods inherited from class systextil.jr.JR
loadJasperPrint, loadJasperPrint, loadJasperPrint, newReport, newReport
-
Field Details
-
PRINT_EXTENSION
- See Also:
-
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
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
Nome do parâmetro que contém o título do relatório, no idioma do mesmo.- See Also:
-
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
Nome do parâmetro que contém o número da solicitação, isto é, o valor numérico correspondente ao camponr_solicitacao
.- See Also:
-
CODIGO_USUARIO
Nome do parâmetro que contém o número do código do usuário.- See Also:
-
CODIGO_EMPRESA
Nome do parâmetro que contém o número do código da empresa.- See Also:
-
REPORT_LOCALE
Nome do parâmetro que contém oLocale
com o idioma do relatório.- See Also:
-
MODULES
-
JASPER_FOLDER_PATH
Esta variável também é usada porCrystalReport
. -
nomeRelato
-
parametros
-
-
Constructor Details
-
JasperReport
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á usadonomeRelato
- o nome, sem extensão, que será usado para gerar o arquivo de saídaparametros
- os parâmetros
-
JasperReport
Configura um processo para gerar relatórios JasperReports a partir do leiaute em umInputStream
. Isso é conveniente quando o leiaute está no classpath, especialmente na mesma package que a classe atual. Num caso assim, bastaria informar algo comothis.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ídaparametros
- os parâmetros
-
JasperReport
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
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
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
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
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)
egetTxtReader(String)
podem ajudar.- Parameters:
reader
- um leitor com a fonte de dados
-
getJasperStream
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 arquivojasper
- 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óriojasperPrint
no formatooutputFormat
para ser gravado emoutputStream
.- Parameters:
outputFormat
- o formato de arquivo para a exportaçãojasperPrint
- 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
Gera o arquivo.jrprint
definido para este objeto.- Parameters:
conn
- a conexão ao banco de dados- Returns:
- o arquivo gerado
-
convert
Converte paraoutputFormat
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
Retorna um objetoOutputFormat
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 umOutputStream
. 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 dadosoutputFormat
- o formato de saídaoutputStream
- 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 umImage
da logomarca, e o parâmetropCaminhoLogoSystextil
contendo o caminho do arquivo dessa logomarca.- Parameters:
conn
- a conexão ao banco de dadosmdi
- a MDIutilTag
- o tradutor de mensagensnome_form
- o nome do formulárionr_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 dadosparametros
- os parâmetrosnome_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 dadosmdi
- a MDIutilTag
- o tradutor de mensagensnome_form
- o nome do formulárionr_solicitacao
- o número da solicitaçãonome_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
Visualiza com o JasperViewer o arquivo .jrprint gerado.- Parameters:
jasperPrintFileLocation
- a localização do arquivo
-
imprimirEtiquetas
Imprime etiquetas Jasper tendo como fonte de dados uma coleção de JavaBeans.- Parameters:
printerName
- o nome da impressora padrão de etiquetasnome_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 etiquetasjasperStream
- o InputStream com o leiaute Jasperbeans
- 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 Jasperbeans
- 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 dadosprinterName
- o nome da impressora padrão de etiquetasparametros
- os parâmetros a passar para o leiaute Jaspernome_jasper
- o nome ou caminho para o leiaute JasperReports que será usado.- See Also:
-
imprimirEtiquetas
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 etiquetasnome_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
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
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 nullprinterName
- o nome da impressora de etiquetas como deve ser encontrada no painel de controle de etiquetas do sistema operacionalparametros
- os parâmetros a passar para o leiaute JasperjasperFile
- o arquivo do leiaute JaspertxtReader
- 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
-