Pesquisa e relacionamento de entities
31/03/2009 00:00
0
Saudações,

esta é minha primeira mensagem no fórum. Conheci o grails na revista Java Magazine e depois nos videos do Kico Lobo do site da Devmedia (bom trabalho, Kico). Estou fazendo alguns laboratórios e, consequentemente, começam a surgir algumas dúvidas.

A primeira é em relação a maneira que o grails gera, por padrão, a forma de selecionar um objeto relacionado a outro. Por padrão o grails gera uma combobox onde eu seleciono o objeto. Isso funciona muito bem para listas pequenas, mas quando a lista onde vou pesquisar é composta por centenas e/ou milhares de registros? Imaginemos a inclusão de um pedido, informando o cliente. Posso ter centenas de milhares de clientes cadastrados. Uma combobox não funcionaria, tampouco aquele plugin que usa ajax para ir pesquisando a cada letra digitada (cada letra dispararia uma consulta contra o banco).

Atualmente faço isso usando uma tela de consulta para fazer um filtro, seleção e "trazer de volta" o objeto selecionado. No desktop abro uma tela modal sobre a tela de cadastro, na web abro um modal panel (usando JSF).

Procurei na lista de plugins e no google de uma forma geral (não fui feliz na minha string de busca, eu creio) por algum plugin do grails que simplificasse essa tarefa e encontrei alguns que fazem parte do serviço: modalBox abre um painel modal (cool), filter Pane faz o filtro sobre uma entidade (great) e o searchable usa o Lucene para indexar entities (talvez nem precise tanto, acho que um simples SQL mataria). Mas eu gostaria de algo que integrasse os três em uma coisa só.

Não basta resolver o problema uma vez, gostaria de automatizar isso para se tornar simples de replicar o processo para outros use cases similares (e tenho muitos desses).

Então, dado este cenário, vocês conhecem algum plugin que faça algo assim? Existe uma forma mais pragmática de resolver esse caso? E, em última instância, é difícil de criar um plugin para o grails? =)

Meu sonho de consumo: marcar uma classe como "pesquisavel" e alguns de seus campos como "campos pesquisáveis". Quando o plugin fosse gerar os artefatos e encontrasse referências para essa classe, ao invés de adicionar uma combobox, adicionasse um botão que chamaria um controller direcionando para um modalBox. No modal montaria um filter Panel com os "campos pesquisáveis" da classe, um botão de submit para pesquisa e um grid de resultados. Ao selecionar uma linha do grid, fecharia o modal e retornaria para tela que o chamou, trazendo o objeto selecionado. Aos saudodos do Oracle Forms, o bom e velho componente LOV (List Of Values).

Se você chegou até aqui, desculpe a longa mensagem e obrigado pela atenção! Qualquer ajuda ou comentário é bem vindo!

Rodrigo Rosa
Tags: Grails


0
93!

Pq vc ñ faz isso da mesmo forma como já deve ter feito em outros projetos seus?
O que o Grails gera no scaffold é apenas um ponto de partida pra vc adaptar pras suas necessidades, não é e nem se propõe a ser a solução definitiva!
Ah, além do mais vc pode customizar o scaffold!
<!-- m --><a class="postlink" href="http://www.grails.org/Scaffolding">http://www.grails.org/Scaffolding</a><!-- m -->

[]'s

93,93/93
31/03/2009 00:00


0
Porque segue um padrão determinado, se apresenta de forma recorrente e sempre resolvo da mesma forma, * mas toma tempo *! Então acredito que seria um bom candidado a ser automatizado!

Pelo que observei, um dos objetivos do grails é esse, não? Agilizar o desenvolvimento através da automização dos processos repetitivos baseado em padrões...
=)
31/03/2009 00:00


0
É exatamente o que estou procurando... List of Value.
01/04/2009 00:00



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