Problema com soma em função recursiva

0 respostas
lcn.andre

Bom dia!
Estou com um probleminha numa função recursiva para criar os nodos de uma JTree. Estou fazendo um plano de contas (exemplo aqui), então preciso que os nodos tenham seus valores somados até chegar no nodo raiz, que deve bater com a soma de todos os nodos filhos. Eis meu código:

private void populeDependentes(DefaultMutableTreeNode nodo, List<CentroCusto> centros, CentroCusto centro, List<TransacaoFinanceira> movs) { List<CentroCusto> ccTemp = getDependentes(centros, centro); List<Evento> ccEvTemp = getEventosDependentes(centro); List<TransacaoFinanceira> ccTransTemp = movs; DefaultMutableTreeNode noCc = new DefaultMutableTreeNode(centro.toString() + " | Saldo anterior: " + nf.format(getSaldoAnterior(centro)) + " Crédito anterior: " + nf.format(getCreditoAnterior(centro)) + " Débito anterior: " + nf.format(getDebitoAnterior(centro)) + " Saldo: " + nf.format(getSaldoAnterior(centro))); // Se não há contas filhas ou eventos filhos, adiciona o nodo da conta if (ccTemp.size() == 0 && ccEvTemp.size() == 0) { nodo.add(new DefaultMutableTreeNode(noCc)); } else { // Adiciona as transações dentro do nodo do evento // e o nodo do evento ao nodo da conta for (Evento e: ccEvTemp) { DefaultMutableTreeNode noEv = new DefaultMutableTreeNode(); ccTransTemp = getTransacoesDependentes(e); for (TransacaoFinanceira t: ccTransTemp) { noEv.add(new DefaultMutableTreeNode("NF: " + trataNulo(t.getConta().getNumNf()) + " / Data: " + df.format(t.getConta().getDataPagamento()) + " Valor: " + nf.format(t.getConta().getValorPagamento()))); } noEv.setUserObject("(" + e.getCodigoEvento() + ") " +e.getDescricao() + " | Total: " + nf.format(getSaldo(ccTransTemp))); noCc.add(noEv); } // Chama recursivamente a função para cada conta filha // e adiciona-a ao nodo anterior for (CentroCusto c : ccTemp) { populeDependentes(noCc, centros, c, ccTransTemp); } noCc.setUserObject(centro.toString() + " | Saldo anterior: " + nf.format(getSaldoAnterior(centro)) + " Crédito anterior: " + nf.format(getCreditoAnterior(centro)) + " Débito anterior: " + nf.format(getDebitoAnterior(centro)) + " Saldo: " + nf.format(getSaldoConta(centro, ccTransTemp))); nodo.add(noCc); } }

Esse código gera esta tela:

Do jeito que está, ele cria os nodos corretamente, faz o cálculo de saldo debitado, creditado e geral, mas não passa esse valor para o nodo pai, que por consequencia não o passa adiante. Estou quebrando a cabeça aqui para conseguir fazer isso, mas não estou conseguindo. Alguém tem alguma sugestão?

Criado 16 de junho de 2010
Respostas 0
Participantes 1