Introdução ao UIFactory
O UIFactory é uma classe estática do BIS quer facilita a criação e integração dos componentes do Vaadin baseando na estrutura do framework do BIS.
Há duas maneiras diferentes de utilizar a UIFactory:
- Métodos Estáticos - Os métodos estáticos do UIFactory tem funções variadas se resumem à tarefas simples como uma "macro". Têm a finalidade de criar ou configurar um componente do Vaadin para ser colocado na tela. Muitas vezes são linhas que se repetem para definir o padrão visual do BIS. Ao utilizar um método estático do UIFactory deixamos o código mais legível e centralizamos essas configurações.
- Instanciando a UIFactory - Ao instanciar uma UIFactory com um VO, a UIFactory consegue disponibilizar diversos métodos para integrar o VO aos componentes do Vaadin. Permite criar blocos de tela "padrão" da aplicação. Por exemplo, cria campos já interligados aos atributos do VO (fazendo um BIND entre campo do Vaadin e atributo do VO), criar campos de filtros, gerar o BISMO a partir do conteúdo dos campos de filtro, etc.
Métodos Estáticos
Campos Genéricos
createField*
O método createField*(...) cria campos do Vaadin em que sejam possíveis exibir a informação de um determinado atributo. Por isso recebem a classe do VO e a informação do atributo, além de outros parâmetros de configuração do padrão visual do BIS.
![]() |
|
![]() |
|
applyBISDataFormatter()
Este método inclui um listener no evento onBlur() do componente que aplica um BISDataFormatter sempre que o usuário deixar o campo. Desta forma é possível manter o conteúdo de um Field formatado mesmo que o usuário coloque as informações "de qualquer jeito". Por exemplo, para manter valores com determinada precisão de casas decimais, para aplicar pontuação em um CPF/CNPJ, etc.
![]() |
|
bind*
Os métodos de BIND permitem que um campo do Vaadin seja "conectado" em um atributo do VO diretamente. Desta forma quando o Bind é feito, o valor do VO é sincronizado no campo da tela. E sempre que o usuário alterar o valor no campo, este será automaticamente processado e atribuído no VO. Assim o VO está sempre com os dados que o usuário digitou.
![]() |
|
Há 2 métodos de Bind estáticos. Um é genérico, permite associar qualquer campo criado à qualquer Bean do java. O outro é específico para BISVO. A diferença entre um e outro é que algumas informações sobre o atributo são tirados diretamente da BISMetaAnnotation. Simplificando o código e mantendo centralizadas as configurações do atributo.
Grids
O UIFactory tem métodos para auxiliar na criação e manipulação de Grids. Esses métodos são explicados junto com a documentação sobre Grid.
Automação pelo UIFactory
Ao instanciar o UIFactory, é possível utiliza-lo para automatizar diversas funcionalidades das "telas" do sistema.
Para instanciar é necessário passar um VO, ou pelo menos a classe do VO e posteriormente definir a instância do VO pelo método setVO().
Ao fazer isso o UIFactory oferecerá vários métodos para automatizar sua manipulação.
Manipulação do VO
createVOField*()
Os métodos createVOField() criam campos utilizando os métodos estáticos de createField*(). No entanto já é feito o bind entre o campo e o VO atribuído na instância do UIFactory.
Todo campo criado por este método é registrado dentro do UIFactory para manipulações futuras.
createVOField_Custom()
Este método permite que um componente criado manualmente (fora do UIFactory), seja vinculado à um atributo de um VO. Ao chamar este método e passar o componente criado, o componente ficará registrado e passará a ser manipulado igualmente pelo UIFactory como os campos criados internamente.
getVOField()
Uma vez criado o campo pelos métodos createVOField*(), o campo pode ser recuperado pelo UIFactory através do método getVOField() passando o caminho do atributo do VO. Evitando assim que os todos os campos precisem ter uma referência de classe para ser encontrado por diferentes partes do sistema. Será necessário, no caso, apenas que a instância da UIFactory esteja disponível.
reloadVOField()
Este método faz com que os valores do VO seja recarregado no campo correspondente.
reloadVOField_All()
Este método copia o valor do VO para todos os campos registrados no UIFactory de uma única vez.
Automatização do BISMO
O UIFactory permite criar campos baseado nos atributos do VO para realizar filtros e buscas. Em geral essa funcionalidade é utilizada para aplicação de filtros em telas de listagem com Grid.
createMOField*()
Este métodos criam campos para serem utilizados na aplicação de filtros do atributo. Os campos retornados devem ser exibidos no layout da janela para entrada de dados do usuário.
Todos os campos criados por este método ficam registrados no UIFactory, e seus valores serão utilizados para a criação do BISMO do método createBISMO().
createMOField_Custom()
Este método permite que um campo seja feito manualmente pelo desenvolvedor, e ainda assim ser registrado como um campo de filtro para o BISMO.
Ao utilizar este método é necessário passar um listener, que será chamado para que o conteúdo desse campo gere o filtro necessário no BISMO. O listener é chamado toda vez que o método createBISMO() for chamado para recuperar o BISMO.
createBISMO()
Este método cria um BISMO já populado com os filtros utilizando os valores dos campos de MO. Esse BISMO pode ser utilizado para solicitação direta no banco de dados dos objetos correspondentes.
baseBISMO
O Base BISMO é um BISMO que pode ser colocado como base do BISMO criado pelo createBISMO(). Ou seja, é possível colocar um BISMO que servirá de base para o BISMO criado pelo createBISMO(). Esse BISMO de base é clonado toda vez, e colocados os filtros adicionais gerados pelos conteúdos dos combos.
Esse recurso é funcional quando queremos que um filtro esteja sempre ativo na listagem, como por exemplo esconder itens que não são excluídos, mas estão desabilitados.