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