Amigão segue o meu código :
controller
package br.com.catequese.controller;
import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.interceptor.download.Download;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.caelum.vraptor.validator.Hibernate;
import java.util.Date;
import br.com.catequese.dao.EstadoCivilDao;
import br.com.catequese.to.ClienteFisica;
import br.com.catequese.dao.CidadeDao;
import br.com.catequese.dao.ClienteFisicaDao;
import br.com.catequese.dao.ContratoDao;
import br.com.catequese.dao.EspecialidadeDao;
import br.com.catequese.dao.EstadoUfDao;
import br.com.catequese.dao.FormaContatoDao;
import br.com.catequese.dao.FuncionarioDao;
import br.com.catequese.dao.RamoAtividadeDao;
import br.com.catequese.dao.SolicitacaoDao;
import br.com.catequese.dao.TipoClienteDao;
import java.sql.SQLException;
import java.util.List;
import net.sf.jasperreports.engine.JRException;
import static br.com.caelum.vraptor.view.Results.*;
@Resource
public class ClienteFisicaController {
private final ClienteFisicaDao dao;
private final RamoAtividadeDao ramoatividadeDao;
private final EspecialidadeDao especialidadeDao;
private final SolicitacaoDao solicitacaoDao;
private final ContratoDao contratoDao;
private final EstadoUfDao estadoufDao;
private final TipoClienteDao tipoclienteDao;
private final EstadoCivilDao estadocivilDao;
private final CidadeDao cidadeDao;
private final FormaContatoDao formacontatoDao;
private final FuncionarioDao funcionarioDao;
private final Result result;
private final Validator validator;
public ClienteFisicaController(ClienteFisicaDao dao, RamoAtividadeDao ramoatividadeDao, EspecialidadeDao especialidadeDao, SolicitacaoDao solicitacaoDao, ContratoDao contratoDao, EstadoUfDao estadoufDao, TipoClienteDao tipoclienteDao, EstadoCivilDao estadocivilDao, CidadeDao cidadeDao, FormaContatoDao formacontatoDao, FuncionarioDao funcionarioDao, Result result, Validator validator) {
this.dao = dao;
this.ramoatividadeDao = ramoatividadeDao;
this.especialidadeDao = especialidadeDao;
this.solicitacaoDao = solicitacaoDao;
this.contratoDao = contratoDao;
this.estadoufDao = estadoufDao;
this.tipoclienteDao = tipoclienteDao;
this.estadocivilDao = estadocivilDao;
this.cidadeDao = cidadeDao;
this.formacontatoDao = formacontatoDao;
this.funcionarioDao = funcionarioDao;
this.result = result;
this.validator = validator;
}
@Post @Path("/clienteFisica/adiciona")
public void adiciona(ClienteFisica clienteFisica){
validator.addAll(Hibernate.validate(clienteFisica));
validator.onErrorUse(page()).of(ClienteFisicaController.class).formulario();
dao.salva(clienteFisica);
result.redirectTo(ClienteFisicaController.class).lista();
}
@Delete @Path("/clienteFisica/{clfiPkId}")
public void remove(Integer clfiPkId) throws Exception {
ClienteFisica d = dao.carrega(clfiPkId);
dao.excluir(d);
result.redirectTo(ClienteFisicaController.class).lista();
}
@Get @Path("/clienteFisica/{clfiPkId}")
public ClienteFisica edita(Integer clfiPkId){
this.result.include("ramoatividades", ramoatividadeDao.listaTudo());
this.result.include("especialidades", especialidadeDao.listaTudo());
this.result.include("solicitacaos", solicitacaoDao.listaTudo());
this.result.include("contratos", contratoDao.listaTudo());
this.result.include("estadoufs", estadoufDao.listaTudo());
this.result.include("tipoclientes", tipoclienteDao.listaTudo());
this.result.include("estadocivils", estadocivilDao.listaTudo());
this.result.include("cidades", cidadeDao.listaTudo());
this.result.include("formacontatos", formacontatoDao.listaTudo());
this.result.include("funcionarios", funcionarioDao.listaTudo());
return dao.carrega(clfiPkId);
}
@Put @Path("/clienteFisica/{clienteFisica.clfiPkId}")
public void altera(ClienteFisica clienteFisica) {
validator.addAll(Hibernate.validate(clienteFisica));
validator.onErrorUse(page()).of(ClienteFisicaController.class).formulario();
dao.atualiza(clienteFisica);
result.redirectTo(ClienteFisicaController.class).lista();
}
@Get @Path("/clienteFisica/novo")
public void formulario(){
this.result.include("ramoatividades", ramoatividadeDao.listaTudo());
this.result.include("especialidades", especialidadeDao.listaTudo());
this.result.include("solicitacaos", solicitacaoDao.listaTudo());
this.result.include("contratos", contratoDao.listaTudo());
this.result.include("estadoufs", estadoufDao.listaTudo());
this.result.include("tipoclientes", tipoclienteDao.listaTudo());
this.result.include("estadocivils", estadocivilDao.listaTudo());
this.result.include("cidades", cidadeDao.listaTudo());
this.result.include("formacontatos", formacontatoDao.listaTudo());
this.result.include("funcionarios", funcionarioDao.listaTudo());
}
@Get @Path("/clienteFisica/cadastro")
public void cadastro() throws Exception{
}
@Get @Path("/clienteFisica/todos")
public List<ClienteFisica> lista(){
return dao.listaTudo();
}
public List<ClienteFisica> busca(String clfiNome) {
result.include("clfiNome", clfiNome);
return dao.busca(clfiNome);
}
@Get @Path("/clienteFisica/busca.json")
public void buscaJson(String q) {
result.use(json()).from(dao.busca(q))
.serialize();
}
@Get @Path("/clienteFisica/relatorioQuantidadeNovosClientesFisicoPorPeriodo")
public Download relatorioQuantidadeNovosClientesFisicoPorPeriodo(Date dtInicio,
Date dtFinal)
throws
JRException,
SQLException, ClassNotFoundException, Exception {
InputStreamDownload relatorio = dao.relQuantidadeNovosClientesFisicoPorPeriodo(
dtInicio,
dtFinal);
System.out.println("Inicializando =============relQuantidadeNovosClientesFisicoPorPeriodo Gerado==============");
return relatorio;
}
@Get @Path("/clienteFisica/relQuantidadeNovosClientesFisicoPorPeriodo")
public void relQuantidadeNovosClientesFisicoPorPeriodo() {
System.out.println("Inicializando =============relQuantidadeNovosClientesFisicoPorPeriodo==============");
}
@Get @Path("/clienteFisica/relatorioAcompanhamentoDeProcessosGeradosClienteFisico")
public Download relatorioAcompanhamentoDeProcessosGeradosClienteFisico()
throws JRException,
SQLException, ClassNotFoundException, Exception {
InputStreamDownload relatorio = dao.relAcompanhamentoDeProcessosGeradosClienteFisico();
return relatorio;
}
@Get @Path("/clienteFisica/relAcompanhamentoDeProcessosGeradosClienteFisico")
public void relAcompanhamentoDeProcessosGeradosClienteFisico() {
}
@Get @Path("/clienteFisica/relatorioClientesFisicoAtentidoPorPeriodo")
public Download relatorioClientesFisicoAtentidoPorPeriodo(Date dtInicio,
Date dtFinal)
throws
JRException,
SQLException, ClassNotFoundException, Exception {
InputStreamDownload relatorio = dao.relClientesFisicoAtentidoPorPeriodo(
dtInicio,
dtFinal);
System.out.println("Inicializando =============relClientesFisicoAtentidoPorPeriodo Gerado==============");
return relatorio;
}
@Get @Path("/clienteFisica/relClientesFisicoAtentidoPorPeriodo")
public void relClientesFisicoAtentidoPorPeriodo() {
System.out.println("Inicializando =============relClientesFisicoAtendidoPorPeriodo==============");
}
@Get @Path("/clienteFisica/relatorioClienteFisicoAtivo")
public Download relatorioClienteFisicoAtivo()
throws
JRException,
SQLException, ClassNotFoundException, Exception {
InputStreamDownload relatorio = dao.relClienteFisicoAtivo();
System.out.println("Inicializando =============relClienteFisicoAtivo Gerado==============");
return relatorio;
}
@Get @Path("/clienteFisica/relClienteFisicoAtivo")
public void relClienteFisicoAtivo() {
System.out.println("Inicializando =============relClienteFisicoAtivo==============");
}
@Get @Path("/clienteFisica/relatorioClienteFisicoInativo")
public Download relatorioClienteFisicoInativo()
throws
JRException,
SQLException, ClassNotFoundException, Exception {
InputStreamDownload relatorio = dao.relClienteFisicoInativo();
System.out.println("Inicializando =============relClienteFisicoInativo Gerado==============");
return relatorio;
}
@Get @Path("/clienteFisica/relClienteFisicoInativo")
public void relClienteFisicoInativo() {
System.out.println("Inicializando =============relClienteFisicoInativo==============");
}
}
dao
package br.com.catequese.dao;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.caelum.vraptor.ioc.Component;
import br.com.catequese.to.ClienteFisica;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
@Component
public class ClienteFisicaDao {
private final Session session;
public ClienteFisicaDao(Session session) {
this.session = session;
}
public void salva(ClienteFisica clientefisica){
Transaction tx = session.beginTransaction();
session.save(clientefisica);
tx.commit();
}
public void excluir(ClienteFisica clientefisica) throws Exception{
try{
Transaction tx = session.beginTransaction();
session.delete(clientefisica);
tx.commit();
}catch(Exception ex){
throw new Exception("Erro ao excluir ApresentaçaoMarca. <br />A mesma tem referência a outros dados.");
}
}
public List<ClienteFisica> listaTudo(){
return this.session.createCriteria(ClienteFisica.class)
.add(Restrictions.like("clfiStatus","Ativo"))
.addOrder(Order.asc("clfiNome"))
//.setMaxResults(20)
.list();
}
public ClienteFisica carrega(Integer clfiPkId) {
return (ClienteFisica) this.session.load(ClienteFisica.class, clfiPkId);
}
public void atualiza(ClienteFisica clientefisica) {
Transaction tx = session.beginTransaction();
this.session.update(clientefisica);
tx.commit();
}
public List<ClienteFisica> busca(String clfiNome) {
return session.createCriteria(ClienteFisica.class)
.add(Restrictions.ilike("clfiNome", clfiNome, MatchMode.ANYWHERE))
.list();
}
private Connection getConexao() throws SQLException, ClassNotFoundException{
Connection con = null;
try{
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost:5432/nutec";
String usuario = "root";
String senha = "debian23";
con = (Connection) DriverManager.getConnection(url,usuario,senha);
}catch(SQLException sql){
System.out.println("erro ao conectar");
// sql.printStackTrace();
}
return con;
}
public String formataData(String data)throws Exception{
String retorno = "";
try{
retorno = data.substring(6,10)+"-" + data.substring(3,5) + "-" +data.substring(0,2);
}
catch(Exception e) {
throw new Exception("Erro na conversão da data" +
"\nMensagem original: " + e.getMessage());
}
return retorno;
}
public InputStreamDownload relQuantidadeNovosClientesFisicoPorPeriodo(Date dtInicio, Date dtFinal)
throws JRException, SQLException, ClassNotFoundException, Exception {
InputStream file = getClass().getClassLoader().
getResourceAsStream("/br/com/catequese/relatorio/relQuantidadeNovosClientesfisicoPorPeriodo.jasper");
Map parametros = new HashMap();
parametros.put("DATAINICIO", dtInicio);
parametros.put("DATAFIM", dtFinal);
ByteArrayOutputStream os = new ByteArrayOutputStream();
JasperRunManager.runReportToPdfStream(file, os, parametros, getConexao());
InputStream document = new ByteArrayInputStream(os.toByteArray());
return new InputStreamDownload(document, "application/pdf", "relatorioQuantidadeNovosClientesFisicoPorPeriodo.pdf", true, os.toByteArray().length);
}
public InputStreamDownload relAcompanhamentoDeProcessosGeradosClienteFisico()
throws JRException, SQLException, ClassNotFoundException, Exception {
InputStream file = getClass().getClassLoader().
getResourceAsStream("/br/com/catequese/relatorio/relAcompanhamentoDeProcessosGeradosClienteFisico.jasper");
ByteArrayOutputStream os = new ByteArrayOutputStream();
JasperRunManager.runReportToPdfStream(file, os, null, getConexao());
InputStream document = new ByteArrayInputStream(os.toByteArray());
return new InputStreamDownload(document, "application/pdf", "relatorioAcompanhamentoDeProcessosGeradosClienteFisico.pdf", true, os.toByteArray().length);
}
public InputStreamDownload relClientesFisicoAtentidoPorPeriodo(Date dtInicio, Date dtFinal)
throws JRException, SQLException, ClassNotFoundException, Exception {
InputStream file = getClass().getClassLoader().
getResourceAsStream("/br/com/catequese/relatorio/relClientesFisicoAtentidoPorPeriodo.jasper");
Map parametros = new HashMap();
parametros.put("DATAINICIO", dtInicio);
parametros.put("DATAFIM", dtFinal);
ByteArrayOutputStream os = new ByteArrayOutputStream();
JasperRunManager.runReportToPdfStream(file, os, parametros, getConexao());
InputStream document = new ByteArrayInputStream(os.toByteArray());
return new InputStreamDownload(document, "application/pdf", "relatórioClientesFisicoAtentidoPorPeriodo.pdf", true, os.toByteArray().length);
}
public InputStreamDownload relClienteFisicoAtivo()
throws JRException, SQLException, ClassNotFoundException, Exception {
InputStream file = getClass().getClassLoader().
getResourceAsStream("/br/com/catequese/relatorio/relClienteFisicoAtivo.jasper");
ByteArrayOutputStream os = new ByteArrayOutputStream();
JasperRunManager.runReportToPdfStream(file, os, null, getConexao());
InputStream document = new ByteArrayInputStream(os.toByteArray());
return new InputStreamDownload(document, "application/pdf", "relClienteFisicoAtivo.pdf", true, os.toByteArray().length);
}
public InputStreamDownload relClienteFisicoInativo()
throws JRException, SQLException, ClassNotFoundException, Exception {
InputStream file = getClass().getClassLoader().
getResourceAsStream("/br/com/catequese/relatorio/relClienteFisicoInativo.jasper");
ByteArrayOutputStream os = new ByteArrayOutputStream();
JasperRunManager.runReportToPdfStream(file, os, null, getConexao());
InputStream document = new ByteArrayInputStream(os.toByteArray());
return new InputStreamDownload(document, "application/pdf", "relClienteFisicoInativo.pdf", true, os.toByteArray().length);
}
}
jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<%@include file="../titulo.jsp" %>
<style type="text/css" media="screen">
<!--
@import URL("../css/estilos.css");
-->
</style>
<script type="text/javascript" src="../js/jquery.js"></script>
<script language="JavaScript" src="../js/jquery.validate.js" type="text/javascript"></script>
<script language="JavaScript" src="../js/funcoes.js" type="text/javascript"></script>
</head>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="principal" id="principal">
<tr>
<td width="5%" valign="top" background="../img/fundoMenu_bg.jpg"><table width="95%" border="0" cellpadding="0" cellspacing="0" >
<tr>
<td><img /></td>
</tr>
<tr>
<td class="fundoMenu"><%@include file="../menu.jsp" %></td>
</tr>
</table></td>
<td width="850" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img /></td>
</tr>
<td><br/><br/><br/>
<form id="formulario" action="<c:url value="/clienteFisica/relatorioClienteFisicoAtivo"/>" method="GET">
<fieldset>
<legend>Clientes Físicos Ativos</legend>
<br />
<table width="73%" border="0" align="center" cellpadding="8" cellspacing="2">
<tr>
<td height="30"> </td>
<td height="30"><button type="submit">Enviar</button></td>
</tr>
</table>
</fieldset>
</form></td>
</tr>
</table></td>
</tr>
<tr>
<td colspan="3" valign="top" class="filRodape">
<%@include file="../rodape.jsp" %> </td>
</tr>
</table>
</body>
</html>