MeasureUnitDAOConverter

De Wiki do Leitão
Revisão de 12h29min de 28 de julho de 2023 por Rodrigogml (discussão | contribs) (Criou página com 'O '''MeasureUnitDAOConverter''' é um converter fornecido para permitir a persistência de objetos do tipo '''MeasureUnit''' pelo RFW ORM. Para saber mais sobre a '''MeasureUnit''' veja a documentação do MeasureRuler oferecido pelo RFW Kernel. = Funcionamento = Por a '''MeasureUnit''' ser uma interface o RFW ORM não sabe como persistir, nem como qual objeto criar durante a recuperação a partir do banco de dados. Essa interface generaliza todas as enumerati...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

O MeasureUnitDAOConverter é um converter fornecido para permitir a persistência de objetos do tipo MeasureUnit pelo RFW ORM.

Para saber mais sobre a MeasureUnit veja a documentação do MeasureRuler oferecido pelo RFW Kernel.


Funcionamento

Por a MeasureUnit ser uma interface o RFW ORM não sabe como persistir, nem como qual objeto criar durante a recuperação a partir do banco de dados.


Essa interface generaliza todas as enumerations de unidades de medidas (de diferentes MeasureDimensions) em uma única interface. Além disso ainda permite a criação de objetos dinâmicos (unidades de medidas personalizados) sob a mesma interface.


Para o Banco da Dados

No banco de dados o é esperada uma coluna varchar para salvar enumerations. No padrão do RFW será uma varchar(50), mas o tamanho pode ser adaptado conforme sua aplicação. Quando a MeasureUnit for uma enumeration, o nome da MeasureUnit do objeto será salvo diretamente.

Para os objetos personalizados, que costumam ter apenas dois atributos: Nome e Símbolo da unidade de medida personalizado, será salvo no formato:

"#" + value.getSymbol() + "|" + value.name()


Para o Objeto

Ao recuperar a string do banco de dados, a classe verifica a existência do carácter de controle "#" no início da string. Se encontrado, fazermos o parser dos valores e criamos um objeto CustomMeasureUnitGeneric (que implementa a interface) para definir no VO.

Se não encontramos o carácter de controle na String, utilizamos o método MeasureRuler.valueOf(...), que procura entre todas as Unidades de Medida das diferentes Dimensões fornecidas pelo enum correto e definimos no objeto.