[JAVA] Collegare il login ad altre classi/frame

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Sevenis
Prode Principiante
Messaggi: 79
Iscrizione: sabato 2 settembre 2006, 21:59

[JAVA] Collegare il login ad altre classi/frame

Messaggio da Sevenis »

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

Codice: Seleziona tutto

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

Codice: Seleziona tutto

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

Codice: Seleziona tutto

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

Codice: Seleziona tutto

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!
|gonzo|
Prode Principiante
Messaggi: 108
Iscrizione: domenica 22 febbraio 2009, 17:43
Contatti:

Re: [JAVA] Collegare il login ad altre classi/frame

Messaggio da |gonzo| »

Leva quei catch SQLException con relativo printstacktrace. Quel genere di eccezione deve essere lanciata ;)

Consiglio un buon debug, o ancor meglio test unitari.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti