Compare commits

...

6 Commits

Author SHA1 Message Date
pablo rodriguez
dedda3faf0 maj V1.0.7 2024-06-27 16:58:18 +02:00
pablo rodriguez
00f08babd0 Maj V1.0.6 2023-08-07 14:19:06 +02:00
pablo rodriguez
e162eae002 maj V1.0.6 2023-07-31 21:21:27 +02:00
pablo rodriguez
37da4aacce maj V1.0.6 2023-07-31 13:54:46 +02:00
pablo rodriguez
a62bcc40c6 Maj V1.06 2023-07-30 17:11:57 +02:00
pablo rodriguez
d93bdad582 maj V1.0.6 2023-07-29 17:59:11 +02:00
17 changed files with 526 additions and 141 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/bin/ /bin/
/base/

File diff suppressed because one or more lines are too long

View File

@ -162,7 +162,7 @@ public class importInscriptionXLS {
nFormation.setAttribut("Verouillage_Groupe_Informatique", "false"); nFormation.setAttribut("Verouillage_Groupe_Informatique", "false");
nFormation.setAttribut("Verouillage_Groupe_Documentation", "false"); nFormation.setAttribut("Verouillage_Groupe_Documentation", "false");
nFormation.setAttribut("Verouillage_Groupe_Projet", "false"); nFormation.setAttribut("Verouillage_Groupe_Projet", "false");
nFormation.setAttribut("Verouillage_Tous_Les_Groupes", "false"); nFormation.setAttribut("Verouillage_Tous_Les_Groupes", "true");
nFormation.setAttribut("pattern_Groupe_Principal", "groupe @"); nFormation.setAttribut("pattern_Groupe_Principal", "groupe @");
nFormation.setAttribut("nombre_Student_Groupe_Principal", "30"); nFormation.setAttribut("nombre_Student_Groupe_Principal", "30");

View File

@ -4,6 +4,7 @@ import java.awt.Color;
import java.awt.Desktop; import java.awt.Desktop;
import java.awt.Font; import java.awt.Font;
import java.awt.Image; import java.awt.Image;
import java.awt.SystemColor;
import java.awt.Window; import java.awt.Window;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -39,7 +40,6 @@ import gestion_version.VersionChecker;
import importations.importAllBaseToExcel; import importations.importAllBaseToExcel;
import outils.FileChooserXLSX; import outils.FileChooserXLSX;
import outils.commandes; import outils.commandes;
import java.awt.SystemColor;
public class Window_demarre extends JFrame { public class Window_demarre extends JFrame {
@ -50,13 +50,10 @@ public class Window_demarre extends JFrame {
private static JFrame frmEvalwriter; private static JFrame frmEvalwriter;
JButton btnExporterTouteLaBase; JButton btnExporterTouteLaBase;
JButton actImporterInscriptionDepuisCSV; JButton actImporterInscriptionDepuisCSV;
JButton btnAideImportationInscriptionXLSX = new JButton("Aide : Importer des inscriptions");
JButton btnHelpDownload = new JButton("Aide : Téléchargement et installation");
JButton btnNewVersion = new JButton("<html>Nouvelle version disponible</html>"); JButton btnNewVersion = new JButton("<html>Nouvelle version disponible</html>");
JButton btnNAideMiseAJour = new JButton("Aide : Importer des données");
JButton btnMiseAJourDepuisClasseur = new JButton("<html>Mise à jour de la base depuis<br>un classeur Ms Excel</html>"); JButton btnMiseAJourDepuisClasseur = new JButton("<html>Mise à jour de la base depuis<br>un classeur Ms Excel</html>");
JButton btnGestionnaire = new JButton(""); JButton btnGestionnaire = new JButton("");
JButton btnLicence = new JButton("Licence GNU GPL 3.0");
JButton btnimporterDesInscriptionsdepuisClasseur = new JButton("<html>Importer des inscriptions<br>depuis un classeur Ms Excel</html>"); JButton btnimporterDesInscriptionsdepuisClasseur = new JButton("<html>Importer des inscriptions<br>depuis un classeur Ms Excel</html>");
static JLabel lblAuteurVersion = new JLabel("<html>Pablo Rodriguez - 2023<br>Version "+ commandes.version+"</html>"); static JLabel lblAuteurVersion = new JLabel("<html>Pablo Rodriguez - 2023<br>Version "+ commandes.version+"</html>");
static JLabel lblFondImage = new JLabel(); static JLabel lblFondImage = new JLabel();
@ -73,11 +70,9 @@ public class Window_demarre extends JFrame {
Font police = new Font("Arial", Font.PLAIN, 14); Font police = new Font("Arial", Font.PLAIN, 14);
UIManager.put("OptionPane.messageFont", police); UIManager.put("OptionPane.messageFont", police);
// Vérification d'une nouvelle version dans la forge de Chapril // Vérification d'une nouvelle version dans la forge de Chapril
VersionChecker.verificationNewVersion(); VersionChecker.verificationNewVersion();
// mise à jour de la base de données si nouvelle version de l'application utilisé. // mise à jour de la base de données si nouvelle version de l'application utilisé.
commandes.nBase=recupeBases.recupeLaBase(); commandes.nBase=recupeBases.recupeLaBase();
@ -90,7 +85,7 @@ public class Window_demarre extends JFrame {
// Vérification du blocage de l'application // Vérification du blocage de l'application
if(VerificationBlocageApplication()) { if(VerificationBlocageApplication()) {
JOptionPane.showMessageDialog(null, "<html>Blocage de l'application.<br>" JOptionPane.showMessageDialog(null, "<html>Blocage de l'application.<br>"
+ "Contacter votre administrateur réseau.<br>Erreur : <b><u>Autorisation refusée.</u></b></html>"); + "<br>Erreur : <b><u>Autorisation refusée.</u></b></html>");
return; return;
} }
@ -125,12 +120,12 @@ public class Window_demarre extends JFrame {
boolean affichagePremierInformation = false; boolean affichagePremierInformation = false;
if(commandes.newVersion && (!commandes.messageVersion.isEmpty() || !commandes.messageAlerte.isEmpty()) ) { if(commandes.newVersion && (!commandes.messageVersion.isEmpty() || !commandes.messageAlerte.isEmpty()) ) {
String message = "<html>" + commandes.messageVersion + commandes.messageAlerte + "</html>"; String message = "<html>" + commandes.messageVersion + commandes.messageAlerte + "</html>";
if(commandes.noMessageAlerte) message = "<html>" + commandes.messageVersion + "</html>";
JOptionPane.showMessageDialog(null, message,"Information version",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, message,"Information version",JOptionPane.INFORMATION_MESSAGE);
affichagePremierInformation = true; affichagePremierInformation = true;
} }
if(!commandes.messageAlerte.isEmpty() && !affichagePremierInformation && !commandes.noMessageAlerte) {
if(!commandes.messageAlerte.isEmpty() && !affichagePremierInformation) {
String message = "<html>" + commandes.messageAlerte + "</html>"; String message = "<html>" + commandes.messageAlerte + "</html>";
JOptionPane.showMessageDialog(null, message,"Information",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, message,"Information",JOptionPane.INFORMATION_MESSAGE);
} }
@ -211,22 +206,14 @@ public class Window_demarre extends JFrame {
tabExporteImporte.setLayout(null); tabExporteImporte.setLayout(null);
JPanel tabAides = new JPanel(); JPanel tabAides = new JPanel();
tabbedPane.addTab("<html>Aides-Tutoriels<br>Tickets-Versions</html>", tabAides); tabbedPane.addTab("<html>Wikidoc-Tutoriels<br>Tickets-Versions</html>", tabAides);
JPanel tabLicence = new JPanel(); JPanel tabLicence = new JPanel();
tabbedPane.addTab("<html>Crédits<br>Licences</html>", tabLicence); tabbedPane.addTab("<html>Crédits<br>Licences</html>", tabLicence);
tabLicence.setLayout(null); tabLicence.setLayout(null);
JLabel lblCredits = new JLabel("<html><h3>Auteur : Pablo Rodriguez</h3>\r\n<p><i>Il n'y a aucune autre motivation que celle de vous rendre service qui m'ait poussé à réaliser ce programme. J'espère sincèrement qu'il vous sera utile.</i></p>\r\n<hr>\r\n<p><b>Enseignant</b> : Université d'Artois</p>\r\n<p><b>Matières</b> : T.I.C.E. - Informatique - Automatisme (informatique Industruiel) - Productique - Statistique.</p>\r\n<p><b>Email</b> : pablo rodriguez@univ-artois.fr</p>"); btnLicence.setBounds(390, 173, 324, 50);
lblCredits.setHorizontalAlignment(SwingConstants.LEFT); btnLicence.addActionListener(new ActionListener() {
lblCredits.setVerticalAlignment(SwingConstants.TOP);
lblCredits.setFont(new Font("Arial", Font.PLAIN, 14));
lblCredits.setToolTipText("");
lblCredits.setBounds(10, 10, 704, 140);
tabLicence.add(lblCredits);
JButton btnNewButton_1 = new JButton("Licence GNU GPL 3.0");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
String url = "https://www.gnu.org/licenses/gpl-3.0.html#license-text"; String url = "https://www.gnu.org/licenses/gpl-3.0.html#license-text";
try { try {
@ -237,23 +224,30 @@ public class Window_demarre extends JFrame {
} }
} }
}); });
btnNewButton_1.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/gplv3-127x51.png"))); btnLicence.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/gplv3-127x51.png")));
btnNewButton_1.setFont(new Font("Arial", Font.BOLD, 14)); btnLicence.setFont(new Font("Arial", Font.BOLD, 14));
btnNewButton_1.setBounds(10, 150, 326, 64);
tabLicence.add(btnNewButton_1);
JLabel lblVersion = new JLabel("<html><h2>Version : " + commandes.version + "<br>"+ commandes.dateversion +"</h2></html>"); tabLicence.add(btnLicence);
JLabel lblCredits = new JLabel("<html><h3>Auteur : Pablo Rodriguez</h3>\r\n<p><i>Mon programme a été créé de manière totalement désintéressée, avec pour seul objectif de vous aider. Mon souhait sincère est qu'il vous soit véritablement utile. N'hésitez pas à l'utiliser pleinement ou à le partager. Si vous avez des questions ou des suggestions pour l'améliorer, vous pouvez aisément publier un ticket pour me faire part de vos suggestions ou commentaires.</i></p>\r\n<hr>\r\n<p>Enseignant à l'Université d'Artois, je suis agrégé de génie mécanique, diplomé de l'I.N.S.A. (ingénieur mécanique). Spécialisé dans les matières suivantes : T.I.C.E., Informatique, Automatisme, Gestion de projet, Statistique, Mécanique, Productique.</p><br>\r\n<p>Email : <b>pablo.rodriguez@univ-artois.fr</b></p>");
lblCredits.setHorizontalAlignment(SwingConstants.LEFT);
lblCredits.setVerticalAlignment(SwingConstants.TOP);
lblCredits.setFont(new Font("Arial", Font.PLAIN, 14));
lblCredits.setToolTipText("");
lblCredits.setBounds(10, 10, 704, 204);
tabLicence.add(lblCredits);
JLabel lblVersion = new JLabel("<html><h2>Version : "+ commandes.version + " - " + commandes.dateversion+"</h2></html>");
lblVersion.setForeground(SystemColor.textHighlight); lblVersion.setForeground(SystemColor.textHighlight);
lblVersion.setVerticalAlignment(SwingConstants.TOP); lblVersion.setVerticalAlignment(SwingConstants.TOP);
lblVersion.setHorizontalAlignment(SwingConstants.RIGHT); lblVersion.setHorizontalAlignment(SwingConstants.RIGHT);
lblVersion.setBounds(563, 150, 151, 64); lblVersion.setBounds(278, 6, 436, 33);
tabLicence.add(lblVersion); tabLicence.add(lblVersion);
frmEvalwriter.getContentPane().add(tabbedPane); frmEvalwriter.getContentPane().add(tabbedPane);
btnExporterTouteLaBase = new JButton("<html>Exporter toute la base dans<br>un classeur MS Excel</html>"); btnExporterTouteLaBase = new JButton("<html>Exporter toute la base dans<br>un classeur MS Excel</html>");
btnExporterTouteLaBase.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/exportbasetoexcel.png"))); btnExporterTouteLaBase.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/exportbasetoexcel.png")));
btnExporterTouteLaBase.setFont(new Font("Arial", Font.BOLD, 16)); btnExporterTouteLaBase.setFont(new Font("Arial", Font.BOLD, 16));
@ -290,13 +284,6 @@ public class Window_demarre extends JFrame {
tabInscriptions.add(btnimporterDesInscriptionsdepuisClasseur); tabInscriptions.add(btnimporterDesInscriptionsdepuisClasseur);
tabAides.setLayout(null); tabAides.setLayout(null);
btnNAideMiseAJour.setForeground(Color.GRAY);
btnNAideMiseAJour.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 12));
btnNAideMiseAJour.setBounds(370, 11, 340, 30);
tabAides.add(btnNAideMiseAJour);
if(commandes.newVersion) { if(commandes.newVersion) {
btnNewVersion = new JButton("<html>Nouvelle version disponible : "+ commandes.nameNewVersion + "</html>"); btnNewVersion = new JButton("<html>Nouvelle version disponible : "+ commandes.nameNewVersion + "</html>");
} }
@ -306,17 +293,6 @@ public class Window_demarre extends JFrame {
btnNewVersion.setVisible(commandes.newVersion); btnNewVersion.setVisible(commandes.newVersion);
frmEvalwriter.getContentPane().add(btnNewVersion); frmEvalwriter.getContentPane().add(btnNewVersion);
btnHelpDownload.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 12));
btnHelpDownload.setForeground(Color.GRAY);
btnHelpDownload.setBounds(370, 74, 340, 30);
tabAides.add(btnHelpDownload);
btnAideImportationInscriptionXLSX.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 12));
btnAideImportationInscriptionXLSX.setBounds(370, 42, 340, 30);
btnAideImportationInscriptionXLSX.setForeground(Color.GRAY);
tabAides.add(btnAideImportationInscriptionXLSX);
JButton btnNewButton = new JButton(""); JButton btnNewButton = new JButton("");
btnNewButton.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/tickets_bouton.png"))); btnNewButton.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/tickets_bouton.png")));
btnNewButton.addActionListener(new ActionListener() { btnNewButton.addActionListener(new ActionListener() {
@ -365,6 +341,22 @@ public class Window_demarre extends JFrame {
btnVersions.setBounds(370, 116, 340, 95); btnVersions.setBounds(370, 116, 340, 95);
tabAides.add(btnVersions); tabAides.add(btnVersions);
JButton btnWiki = new JButton("");
btnWiki.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/wiki_bouton.png")));
btnWiki.setBounds(370, 10, 340, 95);
tabAides.add(btnWiki);
btnWiki.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String url = "https://forge.chapril.org/pablo/GestionDesInscriptions/wiki/?action=_pages";
try {
Desktop.getDesktop().browse(new URI(url));
} catch (IOException | URISyntaxException ex) {
JOptionPane.showMessageDialog(null, "Problème avec la connexion internet.");
ex.printStackTrace();
}
}
});
JButton btnParametresClasseurInscription = new JButton("<html>Paramètres classeur<br>des inscriptions</html>"); JButton btnParametresClasseurInscription = new JButton("<html>Paramètres classeur<br>des inscriptions</html>");
btnParametresClasseurInscription.addActionListener(new ActionListener() { btnParametresClasseurInscription.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
@ -394,12 +386,16 @@ public class Window_demarre extends JFrame {
}); });
tabGestionnaire.add(btnRenommerActiverColonne); tabGestionnaire.add(btnRenommerActiverColonne);
JLabel lblNewLabel = new JLabel("<html>Grâce au gestionnaire, vous pouvez sélectionner une formation. Ensuite, vous pouvez modifier directement les données de chaque étudiant. Une fonction vous permet de créer des groupes.<br>Si nécessaire, vous pouvez exporter une table filtrée des données, ou bien exporter les feuilles d'émargements en fonction des critères de filtrage choisis.</html>"); JLabel lblNewLabel = new JLabel("<html>Grâce au gestionnaire, vous pouvez sélectionner une formation. Ensuite, vous pouvez modifier directement les données de chaque étudiant. Une fonction vous permet de créer des groupes.<br>Si nécessaire, vous pouvez exporter une formation avec les données filtrées, ou bien exporter les feuilles d'émargements en fonction des critères de filtrage choisis.</html>");
lblNewLabel.setVerticalAlignment(SwingConstants.TOP); lblNewLabel.setVerticalAlignment(SwingConstants.TOP);
lblNewLabel.setFont(new Font("Arial", Font.PLAIN, 12)); lblNewLabel.setFont(new Font("Arial", Font.PLAIN, 12));
lblNewLabel.setBounds(370, 101, 340, 109); lblNewLabel.setBounds(370, 101, 340, 109);
tabGestionnaire.add(lblNewLabel); tabGestionnaire.add(lblNewLabel);
ListenerAction(); ListenerAction();
@ -475,27 +471,6 @@ public class Window_demarre extends JFrame {
} }
}); });
// Bouton importer des inscriptions depuis un fichier CSV.
// actImporterInscriptionDepuisCSV.addActionListener(new ActionListener() {
// public void actionPerformed(ActionEvent e) {
// importInscriptionCSV.importe();
// }
// });
// Bouton Aide à l'importation des inscription depuis un classeur Ms Excel
btnAideImportationInscriptionXLSX.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Window_Help_inscriptionXLSX();
}
});
// Bouton Aide au téléchargement et à l'installation de l'application.
btnHelpDownload.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Window_Help_download_and_install();
}
});
// Bouton nouvelle version disponible. // Bouton nouvelle version disponible.
btnNewVersion.addActionListener(new ActionListener() { btnNewVersion.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
@ -509,12 +484,6 @@ public class Window_demarre extends JFrame {
} }
}); });
// Bouton aide à la mise à jour de la base depuis un classeur Ms Excel
btnNAideMiseAJour.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Window_Help_maj_data();
}
});
} }
@ -611,4 +580,5 @@ public class Window_demarre extends JFrame {
} }
lblFondImage.setIcon(new ImageIcon(resizedImage)); lblFondImage.setIcon(new ImageIcon(resizedImage));
} }
} }

