This commit is contained in:
pablo rodriguez 2025-01-09 11:35:09 +01:00
parent cf41fae890
commit 1cc185f8eb
19 changed files with 235 additions and 177 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,87 +1,19 @@
nomEtudiant;note;pourcentage
Alex Marechal;8.0;1.0
Alexandre Berthelin;2.527640449438202;0.31595505617977526
Alexis Legrand;6.112359550561798;0.7640449438202247
Alexy Lefebvre;6.000898876404494;0.7501123595505618
Amelie Bruniaux;6.238202247191011;0.7797752808988764
Anais Blondel;4.5591011235955055;0.5698876404494382
Anais Najdecki;3.358202247191011;0.4197752808988764
Antoine Duponchelle;5.357303370786517;0.6696629213483146
Antoine Ponchel;6.202247191011236;0.7752808988764045
Apolline Michel;6.159101123595506;0.7698876404494382
Arthur Willart;4.533932584269663;0.5667415730337079
Aurelien Ben Yahia;6.03685393258427;0.7546067415730338
Axel Aoumat;4.5447191011235955;0.5680898876404494
Axel Cadart;5.928988764044944;0.741123595505618
Aymeric Grenier;6.1986516853932585;0.7748314606741573
Baptiste Fynnaert;3.9298876404494383;0.4912359550561798
Camille Henneton - - Hecquet;6.112359550561798;0.7640449438202247
Charles Carron;3.832808988764045;0.4791011235955056
Chloe Mazur;6.058426966292135;0.7573033707865169
Clara Bruneau;3.0921348314606742;0.3865168539325843
Clement Legrand;6.479101123595505;0.8098876404494382
Cyril Massart;4.264269662921349;0.5330337078651686
Doriane Bernard;5.296179775280899;0.6620224719101123
Elliot Pilawa;2.520993227990971;0.31512415349887135
Elodie Vaesken;5.094831460674158;0.6368539325842697
Enora-Lou Deplanque;2.3586516853932586;0.29483146067415733
Esteban Devos Devulder;3.487640449438202;0.43595505617977526
Gabriel Humain;6.166292134831461;0.7707865168539326
Helene Adjal;5.727640449438202;0.7159550561797753
Hugo Guffroy;5.544269662921348;0.6930337078651685
Imen Belaiche;6.0332584269662926;0.7541573033707866
Ines Aubier;5.713258426966292;0.7141573033707865
Ines El Karami;6.09438202247191;0.7617977528089888
Issam Benzemra--Petit;6.115955056179775;0.7644943820224719
Jane Gosset;6.101573033707865;0.7626966292134831
Jeremy Legros;3.8076404494382023;0.4759550561797753
Julie Rohart;4.296629213483146;0.5370786516853933
Justine Bertin;4.753258426966292;0.5941573033707865
Justine Mikolajczak;4.774831460674157;0.5968539325842697
Lali Vin;6.072808988764045;0.7591011235955056
Lea Denys;5.979325842696629;0.7474157303370786
Leo Marin;5.713258426966292;0.7141573033707865
Lilian Lamorille;3.671011235955056;0.458876404494382
Lisa Baran;6.223820224719101;0.7779775280898876
Lucas Canon;5.824719101123596;0.7280898876404495
Lucie Delong;5.051685393258427;0.6314606741573033
Luna Hemery;5.662921348314606;0.7078651685393258
Maeline Humez;6.464719101123595;0.8080898876404494
Manon Cassel;5.785168539325842;0.7231460674157303
Martin Pilot;5.288988764044944;0.661123595505618
Mateo Darras;3.8076404494382023;0.4759550561797753
Matheo Guerineau;6.195056179775281;0.7743820224719101
Matheo Normand;6.115955056179775;0.7644943820224719
Mathilde Carlier;2.912359550561798;0.36404494382022473
Mathilde Konury;5.547865168539325;0.6934831460674157
Mathis Carlier;6.173483146067416;0.771685393258427
Mathys Calesse;4.922247191011236;0.6152808988764045
Mehdi Boutchich;2.844044943820225;0.3555056179775281
Melanie Bouchoir;5.637752808988764;0.7047191011235955
Melusine Miletti;4.670561797752809;0.5838202247191011
Mickael Lenclud;3.102483069977427;0.38781038374717836
Noah Desfachelles;3.581123595505618;0.44764044943820225
Noah Halluin;1.1593679458239277;0.14492099322799096
Oceane Decroix;4.526741573033708;0.5658426966292135
Quentin Stautemas;5.641348314606741;0.7051685393258427
Raphael Rivaux;1.90561797752809;0.23820224719101124
Remi Delaval;3.221573033707865;0.40269662921348315
Remi Delvalle;5.4040449438202245;0.6755056179775281
Remy Maeght;2.782921348314607;0.34786516853932586
Romain Bruni;6.195056179775281;0.7743820224719101
Romain Delrue;5.831910112359551;0.7289887640449438
Ronan Bourdrel;6.004494382022472;0.750561797752809
Simon Ducrocq;6.777528089887641;0.8471910112359551
Solene Marien;6.115955056179775;0.7644943820224719
Stefan Gaudin;1.7474157303370788;0.21842696629213484
Tanguy Delavier;5.623370786516854;0.7029213483146067
Theo Duprez;4.965393258426967;0.6206741573033708
Theo Justin;4.156404494382023;0.5195505617977528
Theo Rouze;6.187865168539326;0.7734831460674157
Theo Verlet;5.993707865168539;0.7492134831460674
Thomas Renard;4.778426966292135;0.5973033707865169
Thomas Thevenin;3.688988764044944;0.461123595505618
Tristan Quesson;3.9370786516853933;0.49213483146067416
Tyffene Viseur;5.939775280898877;0.7424719101123596
Vytto Scilironi;3.376179775280899;0.4220224719101124
Yvonnick Levis;6.202247191011236;0.7752808988764045
Alexine Zajac;5.869872701555869;0.5869872701555869
Anthony Logez;9.603960396039604;0.9603960396039604
Clara Dauchy;10.0;1.0
Clement Lespagnol;1.0608203677510608;0.10608203677510608
Colin Morel;10.0;1.0
Corentin Caffet;1.0891089108910892;0.10891089108910891
Elisa Deretz;10.0;1.0
Elsa Vasseur;2.14992927864215;0.214992927864215
Eowyn Beugin;6.082036775106082;0.6082036775106082
Gwendoline Labarre;9.92927864214993;0.9929278642149929
Jennifer Sabatini;10.0;1.0
Kenza Kessad;4.766619519094767;0.4766619519094767
Lila Lembrez;10.0;1.0
Lowan Corne;10.0;1.0
Marie Bouteleux;6.152758132956153;0.6152758132956153
Nathanael Ducatel;10.0;1.0
Paul Poire;10.0;1.0
Tom Outreman;10.0;1.0

