1
resposta

DESAFIO CONCLUIDO

Métodos:

private void cadastraArtista() {
        var cadastrarNovo = "S";

        while (cadastrarNovo.equalsIgnoreCase("S")) {

            System.out.println("Digite o nome do artista: ");
            var nomeArtista = scan.nextLine();


            System.out.println("Informe: SOLO | DUPLA | BANDA");
            var tipo = scan.nextLine();


            TipoArtista tipoArtista = TipoArtista.valueOf(tipo.toUpperCase());

            Artista artista = new Artista(nomeArtista, tipoArtista);
            repositoryArtista.save(artista);

            System.out.println("Cadastrar outro artista? (S/N)");
            cadastrarNovo = scan.nextLine();
        }

    }


    private void cadastraMusica() {

        var cadastrarNovo = "S";

        while (cadastrarNovo.equalsIgnoreCase("S")) {
            List<Artista> listaArtistas = repositoryArtista.findAll();
            System.out.println("Lista de artistas:");
            listaArtistas.forEach(a -> System.out.println(
                    a.getTipo() + " | " + a.getNome()
            ));

            System.out.println("Selecione o artista: ");
            var nomeArtista = scan.nextLine();

            Optional<Artista> artistaBuscado = repositoryArtista.escolheArtista(nomeArtista);

            if (artistaBuscado.isPresent()) {
                System.out.println("Digite o nome da música:");
                var nomeMusica = scan.nextLine();


                System.out.println("Digite a duração da música: (M:ss)");
                var duracaoMusica = scan.nextLine();

                System.out.println("Digite o album da música:");
                var albumMusica = scan.nextLine();

            Musica musica = new Musica(nomeMusica, duracaoMusica, albumMusica, artistaBuscado);
            repositoryMusica.save(musica);

                System.out.println("Cadastrar outro artista? (S/N)");
                cadastrarNovo = scan.nextLine();
            }
            else {
                System.out.println("Artista não encontrado tente novamente.");
                }
        }

    }

    private void listaMusicas() {

        List<Artista> artistas = repositoryArtista.findAll();

        artistas.forEach(a-> {
            System.out.println("\nArtista: " + a.getNome());

            a.getMusicas().forEach(m -> System.out.println(" - " + m.getNome()+ " (Album: " + m.getAlbum() + ", duração: " + m.getDuracao() + ")"));
        });
    }


    private void buscaMusicasArtistas() {
        System.out.println("Digite o artista para ter acesso as musicas: ");
        var artistaBuscado = scan.nextLine();

        Optional<Artista> artista = repositoryArtista.escolheArtista(artistaBuscado);

        if (artista.isPresent()) {
            Artista artista1 = artista.get();
            List<Musica> musicas = artista1.getMusicas();

            if (musicas.isEmpty()){
                System.out.println("Esse artista não tem músicas cadastradas.");
            } else {
                System.out.println("Artista: " + artista1.getNome() + " | " + artista1.getTipo());
                musicas.forEach(m -> System.out.println(" - " + m.getNome()+ " (Album: " + m.getAlbum() + ", duração: " + m.getDuracao() + ")"));
            }
        } else {
            System.out.println("Artista não encontrado!");
        }

    }

    private void pesquisaSobreArtista() {
        System.out.println("Digite o artista para ter acesso as musicas: ");
        var artistaBuscado = scan.nextLine();

        Optional<Artista> artista = repositoryArtista.escolheArtista(artistaBuscado);

        if (artista.isPresent()) {
            System.out.println("Informações do artista:\n" + ConsultaGemini.consulta(artistaBuscado));
        } else {
            System.out.println("Artista não encontrado no Banco de Dados");
        }

    }
1 resposta

Oi, Diego! Tudo bom?

Excelente! Siga praticando com os desafios e sempre compartilhe conosco.

Você soube aplicar o loop while de forma eficiente, aproveitou o uso do Optional para tratar buscas que podem não retornar resultados e entendeu como o encadeamento de leitura com o Scanner é essencial para coletar dados do usuário em múltiplas etapas.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!