MeasureUnitDAOConverter
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.