1 nomEtudiant note pourcentage
2 Alex Marechal Alexine Zajac 8.0 5.869872701555869 1.0 0.5869872701555869
3 Alexandre Berthelin Anthony Logez 2.527640449438202 9.603960396039604 0.31595505617977526 0.9603960396039604
4 Alexis Legrand Clara Dauchy 6.112359550561798 10.0 0.7640449438202247 1.0
5 Alexy Lefebvre Clement Lespagnol 6.000898876404494 1.0608203677510608 0.7501123595505618 0.10608203677510608
6 Amelie Bruniaux Colin Morel 6.238202247191011 10.0 0.7797752808988764 1.0
7 Anais Blondel Corentin Caffet 4.5591011235955055 1.0891089108910892 0.5698876404494382 0.10891089108910891
8 Anais Najdecki Elisa Deretz 3.358202247191011 10.0 0.4197752808988764 1.0
9 Antoine Duponchelle Elsa Vasseur 5.357303370786517 2.14992927864215 0.6696629213483146 0.214992927864215
10 Antoine Ponchel Eowyn Beugin 6.202247191011236 6.082036775106082 0.7752808988764045 0.6082036775106082
11 Apolline Michel Gwendoline Labarre 6.159101123595506 9.92927864214993 0.7698876404494382 0.9929278642149929
12 Arthur Willart Jennifer Sabatini 4.533932584269663 10.0 0.5667415730337079 1.0
13 Aurelien Ben Yahia Kenza Kessad 6.03685393258427 4.766619519094767 0.7546067415730338 0.4766619519094767
14 Axel Aoumat Lila Lembrez 4.5447191011235955 10.0 0.5680898876404494 1.0
15 Axel Cadart Lowan Corne 5.928988764044944 10.0 0.741123595505618 1.0
16 Aymeric Grenier Marie Bouteleux 6.1986516853932585 6.152758132956153 0.7748314606741573 0.6152758132956153
17 Baptiste Fynnaert Nathanael Ducatel 3.9298876404494383 10.0 0.4912359550561798 1.0
18 Camille Henneton - - Hecquet Paul Poire 6.112359550561798 10.0 0.7640449438202247 1.0
19 Charles Carron Tom Outreman 3.832808988764045 10.0 0.4791011235955056 1.0
Chloe Mazur 6.058426966292135 0.7573033707865169
Clara Bruneau 3.0921348314606742 0.3865168539325843
Clement Legrand 6.479101123595505 0.8098876404494382
Cyril Massart 4.264269662921349 0.5330337078651686
Doriane Bernard 5.296179775280899 0.6620224719101123
Elliot Pilawa 2.520993227990971 0.31512415349887135
Elodie Vaesken 5.094831460674158 0.6368539325842697
Enora-Lou Deplanque 2.3586516853932586 0.29483146067415733
Esteban Devos Devulder 3.487640449438202 0.43595505617977526
Gabriel Humain 6.166292134831461 0.7707865168539326
Helene Adjal 5.727640449438202 0.7159550561797753
Hugo Guffroy 5.544269662921348 0.6930337078651685
Imen Belaiche 6.0332584269662926 0.7541573033707866
Ines Aubier 5.713258426966292 0.7141573033707865
Ines El Karami 6.09438202247191 0.7617977528089888
Issam Benzemra--Petit 6.115955056179775 0.7644943820224719
Jane Gosset 6.101573033707865 0.7626966292134831
Jeremy Legros 3.8076404494382023 0.4759550561797753
Julie Rohart 4.296629213483146 0.5370786516853933
Justine Bertin 4.753258426966292 0.5941573033707865
Justine Mikolajczak 4.774831460674157 0.5968539325842697
Lali Vin 6.072808988764045 0.7591011235955056
Lea Denys 5.979325842696629 0.7474157303370786
Leo Marin 5.713258426966292 0.7141573033707865
Lilian Lamorille 3.671011235955056 0.458876404494382
Lisa Baran 6.223820224719101 0.7779775280898876
Lucas Canon 5.824719101123596 0.7280898876404495
Lucie Delong 5.051685393258427 0.6314606741573033
Luna Hemery 5.662921348314606 0.7078651685393258
Maeline Humez 6.464719101123595 0.8080898876404494
Manon Cassel 5.785168539325842 0.7231460674157303
Martin Pilot 5.288988764044944 0.661123595505618
Mateo Darras 3.8076404494382023 0.4759550561797753
Matheo Guerineau 6.195056179775281 0.7743820224719101
Matheo Normand 6.115955056179775 0.7644943820224719
Mathilde Carlier 2.912359550561798 0.36404494382022473
Mathilde Konury 5.547865168539325 0.6934831460674157
Mathis Carlier 6.173483146067416 0.771685393258427
Mathys Calesse 4.922247191011236 0.6152808988764045
Mehdi Boutchich 2.844044943820225 0.3555056179775281
Melanie Bouchoir 5.637752808988764 0.7047191011235955
Melusine Miletti 4.670561797752809 0.5838202247191011
Mickael Lenclud 3.102483069977427 0.38781038374717836
Noah Desfachelles 3.581123595505618 0.44764044943820225
Noah Halluin 1.1593679458239277 0.14492099322799096
Oceane Decroix 4.526741573033708 0.5658426966292135
Quentin Stautemas 5.641348314606741 0.7051685393258427
Raphael Rivaux 1.90561797752809 0.23820224719101124
Remi Delaval 3.221573033707865 0.40269662921348315
Remi Delvalle 5.4040449438202245 0.6755056179775281
Remy Maeght 2.782921348314607 0.34786516853932586
Romain Bruni 6.195056179775281 0.7743820224719101
Romain Delrue 5.831910112359551 0.7289887640449438
Ronan Bourdrel 6.004494382022472 0.750561797752809
Simon Ducrocq 6.777528089887641 0.8471910112359551
Solene Marien 6.115955056179775 0.7644943820224719
Stefan Gaudin 1.7474157303370788 0.21842696629213484
Tanguy Delavier 5.623370786516854 0.7029213483146067
Theo Duprez 4.965393258426967 0.6206741573033708
Theo Justin 4.156404494382023 0.5195505617977528
Theo Rouze 6.187865168539326 0.7734831460674157
Theo Verlet 5.993707865168539 0.7492134831460674
Thomas Renard 4.778426966292135 0.5973033707865169
Thomas Thevenin 3.688988764044944 0.461123595505618
Tristan Quesson 3.9370786516853933 0.49213483146067416
Tyffene Viseur 5.939775280898877 0.7424719101123596
Vytto Scilironi 3.376179775280899 0.4220224719101124
Yvonnick Levis 6.202247191011236 0.7752808988764045

