Fala galera, segue minha dúvida:
Tenho uma tela de cadastro onde o campo “Finalizacao” é uma Date no banco MySql e no meu Jframe tenho um componente JdateChooser para representá-lo, quero dar alternativa ao usuário em preencher este campo ou apenas deixá-lo em branco, quando preenche ele está funcionando perfeitamente, salva no banco tudo OK, mas se eu deixo o JdateChooser vazio ao clicar em salvar não acontece nada, ou seja, meu Insert ou Update não funciona. Obs.: No banco este campo NÃO é obrigatório (Aceita null).
Segue apenas os trechos de código que está atrelado a minha dúvida:
Pacote bean (Entidade):
public class Rdi {
int RDI;
Date Abertura;
Date Finalizacao; //Aqui o Date que está dando problema
String Status;
Boolean Envio_999;
Boolean Gera_NQ;
String Claim;
String Processo;
String Gabarito;
String BIN;
String Material;
int Quantidade;
String Responsavel;
String Setor;
String Causa_Raiz;
String Erro_Identificado;
String Analise_Acao;
Boolean Contagem_Saldo;
Boolean Recontagem;
Boolean Varredura_FGI;
Boolean Auditoria_LT24;
Boolean Varredura_RW_NCM;
Boolean Varredura_Inbound;
Boolean Auditoria_Entrada;
Boolean Varredura_Agendamento;
Boolean Auditoria_Delivery;
Boolean Auditoria_Saida;
Boolean Revezamento;
//Método para exibir tudo que tem na classe
@Override
public String toString() {
return "Rdi{" + "RDI=" + RDI + ", Abertura=" + Abertura + ", Finalizacao=" + Finalizacao + ", Status=" + Status + ", Envio_999=" + Envio_999 + ", Gera_NQ=" + Gera_NQ + ", Claim=" + Claim + ", Processo=" + Processo + ", Gabarito=" + Gabarito + ", BIN=" + BIN + ", Material=" + Material + ", Quantidade=" + Quantidade + ", Responsavel=" + Responsavel + ", Setor=" + Setor + ", Causa_Raiz=" + Causa_Raiz + ", Erro_Identificado=" + Erro_Identificado + ", Analise_Acao=" + Analise_Acao + ", Contagem_Saldo=" + Contagem_Saldo + ", Recontagem=" + Recontagem + ", Varredura_FGI=" + Varredura_FGI + ", Auditoria_LT24=" + Auditoria_LT24 + ", Varredura_RW_NCM=" + Varredura_RW_NCM + ", Varredura_Inbound=" + Varredura_Inbound + ", Auditoria_Entrada=" + Auditoria_Entrada + ", Varredura_Agendamento=" + Varredura_Agendamento + ", Auditoria_Delivery=" + Auditoria_Delivery + ", Auditoria_Saida=" + Auditoria_Saida + ", Revezamento=" + Revezamento + '}';
}
//Construtor Vazio
public Rdi() {
}
//Contrutor que recebe parametros
public Rdi(Date Abertura, Date Finalizacao, String Status, Boolean Envio_999, Boolean Gera_NQ, String Claim, String Processo, String Gabarito, String BIN, String Material, int Quantidade, String Responsavel, String Setor, String Causa_Raiz, String Erro_Identificado, String Analise_Acao, Boolean Contagem_Saldo, Boolean Recontagem, Boolean Varredura_FGI, Boolean Auditoria_LT24, Boolean Varredura_RW_NCM, Boolean Varredura_Inbound, Boolean Auditoria_Entrada, Boolean Varredura_Agendamento, Boolean Auditoria_Delivery, Boolean Auditoria_Saida, Boolean Revezamento) {
//this.RDI = RDI;
this.Abertura = Abertura;
this.Finalizacao = Finalizacao;
this.Status = Status;
this.Envio_999 = Envio_999;
this.Gera_NQ = Gera_NQ;
this.Claim = Claim;
this.Processo = Processo;
this.Gabarito = Gabarito;
this.BIN = BIN;
this.Material = Material;
this.Quantidade = Quantidade;
this.Responsavel = Responsavel;
this.Setor = Setor;
this.Causa_Raiz = Causa_Raiz;
this.Erro_Identificado = Erro_Identificado;
this.Analise_Acao = Analise_Acao;
this.Contagem_Saldo = Contagem_Saldo;
this.Recontagem = Recontagem;
this.Varredura_FGI = Varredura_FGI;
this.Auditoria_LT24 = Auditoria_LT24;
this.Varredura_RW_NCM = Varredura_RW_NCM;
this.Varredura_Inbound = Varredura_Inbound;
this.Auditoria_Entrada = Auditoria_Entrada;
this.Varredura_Agendamento = Varredura_Agendamento;
this.Auditoria_Delivery = Auditoria_Delivery;
this.Auditoria_Saida = Auditoria_Saida;
this.Revezamento = Revezamento;
}
//Get and Set
public int getRDI() {
return RDI;
}
public void setRDI(int RDI) {
this.RDI = RDI;
}
public Date getAbertura() {
return Abertura;
}
public void setAbertura(Date Abertura) {
this.Abertura = Abertura;
}
public Date getFinalizacao() {
return Finalizacao;
}
public void setFinalizacao(Date Finalizacao) {
this.Finalizacao = Finalizacao;
}
public String getStatus() {
return Status;
}
public void setStatus(String Status) {
this.Status = Status;
}
public Boolean getEnvio_999() {
return Envio_999;
}
public void setEnvio_999(Boolean Envio_999) {
this.Envio_999 = Envio_999;
}
public Boolean getGera_NQ() {
return Gera_NQ;
}
public void setGera_NQ(Boolean Gera_NQ) {
this.Gera_NQ = Gera_NQ;
}
public String getClaim() {
return Claim;
}
public void setClaim(String Claim) {
this.Claim = Claim;
}
public String getProcesso() {
return Processo;
}
public void setProcesso(String Processo) {
this.Processo = Processo;
}
public String getGabarito() {
return Gabarito;
}
public void setGabarito(String Gabarito) {
this.Gabarito = Gabarito;
}
public String getBIN() {
return BIN;
}
public void setBIN(String BIN) {
this.BIN = BIN;
}
public String getMaterial() {
return Material;
}
public void setMaterial(String Material) {
this.Material = Material;
}
public int getQuantidade() {
return Quantidade;
}
public void setQuantidade(int Quantidade) {
this.Quantidade = Quantidade;
}
public String getResponsavel() {
return Responsavel;
}
public void setResponsavel(String Responsavel) {
this.Responsavel = Responsavel;
}
public String getSetor() {
return Setor;
}
public void setSetor(String Setor) {
this.Setor = Setor;
}
public String getCausa_Raiz() {
return Causa_Raiz;
}
public void setCausa_Raiz(String Causa_Raiz) {
this.Causa_Raiz = Causa_Raiz;
}
public String getErro_Identificado() {
return Erro_Identificado;
}
public void setErro_Identificado(String Erro_Identificado) {
this.Erro_Identificado = Erro_Identificado;
}
public String getAnalise_Acao() {
return Analise_Acao;
}
public void setAnalise_Acao(String Analise_Acao) {
this.Analise_Acao = Analise_Acao;
}
public Boolean getContagem_Saldo() {
return Contagem_Saldo;
}
public void setContagem_Saldo(Boolean Contagem_Saldo) {
this.Contagem_Saldo = Contagem_Saldo;
}
public Boolean getRecontagem() {
return Recontagem;
}
public void setRecontagem(Boolean Recontagem) {
this.Recontagem = Recontagem;
}
public Boolean getVarredura_FGI() {
return Varredura_FGI;
}
public void setVarredura_FGI(Boolean Varredura_FGI) {
this.Varredura_FGI = Varredura_FGI;
}
public Boolean getAuditoria_LT24() {
return Auditoria_LT24;
}
public void setAuditoria_LT24(Boolean Auditoria_LT24) {
this.Auditoria_LT24 = Auditoria_LT24;
}
public Boolean getVarredura_RW_NCM() {
return Varredura_RW_NCM;
}
public void setVarredura_RW_NCM(Boolean Varredura_RW_NCM) {
this.Varredura_RW_NCM = Varredura_RW_NCM;
}
public Boolean getVarredura_Inbound() {
return Varredura_Inbound;
}
public void setVarredura_Inbound(Boolean Varredura_Inbound) {
this.Varredura_Inbound = Varredura_Inbound;
}
public Boolean getAuditoria_Entrada() {
return Auditoria_Entrada;
}
public void setAuditoria_Entrada(Boolean Auditoria_Entrada) {
this.Auditoria_Entrada = Auditoria_Entrada;
}
public Boolean getVarredura_Agendamento() {
return Varredura_Agendamento;
}
public void setVarredura_Agendamento(Boolean Varredura_Agendamento) {
this.Varredura_Agendamento = Varredura_Agendamento;
}
public Boolean getAuditoria_Delivery() {
return Auditoria_Delivery;
}
public void setAuditoria_Delivery(Boolean Auditoria_Delivery) {
this.Auditoria_Delivery = Auditoria_Delivery;
}
public Boolean getAuditoria_Saida() {
return Auditoria_Saida;
}
public void setAuditoria_Saida(Boolean Auditoria_Saida) {
this.Auditoria_Saida = Auditoria_Saida;
}
public Boolean getRevezamento() {
return Revezamento;
}
public void setRevezamento(Boolean Revezamento) {
this.Revezamento = Revezamento;
}
}
Pacote DAO (Responsável pelos métodos):
public class RdiDAO {
//Método Inserir um registro na tabela Rdi(Insert - "C"RUD)
public int inserir(Rdi rdi) {
int ret = 0;
String sql = "INSERT INTO rdi (Abertura, Finalizacao, Status, Envio_999, Gera_NQ, Claim, Processo, Gabarito, BIN, Material, Quantidade, Responsavel, Setor, Causa_Raiz, Erro_Identificado, Analise_Acao, Contagem_Saldo, Recontagem, Varredura_FGI, Auditoria_LT24, Varredura_RW_NCM, Varredura_Inbound, Auditoria_Entrada, Varredura_Agendamento, Auditoria_Delivery, Auditoria_Saida, Revezamento)"
+ "VALUES( "
+ "'" + rdi.getAbertura() + "', "
+ "'" + rdi.getFinalizacao() + "', " //Aqui onde está dando problema
+ "'" + rdi.getStatus() + "', "
+ "'" + Util.verdadeiroFalso(rdi.getEnvio_999()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getGera_NQ()) + "', "
+ "'" + rdi.getClaim() + "', "
+ "'" + rdi.getProcesso() + "', "
+ "'" + rdi.getGabarito() + "', "
+ "'" + rdi.getBIN() + "', "
+ "'" + rdi.getMaterial() + "', "
+ "'" + rdi.getQuantidade() + "', "
+ "'" + rdi.getResponsavel() + "', "
+ "'" + rdi.getSetor() + "', "
+ "'" + rdi.getCausa_Raiz() + "', "
+ "'" + rdi.getErro_Identificado() + "', "
+ "'" + rdi.getAnalise_Acao() + "', "
+ "'" + Util.verdadeiroFalso(rdi.getContagem_Saldo()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getRecontagem()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getVarredura_FGI()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getAuditoria_LT24()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getVarredura_RW_NCM()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getVarredura_Inbound()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getAuditoria_Entrada()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getVarredura_Agendamento()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getAuditoria_Delivery()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getAuditoria_Saida()) + "', "
+ "'" + Util.verdadeiroFalso(rdi.getRevezamento()) + "' "
+ ")";
com.mysql.jdbc.Connection conn = ConnectionMySQL.getConnection();
Statement stmt = null;
try {
stmt = conn.createStatement();
ret = stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionMySQL.close(conn, stmt);
}
return ret;
}
//Metodo para Alterar dados de um registro da tabela Rdi (Update - CR"U"D)
public int alterar(Rdi rdi) {
int ret = 0;
String sql = "UPDATE rdi SET "
+ "Abertura='" + rdi.getAbertura() + "', "
+ "Finalizacao='" + rdi.getFinalizacao() + "', " //Aqui onde está dando problema
+ "Status='" + rdi.getStatus() + "', "
+ "Envio_999='" + Util.verdadeiroFalso(rdi.getEnvio_999()) + "', "
+ "Gera_NQ='" + Util.verdadeiroFalso(rdi.getGera_NQ()) + "', "
+ "Claim='" + rdi.getClaim() + "', "
+ "Processo='" + rdi.getProcesso() + "', "
+ "Gabarito='" + rdi.getGabarito() + "', "
+ "BIN='" + rdi.getBIN() + "', "
+ "Material='" + rdi.getMaterial() + "', "
+ "Quantidade='" + rdi.getQuantidade() + "', "
+ "Responsavel='" + rdi.getResponsavel() + "', "
+ "Setor='" + rdi.getSetor() + "', "
+ "Causa_Raiz='" + rdi.getCausa_Raiz() + "', "
+ "Erro_Identificado='" + rdi.getErro_Identificado() + "', "
+ "Analise_Acao='" + rdi.getAnalise_Acao() + "', "
+ "Contagem_Saldo='" + Util.verdadeiroFalso(rdi.getContagem_Saldo()) + "', "
+ "Recontagem='" + Util.verdadeiroFalso(rdi.getRecontagem()) + "', "
+ "Varredura_FGI='" + Util.verdadeiroFalso(rdi.getVarredura_FGI()) + "', "
+ "Auditoria_LT24='" + Util.verdadeiroFalso(rdi.getAuditoria_LT24()) + "', "
+ "Varredura_RW_NCM='" + Util.verdadeiroFalso(rdi.getVarredura_RW_NCM()) + "', "
+ "Varredura_Inbound='" + Util.verdadeiroFalso(rdi.getVarredura_Inbound()) + "', "
+ "Auditoria_Entrada='" + Util.verdadeiroFalso(rdi.getAuditoria_Entrada()) + "', "
+ "Varredura_Agendamento='" + Util.verdadeiroFalso(rdi.getVarredura_Agendamento()) + "', "
+ "Auditoria_Delivery='" + Util.verdadeiroFalso(rdi.getAuditoria_Delivery()) + "', "
+ "Auditoria_Saida='" + Util.verdadeiroFalso(rdi.getAuditoria_Saida()) + "', "
+ "Revezamento='" + Util.verdadeiroFalso(rdi.getRevezamento()) + "' "
+ "WHERE RDI = " + rdi.getRDI();
com.mysql.jdbc.Connection conn = ConnectionMySQL.getConnection();
Statement stmt = null;
try {
stmt = conn.createStatement();
ret = stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionMySQL.close(conn, stmt);
}
return ret;
}
Pacote view (Tela onde contém este componente):
RdiDAO rdiDAO;
private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
//Botão Salvar
private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {
if (txtRDI.getText().equals("")) {
Rdi rdi = new Rdi();
rdi.setAbertura(Util.stringToDate(Util.dateToString(txtAbertura.getDate())));
rdi.setFinalizacao(Util.stringToDate(Util.dateToString(txtFinalizacao.getDate()))); //Aqui onde está dando problema (Quero poder deixar vazio)
rdi.setStatus(txtStatus.getSelectedItem().toString());
rdi.setEnvio_999(Util.flag(txtEnvio_999));
rdi.setGera_NQ(Util.flag(txtGera_NQ));
rdi.setClaim(txtClaim.getSelectedItem().toString());
rdi.setProcesso(txtProcesso.getSelectedItem().toString());
rdi.setGabarito(txtGabarito.getText());
rdi.setBIN(txtBIN.getText());
rdi.setMaterial(txtMaterial.getText());
rdi.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
rdi.setResponsavel(txtResponsavel.getSelectedItem().toString());
rdi.setSetor(txtSetor.getSelectedItem().toString());
rdi.setCausa_Raiz(txtCausa_Raiz.getSelectedItem().toString());
rdi.setErro_Identificado(txtErro_Identificado.getSelectedItem().toString());
rdi.setAnalise_Acao(txtAnalise_Acao.getText());
rdi.setContagem_Saldo(Util.flag(txtContagem_Saldo));
rdi.setRecontagem(Util.flag(txtRecontagem));
rdi.setVarredura_FGI(Util.flag(txtVarredura_FGI));
rdi.setAuditoria_LT24(Util.flag(txtAuditoria_LT24));
rdi.setVarredura_RW_NCM(Util.flag(txtVarredura_RW_NCM));
rdi.setVarredura_Inbound(Util.flag(txtVarredura_Inbound));
rdi.setAuditoria_Entrada(Util.flag(txtAuditoria_Entrada));
rdi.setVarredura_Agendamento(Util.flag(txtVarredura_Agendamento));
rdi.setAuditoria_Delivery(Util.flag(txtAuditoria_Delivery));
rdi.setAuditoria_Saida(Util.flag(txtAuditoria_Saida));
rdi.setRevezamento(Util.flag(txtRevezamento));
RdiDAO rdiDAO = new RdiDAO();
int ret = rdiDAO.inserir(rdi);
if (ret > 0) {
JOptionPane.showMessageDialog(this, "Registro Salvo!");
carregaRdi();
}else
JOptionPane.showMessageDialog(this, "Erro");
} else {
Rdi rdi = new Rdi();
rdi.setRDI(Integer.parseInt(txtRDI.getText()));
rdi.setAbertura(Util.stringToDate(Util.dateToString(txtAbertura.getDate())));
rdi.setFinalizacao(Util.stringToDate(Util.dateToString(txtFinalizacao.getDate())));
rdi.setStatus(txtStatus.getSelectedItem().toString());
rdi.setEnvio_999(Util.flag(txtEnvio_999));
rdi.setGera_NQ(Util.flag(txtGera_NQ));
rdi.setClaim(txtClaim.getSelectedItem().toString());
rdi.setProcesso(txtProcesso.getSelectedItem().toString());
rdi.setGabarito(txtGabarito.getText());
rdi.setBIN(txtBIN.getText());
rdi.setMaterial(txtMaterial.getText());
rdi.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
rdi.setResponsavel(txtResponsavel.getSelectedItem().toString());
rdi.setSetor(txtSetor.getSelectedItem().toString());
rdi.setCausa_Raiz(txtCausa_Raiz.getSelectedItem().toString());
rdi.setErro_Identificado(txtErro_Identificado.getSelectedItem().toString());
rdi.setAnalise_Acao(txtAnalise_Acao.getText());
rdi.setContagem_Saldo(Util.flag(txtContagem_Saldo));
rdi.setRecontagem(Util.flag(txtRecontagem));
rdi.setVarredura_FGI(Util.flag(txtVarredura_FGI));
rdi.setAuditoria_LT24(Util.flag(txtAuditoria_LT24));
rdi.setVarredura_RW_NCM(Util.flag(txtVarredura_RW_NCM));
rdi.setVarredura_Inbound(Util.flag(txtVarredura_Inbound));
rdi.setAuditoria_Entrada(Util.flag(txtAuditoria_Entrada));
rdi.setVarredura_Agendamento(Util.flag(txtVarredura_Agendamento));
rdi.setAuditoria_Delivery(Util.flag(txtAuditoria_Delivery));
rdi.setAuditoria_Saida(Util.flag(txtAuditoria_Saida));
rdi.setRevezamento(Util.flag(txtRevezamento));
RdiDAO rdiDAO = new RdiDAO();
int ret = rdiDAO.alterar(rdi);
if (ret > 0) {
JOptionPane.showMessageDialog(this, "Registro Salvo!");
carregaRdi();
}else
JOptionPane.showMessageDialog(this, "Erro!");
}
}
Pacote Util (Metodos uteis)
//Metodo para transformar String em Data
public static Date stringToDate(String dataStr) {
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date data = null;
try {
data = new Date(format.parse(dataStr).getTime());
} catch (ParseException ex) {
Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);
}
return data;
}
//Metodo para transformar Data em String para poder jogar xx/xx/xxxx
public static String dateToString(java.util.Date data) {
String dataFormatada = new SimpleDateFormat("dd/MM/yyyy").format(data);
return dataFormatada;
}