我是购物台式机应用程序上的新手程序员,但是每当我尝试添加新产品时,我都会不断得到这个信息:
线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException 在shop_online.dao.mysql.ArticoloDAO.add(ArticoloDAO.java:46) 在shop_online.business.GestoreBSN.createArticolo(GestoreBSN.java:46) 在> shop_online.listeners.AggiungiProdottoListener.actionPerformed(AggiungiProdotto> Listener.java:63) 在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在> javax.swing.AbstractButton $ Handler.actionPerformed(AbstractButton.java:2348) 在> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.ja> va:252) 在java.awt.Component.processMouseEvent(Component.java:6539) 在javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 在java.awt.Component.processEvent(Component.java:6304) 在java.awt.Container.processEvent(Container.java:2239) 在java.awt.Component.dispatchEventImpl(Component.java:4889) 在java.awt.Container.dispatchEventImpl(Container.java:2297) 在java.awt.Component.dispatchEvent(Component.java:4711) 在java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) 在java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535) 在java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) 在java.awt.Container.dispatchEventImpl(Container.java:2283) 在java.awt.Window.dispatchEventImpl(Window.java:2746) 在java.awt.Component.dispatchEvent(Component.java:4711) 在java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) 在java.awt.EventQueue.access $ 500(EventQueue.java:97) 在java.awt.EventQueue $ 3.run(EventQueue.java:709) 在java.awt.EventQueue $ 3.run(EventQueue.java:703) 在java.security.AccessController.doPrivileged(本机方法) 在> java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(P> rotectionDomain.java:74) 在> java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(P> rotectionDomain.java:84) 在java.awt.EventQueue $ 4.run(EventQueue.java:733) 在java.awt.EventQueue $ 4.run(EventQueue.java:731) 在java.security.AccessController.doPrivileged(本机方法) 在> java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(P> rotectionDomain.java:74) 在java.awt.EventQueue.dispatchEvent(EventQueue.java:730) 在> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:20> 5) 在> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:10> 5) 在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 建立成功(总时间:8分16秒)
这是ArticoloDAO GestoreBSN和AggiungiProdottoListener的代码:
public class AggiungiProdottoListener implements ActionListener, ItemListener,MouseListener,ChangeListener
{
public ArrayList<String> listaPercorsi;
AggiungiProdotto aggiungiProdotto;
public AggiungiProdottoListener(AggiungiProdotto aggiungiProdotto)
{
this.aggiungiProdotto = aggiungiProdotto;
}
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==aggiungiProdotto.getBtnAggiungi())
{
String nome = aggiungiProdotto.getTxtNome().getText();
float prezzo = Float.valueOf(aggiungiProdotto.getTxtPrezzo().getText());
int disponibilita = Integer.valueOf(aggiungiProdotto.getTxtDisponibilita().getText());
int sconto = Integer.parseInt(aggiungiProdotto.getTxtSconto().getText());
String descrizione = aggiungiProdotto.getTxtDescrizione().getText();
String nomeReparto = String.valueOf(aggiungiProdotto.getCmbReparto().getSelectedItem());
String nomeCategoria = String.valueOf(aggiungiProdotto.getCmbCategoria().getSelectedItem());
String nomeProduttore = String.valueOf(aggiungiProdotto.getCmbProduttore().getSelectedItem());
String nomeDistributore = String.valueOf(aggiungiProdotto.getCmbDistributore().getSelectedItem());
Reparto reparto = ArticoloBSN.getInstance().getRepartobyNome(nomeReparto);
Categoria categoria = ArticoloBSN.getInstance().getCategoriabyNome(nomeCategoria);
Produttore produttore = ArticoloBSN.getInstance().getProduttorebyNome(nomeProduttore);
Distributore distributore = ArticoloBSN.getInstance().getDistributorebyNome(nomeDistributore);
GestoreBSN.getInstance().createArticolo(nome,prezzo,disponibilita,sconto,descrizione,reparto,categoria,produttore,distributore);
int idArticolo = ArticoloBSN.getInstance().getArticolobyNome(nome).getIdArticolo(); //TODO : Improve this
/*for(int i=0 ; i < listaPercorsi.size() ; i++)
{
String path = listaPercorsi.get(i);
ImmagineBSN.getInstance().addImage(path, idArticolo);
}*/
listaPercorsi.forEach(s->
{
ImmagineBSN.getInstance().addImage(s,idArticolo);
});
aggiungiProdotto.setVisible(false);
AggiungiProdotto apFrame = new AggiungiProdotto();
apFrame.setVisible(true);
}
if(e.getSource()==aggiungiProdotto.getBtnImmagini())
{
String path = aggiungiProdotto.getTxtPercorso().getText();
listaPercorsi.add(path);
aggiungiProdotto.getTxtPercorso().setText("");
aggiungiProdotto.getTxtPercorso().repaint();
}
if(e.getSource()==aggiungiProdotto.getBtnIndietro())
{
aggiungiProdotto.setVisible(false);
GestoreCatalogoFrame gestoreCatalogoFrame = new GestoreCatalogoFrame();
gestoreCatalogoFrame.setVisible(true);
}
}
public class ArticoloDAO extends ABSArticoloDAO implements IBaseDao<Articolo> {
private static ArticoloDAO instance;
private ArticoloDAO() {
}
public static ArticoloDAO getInstance() {
if (instance == null) {
instance = new ArticoloDAO();
}
return instance;
}
@Override
public boolean add(Articolo articolo)
{
String query = "INSERT INTO articolo VALUE ( NULL,"
+"'"+articolo.getNome()+"',"
+articolo.getPrezzo()+","
+articolo.getSconto()+","
+articolo.getDisponibilita()+","
+"'"+articolo.getDescrizione()+"',"
+articolo.getReparto().getIdReparto()+","
+articolo.getCategoria().getIdCategoria()+","
+articolo.getProduttore().getIdProduttore()+","
+articolo.getDistributore().getIdDistributore()+" )";
return DbConnection.getInstance().eseguiAggiornamento(query);
}
@Override
public boolean remove(Articolo articolo) {
String query = "REMOVE FROM articolo "
+ "WHERE id_articolo = '" + articolo.getIdArticolo() + "' ";
return DbConnection.getInstance().eseguiAggiornamento(query);
}
@Override
public boolean update(Articolo articolo) {
String query = "UPDATE articolo SET "
+ "nome = '" + articolo.getNome() + "', "
+ "prezzo = " + articolo.getPrezzo() + ", "
+ "sconto = " +articolo.getSconto() + ", "
+ "disponibilita = " + articolo.getDisponibilita() + ", "
+ "descrizione = '" +articolo.getDescrizione() + "', "
+ "id_reparto = '" + articolo.getReparto().getIdReparto() + "', "
+ "id_categoria = " + articolo.getCategoria().getIdCategoria() + ", "
+ "id_produttore = " + articolo.getProduttore().getIdProduttore() + ", "
+ "id_distributore = " + articolo.getDistributore().getIdDistributore()
+ "WHERE id_articolo = " + articolo.getIdArticolo() ;
return DbConnection.getInstance().eseguiAggiornamento(query);
}
@Override
public ArrayList<Articolo> findAll() {
String query = "SELECT * FROM articolo";
ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
ArrayList<Articolo> articoli = new ArrayList<>();
risultato.forEach(riga ->{
Articolo articolo = getFromArray(riga);
articoli.add(articolo);
});
return articoli;
}
@Override
public Articolo findById(int id) {
String query = "SELECT * FROM articolo WHERE id_articolo = '" + id + "'";
ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
if (risultato.isEmpty()) {
return null;
}
String[] riga = risultato.get(0);
Articolo articolo = getFromArray(riga);
return articolo;
}
@Override
public Articolo getFromArray(String[] array) {
Articolo articolo = new Articolo();
int idArticolo = Integer.parseInt(array[0]);
String nome = array[1];
float prezzo = Float.parseFloat(array[2]);
int disponibilita =Integer.parseInt(array[3]);
int sconto = Integer.parseInt(array[4]);
String descrizione=array[5];
int idReparto = Integer.parseInt(array[6]);
int idCategoria = Integer.parseInt(array[7]);
int idProduttore = Integer.parseInt(array[8]);
int idDistributore = Integer.parseInt(array[9]);
Reparto reparto = RepartoDAO.getInstance().findById(idReparto);
Categoria categoria = CategoriaDAO.getInstance().findById(idCategoria);
Produttore produttore = ProduttoreDAO.getInstance().findById(idProduttore);
Distributore distributore = DistributoreDAO.getInstance().findById(idDistributore);
articolo.setIdArticolo(idArticolo);
articolo.setNome(nome);
articolo.setPrezzo(prezzo);
articolo.setDisponibilita(disponibilita);
articolo.setSconto(sconto);
articolo.setDescrizione(descrizione);
articolo.setReparto(reparto);
articolo.setCategoria(categoria);
articolo.setProduttore(produttore);
articolo.setDistributore(distributore);
return articolo;
}
public ArrayList<Articolo> findByCategoria(Categoria categoria) {
String query = "SELECT * FROM articolo WHERE id_categoria = '"+categoria.getIdCategoria()+"'";
ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
ArrayList<Articolo> articoli = new ArrayList<>();
risultato.forEach(riga ->{
Articolo articolo = getFromArray(riga);
articoli.add(articolo);
});
return articoli;
}
public ArrayList<Articolo> findByReparto(Reparto reparto)
{
String query = "SELECT * FROM articolo WHERE id_reparto = '"+reparto.getIdReparto()+"'";
ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
ArrayList<Articolo> articoli = new ArrayList<>();
risultato.forEach(riga ->{
Articolo articolo = getFromArray(riga);
articoli.add(articolo);
});
return articoli;
}
/* Per creare la fascia massima useremo //java.lang.Float.MAX_VALUE;
*/
@Override
public ArrayList<Articolo> findbyFascia(float a, float b)
{
String query = "SELECT * FROM articolo WHERE prezzo >= '"+a+"'"
+" AND prezzo < '"+b+"'";
ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
ArrayList<Articolo> articoli = new ArrayList<>();
risultato.forEach(riga ->{
Articolo articolo = getFromArray(riga);
articoli.add(articolo);
});
return articoli;
}
public Articolo findbyNome(String nome)
{
String query = "SELECT * FROM articolo WHERE nome ='"+nome+"'";
ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
if (risultato.isEmpty()) {
return null;
}
String[] riga = risultato.get(0);
Articolo articolo = getFromArray(riga);
return articolo;
}
public ArrayList<Articolo> findOthers(Articolo articolo)
{
String query = "SELECT * FROM articolo WHERE id_articolo <>"+articolo.getIdArticolo();
ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
ArrayList<Articolo> articoli = new ArrayList<>();
risultato.forEach(s ->{
Articolo a= getFromArray(s);
articoli.add(a);
});
return articoli;
}
}
public class GestoreBSN
{
private static GestoreBSN instance;
public static GestoreBSN getInstance()
{
if(instance == null)
{
instance = new GestoreBSN();
}
return instance;
}
public void createArticolo(String nome,float prezzo,int disponibilita,int sconto,String descrizione,Reparto reparto,Categoria categoria,Produttore produttore,Distributore distributore)
{
Articolo articolo = new Articolo();
articolo.setNome(nome);
articolo.setPrezzo(prezzo);
articolo.setSconto(sconto);
articolo.setDescrizione(descrizione);
articolo.setCategoria(categoria);
articolo.setReparto(reparto);
articolo.setProduttore(produttore);
articolo.setDistributore(distributore);
ArticoloDAO.getInstance().add(articolo);
}
public void createBundle(ArrayList<Articolo> listaArticoli,Articolo articolo)
{
Bundle bundle = new Bundle();
bundle.setArticolo(articolo);
listaArticoli.forEach(s->
{
bundle.setAssociato(s);
BundleDAO.getInstance().add(bundle);
});
bundle.setListaArticoli(listaArticoli);
articolo.setPrezzo(bundle.getPrezzo());
articolo.setSconto(0);
ArticoloDAO.getInstance().update(articolo);
}
public void delete(Articolo articolo)
{
ArticoloDAO.getInstance().remove(articolo);
}
public void updateArticolo(Articolo articolo)
{
ArticoloDAO.getInstance().update(articolo);
}
}