View File

@ -581,7 +581,7 @@ public class Classeur2 {
/**
* Permet de vérifier les modifications interdites
* Permet de vérifier les modifications interdites.<br>
* @author pabr6
*
*/
@ -651,58 +651,58 @@ public class Classeur2 {
private TreeMap<Integer,formatsConditionnels> formatConditionnel = new TreeMap<Integer,formatsConditionnels>();
private TreeMap<String,String> nommageCellulesFeuille = new TreeMap<String,String>();
/**
* Chargement du sujet
* @param fe
*/
public feuille(node fe) {
// chargement du sujet
if(fe.getAttributs().get("nomFeuille")!=null) nomFeuille=fe.getAttributs().get("nomFeuille");
if(fe.getAttributs().get("styleLigne")!=null) styleLigne=fe.getAttributs().get("styleLigne");
if(fe.getAttributs().get("Poids")!=null) Poids=fe.getAttributs().get("Poids");
if(fe.getAttributs().get("evaluer")!=null) evaluer=fe.getAttributs().get("evaluer");
if(fe.getAttributs().get("link")!=null) link=fe.getAttributs().get("link");
if(fe.getAttributs().get("linktitle")!=null) linktitle=fe.getAttributs().get("linktitle");
node comm = fe.retourneFirstEnfant("communication");
if(!comm.isVide()) communication=comm.getContenu().get(0);
//nommage
for (Entry<String, String> j : nommageCellules.entrySet()) {
nommageCellulesFeuille.put(j.getKey(), j.getValue());
}
ArrayList<node> noms = fe.retourneAllEnfants("nommagecellulesfeuille");
for(int i=0; i < noms.size();i++) {
nommageCellulesFeuille.put(noms.get(i).getAttributs().get("name"),noms.get(i).getAttributs().get("cells"));
}
//colonnes chargement sujet
ArrayList<node> nods= fe.retourneAllEnfants("colonne");
for(int i = 0 ; i < nods.size();i++) {
colonnes.put( i , new colonne(nods.get(i),nods.get(i).getAttributs().get("RefColonne")));
}
nods.clear();
//lignes chargement sujet
nods= fe.retourneAllEnfants("ligne");
for(int i=0 ; i < nods.size();i++) {
if(i>commandes.analysis_nbr_Ligne_maxi) break;
lignes.put(i, new ligne(nods.get(i), nods.get(i).getAttributs().get("RefLigne")));
}
//graphics chargement sujet
nods= fe.retourneAllEnfants("graphic");
for(int i=0 ; i < nods.size();i++) {
graphics.put(i, new graphic(nods.get(i)));
}
//format conditionnel
nods= fe.retourneAllEnfants("formatsConditionnels");
for(int i=0 ; i < nods.size();i++) {
formatConditionnel.put(i, new formatsConditionnels(nods.get(i)));
}
}
// /**
// * Chargement du sujet
// * @param fe
// */
// public feuille(node fe) {
// // chargement du sujet
// if(fe.getAttributs().get("nomFeuille")!=null) nomFeuille=fe.getAttributs().get("nomFeuille");
// if(fe.getAttributs().get("styleLigne")!=null) styleLigne=fe.getAttributs().get("styleLigne");
// if(fe.getAttributs().get("Poids")!=null) Poids=fe.getAttributs().get("Poids");
// if(fe.getAttributs().get("evaluer")!=null) evaluer=fe.getAttributs().get("evaluer");
// if(fe.getAttributs().get("link")!=null) link=fe.getAttributs().get("link");
// if(fe.getAttributs().get("linktitle")!=null) linktitle=fe.getAttributs().get("linktitle");
//
// node comm = fe.retourneFirstEnfant("communication");
// if(!comm.isVide()) communication=comm.getContenu().get(0);
//
// //nommage
// for (Entry<String, String> j : nommageCellules.entrySet()) {
// nommageCellulesFeuille.put(j.getKey(), j.getValue());
// }
// ArrayList<node> noms = fe.retourneAllEnfants("nommagecellulesfeuille");
// for(int i=0; i < noms.size();i++) {
// nommageCellulesFeuille.put(noms.get(i).getAttributs().get("name"),noms.get(i).getAttributs().get("cells"));
// }
//
// //colonnes chargement sujet
// ArrayList<node> nods= fe.retourneAllEnfants("colonne");
// for(int i = 0 ; i < nods.size();i++) {
// colonnes.put( i , new colonne(nods.get(i),nods.get(i).getAttributs().get("RefColonne")));
// }
// nods.clear();
//
// //lignes chargement sujet
// nods= fe.retourneAllEnfants("ligne");
// for(int i=0 ; i < nods.size();i++) {
// if(i>commandes.analysis_nbr_Ligne_maxi) break;
// lignes.put(i, new ligne(nods.get(i), nods.get(i).getAttributs().get("RefLigne")));
// }
//
// //graphics chargement sujet
// nods= fe.retourneAllEnfants("graphic");
// for(int i=0 ; i < nods.size();i++) {
// graphics.put(i, new graphic(nods.get(i)));
// }
//
// //format conditionnel
// nods= fe.retourneAllEnfants("formatsConditionnels");
// for(int i=0 ; i < nods.size();i++) {
// formatConditionnel.put(i, new formatsConditionnels(nods.get(i)));
// }
//
// }
@ -755,10 +755,12 @@ public class Classeur2 {
nods=fe.retourneAllEnfants("table:table-row");
System.out.println("Nbre de ligne = " + nods.size());
int nombreRepetitionLigne = 0;
for(int i=0 ; i < nods.size();i++) {
if(i>0 && i<commandes.analysis_nbr_Ligne_maxi) if(lignes.get(i-1).getPropertiesRow().get("Repetition")!=null) {
int nombreLigneMax = nods.size();
if(nombreLigneMax>commandes.analysis_nbr_Ligne_maxi) nombreLigneMax = commandes.analysis_nbr_Ligne_maxi;
for(int i=0 ; i < nombreLigneMax;i++) {
if(i>0) if(lignes.get(i-1).getPropertiesRow().get("Repetition")!=null) {
if(lignes.get(i-1).getPropertiesRow().get("Repetition")!=null) nombreRepetitionLigne = nombreRepetitionLigne + Integer.valueOf(lignes.get(i-1).getPropertiesRow().get("Repetition"))-1;
}
}
lignes.put(i, new ligne(nods.get(i),String.valueOf(i+1+nombreRepetitionLigne),nod, indexStudent));
}
@ -2625,13 +2627,13 @@ public class Classeur2 {
private TreeMap<Integer,formatConditionnelConditions> conditionalformatConditions = new TreeMap<Integer,formatConditionnelConditions>();
// chargement dans le node sujet.
public formatsConditionnels(node nodeFormatsConditionnels ) {
if(nodeFormatsConditionnels.getAttributs().get("targetRangeAddress")!=null) targetRangeAddress = nodeFormatsConditionnels.getAttributs().get("targetRangeAddress");
for (node enfant : nodeFormatsConditionnels.getEnfants()) {
}
}
// // chargement dans le node sujet.
// public formatsConditionnels(node nodeFormatsConditionnels ) {
// if(nodeFormatsConditionnels.getAttributs().get("targetRangeAddress")!=null) targetRangeAddress = nodeFormatsConditionnels.getAttributs().get("targetRangeAddress");
// for (node enfant : nodeFormatsConditionnels.getEnfants()) {
//
// }
// }
// Chargement depuis le classeur de l'étudiant.
public formatsConditionnels(node nodeFormatConditionnel,node nod, Integer indexStudent ) {

View File

@ -189,6 +189,7 @@ public class evaluerAttributs {
private node trouveCelluleEtudiant(node cellule) {
if(nEtudiant==null) return null;
node Tempo = trouveLigneEtudiant();
if(Tempo==null) return null;
return Tempo.retourneFirstEnfant("cellule", "RefLigne", cellule.getAttributs().get("RefLigne"), "RefColonne", cellule.getAttributs().get("RefColonne"));
}

View File

@ -1,8 +1,5 @@
package evaluer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import calc.commandes;
import xml.creerNodeEvaluationEtudiant;
import xml.node;
@ -104,25 +101,21 @@ public class evaluerNodesClasseurStudent {
/**
* Trouve le format conditionnel de l'étudiant.<br>
* Pour trouver le format conditionnel, référence à baseCellAddress avec + ou - 2 lignes.<br>
* Pour trouver le format conditionnel, référence à baseCellAddress avec + ou - 1 ligne.<br>
* @param baseCellAddress
* @return
*/
private node trouveLesFormatsConditionnelsEtudiant(String baseCellAddress) {
if(baseCellAddress.indexOf("")!=-1) baseCellAddress = baseCellAddress.substring(0, baseCellAddress.indexOf(""));
// 🔥 Regex pour capturer le texte avant et après le 2e nombre
String regex = "(.*?)(\\d+)(.*?\\d+)";
// Supprimer tout ce qui suit le 2e nombre
String name = baseCellAddress.replaceAll(regex, "$1");
String number = baseCellAddress.replaceAll(regex, "$2"); // Supprime tout sauf les chiffres
int ligneCellSujet = Integer.parseInt(number);
String name1 = "^"+name+String.valueOf(ligneCellSujet)+".*";
String name2 = "^"+name+String.valueOf(ligneCellSujet-1)+".*";
String name3 = "^"+name+String.valueOf(ligneCellSujet+1)+".*";
if(nodeEtudiant!=null) {
for (node enfantsEtudiant : nodeEtudiant.retourneAllEnfants("formatsConditionnels")) {
String A = enfantsEtudiant.getAttributs().get("baseCellAddress");
@ -133,7 +126,6 @@ public class evaluerNodesClasseurStudent {
}
}
}
return null;
}

View File

@ -10,7 +10,7 @@ import java.text.DateFormat;
import java.util.Date;
import java.util.Map.Entry;
import AnalyseCalc.AnalyseClasseur;
import AnalyseCalc.analyseCalc;
import AnalyseCalc.Classeur2;
import AnalyseCalc.sousTotal;
import AnalyseCalc.verifsujet;

View File

@ -16,8 +16,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class node implements Cloneable{
protected String nameNode = "";
@ -33,25 +31,51 @@ protected boolean nodeClose = false;
* @author pablo rodriguez
*
*/
public node() {
}
/**
* Constructeur d'un node vide.<br>
*/
public node() { }
/**
* Constructeur d'un node ayant le nom nameNode.<br>
* @param nameNode : le nom du node.
*/
public node(String nameNode) {
setNameNode(nameNode);
}
/**
* Constructeur d'un node ayant le nom nameNode, de père le node parent.<br>
* @param nameNode : le nom du node.
* @param parent : le node père de ce node.
*/
public node(String nameNode, node parent) {
setNameNode(nameNode);
if(parent!=null) parent.addEnfant(this);
}
/**
* Constructeur d'un node ayant le nom nameNode, de père le node parent, d'attribut nameAttribut ayant la valeur valueAttribut.<br>
* @param nameNode : le nom du node.
* @param parent : le node père de ce node.
* @param nameAttribut : le nom de l'attribut.
* @param valueAttribut : la valeur de l'attribut.
*/
public node(String nameNode, node parent, String nameAttribut, String valueAttribut) {
setNameNode(nameNode);
if(parent!=null) parent.addEnfant(this);
if(nameAttribut!=null) this.attributs.put(nameAttribut, valueAttribut);
}
/**
* Constructeur d'un node ayant le nom nameNode, de père le node parent, d'attributs nameAttribut1 et nameAttribut2 ayant les valeurs valueAttribut1 et valueAttribut2.<br>
* @param nameNode : le nom du node.
* @param parent : le node père de ce node.
* @param nameAttribut1 : le nom de l'attribut1.
* @param valueAttribut1 : la valeur de l'attribut1.
* @param nameAttribut2 : le nom de l'attribut2.
* @param valueAttribut2 : la valeur de l'attribut2.
*/
public node(String nameNode, node parent, String nameAttribut1, String valueAttribut1,String nameAttribut2, String valueAttribut2) {
setNameNode(nameNode);
if(parent!=null) parent.addEnfant(this);
@ -59,54 +83,105 @@ protected boolean nodeClose = false;
if(nameAttribut2!=null) this.attributs.put(nameAttribut2, valueAttribut2);
}
/**
* Retourne TRUE si le node est fermé.<br>
* Retourne FALSE si le node est ouvert.<br>
* @return
*/
public boolean isNodeClose() {
return nodeClose;
}
/**
* Ferme ou ouvre le node.<br>
* @param nodeClose : TRUE pour fermer ou FALSE pour ouvrir ce node.
*/
public void setNodeClose(boolean nodeClose) {
this.nodeClose = nodeClose;
}
/**
* Retourne TRUE si ce node contient l'attribut evaluer avec comme valeur true.<br>
* Sinon retourne FALSE.<br>
* @return
*/
public boolean isEvaluer() {
if(!this.attributs.containsKey("evaluer")) return false;
if(!Boolean.valueOf(this.getAttributs().get("evaluer"))) return false;
return true;
}
public boolean isAttributEvaluer(String key) {
return this.attributs.get(key).contains("");
/**
* Retourne TRUE si ce node contient l'attribut nameAttribut qui est évalué.<br>
* C'est à dire que la valeur de l'attribut nameAttribut contient le caractère .<br>
* @param nameAttribut : nom de l'attribut.
* @return TRUE si cet attribut est évalué. Sinon retourne FALSE.
*/
public boolean isAttributEvaluer(String nameAttribut) {
if(this.attributs.get(nameAttribut)==null) return false;
return this.attributs.get(nameAttribut).contains("");
}
/**
* Retourne le nom de ce node.<br>
* @return
*/
public String getNameNode() {
if(this.equals(null)) return "";
return this.nameNode;
}
/**
* Nomme ou renomme ce node par le nom nameNode.<br>
* @param nameNode
*/
public void setNameNode(String nameNode) {
this.nameNode = nameNode;
}
/**
* Retourne TRUE si ce node contient au moins un attribut.<br>
* Sinon retourne FALSE.<br>
* @return
*/
public boolean isHasAttributs() {
if(this.attributs.size()>0) return true;
return false;
}
/**
* Retourne TRUE si ce node contient un attribut nameNode.<br>
* Sinon retourne FALSE.<br>
* @param nameAttribut
* @return
*/
public boolean isHasAttributs(String nameAttribut) {
if(this.attributs.get(nameAttribut)==null) return false;
return true;
}
/**
* Retourne TRUE si ce node possède au moins un enfant.<br>
* Sinon retourne FALSE.<br>
* @return
*/
public boolean isHasEnfant() {
if(this.enfants.size()>0) return true;
return false;
}
/**
* Retourne le nombre d'enfant de ce node.<br>
* @return : Un interger.
*/
public int getNbrEnfants() {
return this.enfants.size();
}
/**
* Retourne la liste des enfants (ArrayList<node>) de ce node;<br>
* @return ArrayList<node>
*/
public ArrayList<node> getEnfants() {
return this.enfants;
}
@ -185,15 +260,25 @@ protected boolean nodeClose = false;
}
}
/**
* Supprime tous les nodes enfants.<br>
*/
public void removeAllEnfants() {
this.enfants.clear();
}
/**
* Supprime tous les enfants fournis dans l'ArrayList enfants.<br>
* @param enfants
*/
public void removeEnfants(ArrayList<node> enfants) {
this.enfants.removeAll(enfants);
}
/**
* Retourne le premier enfants.<br>
* @return
*/
public node retourneFirstEnfant() {
if(this.enfants.size()>0) return this.enfants.get(0);
return null;
@ -201,7 +286,7 @@ protected boolean nodeClose = false;
/**
* Retourne le premier enfant ayant le nom nameNode.<br>
* Sinon retourne un null.
* Sinon retourne un null.<br>
* @param nameNode : le nom de l'enfant.
* @return
*/
@ -214,6 +299,13 @@ protected boolean nodeClose = false;
return null;
}
/**
* Retourne le premier enfant ayant le nom nameNode et l'attribut nameAttribut.<br>
* Sinon retourne un null.<br>
* @param nameNode
* @param nameAttribut
* @return
*/
public node retourneFirstEnfant(String nameNode, String nameAttribut) {
if(this.nameNode.equals(nameNode) && this.attributs.containsKey(nameAttribut)) return this;
for (node nod : enfants) {
@ -279,6 +371,9 @@ protected boolean nodeClose = false;
return null;
}
/**
* Retourne le frère suivant de ce node.<br>
*/
public node retourneNextBrother() {
if(this.parent!=null) {
int indexOfThis = this.parent.enfants.indexOf(this);
@ -291,14 +386,17 @@ protected boolean nodeClose = false;
}
/**
* Retourne tous les frères du node, lui compris.</br>
* Retourne tous les frères du node, ce node compris.</br>
* @return
*/
public ArrayList<node> retourneAllBroters(){
return this.parent.getEnfants();
}
/**
* Retourne le frère précédenr de ce node.<br>
* @return
*/
public node retournePreviousBrother() {
if(this.parent!=null) {
int indexOfThis = this.parent.enfants.indexOf(this);
@ -310,6 +408,10 @@ protected boolean nodeClose = false;
return null;
}
/**
* Retourne le premier frère de ce node.<br>
* @return
*/
public node retourneFirstBrother() {
if(this.parent!=null) {
if(this.parent.enfants.get(0)!=null) return this.parent.enfants.get(0);
@ -317,6 +419,10 @@ protected boolean nodeClose = false;
return null;
}
/**
* Retourne le dernier frère de ce node.<br>
* @return
*/
public node retourneLastBrother() {
if(this.parent!=null) {
int indexLast = this.parent.enfants.size()-1;
@ -325,14 +431,18 @@ protected boolean nodeClose = false;
return null;
}
/**
* Retourne le dernier enfant ce ce node.<br>
* Sinon retourne un null.<br>
* @return
*/
public node retourneLastEnfant() {
if(this.enfants.size()>0) return this.enfants.get(this.enfants.size()-1);
return null;
}
/**
* Retourne la liste des nodes ayant tous les mêmes noms.
* Retourne la liste (ArrayList<node>) des nodes ayant tous le même nom nameNode.<br>
* @param nameNode
* @return
*/
@ -352,22 +462,43 @@ protected boolean nodeClose = false;
return ListeNodes;
}
/**
* Retourne le nombre d'attribut de ce node.<br>
* @return
*/
public int getNbrAttributs() {
return attributs.size();
}
/**
* Retourne la liste des attributs (LinkedHashMap<String, String>) de ce node.<br>
* @return
*/
public LinkedHashMap<String, String> getAttributs() {
return attributs;
}
/**
* Ajoute la liste des attributs LinkedHashMap<String,String>.<br>
* @param attributs
*/
public void addAttributs(LinkedHashMap<String,String> attributs) {
this.attributs = attributs;
}
/**
* Ajoute un attribut de ce node.<br>
* @param key : La clé.
* @param value : la valeur de la clé.
*/
public void addAttribut(String key, String value) {
this.attributs.put(key, value);
}
/**
* Supprime l'attribut ayant la clé key de ce node.<br>
* @param key : La clé.
*/
public void removeAttribut(String key) {
this.attributs.remove(key);
}

File diff suppressed because one or more lines are too long