Messaggi d'errore registrazione

di il
60 risposte

60 Risposte - Pagina 2

  • Re: Messaggi d'errore registrazione

    saraciao ha scritto:


    Ci devo passare la stringa d'errore
    Appunto .... e quindi fai la cosa "furba": usa il costruttore solo per creare la dialog, non per passare l'errore (che andrà passato in altro modo).
  • Re: Messaggi d'errore registrazione

    andbin ha scritto:


    saraciao ha scritto:


    Ci devo passare la stringa d'errore
    Appunto .... e quindi fai la cosa "furba": usa il costruttore solo per creare la dialog, non per passare l'errore (che andrà passato in altro modo).
    Quindi dovrei fare:
      public void VisualizzazioneAvvisi(String stringErroreCommesso) 
        {
        	if(dialogErrore==null) {
        	dialogErrore = new VisualizzazioneAvvisi();
        	dialogErrore.setVisible(true);
        	dialogErrore.setBounds(0, 0,360, 150);
    		dialogErrore.setLocationRelativeTo(menu);
        	}
          	else {
        		dialogErrore.setVisible(true);	
    
        	}
        }
  • Re: Messaggi d'errore registrazione

    saraciao ha scritto:


    andbin ha scritto:


    saraciao ha scritto:


    Ci devo passare la stringa d'errore
    Appunto .... e quindi fai la cosa "furba": usa il costruttore solo per creare la dialog, non per passare l'errore (che andrà passato in altro modo).
    Quindi dovrei fare:
      public void VisualizzazioneAvvisi(String stringErroreCommesso) 
        {
        	if(dialogErrore==null) {
        	dialogErrore = new VisualizzazioneAvvisi();
        	dialogErrore.setVisible(true);
        	dialogErrore.setBounds(0, 0,360, 150);
    		dialogErrore.setLocationRelativeTo(menu);
        	}
          	else {
        		dialogErrore.setVisible(true);	
    
        	}
        }
    ho capito la logica ma non ho capito come scrivere
  • Re: Messaggi d'errore registrazione

    saraciao ha scritto:


    ho capito la logica ma non ho capito come scrivere
    Serve un nuovo metodo nella classe VisualizzazioneAvvisi per passare uno/più errori.
  • Re: Messaggi d'errore registrazione

    andbin ha scritto:


    saraciao ha scritto:


    ho capito la logica ma non ho capito come scrivere
    Serve un nuovo metodo nella classe VisualizzazioneAvvisi per passare uno/più errori.
    Ma gia c'è:
    
    public VisualizzazioneAvvisi(Controller ctrl, ArrayList<String> stringErrore) {
    		setBounds(new Rectangle(0, 13, 0, 0));
    		setResizable(false);
    		setForeground(new Color(255, 165, 0));
    		setBackground(new Color(255, 165, 0));
    		setBounds(100, 100, 329, 219);
    		getContentPane().setLayout(new BorderLayout());
    		contentPanel.setBackground(new Color(255, 165, 0));
    		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
    		getContentPane().add(contentPanel, BorderLayout.CENTER);
    		contentPanel.setLayout(null);
    		DefaultListModel<String>  defaultListModel = new DefaultListModel<String>();
    		JList<String> listaErrori = new JList<>(defaultListModel);
    		getContentPane().add(listaErrori);
    		for(String errore: stringErrore) {
    			defaultListModel.addElement(errore);
    		}
    		this.ctrl=ctrl;
    		this.pack();
    	}
    
    
  • Re: Messaggi d'errore registrazione

    saraciao ha scritto:


    Ma gia c'è:
    No, quello è un costruttore. Serve un metodo!
  • Re: Messaggi d'errore registrazione

    andbin ha scritto:


    saraciao ha scritto:


    Ma gia c'è:
    No, quello è un costruttore. Serve un metodo!
    
    @Override
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource().equals(Button_Iscriviti)) {
    			String nome=textField_Nome.getText();
    			String cognome=textField_Cognome.getText();
    			String email=textField_Email.getText();
    			String numeroTelefonico=textField_NumTelefonico.getText();
    			String password=textField_Password.getText();
    			String provincia=textField_Provincia.getText();
    			String citta=textField_Città.getText();
    			String Cap=textField_Cap.getText();
    			String nomeVia=textField_NomeVia.getText();
    			int numCivico;
    			
    			ArrayList<String> errore =new ArrayList<String>();
    
    			try {	
    			    numCivico=Integer.parseInt(textField_N_Civico.getText().toString()); 
    			    if(Controllo_Email().equals("")) {
    			    	errore.add("Inserisci Email");
    			    	ctrl.VisualizzazioneAvvisi(""+errore);	 
    			    }
    			    else {
    			    	ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia);
    			    }
    			     if(Controllo_NumeroCivico().equals("")) {
    			    	 errore.add("Inserisci Numero Civico");
    			    	 ctrl.VisualizzazioneAvvisi(""+errore);	 
    			    }
    			    else {
    			    	ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia);
    			    }
    			     if(Controllo_Provincia().equals("")) {
    			    	 errore.add("Inserisci Provincia");
    				    ctrl.VisualizzazioneAvvisi(""+errore);
    			    }
    			    else {
    			    	ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia);
    			    }
    			     if(Controllo_Cap().equals("")) {
    			    	 errore.add("Inserisci Cap");
    			    	ctrl.VisualizzazioneAvvisi(""+errore);
    			    }
    			    else {
    			    	ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia);
    			    }
    			    if(ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia)==false) {
    				     ctrl.VisualizzazioneAvvisi("Utente già presente");
    			    }  else {
    			    	  ctrl.visualizzazioneLogin();
    			     }
    			 } catch (NumberFormatException ae){
    			      ctrl.VisualizzazioneAvvisi("Il formato di numero civico non è corretto");
    			 }		
    		}
    
    	}
    	
    	
    	public String Controllo_NumeroCivico() {
    			int numCivico;
    			try {
    				numCivico=Integer.parseInt(textField_N_Civico.getText().toString());
    			    if(numCivico<=0) {
    			    	return "il numero civico deve essere un numero maggiore di 0";
    			    }
    			 } catch (NumberFormatException ae){
    				 
    			     return "Il formato del Numero civico non è corretto";
    			  }
    			
    			return "";
    			
    	    	}
    
    	
    	 public String Controllo_Email() {
    		String email=textField_Email.getText();
    		  if(email.matches("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+"[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")) {     
    			    return "Il formato Cap non è corretto";
    
    		} 
    		  else {	
    		         return "";
    			}
    	}
    		
    	
    	 public String Controllo_Provincia() {
    			String provincia=textField_Provincia.getText();
    			if(provincia.matches("[A-Za-z]{2}")) {			  
    				   return "Il formato provincia non è corretto";	  			
    			}
    			else {	
    		         return "";
    			}
    	}
    	
    	
    	 public String Controllo_Cap() {
    			String Cap=textField_Cap.getText();
    			if(Cap.matches("[0-9]{5}")){				
    			      return "Il formato Cap è corretto";
    			}
    			 else {
    		          return "";
    			 }
    	   }
    
    voglio fare che se il controllo_Cap e tutti gli altri controlli sono diversi dal vuoto allora viene aggiunto nell'array che poi verra indicato nella dialog visializzaavvisi altrimenti altrimenti effettua la registrazione...poi la cosa del controller la faccio dopo
  • Re: Messaggi d'errore registrazione

    saraciao ha scritto:


    voglio fare che se il controllo_Cap e tutti gli altri controlli sono diversi dal vuoto allora viene aggiunto nell'array che poi verra indicato nella dialog visializzaavvisi altrimenti altrimenti effettua la registrazione...poi la cosa del controller la faccio dopo
    Banalmente: ad ogni controllo che fai, se è un errore, aggiungi un messaggio nel ArrayList<String>. Alla fine (solo alla fine!) di tutti i controlli: se la lista è vuota (=nessun errore) allora fai la registrazione, altrimenti passi gli errori alla dialog di errore. Tutto lì.

    (P.S. non complicare inutilmente le cose!)
  • Re: Messaggi d'errore registrazione

    andbin ha scritto:


    saraciao ha scritto:


    voglio fare che se il controllo_Cap e tutti gli altri controlli sono diversi dal vuoto allora viene aggiunto nell'array che poi verra indicato nella dialog visializzaavvisi altrimenti altrimenti effettua la registrazione...poi la cosa del controller la faccio dopo
    Banalmente: ad ogni controllo che fai, se è un errore, aggiungi un messaggio nel ArrayList<String>. Alla fine (solo alla fine!) di tutti i controlli: se la lista è vuota (=nessun errore) allora fai la registrazione, altrimenti passi gli errori alla dialog di errore. Tutto lì.

    (P.S. non complicare inutilmente le cose!)
    Quindi così:
    @Override
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource().equals(Button_Iscriviti)) {
    			String nome=textField_Nome.getText();
    			String cognome=textField_Cognome.getText();
    			String email=textField_Email.getText();
    			String numeroTelefonico=textField_NumTelefonico.getText();
    			String password=textField_Password.getText();
    			String provincia=textField_Provincia.getText();
    			String citta=textField_Città.getText();
    			String Cap=textField_Cap.getText();
    			String nomeVia=textField_NomeVia.getText();
    			int numCivico;
    			
    			ArrayList<String> errore =new ArrayList<String>();
    
    			try {	
    			    numCivico=Integer.parseInt(textField_N_Civico.getText().toString()); 
    			    if(Controllo_Email() != "") {
    			    	errore.add("Inserisci Email");
    			    	ctrl.VisualizzazioneAvvisi(""+errore);	 
    			    }
    			    else  if(Controllo_NumeroCivico() != "") {
    			    	 errore.add("Inserisci Numero Civico");
    			    	 ctrl.VisualizzazioneAvvisi(""+errore);	 
    			    }
    			    else if(Controllo_Provincia() != "") {
    			    	 errore.add("Inserisci Provincia");
    				    ctrl.VisualizzazioneAvvisi(""+errore);
    			    }
    			    else if(Controllo_Cap() != "") {
    			    	 errore.add("Inserisci Cap");
    			    	ctrl.VisualizzazioneAvvisi(""+errore);
    			    }
    			    else {
    			    	ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia);
    			    }
    			    if(ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia)==false) {
    				     ctrl.VisualizzazioneAvvisi("Utente già presente");
    			    }  else {
    			    	  ctrl.visualizzazioneLogin();
    			     }
    			 } catch (NumberFormatException ae){
    			      ctrl.VisualizzazioneAvvisi("Il formato di numero civico non è corretto");
    			 }		
    		}
    
    	}
    	
  • Re: Messaggi d'errore registrazione

    saraciao ha scritto:


    Quindi così:
    No. E il test con != è pure inappropriato. Anche se "incidentalmente" fa la cosa giusta perché per via dello string constant pool della JVM, il "" che usi per testare con != è lo stesso oggetto String "" che restituisci dai metodi di controllo. Ma ripeto, è inappropriato.

    Poi sinceramente, non capisco il senso del ctrl.VisualizzazioneAvvisi(""+errore); dato che passi a questo metodo il risultato del toString() di una lista!

    La gestione di una validazione dell'input è una logica ripetitiva e che potrebbe essere utile anche in più parti della applicazione. Quindi andrebbe "incapsulata" meglio e resa facilmente riutilizzabile. Invece ti perdi in un sacco di if, else, metodi, try, ecc...
  • Re: Messaggi d'errore registrazione

    andbin ha scritto:


    saraciao ha scritto:


    Quindi così:
    No. E il test con != è pure inappropriato. Anche se "incidentalmente" fa la cosa giusta perché per via dello string constant pool della JVM, il "" che usi per testare con != è lo stesso oggetto String "" che restituisci dai metodi di controllo. Ma ripeto, è inappropriato.

    Poi sinceramente, non capisco il senso del ctrl.VisualizzazioneAvvisi(""+errore); dato che passi a questo metodo il risultato del toString() di una lista!

    La gestione di una validazione dell'input è una logica ripetitiva e che potrebbe essere utile anche in più parti della applicazione. Quindi andrebbe "incapsulata" meglio e resa facilmente riutilizzabile. Invece ti perdi in un sacco di if, else, metodi, try, ecc...
    Okay capito quindi come dovrei fare secondo te?
  • Re: Messaggi d'errore registrazione

    saraciao ha scritto:


    Okay capito quindi come dovrei fare secondo te?
    Ci sono sicuramente diversi design che si possono applicare per rendere facile e riutilizzabile la validazione. Una soluzione abbastanza semplice è incapsulare la lista degli errori e i metodi di validazione in una apposita classe.

    Ad esempio una classe Validazione (ma forse meglio Validazioni) fatta più o meno così:
    public class Validazioni {
        private List<String> messaggiErrore = new ArrayList<String>();
    
        public boolean emailObbligatoria(String email, String msgMancante, String msgInvalido) {
            // verifica se email "vuota", se sì, aggiungi msgMancante e return false
            // verifica formato email, se errato, aggiungi msgInvalido e return false
            // altrimenti return true
        }
        
        // ecc.....
    }
    E poi vari altri metodi es.

    public boolean provinciaObbligatoria( ....... )
    public boolean capObbligatorio( ....... )
    ecc...
    ecc...

    Nota che il ritorno di un boolean è solo di "comodità" e non è detto che devi per forza usare il boolean di ognuno!

    Poi naturalmente anche alcuni metodi per ispezionare gli errori:

    public boolean valido() ---> dice se la lista dei messaggi di errore è vuota
    e magari anche l'inverso (può essere utile in certi casi)
    public boolean nonValido()

    e anche
    public List<String> getMessaggiErrore()


    A quel punto, nel tuo actionPerformed farai semplicemente:
    String email = textField_Email.getText();
    .....
    
    Validazioni validazioni = new Validazioni();
    validazioni.emailObbligatoria(email, "Inserisci una email", "La email inserita non è valida");
    validazioni.xxxxx( ....... );
    validazioni.yyyyy( ....... );
    
    if (validazioni.valido()) {
        // fai la tua registrazione
    } else {
        // passa validazioni.getMessaggiErrore() alla tua dialog di errore
    }
    Guarda che questa è normalissima programmazione ad oggetti, è stata semplicemente incapsulata la logica di validazione e la gestione della lista errori in una classe apposita. In questo modo è facilmente riutilizzabile anche in altre parti e in queste parti non ti devi preoccupare di tutti i dettagli di "basso" livello quali creare la lista, fare le add ecc....
  • Re: Messaggi d'errore registrazione

    andbin ha scritto:


    saraciao ha scritto:


    Okay capito quindi come dovrei fare secondo te?
    Ci sono sicuramente diversi design che si possono applicare per rendere facile e riutilizzabile la validazione. Una soluzione abbastanza semplice è incapsulare la lista degli errori e i metodi di validazione in una apposita classe.

    Ad esempio una classe Validazione (ma forse meglio Validazioni) fatta più o meno così:
    public class Validazioni {
        private List<String> messaggiErrore = new ArrayList<String>();
    
        public boolean emailObbligatoria(String email, String msgMancante, String msgInvalido) {
            // verifica se email "vuota", se sì, aggiungi msgMancante e return false
            // verifica formato email, se errato, aggiungi msgInvalido e return false
            // altrimenti return true
        }
        
        // ecc.....
    }
    E poi vari altri metodi es.

    public boolean provinciaObbligatoria( ....... )
    public boolean capObbligatorio( ....... )
    ecc...
    ecc...

    Nota che il ritorno di un boolean è solo di "comodità" e non è detto che devi per forza usare il boolean di ognuno!

    Poi naturalmente anche alcuni metodi per ispezionare gli errori:

    public boolean valido() ---> dice se la lista dei messaggi di errore è vuota
    e magari anche l'inverso (può essere utile in certi casi)
    public boolean nonValido()

    e anche
    public List<String> getMessaggiErrore()


    A quel punto, nel tuo actionPerformed farai semplicemente:
    String email = textField_Email.getText();
    .....
    
    Validazioni validazioni = new Validazioni();
    validazioni.emailObbligatoria(email, "Inserisci una email", "La email inserita non è valida");
    validazioni.xxxxx( ....... );
    validazioni.yyyyy( ....... );
    
    if (validazioni.valido()) {
        // fai la tua registrazione
    } else {
        // passa validazioni.getMessaggiErrore() alla tua dialog di errore
    }
    Guarda che questa è normalissima programmazione ad oggetti, è stata semplicemente incapsulata la logica di validazione e la gestione della lista errori in una classe apposita. In questo modo è facilmente riutilizzabile anche in altre parti e in queste parti non ti devi preoccupare di tutti i dettagli di "basso" livello quali creare la lista, fare le add ecc....
    Va bene cosi:
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.swing.JTextField;
    
    public class Validazioni {
        private List<String> messaggiErrore = new ArrayList<String>();
    	private JTextField textField_N_Civico;
    
        public boolean emailObbligatoria(String email, String msgMancante, String msgInvalido) {
           if(email.equals("")) {
        	   messaggiErrore.add("Inserisci una email");
        	   return false;
           }
          if(email.matches("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+"[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")) {     
        	    messaggiErrore.add("La email inserita non è valida");
        	    return false;
          }
          else {
        	 return true;
          }
        }
    
    	public boolean valido() {
    		return false;
    	}
    
    	public String getMessaggiErrore() {
    		return null;
    	}
    	
       
    	public boolean ProvinciaObbligatoria(String provincia, String msgMancante, String msgInvalido) {
            if(provincia.equals("")) {
         	   messaggiErrore.add("Inserisci una provincia");
         	   return false;
            }
    		if(provincia.matches("[A-Za-z]{2}")) {			  
         	    messaggiErrore.add("Il formato provincia non è corretto");
         	    return false;
           }
           else {
         	 return true;
           }
        }
    
    
    	public boolean CapObbligatoria(String Cap, String msgMancante, String msgInvalido) {
            if(Cap.equals("")) {
         	   messaggiErrore.add("Inserisci una Cap");
         	   return false;
    
            }
    		if(Cap.matches("[A-Za-z]{2}")) {			  
         	    messaggiErrore.add("Il formato Cap non è corretto");
         	    return false;
    
           }
           else {
           	 return true;
    
           }
        }
    	
    	public String Controllo_NumeroCivico() {
    		int numCivico;
    		try {
    			numCivico=Integer.parseInt(textField_N_Civico.getText().toString());
    		    if(numCivico<=0) {
    		    	return "il numero civico deve essere un numero maggiore di 0";
    		    }
    		 } catch (NumberFormatException ae){
    			 
    		     return "Il formato del Numero civico non è corretto";
    		  }
    		
    		return "";
    		
        	}
    }
    
    
    
    	@Override
    		public void actionPerformed(ActionEvent e) {
    			if(e.getSource().equals(Button_Iscriviti)) {
    				String nome=textField_Nome.getText();
    				String cognome=textField_Cognome.getText();
    				String email=textField_Email.getText();
    				String numeroTelefonico=textField_NumTelefonico.getText();
    				String password=textField_Password.getText();
    				String provincia=textField_Provincia.getText();
    				String citta=textField_Città.getText();
    				String Cap=textField_Cap.getText();
    				String nomeVia=textField_NomeVia.getText();
    				int numCivico;
    				
    			    Validazioni validazioni = new Validazioni();
    			    validazioni.emailObbligatoria(email, "Inserisci una email", "La email inserita non è valida");
    			    validazioni.ProvinciaObbligatoria(provincia, "Inserisci una provincia", "La provincia inserita non è valida");
    			    validazioni.CapObbligatoria(Cap, "Inserisci una Cap", "Il Cap inserita non è valida");
    			   // validazioni.Controllo_NumeroCivico();
    			    if (validazioni.valido()) {
    			    	numCivico=Integer.parseInt(textField_N_Civico.getText().toString());
    			    	ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia);
    			    	if(ctrl.effettuaRegistrazione(nome, cognome, email, password,  numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia)==false) {
    					     ctrl.VisualizzazioneAvvisi("Utente già presente");
    				    }  else {
    				    	  ctrl.visualizzazioneLogin();
    				     }
    			    }
    			    else {
    			    	 ctrl.VisualizzazioneAvvisi(validazioni.getMessaggiErrore());
    
    			    }
    			
    		}
    	}
    }
    
  • Re: Messaggi d'errore registrazione

    saraciao ha scritto:


    Va bene cosi:
    Ehm ... no, così non proprio. Innanzitutto non ci va lì un JTextField, meglio tenere separati i concetti. Poi non hai usato i parametri dei messaggi e infine hai sbagliato il senso dei match. Hai scritto es. if(provincia.matches("[A-Za-z]{2}")) quindi se true (=ok) dici: non corretto. No è il contrario, se NOT matches allora non è corretto.

    Metto un abbozzo io che è meglio:
    public class Validazioni {
        private List<String> messaggiErrore = new ArrayList<String>();
    
        public boolean valido() {
            return messaggiErrore.isEmpty();
        }
    
        public List<String> getMessaggiErrore() {
            return messaggiErrore;
        }
    
        public boolean capObbligatorio(String cap, String msgMancante, String msgInvalido) {
            if (cap == null || cap.isEmpty()) {
                messaggiErrore.add(msgMancante);
                return false;
            }
    
            if (!cap.matches("[0-9]{5}")) {
                messaggiErrore.add(msgInvalido);
                return false;
            }
    
            return true;
        }
    
        // scrivi altri metodi di validazione ...........
    }
    .....
    validazioni.capObbligatorio(cap, "Inserisci un CAP", "Il CAP inserito non è valido");
    .....
  • Re: Messaggi d'errore registrazione

    andbin ha scritto:


    saraciao ha scritto:


    Va bene cosi:
    Ehm ... no, così non proprio. Innanzitutto non ci va lì un JTextField, meglio tenere separati i concetti. Poi non hai usato i parametri dei messaggi e infine hai sbagliato il senso dei match. Hai scritto es. if(provincia.matches("[A-Za-z]{2}")) quindi se true (=ok) dici: non corretto. No è il contrario, se NOT matches allora non è corretto.

    Metto un abbozzo io che è meglio:
    public class Validazioni {
        private List<String> messaggiErrore = new ArrayList<String>();
    
        public boolean valido() {
            return messaggiErrore.isEmpty();
        }
    
        public List<String> getMessaggiErrore() {
            return messaggiErrore;
        }
    
        public boolean capObbligatorio(String cap, String msgMancante, String msgInvalido) {
            if (cap == null || cap.isEmpty()) {
                messaggiErrore.add(msgMancante);
                return false;
            }
    
            if (!cap.matches("[0-9]{5}")) {
                messaggiErrore.add(msgInvalido);
                return false;
            }
    
            return true;
        }
    
        // scrivi altri metodi di validazione ...........
    }
    .....
    validazioni.capObbligatorio(cap, "Inserisci un CAP", "Il CAP inserito non è valido");
    .....
    Ok però siccome per il numero civico utilizzo una textFild come faccio? allora stesso modo di cap? inoltre ora mi da problemi su ctrl.VisualizzazioneAvvisi(validazioni.getMessaggiErrore());
Devi accedere o registrarti per scrivere nel forum
60 risposte