PreProcess

De Wiki do Leitão
Revisão de 12h36min de 28 de julho de 2023 por Rodrigogml (discussão | contribs)
Ir para: navegação, pesquisa

PreProcess é uma classe estática do framework utilizada para concentrar os métodos de pré-processamento e validação de dados. Por exemplo, processar uma String removendo seus espaços iniciais e finais, e se sobrar uma string vazia, retornar nulo.

Com esses métodos simplificamos o código de tratamento das informações fornecidas pelo usuário (ou obtidas de outras fontes sem padrão).


Alguns Métodos de Pré-Processamento

Veja alguns métodos disponibilizados na classe:

  • processStringToNull(String) - Processa a string passada, removendo espaços (do começo, do final e espaços duplos entre as palavras) e convertendo para null quando a string for vazia.
  • processLongToNullIfZeroOrNegative(Long) - Processa qualquer número Long para nulo, caso seja menor ou igual a zero.
  • processCurrency(Float) - Processa qualquer número float para conter apenas duas casas decimais. Arredonda para o lado mais justo.


Veja na descrição da classe os demais métodos.


Alguns Métodos de Validação

Os métodos de validação verificam o dado passado e em caso de falha, já emitem uma exception com uma mensagem padrão do sistema, ou mensagem personalizada passada como argumento do método. Veja alguns:

  • requiredNonNull(Object, String) - Valida se o objeto passado não é nulo. Caso seja lança RFWValidationException com mensagem personalizada.
  • requiredNonNullNorEmptyCritical(Collection<T>, String) - Valida se a coleção não é nula nem vazia. Caso a validação falhe uma @link RFWCriticalException é lançada.


Geralmente os métodos se multiplicam recebendo ou não o argumento para a mensagem de exception personalizada (que pode ser tanto a mensagem direta quando o código de erro para ser procurado no Bundle, conforme regras explicadas na página de exceptions), e os métodos com o sufixo ...Critical() que ao invés de emitir uma exception RFWValidationException, emitem uma RFWCriticalException.


PreProcess no RFWMetaAnnotations

Algumas RFWMetaAnnotations tem o atributo preProcess que permite definir como queremos que o atributo seja pre-processado.

Por exemplo, a RFWMetaStringField pode ter o atributo preProcess definido como PreProcessOption.STRING_SPACESCLEAN_TO_NULL, que define que o atributo deve ter o seu conteúdo "limpo" e se resultar em uma string vazia, o valor deve ser substituído por nulo.

Uma vez definida essas opções na RFWMetaAnnotation, prodemos passar o vo inteiro para o método:

PreProcess.vo(...)

Este método procurará recursivamente no vo todas as RFWMetaAnnotations com opções de preProcess e executará o método. Simplificando muitas das tarefas de preparação do dado antes da validação.

Além de centralizar a configuração da necessidade desse processamento dos dados apenas no meta-dado do atributo.