Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    JAVA swing ho bisogno di aiuto per progetto!!

    Ho un problema riguardante il passaggio parametri durante il richiamo dei metodi in una classe differente. Praticamente devo effettuare il LogIn, ho creato la classe Utente con tutti i metodi getter e setter, poi, quando vado a verificare il logIn se sono inseriti nel database devo verificare solo id e passeord , ma il problema è che il non so come fare a richiamare solo quei due parametri senza verificare tutti gli altri ecco il codice....

    //Classe Utente

    codice:
    package it.model;
    
    import javax.xml.crypto.Data;
    
    import it.dao.PersonaDAO;
    
    public class Utente {
        private String IdUtente;
        private String Nome;
        private String Cognome;
        private char sesso;
        private Data DataNascita;
        private String Ruolo;
        private String Password;
        
        public Utente(String IdUtente,String Nome,String Cognome, char sesso,Data dataN,String Ruolo,String Pasw){
            this.IdUtente=IdUtente;
            this.Nome=Nome;
            this.Cognome=Cognome;
            this.sesso=sesso;
            DataNascita=dataN;
            this.Ruolo=Ruolo;
            Password=Pasw;
            }
    
        public String getIdUtente() {
            return IdUtente;
        }
    
        public void setIdUtente(String idUtente) {
            IdUtente = idUtente;
        } 
        public String getNome() {
            return Nome;
        }
    
        public void setNome(String nome) {
            Nome = nome;
        }
    
        public String getCognome() {
            return Cognome;
        }
    
        public void setCognome(String cognome) {
            Cognome = cognome;
        }
    
        public char getSesso() {
            return sesso;
        }
    
        public void setSesso(char sesso) {
            this.sesso = sesso;
        }
    
        public Data getDataNascita() {
            return DataNascita;
        }
    
        public void setDataNascita(Data dataNascita) {
            DataNascita = dataNascita;
        }
    
        public String getRuolo() {
            return Ruolo;
        }
    
        public void setRuolo(String ruolo) {
            Ruolo = ruolo;
        }
    
        public String getPassword() {
            return Password;
        }
    
        public void setPassword(String password) {
            Password = password;
        }
    
        public boolean logIn(){
            return PersonaDAO.getInstance().userExists(this);
        }
    
    
    }

    //classe verifica logIn

    codice:
    package it.view.listeners;
    
    import it.view.logIn;
    import it.Business.PersonaBusiness;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class LoginBtnListener  implements ActionListener{
    
        private logIn logIn;
        public LoginBtnListener(logIn logIn) {
            super();
            this.logIn=logIn;
        
        }
        public void actionPerformed(ActionEvent e){
            String IdUtente=logIn.U.getText();
            String Password=logIn.P.getText();
            
            boolean utenteEsiste=PersonaBusiness.getInstance().verLogIn(IdUtente,Password);
    
    // qui mi servono solo questi due parametri solo cheil programma mi da errore!!!
            
            
        }
    }

    codice:
    /*Questi due sono collegati ad un altra classe che si collega al database e anche qui devo passare tutti i parametri e non solo quelli che mi servono come devo fare Aiutatemi per favore
    
    */
    package it.Business;
    
    import javax.xml.crypto.Data;
    
    import it.model.Utente;
    public class PersonaBusiness {
        
        private static PersonaBusiness instance;
        public static PersonaBusiness getInstance(){
            if(instance==null)
                instance=new PersonaBusiness();
            return instance;    
        }
        
            public boolean verLogIn(String IdUtente,String Nome,String Cognome, char sesso,Data dataN,String Ruolo,String Password){
                Utente u=new Utente(IdUtente,Nome,Cognome,sesso,dataN,Ruolo,Password);
                return u.logIn();
            }
    }
    Ultima modifica di LeleFT; 10-05-2016 a 11:11 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Ciao, il problema dipende da come è scritto il metodo verLogIn() nella classe PersonaBusiness: il metodo si aspetta che vengano passati tutti i dati dell'utente e non solo l'id e la password.

    E questo perché il corpo del metodo fa una cosa un po' discutibile dal punto di vista logico, secondo me: prende i dati inseriti, crea un nuovo utente con quei dati e poi verifica se l'utente creato esiste con un metodo della classe PersonaDAO, che non è postata nel codice.

    Perché in quella parte del codice viene creato un nuovo utente? L'utente dovrebbe essere già presente e memorizzato, infatti tu vuoi controllare la sua esistenza...
    Quindi quel metodo dovrebbe fare una ricerca dell'utente nel database in base a username e password, ma in base a quello che hai postato non si può dire molto di più...

  3. #3
    Scusate questo è il codice PersonaDao
    package it.dao;

    codice:
    import java.util.Vector;
    import it.DBConnection.*;
    import it.model.Utente;
    
    public class PersonaDAO {
        private static PersonaDAO instance;
        public static PersonaDAO getInstance(){
            if(instance==null){
                instance=new PersonaDAO();
            }
            return instance;
        }
        public boolean userExists()
        {
            String User=u.getIdUtente();
            String password=u.getPassword();
            return (true);
        }
    }

    secondo te come dovrei procedere invece per effettuare la ricerca dal Database?con una semplice query?
    Ultima modifica di LeleFT; 10-05-2016 a 18:01 Motivo: Aggiunti i tag CODE

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da Briciolo Visualizza il messaggio
    Scusate questo è il codice PersonaDao
    package it.dao;

    import java.util.Vector;
    import it.DBConnection.*;
    import it.model.Utente;

    public class PersonaDAO {
    private static PersonaDAO instance;
    public static PersonaDAO getInstance(){
    if(instance==null){
    instance=new PersonaDAO();
    }
    return instance;
    }
    public boolean userExists()
    {
    String User=u.getIdUtente();
    String password=u.getPassword();
    return (true);
    }
    }
    Ma scusa questo codice compila? La classe non estende o implementa nessun altra classe, quindi come fa a sapere cosa sia la variabile u, non essendo definita da nessuna parte?

    E' logico che sia una variabile di tipo Utente, ma se non la passi al metodo userExists non capisco da dove la tiri fuori.
    Tra l'altro poi quel metodo restituisce sempre true...

    Stai facendo qualche prova o vuoi/ti hanno chiesto di modificare codice scritto da qualcun'altro?
    Perchè ci sono tante cose scritte male...

    Quote Originariamente inviata da Briciolo Visualizza il messaggio
    secondo te come dovrei procedere invece per effettuare la ricerca dal Database?con una semplice query?
    Premetto che io non ho mai utilizzato java in combinazione con i database, ho qualche base di SQL ma davvero poca roba.
    Però come effettuare la ricerca nel database dipende in larghissima misura da come è fatto questo database!

    I tuoi utenti vuoi salvarli in qualche tipo di struttura dati? Ad esempio una struttura adeguata potrebbe essere una mappa (vedi ad esempio HashMap, ma ce ne sono altre ) , che fornisce ad esempio il metodo per controllare l'esistenza di una chiave.

    Esempio: crei una HashMap<String,Utente> in cui String rappresenta il tipo della chiave (in questo caso String sarebbe l'username dell'utente perchè a me pare sensato che l'username sia univoco, se è permessa la presenza di utenti con lo stesso username a questo punto la chiave sarebbe la combinazione di username e password e la devi modellare con un oggetto) e Utente rappresenta il tipo di oggetti contenuti nella mappa.

    In questo contesto per verificare l'esistenza dell'utente utilizzi il metodo containsKey() di HashMap a cui passi l'username, o quello che usi come chiave.

    Ma questo presuppone che tu voglia mantenere una qualche struttura, se i dati sono nelle tabelle di un database e non vuoi crearti una struttura che li memorizzi ma solo accedervi quando serve, allora puoi usare le query nel linguaggio che utilizza il database...
    Ultima modifica di Ansharja; 10-05-2016 a 14:03

  5. #5
    Sto modificando un codice scritto da altri per fare una cosa più complessa ,è sono in fase di costruzione ma non avendo basi molto solide su questo argoento sto arrancando, comunque gli utenti esistono in un database per questo ho pensato di verificare l'esistenza dell'utente con una semplice query al db ed eliminare la classe persona business così mi sembra più facile

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Ok, se il problema è solo reperire i dati con query del tipo "SELECT * FROM tabellaUtenti WHERE username like "Pippo" " allora devi cercare materiale su come eseguire le query con java, l'argomento non è banale e io non se so praticamente nulla non avendolo mai fatto, so ad esempio che vengono usati i PreparedStatement ma davvero poco altro.

    Cosa fai però con questi utenti una volta presi dal database? Hai inserito Swing nel titolo della discussione ma per ora non ne hai mai fatto neanche accenno...
    Se devi effettuare ripetute operazioni sugli utenti io consiglierei di salvarli in qualche struttura dati come una mappa per averli a disposizione in ogni momento senza fare continue interrogazioni al database, ma come detto non sono pratico di questo particolare aspetto, e tanto meno di tutte le questioni sulla sicurezza...

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    @Briciolo: quando posti del codice, inseriscilo all'interno degli appositi tag [CODE] .. [/CODE], così da mantenerne indentazione e formattazione (come ho fatto io nel tuo primo post).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.