package dao; import domain.Carro; import domain.Cidade; import domain.Cliente; import domain.Endereco; import domain.GrupoCarro; import domain.Locacao; import domain.UF; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Date; import java.sql.ResultSet; import util.Conexao; import java.util.Vector; import util.ConexaoException; import util.MinhaException; public class ClienteJDBCDao implements ClienteDao { private Conexao connection; private String sql; public void setConnection (Conexao val) { this.connection = val; } public Vector<Cliente> selecionarCliente(String login) throws MinhaException, ConexaoException, SQLException { this.connection = FabricaConexao.obterConexao(); sql = "SELECT * FROM cliente where login ='"+login+"';"; PreparedStatement pStmt = this.connection.prepareStatement(sql); ResultSet result = pStmt.executeQuery(); result.next(); Vector<Cliente> clienteEncontrados = new Vector<Cliente>(); do{ Cliente cliente = new Cliente(); Endereco endereco = new Endereco(); Cidade cidade = new Cidade(); cidade.setCodCidade(result.getInt("cod_cidade")); endereco.setNomeRua(result.getString("rua")); endereco.setNumero(result.getInt("numero_casa")); endereco.setNomeBairro(result.getString("bairro")); endereco.setCidade(cidade); /*0*/ cliente.setCodCliente(result.getInt("cod_cliente")); /*1*/ cliente.setNome(result.getString("nome")); /*2*/ cliente.setCpf(result.getString("cpf")); /*3*/ cliente.setLogin(result.getString("login")); /*4*/ cliente.setSenha(result.getString("senha")); /*5*/ cliente.setCartaoCredito(result.getString("cartao_credito")); /*6*/ cliente.setEmail(result.getString("email")); /*7*/ cliente.setTelefone(result.getString("telefone")); /*8*/ cliente.setDataNasc((result.getDate("data_nasc"))); /*9*/ cliente.setEndereco(endereco); clienteEncontrados.add(cliente); }while(result.next()); this.connection.close(); return clienteEncontrados; } public void removerCliente(Cliente cliente) throws MinhaException, ConexaoException, SQLException { this.connection = FabricaConexao.obterConexao(); this.connection.setAutoCommit(true); sql = "DELETE FROM cliente WHERE cod_cliente = ? ;"; PreparedStatement pStmt = this.connection.prepareStatement(sql); pStmt.setInt(1, cliente.getCodCliente()); pStmt.executeUpdate(); this.connection.close(); } public void alterarCliente(Cliente cliente) throws MinhaException, ConexaoException, SQLException { this.connection = FabricaConexao.obterConexao(); this.connection.setAutoCommit(true); sql = "UPDATE cliente " + "SET nome = ? ," + "cpf = ? ," + "data_nasc = ? ," + "rua = ?, " + "numero_casa = ? , " + "bairro = ? , " + "email = ? , " + "telefone = ? , " + "login = ? , " + "senha = ? , " + "cartao_credito = ? , " + "cod_cidade = ? " + "WHERE cod_cliente = ? ;"; PreparedStatement pStmt = this.connection.prepareStatement(sql); pStmt.setString(1, cliente.getNome()); pStmt.setString(2, cliente.getCpf()); pStmt.setDate(3,(Date) cliente.getDataNasc()); pStmt.setString(4, cliente.getEndereco().getNomeRua()); pStmt.setInt(5, cliente.getEndereco().getNumero()); pStmt.setString(6, cliente.getEndereco().getNomeBairro()); pStmt.setString(7, cliente.getEmail()); pStmt.setString(8, cliente.getTelefone()); pStmt.setString(9, cliente.getLogin()); pStmt.setString(10, cliente.getSenha()); pStmt.setString(11, cliente.getCartaoCredito()); pStmt.setInt(12, cliente.getEndereco().getCidade().getCodCidade()); pStmt.setInt(13, cliente.getCodCliente()); pStmt.executeUpdate(); this.connection.close(); } public boolean inserirCliente(Cliente cliente) throws MinhaException, ConexaoException, SQLException{ this.connection = FabricaConexao.obterConexao(); try { this.connection.setAutoCommit(false); sql = "INSERT INTO cliente(nome, cpf, data_nasc, rua, numero_casa, bairro, email, telefone, login, senha, cartao_credito, cod_cidade) " + "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; PreparedStatement pStmt = this.connection.prepareStatement(sql); pStmt.setString(1, cliente.getNome()); pStmt.setString(2, cliente.getCpf()); pStmt.setDate(3,(Date) cliente.getDataNasc()); pStmt.setString(4, cliente.getEndereco().getNomeRua()); pStmt.setInt(5, cliente.getEndereco().getNumero()); pStmt.setString(6, cliente.getEndereco().getNomeBairro()); pStmt.setString(7, cliente.getEmail()); pStmt.setString(8, cliente.getTelefone()); pStmt.setString(9, cliente.getLogin()); pStmt.setString(10, cliente.getSenha()); pStmt.setString(11, cliente.getCartaoCredito()); pStmt.setInt(12, cliente.getEndereco().getCidade().getCodCidade()); pStmt.executeUpdate(); this.connection.commit(); } catch(SQLException erro) { this.connection.rollback(); throw erro; } finally { this.connection.close(); return true; } } public Cliente selecionarClientePorCpf(String cpf) throws MinhaException, ConexaoException, SQLException { this.connection = FabricaConexao.obterConexao(); sql = "SELECT * " + "FROM cliente c, " + "cidade cid " + "WHERE c.cod_cidade = cid.cod_cidade AND " + "c.cpf = ? ;"; PreparedStatement pStmt = this.connection.prepareStatement(sql); pStmt.setString(1, cpf); ResultSet result = pStmt.executeQuery(); Cliente cliente = new Cliente(); Endereco endereco = new Endereco(); Cidade cid = new Cidade(); if(result == null || !result.next()) { this.connection.close(); throw new MinhaException(" Não existe cliente cadastrado com esse CPF !"); } else { UF uf = new UF(); uf.setUF(result.getString("sigla_uf")); cid.setCodCidade(result.getInt("cod_cidade")); cid.setNomeCidade(result.getString("nome_cidade")); cid.setUF(uf); endereco.setNomeRua(result.getString("rua")); endereco.setNumero(result.getInt("numero_casa")); endereco.setNomeBairro(result.getString("bairro")); endereco.setCidade(cid); cliente.setCodCliente(result.getInt("cod_cliente")); cliente.setNome(result.getString("nome")); cliente.setCpf(result.getString("cpf")); cliente.setEmail(result.getString("email")); cliente.setTelefone(result.getString("telefone")); cliente.setDataNasc((result.getDate("data_nasc"))); cliente.setCartaoCredito(result.getString("cartao_credito")); cliente.setEndereco(endereco); } this.connection.close(); return cliente; } @SuppressWarnings("unchecked") public Vector selecionarClientePelaLocacao(String codLocacao) throws MinhaException, ConexaoException, SQLException { this.connection = FabricaConexao.obterConexao(); int codLoca = Integer.parseInt(codLocacao); sql = "select cl.cpf, "+ "cl.nome, "+ "ca.placa, "+ "gc.nome_grupo_carro, " + "ca.modelo, "+ "lo.quilometragem_inicial, "+ "lo.cobertura, "+ "lo.valor_previsto "+ "from cliente cl, "+ "carro ca, "+ "grupo_carro gc, "+ "locacao lo "+ "where lo.cod_cliente = cl.cod_cliente and "+ "lo.cod_grupo_carro = gc.cod_grupo_carro and "+ "gc.cod_grupo_carro = ca.cod_grupo_carro and "+ "lo.cod_locacao = ? ;"; PreparedStatement pStmt = this.connection.prepareStatement(sql); pStmt.setInt(1, codLoca); ResultSet result = pStmt.executeQuery(); Locacao loca = new Locacao(); GrupoCarro gc = new GrupoCarro(); Cliente cliente = new Cliente(); Carro ca = new Carro(); Vector vetConsult = new Vector(); if(result == null || !result.next()) { this.connection.close(); throw new MinhaException(" Não existe cliente cadastrado com esse CPF !"); } else { vetConsult.addElement(result.getString("cpf")); vetConsult.addElement(result.getString("nome")); vetConsult.addElement(result.getString("placa")); vetConsult.addElement(result.getString("modelo")); vetConsult.addElement(result.getString("nome_grupo_carro")); vetConsult.addElement(result.getInt("quilometragem_inicial")); Boolean cobertura = result.getBoolean("cobertura"); if (cobertura.equals(true)) { vetConsult.addElement("Sim"); } if (cobertura.equals(false)) { vetConsult.addElement("Não"); } vetConsult.addElement(result.getFloat("valor_previsto")); } this.connection.close(); return vetConsult; } public Vector<Cliente> selecionarTodosClientes () throws MinhaException, ConexaoException, SQLException { this.connection = FabricaConexao.obterConexao(); sql = "SELECT c.*, " + "cid.nome_cidade as nome_cidade, " + "uf.sigla_uf as sigla_uf, " + "uf.nome_uf as nome_uf " + "FROM cliente c, " + "cidade cid, " + "uf " + "WHERE c.cod_cidade = cid.cod_cidade and " + "cid.sigla_uf = uf.sigla_uf ;"; PreparedStatement pStmt = this.connection.prepareStatement(sql); ResultSet result = pStmt.executeQuery(); Vector<Cliente> clientes = new Vector<Cliente>(); if(result == null || !result.next()) { this.connection.close(); throw new MinhaException(" Não existem clientes cadastrados !"); } else { do{ Cliente cliente = new Cliente(); Endereco endereco = new Endereco(); Cidade cid = new Cidade(); UF uf = new UF(); uf.setUF(result.getString("sigla_uf")); uf.setNomeUF(result.getString("nome_uf")); cid.setCodCidade(result.getInt("cod_cidade")); cid.setNomeCidade(result.getString("nome_cidade")); cid.setUF(uf); endereco.setNomeRua(result.getString("rua")); endereco.setNumero(result.getInt("numero_casa")); endereco.setNomeBairro(result.getString("bairro")); endereco.setCidade(cid); cliente.setCodCliente(result.getInt("cod_cliente")); cliente.setNome(result.getString("nome")); cliente.setCpf(result.getString("cpf")); cliente.setEmail(result.getString("email")); cliente.setTelefone(result.getString("telefone")); cliente.setLogin(result.getString("login")); cliente.setSenha(result.getString("senha")); cliente.setDataNasc((result.getDate("data_nasc"))); cliente.setCartaoCredito(result.getString("cartao_credito")); cliente.setEndereco(endereco); clientes.add(cliente); }while(result.next()); } this.connection.close(); return clientes; } public Vector<Cliente> obterCodCliente(String nomeCliente) throws MinhaException, ConexaoException, SQLException { this.connection = FabricaConexao.obterConexao(); sql = "select cl.cod_cliente " + "from cliente cl " + "where cl.nome = '"+nomeCliente+"';"; PreparedStatement pStmt = this.connection.prepareStatement(sql); ResultSet result = pStmt.executeQuery(); Vector<Cliente> clientes = new Vector<Cliente>(); if(result == null || !result.next()) { this.connection.close(); throw new MinhaException(" Não existem clientes cadastrados !"); } else { do{ Cliente cliente = new Cliente(); cliente.setCodCliente(result.getInt("cod_cliente")); clientes.add(cliente); }while(result.next()); } this.connection.close(); return clientes; } }