Dificuldade em inserir dados do pai no filho

4 respostas
xandevieira

Boa tarde tenho q montar uma tela pra importação de conta contábeis.
Onde cada Conta poderá ter um pai.

Ex.
1				ATIVO								1
1.1				ATIVO CIRCULANTE					        2
1.1.01			DISPONÍVEL							3
1.1.01.01			CAIXA								4
1.1.01.01.01.00001	F.FIXO TESOURARIA					        5
1.1.01.01.01.00002	F.FIXO 								7
1.1.01.01.01.00003	F.FIXO 								20
1.1.01.01.01.00004	F.FIXO 								21
1.1.01.01.01.00005	F.FIXO 								38
1.1.01.01.01.00006	F. FIXO 							        4903
1.1.01.01.01.00437	FUNDO FIXO  						        5816
1.1.01.02.01		BANCOS CONTA MOVIMENTO				45
1.1.01.02.01.00001	BRADESCO COBRANÇA 					2549
1.1.01.02.01.00002	BANCO BRADESCO S/A 2				        4253
1.1.01.02.01.00003	BANCO ABC BRASIL S/A - CONTA 		        5617
1.1.01.02.01.00004	BANCO ABC BRASIL - CONTA 			        5621
1.1.01.02.01.00005	BANCO NOSSA CAIXA C/C 				49
1.1.01.02.01.00006	BANCO ITAU S/A 						3445
1.1.01.02.01.00007	SANTANDER - BANESPA - CONTA 		        5770
1.1.01.02.01.00008	BANCO ITAU CONTA 					        5798
1.1.01.02.01.00009	ITAU ASIA							        5802
1.1.01.02.01.00010	BANCO BRADESCO S/A - 				        54
1.1.01.02.01.00011	CAIXA ECON FED  VITAL BRASIL 		        66
A conta 1.1 sera filha da 1, a 1.1.01 filha da 1.1, a 1.1.01.01 filha da 1.1.01 a 1.1.01.01.01.00001 filha da 1.1.01.01 e assim por dia, meu problema eh pegar o codigo do pai para inserir no filho meu objeto Conta
public class Conta {

	private Integer cdEmpresa;
	private Integer cdConta;
	private Integer cdNivelPlano;
	private Integer cdGrupoConta;
	private Integer cdReduzido;
	private String cdContaContabil;
	private String nmConta;
	private Integer cdContaPai;
	private String flContaAtiva;
	private String flBalanco;
	private String flRateio;
	private Character flRedutora;
	private Character tpConta;
O campo
private Integer cdContaPai;
sera o codigo do pai. Fiz um modo que não ficou legal, no momento da inclusão da conta eu pesquiso no banco, mas fazendo isso fica muito lento. Pensei em ir colocando num HashMap, mas travei. Alguem tem uma ideia?

4 Respostas

Cabazzo

Olha, há várias formas de fazer isso, você pode capturar sempre a conta que está no nível acima “nivelPlano”, ou usar o ponto “.” como indicador do nivel pai dando um split por exemplo de retirando a a parte após o útimo ponto.
Mas pra isso seria bom vc trocar de Integer para String os campos de conta.

Ex:
conta filha = “1.1.01.01.01.00001” - “F.FIXO TESOURARIA”
conta pai = “1.1.01.01.01” - “CAIXA”

String conta = “1.1.01.01.01.00001”;
String contaPai = conta.subString(0, conta.lastIndexOf("."));

xandevieira

Sim, esse esta sendo meu problema, como pegar a conta q tem o nivel acima?

Cabazzo

Suponha que vc traz todas as contas em um ArrayList, vc pode correr os dados e capturar o nivel maior pelo índice menos um:

for(int i=0; i < contas.size(); i++){
   Conta conta = contas.get(i);
   if(contas.get(i-1).getNivelPlano() == (conta.getNivelPlano() + 1)){
      conta.setContaPai(contas.get(i-1).getConta());
   }
}

Ou assim:

for(int i=0; i < contas.size(); i++){
   contas.get(i).setContaPai(contas.get(i).getConta().subString(0, conta.lastIndexOf("\.")));
}

Espero ter ajudado Pai.

  • Bart ajudando Homer, essa foi hilária
xandevieira

hehehe, foi hilaria mesmo.
Ja resolvi, vou salvando no banco as contas e consultado pelo ultimo ponto (.) a conta pai.

vlw

Criado 8 de setembro de 2011
Ultima resposta 12 de set. de 2011
Respostas 4
Participantes 2