| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 10:24:33
|
andre_a_s
GUJ Ranger
![[Avatar]](/images/avatar/3328bdf9a4b9504b9398284244fe97c2.jpg)
Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline
|
Bom dia senhores
Estou desenvolvendo uma aplicação que recebe os dados em um arquivo texto separado por ponto-e-virgula. Tipo um CSV.
Tenho que pegar essa string, quebrar e jogar os dados no meu bean.
Estou usando java 1.4, fiz algo desse tipo:
O problema é que é muito braçal a rotina de setar os valores no bean.
Pergunto:
O que poderia fazer para contornar isso? Se não me engano, em C#.net dá pra fazer via anotations um esquema que você mapeia o token com uma propriedade.
Alguem que já trabalhou com integrações em mainframe já deve ter passado por isso.
Existe alguma maneira de automatizar isso?
Obrigado
|
Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 10:31:12
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Bom, se você não tiver problemas de desempenho, pode tentar usar o BeanUtils para acessar os campos por nome via reflection, e você poderia especificar em um arquivo (properties?) a sequência dos campos. Talvez como:
br.com.suaEmpresa.SeuBean=nome;endereco;telefone;cpf;;residencia
para indicar que na hora de preencher os dados, nome = fields[0], ... cpf = fields[3], residencia = fields[5] (note que pulei um field de propósito para indicar que ele não é usado).
Ou então gerar código (a partir desse mesmo arquivo properties), o que não dá problemas de desempenho mas sim de manutenção (a menos que você tenha um script ANT bom para compilar seu código).
Mas acho que isso é o menor dos seus problemas.
This message was edited 1 time. Last update was at 25/10/2007 10:31:43
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 11:22:35
|
andre_a_s
GUJ Ranger
![[Avatar]](/images/avatar/3328bdf9a4b9504b9398284244fe97c2.jpg)
Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline
|
Boa thingol... gostei da idéia de reflection e do properties.
Acho que vai funcionar bem, mas ainda tem uma coisinha.
Tem campos que devem ser tratados.
Por exemplo:
Nesse caso, acho que atrapalha um pouco a automação, certo ?
|
Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 12:46:26
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Com properties dá pra brincar à vontade. É só você ter paciência (daqui a pouco você vai criar um XML que é tão complicado de preencher quanto você escrever você mesmo o programa - não seja ambicioso demais.)
br.com.suaEmpresa.SeuBean=nome;endereco;telefone;cpf;;residencia;dataFormalizacao
br.com.suaEmpresa.SeuBean-dataFormalizacao=dd/MM/yyyy
(note que # é especial em um arquivo .properties, assim como ":", por isso usei um "-" mesmo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 12:51:00
|
rodrigoallemand
GUJ Ranger
![[Avatar]](/images/avatar/d7b431b1a0cc5f032399870ff4710743.jpg)
Membro desde: 21/02/2005 20:19:47
Mensagens: 972
Localização: Rio de Janeiro, Recreio!!!
Offline
|
Vc pode passar a linha toda para um construtor e fazer o tratamento dentro dele, não seria uma boa ideia?
|
Rodrigo Allemand
A culpa é minha e eu a coloco em quem eu quizer!. (Homer Simpson)
http://blog.rodrigoallemand.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 12:52:56
|
andre_a_s
GUJ Ranger
![[Avatar]](/images/avatar/3328bdf9a4b9504b9398284244fe97c2.jpg)
Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline
|
É verdade... tem que tomar cuidado com a complexidade que isso vai ficar.
Mas legal thingol... muito obrigado, ajudou bastante!
This message was edited 1 time. Last update was at 25/10/2007 12:53:22
|
Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 12:54:24
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
rodrigoallemand wrote:Vc pode passar a linha toda para um construtor e fazer o tratamento dentro dele, não seria uma boa ideia?
Até aí isso é o de menos (se é em um construtor ou em um método).
Ele está reclamando é do trabalho braçal (e sujeito a erros bobos) que é desmontar a string e preencher os campos.
Eu sei bem disso, e sei que é fácil resolver isso com @Annotations (java 5.0 - se quiser fazer as coisas em tempo de execução)) ou XDoclet (1.4 ou anteriores - se quiser efetuar geração de código).
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 12:59:20
|
andre_a_s
GUJ Ranger
![[Avatar]](/images/avatar/3328bdf9a4b9504b9398284244fe97c2.jpg)
Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline
|
Como você faria isso com Annotations ?
|
Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 13:05:58
|
rodrigoallemand
GUJ Ranger
![[Avatar]](/images/avatar/d7b431b1a0cc5f032399870ff4710743.jpg)
Membro desde: 21/02/2005 20:19:47
Mensagens: 972
Localização: Rio de Janeiro, Recreio!!!
Offline
|
thingol wrote:Até aí isso é o de menos (se é em um construtor ou em um método).
Ele está reclamando é do trabalho braçal (e sujeito a erros bobos) que é desmontar a string e preencher os campos.
Resta saber se este trabalho braçal é alterado constantemente ou se é totalmente estático e maduro. Acho que se ele sempre receber esta string, no mesmo formato, sem muitas alterações ao longo do sistema, existem maneiras mais faceis de fazer isso...
|
Rodrigo Allemand
A culpa é minha e eu a coloco em quem eu quizer!. (Homer Simpson)
http://blog.rodrigoallemand.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 13:10:24
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
É meio chato (e um pouco pesado) porque você tem de fazer algo como:
e a classe Util (o nome não é legal; escolha um nome adequado...) tem de pegar a instância que você disponibilizou para o método inicializar, a string que você pediu para efetuar o split, e procurar os métodos que têm a anotação MinhaAnotacao; para cada um desses métodos, efetuar as conversões adequadas, e chamar o tal método. É braçal (e um pouco pesado) mas dá para fazer.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 14:48:18
|
andre_a_s
GUJ Ranger
![[Avatar]](/images/avatar/3328bdf9a4b9504b9398284244fe97c2.jpg)
Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline
|
Interessante.
É um pocuo trabalhoso, mas acho que depois fica fácil pra dar manutenção.
Mesmo assim, obrigado pelas dicas.
Vou bolar algo e assim que estiver pronto e funcionando eu posto aqui
|
Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 15:08:31
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Só pra aproveitar o tópico falando sobre Annotations
Como eu faço que um atributo da anotação possa ser preenchido ou não.
Como as anotações do Hibernate que posso setar em @Column o name ou não.
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 15:15:26
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Exemplo:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 15:17:15
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Era isso mesmo obrigado.
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
|
|