Usando Towel para Paginação e Filtro  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
Ironlynx
Moderador
[Avatar]

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/
[WWW]
Marky.Vasconcelos
Moderador
[Avatar]

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!
[WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

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
[WWW]
Ironlynx
Moderador
[Avatar]

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/
[WWW]
ViniGodoy
Moderador
[Avatar]

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
[WWW]
Ironlynx
Moderador
[Avatar]

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/
[WWW]
Marky.Vasconcelos
Moderador
[Avatar]

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!
[WWW] [MSN]
Ironlynx
Moderador
[Avatar]

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.



[Thumb - Filtro.png]
 Nome do arquivo Filtro.png [Disk] 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/
[WWW]
Marky.Vasconcelos
Moderador
[Avatar]

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!
[WWW] [MSN]
Ironlynx
Moderador
[Avatar]

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/
[WWW]
Ironlynx
Moderador
[Avatar]

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/
[WWW]
Marky.Vasconcelos
Moderador
[Avatar]

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!
[WWW] [MSN]
Marky.Vasconcelos
Moderador
[Avatar]

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!
[WWW] [MSN]
Ironlynx
Moderador
[Avatar]

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/
[WWW]
Marky.Vasconcelos
Moderador
[Avatar]

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!
[WWW] [MSN]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team