Villain
18-07-2011, 17:59
Dovrei testare con i thread un'applicazione che gestisce una tavola calda.
1 thread per crea 1 per deposita e 1 per eroga.
il problema è che mi torna nullpointerException su questa istruzione
if (mappaProdotti.get(k.toString())==null)
quando faccio questo controlloreCorrente.deposita(id,10);
vi prego, help me!
import java.io.File;
import javax.swing.JOptionPane;
public class ThreadInserisci implements Runnable {
private Acqua acqua;
private ControlloreGestione controlloreGestione;
private IDEsterno id;
private Orologio oggi;
private Controllore controlloreCorrente;
public ThreadInserisci(Controllore controllore, IDEsterno id){
new File("Ser").mkdir();
new File("Log").mkdir();
this.id = id;
this.controlloreCorrente=controllore;
this.acqua = acqua;
new Thread(this, "inserisci").start();
}
public void run(){
// codice del thread
try{
ControlloreGestione controlloreGestione = new ControlloreGestione();
//IDEsterno id = new IDEsterno("Ferrarelle");
//Acqua acqua = new Acqua(id);
controlloreGestione.nuovoProdotto("Acqua", id);
//IDEsterno articolo = new IDEsterno(iDEsternoProdotto.getText());
int giac= 0;
oggi=new Orologio();
SalvataggioVeloce salva = new SalvataggioVeloce();
// salva.salvaLog(articolo, oggi/*, ruolo, pass*/);
salva.salvaMenu(id, "Acqua");
salva.salvaLogErogaDeposita(id, oggi, "APPENA INSERITO", giac, "0");
}
catch(DirittiException e)
{
JOptionPane.showMessageDialog(null, " NuovoProdottoAA " + e.getMessage(), " non autorizzati", JOptionPane.ERROR_MESSAGE);
}
catch(ClasseAlimentareException e)
{
JOptionPane.showMessageDialog(null, " NuovoProdottoAA " + e.getMessage(), " Errore di tipo", JOptionPane.ERROR_MESSAGE);
}
catch(ProdottoException e)
{
JOptionPane.showMessageDialog(null, " NuiovoProdottoAA " + e.getMessage(), "Errore", JOptionPane.ERROR_MESSAGE);
}
catch (IDEsternoException e)
{
JOptionPane.showMessageDialog(null, e.getMessage(), "Errore", JOptionPane.ERROR_MESSAGE);
}
}
}
import javax.swing.JOptionPane;
public class ThreadDeposita implements Runnable {
private Acqua acqua;
//private ControlloreDeposito controlloreDeposito;
private ControlloreGestione controlloreGestione;
private IDEsterno id;
private Orologio oggi;
private Controllore controlloreCorrente;
public ThreadDeposita(Controllore controllore, IDEsterno id){
//this.acqua = acqua;
this.id = id;
this.controlloreCorrente=controllore;
new Thread(this, "deposita").start();
}
public void run(){
// codice del thread
try
{
controlloreCorrente.deposita(id,10);
//ControlloreDeposito deposito = new ControlloreDeposito();
acqua.deposita(10);
int giac=acqua.giacenza();
// String ruolo=controlloreCorrente.utenteCorrente.getRuolo();
// String pass=controlloreCorrente.utenteCorrente.getPassword();
oggi=new Orologio();
SalvataggioVeloce salva = new SalvataggioVeloce();
salva.salvaLogErogaDeposita(id, oggi, "DEPOSITA", giac, Integer.toString(10));
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA Numero non valido. ");
}
catch(ProdottoException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA " + e.getMessage(), "Errore", JOptionPane.ERROR_MESSAGE);
}
catch (QuantitaException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA Quantità non valida. ");
}
catch (IDEsternoException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA Nome prodotto non non valido. ");
}
catch(DirittiException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA " + e.getMessage(), "non autorizzato", JOptionPane.ERROR_MESSAGE);
}
}
}
public void deposita(IDEsterno k, int quantita) throws DirittiException, ProdottoException, IDEsternoException, QuantitaException
{
if (k==null)
{
throw new IDEsternoException("L'identificatore del prodotto deve essere non nullo");
}
if (mappaProdotti.get(k.toString())==null)
{
throw new ProdottoException("Prodotti " + k.toString() + " non sono presenti");
}
else
{
if (quantita <=0) {
throw new QuantitaException ("La quantita da depositare deve essere positiva\n");
}
else
mappaProdotti.get(k.toString()).deposita(quantita);
}
}
1 thread per crea 1 per deposita e 1 per eroga.
il problema è che mi torna nullpointerException su questa istruzione
if (mappaProdotti.get(k.toString())==null)
quando faccio questo controlloreCorrente.deposita(id,10);
vi prego, help me!
import java.io.File;
import javax.swing.JOptionPane;
public class ThreadInserisci implements Runnable {
private Acqua acqua;
private ControlloreGestione controlloreGestione;
private IDEsterno id;
private Orologio oggi;
private Controllore controlloreCorrente;
public ThreadInserisci(Controllore controllore, IDEsterno id){
new File("Ser").mkdir();
new File("Log").mkdir();
this.id = id;
this.controlloreCorrente=controllore;
this.acqua = acqua;
new Thread(this, "inserisci").start();
}
public void run(){
// codice del thread
try{
ControlloreGestione controlloreGestione = new ControlloreGestione();
//IDEsterno id = new IDEsterno("Ferrarelle");
//Acqua acqua = new Acqua(id);
controlloreGestione.nuovoProdotto("Acqua", id);
//IDEsterno articolo = new IDEsterno(iDEsternoProdotto.getText());
int giac= 0;
oggi=new Orologio();
SalvataggioVeloce salva = new SalvataggioVeloce();
// salva.salvaLog(articolo, oggi/*, ruolo, pass*/);
salva.salvaMenu(id, "Acqua");
salva.salvaLogErogaDeposita(id, oggi, "APPENA INSERITO", giac, "0");
}
catch(DirittiException e)
{
JOptionPane.showMessageDialog(null, " NuovoProdottoAA " + e.getMessage(), " non autorizzati", JOptionPane.ERROR_MESSAGE);
}
catch(ClasseAlimentareException e)
{
JOptionPane.showMessageDialog(null, " NuovoProdottoAA " + e.getMessage(), " Errore di tipo", JOptionPane.ERROR_MESSAGE);
}
catch(ProdottoException e)
{
JOptionPane.showMessageDialog(null, " NuiovoProdottoAA " + e.getMessage(), "Errore", JOptionPane.ERROR_MESSAGE);
}
catch (IDEsternoException e)
{
JOptionPane.showMessageDialog(null, e.getMessage(), "Errore", JOptionPane.ERROR_MESSAGE);
}
}
}
import javax.swing.JOptionPane;
public class ThreadDeposita implements Runnable {
private Acqua acqua;
//private ControlloreDeposito controlloreDeposito;
private ControlloreGestione controlloreGestione;
private IDEsterno id;
private Orologio oggi;
private Controllore controlloreCorrente;
public ThreadDeposita(Controllore controllore, IDEsterno id){
//this.acqua = acqua;
this.id = id;
this.controlloreCorrente=controllore;
new Thread(this, "deposita").start();
}
public void run(){
// codice del thread
try
{
controlloreCorrente.deposita(id,10);
//ControlloreDeposito deposito = new ControlloreDeposito();
acqua.deposita(10);
int giac=acqua.giacenza();
// String ruolo=controlloreCorrente.utenteCorrente.getRuolo();
// String pass=controlloreCorrente.utenteCorrente.getPassword();
oggi=new Orologio();
SalvataggioVeloce salva = new SalvataggioVeloce();
salva.salvaLogErogaDeposita(id, oggi, "DEPOSITA", giac, Integer.toString(10));
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA Numero non valido. ");
}
catch(ProdottoException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA " + e.getMessage(), "Errore", JOptionPane.ERROR_MESSAGE);
}
catch (QuantitaException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA Quantità non valida. ");
}
catch (IDEsternoException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA Nome prodotto non non valido. ");
}
catch(DirittiException e)
{
JOptionPane.showMessageDialog(null, " DepositaAA " + e.getMessage(), "non autorizzato", JOptionPane.ERROR_MESSAGE);
}
}
}
public void deposita(IDEsterno k, int quantita) throws DirittiException, ProdottoException, IDEsternoException, QuantitaException
{
if (k==null)
{
throw new IDEsternoException("L'identificatore del prodotto deve essere non nullo");
}
if (mappaProdotti.get(k.toString())==null)
{
throw new ProdottoException("Prodotti " + k.toString() + " non sono presenti");
}
else
{
if (quantita <=0) {
throw new QuantitaException ("La quantita da depositare deve essere positiva\n");
}
else
mappaProdotti.get(k.toString()).deposita(quantita);
}
}