Pessoal, estou tendo problemas ao incluir objeto no banco. Consigo fazer tudo que esta na tela, alterar, excluir, consultar tudo na boa. mas quando fecho a tela esta dando a mensagem de exceção ao sair (que salva o objeto ao sair).
Segue o código do controle e do banco para analise.
CONTROLE:
package controles;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import persistencia.BancoAeroGeral;
import persistencia.BancoAeronaves;
import empresas.aereas.AeronaveTransporte;
import empresas.aereas.Jato;
import empresas.aereas.TurboHelice;
public class ControleAeroGeral implements ActionListener {
private JFrame visao = null;
private JPanel painel = null;
private BancoAeronaves banco = null;
private AeronaveTransporte aero = null;
private JTextField txtCodigo = null;
private JTextField txtNivel = null;
private JTextField txtAutonomia = null;
private JTextField txtQuantidade = null;
private JTextField txtValor = null;
private JTextField txtCarga = null;
private JRadioButton rdbJato = null;
private JRadioButton rdbTurboHelice = null;
public ControleAeroGeral(JFrame visao) {
this.visao = visao;
try {
banco = new BancoAeronaves();
}
catch (Exception e) {
JOptionPane.showMessageDialog (visao,"Erro ao abrir!");
}
}
public void actionPerformed(ActionEvent evento) {
painel = (JPanel) visao.getContentPane();
txtCodigo = (JTextField) painel.getComponent(2);
txtNivel = (JTextField) painel.getComponent(4);
txtCarga = (JTextField) painel.getComponent(6);
txtAutonomia = (JTextField) painel.getComponent(8);
txtQuantidade = (JTextField) painel.getComponent(10);
txtValor = (JTextField) painel.getComponent(15);
rdbJato = (JRadioButton) painel.getComponent(11);
rdbTurboHelice = (JRadioButton) painel.getComponent(12);
if (evento.getActionCommand().equals("OBTER VALOR DA AERONAVE"))
obterValor();
else
if (evento.getActionCommand().equals("INCLUIR"))
incluir();
else
if (evento.getActionCommand().equals("ALTERAR"))
alterar();
else
if (evento.getActionCommand().equals("CONSULTAR"))
consultar();
else
if (evento.getActionCommand().equals("LIMPAR"))
limpar();
else
if (evento.getActionCommand().equals("EXCLUIR"))
excluir();
else
sair();
}
private void obterValor()
{
if ( rdbJato.isSelected())
{
aero = new Jato();
}
else
{
aero = new TurboHelice();
}
aero.setNivelVoo(Integer.parseInt(txtNivel.getText()));
aero.setCapacidadeCarga(Double.parseDouble(txtCarga.getText()));
aero.setAutonomia(Double.parseDouble(txtAutonomia.getText()));;
txtValor.setText(Double.toString(aero.obterValorVenda()));
}
private void incluir()
{
if ( rdbJato.isSelected())
{
aero = new Jato();
} else {
aero = new TurboHelice();
}
if (txtValor.getText().equals(""))
{
{JOptionPane.showMessageDialog (visao, "Para cadastrar, confira o valor antes!");}
} else {
aero.setCodigoAeronave(txtCodigo.getText());
aero.setCapacidadeCarga(Double.parseDouble(txtCarga.getText()));
aero.setAutonomia(Double.parseDouble(txtAutonomia.getText()));
aero.setNivelVoo(Integer.parseInt(txtNivel.getText()));
aero.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
aero.setValor(Double.parseDouble(txtValor.getText()));
banco.incluir(aero);
JOptionPane.showMessageDialog(visao, "Aeronave cadastrada com sucesso!");
}
limpar();
}
private void alterar()
{
if (txtCodigo.getText().equals(""))
{
JOptionPane.showMessageDialog(visao, "alteração nao correta");
} else {
aero = new Jato();
aero.setCodigoAeronave(txtCodigo.getText());
aero.setCapacidadeCarga(Double.parseDouble(txtCarga.getText()));
aero.setAutonomia(Double.parseDouble(txtAutonomia.getText()));
aero.setNivelVoo(Integer.parseInt(txtNivel.getText()));
aero.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
aero.obterValorVenda();
banco.alterar(aero);
JOptionPane.showMessageDialog(visao, "Aeronave alterada com sucesso!");
}
limpar();
}
private void limpar()
{
txtCodigo.setText ("");
txtCarga.setText ("");
txtAutonomia.setText ("");
txtValor.setText ("");
txtNivel.setText ("");
txtQuantidade.setText("");
}
private void excluir()
{
aero = new Jato();
aero.setCodigoAeronave(JOptionPane.showInputDialog(visao, "Digite o codigo da aeronave que deseja excluir: "));
banco.excluir(aero);
JOptionPane.showMessageDialog(visao, "Aeronave excluida com sucesso! Se excluiu sem querer, só lamento!");
limpar();
}
private void consultar()
{
aero = new Jato();
aero.setCodigoAeronave(JOptionPane.showInputDialog(visao, "Digite o codigo da aeronave: "));
aero = banco.consultar(aero);
if (aero != null)
{
txtCodigo.setText(aero.getCodigoAeronave());
txtNivel.setText(Integer.toString(aero.getNivelVoo()));
txtCarga.setText(Double.toString(aero.getCapacidadeCarga()));
txtQuantidade.setText(Integer.toString(aero.getQuantidade()));
txtAutonomia.setText(Double.toString(aero.getAutonomia()));
txtValor.setText(Double.toString(aero.obterValorVenda()));
} else {
JOptionPane.showMessageDialog(visao,"aeronave nao encontrada");
}
}
private void sair()
{
try {
banco.sair();
} catch (Exception e)
{
JOptionPane.showMessageDialog(visao, "Erro ao sair!");
}
finally
{
visao.dispose();
}
}
}
BANCO
package persistencia;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map;
import empresas.aereas.AeronaveTransporte;
public class BancoAeroGeral {
private File arquivo= null;
private Map <String, AeronaveTransporte> tabela = null;
private AeronaveTransporte aero = null;
public BancoAeroGeral() throws Exception
{
arquivo = new File ("aeronavesEstoque.txt");
if (! arquivo.exists())
{
tabela = new HashMap <String, AeronaveTransporte> ();
}
else
{ FileInputStream fluxoArquivo = new FileInputStream (arquivo);
ObjectInputStream fluxoObjeto = new ObjectInputStream (fluxoArquivo);
tabela = (HashMap <String, AeronaveTransporte>)fluxoObjeto.readObject();
fluxoObjeto.close();
}
}
public void incluir( AeronaveTransporte aero) {
tabela.put(aero.getCodigoAeronave(), aero);
}
public void alterar( AeronaveTransporte aero) {
tabela.put(aero.getCodigoAeronave(), aero);
}
public AeronaveTransporte consultar( AeronaveTransporte aero) {
aero = tabela.get(aero.getCodigoAeronave());
return aero;
}
public void excluir (AeronaveTransporte aero) {
tabela.remove(aero.getCodigoAeronave());
}
public void close () throws Exception {
FileOutputStream fluxoArquivo = new FileOutputStream (arquivo);
ObjectOutputStream fluxoObjeto = new ObjectOutputStream (fluxoArquivo);
fluxoObjeto.writeObject(tabela);
fluxoObjeto.close();
}
}
Agradeço a colaboração de todos.