Padrões e conselhos de validação de lógica de negócios
Eu tenho duas camadas de validação no meu aplicativo. Primeiro, a validação da entidade é realizada pela API de validação de bean (por exemplo, campos obrigatórios). O segundo nível é a validação da lógica de negócios. Por exemplo, o usuário tem uma postagem. O usuário pode excluir uma postagem apenas se ele for o criador e a classificação da publicação <50. Portanto, tenho que fazer algo assim:
if (post.getCreator().equals(session.getUser())) {
if (post.getRating() < 50) {
postRepository.delete(post);
} else errors.add(400, "Cant delete post with rating 50 or higher")
} else errors add (400, "You should be owner of the post")
Não gosto dessa maneira, pois essas condicionais são reutilizadas e tenho que duplicar o código. Além disso, se o número de condicionais for maior que 5, torna-se irreal ler e entender o código.
Além disso, o Spring Validator padrão não será muito útil, pois tenho que criar uma validação diferente para uma entidade em ações diferentes (excluir e atualizar, por exemplo)
Então, estou procurando uma maneira de fazer isso de uma maneira mais inteligente (talvez padrão) e ficaria muito grato se alguém pudesse me dar uma dica.
Agradeço antecipadamente!