diff --git a/src/registrazionepalestra/RegistrazionePalestra.form b/src/registrazionepalestra/RegistrazionePalestra.form index d9a6c20..1fddae8 100644 --- a/src/registrazionepalestra/RegistrazionePalestra.form +++ b/src/registrazionepalestra/RegistrazionePalestra.form @@ -82,7 +82,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -210,6 +210,7 @@ + @@ -222,7 +223,7 @@ - + diff --git a/src/registrazionepalestra/RegistrazionePalestra.java b/src/registrazionepalestra/RegistrazionePalestra.java index 3900b4d..8b28436 100644 --- a/src/registrazionepalestra/RegistrazionePalestra.java +++ b/src/registrazionepalestra/RegistrazionePalestra.java @@ -8,7 +8,10 @@ import javax.swing.BorderFactory; import javax.swing.JOptionPane; import javax.swing.border.LineBorder; import java.awt.Color; -import java.util.Arrays; +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.regex.Pattern; /** * @@ -33,7 +36,8 @@ public class RegistrazionePalestra extends javax.swing.JFrame { */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents + // //GEN-BEGIN:initComponents private void initComponents() { Sesso = new javax.swing.ButtonGroup(); @@ -51,7 +55,7 @@ public class RegistrazionePalestra extends javax.swing.JFrame { txtCodiceFiscale = new javax.swing.JTextField(); txtEmail = new javax.swing.JTextField(); txtPassword = new javax.swing.JPasswordField(); - jComboBox1 = new javax.swing.JComboBox<>(); + cmbCitta = new javax.swing.JComboBox<>(); jScrollPane1 = new javax.swing.JScrollPane(); txtaNote = new javax.swing.JTextArea(); btnRegistra = new javax.swing.JButton(); @@ -103,6 +107,11 @@ public class RegistrazionePalestra extends javax.swing.JFrame { txtCodiceFiscaleFocusGained(evt); } }); + txtCodiceFiscale.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyReleased(java.awt.event.KeyEvent evt) { + txtCodiceFiscaleKeyReleased(evt); + } + }); txtEmail.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { @@ -116,7 +125,8 @@ public class RegistrazionePalestra extends javax.swing.JFrame { } }); - jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Roma", "Londra", "Parigi", "Berlino", "Mosca", "Tjumen" })); + cmbCitta.setModel(new javax.swing.DefaultComboBoxModel<>( + new String[] { "Roma", "Londra", "Parigi", "Berlino", "Mosca", "Tjumen" })); txtaNote.setColumns(20); txtaNote.setLineWrap(true); @@ -142,24 +152,22 @@ public class RegistrazionePalestra extends javax.swing.JFrame { javax.swing.GroupLayout pnlCorsiLayout = new javax.swing.GroupLayout(pnlCorsi); pnlCorsi.setLayout(pnlCorsiLayout); pnlCorsiLayout.setHorizontalGroup( - pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlCorsiLayout.createSequentialGroup() - .addComponent(chkYoga) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(chkPilates) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(chkFitness) - .addGap(0, 0, Short.MAX_VALUE)) - ); + pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlCorsiLayout.createSequentialGroup() + .addComponent(chkYoga) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(chkPilates) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(chkFitness) + .addGap(0, 0, Short.MAX_VALUE))); pnlCorsiLayout.setVerticalGroup( - pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlCorsiLayout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addGroup(pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(chkYoga) - .addComponent(chkPilates) - .addComponent(chkFitness))) - ); + pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlCorsiLayout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addGroup(pnlCorsiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(chkYoga) + .addComponent(chkPilates) + .addComponent(chkFitness)))); Sesso.add(radSessoF); radSessoF.setText("F"); @@ -176,126 +184,167 @@ public class RegistrazionePalestra extends javax.swing.JFrame { javax.swing.GroupLayout pnlSessoLayout = new javax.swing.GroupLayout(pnlSesso); pnlSesso.setLayout(pnlSessoLayout); pnlSessoLayout.setHorizontalGroup( - pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSessoLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(radSessoM) - .addGap(18, 18, 18) - .addComponent(radSessoF) - .addGap(18, 18, 18) - .addComponent(radSessoNB) - .addContainerGap()) - ); + pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSessoLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(radSessoM) + .addGap(18, 18, 18) + .addComponent(radSessoF) + .addGap(18, 18, 18) + .addComponent(radSessoNB) + .addContainerGap())); pnlSessoLayout.setVerticalGroup( - pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(radSessoM) - .addComponent(radSessoF) - .addComponent(radSessoNB)) - ); + pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlSessoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(radSessoM) + .addComponent(radSessoF) + .addComponent(radSessoNB))); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblNome) - .addComponent(lblCognome) - .addComponent(lblCodiceFiscale) - .addComponent(lblEmail) - .addComponent(lblPassword) - .addComponent(lblSesso)) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(35, 35, 35) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(txtNome, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE) - .addComponent(txtCognome, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtCodiceFiscale, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtEmail, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtPassword, javax.swing.GroupLayout.Alignment.LEADING))) - .addGroup(layout.createSequentialGroup() - .addGap(51, 51, 51) - .addComponent(pnlSesso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap(9, Short.MAX_VALUE) - .addComponent(btnRegistra) - .addGap(35, 35, 35)) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblCittà) - .addComponent(lblCorsi) - .addComponent(lblNote)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(btnCancella) - .addGap(41, 41, 41) - .addComponent(btnChiudi)) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(pnlCorsi, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 191, Short.MAX_VALUE) - .addComponent(jComboBox1, javax.swing.GroupLayout.Alignment.LEADING, 0, 191, Short.MAX_VALUE)))) - .addContainerGap()) - ); + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblNome) + .addComponent(lblCognome) + .addComponent(lblCodiceFiscale) + .addComponent(lblEmail) + .addComponent(lblPassword) + .addComponent(lblSesso)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(35, 35, 35) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, + false) + .addComponent(txtNome, + javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.DEFAULT_SIZE, 191, + Short.MAX_VALUE) + .addComponent(txtCognome, + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtCodiceFiscale, + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtEmail, + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtPassword, + javax.swing.GroupLayout.Alignment.LEADING))) + .addGroup(layout.createSequentialGroup() + .addGap(51, 51, 51) + .addComponent(pnlSesso, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap(9, Short.MAX_VALUE) + .addComponent(btnRegistra) + .addGap(35, 35, 35)) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblCittà) + .addComponent(lblCorsi) + .addComponent(lblNote)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(btnCancella) + .addGap(41, 41, 41) + .addComponent(btnChiudi)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 191, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, + layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(pnlCorsi, + javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 191, + Short.MAX_VALUE) + .addComponent(cmbCitta, + javax.swing.GroupLayout.Alignment.LEADING, 0, + 191, Short.MAX_VALUE)))) + .addContainerGap())); layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblNome) - .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblCognome)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(txtCodiceFiscale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblCodiceFiscale)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblEmail)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblSesso, javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblPassword)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(pnlSesso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblCittà) - .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(pnlCorsi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblCorsi)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblNote) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(btnRegistra) - .addComponent(btnCancella) - .addComponent(btnChiudi)) - .addContainerGap()) - ); + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblNome) + .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblCognome)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtCodiceFiscale, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblCodiceFiscale)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblEmail)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblSesso, javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtPassword, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblPassword)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pnlSesso, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblCittà) + .addComponent(cmbCitta, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(pnlCorsi, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblCorsi)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblNote) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 121, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnRegistra) + .addComponent(btnCancella) + .addComponent(btnChiudi)) + .addContainerGap())); pack(); }// //GEN-END:initComponents + private void txtCodiceFiscaleKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_txtCodiceFiscaleKeyReleased + txtCodiceFiscale.setText(txtCodiceFiscale.getText().toUpperCase()); + }// GEN-LAST:event_txtCodiceFiscaleKeyReleased + private void btnRegistraActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnRegistraActionPerformed String nome = txtNome.getText().trim(); String cognome = txtCognome.getText().trim(); @@ -334,16 +383,149 @@ public class RegistrazionePalestra extends javax.swing.JFrame { pnlCorsi.setBorder(new LineBorder(Color.red)); } JOptionPane.showMessageDialog(null, "Inserire tutti i dati richiesti."); - + return; } + if (!isCodiceFiscaleValid(codiceFiscale)) { + JOptionPane.showMessageDialog(null, "Il codice fiscale non è valido."); + txtCodiceFiscale.setBorder(new LineBorder(Color.red)); + return; + } + + if (!isEmailValid(email)) { + JOptionPane.showMessageDialog(null, "L'indirizzo email non è valido."); + txtEmail.setBorder(new LineBorder(Color.red)); + return; + } + + salvaSuFile(); + successMeassage(nome, cognome, getSelectedSesso(), getSelectedCorsi()); }// GEN-LAST:event_btnRegistraActionPerformed private boolean isCorsiEmpty() { return !(chkYoga.isSelected() || chkPilates.isSelected() || chkFitness.isSelected()); } + private boolean isCodiceFiscaleValid(String codiceFiscale) { + Pattern pattern = Pattern.compile("[A-Z]{6}[ABCDEHLMPRST]{3}\\d{2}[A-Z]\\d{3}[A-Z]"); + return pattern.matcher(codiceFiscale).find(); + } + + private boolean isEmailValid(String email) { + Pattern pattern = Pattern.compile("[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}"); + return pattern.matcher(email).find(); + } + + private int getSelectedSesso() { + int sessoSelected = -1; + + if (radSessoM.isSelected()) { + sessoSelected = 0; + } + if (radSessoF.isSelected()) { + sessoSelected = 1; + } + if (radSessoNB.isSelected()) { + sessoSelected = 2; + } + + return sessoSelected; + } + + private String getSelectedCorsi() { + StringBuilder sb = new StringBuilder(); + + if (chkYoga.isSelected()) { + sb.append("\n"); + sb.append(chkYoga.getText()); + } + if (chkPilates.isSelected()) { + sb.append("\n"); + sb.append(chkPilates.getText()); + } + if (chkFitness.isSelected()) { + sb.append("\n"); + sb.append(chkFitness.getText()); + } + + return sb.toString(); + } + + private void salvaSuFile() { + String nome = txtNome.getText().trim(); + String cognome = txtCognome.getText().trim(); + String codiceFiscale = txtCodiceFiscale.getText().trim().toUpperCase(); + String email = txtEmail.getText().trim(); + String password = new String(txtPassword.getPassword()); + String sesso; + String note = txtaNote.getText(); + StringBuilder sb = new StringBuilder(); + + switch (getSelectedSesso()) { + case 0: + sesso = "M"; + break; + case 1: + sesso = "F"; + break; + case 2: + sesso = "NB"; + break; + default: + sesso = ""; + break; + } + + sb.append("Nome: "); + sb.append(nome); + sb.append("\nCognome: "); + sb.append(cognome); + sb.append("\nCodice fiscale: "); + sb.append(codiceFiscale); + sb.append("\nEmail: "); + sb.append(email); + sb.append("\nPassword: "); + sb.append(password); + sb.append("\nSesso: "); + sb.append(sesso); + sb.append("\nCittà: "); + sb.append(cmbCitta.getSelectedItem()); + sb.append("\nCorsi: "); + sb.append(getSelectedCorsi().replace("\n", ", ").replaceFirst(", ", "")); + sb.append("\nNote: "); + sb.append(note); + sb.append("\n--FINE REGISTRAZIONE SOPRA--"); + + try (BufferedWriter bw = new BufferedWriter(new FileWriter("./src/registrazionepalestra/registrazioni.txt", true))) { + bw.write(sb.toString()); + } catch (IOException _) { + JOptionPane.showMessageDialog(null, "Errore nel salvataggio della registrazione."); + } + } + + private void successMeassage(String nome, String cognome, int sesso, String corsi) { + String letteraSignor; + + switch (sesso) { + case 0: + letteraSignor = "e"; + break; + case 1: + letteraSignor = "a"; + break; + case 2: + letteraSignor = "ə"; + break; + default: + letteraSignor = ""; + break; + } + + JOptionPane.showMessageDialog(null, "Complimenti signor" + letteraSignor + " " + nome + " " + cognome + + ", la registrazione ai seguenti corsi è avvenuta con successo:" + corsi); + } + private void txtNomeFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_txtNomeFocusGained txtNome.setBorder(null); }// GEN-LAST:event_txtNomeFocusGained @@ -425,7 +607,7 @@ public class RegistrazionePalestra extends javax.swing.JFrame { private javax.swing.JCheckBox chkFitness; private javax.swing.JCheckBox chkPilates; private javax.swing.JCheckBox chkYoga; - private javax.swing.JComboBox jComboBox1; + private javax.swing.JComboBox cmbCitta; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel lblCittà; private javax.swing.JLabel lblCodiceFiscale;