Ir ao conteúdo

Posts recomendados

Postado

Olá pessoa, estou tendo um problema de null pointer no sistema que estou desenvolvendo usando MVC & DAO, estou tentando fazer um insert no banco de dados fazendo uso de uma chave estrangeira.

porém ao chegar no insert do DAO em  pstm.setInt(1, equipamento.getUnidade().getId()); ao tentar pegar o modelo unidade de equipamento getunidade e pegar seu id, a execução para e aponta:

 

Citação

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "model.Unidade.getId()" because the return value of "model.Equipamento.getUnidade()" is null

 

Equipamento.java

package model;

public class Equipamento 
{
    
    int id;
    
    Unidade unidade = new Unidade();
    
    String tipoequip;//OBRIGATORIO
    String tombo;//SE HOUVER
    String serie;//OBRIGATORIO
    String fornecedor;//OBRIGATORIO
    String fabricante;//OBRIGATORIO
    String modelo;//OBRIGATORIO
    String status; //Boolean, ou string?
    String equipamento;//OBRIGATORIO
    String observacao;//não
    
    //metodo construtor passando todos campos como obrigatorios
    public Equipamento(int id, Unidade unidade,String tipoequip,String tombo, String serie, String fornecedor, String fabricante, String modelo, 
                      String status, String equipamento, String observacao)
    {
        
        this.id = id;
        this.unidade = unidade;
        this.tipoequip = tipoequip;
        this.tombo = tombo;
        this.serie = serie;
        this.fornecedor =  fornecedor;
        this.fabricante = fabricante;
        this.modelo = modelo;
        this.status = status;
        this.equipamento = equipamento;
        this.observacao = observacao;
        
    }       
    
    //metodo construtor passando apenas os campos obrigatorios sem o id
    public Equipamento(Unidade unidade,String tipoequip,String tombo, String serie, String fornecedor, String fabricante, String modelo, 
                      String status, String equipamento, String observacao)
    {
        
        this.unidade = unidade;
        this.tipoequip = tipoequip;
        this.tombo = tombo;
        this.serie = serie;
        this.fornecedor =  fornecedor;
        this.fabricante = fabricante;
        this.modelo = modelo;
        this.status = status;
        this.equipamento = equipamento;       
        this.observacao = observacao;
        
    }            
    
    //metodo construtor vazio(NÃO APAGUE)
    public Equipamento() 
    {
        
    }
    
    //getters e setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Unidade getUnidade() {
        return unidade;
    }

    public void setUnidade(Unidade unidade) {
        this.unidade = unidade;
    }    

    public String getTipoequip() {
        return tipoequip;
    }

    public void setTipoequip(String tipoequip) {
        this.tipoequip = tipoequip;
    }

    public String getTombo() {
        return tombo;
    }

    public void setTombo(String tombo) {
        this.tombo = tombo;
    }

    public String getSerie() {
        return serie;
    }

    public void setSerie(String serie) {
        this.serie = serie;
    }

    public String getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(String fornecedor) {
        this.fornecedor = fornecedor;
    }

    public String getFabricante() {
        return fabricante;
    }

    public void setFabricante(String fabricante) {
        this.fabricante = fabricante;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getEquipamento() {
        return equipamento;
    }

    public void setEquipamento(String equipamento) {
        this.equipamento = equipamento;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }      
         
}

 

Unidade.java

package model;


public class Unidade 
{
    
    int id;
    String unidadenome;

    //metodo construtor
    public Unidade(int id, String unidadenome) 
    {
        this.id = id;
        this.unidadenome = unidadenome;
    }
    
    //metodo construtor sem id
    public Unidade(String unidadenome)
    {
        
        this.unidadenome = unidadenome;
        
    }        
    
    //metodo construtor vazio
    public Unidade() 
    {
        
        
        
    }
    
    //getters e setters

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUnidadenome() {
        return unidadenome;
    }

    public void setUnidadenome(String unidadenome) {
        this.unidadenome = unidadenome;
    }
    
    public String unidadeToString()
    {
        
        return getUnidadenome();
        
    }       
    
    public boolean equals(Object objeto)
    {
        
        Unidade u = (Unidade) objeto;
        
        if(this.id == u.getId())
        {
            
            return true;
            
        }
        else
        {
            
            return false;
            
        }    
        
    }        
    
}

 

EquipamentoDAO.java

package model.DAO;

