Problema nel collegare login con altre classi/frame

di il
1 risposte

Problema nel collegare login con altre classi/frame

Ciao a tutti,
sto cercando di associare il pannello login agli altri pannelli in base alla voce "categoria" del mio db ma, pur non dandomi alcun errore, mi compare la finestra "benvenuto" di JOptionPane ma poi non mi esegue (credo) il metodo smistaUtente().
Provando a fare il debug MI SA che il problema sia che il programma si blocca in db connection dopo che assegna il valore (giusto) a categoria mentre dovrebbe restituirlo a smistaUtente() in UtenteManager... Come è possibile? Dove sta l'errore?

N.b. Eclipse non mi rileva errore solo che dopo il login non appare nulla di quello scritto in smistaUtenti()


PannelloLogin
public class PannelloLogin extends JFrame {

    private static final int LARGHEZZA = 400;
    private static final int ALTEZZA = 150;
    
    private String email = null;
    private String passwd = null;
    
    JTextField emailText, pwdText;
    


    public PannelloLogin() {
        super();
        
        
        setSize(LARGHEZZA,ALTEZZA);
        setTitle("Login");
        
        JPanel pannello = new JPanel();
    
        pannello.setLayout(null);
        
        
        JLabel emailLabel = new JLabel("Email: ");
        emailLabel.setBounds(10,10,80,25);
        pannello.add(emailLabel);
        
        emailText = new JTextField(20);
        emailText.setBounds(80,10,160,25);
        pannello.add(emailText);
        
        JLabel pwdLabel = new JLabel("Password: ");
        pwdLabel.setBounds(10,50,80,25);
        pannello.add(pwdLabel);
        
        pwdText = new JTextField(20);
        pwdText.setBounds(80,50,160,25);
        pannello.add(pwdText);
        
        JButton login = new JButton("Login!");
        login.setBackground(Color.LIGHT_GRAY);
        login.addActionListener(new LoginListener(this));
        login.setBounds(250,30, 80,25);
        pannello.add(login);
        
        add(pannello);
        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
        
    public String getEmailText(){
        return emailText.getText();
    }
    
    
    public String getPasswordText(){
        return pwdText.getText();
    }
    
}
Classe ActionListener che gestisce il login
public class LoginListener implements ActionListener {

    PannelloLogin pLogin;
    
    public void actionPerformed(ActionEvent e){
    String email = pLogin.getEmailText();
    String password = pLogin.getPasswordText();
    
    
    boolean utenteEsiste = UtenteManager.getInstance().verificaLogin(email, password);
    
    if(utenteEsiste){
        JOptionPane.showMessageDialog(null, "Benvenuto!");
        UtenteManager.getInstance().smistaUtente(email);
    }else
        JOptionPane.showMessageDialog(null, "Utente non riconosciuto");
    }
    
    public LoginListener(PannelloLogin pLogin) {
        this.pLogin = pLogin;
    }
}
ClasseUtenteManager che gestisce lo smistamento
public class UtenteManager {

    private static UtenteManager instance;
    
    //SINGLETON
    public static UtenteManager getInstance()
    {
        if(instance == null)
            instance = new UtenteManager();
        return instance;
    }
    
    public boolean verificaLogin(String email, String password)
    {
        Utente utente=new Utente();
        utente.setEmail(email);
        utente.setPassword(password);
        return utente.login();
    }
    
    public void smistaUtente(String email){
        String categoria = DbConnection.getInstance().verificaImpiego(email); 
        if(categoria == "Tennista PRO"){
            PannelloMagazzino pMagazzino = new PannelloMagazzino();
        } else if (categoria == "Dipendente"){
            JOptionPane.showMessageDialog(null, "Dipendente!");
        } else if (categoria == "Boss"){
            JOptionPane.showMessageDialog(null, "Benvenuto Boss!");
        }
    }
    
}


Classe Db che gestisce la query e restituisce la string "categoria" al metodo SmistaUtente
public String verificaImpiego(String email){                
           
            String categoria = "";
            
            try {
            
            Class.forName(JDBC_DRIVER);
            
            System.out.println("Connecting to a selected database...");
            con = DriverManager.getConnection(DB_URL);
            
            System.out.println("Connected database successfully...");    
            st = con.createStatement();
                        
            String sql1 = "SELECT * FROM listautenti WHERE email = ?";
            
            PreparedStatement insertStatement1 = con.prepareStatement(sql1);
            insertStatement1.setString(1, email);
            
            rs = insertStatement1.executeQuery();
            while(rs.next()) {
            categoria = rs.getString("categoria");    }
            }    catch(SQLException se) {
                se.printStackTrace();
            }    catch(Exception e)  {
                e.printStackTrace();
            }      finally  {
                    try  
                    {
                        if(con!=null)
                        con.close(); 
                        System.out.println("Close database successfully...");    
                    } catch(SQLException se) {
                      se.printStackTrace();
                       }
                }
            return categoria;
            
       }
Grazie anticipatamente!
Devi accedere o registrarti per scrivere nel forum
1 risposte