Perfeito.
Para o ENum, como não encontrei nada até sua resposta eu resolvi com uma entidade. Cadastro via SQL e deixei o usuário consultar
Etapa.java
@Entity
@Getter @Setter
@Data
public class Etapa {
@Id @GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@Column(unique=true)
private String descricao;
public Etapa(){
}
public Etapa(String descricao){
this.descricao = descricao;
}
}
Para o Erro utilizei a seguinte abordagem
ErroDeValidacaoHandler.java
@ResponseStatus(code= HttpStatus.NOT_FOUND)
@ExceptionHandler(ErroConteudoNaoEncontrado.class)
public ErroDeFormularioDto handle(ErroConteudoNaoEncontrado exception){
return new ErroDeFormularioDto(exception.getCampo(), exception.getErro());
}
ErroConteudoNaoEncontrado.java
@Getter
public class ErroConteudoNaoEncontrado extends ErroGenerico{
public ErroConteudoNaoEncontrado(String campo, String erro) {
super(campo, erro);
}
}
EtapaService.java
private Etapa buscarEtapa(Long id) {
Optional<Etapa> etapa = etapaRepository.findById(id);
if (etapa.isPresent()) {
return etapa.get();
}
throw new ErroConteudoNaoEncontrado("id", "Etapa nao encontrada");
}
Assim que terminar o desafio posto o link aqui.