import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ContaDao {
private Conta conta;
private List<Conta> contas;
private Connection conn;
public ContaDao() {
DBConnection banco = DBConnection.getInstance();
this.setConn(banco.getConexao());
}
public void inserir() {
try {
PreparedStatement exec = this.getConn().prepareStatement("INSERT INTO "
+ "conta (agencia, pessoa, saldo, limite) VALUES "
+ "(?,?,?,?)");
exec.setInt(1, this.getConta().getAgencia().getNumero());
exec.setInt(2, this.getConta().getCorrentista().getIdCorrentista());
exec.setDouble(3, this.getConta().getSaldo());
exec.setDouble(4, this.getConta().getLimite());
exec.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(ContaDao.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void alterar() {
try {
PreparedStatement exec = this.getConn().prepareStatement("UPDATE conta\n"
+ "SET agencia = ?, pessoa = ?, saldo = ?, limite = ? "
+ "WHERE idconta = ?");
exec.setInt(1, this.getConta().getAgencia().getNumero());
exec.setInt(2, this.getConta().getCorrentista().getIdCorrentista());
exec.setDouble(3, this.conta.getSaldo());
exec.setDouble(4, this.getConta().getLimite());
exec.setInt(5, this.conta.getNumero());
exec.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(ContaDao.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void apagar() {
try {
PreparedStatement exec = this.getConn().prepareStatement("DELETE "
+ "FROM conta WHERE idconta=?");
exec.setInt(1, this.conta.getNumero());
exec.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(ContaDao.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void localizarNome(String nome) {
this.contas = new ArrayList<Conta>();
try {
PreparedStatement exec = this.getConn().prepareStatement("SELECT idconta,"
+ " agencia, pessoa, saldo, limite, nm_pessoa, nm_endereco, "
+ "cpf, cnpj,idade,"
+ "DATE_FORMAT(dataNascimento,'%d/%m/%Y') as dataNascimento, "
+ "nomeFantasia, estadoCivil, sexo, nm_agencia, "
+ "nm_endereco as nm_endAgencia "
+ "FROM pessoa, conta where conta.pessoa=pessoa.idpessoa "
+ "and conta.agencia=agencia.idagencia "
+ "and nm_pessoa like ?");
exec.setString(1, "%"+ nome + "%");
ResultSet result= exec.executeQuery();
Agencia agencia;
Correntista correntista;
Conta conta;
while (result.next()){
agencia = new Agencia();
conta = new Conta();
correntista = new Correntista();
agencia.setNumero(result.getInt("idagencia"));
agencia.setNome("nm_agencia");
agencia.setEndereco("nm_endereco");
conta.setNumero(result.getInt("idconta"));
conta.setSaldo(result.getDouble("saldo"));
conta.setLimite(result.getDouble("limite"));
conta.setAgencia(agencia);
correntista.setIdCorrentista(result.getInt("idpessoa"));
correntista.setNome(result.getString("nm_pessoa"));
correntista.setEndereco(result.getString("dataNascimento"));
if (result.getString("cpf").isEmpty()) {
((PessoaFisica)correntista).setCpf(result.getString("cpf"));
((PessoaFisica)correntista).setDataNascimento("dataNascimento");
((PessoaFisica)correntista).setEstadoCivil(result.getInt("estadoCivil"));
((PessoaFisica)correntista).setIdade(result.getInt("idade"));
((PessoaFisica)correntista).setSexo(result.getString("sexo"));
} else {
((PessoaJuridica)correntista).setCnpj(result.getString("cnpj"));
((PessoaJuridica)correntista).setNomeFantasia("nomeFantasia");
PreparedStatement execSocio = this.getConn().prepareStatement(
"SELECT pessoaJuridica,"
+ " socios FROM pessoa"
+ " where pessoaJuridica = ?");
execSocio.setInt(1, correntista.getIdCorrentista());
ResultSet resultSocio = execSocio.executeQuery();
PessoaFisica pessoaF;
while (resultSocio.next()) {
pessoaF = new PessoaFisica();
pessoaF.setNome(result.getString("nm_pessoa"));
pessoaF.setEndereco(result.getString("nm_Endereco"));
pessoaF.setCpf(result.getString("cpf"));
pessoaF.setIdade(result.getInt("idade"));
pessoaF.setIdCorrentista(result.getInt("idpessoa"));
pessoaF.setDataNascimento(result.getString("dataNascimento"));
pessoaF.setEstadoCivil(result.getInt("estadoCivil"));
pessoaF.setSexo(result.getString("sexo"));
((PessoaJuridica)correntista).setSocios(pessoaF);
}
}
conta.setCorrentista(correntista);
}
} catch (SQLException ex) {
Logger.getLogger(ContaDao.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void localizarId(int idconta) {
this.contas = new ArrayList<Conta>();
try {
PreparedStatement exec = this.getConn().prepareStatement("SELECT idconta,"
+ " agencia, pessoa, saldo, limite, nm_pessoa, nm_endereco, "
+ "cpf, cnpj,idade,"
+ "DATE_FORMAT(dataNascimento,'%d/%m/%Y') as dataNascimento, "
+ "nomeFantasia, estadoCivil, sexo, nm_agencia, "
+ "nm_endereco as nm_endAgencia "
+ "FROM pessoa, conta where conta.pessoa=pessoa.idpessoa "
+ "and conta.agencia=agencia.idagencia "
+ "and idconta = ?");
exec.setInt(1, idconta);
ResultSet result= exec.executeQuery();
Agencia agencia;
Correntista correntista;
Conta conta;
while (result.next()){
agencia = new Agencia();
conta = new Conta();
correntista = new Correntista();
agencia.setNumero(result.getInt("idagencia"));
agencia.setNome("nm_agencia");
agencia.setEndereco("nm_endereco");
conta.setNumero(result.getInt("idconta"));
conta.setSaldo(result.getDouble("saldo"));
conta.setLimite(result.getDouble("limite"));
conta.setAgencia(agencia);
correntista.setIdCorrentista(result.getInt("idpessoa"));
correntista.setNome(result.getString("nm_pessoa"));
correntista.setEndereco(result.getString("dataNascimento"));
if (result.getString("cpf").isEmpty()) {
((PessoaFisica)correntista).setCpf(result.getString("cpf"));
((PessoaFisica)correntista).setDataNascimento("dataNascimento");
((PessoaFisica)correntista).setEstadoCivil(result.getInt("estadoCivil"));
((PessoaFisica)correntista).setIdade(result.getInt("idade"));
((PessoaFisica)correntista).setSexo(result.getString("sexo"));
} else {
((PessoaJuridica)correntista).setCnpj(result.getString("cnpj"));
((PessoaJuridica)correntista).setNomeFantasia("nomeFantasia");
PreparedStatement execSocio = this.getConn().prepareStatement(
"SELECT pessoaJuridica,"
+ " socios FROM pessoa"
+ " where pessoaJuridica = ?");
execSocio.setInt(1, correntista.getIdCorrentista());
ResultSet resultSocio = execSocio.executeQuery();
PessoaFisica pessoaF;
while (resultSocio.next()) {
pessoaF = new PessoaFisica();
pessoaF.setNome(result.getString("nm_pessoa"));
pessoaF.setEndereco(result.getString("nm_Endereco"));
pessoaF.setCpf(result.getString("cpf"));
pessoaF.setIdade(result.getInt("idade"));
pessoaF.setIdCorrentista(result.getInt("idpessoa"));
pessoaF.setDataNascimento(result.getString("dataNascimento"));
pessoaF.setEstadoCivil(result.getInt("estadoCivil"));
pessoaF.setSexo(result.getString("sexo"));
((PessoaJuridica)correntista).setSocios(pessoaF);
}
}
conta.setCorrentista(correntista);
}
} catch (SQLException ex) {
Logger.getLogger(ContaDao.class.getName()).log(Level.SEVERE, null, ex);
}
}
public Conta getConta() {
return conta;
}
public void setConta(Conta conta) {
this.conta = conta;
}
public List<Conta> getContas() {
return contas;
}
public void setContas(List<Conta> contas) {
this.contas = contas;
}
public Connection getConn() {
return conn;
}
public void setConn(Connection conn) {
this.conn = conn;
}
}
public class Conta {
private Agencia agencia;
private Correntista correntista;
private int numero;
private double saldo;
private double limite;
public void depositar(double depositar) {
this.setSaldo(this.getSaldo() + depositar);
}
public void sacar(double valor) {
if ((this.getSaldo() + this.getLimite() - valor) > 0) {
this.setSaldo(this.getSaldo() - valor);
}
}
public double saldo() {
return this.saldo;
}
public void criarConta(Correntista correntista, Agencia agencia) {
this.setCorrentista(correntista);
this.setAgencia(agencia);
this.setLimite(0);
this.setSaldo(0);
}
public void setAgencia(Agencia agencia) {
this.agencia = agencia;
}
public Agencia getAgencia() {
return this.agencia;
}
public void setCorrentista(Correntista correntista) {
this.correntista = correntista;
}
public Correntista getCorrentista() {
return this.correntista;
}
public void setNumero(int numero) {
this.numero = numero;
}
public int getNumero() {
return this.numero;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public double getSaldo() {
return this.saldo;
}
public void setLimite(double limite) {
this.limite = limite;
}
public double getLimite() {
return this.limite;
}
}