Como montar uma tabela

Saudações a todos,

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.

[]´s

Junior

pra mim não ficou muito claro oq vc quer fazer.
vc quer q fique tudo em uma linha? e dentro de uma tabela?

Nome Janeiro Fevereiro Março
Teste 1 2 Teste1 1 Teste1 1 1

é isso?

Olá Kapa01,

Então cara, na verdade queria que fique da seguinte maneira:

Nome Janeiro Fevereiro Março
Teste1 1 1 1
Teste2 1 2

[]´s

Junior

coloca o seu codigo que fica mais facil de te ajudar e ver onde vc esta errando

Segue meu código:

			while (index1 < l.size()){
				Integer index2 = 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())){
						if (l.get(index1).getMes_vigente().equals("01")){
							l.get(index2).setJaneiro(l.get(index1).getTotal_area());
						} else if  (l.get(index1).getMes_vigente().equals("02")){
							l.get(index2).setFevereiro(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("03")){
							l.get(index2).setMarco(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("04")){
							l.get(index2).setAbril(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("05")){
							l.get(index2).setMaio(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("06")){
							l.get(index2).setJunho(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("07")){
							l.get(index2).setJulho(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("08")){
							l.get(index2).setAgosto(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("09")){
							l.get(index2).setSetembro(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("10")){
							l.get(index2).setOutubro(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("11")){
							l.get(index2).setNovembro(l.get(index1).getTotal_area());
						} else if (l.get(index1).getMes_vigente().equals("12")){
							l.get(index2).setDezembro(l.get(index1).getTotal_area());
						} 
					}
					index2++;
				}
				index1++;
			}

Este laço estou fazendo para poder atribuir o valor do mês quando a área e o nome da unidade forem iguais.

[]´s

Junior

ta um pouco confuso ainda. coloca o codigo inteiro da classe, parece q tem coisa inutil ai.
é EE ou SE?

Bom dia Kapa01,

Estou postando o código da classe

	public List<RelatorioEstatisticaIndAdvogado> buscarEstatisticaIndicacaoUnidadeMesAnalitico(Map<String, Object> parametros){
		
		List<RelatorioEstatisticaIndAdvogado> l = new ArrayList<RelatorioEstatisticaIndAdvogado>();
		List<RelatorioEstatisticaIndAdvogado> relatorio = new ArrayList<RelatorioEstatisticaIndAdvogado>();
		try {

			l = DTB.getMapper().queryForList("DPESPDEV_RELATORIO_INDICACAO.buscarEstatisticaIndicacaoUnidadeMesAnalitico", parametros);
			Integer index1 = 0;
while (index1 < l.size()){  
    Integer index2 = 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())){  
            if (l.get(index1).getMes_vigente().equals("01")){  
                l.get(index2).setJaneiro(l.get(index1).getTotal_area());  
            } else if  (l.get(index1).getMes_vigente().equals("02")){  
                l.get(index2).setFevereiro(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("03")){  
                l.get(index2).setMarco(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("04")){  
                l.get(index2).setAbril(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("05")){  
                l.get(index2).setMaio(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("06")){  
                l.get(index2).setJunho(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("07")){  
                l.get(index2).setJulho(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("08")){  
                l.get(index2).setAgosto(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("09")){  
                l.get(index2).setSetembro(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("10")){  
                l.get(index2).setOutubro(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("11")){  
                l.get(index2).setNovembro(l.get(index1).getTotal_area());  
            } else if (l.get(index1).getMes_vigente().equals("12")){  
                l.get(index2).setDezembro(l.get(index1).getTotal_area());  
            }   
        }  
        index2++;  
    }  
    index1++;  
}  


		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return l;
	}

Ele recebe os dados de um sql e carrega em uma lista, mas a partir da lista eu não to conseguindo ordenar da maneira correta.

[]´s

Junior

Kappa01, consegui resolver o problema!! :smiley:

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.

Obrigado pela ajuda.

[]´s

Junior

Daria pra passar pra Integer e depois usar switch =D Assim fica complicado de ler

a minha duvida principal ainda naum foi resolvida, quem é “l”?
quais os campos do seu banco?

l é uma List<> com o resultado do select do banco e estrutura de uma classe (no caso RelatorioEstatisticaIndAdvogado) onde tem vários campos dentro.

l = DTB.getMapper().queryForList("DPESPDEV_RELATORIO_INDICACAO.buscarEstatisticaIndicacaoUnidadeMesAnalitico", parametros);  

Eu utilizo o ibatis para comunicar com o banco de dados e a instrução sql se chama buscarEstatisticaIndicacaoUnidadeMesAnalitico.

Ficou mais claro? Não sei se consegui explicar :slight_smile:

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?

Vontade de resolver esse problema usando Reflection, mas tenho dó do guri…