// Verificar como ficará o atributo data_cancelamento neste método, somente
  // incluir, quando for alterado de ativo
  // para cancelado
  public boolean altera(Parque parque) {
    String sql =
        "UPDATE parque SET status_acordo = ?, data_cancelamento = ? WHERE contrato_terminal_id_terminal = ? AND "
            + "contrato_cliente_id_cliente = ? AND politica_comercial_id_politica = ?";

    try {
      stmt = connection.prepareStatement(sql);
      stmt.setString(1, parque.getStatusContrato().name());
      stmt.setDate(2, new Date(parque.getDataCancelamento().getTimeInMillis()));
      stmt.setLong(3, parque.getTerminal().getId());
      stmt.setLong(4, parque.getCliente().getId());
      stmt.setLong(5, parque.getPolitica().getId());
      stmt.execute();
      return true;
    } catch (SQLException e) {
      throw new RuntimeException(e.getMessage());
    } finally {
      DaoUtil.fecha(stmt, rs);
    }
  }
  /**
   * @author Diego Parente
   *     <p>Este método adiciona um Parque no banco de dados. Retorna um boolean para facilitar os
   *     testes no JUnit.
   * @param Parque Objeto Parque
   * @return boolean Retorno do método que serve para validar a operação
   */
  public boolean adiciona(Parque parque) {
    String sql =
        "INSERT INTO parque (contrato_terminal_id_terminal, contrato_cliente_id_cliente,"
            + " politica_comercial_id_politica, status_acordo, data_registro) VALUES(?,?,?,?,?)";

    try {
      stmt = connection.prepareStatement(sql);
      stmt.setLong(1, parque.getTerminal().getId());
      stmt.setLong(2, parque.getCliente().getId());
      stmt.setLong(3, parque.getPolitica().getId());
      stmt.setString(4, parque.getStatusContrato().name());
      stmt.setDate(5, new Date(parque.getDataRegistro().getTimeInMillis()));
      stmt.execute();
      return true;
    } catch (SQLException e) {
      throw new RuntimeException(e.getMessage());
    } finally {
      DaoUtil.fecha(stmt, rs);
    }
  }
  /**
   * @author Diego Parente
   * @param id Parametro que representa o ID do Parque no Banco de Dados
   * @return Parque O método retornará um objeto Parque ao seu chamador
   */
  public Parque busca(Parque parque) {
    String sql =
        "SELECT * FROM parque WHERE contrato_terminal_id_terminal = ? AND "
            + "contrato_cliente_id_cliente = ? AND politica_comercial_id_politica = ?";
    try {
      stmt = connection.prepareStatement(sql);
      stmt.setLong(1, parque.getTerminal().getId());
      stmt.setLong(2, parque.getCliente().getId());
      stmt.setLong(3, parque.getPolitica().getId());
      rs = stmt.executeQuery();

      if (rs.next()) {
        return this.populaParque(rs);
      } else {
        throw new RegistroNaoLocalizadoException(parque);
      }
    } catch (SQLException e) {
      throw new RuntimeException(e.getMessage());
    } finally {
      DaoUtil.fecha(stmt, rs);
    }
  }
  /**
   * @author Diego Parente
   *     <p>Este método retora uma lista de parques
   * @return List<Parque> Uma Lista de Parques
   */
  public List<Parque> lista() {
    String sql = "SELECT * FROM parque";
    List<Parque> parques = new ArrayList<>();

    try {
      stmt = connection.prepareStatement(sql);
      rs = stmt.executeQuery();

      while (rs.next()) {
        parques.add(populaParque(rs));
      }

      if (!parques.isEmpty()) {
        return parques;
      } else {
        throw new ListaVaziaException(parques);
      }
    } catch (SQLException e) {
      throw new RuntimeException(e.getMessage());
    } finally {
      DaoUtil.fecha(stmt, rs);
    }
  }