Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Minha forma em que implementei uma busca por uma conta especifica

Primentamente adicionei no menu a busca por apenas uma conta:

public static void main(String[] args) {
        var opcao = exibirMenu();
        while (opcao != 8) {
            try {
                switch (opcao) {
                    case 1:
                        listarContas();
                        break;
                    case 2:
                        abrirConta();
                        break;
                    case 3:
                        encerrarConta();
                        break;
                    case 4:
                        consultarSaldo();
                        break;
                    case 5:
                        realizarSaque();
                        break;
                    case 6:
                        realizarDeposito();
                        break;
                    case 7: //lista apenas uma conta
                        listarUmaConta();
                        break;

                }
            } catch (RegraDeNegocioException e) {
                System.out.println("Erro: " +e.getMessage());
                System.out.println("Pressione qualquer tecla e de ENTER para voltar ao menu");
                teclado.next();
            }
            opcao = exibirMenu();
        }

        System.out.println("Finalizando a aplicação.");
    }
private static int exibirMenu() {
        System.out.println("""
                BYTEBANK - ESCOLHA UMA OPÇÃO:
                1 - Listar contas abertas
                2 - Abertura de conta
                3 - Encerramento de conta
                4 - Consultar saldo de uma conta
                5 - Realizar saque em uma conta
                6 - Realizar depósito em uma conta
                7 - Listar uma conta
                8 - Sair
                """);
        return teclado.nextInt();
    }
    

Em seguinda implementei a função passando o numero da conta que desejo e chamo a classe ContaService e chamo o metodo listaUmaConta():

 private static void listarUmaConta(){
        System.out.println("Digite o número da conta:");
        var numeroDaConta = teclado.nextInt();
        
        //aqui chamo o service em que tem a função de listar a conta especifica
        var conta = service.listarUmaConta(numeroDaConta);
        System.out.printf(String.valueOf(conta));
        System.out.println("Pressione qualquer tecla e de ENTER para voltar ao menu principal");
        teclado.next();
    }

Aqui é a implementação do metodo que chama a conexao e retorna a conta implementado o a Classe ContaDao com o metodo buscaUmaConta():

public Conta listarUmaConta(Integer numeroConta){

        Connection conn = connection.recuperarConexao();
        return new ContaDao(conn).buscarUmaConta(numeroConta);
    }

E aqui é o ultimo trecho que faz a busca da conta e torna a conta:

public Conta buscarUmaConta(Integer numConta){
        PreparedStatement ps;
        ResultSet resultSet ;
        Set<Conta> contas = new HashSet<>();
        Conta conta = null;
        // Declaração da instrução SQL para selecionar todas as contas
        String sql = "SELECT * FROM conta";

        try {
            // Preparação da instrução SQL para execução
            ps = conn.prepareStatement(sql);
            // Execução da instrução SQL e obtenção do resultado
            resultSet = ps.executeQuery();

            // Iteração sobre os resultados do ResultSet
            while (resultSet.next()) {
                // Recuperação dos dados da conta a partir do ResultSet
                Integer numero = resultSet.getInt(1);
                BigDecimal saldo = resultSet.getBigDecimal(2);
                String nome = resultSet.getString(3);
                String cpf = resultSet.getString(4);
                String email = resultSet.getString(5);

                if (numConta == numero){
                    
                    // Criação de um objeto DadosCadastroCliente a partir dos dados recuperados
                    DadosCadastroCliente dadosCadastroCliente = new DadosCadastroCliente(nome, cpf, email);

                    // Criação de um objeto Cliente a partir dos dados de cadastro do cliente
                    Cliente cliente = new Cliente(dadosCadastroCliente);

                    // variavel de conta recebe a conta encontrada
                    conta = new Conta(numero, cliente);

                }else{
                    System.out.printf("Conta nao encontradas");
                }

            }
            resultSet.close();
            ps.close();
            conn.close();
        } catch (SQLException e) {
            // Lançamento de uma exceção em caso de erro ao executar a instrução SQL
            throw new RuntimeException(e);
        }


        return conta;
    }
1 resposta
solução!

Oii José, tudo bem?

Primeiramente, parabéns pelo esforço em implementar a busca de uma conta específica! Seu código está bem organizado e fácil de entender.

Muito obrigada por compartilhar com a gente.

Um abraço e bons estudos.