Mudanças entre as edições de "PreProcess"

De Wiki do Leitão
Ir para: navegação, pesquisa
 
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
'''PreProcess''' é uma classe estática do framework utilizada para concentrar os métodos de pré-processamento de informações. Esta classe permite processar os dados antes de valida-los. Por exemplo, processar uma String removendo seus espaços iniciais e finais, e se sobrar uma string vazia, retornar nulo.
'''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).
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).




= PreProcess RFWVO =
== Alguns Métodos de Pré-Processamento ==


Esta classe também é capaz de processar as informações dentro de um VO que faça parte da estrutura do [[RFWVO]]. Analisando cada um dos seus atributos recursivamente e validando conforme as instruções das [[RFWMetaAnnotations]]
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 [[RFWMetaAnnotations]], prodemos passar o vo inteiro para o método:
<pre>PreProcess.vo(...)</pre>
 
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.

Edição atual tal como às 12h36min de 28 de julho de 2023

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 RFWMetaAnnotations, 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.