headTable = new HashMap<>();
@@ -1598,7 +1669,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) )
@@ -1704,15 +1776,41 @@ public class Window_gestionnaire extends JFrame {
if( (key.equals("Groupe_LV2") && (verouillage_Groupe_LV2 || verouillage_Tous_Les_Groupes))) {
JOptionPane.showMessageDialog(null, "Les groupes de L.V.2 sont verrouillés.
", "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, "Création d'un code de covoiturage
"
+ + "Pour créer un code de covoiturage, veuillez respecter le pattern ci-dessous :
"
+ + "Le code \"cov\" doit être suivi d'un nombre, puis d'un tiret, et enfin d'au moins un code de groupe parmi :
"
+ + "TOUS, PRIN, TD, TP, INFO, DOC, LV1, LV2, PROJET.
"
+ + "Exemple : cov 51 - LV1 TD
"
+ + "Ce code indique que les étudiants doivent être dans les mêmes groupes de LV1 et de TD.
"
+ + "Si vous utilisez le code de groupe \"TOUS\", alors les étudiants doivent être dans les mêmes groupes partout à la fois.
"
+ + "\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);
@@ -2327,4 +2425,88 @@ public class Window_gestionnaire extends JFrame {
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 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 + "
");
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ if(sb.toString().isEmpty()) {
+ JOptionPane.showMessageDialog(null, "Pas de souci avec les covoiturages.");
+ }else {
+ String message = "" + sb.toString() + "";
+ JOptionPane.showMessageDialog(null, message);
+ }
+
+ }
+
+
+
+
+
+
}
diff --git a/src/gestion_version/VersionChecker.java b/src/gestion_version/VersionChecker.java
index 0a5c90e..0178fc1 100644
--- a/src/gestion_version/VersionChecker.java
+++ b/src/gestion_version/VersionChecker.java
@@ -480,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;
}
diff --git a/src/outils/commandes.java b/src/outils/commandes.java
index fc44c47..cf2a30e 100644
--- a/src/outils/commandes.java
+++ b/src/outils/commandes.java
@@ -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 = "30 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)
diff --git a/src/outils/noeud.java b/src/outils/noeud.java
index a2db285..756e31f 100644
--- a/src/outils/noeud.java
+++ b/src/outils/noeud.java
@@ -782,6 +782,55 @@ public class noeud implements Cloneable{
return null;
}
+ /**
+ * Retourne le premier noeud ayant l'attibut nameAttribut et ayant la valeur value.
+ * @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.
+ * @param nameAttribut
+ * @param value
+ * @return
+ */
+ public List getChildrenContainAttributeWithValue(String nameAttribut, String value) {
+ List 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 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.
* Si ne trouve pas retourne un null.
diff --git a/src/resources/covoiturage.png b/src/resources/covoiturage.png
new file mode 100644
index 0000000..48ad656
Binary files /dev/null and b/src/resources/covoiturage.png differ
diff --git a/src/resources/rien_compris.png b/src/resources/rien_compris.png
new file mode 100644
index 0000000..f720603
Binary files /dev/null and b/src/resources/rien_compris.png differ