import controller.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import model.Equipamento;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import model.Unidade;

public class EquipamentoDAO 
{
    
    private final Connection conexao;
    
    //metodo construtor
    public EquipamentoDAO(Connection conexao)
    {
        
        this.conexao = conexao;
        
    }        
    //função para inserir(insert)
    public void inserir(Equipamento equipamento) throws SQLException
    {
        
        //string sql
        String sql = "insert into equipamento(unidade,tipoequip,tombo,serie,fornecedor,fabricante,modelo,status,equipamento,observacao)values (?,?,?,?,?,?,?,?,?,?)";
        
        //criamos um statement para executar a query sql
        PreparedStatement pstm = conexao.prepareStatement(sql);
        
        try
        {
            
            //antes de executar pstm setString
            pstm.setInt(1, equipamento.getUnidade().getId());
            pstm.setString(2, equipamento.getTipoequip());
            pstm.setString(3, equipamento.getTombo());      
            pstm.setString(4, equipamento.getSerie());
            pstm.setString(5, equipamento.getFornecedor());   
            pstm.setString(6, equipamento.getFabricante());   
            pstm.setString(7, equipamento.getModelo());
            pstm.setString(8, equipamento.getStatus());
            pstm.setString(9, equipamento.getEquipamento());     
            pstm.setString(10, equipamento.getObservacao());
            //execute o pstm
            pstm.execute();            
            
        }
        catch(SQLException ex)
        {
            
            JOptionPane.showMessageDialog(null, "Error ao inserir equipamento no banco de dados!" + ex);            
            
        }
        finally
        {
               
        //feche a conexao e o pstm    
        conexao.close();    
        pstm.close();                
            
        }                
            
    }

 

CadastroEquipamentoController.java

package controller;

import controller.helper.CadastroEquipamentoHelper;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import model.Equipamento;
import view.TelaCadastroEquipamento;
import view.TelaPrincipal;
import java.sql.Connection;
import model.DAO.EquipamentoDAO;
import java.sql.SQLException;
import javax.swing.table.DefaultTableModel;
import model.DAO.UnidadeDAO;
import model.Unidade;

public class CadastroEquipamentoController 
{
    
    //cria arraylist do tipo Equipamento chamado equipamentos   
    ArrayList<Equipamento> equipamentos = new ArrayList<Equipamento>();    
    
    //cria variavel do tipo telacadastroequipamento e CadastroEquipamentoHelper e chamando-as de view e helper
    private TelaCadastroEquipamento view;
    private CadastroEquipamentoHelper helper;
    
    //cria variavel tipo TelaPrincipal chamada telaprincipal
    public TelaPrincipal TelaPrincipal;  
    
    //metodo construtor    
    public CadastroEquipamentoController(TelaCadastroEquipamento view) {
        this.view = view;
        this.helper = new CadastroEquipamentoHelper(view);
    }  

    //metodo construtor tela principal
    public CadastroEquipamentoController(TelaPrincipal viewprincipal) {
        this.TelaPrincipal  = viewprincipal;
    }    
       
