Estou desenvolvendo um relatório onde o resultado do select é uma lista de uma classe, ficando como se fosse a seguinte estrutura:
Nome Janeiro Fevereiro Março
Teste 1 2
Teste1 1
Teste1 1 1
Alguém tem alguma idéia de como eu poderia fazer para juntar o Teste1 em apenas uma linha? Eu tentei de algumas maneiras porém não obtive muito sucesso. Além de juntar a segunda e terceira linha, teria que eliminar a terceira linha, pois teria que ser apenas uma linha no resultado.
Estou postando o meu código para se alguém precisar fica como consulta:
while (index1 < l.size()){
index2 = index1+1;
while (index2 < l.size()){
if (l.get(index1).getUni_nome().equals(l.get(index2).getUni_nome())
&& l.get(index1).getNome_area().equals(l.get(index2).getNome_area())){
//seta o primeiro índice no campo correto
if (l.get(index1).getMes_vigente().equals("01")){
l.get(index1).setJaneiro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("02")){
l.get(index1).setFevereiro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("03")){
l.get(index1).setMarco(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("04")){
l.get(index1).setAbril(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("05")){
l.get(index1).setMaio(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("06")){
l.get(index1).setJunho(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("07")){
l.get(index1).setJulho(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("08")){
l.get(index1).setAgosto(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("09")){
l.get(index1).setSetembro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("10")){
l.get(index1).setOutubro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("11")){
l.get(index1).setNovembro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("12")){
l.get(index1).setDezembro(l.get(index1).getTotal_area());
}
//seta o segundo índice no índice anterior
if (l.get(index2).getMes_vigente().equals("01")){
l.get(index1).setJaneiro(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("02")){
l.get(index1).setFevereiro(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("03")){
l.get(index1).setMarco(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("04")){
l.get(index1).setAbril(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("05")){
l.get(index1).setMaio(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("06")){
l.get(index1).setJunho(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("07")){
l.get(index1).setJulho(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("08")){
l.get(index1).setAgosto(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("09")){
l.get(index1).setSetembro(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("10")){
l.get(index1).setOutubro(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("11")){
l.get(index1).setNovembro(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
} else if (l.get(index2).getMes_vigente().equals("12")){
l.get(index1).setDezembro(l.get(index2).getTotal_area());
deletaLista.add(l.get(index2));
}
logger.info("são iguais");
} else {
logger.info("não são iguais");
//setando o primeiro índice no campo correto
if (l.get(index1).getMes_vigente().equals("01")){
l.get(index1).setJaneiro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("02")){
l.get(index1).setFevereiro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("03")){
l.get(index1).setMarco(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("04")){
l.get(index1).setAbril(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("05")){
l.get(index1).setMaio(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("06")){
l.get(index1).setJunho(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("07")){
l.get(index1).setJulho(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("08")){
l.get(index1).setAgosto(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("09")){
l.get(index1).setSetembro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("10")){
l.get(index1).setOutubro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("11")){
l.get(index1).setNovembro(l.get(index1).getTotal_area());
} else if (l.get(index1).getMes_vigente().equals("12")){
l.get(index1).setDezembro(l.get(index1).getTotal_area());
}
}
index2++;
}
index1++;
}
l.removeAll(deletaLista);
Eu utilizei o removeAll também para poder eliminar o registro que ficaria sem nenhum dado, assim deixando somente os itens que eu quero na lista e com todos os meses setados corretamente.
faça o q o polimorphism sugeriu utilize switch para o seu codigo ficar mais limpo e com maior performace.
para isso converta l.get(index1).getMes_vigente() para inteiro.
int mes = Integer.parseInt(l.get(index1).getMes_vigente());
e faça a comparação pelo switch.
[code]switch(mes){
case 1: l.get(index1).setJaneiro(l.get(index1).getTotal_area()); break;
case 2: l.get(index1).setFevereiro(l.get(index1).getTotal_area()); break;
.
.
.
}
[/code]
pelo que eu entendi esse seu metodo retorna um List e você quer pegar os valores que o metodo retorna e inseri-los em um JTable, correto? ou o seu problema esta no metodo?