View File

@ -10,6 +10,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Random; import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
@ -42,6 +44,7 @@ public class Window_genere_groupe extends JFrame {
private JTextField textNombre_Etudiant_Groupe; private JTextField textNombre_Etudiant_Groupe;
private int nombreEtudiantDansGroupe = 30; private int nombreEtudiantDansGroupe = 30;
static JLabel lblAuteurVersion = new JLabel("<html>Pablo Rodriguez - 2023<br>Version "+ commandes.version+"</html>"); static JLabel lblAuteurVersion = new JLabel("<html>Pablo Rodriguez - 2023<br>Version "+ commandes.version+"</html>");
private JTextField textFirstLettreChiffre;
@ -56,7 +59,7 @@ public class Window_genere_groupe extends JFrame {
private void initialize( String nameGroupe,Window_gestionnaire instance) { private void initialize( String nameGroupe,Window_gestionnaire instance) {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(0, 0, 863, 534); setBounds(0, 0, 863, 500);
setTitle("Générer des groupes"); setTitle("Générer des groupes");
setLocationRelativeTo(null); // Centre la fenêtre à l'écran setLocationRelativeTo(null); // Centre la fenêtre à l'écran
@ -84,7 +87,7 @@ public class Window_genere_groupe extends JFrame {
JButton btnGenere_Groupe = new JButton("Générer les groupes"); JButton btnGenere_Groupe = new JButton("Générer les groupes");
btnGenere_Groupe.setFont(new Font("Arial", Font.BOLD, 14)); btnGenere_Groupe.setFont(new Font("Arial", Font.BOLD, 14));
btnGenere_Groupe.setBounds(487, 396, 350, 80); btnGenere_Groupe.setBounds(487, 396, 350, 58);
getContentPane().add(btnGenere_Groupe); getContentPane().add(btnGenere_Groupe);
textPattern_Groupe = new JTextField(); textPattern_Groupe = new JTextField();
@ -144,11 +147,11 @@ public class Window_genere_groupe extends JFrame {
lblNombre_Etudiant_Groupe.setBounds(382, 318, 332, 36); lblNombre_Etudiant_Groupe.setBounds(382, 318, 332, 36);
getContentPane().add(lblNombre_Etudiant_Groupe); getContentPane().add(lblNombre_Etudiant_Groupe);
JLabel lblNewLabel_1 = new JLabel("<html>(1) - Si le caractère @ ou # n'est pas présent alors pattern fixe.<br><br>@ : correspond à une lettre de A à Z<br># : correspond à un nombre de 1 à 100</html>"); JLabel lblNewLabel_1 = new JLabel("<html>(1) - Si le caractère @ ou # n'est pas présent alors pattern fixe.<br>@ : correspond à une lettre de A à Z<br># : correspond à un nombre de 1 à 100</html>");
lblNewLabel_1.setForeground(Color.BLUE); lblNewLabel_1.setForeground(Color.BLUE);
lblNewLabel_1.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 14)); lblNewLabel_1.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 14));
lblNewLabel_1.setVerticalAlignment(SwingConstants.TOP); lblNewLabel_1.setVerticalAlignment(SwingConstants.TOP);
lblNewLabel_1.setBounds(10, 376, 441, 100); lblNewLabel_1.setBounds(10, 396, 441, 58);
getContentPane().add(lblNewLabel_1); getContentPane().add(lblNewLabel_1);
@ -203,9 +206,15 @@ public class Window_genere_groupe extends JFrame {
rdbtnAlphabetique.setBounds(670, 366, 167, 23); rdbtnAlphabetique.setBounds(670, 366, 167, 23);
getContentPane().add(rdbtnAlphabetique); getContentPane().add(rdbtnAlphabetique);
JLabel lblNewLabel_2 = new JLabel("À partir de ...");
lblNewLabel_2.setFont(new Font("Arial", Font.BOLD, 13));
lblNewLabel_2.setBounds(66, 365, 94, 20);
getContentPane().add(lblNewLabel_2);
textFirstLettreChiffre = new JTextField();
textFirstLettreChiffre.setBounds(170, 357, 86, 28);
getContentPane().add(textFirstLettreChiffre);
textFirstLettreChiffre.setColumns(2);
rdbtnAlphabetique.addActionListener(new ActionListener() { rdbtnAlphabetique.addActionListener(new ActionListener() {
@Override @Override
@ -253,27 +262,39 @@ public class Window_genere_groupe extends JFrame {
break; break;
} }
if(!textFirstLettreChiffre.getText().isEmpty()) {
boolean erreur=false;
if(textPattern_Groupe.getText().contains("@") && verifieChiffre(textFirstLettreChiffre.getText()) ) erreur =true;
if(textPattern_Groupe.getText().contains("#") && verifieLettre(textFirstLettreChiffre.getText()) ) erreur =true;
if(erreur) {
showCustomDialogErreurPattern();
return ;
}
if(textPattern_Groupe.getText().contains("@") && textPattern_Groupe.getText().contains("#")) {
JOptionPane.showMessageDialog(null, "<html>Ce n'est pas possible dans le pattern<r>"
+ "d'avoir @ et #.</html>","Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
}
if(!verrouillageGroupe) { if(!verrouillageGroupe) {
int choice = showCustomDialog(); int choice = showCustomDialog();
if (choice == JOptionPane.YES_OPTION) { if (choice == JOptionPane.YES_OPTION) {
if(rdbtnAleatoire.isSelected()) { if(rdbtnAleatoire.isSelected()) {
generateAleatoireGroupe(nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()),verrouillageGroupe); generateAleatoireGroupe(nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()),verrouillageGroupe, textFirstLettreChiffre.getText());
dispose(); dispose();
} }
if(rdbtnAlphabetique.isSelected()) { if(rdbtnAlphabetique.isSelected()) {
generateAlphabetiqueGroupe(nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()),verrouillageGroupe); generateAlphabetiqueGroupe(nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()),verrouillageGroupe, textFirstLettreChiffre.getText());
dispose(); dispose();
} }
} }
}else { }else {
if(rdbtnAleatoire.isSelected()) { if(rdbtnAleatoire.isSelected()) {
generateAleatoireGroupe(nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()),verrouillageGroupe); generateAleatoireGroupe(nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()),verrouillageGroupe, textFirstLettreChiffre.getText());
} }
if(rdbtnAlphabetique.isSelected()) { if(rdbtnAlphabetique.isSelected()) {
generateAlphabetiqueGroupe(nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()),verrouillageGroupe); generateAlphabetiqueGroupe(nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()),verrouillageGroupe, textFirstLettreChiffre.getText());
} }
dispose(); dispose();
} }
@ -293,7 +314,7 @@ public class Window_genere_groupe extends JFrame {
* @param patternGroupe * @param patternGroupe
* @param tailleDesGroupes * @param tailleDesGroupes
*/ */
private static void generateAleatoireGroupe(String nameGroupe,Window_gestionnaire instance, String patternGroupe, Integer tailleDesGroupes,boolean verrouillageGroupe) { private static void generateAleatoireGroupe(String nameGroupe,Window_gestionnaire instance, String patternGroupe, Integer tailleDesGroupes,boolean verrouillageGroupe,String firstLettreChiffre) {
noeud nFormation = commandes.nBase.getChild(instance.getTable().getAttributes("Formation")); noeud nFormation = commandes.nBase.getChild(instance.getTable().getAttributes("Formation"));
int compteurEtudiantInsereDansGroupe=0; int compteurEtudiantInsereDansGroupe=0;
List<noeud> tableChild = instance.getTable().getChildren(); List<noeud> tableChild = instance.getTable().getChildren();
@ -308,14 +329,18 @@ public class Window_genere_groupe extends JFrame {
if(patternGroupe.contains("@")) { if(patternGroupe.contains("@")) {
String patternCopy = new String(patternGroupe); String patternCopy = new String(patternGroupe);
Random random = new Random(); Random random = new Random();
String caractere = "A"; String caractereDebut = "A";
String str = patternCopy.replaceAll("@", caractere); if(!firstLettreChiffre.isEmpty()) {
if(verifieLettre(firstLettreChiffre)) caractereDebut = firstLettreChiffre;
}
String str = patternCopy.replaceAll("@", caractereDebut);
for (noeud child : tableChild) { for (noeud child : tableChild) {
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) { if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
do { do {
char randomChar = (char) ('A' + random.nextInt(nombreDeGroupes)); char randomChar = (char) ( caractereDebut.toCharArray()[0] + random.nextInt(nombreDeGroupes));
caractere = String.valueOf(randomChar); String caractere = String.valueOf(randomChar);
patternCopy = new String(patternGroupe); patternCopy = new String(patternGroupe);
str = patternCopy.replaceAll("@", caractere); str = patternCopy.replaceAll("@", caractere);
}while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes); }while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes);
@ -326,14 +351,26 @@ public class Window_genere_groupe extends JFrame {
sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null); sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null);
instance.majFiltres(); instance.majFiltres();
}else if (patternGroupe.contains("#")) { }else if (patternGroupe.contains("#")) {
patternGroupe = patternGroupe.replaceAll("#", ""); String patternCopy = new String(patternGroupe);
int debut = 1;
Random random = new Random(); Random random = new Random();
String str = ""; String str = patternCopy.replaceAll("#",String.valueOf(debut));
if(!firstLettreChiffre.isEmpty()) {
if(verifieChiffre(firstLettreChiffre)) {
patternCopy = new String(patternGroupe);
debut = Integer.valueOf(firstLettreChiffre);
str = patternCopy.replaceAll("#",String.valueOf(debut));
}
}
for (noeud child : tableChild) { for (noeud child : tableChild) {
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) { if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
do { do {
int randomInteger = (1 + random.nextInt(nombreDeGroupes)); int randomInteger = (debut + random.nextInt(nombreDeGroupes));
str = patternGroupe + String.valueOf(randomInteger); patternCopy = new String(patternGroupe);
str = patternCopy.replaceAll("#",String.valueOf(randomInteger));
}while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes); }while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes);
compteurEtudiantInsereDansGroupe++; compteurEtudiantInsereDansGroupe++;
nFormation.getChild(child.getName()).setAttribut(nameGroupe, str); nFormation.getChild(child.getName()).setAttribut(nameGroupe, str);
@ -370,7 +407,7 @@ public class Window_genere_groupe extends JFrame {
* @param tailleDesGroupes * @param tailleDesGroupes
* @param verrouillageGroupe * @param verrouillageGroupe
*/ */
private static void generateAlphabetiqueGroupe(String nameGroupe, Window_gestionnaire instance, String patternGroupe, Integer tailleDesGroupes, boolean verrouillageGroupe) { private static void generateAlphabetiqueGroupe(String nameGroupe, Window_gestionnaire instance, String patternGroupe, Integer tailleDesGroupes, boolean verrouillageGroupe, String firstLettreChiffre) {
noeud nFormation = commandes.nBase.getChild(instance.getTable().getAttributes("Formation")); noeud nFormation = commandes.nBase.getChild(instance.getTable().getAttributes("Formation"));
int compteurEtudiantInsereDansGroupe =0; int compteurEtudiantInsereDansGroupe =0;
List<noeud> tableChild = instance.getTable().getChildren(); List<noeud> tableChild = instance.getTable().getChildren();
@ -384,8 +421,12 @@ public class Window_genere_groupe extends JFrame {
if(patternGroupe.contains("@")) { if(patternGroupe.contains("@")) {
String patternCopy = new String(patternGroupe); String patternCopy = new String(patternGroupe);
int nombreDeGroupes=0; int nombreDeGroupes=0;
String caractere = "A"; String caractereDebut = "A";
String str = patternCopy.replaceAll("@", caractere); if(!firstLettreChiffre.isEmpty()) {
if(verifieLettre(firstLettreChiffre)) caractereDebut = firstLettreChiffre;
}
String str = patternCopy.replaceAll("@", caractereDebut);
int compteur = 0; int compteur = 0;
for (noeud child : tableChild) { for (noeud child : tableChild) {
//Groupes non verrouillés //Groupes non verrouillés
@ -393,7 +434,7 @@ public class Window_genere_groupe extends JFrame {
if(compteur==tailleDesGroupes) { if(compteur==tailleDesGroupes) {
compteur = 0; compteur = 0;
nombreDeGroupes++; nombreDeGroupes++;
caractere = String.valueOf( (char) ('A' + nombreDeGroupes)); String caractere = String.valueOf( (char) (caractereDebut.toCharArray()[0] + nombreDeGroupes));
patternCopy = new String(patternGroupe); patternCopy = new String(patternGroupe);
str = patternCopy.replaceAll("@", caractere); str = patternCopy.replaceAll("@", caractere);
} }
@ -406,7 +447,7 @@ public class Window_genere_groupe extends JFrame {
if(nombreGroupeDejaPresent>=tailleDesGroupes) { if(nombreGroupeDejaPresent>=tailleDesGroupes) {
do { do {
nombreDeGroupes++; nombreDeGroupes++;
caractere = String.valueOf((char) ('A' + nombreDeGroupes)); String caractere = String.valueOf((char) (caractereDebut.toCharArray()[0] + nombreDeGroupes));
patternCopy = new String(patternGroupe); patternCopy = new String(patternGroupe);
str = patternCopy.replaceAll("@", caractere); str = patternCopy.replaceAll("@", caractere);
}while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes); }while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes);
@ -418,16 +459,30 @@ public class Window_genere_groupe extends JFrame {
sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null); sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null);
instance.majFiltres(); instance.majFiltres();
}else if (patternGroupe.contains("#")) { }else if (patternGroupe.contains("#")) {
patternGroupe = patternGroupe.replaceAll("#", ""); String patternCopy = new String(patternGroupe);
int nombreDeGroupes = 1; int nombreDeGroupes = 1;
int compteur = 0; int compteur = 0;
String str = patternGroupe + String.valueOf(nombreDeGroupes);
String str = patternCopy.replaceAll("#", String.valueOf(nombreDeGroupes));
if(!firstLettreChiffre.isEmpty()) {
if(verifieChiffre(firstLettreChiffre)) {
patternCopy = new String(patternGroupe);
nombreDeGroupes = Integer.valueOf(firstLettreChiffre);
str = patternCopy.replaceAll("#", firstLettreChiffre);
}
}
for (noeud child : tableChild) { for (noeud child : tableChild) {
if(verrouillageGroupe) { if(!verrouillageGroupe) {
if(compteur==tailleDesGroupes) { if(compteur==tailleDesGroupes) {
compteur = 0; compteur = 0;
nombreDeGroupes++; nombreDeGroupes++;
str = patternGroupe + nombreDeGroupes; patternCopy = new String(patternGroupe);
str = patternCopy.replaceAll("#", String.valueOf(nombreDeGroupes));
} }
compteur++; compteur++;
compteurEtudiantInsereDansGroupe++; compteurEtudiantInsereDansGroupe++;
@ -438,7 +493,8 @@ public class Window_genere_groupe extends JFrame {
if(nombreGroupeDejaPresent>=tailleDesGroupes) { if(nombreGroupeDejaPresent>=tailleDesGroupes) {
do { do {
nombreDeGroupes++; nombreDeGroupes++;
str = patternGroupe + nombreDeGroupes; patternCopy = new String(patternGroupe);
str = patternCopy.replaceAll("#", String.valueOf(nombreDeGroupes));
}while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes); }while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes);
} }
compteurEtudiantInsereDansGroupe++; compteurEtudiantInsereDansGroupe++;
@ -521,6 +577,17 @@ public class Window_genere_groupe extends JFrame {
int optionType = JOptionPane.YES_NO_OPTION; int optionType = JOptionPane.YES_NO_OPTION;
Icon icon = new ImageIcon(Window_demarre.class.getResource("/resources/Danger.png")); Icon icon = new ImageIcon(Window_demarre.class.getResource("/resources/Danger.png"));
return JOptionPane.showOptionDialog(null, message, title, optionType, JOptionPane.QUESTION_MESSAGE, icon, null, null);
}
private static int showCustomDialogErreurPattern() {
String message = "<html>Il y a une erreur entre le pattern (@ ou #), et la valeur de début.<br><br>"
+ "<b>Si c'est un chiffre ou un nombre (#), saisissez une valeur numérique entière.<br>"
+ "Si c'est une lettre (@), saisissez une lettre alphabétique.</b></html>";
String title = "Erreur";
int optionType = JOptionPane.PLAIN_MESSAGE;
Icon icon = new ImageIcon(Window_demarre.class.getResource("/resources/rien_compris.png"));
return JOptionPane.showOptionDialog(null, message, title, optionType, JOptionPane.QUESTION_MESSAGE, icon, null, null); return JOptionPane.showOptionDialog(null, message, title, optionType, JOptionPane.QUESTION_MESSAGE, icon, null, null);
} }
@ -544,4 +611,30 @@ public class Window_genere_groupe extends JFrame {
return JOptionPane.showOptionDialog(null, message, title, optionType, JOptionPane.QUESTION_MESSAGE, icon, null, null); return JOptionPane.showOptionDialog(null, message, title, optionType, JOptionPane.QUESTION_MESSAGE, icon, null, null);
} }
/**
* Retourne TRUE si l'utilisateur à saisie une lettre de a à Z en minuscule ou majuscule.
* @param chaine
* @return
*/
public static boolean verifieLettre(String chaine) {
// Pattern pour vérifier si la chaine contient une lettre de A à Z (majuscule ou minuscule)
Pattern pattern = Pattern.compile("^[a-zA-Z]$");
Matcher matcher = pattern.matcher(chaine);
return matcher.matches();
}
/**
* Retourne TRUE si l'utilisateur à saisie un chiffre de 0 à 9.
* @param chaine
* @return
*/
public static boolean verifieChiffre(String chaine) {
// Pattern pour vérifier si la chaine contient un chiffre de 0 à 9
Pattern pattern = Pattern.compile("^[0-9]{1,2}$");
Matcher matcher = pattern.matcher(chaine);
return matcher.matches();
}
} }

View File

@ -24,6 +24,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BoxLayout; import javax.swing.BoxLayout;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
@ -92,6 +94,7 @@ public class Window_gestionnaire extends JFrame {
private JComboBox<String> cGroupePrincipal; private JComboBox<String> cGroupePrincipal;
private JComboBox<String> cGroupeProjet; private JComboBox<String> cGroupeProjet;
private JComboBox<String> cRegime; private JComboBox<String> cRegime;
private JComboBox<String> cCovoiturage;
private JCheckBoxMenuItem chckToutesLesColonnes = new JCheckBoxMenuItem("Affiche toutes les colonnes"); private JCheckBoxMenuItem chckToutesLesColonnes = new JCheckBoxMenuItem("Affiche toutes les colonnes");
private JCheckBoxMenuItem chckGroupeTD = new JCheckBoxMenuItem("Groupe TD"); private JCheckBoxMenuItem chckGroupeTD = new JCheckBoxMenuItem("Groupe TD");
@ -201,14 +204,14 @@ public class Window_gestionnaire extends JFrame {
scrollPaneTable.setColumnHeaderView(chckbxmntmNewCheckItem); scrollPaneTable.setColumnHeaderView(chckbxmntmNewCheckItem);
JPanel panelFiltre = new JPanel(); JPanel panelFiltre = new JPanel();
panelFiltre.setPreferredSize(new Dimension(1900, 128)); panelFiltre.setPreferredSize(new Dimension(1900, 120));
panelFiltre.setBackground(Color.gray); panelFiltre.setBackground(Color.gray);
GridBagLayout gbl_panelFiltre = new GridBagLayout(); GridBagLayout gbl_panelFiltre = new GridBagLayout();
gbl_panelFiltre.columnWidths = new int[] {160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160}; gbl_panelFiltre.columnWidths = new int[] {160, 80, 180, 180, 180, 180, 180, 180, 180, 160};
gbl_panelFiltre.rowHeights = new int[] {14, 32, 14, 32, 2}; gbl_panelFiltre.rowHeights = new int[] {14, 32, 14, 32, 2};
gbl_panelFiltre.columnWeights = new double[]{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; gbl_panelFiltre.columnWeights = new double[]{0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
gbl_panelFiltre.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0}; gbl_panelFiltre.rowWeights = new double[]{0.0, 1.0, 0.0, 1.0};
panelFiltre.setLayout(gbl_panelFiltre); panelFiltre.setLayout(gbl_panelFiltre);
JLabel lblYears = new JLabel("Année"); JLabel lblYears = new JLabel("Année");
@ -316,6 +319,7 @@ public class Window_gestionnaire extends JFrame {
cLangueLV1.setSelectedIndex(0); cLangueLV1.setSelectedIndex(0);
cLangueLV2.setSelectedIndex(0); cLangueLV2.setSelectedIndex(0);
cRegime.setSelectedIndex(0); cRegime.setSelectedIndex(0);
cCovoiturage.setSelectedIndex(0);
nStudent = null; nStudent = null;
majTable(); majTable();
} }
@ -548,6 +552,17 @@ public class Window_gestionnaire extends JFrame {
gbc_lblRegime.gridy = 2; gbc_lblRegime.gridy = 2;
panelFiltre.add(lblRegime, gbc_lblRegime); panelFiltre.add(lblRegime, gbc_lblRegime);
JLabel lblCovoiturage = new JLabel("Etudiants en covoiturage");
lblCovoiturage.setFont(new Font("Tahoma", Font.BOLD, 12));
lblCovoiturage.setHorizontalAlignment(SwingConstants.LEFT);
lblCovoiturage.setVerticalAlignment(SwingConstants.TOP);
GridBagConstraints gbc_lblCovoiturage = new GridBagConstraints();
gbc_lblCovoiturage.anchor = GridBagConstraints.WEST;
gbc_lblCovoiturage.insets = new Insets(0, 0, 5, 5);
gbc_lblCovoiturage.gridx = 8;
gbc_lblCovoiturage.gridy = 2;
panelFiltre.add(lblCovoiturage, gbc_lblCovoiturage);
GridBagConstraints gbc_cFormations = new GridBagConstraints(); GridBagConstraints gbc_cFormations = new GridBagConstraints();
gbc_cFormations.gridwidth = 2; gbc_cFormations.gridwidth = 2;
gbc_cFormations.fill = GridBagConstraints.BOTH; gbc_cFormations.fill = GridBagConstraints.BOTH;
@ -558,7 +573,7 @@ public class Window_gestionnaire extends JFrame {
JPanel panelNorth = new JPanel(); JPanel panelNorth = new JPanel();
contentPane.add(panelNorth, BorderLayout.NORTH); contentPane.add(panelNorth, BorderLayout.NORTH);
panelNorth.setLayout(new BorderLayout(0, 0)); panelNorth.setLayout(new BorderLayout(0, 2));
JMenuBar menuBar = new JMenuBar(); JMenuBar menuBar = new JMenuBar();
@ -742,7 +757,7 @@ public class Window_gestionnaire extends JFrame {
mnNewMenu.setFont(new Font("Arial", Font.BOLD, 16)); mnNewMenu.setFont(new Font("Arial", Font.BOLD, 16));
menuBar.add(mnNewMenu); menuBar.add(mnNewMenu);
JMenuItem menueSauvegardeBase = new JMenuItem("Créer une sauvegarde de la base"); JMenuItem menueSauvegardeBase = new JMenuItem("<html>Créer une sauvegarde<br>de la base</html>");
menueSauvegardeBase.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/saveBase.png"))); menueSauvegardeBase.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/saveBase.png")));
menueSauvegardeBase.setFont(new Font("Arial", Font.BOLD, 14)); menueSauvegardeBase.setFont(new Font("Arial", Font.BOLD, 14));
mnNewMenu.add(menueSauvegardeBase); mnNewMenu.add(menueSauvegardeBase);
@ -758,7 +773,7 @@ public class Window_gestionnaire extends JFrame {
mnNewMenu.addSeparator(); mnNewMenu.addSeparator();
JMenuItem menuSupprimeEtudiantDeLaBase = new JMenuItem("Supprimer de la base l'étudiant sélectionné."); JMenuItem menuSupprimeEtudiantDeLaBase = new JMenuItem("<html>Supprimer de la base l'étudiant<br>sélectionné</html>");
menuSupprimeEtudiantDeLaBase.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/supprimeStudent.png"))); menuSupprimeEtudiantDeLaBase.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/supprimeStudent.png")));
menuSupprimeEtudiantDeLaBase.setFont(new Font("Arial", Font.BOLD, 14)); menuSupprimeEtudiantDeLaBase.setFont(new Font("Arial", Font.BOLD, 14));
mnNewMenu.add(menuSupprimeEtudiantDeLaBase); mnNewMenu.add(menuSupprimeEtudiantDeLaBase);
@ -770,7 +785,7 @@ public class Window_gestionnaire extends JFrame {
mnNewMenu.addSeparator(); mnNewMenu.addSeparator();
JMenuItem menuSupprimeFormation = new JMenuItem("Supprime de la base la formation."); JMenuItem menuSupprimeFormation = new JMenuItem("<html>Supprime de la base la formation<br>actuellement sélectionnée</html>");
menuSupprimeFormation.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/supprimeFormation.png"))); menuSupprimeFormation.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/supprimeFormation.png")));
menuSupprimeFormation.setFont(new Font("Arial", Font.BOLD, 14)); menuSupprimeFormation.setFont(new Font("Arial", Font.BOLD, 14));
mnNewMenu.add(menuSupprimeFormation); mnNewMenu.add(menuSupprimeFormation);
@ -782,13 +797,26 @@ public class Window_gestionnaire extends JFrame {
mnNewMenu.addSeparator(); mnNewMenu.addSeparator();
JMenuItem menuSelectYearDefautl = new JMenuItem("Sélectionner une année universitaire par défaut"); JMenuItem menuVerrouilleTousLesGroupesDeLaBase = new JMenuItem("<html>Verouille tous les groupes<br>de toutes les formations de la base</html>");
menuSelectYearDefautl.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 14)); menuVerrouilleTousLesGroupesDeLaBase.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/verrouiller.png")));
mnNewMenu.add(menuSelectYearDefautl); menuVerrouilleTousLesGroupesDeLaBase.setFont(new Font("Arial", Font.BOLD, 14));
mnNewMenu.add(menuVerrouilleTousLesGroupesDeLaBase);
menuVerrouilleTousLesGroupesDeLaBase.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
VerouillageDeTousLesGroupesDeToutesLesFormationsDeLaBase();
}
});
JMenuItem menuDeverrouilleTousLesGroupesDeLaBase = new JMenuItem("<html>Déverrouille tous les groupes<br>de toutes les formations de la base</html>");
menuDeverrouilleTousLesGroupesDeLaBase.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/deverrouiller.png")));
menuDeverrouilleTousLesGroupesDeLaBase.setFont(new Font("Arial", Font.BOLD, 14));
mnNewMenu.add(menuDeverrouilleTousLesGroupesDeLaBase);
menuDeverrouilleTousLesGroupesDeLaBase.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DeverouillageDeTousLesGroupesDeToutesLesFormationsDeLaBase();
}
});
JMenuItem menuCreateYearDefault = new JMenuItem("Créer une année universitaire");
menuCreateYearDefault.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 14));
mnNewMenu.add(menuCreateYearDefault);
JMenu menuGroupe = new JMenu("Protection des groupes"); JMenu menuGroupe = new JMenu("Protection des groupes");
menuGroupe.setFont(new Font("Arial", Font.BOLD, 16)); menuGroupe.setFont(new Font("Arial", Font.BOLD, 16));
@ -981,6 +1009,20 @@ public class Window_gestionnaire extends JFrame {
} }
}); });
JMenu menuCovoiturage = new JMenu("Covoiturage");
menuCovoiturage.setFont(new Font("Arial", Font.BOLD, 16));
menuBar.add(menuCovoiturage);
JMenuItem menuCovoiturageTousLesGroupes = new JMenuItem("<html>Verification des covoiturages<br>dans cette formation</html>");
menuCovoiturageTousLesGroupes.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/covoiturage.png")));
menuCovoiturageTousLesGroupes.setFont(new Font("Arial", Font.BOLD, 14));
menuCovoiturage.add(menuCovoiturageTousLesGroupes);
menuCovoiturageTousLesGroupes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
verificationCovoiturageTousLesGroupes();
}
});
JScrollPane scrollPaneFiltre = new JScrollPane(panelFiltre); JScrollPane scrollPaneFiltre = new JScrollPane(panelFiltre);
@ -1011,7 +1053,7 @@ public class Window_gestionnaire extends JFrame {
cLangueLV2 = new JComboBox<String>(); cLangueLV2 = new JComboBox<String>();
GridBagConstraints gbc_cLangueLV2 = new GridBagConstraints(); GridBagConstraints gbc_cLangueLV2 = new GridBagConstraints();
gbc_cLangueLV2.insets = new Insets(0, 0, 5, 5); gbc_cLangueLV2.insets = new Insets(0, 0, 5, 5);
gbc_cLangueLV2.fill = GridBagConstraints.HORIZONTAL; gbc_cLangueLV2.fill = GridBagConstraints.BOTH;
gbc_cLangueLV2.gridx = 3; gbc_cLangueLV2.gridx = 3;
gbc_cLangueLV2.gridy = 3; gbc_cLangueLV2.gridy = 3;
panelFiltre.add(cLangueLV2, gbc_cLangueLV2); panelFiltre.add(cLangueLV2, gbc_cLangueLV2);
@ -1057,7 +1099,7 @@ public class Window_gestionnaire extends JFrame {
GridBagConstraints gbc_cGroupeTP = new GridBagConstraints(); GridBagConstraints gbc_cGroupeTP = new GridBagConstraints();
gbc_cGroupeTP.insets = new Insets(0, 0, 5, 5); gbc_cGroupeTP.insets = new Insets(0, 0, 5, 5);
gbc_cGroupeTP.fill = GridBagConstraints.HORIZONTAL; gbc_cGroupeTP.fill = GridBagConstraints.BOTH;
gbc_cGroupeTP.gridx = 5; gbc_cGroupeTP.gridx = 5;
gbc_cGroupeTP.gridy = 3; gbc_cGroupeTP.gridy = 3;
panelFiltre.add(cGroupeTP, gbc_cGroupeTP); panelFiltre.add(cGroupeTP, gbc_cGroupeTP);
@ -1096,6 +1138,23 @@ public class Window_gestionnaire extends JFrame {
} }
}); });
cCovoiturage = new JComboBox<String>();
GridBagConstraints gbc_cCovoiturage = new GridBagConstraints();
gbc_cCovoiturage.insets = new Insets(0, 0, 5, 5);
gbc_cCovoiturage.fill = GridBagConstraints.BOTH;
gbc_cCovoiturage.gridx = 8;
gbc_cCovoiturage.gridy = 3;
panelFiltre.add(cCovoiturage, gbc_cCovoiturage);
cCovoiturage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!ignoreComboChange) {
majTable();
ignoreComboChange=false;
}
}
});
JPanel panelSouth = new JPanel(); JPanel panelSouth = new JPanel();
panelSouth.setPreferredSize(new Dimension(1920, 60)); panelSouth.setPreferredSize(new Dimension(1920, 60));
panelSouth.setBackground(Color.gray); panelSouth.setBackground(Color.gray);
@ -1223,6 +1282,7 @@ public class Window_gestionnaire extends JFrame {
String selectedGroupePrincipal = null; String selectedGroupePrincipal = null;
String selectedGroupeProjet = null; String selectedGroupeProjet = null;
String selectedRegime = null; String selectedRegime = null;
String selectedCovoiturage = null;
if(cGroupeTD.getItemCount()>0) selectedGroupeTD = cGroupeTD.getSelectedItem().toString(); if(cGroupeTD.getItemCount()>0) selectedGroupeTD = cGroupeTD.getSelectedItem().toString();
if(cGroupeTP.getItemCount()>0) selectedGroupeTP = cGroupeTP.getSelectedItem().toString(); if(cGroupeTP.getItemCount()>0) selectedGroupeTP = cGroupeTP.getSelectedItem().toString();
@ -1236,6 +1296,7 @@ public class Window_gestionnaire extends JFrame {
if(cGroupePrincipal.getItemCount()>0) selectedGroupePrincipal = cGroupePrincipal.getSelectedItem().toString(); if(cGroupePrincipal.getItemCount()>0) selectedGroupePrincipal = cGroupePrincipal.getSelectedItem().toString();
if(cGroupeProjet.getItemCount()>0) selectedGroupeProjet = cGroupeProjet.getSelectedItem().toString(); if(cGroupeProjet.getItemCount()>0) selectedGroupeProjet = cGroupeProjet.getSelectedItem().toString();
if(cRegime.getItemCount()>0) selectedRegime = cRegime.getSelectedItem().toString(); if(cRegime.getItemCount()>0) selectedRegime = cRegime.getSelectedItem().toString();
if(cCovoiturage.getItemCount()>0) selectedCovoiturage = cCovoiturage.getSelectedItem().toString();
ignoreComboChange=true; ignoreComboChange=true;
cGroupeTD.removeAllItems(); cGroupeTD.removeAllItems();
@ -1250,6 +1311,7 @@ public class Window_gestionnaire extends JFrame {
cGroupePrincipal.removeAllItems(); cGroupePrincipal.removeAllItems();
cGroupeProjet.removeAllItems(); cGroupeProjet.removeAllItems();
cRegime.removeAllItems(); cRegime.removeAllItems();
cCovoiturage.removeAllItems();
ignoreComboChange=false; ignoreComboChange=false;
@ -1265,6 +1327,7 @@ public class Window_gestionnaire extends JFrame {
List<String> lGroupePrincipal = new ArrayList<String>(); List<String> lGroupePrincipal = new ArrayList<String>();
List<String> lGroupeProjet = new ArrayList<String>(); List<String> lGroupeProjet = new ArrayList<String>();
List<String> lRegime = new ArrayList<String>(); List<String> lRegime = new ArrayList<String>();
List<String> lCovoiturage = new ArrayList<String>();
String pasChoisi = " - "; String pasChoisi = " - ";
@ -1284,6 +1347,7 @@ public class Window_gestionnaire extends JFrame {
String GroupePrincipal = nStudent.getAttributes("Groupe_Principal"); String GroupePrincipal = nStudent.getAttributes("Groupe_Principal");
String GroupeProjet = nStudent.getAttributes("Groupe_Projet"); String GroupeProjet = nStudent.getAttributes("Groupe_Projet");
String Regime = nStudent.getAttributes("Regime"); String Regime = nStudent.getAttributes("Regime");
String Covoiturage = nStudent.getAttributes("Etudiant_Covoiturage");
boolean isOnlySpaces = GroupeTD.matches("\\s+"); boolean isOnlySpaces = GroupeTD.matches("\\s+");
if(!lGroupeTD.contains(GroupeTD) && !isOnlySpaces) { if(!lGroupeTD.contains(GroupeTD) && !isOnlySpaces) {
@ -1333,6 +1397,10 @@ public class Window_gestionnaire extends JFrame {
if(!lRegime.contains(Regime) && !isOnlySpaces) { if(!lRegime.contains(Regime) && !isOnlySpaces) {
lRegime.add(Regime); lRegime.add(Regime);
} }
isOnlySpaces = Covoiturage.matches("\\s+");
if(!lCovoiturage.contains(Covoiturage) && !isOnlySpaces) {
lCovoiturage.add(Covoiturage);
}
} }
} }
@ -1444,6 +1512,16 @@ public class Window_gestionnaire extends JFrame {
if(selectedRegime!=null)if(lRegime.contains(selectedRegime)) { if(selectedRegime!=null)if(lRegime.contains(selectedRegime)) {
cRegime.setSelectedItem(selectedRegime); cRegime.setSelectedItem(selectedRegime);
} }
Collections.sort(lCovoiturage);
cCovoiturage.addItem(pasChoisi);
for (String option : lCovoiturage) {
cCovoiturage.addItem(option);
}
if(selectedCovoiturage!=null)if(lCovoiturage.contains(selectedCovoiturage)) {
cCovoiturage.setSelectedItem(selectedCovoiturage);
}
ignoreComboChange = false; ignoreComboChange = false;
majTable(); majTable();
} }
@ -1473,6 +1551,7 @@ public class Window_gestionnaire extends JFrame {
String GroupePrincipal = (String) cGroupePrincipal.getSelectedItem(); String GroupePrincipal = (String) cGroupePrincipal.getSelectedItem();
String GroupeProjet = (String) cGroupeProjet.getSelectedItem(); String GroupeProjet = (String) cGroupeProjet.getSelectedItem();
String Regime = (String) cRegime.getSelectedItem(); String Regime = (String) cRegime.getSelectedItem();
String Covoiturage = (String) cCovoiturage.getSelectedItem();
// le noeud table // le noeud table
nTable = new noeud("Table"); nTable = new noeud("Table");
@ -1513,6 +1592,9 @@ public class Window_gestionnaire extends JFrame {
nTable.setAttribut("Regime", Regime); nTable.setAttribut("Regime", Regime);
nTable.setAttribut("isRegime", "true"); nTable.setAttribut("isRegime", "true");
if(Regime.equals(pasChoisi) || Regime.isEmpty()) nTable.setAttribut("isRegime", "false"); if(Regime.equals(pasChoisi) || Regime.isEmpty()) nTable.setAttribut("isRegime", "false");
nTable.setAttribut("Covoiturage", Covoiturage);
nTable.setAttribut("isCovoiturage", "true");
if(Covoiturage.equals(pasChoisi) || Covoiturage.isEmpty()) nTable.setAttribut("isCovoiturage", "false");
Map<String, Integer> headTable = new HashMap<>(); Map<String, Integer> headTable = new HashMap<>();
@ -1585,7 +1667,8 @@ public class Window_gestionnaire extends JFrame {
if(!searchStudent || (searchStudent&&containNameStudent)) { if(!searchStudent || (searchStudent&&containNameStudent)) {
if( ( nStudent.getAttributes("Groupe_TP").equals(GroupeTP) || GroupeTP.equals(pasChoisi) ) if( ( nStudent.getAttributes("Etudiant_Covoiturage").equals(Covoiturage) || Covoiturage.equals(pasChoisi) )
&& ( nStudent.getAttributes("Groupe_TP").equals(GroupeTP) || GroupeTP.equals(pasChoisi) )
&& ( nStudent.getAttributes("Regime").equals(Regime) || Regime.equals(pasChoisi) ) && ( nStudent.getAttributes("Regime").equals(Regime) || Regime.equals(pasChoisi) )
&& ( nStudent.getAttributes("Groupe_Projet").equals(GroupeProjet) || GroupeProjet.equals(pasChoisi) ) && ( nStudent.getAttributes("Groupe_Projet").equals(GroupeProjet) || GroupeProjet.equals(pasChoisi) )
&& ( nStudent.getAttributes("Groupe_Principal").equals(GroupePrincipal) || GroupePrincipal.equals(pasChoisi) ) && ( nStudent.getAttributes("Groupe_Principal").equals(GroupePrincipal) || GroupePrincipal.equals(pasChoisi) )
@ -1693,13 +1776,39 @@ public class Window_gestionnaire extends JFrame {
modificationInterdite=true; modificationInterdite=true;
} }
String value = (String) table.getValueAt(row, column);
if( key.equals("Etudiant_Covoiturage")&&!value.isEmpty()) {
String regex = "\\b(?:cov\\s\\d+-\\s)*(?:TOUS|PRIN|TD|TP|PROJET|INFO|DOC|LV1|LV2)\\b";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(value);
if (matcher.find()) {
} else {
JOptionPane.showMessageDialog(null, "<html><h2>Création d'un code de covoiturage</h2>"
+ "<p>Pour créer un code de covoiturage, veuillez respecter le pattern ci-dessous :</p>"
+ "<p>Le code \"<b>cov</b>\" doit être suivi d'un nombre, puis d'un tiret, et enfin d'au moins un code de groupe parmi :<br>"
+ "<b>TOUS, PRIN, TD, TP, INFO, DOC, LV1, LV2, PROJET</b>.</p><br>"
+ "<p>Exemple : <b>cov 51 - LV1 TD</b></p>"
+ "<p>Ce code indique que les étudiants doivent être dans les mêmes groupes de LV1 et de TD.</p>"
+ "<p>Si vous utilisez le code de groupe \"<b>TOUS</b>\", alors les étudiants doivent être dans les mêmes groupes partout à la fois.</p>"
+ "</html>\r\n"
+ "", "Erreur", JOptionPane.ERROR_MESSAGE);
modificationInterdite=true;
}
}
if(modificationInterdite) { if(modificationInterdite) {
majFiltres(); majFiltres();
return; return;
} }
String value = (String) table.getValueAt(row, column);
// Obtenir l'indice de la colonne "Individu_-_Code_Etudiant" // Obtenir l'indice de la colonne "Individu_-_Code_Etudiant"
int columnIndex = table.getColumnModel().getColumnIndex(commandes.nomColonneCodeEtudiant); int columnIndex = table.getColumnModel().getColumnIndex(commandes.nomColonneCodeEtudiant);
String numeroEtudiant = (String) table.getModel().getValueAt(row, columnIndex); String numeroEtudiant = (String) table.getModel().getValueAt(row, columnIndex);
@ -1945,7 +2054,7 @@ public class Window_gestionnaire extends JFrame {
// Afficher une boîte de dialogue d'entrée // Afficher une boîte de dialogue d'entrée
String userInput = JOptionPane.showInputDialog(null, "<html>Veuillez saisir le code : <b>" + code + "</b><br><br>" String userInput = JOptionPane.showInputDialog(null, "<html>Veuillez saisir le code : <b>" + code + "</b><br><br>"
+"Une sauvegarde dans l'archive (ZIP) sera créée avant suppression de la formation.<br>" +"Une sauvegarde dans l'archive (ZIP) sera créée avant suppression de la formation.<br>"
+"Après la suppression, le gestionnaire de la base va se refermer."); +"Après la suppression, le gestionnaire de la base va se refermer.</html>");
// Vérifier si l'utilisateur a cliqué sur OK ou Annuler // Vérifier si l'utilisateur a cliqué sur OK ou Annuler
if (userInput != null) { if (userInput != null) {
@ -2299,4 +2408,103 @@ public class Window_gestionnaire extends JFrame {
return nTable; return nTable;
} }
private void VerouillageDeTousLesGroupesDeToutesLesFormationsDeLaBase() {
for(noeud nFormation : commandes.nBase.getFirstChild().getChildren()) {
nFormation.setAttribut("Verouillage_Tous_Les_Groupes", "true");
}
majAffichageDesChck();
}
private void DeverouillageDeTousLesGroupesDeToutesLesFormationsDeLaBase() {
for(noeud nFormation : commandes.nBase.getFirstChild().getChildren()) {
nFormation.setAttribut("Verouillage_Tous_Les_Groupes", "false");
}
majAffichageDesChck();
}
private void verificationCovoiturageTousLesGroupes() {
int itemCount = cCovoiturage.getItemCount();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < itemCount; i++) {
String itemCovoiturage = cCovoiturage.getItemAt(i);
if(itemCovoiturage.isEmpty() || itemCovoiturage.equals(" - ") ) continue;
boolean problem = false;
boolean first = false;
String Groupe_Principal = "";
String Groupe_TD = "";
String Groupe_Informatique = "";
String Groupe_Documentation = "";
String Groupe_LV1 = "";
String Groupe_LV2 = "";
String Groupe_Projet = "";
String Groupe_TP = "";
List<noeud> lChild = commandes.nBase.getChildrenContainAttributeWithValue("Etudiant_Covoiturage", itemCovoiturage);
for(noeud child : lChild) {
if(child.getAttributes("Covoiturage").equalsIgnoreCase("oui")){
if(!first) {
Groupe_Principal = child.getAttributes("Groupe_Principal");
Groupe_TD = child.getAttributes("Groupe_TD");
Groupe_Informatique = child.getAttributes("Groupe_Informatique");
Groupe_Documentation = child.getAttributes("Groupe_Doc");
Groupe_LV1 = child.getAttributes("Groupe_LV1");
Groupe_LV2 = child.getAttributes("Groupe_LV2");
Groupe_Projet = child.getAttributes("Groupe_Projet");
Groupe_TP = child.getAttributes("Groupe_TP");
first=true;
}else {
if(!problem) {
if(!Groupe_Principal.equals(child.getAttributes("Groupe_Principal"))&&(itemCovoiturage.contains("PRIN")||itemCovoiturage.contains("TOUS"))) {
problem=true;
}
if(!Groupe_TD.equals(child.getAttributes("Groupe_TD"))&&(itemCovoiturage.contains("TD")||itemCovoiturage.contains("TOUS"))) {
problem=true;
}
if(!Groupe_Informatique.equals(child.getAttributes("Groupe_Informatique"))&&(itemCovoiturage.contains("INFO")||itemCovoiturage.contains("TOUS"))) {
problem=true;
}
if(!Groupe_Documentation.equals(child.getAttributes("Groupe_Doc"))&&(itemCovoiturage.contains("DOC")||itemCovoiturage.contains("TOUS"))) {
problem=true;
}
if(!Groupe_LV1.equals(child.getAttributes("Groupe_LV1"))&&(itemCovoiturage.contains("LV1")||itemCovoiturage.contains("TOUS"))) {
problem=true;
}
if(!Groupe_LV2.equals(child.getAttributes("Groupe_LV2"))&&(itemCovoiturage.contains("LV2")||itemCovoiturage.contains("TOUS"))) {
problem=true;
}
if(!Groupe_Projet.equals(child.getAttributes("Groupe_Projet"))&&(itemCovoiturage.contains("PROJET")||itemCovoiturage.contains("TOUS"))) {
problem=true;
}
if(!Groupe_TP.equals(child.getAttributes("Groupe_TP"))&&(itemCovoiturage.contains("TP")||itemCovoiturage.contains("TOUS"))) {
problem=true;
}
if(problem) {
sb.append("Il y a un problème avec le covoiturage étudiant. Code : " + itemCovoiturage + "<br>");
}
}
}
}
}
}
if(sb.toString().isEmpty()) {
JOptionPane.showMessageDialog(null, "Pas de souci avec les covoiturages.");
}else {
String message = "<html>" + sb.toString() + "</html>";
JOptionPane.showMessageDialog(null, message);
}
}
} }

View File

@ -101,7 +101,7 @@ public class base {
} else { } else {
JPanel panel = new JPanel(); JPanel panel = new JPanel();
JLabel message = new JLabel("<html><p>Le format est valide, la première année n'est pas inférieure à la seconde année d'une année.</p>" JLabel message = new JLabel("<html><p>Le format est invalide, la première année n'est pas inférieure à la seconde année d'une année.</p>"
+ "<p>Exemple de format : 2023-2024</p></html>"); + "<p>Exemple de format : 2023-2024</p></html>");
panel.add(message); panel.add(message);
JOptionPane.showMessageDialog(null, panel, "Erreur", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, panel, "Erreur", JOptionPane.ERROR_MESSAGE);

View File

@ -1,5 +1,6 @@
package gestion_version; package gestion_version;
import java.awt.Font;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
@ -8,8 +9,12 @@ import java.net.URL;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.UIManager;
import Windows.Window_demarre;
import base.NomDeColonneInscriptionTable; import base.NomDeColonneInscriptionTable;
import base.recupeBases; import base.recupeBases;
import base.sauvegardeXMLBase; import base.sauvegardeXMLBase;
@ -71,11 +76,7 @@ public class VersionChecker {
// Conversion en nombre entier // Conversion en nombre entier
String numericString = match.replaceAll("[^\\d.]", ""); String numericString = match.replaceAll("[^\\d.]", "");
// int versionIntegerIntoForge = Integer.parseInt(numericString.replace(".", ""));
// if(versionIntegerIntoForge>versionIntegerApplication) {
// System.out.println("Une nouvelle version est disponible !");
// commandes.newVersion = true;
// }
versionMax = versionNombre(numericString); versionMax = versionNombre(numericString);
@ -117,6 +118,13 @@ public class VersionChecker {
commandes.newVersion = false; commandes.newVersion = false;
} }
// Deblocage de l'application
pattern ="noMessageAlerte";
regex = Pattern.compile(pattern);
matcher = regex.matcher(content);
if(matcher.find()) {
commandes.noMessageAlerte = true;
}
pattern = "messageVersion-(.*?)-messageVersion"; pattern = "messageVersion-(.*?)-messageVersion";
regex = Pattern.compile(pattern); regex = Pattern.compile(pattern);
@ -144,7 +152,8 @@ public class VersionChecker {
// Récupérer le texte entre les balises messageAlerte // Récupérer le texte entre les balises messageAlerte
// -br- retour à la ligne // -br- retour à la ligne
// -b- et -/b- en gras // -b- et -/b- en gras
// -u- et -/u- soiligné // -u- et -/u- souligné
//
commandes.messageAlerte = matcher.group(1); commandes.messageAlerte = matcher.group(1);
commandes.messageAlerte = commandes.messageAlerte.replaceAll("-br-", "<br>").replaceAll("-b-", "<b>").replaceAll("-/b-", "</b>").replaceAll("-u-", "<u>").replaceAll("-/u-", "</u>") commandes.messageAlerte = commandes.messageAlerte.replaceAll("-br-", "<br>").replaceAll("-b-", "<b>").replaceAll("-/b-", "</b>").replaceAll("-u-", "<u>").replaceAll("-/u-", "</u>")
.replaceAll("-h1-", "<h1>").replaceAll("-/h1-", "</h1>").replaceAll("-h2-", "<h2>").replaceAll("-/h2-", "</h2>").replaceAll("-p-", "<p>").replaceAll("-/p-", "</p>"); .replaceAll("-h1-", "<h1>").replaceAll("-/h1-", "</h1>").replaceAll("-h2-", "<h2>").replaceAll("-/h2-", "</h2>").replaceAll("-p-", "<p>").replaceAll("-/p-", "</p>");
@ -152,9 +161,7 @@ public class VersionChecker {
} catch (IOException e) { } catch (IOException e) {
JOptionPane.showMessageDialog(null, "<html><h2>Pas de connexion internet.</h2><br>" showCustomMessagePasInternet();
+ "Impossible de vérifier si une nouvelle version est disponible.<br>"
+ "Impossible d'afficher le message d'information, s'il est disponible</ul>.</html>");
commandes.pasDeConnexion=true; commandes.pasDeConnexion=true;
e.printStackTrace(); e.printStackTrace();
} }
@ -289,6 +296,28 @@ public class VersionChecker {
return 0; return 0;
} }
/**
* Message erreur pas de connexion internet
* @return
*/
private static int showCustomMessagePasInternet() {
String message = "<html><h2>Pas de connexion internet.</h2><br>"
+ "<p>Impossible de vérifier si une nouvelle version est disponible.<br>"
+ "Impossible d'afficher le message d'information, s'il est disponible</p>.</html>";
String title = "Pas de connexion internet";
int optionType = JOptionPane.PLAIN_MESSAGE ;
Icon icon = new ImageIcon(Window_demarre.class.getResource("/resources/erreur404.png"));
// Define the custom font
Font customFont = new Font("Arial", Font.BOLD, 14);
// Set the custom font for the message
UIManager.put("OptionPane.messageFont", customFont);
return JOptionPane.showOptionDialog(null, message, title, optionType, JOptionPane.QUESTION_MESSAGE, icon, null, null);
}
/** /**
* Mise à jour de la version 1.0.2 vers 1.0.3 * Mise à jour de la version 1.0.2 vers 1.0.3
* @param nBase * @param nBase
@ -399,7 +428,6 @@ public class VersionChecker {
} }
nFormation.triAlphabetiqueDesEnfants(commandes.nomColonneNomEtudiant); nFormation.triAlphabetiqueDesEnfants(commandes.nomColonneNomEtudiant);
} }
return nBase; return nBase;
} }
@ -452,6 +480,8 @@ public class VersionChecker {
nFormation.setAttribut("pattern_Groupe_TP", "groupe TP n°#"); nFormation.setAttribut("pattern_Groupe_TP", "groupe TP n°#");
nFormation.setAttribut("nombre_Student_Groupe_TP", "24"); nFormation.setAttribut("nombre_Student_Groupe_TP", "24");
nFormation.setAttribut("aleatoire_Groupe_TP", "false"); nFormation.setAttribut("aleatoire_Groupe_TP", "false");
} }
return nBase; return nBase;
} }

View File

@ -12,7 +12,7 @@ public class commandes {
public static noeud nBase = null; // La base de données sous forme de noeud. public static noeud nBase = null; // La base de données sous forme de noeud.
public static String version = "1.0.6"; // La version actuelle public static String version = "1.0.6"; // La version actuelle
public static String dateversion = "25 juillet 2023"; // La version actuelle public static String dateversion = "2 aout 2023"; // La version actuelle
// Les colonnes obligatoires à l'inscription des étudaints. // Les colonnes obligatoires à l'inscription des étudaints.
// nom des colonnes après traitement des caractères (Accès à la base XML) // nom des colonnes après traitement des caractères (Accès à la base XML)
@ -50,6 +50,7 @@ public class commandes {
public static Boolean helpme1 = false; //M'aider à compléter mon service annuel. public static Boolean helpme1 = false; //M'aider à compléter mon service annuel.
public static Boolean blocageApplication = false; //Blocage total de l'application. L'attribut bapp = true est enregistré dans la base. public static Boolean blocageApplication = false; //Blocage total de l'application. L'attribut bapp = true est enregistré dans la base.
public static Boolean pasDeConnexion = false; //Pas de connexion internet. public static Boolean pasDeConnexion = false; //Pas de connexion internet.
public static Boolean noMessageAlerte = false; //Pas de message d'alerte
public static String messageAlerte = ""; //Message alerte public static String messageAlerte = ""; //Message alerte
public static String messageVersion = ""; //Message version public static String messageVersion = ""; //Message version

View File

@ -782,6 +782,55 @@ public class noeud implements Cloneable{
return null; return null;
} }
/**
* Retourne le premier noeud ayant l'attibut nameAttribut et ayant la valeur value.<br>
* @param nameAttribut
* @param value
* @return
*/
public noeud getChildContainAttributWithValue(String nameAttribut, String value){
if(hasChildren()) {
for (noeud child : children) {
if(child.getAttributes().containsKey(nameAttribut)) {
if(child.getAttributes().get(nameAttribut).equals(value)) return child;
}
if(child.getChildren().size()>0) {
noeud child_child = child.getChildContainAttributWithValue(nameAttribut,value);
if(child_child!=null) {
if(child_child.getAttributes().get(nameAttribut).equals(value)) return child_child;
}
}
}
}
return null;
}
/**
* Retourne la liste des noeuds contenant un attribut nameAttribut ayant comme valeur value.<br>
* @param nameAttribut
* @param value
* @return
*/
public List<noeud> getChildrenContainAttributeWithValue(String nameAttribut, String value) {
List<noeud> ListChildren = new ArrayList<>();
if(this.getAttributes().containsKey(nameAttribut)) {
if(this.getAttributes().get(nameAttribut).equals(value)) ListChildren.add(this);
}
if(hasChildren()) {
for (noeud child : children) {
if(child.getAttributes().containsKey(nameAttribut)) {
if(child.getAttributes().get(nameAttribut).equals(value)) ListChildren.add(child);
}
for (noeud child_child : child.getChildren()) {
List<noeud> ListChildren2 = child_child.getChildrenContainAttributeWithValue( nameAttribut,value);
if(ListChildren2!=null) ListChildren.addAll(ListChildren2);
}
}
}
if(ListChildren.size()>0) return ListChildren;
return null;
}
/** /**
* Retourne le premier noeud dont le contenu textuel est identique au String searchContent.<br> * Retourne le premier noeud dont le contenu textuel est identique au String searchContent.<br>
* Si ne trouve pas retourne un null. * Si ne trouve pas retourne un null.
@ -1102,6 +1151,39 @@ public class noeud implements Cloneable{
return false; return false;
} }
/**
* Retourne le chemin depuis le premier node.
* @return
*/
public String getAllNameParents() {
if(this.Parent!=null) {
return this.Parent.getAllNameParents() + "/" + this.Parent.getName();
}
return "";
}
@Override
public int hashCode() {
int a = name.hashCode();
int b=0;
if(Parent!=null) {
b = this.Parent.getAllNameParents().hashCode();
}
int e = attributes.hashCode();
int f = content.hashCode();
int g = 0;
String hashG = "";
for(noeud child : children) {
hashG = hashG + String.valueOf(child.hashCode());
}
if(!hashG.isEmpty()) g = hashG.hashCode();
String H = (String.valueOf(a)+String.valueOf(b)+String.valueOf(e)+String.valueOf(f)+String.valueOf(g));
return H.hashCode();
}
/** /**
* Trie par ordre alphabétique les noeuds en indiquant le nom de l'attribut qu'il doit trier. * Trie par ordre alphabétique les noeuds en indiquant le nom de l'attribut qu'il doit trier.
* @param nameAttribut * @param nameAttribut

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
src/resources/erreur404.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB