Problemas ao fazer Comparações

2 respostas
G

Estou com um problema ao gerar um relatório… no meio da minha lista vem linhas vazias…
mas descobri que vem essas linhas porque tem dados que estão no biométrico mas não estão no Time Sheet.

agora que descobri isso preciso tratar isso também… mas não sei de que maneira…

segue a classe pra vocês entenderem . .

public List comparaTimeSheetBiometrico(Date dataIni, Date dataFim) throws ParseException {
        listaTimeSheet = retornaConsultaTimeSheet(dataIni, dataFim);
        listaBiometrico = retornaConsultaBiometrico(dataIni, dataFim);
        listaAlmoco = retornaConsultaAlmoco(dataIni, dataFim);
        boolean flag = false;

        for (Biometrico bt : listaBiometrico) {
            CompTimeSheetBiometrico comp = new CompTimeSheetBiometrico();

// tem linhas que não entram aqui nesse for (TimeSheetBio... ).
//então antes dele preciso tratar de maneira que só vai trazer do Biometrico os mesmos dias que tenho no Time Sheet. 
// mas não sei como fazer isso =/. 

            for (TimeSheetBio ts : listaTimeSheet) {
                if (ts.getHora() == null) {
                    flag = true;
                } else {
                    flag = false;
                }

                if (ts.getSigla().equals(bt.getSigla()) && ts.getData().equals(bt.getData())) {

                    comp.setSigla(ts.getSigla());
                    comp.setNome(ts.getNome());
                    comp.setN_apropriacao(ts.getN_apropriacao());
                    comp.setData(bt.getData());

                    if (ts.getFlag_destino().equals("entrada")) {
                        if (!converteData(ts.getHora()).equals(formataHora(bt.getMenor_horario()))) {
                            comp.setEntradaTS(ts.getHora());
                            comp.setEntradaBio(bt.getMenor_horario());
                        } else if (converteData(ts.getHora()).equals(formataHora(bt.getMenor_horario()))) {
                            comp.setEntradaTS(ts.getHora());
                            comp.setEntradaBio(bt.getMenor_horario());
                        }
                    }
                    if (flag == true) {
                        for (TimeSheetAlmoco al : listaAlmoco) {

                            if (bt.getSigla().equals(al.getSigla()) && (bt.getData().equals(al.getData()))) {
                                if (al.getFlag_destino().equals("ida_almoco")) {
                                    if (!converteData(al.getHora()).equals(formataHora(bt.getMaior_horario()))) {
                                        comp.setSaidaTS(al.getHora());
                                        comp.setSaidaBio(bt.getMaior_horario());
                                    } else if (converteData(al.getHora()).equals(formataHora(bt.getMaior_horario()))) {
                                        comp.setSaidaTS(al.getHora());
                                        comp.setSaidaBio(bt.getMaior_horario());
                                    }
                                }
                            }
                        }
                    } else if (flag == false) {
                        if (ts.getFlag_destino().equals("saida")) {
                            if (!converteData(ts.getHora()).equals(formataHora(bt.getMaior_horario()))) {
                                comp.setSaidaTS(ts.getHora());
                                comp.setSaidaBio(bt.getMaior_horario());
                            } else if (converteData(ts.getHora()).equals(formataHora(bt.getMaior_horario()))) {
                                comp.setSaidaTS(ts.getHora());
                                comp.setSaidaBio(bt.getMaior_horario());
                            }
                        }
                    }
                }
            }
            listComp.add(comp);
        }
        return listComp;
    }

Alguém pode me ajudar . ?!?!!!

2 Respostas

ruivo

Não queria falar não, mas esse teu código tá muito RUIM de ler hein. E cheio de ambiguidades, como por exemplo:

if (!converteData(al.getHora()).equals(formataHora(bt.getMaior_horario()))) {
    comp.setSaidaTS(al.getHora());
    comp.setSaidaBio(bt.getMaior_horario());
} else if (converteData(al.getHora()).equals(formataHora(bt.getMaior_horario()))) {
    comp.setSaidaTS(al.getHora());
    comp.setSaidaBio(bt.getMaior_horario());
}

Acho que, antes de vc tentar encontrar o pq do teu relatório vem linhas vazias, você precisa refatorar esse teu código, e quem sabe assim o problema não é resolvido.

G

Obrigado pela dica .
vou ver o que posso fazer a respeito . .

e referente a dúvida,

acredito que tenho que tratar fazendo um if para verificar se a lista está vazia…
caso esteja ai ela adiciona só a lista biometrico. .
caso não esteja ai ela vai pro for TimeSheetBio .

seria isso ??

Obg.

Criado 14 de março de 2012
Ultima resposta 14 de mar. de 2012
Respostas 2
Participantes 2