I have a report on JasperReports
, it is working correctly. However the way it is, I only pass one parameter of each% of the page% jsf to the report, the screen is conformed to the image:
WhatIneednowis,tobeabletosendmorethantipo
,forexample,tothereportasaparameter.Istillcouldnotdoit.Abasicideawouldbetohaveabuttonnexttothecombo,whichwhenclickedwouldsendthecontentsofthistoalist,somethinglikethisandthenthisparameterlistsenttothereport.ButIcouldnotimplementit,soifanyonecanhelp,thankyou.
Bean:
importjava.io.Serializable;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjavax.enterprise.context.RequestScoped;importjavax.faces.context.FacesContext;importjavax.inject.Inject;importjavax.inject.Named;importjavax.persistence.EntityManager;importjavax.servlet.http.HttpServletResponse;importjavax.validation.constraints.NotNull;importorg.hibernate.Session;importcom.rodrigo.controleacidentes.model.Cliente;importcom.rodrigo.controleacidentes.model.StatusEntrada;importcom.rodrigo.controleacidentes.util.jsf.FacesUtil;importcom.rodrigo.controleacidentes.util.report.ExecutorRelatorioPdf;importcom.rodrigo.controleacidentes.util.report.ExecutorRelatorioXls;@Named@RequestScopedpublicclassRelatorioEntradasBeanimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateDatedataInicio;privateDatedataFim;privateClientecliente;privateStatusEntradastatusEntrada;publicStatusEntradagetStatusEntrada(){returnstatusEntrada;}publicvoidsetStatusEntrada(StatusEntradastatusEntrada){this.statusEntrada=statusEntrada;}publicvoidteste(StatusEntradast){//StatusEntradaentrada=StatusEntrada.valueOf(st);System.out.println("TESTE: " + st);
}
@Inject
private FacesContext facesContext;
@Inject
private HttpServletResponse response;
@Inject
private EntityManager manager;
public void emitirXls() {
Map<String, Object> parametros = new HashMap<>();
parametros.put("data_inicio", this.dataInicio);
parametros.put("data_fim", this.dataFim);
if (cliente != null) {
System.out.println("TESTE: " + cliente.getNome());
parametros.put("nome_cliente", cliente.getNome());
}
if (statusEntrada != null) {
System.out.println("TESTE :" + statusEntrada.getDescricao());
parametros.put("status_entrada", statusEntrada.getDescricao());
}
ExecutorRelatorioXls executor = new ExecutorRelatorioXls("/relatorios/RelatorioEntradasNome.jasper",
this.response, parametros, "Relatório Entradas.xls");
Session session = manager.unwrap(Session.class);
session.doWork(executor);
if (executor.isRelatorioGerado()) {
facesContext.responseComplete();
} else {
FacesUtil.addErrorMessage("A execução do relatório não retornou dados.");
}
}
public void emitirPdf() {
Map<String, Object> parametros = new HashMap<>();
parametros.put("data_inicio", this.dataInicio);
parametros.put("data_fim", this.dataFim);
parametros.put("nome_cliente", this.cliente);
ExecutorRelatorioPdf executor = new ExecutorRelatorioPdf("/relatorios/RelatorioEntradasNome.jasper",
this.response, parametros, "Relatório Entradas.pdf");
Session session = manager.unwrap(Session.class);
session.doWork(executor);
if (executor.isRelatorioGerado()) {
facesContext.responseComplete();
} else {
FacesUtil.addErrorMessage("A execução do relatório não retornou dados.");
}
}
@NotNull
public Date getDataInicio() {
return dataInicio;
}
public void setDataInicio(Date dataInicio) {
this.dataInicio = dataInicio;
}
@NotNull
public Date getDataFim() {
return dataFim;
}
public void setDataFim(Date dataFim) {
this.dataFim = dataFim;
}
@NotNull
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
}
Executor:
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.jdbc.Work;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
public class ExecutorRelatorioXls implements Work {
private String caminhoRelatorio;
private HttpServletResponse response;
private Map<String, Object> parametros;
private String nomeArquivoSaida;
private boolean relatorioGerado;
public ExecutorRelatorioXls(String caminhoRelatorio, HttpServletResponse response, Map<String, Object> parametros,
String nomeArquivoSaida) {
this.caminhoRelatorio = caminhoRelatorio;
this.response = response;
this.parametros = parametros;
this.nomeArquivoSaida = nomeArquivoSaida;
this.parametros.put(JRParameter.REPORT_LOCALE, new Locale("pt", "BR"));
}
@Override
public void execute(Connection connection) throws SQLException {
try {
InputStream relatorioStream = this.getClass().getResourceAsStream(this.caminhoRelatorio);
JasperPrint print = JasperFillManager.fillReport(relatorioStream, this.parametros, connection);
this.relatorioGerado = print.getPages().size() > 0;
if (this.relatorioGerado) {
JRXlsExporter exportador = new JRXlsExporter();
exportador.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream());
exportador.setParameter(JRXlsExporterParameter.JASPER_PRINT, print);
exportador.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exportador.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exportador.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
response.setHeader("Content-Transfer-Encoding", "Cp1256");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"" + this.nomeArquivoSaida + "\"");
exportador.exportReport();
}
} catch (Exception e) {
throw new SQLException("Erro ao executar relatório " + this.caminhoRelatorio, e);
}
}
public boolean isRelatorioGerado() {
return relatorioGerado;
}
}
Query on report:
SELECT DISTINCT
ocorrencia.'id' AS ocorrencia_id,
ocorrencia.'descricao' AS ocorrencia_descricao,
ocorrencia.'condicao_tempo' AS ocorrencia_condicao_tempo,
ocorrencia.'data_ocorrencia' AS ocorrencia_data_ocorrencia,
ocorrencia.'periodo_ocorrencia' AS ocorrencia_periodo_ocorrencia,
ocorrencia.'condutor_id' AS ocorrencia_condutor_id,
condutor.'id' AS condutor_id,
condutor.'codigo' AS condutor_codigo,
condutor.'nome' AS condutor_nome,
entrada_acidente.'id' AS entrada_acidente_id,
entrada_acidente.'data_criacao' AS entrada_acidente_data_criacao,
entrada_acidente.'ocorrencia_id' AS entrada_acidente_ocorrencia_id,
entrada_acidente.'valor_unitario' AS entrada_acidente_valor_unitario,
cliente.'id' AS cliente_id,
cliente.'nome' AS cliente_nome,
entrada_acidente.'status' AS entrada_acidente_status
FROM
'condutor' condutor INNER JOIN 'ocorrencia' ocorrencia ON condutor.'id' = ocorrencia.'condutor_id'
INNER JOIN 'entrada_acidente' entrada_acidente ON ocorrencia.'id' = entrada_acidente.'ocorrencia_id'
INNER JOIN 'cliente' cliente ON entrada_acidente.'cliente_id' = cliente.'id'
WHERE
entrada_acidente.'data_criacao' BETWEEN $P{data_inicio} AND $P{data_fim}
AND cliente.'nome' = $P{nome_cliente}
AND entrada_acidente.'status' = $P{status_entrada}
xhtml:
<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<ui:define name="titulo">Relatório de entradas emitidas</ui:define>
<ui:define name="corpo">
<h:form id="frm">
<h1>Relatório de entradas emitidas</h1>
<p:messages autoUpdate="true" closable="true" />
<p:toolbar style="margin-top: 20px">
<p:toolbarGroup>
<p:commandButton value="EmitirPdf"
action="#{relatorioEntradasBean.emitirPdf}" ajax="false" />
<p:commandButton value="EmitirXls"
action="#{relatorioEntradasBean.emitirXls}" ajax="false" />
</p:toolbarGroup>
</p:toolbar>
<p:panelGrid columns="7" id="painel"
style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo">
<p:outputLabel value="Data de criação" />
<h:panelGroup>
<p:calendar value="#{relatorioEntradasBean.dataInicio}"
label="Data inicial" pattern="dd/MM/yyyy" size="8" />
<p:spacer width="8" />
<h:outputText value="a" />
<p:spacer width="8" />
<p:calendar value="#{relatorioEntradasBean.dataFim}"
label="Data final" pattern="dd/MM/yyyy" size="8" />
</h:panelGroup>
<h:panelGroup>
<p:outputLabel value="Cliente" for="cliente" />
<p:autoComplete id="cliente" size="40" dropdown="true"
value="#{relatorioEntradasBean.cliente}"
completeMethod="#{cadastroEntradaBean.completarCliente}"
var="cliente" itemLabel="#{cliente.nome}" itemValue="#{cliente}"
forceSelection="true" />
</h:panelGroup>
<p:outputLabel value="Status" />
<h:panelGroup>
<p:selectOneMenu id="statusEntrada"
value="#{relatorioEntradasBean.statusEntrada}">
<f:selectItem itemLabel="Selecione" />
<f:selectItems value="#{enumProviderStatus.statusEntradas}"
var="statusEntrada" itemValue="#{statusEntrada}"
itemLabel="#{statusEntrada.descricao}" />
</p:selectOneMenu>
</h:panelGroup>
</p:panelGrid>
</h:form>
</ui:define>
</ui:composition>
Update1:
//query "base"
public String getQueryPrincipal(String queryPrincipal) {
return queryPrincipal = "SELECT cliente.id AS cliente_id,"
+ " cliente.doc_receita_federal AS cliente_doc_receita_federal," + " cliente.email AS cliente_email,"
+ " cliente.nome AS cliente_nome," + " cliente.tipo AS cliente_tipo," + " condutor.id AS condutor_id,"
+ " condutor.codigo AS condutor_codigo," + " condutor.nome AS condutor_nome,"
+ " despesa.id AS despesa_id," + " despesa.nome AS despesa_nome," + " despesa.sku AS despesa_sku,"
+ " despesa.categoria_id AS despesa_categoria_id," + " entrada_acidente.id AS entrada_acidente_id,"
+ " entrada_acidente.attach AS entrada_acidente_attach,"
+ " entrada_acidente.data_criacao AS entrada_acidente_data_criacao,"
+ " entrada_acidente.fileName AS entrada_acidente_fileName,"
+ " entrada_acidente.forma_pagamento AS entrada_acidente_forma_pagamento,"
+ " entrada_acidente.observacao AS entrada_acidente_observacao,"
+ " entrada_acidente.status AS entrada_acidente_status,"
+ " entrada_acidente.valor_desconto AS entrada_acidente_valor_desconto,"
+ " entrada_acidente.valor_total AS entrada_acidente_valor_total,"
+ " entrada_acidente.cliente_id AS entrada_acidente_cliente_id,"
+ " entrada_acidente.ocorrencia_id AS entrada_acidente_ocorrencia_id,"
+ " entrada_acidente.vendedor_id AS entrada_acidente_vendedor_id,"
+ " entrada_acidente.valor_unitario AS entrada_acidente_valor_unitario,"
+ " entrada_acidente.quantidade AS entrada_acidente_quantidade,"
+ " item_despesa.id AS item_despesa_id," + " item_despesa.quantidade AS item_despesa_quantidade,"
+ " item_despesa.valor_unitario AS item_despesa_valor_unitario,"
+ " item_despesa.produto_id AS item_despesa_produto_id,"
+ " item_despesa.pedido_id AS item_despesa_pedido_id," + " ocorrencia.id AS ocorrencia_id,"
+ " ocorrencia.descricao AS ocorrencia_descricao,"
+ " ocorrencia.condicao_tempo AS ocorrencia_condicao_tempo,"
+ " ocorrencia.data_ocorrencia AS ocorrencia_data_ocorrencia,"
+ " ocorrencia.numero_vitimas AS ocorrencia_numero_vitimas,"
+ " ocorrencia.periodo_ocorrencia AS ocorrencia_periodo_ocorrencia" + " FROM "
+ " cliente cliente INNER JOIN entrada_acidente entrada_acidente ON cliente.id = entrada_acidente.cliente_id"
+ " INNER JOIN item_despesa item_despesa ON entrada_acidente.id = item_despesa.pedido_id"
+ " INNER JOIN ocorrencia ocorrencia ON entrada_acidente.ocorrencia_id = ocorrencia.id"
+ " INNER JOIN condutor condutor ON ocorrencia.condutor_id = condutor.id"
+ " INNER JOIN despesa despesa ON item_despesa.produto_id = despesa.id";
}
query adding "where data"
public String getData(String dataI, String dataF) {
return dataParaQuery = " where entrada_acidente.data_criacao between '" + dataI + "'" + "and '" + dataF + "' "
+ "";
}
Method that generates report:
public void execute() throws ParseException {
JasperReportBuilder report = DynamicReports.report();
configure(report);
convert();
report.setDataSource(getQueryPrincipal(queryPrincipal) + getData(dataI, dataF), con);
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
try {
response.setContentType("application/pdf");
report.toPdf(response.getOutputStream());
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
e.printStackTrace();
}
}
xhtml (updated update2):
<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<ui:define name="titulo">Relatório de entradas emitidas</ui:define>
<ui:define name="corpo">
<h:form id="frm" acceptcharset="ISO-8859-1" >
<h1>Relatório de entradas emitidas</h1>
<p:messages autoUpdate="true" closable="true" />
<p:toolbar style="margin-top: 20px">
<p:toolbarGroup>
<p:commandButton value="EmitirPdf"
action="#{relatorioEntradasBean.emitirPdf}" ajax="false" />
<p:commandButton value="EmitirXls"
action="#{relatorioEntradasBean.emitirXls}" ajax="false" />
</p:toolbarGroup>
<p:toolbarGroup>
<h:commandButton action="#{simpleReport.execute}" value="show pdf" />
</p:toolbarGroup>
<p:toolbarGroup>
<h:commandLink value="Click here"
action="#{simpleReport.addtoList(nome)}">
<f:setPropertyActionListener target="#{simpleReport.nome}"
value="nome" />
</h:commandLink>
</p:toolbarGroup>
<p:toolbarGroup>
<h:inputText id="nome" value="#{simpleReport.nome}" />
</p:toolbarGroup>
<p:toolbarGroup>
<h:inputText binding="#{nome}" />
<h:commandButton value="Test"
action="#{simpleReport.addtoList(nome.value)}" />
</p:toolbarGroup>
</p:toolbar>
<p:panelGrid columns="7" id="painel"
style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo">
<p:outputLabel value="Data de criação" />
<h:panelGroup>
<p:calendar value="#{simpleReport.dataInicialQuery}"
label="Data inicial" pattern="dd/MM/yyyy" size="8" />
<p:spacer width="8" />
<h:outputText value="a" />
<p:spacer width="8" />
<p:calendar value="#{simpleReport.dataFinalQuery}"
label="Data final" pattern="dd/MM/yyyy" size="8" />
</h:panelGroup>
<h:panelGroup>
<p:outputLabel value="Cliente" for="cliente" />
<p:autoComplete id="cliente" size="40" dropdown="true"
value="#{simpleReport.cliente}"
completeMethod="#{simpleReport.completarCliente}" var="cliente"
itemLabel="#{cliente.nome}" itemValue="#{cliente}"
forceSelection="true" />
</h:panelGroup>
<p:outputLabel value="Status" />
<h:panelGroup>
<p:selectOneMenu id="statusEntrada"
value="#{relatorioEntradasBean.statusEntrada}">
<f:selectItem itemLabel="Selecione" />
<f:selectItems value="#{enumProviderStatus.statusEntradas}"
var="statusEntrada" itemValue="#{statusEntrada}"
itemLabel="#{statusEntrada.descricao}" />
</p:selectOneMenu>
</h:panelGroup>
</p:panelGrid>
</h:form>
</ui:define>
Update2: methods to receive and concatenate the names coming from the jsf page:
private ArrayList<String> test = new ArrayList<String>();
public void addtoList(String nome) {
test.add(nome);
}
public String nomesParaQuery(String queryNome) {
StringBuilder sb = new StringBuilder("and cliente.nome IN (");
boolean added = false;
for (String s : test) {
if (added) {
sb.append(",");
}
sb.append("'");
sb.append(s);
sb.append("'");
added = true;
}
sb.append(")");
queryNome = sb.toString();
return queryNome;
}
Method that generates report:
public void execute() throws ParseException {
JasperReportBuilder report = DynamicReports.report();
configure(report);
convert();
report.setDataSource(getQueryPrincipal(queryPrincipal) + getData(dataI, dataF) + nomesParaQuery(queryNome),
con);
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
try {
response.setContentType("application/pdf");
report.toPdf(response.getOutputStream());
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
e.printStackTrace();
}
}
clientConverter:
package com.rodrigo.controleacidentes.converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import com.rodrigo.controleacidentes.model.Cliente;
import com.rodrigo.controleacidentes.repository.Clientes;
import com.rodrigo.controleacidentes.util.cdi.CDIServiceLocator;
@FacesConverter(forClass=Cliente.class)
public class ClienteConverter implements Converter {
//@Inject
private Clientes clientes;
public ClienteConverter() {
this.clientes = (Clientes) CDIServiceLocator.getBean(Clientes.class);
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Cliente retorno = null;
if (value != null) {
retorno = this.clientes.porId(new Long(value));
}
return retorno;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null) {
Cliente cliente = (Cliente) value;
return cliente.getId() == null ? null : cliente.getId().toString();
}
return "";
}
}
simpleReport:
@Named
@ViewScoped
public class SimpleReport implements Serializable {
private static final long serialVersionUID = 1L;
Date date = null;
Connection con = new SQLConnection().getConnection();
String dataInicialQuery;
String dataFinalQuery;
String queryPrincipal = "";
String dataI = "";
String dataF = "";
private Cliente cliente;
String dataParaQuery = "";
String queryNome = "";
private ArrayList<String> test = new ArrayList<String>();
String queryConcatenadaNome = "";
private String nome = "";
@Inject
private Clientes clientes;
public void addCliente(SelectEvent event) {
String value = (String) event.getObject();
System.out.println("selected " + value);
System.out.println("classe: " + event.getObject().getClass().toString());
}
public void addtoList(String cliente) {
test.add(cliente);
System.out.println(cliente);
}
public String nomesParaQuery(String queryNome) {
StringBuilder sb = new StringBuilder("and cliente.id IN (");
boolean added = false;
for (String s : test) {
if (added) {
sb.append(",");
}
sb.append("'");
sb.append(s);
sb.append("'");
added = true;
}
sb.append(")");
queryNome = sb.toString();
return queryNome;
}
public String getData(String dataI, String dataF) {
return dataParaQuery = " where entrada_acidente.data_criacao between '" + dataI + "'" + "and '" + dataF + "' "
+ "";
}
public String getQueryPrincipal(String queryPrincipal) {
return queryPrincipal = "SELECT cliente.id AS cliente_id,"
+ " cliente.doc_receita_federal AS cliente_doc_receita_federal," + " cliente.email AS cliente_email,"
+ " cliente.nome AS cliente_nome," + " cliente.tipo AS cliente_tipo," + " condutor.id AS condutor_id,"
+ " condutor.codigo AS condutor_codigo," + " condutor.nome AS condutor_nome,"
+ " despesa.id AS despesa_id," + " despesa.nome AS despesa_nome," + " despesa.sku AS despesa_sku,"
+ " despesa.categoria_id AS despesa_categoria_id," + " entrada_acidente.id AS entrada_acidente_id,"
+ " entrada_acidente.attach AS entrada_acidente_attach,"
+ " entrada_acidente.data_criacao AS entrada_acidente_data_criacao,"
+ " entrada_acidente.fileName AS entrada_acidente_fileName,"
+ " entrada_acidente.forma_pagamento AS entrada_acidente_forma_pagamento,"
+ " entrada_acidente.observacao AS entrada_acidente_observacao,"
+ " entrada_acidente.status AS entrada_acidente_status,"
+ " entrada_acidente.valor_desconto AS entrada_acidente_valor_desconto,"
+ " entrada_acidente.valor_total AS entrada_acidente_valor_total,"
+ " entrada_acidente.cliente_id AS entrada_acidente_cliente_id,"
+ " entrada_acidente.ocorrencia_id AS entrada_acidente_ocorrencia_id,"
+ " entrada_acidente.vendedor_id AS entrada_acidente_vendedor_id,"
+ " entrada_acidente.valor_unitario AS entrada_acidente_valor_unitario,"
+ " entrada_acidente.quantidade AS entrada_acidente_quantidade,"
+ " item_despesa.id AS item_despesa_id," + " item_despesa.quantidade AS item_despesa_quantidade,"
+ " item_despesa.valor_unitario AS item_despesa_valor_unitario,"
+ " item_despesa.produto_id AS item_despesa_produto_id,"
+ " item_despesa.pedido_id AS item_despesa_pedido_id," + " ocorrencia.id AS ocorrencia_id,"
+ " ocorrencia.descricao AS ocorrencia_descricao,"
+ " ocorrencia.condicao_tempo AS ocorrencia_condicao_tempo,"
+ " ocorrencia.data_ocorrencia AS ocorrencia_data_ocorrencia,"
+ " ocorrencia.numero_vitimas AS ocorrencia_numero_vitimas,"
+ " ocorrencia.periodo_ocorrencia AS ocorrencia_periodo_ocorrencia" + " FROM "
+ " cliente cliente INNER JOIN entrada_acidente entrada_acidente ON cliente.id = entrada_acidente.cliente_id"
+ " INNER JOIN item_despesa item_despesa ON entrada_acidente.id = item_despesa.pedido_id"
+ " INNER JOIN ocorrencia ocorrencia ON entrada_acidente.ocorrencia_id = ocorrencia.id"
+ " INNER JOIN condutor condutor ON ocorrencia.condutor_id = condutor.id"
+ " INNER JOIN despesa despesa ON item_despesa.produto_id = despesa.id";
}
public void convert() throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
df.setTimeZone(TimeZone.getTimeZone("BRT"));
DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date dInicial = df.parse(dataInicialQuery);
Date dFinal = df.parse(dataFinalQuery);
System.out.println("DateD: " + dInicial);
String dataInicialUTC = utcFormat.format(dInicial);
String dataFinalUTC = utcFormat.format(dFinal);
System.out.println("dataInicialUTC:" + (dataInicialUTC));
System.out.println("dataFinalUTC:" + (dataFinalUTC));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
dataI = sdf.format(dInicial);
dataF = sdf.format(dFinal);
System.out.println("New Date:" + (dataI));
System.out.println("New Date:" + (dataF));
}
private void configure(JasperReportBuilder report) {
report.setTemplate(Template.reportTemplate)
.columns(
col.column("Cliente", "cliente_nome", type.stringType())
.setHorizontalAlignment(HorizontalAlignment.CENTER),
col.column("Status", "entrada_acidente_status", type.stringType())
.setHorizontalAlignment(HorizontalAlignment.CENTER),
col.column("Valor", "entrada_acidente_valor_unitario", type.bigDecimalType())
.setHorizontalAlignment(HorizontalAlignment.CENTER))
.title(Template.createTitleComponent("Relatório")).pageFooter(Template.footerComponent);
}
public void execute() throws ParseException {
JasperReportBuilder report = DynamicReports.report();
configure(report);
convert();
report.setDataSource(getQueryPrincipal(queryPrincipal) + getData(dataI, dataF) + nomesParaQuery(queryNome),
con);
System.out.println("Name:" + nome);
System.out.println(
"QQQ:" + getQueryPrincipal(queryPrincipal) + getData(dataI, dataF) + nomesParaQuery(queryNome));
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
try {
response.setContentType("application/pdf");
report.toPdf(response.getOutputStream());
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
e.printStackTrace();
}
}
public String getDataInicialQuery() {
return dataInicialQuery;
}
public void setDataInicialQuery(String dataInicialQuery) {
this.dataInicialQuery = dataInicialQuery;
}
public String getDataFinalQuery() {
return dataFinalQuery;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public void setDataFinalQuery(String dataFinalQuery) {
this.dataFinalQuery = dataFinalQuery;
}
public List<Cliente> completarCliente(String nome) {
return this.clientes.porNome(nome);
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}