estou fazendo o desafio final porem me deparei com um problema, que ja quebrei bastante a cabeça mas nao to conseguindo passar, na hora de cadastrar uma musica, acontece que por exemplo legiao urbana -tempo perdido ai ok vou cadastrar outro cantor charlie brown exemplo musica ceu azul o ultimo cantor cadastrado duplica a musica de cima ficando charlie brown - tempo perdido e charlie brown ceu azul, e o antior cria normal não sei onde esta o erro kkk alguem me ajuda porfavor
package br.com.alura.desafioJPA.Principal;
import br.com.alura.desafioJPA.Model.Artista;
import br.com.alura.desafioJPA.Model.Genero;
import br.com.alura.desafioJPA.Model.Musica;
import br.com.alura.desafioJPA.Service.Repositorio;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.*;
import java.util.stream.Collectors;
public class Principal {
Scanner sc = new Scanner(System.in);
Artista artista;
List<Artista> artistalist = new ArrayList<>();
List<Musica> musicaList = new ArrayList<>();
Musica musica;
Repositorio repositorio;
Artista aristaencontrado;
public Principal(Repositorio repositorio) {
this.repositorio = repositorio;
}
public void exibeMenu(){
var opcao = -1;
while (opcao!=0){
var menu = """
*********** Screen Sound Musicas *******************
1 - Cadastrar Artista
2 - listar artistas cadastrados
3 - Cadastrar músicas
4 - Listar músicas
5 - Buscar músicas por Artistas
6 - pesquisar sobre um Artista
0 - Finalizando aplicação
""";
System.out.printf(menu);
opcao = sc.nextInt();
sc.nextLine();
switch (opcao){
case 1:
cadastrarArtista();
break;
case 2:
listarArtistasCadastrados();
break;
case 3:
cadastrarMusicas();
break;
case 4:
listarMusicasCadastradas();
break;
case 0:
System.out.printf("Saindo....");
break;
}
}
}
private void cadastrarArtista() {
System.out.println("digite o nome do artista que deseja Cadastrar: ");
var nome = sc.nextLine();
System.out.println("informe a idade do artista: ");
var idade = sc.nextInt();
sc.nextLine();
System.out.println("informe a nacionalidade do artista: ");
var nacionalidade = sc.nextLine();
System.out.println("genero musical: ");
Genero genero = Genero.fromString(sc.nextLine());
artista = new Artista(nome,idade,nacionalidade,genero);
artistalist.add(artista);
repositorio.save(artista);
}
private void listarArtistasCadastrados() {
artistalist = repositorio.findAll();
artistalist.stream()
.sorted(Comparator.comparing(Artista::getNome))
.map(s -> s.getNome().toLowerCase())
.forEach(System.out::println);
}
private void cadastrarMusicas() {
System.out.println("Digite o nome do artiste que deseja cadastrar uma musica: ");
var nomeCantor = sc.nextLine();
Optional<Artista> artista1 = artistalist.stream()
.filter(s -> s.getNome().toLowerCase().contains(nomeCantor.toLowerCase()))
.findFirst();
if (artista1.isPresent()){
aristaencontrado = artista1.get();
System.out.println("nome da musica");
var nomeMusica = sc.nextLine();
System.out.println("nome do album");
var nomeAlbum = sc.nextLine();
System.out.println("ano de lancamento");
var anoDelancamento = sc.nextInt();
sc.nextLine();
musica = new Musica(nomeAlbum,nomeMusica,anoDelancamento,aristaencontrado);
musicaList.add(musica);
aristaencontrado.setMusicaList(musicaList);
repositorio.save(aristaencontrado);
}else {
System.out.println("cantor não cadastrado em nosso banco de dados tente novamente!!");
}