3
respostas

Agrupamento em DataTable (JSF)

Senhores,

Imaginem que eu retorno N registros com Hora e Valor, a periodicidade é por minuto e eu quero agrupa-los por hora, exemplo:

R1 => 13:01, 50 R2 => 13:02, 30 R3 => 13:03, 10 ... RX => 14:01, 10 RX+1 => 14:02, 30

Gostaria de visualizar no databable L1 => 13hs, 90 L2 => 14hs, 30

Qual a forma mais profissional de se fazer isso? Neste momento eu iria lá no JPA e faria umas queries e tudo certo, mas como chamo o banco e ja tenho os dados em memória eu gostaria de apenas processa-los sem novas consultas e agrupa-los por hora.

vlw

3 respostas

Oi Mauricio, se os dados já estão em memória e você está usando o java 8, você pode usar os lambdas e o Collector.groupBy. Esse método groupBy recebe como argumento uma função onde é necessário retornar um valor que serve como chave de agrupamento.. no caso a hora. No fim você teria um Map>.

E claro que você pode fazer manual também :). Manda um for, cria um mapa e vai adicionando no mapa todo mundo que pertencer a mesma chave.

Vou olhar isso hoje e ja posto se deu certo. Vlw

Comecei a olhar hoje e esta dando certo, porém fiquei com outra dúvida.

Exemplo: Minha entity tem 5 campos, quando eu consolidar quero mostrar em uma parte da mesma tela apenas 2 destes cinco campos, o ideal seria eu criar uma nova entity com estes dois campos ou usar o objeto principal da tela que tem 5 campos? Neste caso usarei apenas alguns dos seus campos. Qual seria a boa prática? Preciso mandar os dados do Bean para a view