| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/07/2011 23:35:58
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Tenho uma JTable aqui com um ResultSet gordo(50mil linhas, com 50 colunas cada), que eu tenho que usar para filtrar dados entre outros.
Peguei o sistema aqui usando algo bem parecido com isso:
http://www.inf.ufsc.br/~bosco/downloads/Livro-Java-Como-Programar-Deitel-Ed6/examples/ch25/Fig25_28_31/ResultSetTableModel.java
Até funciona OK, mas depois de certo tempo aberto, com muitas pesquisas feitas, ele não aguenta.Tem um leak aqui que não está muito fácil de achar.
Tô mudando o sistema todo para o Towel, e como não tem API(docs), preciso fazer umas perguntas pertinentes:
1-Alguém já fez uma JTable com paginação no Towel?
2-O Auto filtro parece quase perfeito, mas se vc precisa pesquisar num resultset bem grande, vcs fazem um mecanismo de cache ou eu terei que fazer essa implementação na mão(nesse caso meu projeto é um legado JDBC, tô ferrado, para escapar do resultset gordo vai ser select para todo lado...)?
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2011 09:15:23
|
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
|
Então, o Towel tem duas coisas separadas, o TableFilter e o SelectTable, uma para filtrar e outra para paginar, agora me parece uma boa idéia junta-los.
Com o SelectTable voce precisa passar um Paginator que irá trazer "paginas" de resultados. Quando eu usei esse componente meu Paginator era uma interface para o Hibernate que trazia os resultados passando a quantidade de resultados a partir de alguma linha e funcionava excelentemente bem.
|
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) 11/07/2011 12:02:39
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
No caso do TableFilter ele trabalha diretamente sobre o model em memória.
Não há nenhum esquema de cache. A implementação é muito parecida com a que o próprio Java faz.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2011 16:19:05
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Com o SelectTable voce precisa passar um Paginator que irá trazer "paginas" de resultados. Quando eu usei esse componente meu Paginator era uma interface para o Hibernate que trazia os resultados passando a quantidade de resultados a partir de alguma linha e funcionava excelentemente bem.
Mas quando os dados são jogados para paginação:
Eu posso estar exibindo 1000, mas eu já teria todos em memória, certo?O que eu quero evitar ao máximo é a duplicação de dados na memória.A maior tabela aqui, com 50mil linhas, tem na verdade, 20MB de dados(se vc tacar tudo num .txt), o que não é nenhuma monstruosidade hoje em dia.
A implementação é muito parecida com a que o próprio Java faz.
Então seria uma evolução do RowSorter do próprio JDK?
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2011 16:47:18
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Ironlynx wrote:Então seria uma evolução do RowSorter do próprio JDK?
Sim, é um RowSorter excel-like.
Com a diferença de que ele foi feito no Java 5, antes do RowSorter sequer existir.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2011 17:15:09
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
o TableFilter e o SelectTable, uma para filtrar e outra para paginar, agora me parece uma boa idéia junta-los.
Não sei se seria uma boa juntá-los, derrepende a não dependencia pode ser útil, mas que falta um BOM exemplo que junte o uso das duas coisas no site do Towel(nem que seja um exemplo de uso avançado), ah isso faz falta.
Com a diferença de que ele foi feito no Java 5, antes do RowSorter sequer existir.
Great.
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2011 17:48:05
|
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
|
Ironlynx wrote:
Com o SelectTable voce precisa passar um Paginator que irá trazer "paginas" de resultados. Quando eu usei esse componente meu Paginator era uma interface para o Hibernate que trazia os resultados passando a quantidade de resultados a partir de alguma linha e funcionava excelentemente bem.
Mas quando os dados são jogados para paginação:
Eu posso estar exibindo 1000, mas eu já teria todos em memória, certo?O que eu quero evitar ao máximo é a duplicação de dados na memória.A maior tabela aqui, com 50mil linhas, tem na verdade, 20MB de dados(se vc tacar tudo num .txt), o que não é nenhuma monstruosidade hoje em dia.
Exato, ele só pagina o resultado, por isso que Paginator é uma interface que pode ser implementada com o que voce quiser, no meu caso eu tinha uma implementação com Hibernate.
Ironlynx wrote:
Não sei se seria uma boa juntá-los, derrepende a não dependencia pode ser útil, mas que falta um BOM exemplo que junte o uso das duas coisas no site do Towel(nem que seja um exemplo de uso avançado), ah isso faz falta
Verdade, mas pelo menos tentarei integra-los de uma forma mais simples e não obrigatoria.
|
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) 11/07/2011 21:48:31
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Verdade, mas pelo menos tentarei integra-los de uma forma mais simples e não obrigatoria.
Bom... tô pondo no screenshot a tela do filtro que eu vou substituir.Será que eu consigo algo semelhante usando o TableFilter com a SelectTable?
Uma das coisas que eu mais gostei no towel é a simplicidade... já mandei uns 30 tablemodels diferentes pro saco.
|
| Nome do arquivo |
Filtro.png |
Download
|
| Descrição |
|
| Tamanho |
28 Kbytes
|
| Baixado: |
29 vez(es) |
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2011 22:03:42
|
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
|
Talvez se colocar o header do TableFilter dentro da SelectTable funcione. Eu vejo com mais calma essa opção em breve.
|
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) 12/07/2011 21:27:26
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Talvez se colocar o header do TableFilter dentro da SelectTable funcione. Eu vejo com mais calma essa opção em breve.
Tô dando uma lida nos seus tutoriais, vou tentar implementar.
Esse tópico:
http://www.guj.com.br/java/100793-projeto-towel-autofiltro-em-jtable
Já está sendo de grande valia, mas sinto falta de um exemplo mais sofisticado no site do Towel(que junte váarias funcionalidades em uma algo tipo uma quicktable otimizada).
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2011 15:27:11
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Marky, vc tem mais alguma informação sobre o TableFilter além daquele tópico que eu postei acima.As informações referentes a ele não estão presentes na página do Towel, eu estou me embananando aqui fundindo os dois(TableFilter com SelectTable).
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2011 16:41:05
|
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
|
Eu não tenho mais nenhum documento que fale de alguns dos componentes.
Eu começei a olhar com mais calma nisso, eu aviso qualquer avanç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) 14/07/2011 08:57:10
|
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
|
Como teste eu criei isso aqui e esperava que fosse automagicamente resolvido.
Mas nada, vai ter que ser um pouco mais interno, eu vou aproveitar e fazer um refactoring no SelectTable que eu queria a tempos.
|
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) 14/07/2011 15:25:08
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Mas nada, vai ter que ser um pouco mais interno, eu vou aproveitar e fazer um refactoring no SelectTable que eu queria a tempos.
Boa!Vc podia por um método para pegar a movimentação da página do botão de navegação para paginar sob demanda!Aí seria fácil fazer a paginação com o velho JDBC mesmo, tipo em Oracle:
Claro, sempre dá para eu criar meu próprio TableModel e ir buscar os resultados, mas o ideal seria deixar o menos invasivo possível(menor não uso do Towel possível).Se tiver idéias eu aceito!
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2011 16:17:49
|
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
|
Eu vou procurar nos meus projetos antigos meu Paginator com hibernate que carrega sob demanda para voce ver.
|
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! |
|
|
 |
|
|