package dao; import domain.Carro; import domain.Cliente; import domain.Entrega; import domain.Funcionario; import domain.Locacao; import domain.Oficina; import domain.Revisao; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector; import util.Conexao; import util.ConexaoException; import util.MinhaException; public class RevisaoJDBCDao implements RevisaoDao { private Conexao connection; public RevisaoJDBCDao () { } public Conexao getConnection () { return connection; } public void setConnection (Conexao val) { this.connection = val; } public Vector<Revisao> selecionarTodasRevisoes() throws MinhaException, SQLException, ConexaoException { this.connection = FabricaConexao.obterConexao(); String sql = "SELECT r.cod_revisao as cod_revisao, "+ "c.nome as nome," + " r.cod_entrega as cod_entrega, "+ "f.nome as nome_funcionario, " + "r.cod_funcionario as cod_funcionario, "+ "o.nome_oficina as nome_oficina, " + "r.cod_oficina as cod_oficina, "+ "r.desc_revisao as desc_revisao, " + "r.valor_revisao as valor_revisao, "+ "r.data_entrada as data_entrada, " + "r.data_saida as data_saida, "+ "r.cod_locacao as cod_locacao, "+ "car.placa as placa, " + "car.chassi as chassi "+ "FROM revisao as r LEFT JOIN entrega e on r.cod_entrega = e.cod_entrega "+ "LEFT JOIN locacao as l on e.cod_locacao = l.cod_locacao "+ "LEFT JOIN cliente as c on l.cod_cliente = c.cod_cliente "+ "LEFT JOIN funcionario as f on r.cod_funcionario = f.cod_funcionario "+ "LEFT JOIN oficina as o on r.cod_oficina = o.cod_oficina "+ "LEFT JOIN carro as car on l.cod_carro = car.cod_carro; "; PreparedStatement pStmt = this.connection.prepareStatement(sql); ResultSet result = pStmt.executeQuery(); Vector<Revisao> revisoes = new Vector<Revisao>(); if(result == null || !result.next()) throw new MinhaException("Não existem Revisões cadastrados no Sistema !"); else{ do{ Revisao revisao = new Revisao(); Entrega entrega = new Entrega(); Locacao locacao = new Locacao(); Funcionario funcionario = new Funcionario(); Oficina oficina = new Oficina(); Cliente cliente = new Cliente(); Carro carro = new Carro(); carro.setPlaca(result.getString("placa")); carro.setChassi(result.getString("chassi")); cliente.setNome(result.getString("nome")); locacao.setCodLocacao(result.getInt("cod_locacao")); locacao.setCliente(cliente); locacao.setCarro(carro); entrega.setCodEntrega(result.getInt("cod_entrega")); entrega.setLocacao(locacao); funcionario.setCodFuncionario(result.getInt("cod_funcionario")); funcionario.setNome(result.getString("nome_funcionario")); oficina.setCodOficina(result.getInt("cod_oficina")); oficina.setNomeOficina(result.getString("nome_oficina")); revisao.setCodRevisao(result.getInt("cod_revisao")); revisao.setEntrega(entrega); revisao.setValorRevisao(result.getDouble("valor_revisao")); revisao.setDescRevisao(result.getString("desc_revisao")); revisao.setFuncionario(funcionario); revisao.setOficina(oficina); revisao.setDataEntrada(result.getDate("data_entrada")); revisao.setDataSaida(result.getDate("data_entrada")); revisoes.add(revisao); }while(result.next()); } this.connection.close(); return revisoes; } public int ultRevisao() throws MinhaException, SQLException, ConexaoException { this.connection = FabricaConexao.obterConexao(); String sql = "select max(cod_revisao) from revisao;"; PreparedStatement pStmt = this.connection.prepareStatement(sql); ResultSet result = pStmt.executeQuery(); int ultRevisao ; if(result == null || !result.next()) throw new MinhaException("Não existem Revisões cadastrados no Sistema !"); else{ do{ ultRevisao = result.getInt("cod_revisao"); }while(result.next()); } this.connection.close(); return ultRevisao; } public Revisao selecionarRevisao(Revisao revisao) throws MinhaException, SQLException { throw new UnsupportedOperationException("Not supported yet."); } public void removerRevisao(Revisao revisao) throws MinhaException, SQLException, ConexaoException { this.connection = FabricaConexao.obterConexao(); this.connection.setAutoCommit(true); String sql = "DELETE FROM revisao WHERE cod_revisao = ? ; "; PreparedStatement pStmt = this.connection.prepareStatement(sql); pStmt.setInt(1, revisao.getCodRevisao()); pStmt.executeUpdate(); this.connection.close(); } public void alterarRevisao(Revisao revisao, Conexao connect) throws MinhaException, SQLException, ConexaoException { //this.connection = FabricaConexao.obterConexao(); connect.setAutoCommit(true); String sql = "UPDATE revisao set " + "cod_locacao = ? , " + "cod_entrega = ? , " + "cod_funcionario = ? , " + "cod_oficina = ? , " + "desc_revisao = ? , " + "valor_revisao = ? , " + "data_entrada = ? , " + "data_saida = ? " + "WHERE cod_revisao = ? ; "; PreparedStatement pStmt = connect.prepareStatement(sql); pStmt.setInt(1, revisao.getEntrega().getLocacao().getCodLocacao()); pStmt.setInt(2, revisao.getEntrega().getCodEntrega()); String func = String.valueOf(revisao.getFuncionario()); if (func.equals("null")){ pStmt.setObject(3, null); }else { pStmt.setInt(3, revisao.getFuncionario().getCodFuncionario()); } String ofici = String.valueOf(revisao.getOficina()); if (ofici.equals("null")){ pStmt.setObject(4, null); }else { pStmt.setInt(4, revisao.getOficina().getCodOficina()); } pStmt.setString(5, revisao.getDescRevisao()); pStmt.setDouble(6, revisao.getValorRevisao()); pStmt.setDate(7, revisao.getDataEntrada()); pStmt.setDate(8, revisao.getDataSaida()); pStmt.setInt(9, revisao.getCodRevisao()); pStmt.executeUpdate(); //this.connection.close(); } public void inserirRevisao(Revisao revisao) throws MinhaException, SQLException, ConexaoException { this.connection = FabricaConexao.obterConexao(); try { this.connection.setAutoCommit(false); String sql = "INSERT INTO revisao (cod_locacao, cod_entrega, cod_funcionario , " + "cod_oficina, desc_revisao, valor_revisao, data_entrada, data_saida) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; PreparedStatement pStmt = this.connection.prepareStatement(sql); pStmt.setInt(1, revisao.getEntrega().getLocacao().getCodLocacao()); pStmt.setInt(2, revisao.getEntrega().getCodEntrega()); String func = String.valueOf(revisao.getFuncionario()); if (func.equals("null")){ pStmt.setObject(3, null); }else { pStmt.setInt(3, revisao.getFuncionario().getCodFuncionario()); } String oficina = String.valueOf(revisao.getOficina()); if (oficina.equals("null")) { pStmt.setObject(4, null); }else { pStmt.setInt(4, revisao.getOficina().getCodOficina()); } pStmt.setString(5, revisao.getDescRevisao()); pStmt.setDouble(6, revisao.getValorRevisao()); pStmt.setDate(7,revisao.getDataEntrada()); pStmt.setDate(8,revisao.getDataSaida()); pStmt.executeUpdate(); this.connection.commit(); } catch (SQLException erro) { this.connection.rollback(); throw new MinhaException(erro.getMessage()); } finally { this.connection.close(); } } }