Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

[Projeto] [DESAFIO] Evolução Projeto

Estava evoluindo o projeto para melhorar meu portifólio, enquanto criava a classe ArtistaServicTest para testar os métodos tive a ideia de melhorar o cadastro de artistas criado validações. Decidi então criar o pacote de validações e a classe ArtistaValidator para validar se o artista é único e se os campos nome e gênero foram preenchidos. Abaixo segue a classe para exemplificar:

package br.com.alura.exercicios.my_musics.validacoes;

import br.com.alura.exercicios.my_musics.DTO.ArtistaDTO;
import br.com.alura.exercicios.my_musics.Exception.DuplicateResourceException;
import br.com.alura.exercicios.my_musics.Exception.ResourceNotFoundException;
import br.com.alura.exercicios.my_musics.Models.Artista;
import br.com.alura.exercicios.my_musics.Models.Genero;
import br.com.alura.exercicios.my_musics.Repository.ArtistaRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class ArtistaValidator {

    @Autowired
    private ArtistaRepository repository;

    public void validarArtista(ArtistaDTO dto){

        validarNome(dto.getNome());
        validarGenero(dto.getGenero());
        validarUnico(dto.getNome());

    }

    private void validarUnico(String nome) {

        if (repository.existsByNomeEqualsIgnoreCase(nome)){
            throw new DuplicateResourceException("Artista já cadastrado!");
        }
    }


    private void validarGenero(Genero genero) {

        if(genero == null ){
            throw new ResourceNotFoundException("Gênero não pode ficar em branco!");
        }
    }

    private void validarNome(String nome) {

        if (nome.isBlank()){

            throw new ResourceNotFoundException("É necessário inserir nome!");
        }
    }


}

Segue repositório com o projeto completo: https://github.com/TheV1k/my-music