Boa tarde galera, estou precisando de ajuda com serialização. Minha situação é o seguinte, tenho uma classe chamada PessoaDAO e ContaDAO(os controllers), entao na classe modelo Pessoa eu tenho um ArrayList de contas. Dentro de ContaDAO eu tenho um ArrayList tambem de contas(assim eu dou um setContas() para a classe Pessoa). O problema é quando eu crio duas pessoas e crio uma conta pra cada, na hora que eu peço pra ver as contas que uma pessoa tem, o programa me imprime todas as contas desta pessoa e das outras. Como eu posso serializar de maneira que o programa possa separar as contas?
Classe Pessoa:
package b2.Model;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.io.Serializable;
/**
*
* @author João Gabriel
*/
public class Pessoa implements Serializable {
private String nome;
private String dtn;
private String sexo;
private String cpf;
private static ArrayList<Conta> contas = new ArrayList<>();
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* @return the dtn
*/
public String getDtn() {
return dtn;
}
/**
* @param dtn the dtn to set
*/
public void setDtn(String dtn) {
this.dtn = dtn;
}
/**
* @return the sexo
*/
public String getSexo() {
return sexo;
}
/**
* @param sexo the sexo to set
*/
public void setSexo(String sexo) {
this.sexo = sexo;
}
/**
* @return the cpf
*/
public String getCpf() {
return cpf;
}
/**
* @param cpf the cpf to set
*/
public void setCpf(String cpf) {
this.cpf = cpf;
}
/**
* @return the contas
*/
public static ArrayList<Conta> getContas() {
return contas;
}
/**
* @param contas the contas to set
*/
public void setContas(Conta contas) {
this.contas.add(contas);
}
/*public void excluirContas(Conta conta) {
contas.remove(conta);
}*/
@Override
public String toString() {
return "\nNome: " + nome
+ "\nData de Nascimento: " + dtn
+ "\nSexo: " + sexo
+ "\nCPF: " + cpf;
}
public String infoConta() {
if(contas != null){
return "\nNome do Cliente:" + nome +
"\n"+ contas;
}else{
return null;
}
}
public void excluirContas() {
contas.remove(getContas());
}
public static void serializarContasp(){
try {
FileOutputStream fos = new FileOutputStream("C:\\Users\\AspireV5\\Documents\\NetBeansProjects\\Banco1\\src\\b2\\Controle\\conta.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(contas);
oos.close();
fos.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
public static Object carregarObjetoContap(){
try {
FileInputStream fis = new FileInputStream("C:\\Users\\AspireV5\\Documents\\NetBeansProjects\\Banco1\\src\\b2\\Controle\\conta.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
ois.close();
fis.close();
return obj;
} catch (IOException ioe) {
//System.out.println("\nPrimeira vez sendo utilizado, não há Contas salvas!");
return null;
} catch (ClassNotFoundException c) {
System.out.println("\nClasse não encontrada!");
c.printStackTrace();
return null;
}
}
public static void carregarContas(){
ArrayList<Conta> conta = (ArrayList<Conta>)carregarObjetoContap();
if(conta!=null){
contas = conta;
}
}
}
Classe ContaDAO:
package b2.Controle;
import b2.Model.Conta;
import b2.Model.Pessoa;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Scanner;
/**
*
* @author AspireV5
*/
public class ContaDAO {
private static ArrayList<Conta> list2 = new ArrayList<>();
Conta c;
Conta buscaConta = null;
PessoaDAO pessoa = new PessoaDAO();
Scanner scan = new Scanner(System.in, "latin1");
Pessoa buscaPessoa;
public void addConta(PessoaDAO pDAO) {
Pessoa p = pDAO.getPessoa();
if (p != null) {
System.out.println("Digite uma Senha para a Conta: ");
int senha = scan.nextInt();
System.out.println("Digite o Saldo Inicial para Conta: ");
double saldo = scan.nextDouble();
System.out.println("Digite a Agência da Conta: ");
int agencia = scan.nextInt();
scan.nextLine();
c = new Conta();
c.setSenha(senha);
c.setSaldo(saldo);
c.setAgencia(agencia);
list2.add(c);
p.setContas(c);
System.out.println("Conta cadastrada com sucesso!");
} else {
System.out.println("\nCliente não foi encontrado\n");
}
}
public void atualizarConta() {
System.out.println("Digite o Numero da Conta para buscar: ");
int busca = scan.nextInt();
for (Conta conta : list2) {
if (busca == conta.getNumero()) {
buscaConta = conta;
break;
} else {
buscaConta = null;
}
}
if (buscaConta == null) {
System.out.println("\nConta não encontrada!");
} else {
System.out.println("Digite uma nova Senha: ");
int senha = scan.nextInt();
System.out.println("Digite uma nova Agência para a Conta");
int agencia = scan.nextInt();
buscaConta.setSenha(senha);
buscaConta.setAgencia(agencia);
System.out.println("Conta atualizada com sucesso!");
}
}
public void removerConta() {
System.out.println("Digite o Número da Conta para buscar: ");
int busca = scan.nextInt();
Pessoa p = new Pessoa();
for (Conta conta : list2) {
if (busca == conta.getNumero()) {
list2.remove(conta);
//p.excluirContas();
break;
} else {
buscaConta = null;
System.out.println("\nConta não Encontrada");
}
}
}
public void fazerDeposito() {
System.out.println("Digite o Número da Conta: ");
int busca = scan.nextInt();
for (Conta conta : list2) {
if (busca == conta.getNumero()) {
buscaConta = conta;
break;
} else {
buscaConta = null;
}
}
if (buscaConta == null) {
System.out.println("\nConta não encontrada!");
} else {
System.out.println("Digite o Valor que deseja Depositar: ");
double valor = scan.nextDouble();
buscaConta.depositarDinheiro(valor);
}
}
public void fazerSaque() {
System.out.println("Digite o Número da Conta: ");
int busca = scan.nextInt();
for (Conta conta : list2) {
if (busca == conta.getNumero()) {
buscaConta = conta;
break;
} else {
buscaConta = null;
}
}
if (buscaConta == null) {
System.out.println("\nConta não encontrada!");
} else {
System.out.println("Digite o Valor que deseja Sacar: ");
double valor = scan.nextDouble();
buscaConta.sacarDinheiro(valor);
}
}
public void fazerTransferencia() {
System.out.println("\nDigite o Número da sua Conta: ");
int conta1 = scan.nextInt();
Conta buscaConta1 = null;
for (Conta conta : list2) {
if (conta1 == conta.getNumero()) {
buscaConta1 = conta;
System.out.println(buscaConta1);
break;
} else {
buscaConta1 = null;
}
}
System.out.println("\nDigite o Número da Conta que deseja Transferir: ");
int conta2 = scan.nextInt();
Conta buscaConta2 = null;
for (Conta conta : list2) {
if (conta2 == conta.getNumero()) {
buscaConta2 = conta;
System.out.println(buscaConta2);
} else {
buscaConta2 = null;
}
}
System.out.println("\nDigite o Valor que deseja Transferir: ");
double valor = scan.nextDouble();
if (valor <= buscaConta1.getSaldo() && valor > 0) {
buscaConta1.sacarDinheiro(valor);
buscaConta2.depositarDinheiro(valor);
System.out.println("\nTransferência feita com Sucesso!");
} else {
System.out.println("\nSaldo Insuficiente!");
}
}
public Conta verConta(int numero) {
for (Conta conta : list2) {
if (numero == conta.getNumero()) {
buscaConta = conta;
} else {
buscaConta = null;
}
}
if (buscaConta == null) {
return null;
} else {
return buscaConta;
}
}
public Conta verificarAcesso() {
System.out.println("Digite o Número de sua Conta");
int numero = scan.nextInt();
System.out.println("Digite a Senha da sua Conta");
int senha = scan.nextInt();
for (Conta conta : list2) {
if (conta.getNumero() == numero && conta.getSenha() == senha) {
buscaConta = conta;
break;
} else {
buscaConta = null;
}
}
if (buscaConta == null) {
return null;
} else {
return buscaConta;
}
}
public static void serializarContasc(){
try {
FileOutputStream fos = new FileOutputStream("C:\\Users\\AspireV5\\Documents\\NetBeansProjects\\Banco1\\src\\b2\\Controle\\contac.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(list2);
oos.close();
fos.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
public static Object carregarObjetoContac(){
try {
FileInputStream fis = new FileInputStream("C:\\Users\\AspireV5\\Documents\\NetBeansProjects\\Banco1\\src\\b2\\Controle\\contac.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
ois.close();
fis.close();
return obj;
} catch (IOException ioe) {
//System.out.println("\nPrimeira vez sendo utilizado, não há Contas salvas!");
return null;
} catch (ClassNotFoundException c) {
System.out.println("\nClasse não encontrada!");
c.printStackTrace();
return null;
}
}
public static void carregarContasc(){
ArrayList<Conta> contas = (ArrayList<Conta>)carregarObjetoContac();
if(contas!=null){
list2 = contas;
//System.out.println(list2);
}else{
System.out.println("\nAinda não tem Contas cadastradas");
}
}
}