Ir para o conteúdo

 Voltar a MDArte Desen...
Tela cheia

Problema com TransferObject e possível solução

14 de Setembro de 2012, 17:34 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 15 vezes

Boa tarde,

Tive problemas com TransferObject hoje, porém já encontrei a solução e gostaria de propor, caso possível, uma mudança na implementação do método AbstractEntity.buildTO().

O problema era o seguinte: dada uma classe Entidade qualquer, eu queria atualizá-la com dados no formulário da página. Então, no Controle, eu populava um EntidadeImpl com os dados do formulário, criava um EntitdadeTOExample para passar os relacionamentos e, a partir daí, fazia:

EntidadeTO entidadeTO = entidadeImpl.buildTO(EntidadeTOExample);

O entidadeTO era, então, passado para o serviço e lá era chamado o método insertOrUpdate. Antes de chamar o método em questão, no entanto, era feito o seguinte: 

EntidadeAbstract entidadeRecuperada = EntidadeImpl.getEntityFromTO(entidadeTO);

Nesse momento, entidadeRecuperada deveria ser populada com os dados que recebe do TO. No entanto, dado o id presente no entidadeTO, entidadeRecuperada era populada com os dados existentes no banco referentes àquele id.

Vendo a implementação dos TransferObjects, observei que getEntityFromTO só atualiza os dados caso a flag isUpdated do TransferObject esteja setada. Para isso, algum atributo do TransferObject precisa ser alterado em tempo de execução. O ponto aqui é: os dados foram, de fato, alterados... porém não diretamente no entidadeTO, e sim no entidadeImpl do qual eu criei o TransferObject.

A proposta, no caso, é: seria possível alterar o método AbstractEntity.buildTO() de modo que o mesmo pudesse fazer uma verificação se os dados do Impl que o chama são iguais aos dados persistidos no banco e, caso estejam diferentes, ative o flag isUpdated do TransferObject retornado?

Digo isso pois, n'outro teste, populei o Impl, chamei o buildTO e, arbitrariamente, escolhi um atributo qualquer da Entidade e alterei diretamente no TO. Isso foi suficiente para que os dados fossem atualizados no banco com sucesso. 

Claro, é possível que, talvez, eu esteja usando os TransferObject de maneira incorreta. No entanto, fica a sugestão.

A versão do cartucho que uso é a 3.1.1.3.4.17-RC8. 

Obrigado, 

Raphael 

Autor: Raphael Sant'Anna


Checklist para o projeto de interfaces

14 de Dezembro de 2011, 16:00, por Desconhecido

Este é um roteiro básico para verificação dos elementos interface para desenharmos um projeto. Vale lembrar que os projetos do MDArte são basicamente em CRUD (Create, Retrieve, Update e Delete) e não sistemas CMS com outras divisões e exibições. Cada um pode ter a sua lista e seria legal enviar comentários com adendos para ficar cada vez mais completa e padronizada.



Monthly archive for agosto 2010 CSS, Plugins, jQuery Flexigrid – Tabelas inteligentes com CSS e jQuery

14 de Dezembro de 2011, 15:46, por Desconhecido

Essa semana aqui no projeto, estávamos procurando uma solução para algumas tabelas que extrapolavam o tamanho da



Auto-Grid 960

14 de Dezembro de 2011, 15:41, por Desconhecido

Essa dica vai pra quem não tem muita paciência de configurar um js de grid 960 direto no seu código para ver o alinhamento de seus elementos.



Título na tabela do displayTag

14 de Dezembro de 2011, 15:39, por Desconhecido

O MDArte utiliza o displayTag e é possível customiza-lo de diversas maneiras. Uma coisa legal é colocar um título que só será exibido quando a consulta for executada.



CSS3:Textos com sombras

14 de Dezembro de 2011, 15:12, por Desconhecido

Se voce aplicar a propriedade “box-shadow” em um texto, a mesma vai ser aplicada em sua caixa (box). Para isso foi criada a propriedade “text-shadow”.
Seu uso é o seguinte: