Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
dedda3faf0 | ||
|
00f08babd0 | ||
|
e162eae002 | ||
|
37da4aacce | ||
|
a62bcc40c6 | ||
|
d93bdad582 |
1
.gitignore
vendored
@ -1 +1,2 @@
|
||||
/bin/
|
||||
/base/
|
||||
|
@ -162,7 +162,7 @@ public class importInscriptionXLS {
|
||||
nFormation.setAttribut("Verouillage_Groupe_Informatique", "false");
|
||||
nFormation.setAttribut("Verouillage_Groupe_Documentation", "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("nombre_Student_Groupe_Principal", "30");
|
||||
|
@ -4,6 +4,7 @@ import java.awt.Color;
|
||||
import java.awt.Desktop;
|
||||
import java.awt.Font;
|
||||
import java.awt.Image;
|
||||
import java.awt.SystemColor;
|
||||
import java.awt.Window;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
@ -39,7 +40,6 @@ import gestion_version.VersionChecker;
|
||||
import importations.importAllBaseToExcel;
|
||||
import outils.FileChooserXLSX;
|
||||
import outils.commandes;
|
||||
import java.awt.SystemColor;
|
||||
|
||||
public class Window_demarre extends JFrame {
|
||||
|
||||
@ -50,13 +50,10 @@ public class Window_demarre extends JFrame {
|
||||
private static JFrame frmEvalwriter;
|
||||
JButton btnExporterTouteLaBase;
|
||||
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 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 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>");
|
||||
static JLabel lblAuteurVersion = new JLabel("<html>Pablo Rodriguez - 2023<br>Version "+ commandes.version+"</html>");
|
||||
static JLabel lblFondImage = new JLabel();
|
||||
@ -73,11 +70,9 @@ public class Window_demarre extends JFrame {
|
||||
Font police = new Font("Arial", Font.PLAIN, 14);
|
||||
UIManager.put("OptionPane.messageFont", police);
|
||||
|
||||
|
||||
// Vérification d'une nouvelle version dans la forge de Chapril
|
||||
VersionChecker.verificationNewVersion();
|
||||
|
||||
|
||||
// mise à jour de la base de données si nouvelle version de l'application utilisé.
|
||||
commandes.nBase=recupeBases.recupeLaBase();
|
||||
|
||||
@ -90,7 +85,7 @@ public class Window_demarre extends JFrame {
|
||||
// Vérification du blocage de l'application
|
||||
if(VerificationBlocageApplication()) {
|
||||
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;
|
||||
}
|
||||
|
||||
@ -125,12 +120,12 @@ public class Window_demarre extends JFrame {
|
||||
boolean affichagePremierInformation = false;
|
||||
if(commandes.newVersion && (!commandes.messageVersion.isEmpty() || !commandes.messageAlerte.isEmpty()) ) {
|
||||
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);
|
||||
affichagePremierInformation = true;
|
||||
}
|
||||
|
||||
|
||||
if(!commandes.messageAlerte.isEmpty() && !affichagePremierInformation) {
|
||||
if(!commandes.messageAlerte.isEmpty() && !affichagePremierInformation && !commandes.noMessageAlerte) {
|
||||
String message = "<html>" + commandes.messageAlerte + "</html>";
|
||||
JOptionPane.showMessageDialog(null, message,"Information",JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
@ -211,22 +206,14 @@ public class Window_demarre extends JFrame {
|
||||
tabExporteImporte.setLayout(null);
|
||||
|
||||
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();
|
||||
tabbedPane.addTab("<html>Crédits<br>Licences</html>", tabLicence);
|
||||
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>");
|
||||
lblCredits.setHorizontalAlignment(SwingConstants.LEFT);
|
||||
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() {
|
||||
btnLicence.setBounds(390, 173, 324, 50);
|
||||
btnLicence.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
String url = "https://www.gnu.org/licenses/gpl-3.0.html#license-text";
|
||||
try {
|
||||
@ -237,23 +224,30 @@ public class Window_demarre extends JFrame {
|
||||
}
|
||||
}
|
||||
});
|
||||
btnNewButton_1.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/gplv3-127x51.png")));
|
||||
btnNewButton_1.setFont(new Font("Arial", Font.BOLD, 14));
|
||||
btnNewButton_1.setBounds(10, 150, 326, 64);
|
||||
tabLicence.add(btnNewButton_1);
|
||||
btnLicence.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/gplv3-127x51.png")));
|
||||
btnLicence.setFont(new Font("Arial", Font.BOLD, 14));
|
||||
|
||||
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.setVerticalAlignment(SwingConstants.TOP);
|
||||
lblVersion.setHorizontalAlignment(SwingConstants.RIGHT);
|
||||
lblVersion.setBounds(563, 150, 151, 64);
|
||||
lblVersion.setBounds(278, 6, 436, 33);
|
||||
tabLicence.add(lblVersion);
|
||||
|
||||
|
||||
frmEvalwriter.getContentPane().add(tabbedPane);
|
||||
|
||||
|
||||
|
||||
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.setFont(new Font("Arial", Font.BOLD, 16));
|
||||
@ -289,13 +283,6 @@ public class Window_demarre extends JFrame {
|
||||
|
||||
tabInscriptions.add(btnimporterDesInscriptionsdepuisClasseur);
|
||||
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) {
|
||||
btnNewVersion = new JButton("<html>Nouvelle version disponible : "+ commandes.nameNewVersion + "</html>");
|
||||
@ -305,17 +292,6 @@ public class Window_demarre extends JFrame {
|
||||
btnNewVersion.setBounds(20, 602, 705, 63);
|
||||
btnNewVersion.setVisible(commandes.newVersion);
|
||||
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("");
|
||||
btnNewButton.setIcon(new ImageIcon(Window_demarre.class.getResource("/resources/tickets_bouton.png")));
|
||||
@ -365,6 +341,22 @@ public class Window_demarre extends JFrame {
|
||||
btnVersions.setBounds(370, 116, 340, 95);
|
||||
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>");
|
||||
btnParametresClasseurInscription.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
@ -394,12 +386,16 @@ public class Window_demarre extends JFrame {
|
||||
});
|
||||
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.setFont(new Font("Arial", Font.PLAIN, 12));
|
||||
lblNewLabel.setBounds(370, 101, 340, 109);
|
||||
tabGestionnaire.add(lblNewLabel);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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.
|
||||
btnNewVersion.addActionListener(new ActionListener() {
|
||||
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));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -10,6 +10,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Random;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.ImageIcon;
|
||||
@ -42,6 +44,7 @@ public class Window_genere_groupe extends JFrame {
|
||||
private JTextField textNombre_Etudiant_Groupe;
|
||||
private int nombreEtudiantDansGroupe = 30;
|
||||
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) {
|
||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
setBounds(0, 0, 863, 534);
|
||||
setBounds(0, 0, 863, 500);
|
||||
setTitle("Générer des groupes");
|
||||
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");
|
||||
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);
|
||||
|
||||
textPattern_Groupe = new JTextField();
|
||||
@ -144,11 +147,11 @@ public class Window_genere_groupe extends JFrame {
|
||||
lblNombre_Etudiant_Groupe.setBounds(382, 318, 332, 36);
|
||||
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.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 14));
|
||||
lblNewLabel_1.setVerticalAlignment(SwingConstants.TOP);
|
||||
lblNewLabel_1.setBounds(10, 376, 441, 100);
|
||||
lblNewLabel_1.setBounds(10, 396, 441, 58);
|
||||
getContentPane().add(lblNewLabel_1);
|
||||
|
||||
|
||||
@ -203,9 +206,15 @@ public class Window_genere_groupe extends JFrame {
|
||||
rdbtnAlphabetique.setBounds(670, 366, 167, 23);
|
||||
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() {
|
||||
@Override
|
||||
@ -253,27 +262,39 @@ public class Window_genere_groupe extends JFrame {
|
||||
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) {
|
||||
int choice = showCustomDialog();
|
||||
if (choice == JOptionPane.YES_OPTION) {
|
||||
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();
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
}else {
|
||||
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()) {
|
||||
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();
|
||||
}
|
||||
@ -293,7 +314,7 @@ public class Window_genere_groupe extends JFrame {
|
||||
* @param patternGroupe
|
||||
* @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"));
|
||||
int compteurEtudiantInsereDansGroupe=0;
|
||||
List<noeud> tableChild = instance.getTable().getChildren();
|
||||
@ -308,14 +329,18 @@ public class Window_genere_groupe extends JFrame {
|
||||
if(patternGroupe.contains("@")) {
|
||||
String patternCopy = new String(patternGroupe);
|
||||
Random random = new Random();
|
||||
String caractere = "A";
|
||||
String str = patternCopy.replaceAll("@", caractere);
|
||||
String caractereDebut = "A";
|
||||
if(!firstLettreChiffre.isEmpty()) {
|
||||
if(verifieLettre(firstLettreChiffre)) caractereDebut = firstLettreChiffre;
|
||||
}
|
||||
|
||||
String str = patternCopy.replaceAll("@", caractereDebut);
|
||||
|
||||
for (noeud child : tableChild) {
|
||||
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
|
||||
do {
|
||||
char randomChar = (char) ('A' + random.nextInt(nombreDeGroupes));
|
||||
caractere = String.valueOf(randomChar);
|
||||
char randomChar = (char) ( caractereDebut.toCharArray()[0] + random.nextInt(nombreDeGroupes));
|
||||
String caractere = String.valueOf(randomChar);
|
||||
patternCopy = new String(patternGroupe);
|
||||
str = patternCopy.replaceAll("@", caractere);
|
||||
}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);
|
||||
instance.majFiltres();
|
||||
}else if (patternGroupe.contains("#")) {
|
||||
patternGroupe = patternGroupe.replaceAll("#", "");
|
||||
String patternCopy = new String(patternGroupe);
|
||||
int debut = 1;
|
||||
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) {
|
||||
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
|
||||
do {
|
||||
int randomInteger = (1 + random.nextInt(nombreDeGroupes));
|
||||
str = patternGroupe + String.valueOf(randomInteger);
|
||||
int randomInteger = (debut + random.nextInt(nombreDeGroupes));
|
||||
patternCopy = new String(patternGroupe);
|
||||
str = patternCopy.replaceAll("#",String.valueOf(randomInteger));
|
||||
}while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes);
|
||||
compteurEtudiantInsereDansGroupe++;
|
||||
nFormation.getChild(child.getName()).setAttribut(nameGroupe, str);
|
||||
@ -370,7 +407,7 @@ public class Window_genere_groupe extends JFrame {
|
||||
* @param tailleDesGroupes
|
||||
* @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"));
|
||||
int compteurEtudiantInsereDansGroupe =0;
|
||||
List<noeud> tableChild = instance.getTable().getChildren();
|
||||
@ -384,8 +421,12 @@ public class Window_genere_groupe extends JFrame {
|
||||
if(patternGroupe.contains("@")) {
|
||||
String patternCopy = new String(patternGroupe);
|
||||
int nombreDeGroupes=0;
|
||||
String caractere = "A";
|
||||
String str = patternCopy.replaceAll("@", caractere);
|
||||
String caractereDebut = "A";
|
||||
if(!firstLettreChiffre.isEmpty()) {
|
||||
if(verifieLettre(firstLettreChiffre)) caractereDebut = firstLettreChiffre;
|
||||
}
|
||||
|
||||
String str = patternCopy.replaceAll("@", caractereDebut);
|
||||
int compteur = 0;
|
||||
for (noeud child : tableChild) {
|
||||
//Groupes non verrouillés
|
||||
@ -393,7 +434,7 @@ public class Window_genere_groupe extends JFrame {
|
||||
if(compteur==tailleDesGroupes) {
|
||||
compteur = 0;
|
||||
nombreDeGroupes++;
|
||||
caractere = String.valueOf( (char) ('A' + nombreDeGroupes));
|
||||
String caractere = String.valueOf( (char) (caractereDebut.toCharArray()[0] + nombreDeGroupes));
|
||||
patternCopy = new String(patternGroupe);
|
||||
str = patternCopy.replaceAll("@", caractere);
|
||||
}
|
||||
@ -406,7 +447,7 @@ public class Window_genere_groupe extends JFrame {
|
||||
if(nombreGroupeDejaPresent>=tailleDesGroupes) {
|
||||
do {
|
||||
nombreDeGroupes++;
|
||||
caractere = String.valueOf((char) ('A' + nombreDeGroupes));
|
||||
String caractere = String.valueOf((char) (caractereDebut.toCharArray()[0] + nombreDeGroupes));
|
||||
patternCopy = new String(patternGroupe);
|
||||
str = patternCopy.replaceAll("@", caractere);
|
||||
}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);
|
||||
instance.majFiltres();
|
||||
}else if (patternGroupe.contains("#")) {
|
||||
patternGroupe = patternGroupe.replaceAll("#", "");
|
||||
String patternCopy = new String(patternGroupe);
|
||||
|
||||
int nombreDeGroupes = 1;
|
||||
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) {
|
||||
if(verrouillageGroupe) {
|
||||
if(!verrouillageGroupe) {
|
||||
if(compteur==tailleDesGroupes) {
|
||||
compteur = 0;
|
||||
nombreDeGroupes++;
|
||||
str = patternGroupe + nombreDeGroupes;
|
||||
patternCopy = new String(patternGroupe);
|
||||
str = patternCopy.replaceAll("#", String.valueOf(nombreDeGroupes));
|
||||
}
|
||||
compteur++;
|
||||
compteurEtudiantInsereDansGroupe++;
|
||||
@ -438,7 +493,8 @@ public class Window_genere_groupe extends JFrame {
|
||||
if(nombreGroupeDejaPresent>=tailleDesGroupes) {
|
||||
do {
|
||||
nombreDeGroupes++;
|
||||
str = patternGroupe + nombreDeGroupes;
|
||||
patternCopy = new String(patternGroupe);
|
||||
str = patternCopy.replaceAll("#", String.valueOf(nombreDeGroupes));
|
||||
}while(nFormation.getNumberAttribut(nameGroupe, str)>=tailleDesGroupes);
|
||||
}
|
||||
compteurEtudiantInsereDansGroupe++;
|
||||
@ -521,6 +577,17 @@ public class Window_genere_groupe extends JFrame {
|
||||
int optionType = JOptionPane.YES_NO_OPTION;
|
||||
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);
|
||||
}
|
||||
|
||||
@ -544,4 +611,30 @@ public class Window_genere_groupe extends JFrame {
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.ImageIcon;
|
||||
@ -92,6 +94,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
private JComboBox<String> cGroupePrincipal;
|
||||
private JComboBox<String> cGroupeProjet;
|
||||
private JComboBox<String> cRegime;
|
||||
private JComboBox<String> cCovoiturage;
|
||||
|
||||
private JCheckBoxMenuItem chckToutesLesColonnes = new JCheckBoxMenuItem("Affiche toutes les colonnes");
|
||||
private JCheckBoxMenuItem chckGroupeTD = new JCheckBoxMenuItem("Groupe TD");
|
||||
@ -201,14 +204,14 @@ public class Window_gestionnaire extends JFrame {
|
||||
scrollPaneTable.setColumnHeaderView(chckbxmntmNewCheckItem);
|
||||
|
||||
JPanel panelFiltre = new JPanel();
|
||||
panelFiltre.setPreferredSize(new Dimension(1900, 128));
|
||||
panelFiltre.setPreferredSize(new Dimension(1900, 120));
|
||||
panelFiltre.setBackground(Color.gray);
|
||||
|
||||
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.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.rowWeights = new double[]{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, 1.0, 0.0, 1.0};
|
||||
panelFiltre.setLayout(gbl_panelFiltre);
|
||||
|
||||
JLabel lblYears = new JLabel("Année");
|
||||
@ -316,6 +319,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
cLangueLV1.setSelectedIndex(0);
|
||||
cLangueLV2.setSelectedIndex(0);
|
||||
cRegime.setSelectedIndex(0);
|
||||
cCovoiturage.setSelectedIndex(0);
|
||||
nStudent = null;
|
||||
majTable();
|
||||
}
|
||||
@ -547,6 +551,17 @@ public class Window_gestionnaire extends JFrame {
|
||||
gbc_lblRegime.gridx = 7;
|
||||
gbc_lblRegime.gridy = 2;
|
||||
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();
|
||||
gbc_cFormations.gridwidth = 2;
|
||||
@ -558,7 +573,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
|
||||
JPanel panelNorth = new JPanel();
|
||||
contentPane.add(panelNorth, BorderLayout.NORTH);
|
||||
panelNorth.setLayout(new BorderLayout(0, 0));
|
||||
panelNorth.setLayout(new BorderLayout(0, 2));
|
||||
|
||||
JMenuBar menuBar = new JMenuBar();
|
||||
|
||||
@ -742,7 +757,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
mnNewMenu.setFont(new Font("Arial", Font.BOLD, 16));
|
||||
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.setFont(new Font("Arial", Font.BOLD, 14));
|
||||
mnNewMenu.add(menueSauvegardeBase);
|
||||
@ -758,7 +773,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
|
||||
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.setFont(new Font("Arial", Font.BOLD, 14));
|
||||
mnNewMenu.add(menuSupprimeEtudiantDeLaBase);
|
||||
@ -770,7 +785,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
|
||||
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.setFont(new Font("Arial", Font.BOLD, 14));
|
||||
mnNewMenu.add(menuSupprimeFormation);
|
||||
@ -782,13 +797,26 @@ public class Window_gestionnaire extends JFrame {
|
||||
|
||||
mnNewMenu.addSeparator();
|
||||
|
||||
JMenuItem menuSelectYearDefautl = new JMenuItem("Sélectionner une année universitaire par défaut");
|
||||
menuSelectYearDefautl.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 14));
|
||||
mnNewMenu.add(menuSelectYearDefautl);
|
||||
JMenuItem menuVerrouilleTousLesGroupesDeLaBase = new JMenuItem("<html>Verouille tous les groupes<br>de toutes les formations de la base</html>");
|
||||
menuVerrouilleTousLesGroupesDeLaBase.setIcon(new ImageIcon(Window_gestionnaire.class.getResource("/resources/verrouiller.png")));
|
||||
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");
|
||||
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);
|
||||
@ -1011,7 +1053,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
cLangueLV2 = new JComboBox<String>();
|
||||
GridBagConstraints gbc_cLangueLV2 = new GridBagConstraints();
|
||||
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.gridy = 3;
|
||||
panelFiltre.add(cLangueLV2, gbc_cLangueLV2);
|
||||
@ -1057,7 +1099,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
|
||||
GridBagConstraints gbc_cGroupeTP = new GridBagConstraints();
|
||||
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.gridy = 3;
|
||||
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();
|
||||
panelSouth.setPreferredSize(new Dimension(1920, 60));
|
||||
panelSouth.setBackground(Color.gray);
|
||||
@ -1223,6 +1282,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
String selectedGroupePrincipal = null;
|
||||
String selectedGroupeProjet = null;
|
||||
String selectedRegime = null;
|
||||
String selectedCovoiturage = null;
|
||||
|
||||
if(cGroupeTD.getItemCount()>0) selectedGroupeTD = cGroupeTD.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(cGroupeProjet.getItemCount()>0) selectedGroupeProjet = cGroupeProjet.getSelectedItem().toString();
|
||||
if(cRegime.getItemCount()>0) selectedRegime = cRegime.getSelectedItem().toString();
|
||||
if(cCovoiturage.getItemCount()>0) selectedCovoiturage = cCovoiturage.getSelectedItem().toString();
|
||||
|
||||
ignoreComboChange=true;
|
||||
cGroupeTD.removeAllItems();
|
||||
@ -1250,6 +1311,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
cGroupePrincipal.removeAllItems();
|
||||
cGroupeProjet.removeAllItems();
|
||||
cRegime.removeAllItems();
|
||||
cCovoiturage.removeAllItems();
|
||||
ignoreComboChange=false;
|
||||
|
||||
|
||||
@ -1265,6 +1327,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
List<String> lGroupePrincipal = new ArrayList<String>();
|
||||
List<String> lGroupeProjet = new ArrayList<String>();
|
||||
List<String> lRegime = new ArrayList<String>();
|
||||
List<String> lCovoiturage = new ArrayList<String>();
|
||||
|
||||
String pasChoisi = " - ";
|
||||
|
||||
@ -1284,6 +1347,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
String GroupePrincipal = nStudent.getAttributes("Groupe_Principal");
|
||||
String GroupeProjet = nStudent.getAttributes("Groupe_Projet");
|
||||
String Regime = nStudent.getAttributes("Regime");
|
||||
String Covoiturage = nStudent.getAttributes("Etudiant_Covoiturage");
|
||||
|
||||
boolean isOnlySpaces = GroupeTD.matches("\\s+");
|
||||
if(!lGroupeTD.contains(GroupeTD) && !isOnlySpaces) {
|
||||
@ -1332,7 +1396,11 @@ public class Window_gestionnaire extends JFrame {
|
||||
isOnlySpaces = Regime.matches("\\s+");
|
||||
if(!lRegime.contains(Regime) && !isOnlySpaces) {
|
||||
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)) {
|
||||
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;
|
||||
majTable();
|
||||
}
|
||||
@ -1473,6 +1551,7 @@ public class Window_gestionnaire extends JFrame {
|
||||
String GroupePrincipal = (String) cGroupePrincipal.getSelectedItem();
|
||||
String GroupeProjet = (String) cGroupeProjet.getSelectedItem();
|
||||
String Regime = (String) cRegime.getSelectedItem();
|
||||
String Covoiturage = (String) cCovoiturage.getSelectedItem();
|
||||
|
||||
// le noeud table
|
||||
nTable = new noeud("Table");
|
||||
@ -1513,6 +1592,9 @@ public class Window_gestionnaire extends JFrame {
|
||||
nTable.setAttribut("Regime", Regime);
|
||||
nTable.setAttribut("isRegime", "true");
|
||||
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<>();
|
||||
@ -1585,7 +1667,8 @@ public class Window_gestionnaire extends JFrame {
|
||||
|
||||
|
||||
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("Groupe_Projet").equals(GroupeProjet) || GroupeProjet.equals(pasChoisi) )
|
||||
&& ( nStudent.getAttributes("Groupe_Principal").equals(GroupePrincipal) || GroupePrincipal.equals(pasChoisi) )
|
||||
@ -1691,15 +1774,41 @@ public class Window_gestionnaire extends JFrame {
|
||||
if( (key.equals("Groupe_LV2") && (verouillage_Groupe_LV2 || verouillage_Tous_Les_Groupes))) {
|
||||
JOptionPane.showMessageDialog(null, "<html><h2>Les groupes de L.V.2 sont verrouillés.</h2></html>", "Erreur", JOptionPane.ERROR_MESSAGE);
|
||||
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) {
|
||||
majFiltres();
|
||||
return;
|
||||
}
|
||||
|
||||
String value = (String) table.getValueAt(row, column);
|
||||
|
||||
// Obtenir l'indice de la colonne "Individu_-_Code_Etudiant"
|
||||
int columnIndex = table.getColumnModel().getColumnIndex(commandes.nomColonneCodeEtudiant);
|
||||
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
|
||||
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>"
|
||||
+"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
|
||||
if (userInput != null) {
|
||||
@ -2299,4 +2408,103 @@ public class Window_gestionnaire extends JFrame {
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ public class base {
|
||||
|
||||
} else {
|
||||
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>");
|
||||
panel.add(message);
|
||||
JOptionPane.showMessageDialog(null, panel, "Erreur", JOptionPane.ERROR_MESSAGE);
|
||||
|
@ -1,5 +1,6 @@
|
||||
package gestion_version;
|
||||
|
||||
import java.awt.Font;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
@ -8,8 +9,12 @@ import java.net.URL;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.UIManager;
|
||||
|
||||
import Windows.Window_demarre;
|
||||
import base.NomDeColonneInscriptionTable;
|
||||
import base.recupeBases;
|
||||
import base.sauvegardeXMLBase;
|
||||
@ -71,11 +76,7 @@ public class VersionChecker {
|
||||
|
||||
// Conversion en nombre entier
|
||||
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);
|
||||
|
||||
@ -117,6 +118,13 @@ public class VersionChecker {
|
||||
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";
|
||||
regex = Pattern.compile(pattern);
|
||||
@ -144,7 +152,8 @@ public class VersionChecker {
|
||||
// Récupérer le texte entre les balises messageAlerte
|
||||
// -br- retour à la ligne
|
||||
// -b- et -/b- en gras
|
||||
// -u- et -/u- soiligné
|
||||
// -u- et -/u- souligné
|
||||
//
|
||||
commandes.messageAlerte = matcher.group(1);
|
||||
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>");
|
||||
@ -152,9 +161,7 @@ public class VersionChecker {
|
||||
|
||||
|
||||
} catch (IOException e) {
|
||||
JOptionPane.showMessageDialog(null, "<html><h2>Pas de connexion internet.</h2><br>"
|
||||
+ "Impossible de vérifier si une nouvelle version est disponible.<br>"
|
||||
+ "Impossible d'afficher le message d'information, s'il est disponible</ul>.</html>");
|
||||
showCustomMessagePasInternet();
|
||||
commandes.pasDeConnexion=true;
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -289,6 +296,28 @@ public class VersionChecker {
|
||||
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
|
||||
* @param nBase
|
||||
@ -399,7 +428,6 @@ public class VersionChecker {
|
||||
}
|
||||
nFormation.triAlphabetiqueDesEnfants(commandes.nomColonneNomEtudiant);
|
||||
}
|
||||
|
||||
return nBase;
|
||||
}
|
||||
|
||||
@ -452,6 +480,8 @@ public class VersionChecker {
|
||||
nFormation.setAttribut("pattern_Groupe_TP", "groupe TP n°#");
|
||||
nFormation.setAttribut("nombre_Student_Groupe_TP", "24");
|
||||
nFormation.setAttribut("aleatoire_Groupe_TP", "false");
|
||||
|
||||
|
||||
}
|
||||
return nBase;
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ public class commandes {
|
||||
|
||||
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 dateversion = "25 juillet 2023"; // La version actuelle
|
||||
public static String dateversion = "2 aout 2023"; // La version actuelle
|
||||
|
||||
// Les colonnes obligatoires dû à l'inscription des étudaints.
|
||||
// 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 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 noMessageAlerte = false; //Pas de message d'alerte
|
||||
public static String messageAlerte = ""; //Message alerte
|
||||
public static String messageVersion = ""; //Message version
|
||||
|
||||
|
@ -782,6 +782,55 @@ public class noeud implements Cloneable{
|
||||
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>
|
||||
* Si ne trouve pas retourne un null.
|
||||
@ -1101,6 +1150,39 @@ public class noeud implements Cloneable{
|
||||
}
|
||||
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.
|
||||
|
BIN
src/resources/covoiturage.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
src/resources/deverrouiller.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
src/resources/erreur404.png
Normal file
After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 9.5 KiB |
BIN
src/resources/rien_compris.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
src/resources/verrouiller.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
src/resources/wiki_bouton.png
Normal file
After Width: | Height: | Size: 21 KiB |