    //metodo salvar equipamento
    public void salvarEquipamento()
    {
        
        //comparações logicas
        if(view.getTxtUnidade().getSelectedIndex() == 0 && view.getTxtTipoEquip().getText().trim().isEmpty() && view.getTxtTombo().getText().trim().isEmpty()
        && view.getTxtSerie().getText().trim().isEmpty() && view.getTxtFornecedor().getText().trim().isEmpty() && view.getTxtFabricante().getText().trim().isEmpty() &&
        view.getTxtModelo().getText().trim().isEmpty() && view.getTxtStatus().getSelectedIndex() == 0 && view.getTxtEquipamento().getSelectedIndex() == 0)
        {

            JOptionPane.showMessageDialog(null, "Campos obrigatorios vazios, preencha-os!!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);

        }
        else if(view.getTxtUnidade().getSelectedIndex() == 0 && view.getTxtTombo().getText().trim().isEmpty() && view.getTxtSerie().getText().trim().isEmpty())
        {

            JOptionPane.showMessageDialog(null, "Combobox unidade, campos tombo e serie vazios preencha-os!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);

        }
        else if(view.getTxtTipoEquip().getText().trim().isEmpty())
        {

            JOptionPane.showMessageDialog(null, "Campo tipo equip esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);

        } 
        else if(view.getTxtFornecedor().getText().trim().isEmpty())
        {
            
            JOptionPane.showMessageDialog(null, "Campo fornecedor esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        }    
        else if(view.getTxtFabricante().getText().trim().isEmpty())
        {
            
            JOptionPane.showMessageDialog(null, "Campo fabricante esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        }          
        else if(view.getTxtModelo().getText().trim().isEmpty())
        {
            
            JOptionPane.showMessageDialog(null, "Campo modelo esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        }  
        else if(view.getTxtStatus().getSelectedIndex() == 0)
        {
            
            JOptionPane.showMessageDialog(null, "Combobox status esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        } 
        else if(view.getTxtEquipamento().getSelectedIndex() == 0)
        {
            
            JOptionPane.showMessageDialog(null, "Campo equipamento esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        }              
        
            //compara se todos os campos foram preenchidos
            if(view.getTxtUnidade().getSelectedItem() != null && view.getTxtTipoEquip().getText().length() > 0 && view.getTxtTombo().getText().length() > 0
            &&view.getTxtSerie().getText().length() > 0 && view.getTxtFornecedor().getText().length() > 0 && view.getTxtFabricante().getText().length() > 0 &&
            view.getTxtModelo().getText().length() > 0 &&view.getTxtStatus().getSelectedItem() != null && view.getTxtEquipamento().getSelectedItem() != null
            && view.getTxtObservacao().getText().trim().isEmpty() || !view.getTxtObservacao().getText().trim().isEmpty())
            {
                //pega um equipamento da view
                Equipamento equipamento = helper.obterModeloSemID();
                
                try {
                    //cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
                    Connection conexao = new Conexao().Conectar();
                    //cria objeto do tipo EquipamentoDAO chamado equipamentoDAO passando novo EquipamentoDAO recebendo conexao
                    EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
                    //arraylist do tipo equipamento chamado equipamentos recebe equipamentoDAO.selecioneallequipamento
                    equipamentoDAO.inserir(equipamento);   
                    
                    //helper chama o metodo bloquear campos
                    helper.bloquearCampos();            
            
                    //helper chama metodo limpar tela(Campos)
                    helper.limparTela();    
            
                    //chama tabela equipamentos;
                    tabelaEquipamentos();               
            
                    JOptionPane.showMessageDialog(null, "Equipamento inserido com sucesso!");
            
                    //pegue exceção sql  
                } catch (SQLException ex) {
            
                    JOptionPane.showMessageDialog(null, "Error ao inserir equipamento no banco de dados! /nError:"+ex);
        
                }     
                
            }
    //metodo tabelaEquipamentos
    public void tabelaEquipamentos()
    {
        
        //se a view a tabela for diferente de nulo
        if(view.jTabelaCadEquip != null)
        {
            
            //modelo do tipo defaultablemodel recebe convertendo para defaulttablemodel a view passando a tabela e pegando seu modelo
            DefaultTableModel modelo = (DefaultTableModel) view.jTabelaCadEquip.getModel();
            
            //se as linhas do modelo for maior que zero
            if(modelo.getRowCount() > 0)
            {
                
                //sete as linhas como 0
                modelo.setRowCount(0);
                
            }    
            
            try
            {
                
                //cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
                Connection conexao = new Conexao().Conectar();
                //cria objeto do tipo EquipamentoDAO chamado equipamentoDAO passando novo EquipamentoDAO recebendo conexao
                EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
                
                //logins do tipo arraylist do tipo Equipamento recebe equipamentoDAO chamando metodo selecione todos equipamentos
                ArrayList<Equipamento> equipamentos = equipamentoDAO.selecioneAllEquipamento();
                
                //para cada equipamento no arraylist equipamentos
                for(Equipamento equipamento : equipamentos)
                {
                    
                    //quantidade de linhas que o objeto vai ter
                    Object[] linha = new Object[11];
                    
                    //pegue as respectivas linhas de cada equipamento e as sete
                    linha[0] = equipamento.getId();
                    linha[1] = equipamento.getUnidade().getUnidadenome();
                    linha[2] = equipamento.getTipoequip();
                    linha[3] = equipamento.getTombo();
                    linha[4] = equipamento.getSerie();
                    linha[5] = equipamento.getFornecedor();
                    linha[6] = equipamento.getFabricante();
                    linha[7] = equipamento.getModelo();
                    linha[8] = equipamento.getStatus();
                    linha[9] = equipamento.getEquipamento();
                    linha[10] = equipamento.getObservacao();
                    
                    //adicione as linhas ao modelo
                    modelo.addRow(linha);                                        
                    
                }    
                
            }    
           
            catch(SQLException ex)
            {
                
                JOptionPane.showMessageDialog(null, "Error ao preencher tabela!" + ex);
                
            }               
            
        }    
        
    } 
    
 public void atualizaUnidade()
 {
     
     try
     {
         
         //buscar unidade no banco de dados
         
            //cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
            Connection conexao = new Conexao().Conectar();  
            
            //cria objeto do tipo UnidadeDAO unidadedao passando UnidadeDAO recebendo conexao
            UnidadeDAO unidadedao = new UnidadeDAO(conexao);
            
            //cria arraylist de unidade chamado unidades passando o objeto unidadedao do tipo Unidade chamando o metodo selecioneAllUnidade
            ArrayList<Unidade> unidades = unidadedao.selecioneAllUnidade();
            
            //exibir login nome no combobox nome
            helper.preencherUnidade(unidades);
         
     }
     catch(SQLException ex)
     {
         
         JOptionPane.showMessageDialog(null,"Error a preencher combobox unidade:" +ex);
         
     }    
     
 }    
}

 

CadastroEquipamentoHelper.java

package controller.helper;
import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
import model.Equipamento;
import model.Unidade;
import view.TelaCadastroEquipamento;


public class CadastroEquipamentoHelper 
{
    
    private final TelaCadastroEquipamento view;
    
    //metodo construtor
    public CadastroEquipamentoHelper(TelaCadastroEquipamento view) {
        this.view = view;
    } 
    
    //metodo obter modelo sem id apenas para a inserção dos campos mais importantes
    public Equipamento obterModeloSemID()
    {
        

       Unidade unidade = obterUnidade();//Unidade unidade recebe metodo obter unidade neste helper
       String tipoequip = view.getTxtTipoEquip().getText();//String tipoequip recebe view pegue o getTextUnidade e pegue o texto
       String tombo = view.getTxtTombo().getText();//String tombo recebe view pegue o getTxtTombo e pegue o texto
       String serie = view.getTxtSerie().getText();//String serie recebe view pegue o getTxtSerie e pegue o texto
       String fornecedor = view.getTxtFornecedor().getText();//String fornecedor recebe view pegue o getTxtFornecedor e pegue o texto
       String fabricante = view.getTxtFabricante().getText();//String fabricante recebe view pegue o get TxtFabricante e pegue o texto
       String modelo = view.getTxtModelo().getText();//String modelo recebe view pegue o getTxtmodelo e pegue o texto
       String status = view.getTxtStatus().getSelectedItem().toString();//String status recebe view pegue o getselecteditem para string
       String equipamentouni = view.getTxtEquipamento().getSelectedItem().toString();//String equipamentouni recebe view pegue o getselected item para string
       String observacao = view.getTxtObservacao().getText();//String observacao recebe view pegue o getTextObservacao e pegue o texto
       
        //construir objeto do tipo equipamento
        Equipamento equipamento = new Equipamento(unidade,tipoequip,tombo,serie,fornecedor, fabricante,modelo,status,equipamentouni,observacao);      

        return equipamento;        
        
    } 
    
    //metodo obter modelo com todos os campos
    public Equipamento obterModelo()
    {
       Integer id = Integer.parseInt(view.getTxtId().getText());
       Unidade unidade = obterUnidade();//Unidade unidade recebe metodo obter unidade neste helper
       String tipoequip = view.getTxtTipoEquip().getText();//String tipoequip recebe view pegue o getTextUnidade e pegue o texto
       String tombo = view.getTxtTombo().getText();//String tombo recebe view pegue o getTxtTombo e pegue o texto
       String serie = view.getTxtSerie().getText();//String serie recebe view pegue o getTxtSerie e pegue o texto
       String fornecedor = view.getTxtFornecedor().getText();//String fornecedor recebe view pegue o getTxtFornecedor e pegue o texto
       String fabricante = view.getTxtFabricante().getText();//String fabricante recebe view pegue o get TxtFabricante e pegue o texto
       String modelo = view.getTxtModelo().getText();//String modelo recebe view pegue o getTxtmodelo e pegue o texto
       String status = view.getTxtStatus().getSelectedItem().toString();//String status recebe view pegue o getselecteditem para string
       String equipamentouni = view.getTxtEquipamento().getSelectedItem().toString();//String equipamentouni recebe view pegue o getselected item para string
       String observacao = view.getTxtObservacao().getText();//String observacao recebe view pegue o getTextObservacao e pegue o texto
       
        //construir objeto do tipo equipamento
        Equipamento equipamento = new Equipamento(id,unidade,tipoequip,tombo,serie,fornecedor, fabricante,modelo,status,equipamentouni,observacao);      

        return equipamento;   
        
    }

    //metodo para setar modelo
    public void setModelo()
    {
        
        int setar = view.jTabelaCadEquip.getSelectedRow();
        
        view.txtId.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 0).toString());
        view.txtUnidade.setSelectedItem(view.jTabelaCadEquip.getModel().getValueAt(setar, 1).toString());   
        view.txtTipoEquip.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 2).toString());
        view.txtTombo.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 3).toString());
        view.txtSerie.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 4).toString());
        view.txtFornecedor.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 5).toString());
        view.txtFabricante.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 6).toString());  
        view.txtModelo.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 7).toString());     
        view.txtStatus.setSelectedItem(view.jTabelaCadEquip.getModel().getValueAt(setar, 8).toString());   
        view.txtEquipamento.setSelectedItem(view.jTabelaCadEquip.getModel().getValueAt(setar, 9).toString());   
        view.txtObservacao.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 10).toString());   
    }        
    
    //metodo para limpar os campos
    public void limparTela()
    {
        
        view.getTxtUnidade().removeAllItems();
        view.getTxtTipoEquip().setText("");
        view.getTxtTombo().setText("");
        view.getTxtSerie().setText("");
        view.getTxtFornecedor().setText("");
        view.getTxtFabricante().setText("");
        view.getTxtModelo().setText("");
        view.getTxtStatus().removeAllItems();
        view.getTxtEquipamento().removeAllItems();
        view.getTxtObservacao().setText("");
        view.getjTabelaCadEquip().clearSelection();
        
    }    
    
    //metodo para bloquear os campos
    public void bloquearCampos()
    {
        view.getTxtUnidade().setEnabled(false);
        view.getTxtTipoEquip().setEnabled(false);
        view.getTxtTombo().setEnabled(false);
        view.getTxtSerie().setEnabled(false);
        view.getTxtFornecedor().setEnabled(false);
        view.getTxtFabricante().setEnabled(false);
        view.getTxtModelo().setEnabled(false);
        view.getTxtStatus().setEnabled(false);
        view.getTxtEquipamento().setEnabled(false);
        view.getTxtObservacao().setEnabled(false);
        
        view.btnEditar.setEnabled(false);
        view.btnSalvar.setEnabled(false);
        view.btnExcluir.setEnabled(true);
        view.btnPesquisar.setEnabled(false);        
    }
    
    //metodo para desbloquear campos
    public void desbloquearCampos()
    {
        
        view.getTxtUnidade().setEnabled(true);
        view.getTxtTipoEquip().setEnabled(true);
        view.getTxtTombo().setEnabled(true);
        view.getTxtSerie().setEnabled(true);
        view.getTxtFornecedor().setEnabled(true);
        view.getTxtFabricante().setEnabled(true);
        view.getTxtModelo().setEnabled(true);
        view.getTxtStatus().setEnabled(true);
        view.getTxtEquipamento().setEnabled(true);
        view.getTxtObservacao().setEnabled(true);     
        
        
        view.btnEditar.setEnabled(true);
        view.btnExcluir.setEnabled(true);
        view.btnSalvar.setEnabled(true);
        view.btnPesquisar.setEnabled(true);            
        
    }  
    
    public Unidade obterUnidade()
    {
        view.getTxtUnidade().removeAllItems();
        
        return (Unidade) view.getTxtUnidade().getSelectedItem();
        
    }        
    
    public void preencherUnidade(ArrayList<Unidade> unidades)
    {
        
        view.getTxtUnidade().removeAllItems();
        
        DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtUnidade().getModel();
        
        for(Unidade unidade : unidades)
        {
            
            combomodel.addElement(unidade.unidadeToString());
            
        }    
        
    }    
    
}

 

Abreviei parte do codigo para não ficar muito extenso:
Projeto no github:https://github.com/YUSEIRENDER/SemurrCEI

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!