Como se declara um alias para um tipo de dados?
07/03/2015 12:10
0
Olá amigos,

Preciso saber como se declara um alias para um determinado tipo de dados.

Por exemplo

Utilizar char50 ---- e a aplicação entender que se trata de um type:char de tamanho 50.

Utilizar char03 --- e a aplicação entender que se trata de um type:char de tamanho 3.

etc.

Obrigado!
Tags: char;alias;types;user type;


0
Oi Pedro,

neste caso você vai precisar contar com o seu próprio banco de dados para obter este resultado. No Firebird, por exemplo, você tem um recurso chamado "domain" que é justamente para isto. Muito usado para padronizar tipos de dados em uma aplicação.

Então, por exemplo, você teria um "domain" chamado dinheiro para representar um campo do tipo decimal(10,3). Apenas um exemplo.

Neste caso, você pode usar a customização de mapeamento do próprio Grails. Primeiro declare o domain no seu SGBD e em seguida, na customização das suas tabelas, forneça o atributo sqlType, tal como no exemplo a seguir:


class ExemploDinheiro {
BigDecimal valor

static mapping = {
valor sqlType:'dinheiro'
}
}


0
Olá Kiko,

O meu objetivo é reconhecer no _form.gsp do src/templates/scaffolding o tipo 'dinheiro' e não 'BigDecimal'.

Porém quando verifico a propriedade da coluna "Valor" o retorno é o seguinte:

[DefaultGrailsDomainClassProperty@5c15b042 name = 'valor', type = BigDecimal, persistent = true, optional = false, association = false, bidirectional = false, association-type = [null]]

Será que podemos avançar neste assunto?

21/03/2015 12:04


1
Oi Pedro,

neste caso, acredito que a coisa será um pouco mais complexa, pois vai além da implementação atual do plug-in scaffold.

O que dá para fazer neste caso é customizar o seu scaffold, o que acha? Basta que você execute o comando "grails install templates" e customizar os arquivos que serão instalados no diretório src do seu projeto.


1
Olá Kico,

Realmente a coisa é mais complexa, porém muito útil.

Na verdade eu já estou customizando meu scaffolding... é por isso que preciso de um tipo particular de dados: para apresentá-lo no html de forma especial.

No exemplo que você deu, eu pesquisei e encontrei algo muito útil (veja os links abaixo).

A ideia geral apresentada é a criação de uma classe "Dinheiro" que estenda a classe "java.math.BigDecimal". Este primeiro ponto ficou bem legal, pois o scaffold entendeu que o tipo de dado é "Dinheiro" e não "BigDecimal".

No meu exemplo eu ainda não estou criando uma forma special de apresentação, apenas queria que o scaffold entendesse o "type" - ok. Embora ele tivesse entendido esta parte, a aplicação não entendeu como pegar um string (por exemplo "120") e convertê-lo em Dinheiro que estende BigDecimal. Quando vou salvar meu registro recebo a seguinte mensagem: "Cannot convert String [120] to target class [Dinheiro]."

Há outros passos que tive que seguir para tentar fazer o aplicativo entender o resto da questão. Todos estes passos encontram-se documentados nos links que passo abaixo.

Continuo na pesquisa!

Referências:

1) Grails-Hibernate Custom Data Type Mapping

http://omaha-seattle.blogspot.com.br/2010/02/grails-hibernate-custom-data-type.html

2) Grails Custom Data Binding in 3 Simple Steps

http://www.intelligrape.com/blog/grails-custom-data-binding-in-3-simple-steps/

3) Custom Grails Property Editor

http://omaha-seattle.blogspot.com.br/2010/02/custom-grails-property-editor.html

Obrigado pela força!



22/03/2015 10:04


1
Oi Paulo, eu que agradeço.

No caso, eu ia te passar o link da documentação do Grails sobre custom data binding, que é exatamente o que você precisa neste caso.

Aí você conseguiria resolver este seu problema. Posso te pedir um favor? Esta sua experiência é fascinante. Depois você pode publicar um texto a respeito? Pode ser tanto no Grails Brasil quanto em um novo site que estou projetando para ser lançado nos próximos meses.


0
Olá Kiko.

Certamente, obrigado pelo convite.

Por favor, você pode me passar o link com a documentação sobre o Data Binding. Preciso resolver logo esta questão.

Caso eu não consiga andar bem, você poderia dar uma olhada no que estou fazendo?

Abraço!

22/03/2015 13:25


0
Claro Pedro, segue o link: http://grails.github.io/grails-doc/2.4.4/guide/theWebLayer.html#dataBinding

É a seção "Custom Data Converters"



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto