# Manipuladores

Você pode definir manipuladores para um formulário. A ideia é permitir alguns tratamento de dados como aplicação de máscaras, modificação para maiúsculas ou minúsculas, remoção de caracteres indesejados, etc.

Esses manipuladores são definidos como scripts em BeanShell e serão executados imediatamente antes que os dados de um formulário renderizado sejam salvos.&#x20;

Nas seções subsequentes você verá como criar, editar e remover manipuladores de um formulário.

## Criando um manipulador

Um manipulador de um formulário pode ser criado a qualquer momento e você deverá seguir os passos:

1. Autentique-se no **Admin console**
2. Acione o menu **Plataforma > Workspace > Geral > Formulários**
3. Busque pelo formulário que se deseja criar um **Manipulador**, e clique na linha do mesmo
4. Na página de detalhamento do formulário, acesse a aba **Campos**
5. Clique no ícone de **Manipuladores** (ver figura abaixo)
6. Na caixa de diálogo, clique no botão **Novo**&#x20;
7. Preencher os campos **Descrição** e **Script**&#x20;
8. Acione o botão **Salvar**

![Ícone de manipuladores de um formulário.](https://content.gitbook.com/content/tzOrwUrFQeF97y2Cxtpr/blobs/AvhOok6iTzgLTJ9FmU2e/secao05.png)

## Editando um manipulador

Um manipulador de um formulário pode ser editado a qualquer momento e você deverá seguir os passos:

1. Autentique-se no **Admin console**
2. Acione o menu **Plataforma > Workspace > Geral > Formulários**
3. Busque pelo formulário que se deseja editar um **Manipulador**, e clique na linha do mesmo
4. Na página de detalhamento do formulário, acesse a aba **Campos**
5. Clique no ícone de **Manipuladores** (ver figura abaixo)
6. Selecione o **manipulador** que deseja editar
7. Editar os campos **Descrição** e **Script**&#x20;
8. Acione o botão **Salvar**

![Ícone de manipuladores de um formulário.](https://content.gitbook.com/content/tzOrwUrFQeF97y2Cxtpr/blobs/AvhOok6iTzgLTJ9FmU2e/secao05.png)

## Removendo um manipulador

Um manipulador de um formulário pode ser removido a qualquer momento e você deverá seguir os passos:

1. Autentique-se no **Admin console**
2. Acione o menu **Plataforma > Workspace > Geral > Formulários**
3. Busque pelo formulário que se deseja remover um **Manipulador**, e clique na linha do mesmo
4. Na página de detalhamento do formulário, acesse a aba **Campos**
5. Clique no ícone de **Manipuladores** (ver figura abaixo)
6. Selecione os **manipuladores** que serão removidas
7. Acione o botão **Remover**

![Ícone de manipuladores de um formulário.](https://content.gitbook.com/content/tzOrwUrFQeF97y2Cxtpr/blobs/AvhOok6iTzgLTJ9FmU2e/secao05.png)

## Serviços disponíveis para um manipulador

Os manipuladores de um formulário, são definidos de fato, com base em scripts BeanShell.&#x20;

Esses scripts serão executados pelo Blazon imediatamente antes de salvar os dados de um formulário que foi previamente renderizado.

Assim você pode implementar manipuladores sobre os dados do formulário. Juntamente com essa funcionalidade o Blazon disponibiliza 3 serviços injetados no sistema de execução dos scripts que permitem algumas operações sobre os dados do diretório do Blazon.

Os serviços são:

| Serviço             | Descrição                                                                              |
| ------------------- | -------------------------------------------------------------------------------------- |
| accountService      | Permite operações de busca sobre as contas do diretório do Blazon.                     |
| userService         | Permite operações de busca sobre os usuários do diretório do Blazon.                   |
| organizationService | <p>Permite operações de busca sobre as organizações</p><p> do diretório do Blazon.</p> |

&#x20;Cada um dos serviços acima citados disponibilizam uma interface com algumas operações.&#x20;

### Serviço de contas (accountService)&#x20;

As operações do serviço "accountService", são:

| Operação                                           | Descrição                                                                                         |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| Boolean existAccount(Map\<String, Object> params); | À partir de um conjunto de parâmetros, verifica a existência de uma conta no diretório do Blazon. |

### Serviço de usuários (userService)

As operações do serviço "userService", são:

| Operação                                                            | Descrição                                                                                          |
| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| List\<Map\<String, String>> findUsers(Map\<String, Object> params); | À partir de um conjunto de parâmetros retorna uma lista de usuários do diretório do Blazon.        |
| Boolean existUser(Map\<String, Object> params);                     | À partir de um conjunto de parâmetros, verifica a existência de um usuário no diretório do Blazon. |

### Serviços de organizações (organizationService)

As operações do serviço "organizationService", são:

| Operação                                                                                | Descrição                                                                                                                    |
| --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Boolean existUserInOrganization(String username, String organizationName, String type); | Com base no nome de usuário, nome da organização e tipo da organização, verifica se um usuário faz parte de uma organização. |
| List\<Map\<String, String>> findOrganizations(Map\<String, Object> params);             | À partir de um conjunto de parâmetros retorna uma lista de organizações do diretório do Blazon.                              |
| List\<Map\<String, String>> findOwners(String organizationName, String type);           | Com base no nome da organização e no tipo da organização, retorna a lista de donos/gerentes da organização.                  |

### Exemplo de um script de manipulação

Abaixo tem-se um exemplo de um script de manipulação usando algumas operações dos serviços disponibilizados:

```java
params = new java.util.HashMap();
params.put("cpf",cpf);
existUser = userService.existUser(params);
try {
			
  String pattern = "###.###.###-##";
  javax.swing.text.MaskFormatter mask = new javax.swing.text.MaskFormatter(pattern);
  mask.setValueContainsLiteralCharacters(false);
  cpfFormatado = mask.valueToString(cpf);
  return cpfFormatado;

} catch (Exception e) {
  //nothing here
}
```
