public LocacaoTO consultarLocaoCpf(String cpf) {
    String query =
        "select  l.id_locacao, l.id_cliente, l.id_veiculo, v.km_veiculo, l.estado_locacao, l.cidade_locacao,l.estado_devolucao, l.cidade_devolucao, l.data_horalocacao, l.data_devo, c.cpf_cliente from locacao l inner join cliente c on l.id_cliente=c.id_cliente inner join veiculo v on l.id_veiculo=v.id_veiculo where cpf_cliente= ?;";

    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    LocacaoTO to = new LocacaoTO();
    try {
      conn = ConexaoBDMysql.conectar();
      pst = conn.prepareStatement(query);

      // pst.setString(1, parametro);
      pst.setString(1, cpf);
      rs = pst.executeQuery();
      while (rs.next()) {
        Locacao loc = new Locacao();
        loc.setId_locacao(rs.getInt(1));
        loc.setId_cliente(rs.getInt(2));
        loc.setId_veiculo(rs.getInt(3));
        loc.setTarifa_locacao(rs.getString(4));
        loc.setEstado_locacao(rs.getString(5));
        loc.setCidade_locacao(rs.getString(6));
        loc.setEstado_devolucao(rs.getString(7));
        loc.setCidade_devolucao(rs.getString(8));
        loc.setData_horalocacao(rs.getString(9));
        loc.setData_devo(rs.getString(10));
        to.add(loc);
      }
    } catch (SQLException sqe) {
      sqe.printStackTrace();
    } finally {
      if (rs != null) {
        try {
          rs.close();
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
      if (pst != null) {
        try {
          pst.close();
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
      if (conn != null) {
        try {
          ConexaoBDMysql.desconectar(conn);
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
    }
    return to;
  }
  public LocacaoTO consultarLocaoNumero(int id) {
    String query = "select * from locacao where id_locacao = ?;";

    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    LocacaoTO to = new LocacaoTO();
    try {
      conn = ConexaoBDMysql.conectar();
      pst = conn.prepareStatement(query);

      // pst.setString(1, parametro);
      pst.setInt(1, id);
      rs = pst.executeQuery();
      while (rs.next()) {
        Locacao loc = new Locacao();
        loc.setId_locacao(rs.getInt(1));
        loc.setId_cliente(rs.getInt(2));
        loc.setId_veiculo(rs.getInt(3));
        loc.setTarifa_locacao(rs.getString(4));
        loc.setEstado_locacao(rs.getString(5));
        loc.setCidade_locacao(rs.getString(6));
        loc.setEstado_devolucao(rs.getString(7));
        loc.setCidade_devolucao(rs.getString(8));
        loc.setData_horalocacao(rs.getString(20));
        loc.setData_devo(rs.getString(21));
        to.add(loc);
      }
    } catch (SQLException sqe) {
      sqe.printStackTrace();
    } finally {
      if (rs != null) {
        try {
          rs.close();
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
      if (pst != null) {
        try {
          pst.close();
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
      if (conn != null) {
        try {
          ConexaoBDMysql.desconectar(conn);
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
    }
    return to;
  }
  public LocacaoTO consultarLocacaoData(String busca) {
    String query =
        "select l.id_locacao, l.id_veiculo, l.id_cliente, l.data_horalocacao, c.nome_cliente, c.cpf_cliente, v.modelo_veiculo, v.placa_veiculo, v.fabricante_veiculo from locacao l inner join cliente c on l.id_cliente=c.id_cliente inner join veiculo v on l.id_veiculo=v.id_veiculo where data_horalocacao like ?;";

    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    LocacaoTO to = new LocacaoTO();
    try {
      conn = ConexaoBDMysql.conectar();
      pst = conn.prepareStatement(query);

      // pst.setString(1, parametro);
      pst.setString(1, busca);
      rs = pst.executeQuery();
      while (rs.next()) {
        Locacao locacao = new Locacao();
        locacao.setId_locacao(rs.getInt(1));
        locacao.setModelo_veiculo(rs.getString(7));
        locacao.setPlaca_veiculo(rs.getString(8));
        locacao.setFabricante_veiculo(rs.getString(9));
        locacao.setNome_cliente(rs.getString(5));
        locacao.setCpf_cliente(rs.getString(6));
        locacao.setData_horalocacao(rs.getString(4));
        to.add(locacao);
      }
    } catch (SQLException sqe) {
      sqe.printStackTrace();
    } finally {
      if (rs != null) {
        try {
          rs.close();
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
      if (pst != null) {
        try {
          pst.close();
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
      if (conn != null) {
        try {
          ConexaoBDMysql.desconectar(conn);
        } catch (SQLException sqe) {
          sqe.printStackTrace();
        }
      }
    }
    return to;
  }
  /** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    // TODO Auto-generated method stub
    String idLocacao = request.getParameter("locacao");
    String cidadeDev = request.getParameter("cidadeDev");
    String estadoDev = request.getParameter("estadoDev");
    double total = Double.parseDouble(request.getParameter("km"));

    Especialista esp = new Especialista();
    LocacaoTO to = esp.listarDevolucaoLoc(Integer.parseInt(idLocacao));
    Locacao loc = to.getLocacao(0);
    VeiculoTO vecTO = esp.listarVeiculoId(loc.getId_veiculo());
    Veiculo vec = vecTO.getVeiculo(0);

    if (cidadeDev == loc.getCidade_devolucao() && estadoDev == loc.getEstado_devolucao()) {
      if (loc.getTarifa_locacao() == "km livre") {
        total *= vec.getKm_livre();
      } else {
        total *= vec.getKm_controlado();
      }
    } else {
      if (loc.getTarifa_locacao() == "km livre") {
        total *= vec.getKm_livre() * 1.3;
      } else {
        total *= vec.getKm_controlado() * 1.3;
      }
    }
    // inserindo a devolucao
    Devolucao dev = new Devolucao();
    dev.setCodigoLocacao(Integer.parseInt(idLocacao));
    dev.setTotal(total);
    dev.setCidade(cidadeDev);
    dev.setEstado(estadoDev);
    esp.incluirDevolucao(dev);
    esp.incluirVeiculoDisp(Integer.parseInt(idLocacao));

    request.setAttribute("total", total);
    request.setAttribute("idlocacao", idLocacao);
    request.setAttribute("cidadeDev", cidadeDev);
    request.setAttribute("estadoDev", estadoDev);
    request.setAttribute("km", request.getParameter("km"));
    RequestDispatcher view = request.getRequestDispatcher("DevolucaoPronto.jsp");
    view.forward(request, response);
  }