Mudanças entre as edições de "PreProcess"
Linha 14: | Linha 14: | ||
Veja na descrição da classe os demais métodos. | Veja na descrição da classe os demais métodos. | ||
Linha 28: | Linha 27: | ||
= 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: | |||
<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 das 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 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.