Toda vez que uso o cadastro de endereço de entrega de clientes são criados dois objetos DAO, nas linhas abaixo:
private EndEntCliDAO endEntClientes;
private CliDAO clientes;
Mas dentro de cada classe DAO tem uma chamada a uma classe BD que faz a conexão. E o chamado a conexão pela classe GuiCadastroEndEnt.java está da seguinte forma:
if(!endEntClientes.bd.getConnection()) {
JOptionPane.showMessageDialog(null, "Falha na conexão, o sistema será fechado!");
System.exit(0);
}
Veja que o programa antigo tinha a necessidade de fazer uma referência ao objeto endEntClientes que é da classe DAO e ao objeto bd que é da classe BD para usar o método getConnection() que faz conexão com o banco de dados e retorna verdadeiro ou falso se não consegue conectar. Mas preciso mudar isto. só vai existir uma conexão que vai ser feita uma vez apenas. Pelo meu entendimento não posso mais ter um objeto bd ligado ao endEntClientes e outro ligado ao clientes (ambos de classes DAO diferentes. Fiz uma modificação no BD (que nosso colega Staroski recomendou) e preciso adequar os programas DAO e Cadastros. Pessoal do GUJ de uma olhada nos quatro programas (classes GuiCadastroEndEntCli, EndEntCliDAO, CliDAO, BD) que vão trabalhar juntos e me digam como posso usar o if(!endEntClientes.bd.getConnection()). Com a modificação achei que não era mais necessário fazer referência ao objeto DAO endEntClientes e poderia sempre usar a referência partindo do objeto criado bd. Lembre-se antes cada objeto DAO tinha um BD diferente mas não pode ser assim senão a conexão é feito toda vez que uso uma tabela diferente e estes quatro programas que trabalham juntos usam duas tabelas. As tabelas usadas são cli_entrega e clientes.
Abaixo vou colocar os quatro programas com extensão java, e espero uma postagem de vocês me indicando o que devo fazer em cada programa.
Muito obrigado,
Ronaldo
Este abaixo é o programa da classe GuiCadastroEndEntCli.java
package br.com.gui;
import bdclientes.CliDAO;
import bdclientes.enderecoEntregaCliente.EndEntCliDAO;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author Ronaldo Rodrigues Godoi
*/
public class GuiCadastroEndEntCli extends JPanel {
JLabel lbCad_end_ent_cli, lbLargura, lbAltura, lbNome_razao;
JLabel lbId, lbId_cliente, lbTelefone, lbCep, lbEndereco, lbNumero,
lbComplemento, lbBairro, lbCidade, lbEstado;
JButton btGravar, btAlterar, btExcluir, btNovo, btLocalizar, btCancelar, btSair;
JTextField tfId, tfId_cliente, tfTelefone, tfCep, tfEndereco, tfNumero,
tfComplemento, tfBairro, tfCidade, tfEstado;
private EndEntCliDAO endEntClientes;
private CliDAO clientes;
public GuiCadastroEndEntCli() {
inicializarComponentes();
definirEventos();
}
public void inicializarComponentes() {
setLayout(null);
Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
lbLargura = new JLabel(""+tela.width);
lbAltura = new JLabel(""+tela.height);
int altura = 1000;
int largura = 1800;
setBounds(0, 0, largura, altura);
lbCad_end_ent_cli = new JLabel("Cadastro de Endereço de Entrega de Clientes");
lbId = new JLabel("Id do endereço de Entrega");
lbId_cliente = new JLabel("CPF ou CGC: ");
lbTelefone = new JLabel("Telefone: ");
lbCep = new JLabel("CEP: ");
lbEndereco = new JLabel("Endereço: ");
lbNumero = new JLabel("Número:");
lbComplemento = new JLabel("Complemento: ");
lbBairro = new JLabel("Bairro: ");
lbCidade = new JLabel("Cidade: ");
lbEstado = new JLabel("Estado: ");
lbNome_razao = new JLabel("Nome ou Razão: ");
tfId = new JTextField(10);
tfId_cliente = new JTextField(20);
tfTelefone = new JTextField(17);
tfCep = new JTextField(9);
tfEndereco = new JTextField(60);
tfNumero = new JTextField(10);
tfComplemento = new JTextField(40);
tfBairro = new JTextField(60);
tfCidade = new JTextField(40);
tfEstado = new JTextField(2);
btGravar = new JButton(null, new ImageIcon("c:/icones/icon12/gravar.gif"));
btGravar.setToolTipText("Gravar");
btAlterar = new JButton(null, new ImageIcon("c:/icones/icon12/alterar.gif"));
btAlterar.setToolTipText("Alterar");
btExcluir = new JButton(null, new ImageIcon("c:/icones/icon12/excluir.gif"));
btExcluir.setToolTipText("Excluir");
btLocalizar = new JButton(null, new ImageIcon("c:/icones/icon12/localizar.png"));
btLocalizar.setToolTipText("Localizar");
btNovo = new JButton(null, new ImageIcon("c:/icones/icon12/novo.gif"));
btNovo.setToolTipText("Novo");
btCancelar = new JButton(null, new ImageIcon("c:/icones/icon12/cancelar.gif"));
btCancelar.setToolTipText("Cancelar");
btSair = new JButton(null, new ImageIcon("c:/icones/icon12/sair.png"));
btSair.setToolTipText("Sair");
lbCad_end_ent_cli.setBounds(35, 75, 250, 25);
lbId.setBounds(35, 175, 200, 25);
tfId.setBounds(250, 175, 75, 25);
lbId_cliente.setBounds(35, 250, 100, 25);
tfId_cliente.setBounds(115, 250, 150, 25);
lbNome_razao.setBounds(35, 280, 400, 25);
lbTelefone.setBounds(450, 250, 100, 25);
tfTelefone.setBounds(520, 250, 100, 25);
lbCep.setBounds(35, 325, 100, 25);
tfCep.setBounds(75, 325, 100, 25);
lbEndereco.setBounds(200, 325, 100, 25);
tfEndereco.setBounds(270, 325, 300, 25);
lbNumero.setBounds(665, 325, 100, 25);
tfNumero.setBounds(735, 325, 100, 25);
lbComplemento.setBounds(35, 400, 150, 25);
tfComplemento.setBounds(130, 400, 225, 25);
lbBairro.setBounds(400, 400, 50, 25);
tfBairro.setBounds(495, 400, 250, 25);
lbCidade.setBounds(35, 475, 200, 25);
tfCidade.setBounds(90, 475, 280, 25);
lbEstado.setBounds(450, 475, 100, 25);
tfEstado.setBounds(500, 475, 30, 25);
btNovo.setBounds (45, 550, 75, 75);
btLocalizar.setBounds(145, 550, 75, 75);
btGravar.setBounds (245, 550, 75, 75);
btAlterar.setBounds (345, 550, 75, 75);
btExcluir.setBounds (445, 550, 75, 75);
btCancelar.setBounds (545, 550, 75, 75);
btSair.setBounds (645, 550, 75, 75);
lbLargura.setBounds (745, 550, 75, 75);
lbAltura.setBounds (845, 550, 75, 75);
add(lbCad_end_ent_cli);
add(lbLargura);
add(lbAltura);
add(lbId);
add(tfId);
add(lbId_cliente);
add(tfId_cliente);
add(lbNome_razao);
add(lbTelefone);
add(tfTelefone);
add(lbCep);
add(tfCep);
add(lbEndereco);
add(tfEndereco);
add(lbNumero);
add(tfNumero);
add(lbComplemento);
add(tfComplemento);
add(lbBairro);
add(tfBairro);
add(lbCidade);
add(tfCidade);
add(lbEstado);
add(tfEstado);
add(btNovo);
add(btLocalizar);
add(btGravar);
add(btAlterar);
add(btExcluir);
add(btCancelar);
add(btSair);
//setResizable(false);
setBotoes(true, true, false, false, false, false);
endEntClientes = new EndEntCliDAO();
clientes = new CliDAO();
if(!endEntClientes.bd.getConnection()) {
JOptionPane.showMessageDialog(null, "Falha na conexão, o sistema será fechado!");
System.exit(0);
}
}
public void definirEventos() {
tfId_cliente.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
clientes.cliente.setId_cgc_cpf(tfId_cliente.getText());
if(!clientes.localizar()) {
JOptionPane.showMessageDialog(null, "Cliente não cadastrado!");
tfId.requestFocus();
} else {
tfTelefone.requestFocus();
lbNome_razao.setText("Nome ou Razão: " +
clientes.cliente.getNome_razao());
}
return;
}
});
btSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
endEntClientes.bd.close();
setVisible(false);
}
});
btNovo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
limparCampos();
setBotoes(false, false, true, false, false, true);
}
});
btCancelar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
limparCampos();
}
});
btGravar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(tfId.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O código do endereço de entrega não pode estar vazio!");
tfId.requestFocus();
return;
}
if(tfId_cliente.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O CPF ou CGC não podem ser vazios!");
tfId_cliente.requestFocus();
return;
}
if(tfCep.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O CEP não pode ser vazio!");
tfCep.requestFocus();
return;
}
if(tfEndereco.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O Endereço não pode ser vazio!");
tfEndereco.requestFocus();
return;
}
if(tfNumero.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O número não pode ser vazio!");
tfNumero.requestFocus();
return;
} else {
try {
int numero = Integer.parseInt(tfNumero.getText());
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, "O número não pode contém caracteres invalidos!");
tfNumero.requestFocus();
return;
}
}
if(tfCidade.getText().equals("")) {
JOptionPane.showMessageDialog(null, "A cidade não pode ser vazia!");
tfCidade.requestFocus();
return;
}
if(tfBairro.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O bairro não pode ser vazio");
tfBairro.requestFocus();
return;
}
if(tfEstado.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O estado não pode estar vazio!");
tfEstado.requestFocus();
return;
}
endEntClientes.cli_entrega.setId(tfId.getText());
endEntClientes.cli_entrega.setId_cliente(tfId_cliente.getText());
endEntClientes.cli_entrega.setTelefone(tfTelefone.getText());
endEntClientes.cli_entrega.setCep(tfCep.getText());
endEntClientes.cli_entrega.setEndereco(tfEndereco.getText());
endEntClientes.cli_entrega.setNumero(tfNumero.getText());
endEntClientes.cli_entrega.setComplemento(tfComplemento.getText());
endEntClientes.cli_entrega.setBairro(tfBairro.getText());
endEntClientes.cli_entrega.setCidade(tfCidade.getText());
endEntClientes.cli_entrega.setEstado(tfEstado.getText());
JOptionPane.showMessageDialog(null, endEntClientes.atualizar(EndEntCliDAO.INCLUSAO));
limparCampos();
}
});
btAlterar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
endEntClientes.cli_entrega.setId(tfId.getText());
endEntClientes.cli_entrega.setTelefone(tfTelefone.getText());
endEntClientes.cli_entrega.setCep(tfCep.getText());
endEntClientes.cli_entrega.setEndereco(tfEndereco.getText());
endEntClientes.cli_entrega.setNumero(tfNumero.getText());
endEntClientes.cli_entrega.setComplemento(tfComplemento.getText());
endEntClientes.cli_entrega.setBairro(tfBairro.getText());
endEntClientes.cli_entrega.setCidade(tfCidade.getText());
endEntClientes.cli_entrega.setEstado(tfEstado.getText());
JOptionPane.showMessageDialog(null, endEntClientes.atualizar(EndEntCliDAO.ALTERACAO));
limparCampos();
}
});
btExcluir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
endEntClientes.cli_entrega.setId(tfId.getText());
endEntClientes.localizar();
int n = JOptionPane.showConfirmDialog(null, endEntClientes.cli_entrega.getId_cliente(),
"Excluir o endereço de entrega de cliente? ", JOptionPane.YES_NO_OPTION);
if(n == JOptionPane.YES_OPTION) {
JOptionPane.showMessageDialog(null, endEntClientes.atualizar(EndEntCliDAO.EXCLUSAO));
limparCampos();
}
}
});
btLocalizar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
atualizarCampos();
}
});
}
public void limparCampos() {
tfId.setText("");
tfId_cliente.setText("");
tfTelefone.setText("");
tfCep.setText("");
tfEndereco.setText("");
tfNumero.setText("");
tfComplemento.setText("");
tfBairro.setText("");
tfCidade.setText("");
tfEstado.setText("");
setBotoes(true, true, false, false, false, false);
}
public void atualizarCampos() {
endEntClientes.cli_entrega.setId(tfId.getText());
if(endEntClientes.localizar()) {
tfId_cliente.setText(endEntClientes.cli_entrega.getId_cliente());
tfTelefone.setText(endEntClientes.cli_entrega.getTelefone());
tfCep.setText(endEntClientes.cli_entrega.getCep());
tfEndereco.setText(endEntClientes.cli_entrega.getEndereco());
tfNumero.setText(endEntClientes.cli_entrega.getNumero());
tfComplemento.setText(endEntClientes.cli_entrega.getComplemento());
tfBairro.setText(endEntClientes.cli_entrega.getBairro());
tfCidade.setText(endEntClientes.cli_entrega.getCidade());
tfEstado.setText(endEntClientes.cli_entrega.getEstado());
setBotoes(true, true, false, true, true, true);
} else {
JOptionPane.showMessageDialog(null, "Endereço de Cliente não encontrado! " + endEntClientes.cli_entrega.getId());
limparCampos();
}
}
public void setBotoes(boolean bNovo, boolean bLocalizar, boolean bGravar,
boolean bAlterar, boolean bExcluir, boolean bCancelar) {
btNovo.setEnabled(bNovo);
btLocalizar.setEnabled(bLocalizar);
btGravar.setEnabled(bGravar);
btAlterar.setEnabled(bAlterar);
btExcluir.setEnabled(bExcluir);
btCancelar.setEnabled(bCancelar);
}
}
/*
Table: cli_entrega
Columns:
id varchar(10) PK
id_cliente varchar(10)
telefone varchar(20)
cep varchar(9)
endereco varchar(60)
numero int
complemento varchar(40)
bairro varchar(60)
cidade varchar(40)
estado varchar(2)
*/
Este abaixo é o programa da classe EndEntCliDAO.java
package bdclientes.enderecoEntregaCliente;
import empresaiv.BD;
import java.sql.*;
/**
*
* @author Ronaldo Rodrigues Godoi
*/
public class EndEntCliDAO {
public Cli_entregas cli_entrega;
public BD bd;
private PreparedStatement statement;
private ResultSet resultSet;
private String men, sql;
public static final byte INCLUSAO = 1;
public static final byte ALTERACAO = 2;
public static final byte EXCLUSAO = 3;
public EndEntCliDAO() {
bd = BD.getInstance();
cli_entrega = new Cli_entregas();
}
public boolean localizar() {
sql = "select * from cli_entrega where id = ?";
try {
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cli_entrega.getId());
resultSet = statement.executeQuery();
resultSet.next();
cli_entrega.setId_cliente(resultSet.getString(2));
cli_entrega.setTelefone(resultSet.getString(3));
cli_entrega.setCep(resultSet.getString(4));
cli_entrega.setEndereco(resultSet.getString(5));
cli_entrega.setNumero(resultSet.getString(6));
cli_entrega.setComplemento(resultSet.getString(7));
cli_entrega.setBairro(resultSet.getString(8));
cli_entrega.setCidade(resultSet.getString(9));
cli_entrega.setEstado(resultSet.getString(10));
return true;
} catch(SQLException erro) {
System.out.println("erro: " + erro.toString() + sql + cli_entrega.getId());
return false;
}
}
public String atualizar(int operacao) {
men = "Operação realizada com sucesso!";
try {
if(operacao == INCLUSAO) {
sql = "insert into cli_entrega values (?, ?, ?, ?, ?, ?, ? , ?, ?, ?)";
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cli_entrega.getId());
statement.setString(2, cli_entrega.getId_cliente());
statement.setString(3, cli_entrega.getTelefone());
statement.setString(4, cli_entrega.getCep());
statement.setString(5, cli_entrega.getEndereco());
statement.setString(6, cli_entrega.getNumero());
statement.setString(7, cli_entrega.getComplemento());
statement.setString(8, cli_entrega.getBairro());
statement.setString(9, cli_entrega.getCidade());
statement.setString(10, cli_entrega.getEstado());
System.out.println("Id: " + cli_entrega.getId() +
" Id cliente: " + cli_entrega.getId_cliente() +
" Telefone: " + cli_entrega.getTelefone());
} else if(operacao == ALTERACAO) {
sql = "update cli_entrega set id_cliente = ?,"
+ " telefone = ?,"
+ " cep = ?,"
+ " endereco = ?,"
+ " numero = ?,"
+ " complemento = ?,"
+ " bairro = ?,"
+ " cidade = ?,"
+ " estado = ? where id = ?";
statement = bd.connection.prepareStatement(sql);
statement.setString(10, cli_entrega.getId());
statement.setString(1, cli_entrega.getId_cliente());
statement.setString(2, cli_entrega.getTelefone());
statement.setString(3, cli_entrega.getCep());
statement.setString(4, cli_entrega.getEndereco());
statement.setString(5, cli_entrega.getNumero());
statement.setString(6, cli_entrega.getComplemento());
statement.setString(7, cli_entrega.getBairro());
statement.setString(8, cli_entrega.getCidade());
statement.setString(9, cli_entrega.getEstado());
} else if(operacao == EXCLUSAO) {
sql = "delete from cli_entrega where id = ?";
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cli_entrega.getId());
}
if(statement.executeUpdate() == 0) {
men = "Falha na operação!";
}
} catch (SQLException erro) {
men = "Falha na operação! " + erro.toString()+" "+sql;
}
return men;
}
}
/*
Table: cli_entrega
Columns:
id varchar(10) PK
id_cliente varchar(16)
telefone varchar(20)
cep varchar(9)
endereco varchar(60)
numero int
complemento varchar(40)
bairro varchar(60)
cidade varchar(40)
estado varchar(2)
*/
Este programa abaixo é o CliDAO:
package bdclientes;
/**
*
* @author Ronaldo Rodrigues Godoi
*/
import empresaiv.BD;
import java.sql.*;
/**
*
* @author Ronaldo R. Godoi
*/
public class CliDAO {
public Clientes cliente;
public BD bd;
private PreparedStatement statement;
private ResultSet resultSet;
private String men, sql;
public static final byte INCLUSAO = 1;
public static final byte ALTERACAO = 2;
public static final byte EXCLUSAO = 3;
public CliDAO() {
bd = BD.getInstance();
cliente = new Clientes();
}
public boolean localizar() {
sql = "select * from clientes where id_cgc_cpf = ?";
try {
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cliente.getId_cgc_cpf());
resultSet = statement.executeQuery();
resultSet.next();
cliente.setId_cgc_cpf(resultSet.getString(1));
cliente.setCep(resultSet.getString(6));
cliente.setEndereco(resultSet.getString(7));
cliente.setNumero(resultSet.getString(8));
cliente.setComplemento(resultSet.getString(9));
cliente.setBairro(resultSet.getString(10));
cliente.setCidade(resultSet.getString(11));
cliente.setEstado(resultSet.getString(12));
cliente.setData_cadastro("" + resultSet.getString(13));
return true;
} catch(SQLException erro) {
System.out.println("erro: " + erro.toString() + sql + cliente.getId_cgc_cpf());
return false;
}
}
public String atualizar(int operacao) {
men = "Operação realizada com sucesso!";
try {
if(operacao == INCLUSAO) {
sql = "insert into clientes values (?, ?, ?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?)";
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cliente.getId_cgc_cpf());
statement.setString(2, cliente.getFisica_juridica());
statement.setString(3, cliente.getNome_razao());
statement.setString(4, cliente.getEmail());
statement.setString(5, cliente.getTelefone());
statement.setString(6, cliente.getCep());
statement.setString(7, cliente.getEndereco());
statement.setString(8, cliente.getNumero());
statement.setString(9, cliente.getComplemento());
statement.setString(10, cliente.getBairro());
statement.setString(11, cliente.getCidade());
statement.setString(12, cliente.getEstado());
statement.setString(13, cliente.getData_cadastro());
} else if(operacao == ALTERACAO) {
sql = "update clientes set fisica_juridica = ?,"
+ " nome_razao = ?,"
+ " email = ?,"
+ " telefone = ?,"
+ " cep = ?,"
+ " endereco = ?,"
+ " numero = ?,"
+ " complemento = ?,"
+ " bairro = ?,"
+ " cidade = ?,"
+ " estado = ?,"
+ " data_cadastro = ? where id_cgc_cpf = ?";
statement = bd.connection.prepareStatement(sql);
statement.setString(13, cliente.getId_cgc_cpf());
statement.setString(1, cliente.getFisica_juridica());
statement.setString(2, cliente.getNome_razao());
statement.setString(3, cliente.getEmail());
statement.setString(4, cliente.getTelefone());
statement.setString(5, cliente.getCep());
statement.setString(6, cliente.getEndereco());
statement.setString(7, cliente.getNumero());
statement.setString(8, cliente.getComplemento());
statement.setString(9, cliente.getBairro());
statement.setString(10, cliente.getCidade());
statement.setString(11, cliente.getEstado());
statement.setString(12, cliente.getData_cadastro());
} else if(operacao == EXCLUSAO) {
sql = "delete from clientes where id_cgc_cpf = ?";
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cliente.getId_cgc_cpf());
}
if(statement.executeUpdate() == 0) {
men = "Falha na operação!";
}
} catch (SQLException erro) {
men = "Falha na operação! " + erro.toString()+" "+sql;
}
return men;
}
}
/*
Columns:
id_cgc_cpf varchar(16) PK
fisica_juridica varchar(1)
nome_razao varchar(60)
email varchar(80)
telefone varchar(20)
cep varchar(9)
endereco varchar(60)
numero int
complemento varchar(40)
bairro varchar(60)
cidade varchar(40)
estado varchar(2)
data_cadastro datetime
*/
Este programa abaixo é o BD.java:
/**
* @author Ronaldo R. Godoi, contibuição de Staroski
*/
public final class BD {
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DBNAME = "empresa";
private static final String URL = "jdbc:mysql://localhost:3306/" + DBNAME;
private static final String LOGIN = "root";
private static final String SENHA = "04latosensu10";
/**
* Única instância desta classe
*/
private static BD instance;
/**
* Obtém a única instância desta classe
*/
public static synchronized BD getInstance() {
if (instance == null) {
instance = new BD();
}
return instance;
}
public final Connection connection;
/**
* Construtor privado
*/
private BD() {
try {
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL, LOGIN, SENHA);
System.out.println("Conectou! ");
} catch (Throwable t) {
throw new RuntimeException("Erro ao inicializar BD", t);
}
}
/**
* Fecha a conexão com o banco
*/
public void close() {
try {
connection.close();
System.out.println("Desconectou...");
} catch(Throwable t) {
throw new RuntimeException("Erro ao fechar BD", t);
}
}
}