diff --git a/ana.xml b/ana.xml
index 4d36758..19018aa 100644
--- a/ana.xml
+++ b/ana.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/base_evaluations_analyseCalc.xml b/base_evaluations_analyseCalc.xml
index 174982f..0289804 100644
--- a/base_evaluations_analyseCalc.xml
+++ b/base_evaluations_analyseCalc.xml
@@ -1 +1 @@
-
EJ €- €???Page 1(???)???, 00/00/000000:00:00Page 1/ 99
EJ €- €???Page 1(???)???, 00/00/000000:00:00Page 1/ 99
\ No newline at end of file
+
EJ €- €???Page 1(???)???, 00/00/000000:00:00Page 1/ 99
\ No newline at end of file
diff --git a/bin/AnalyseCalc/Classeur2$feuille$colonne.class b/bin/AnalyseCalc/Classeur2$feuille$colonne.class
index 1eb2e1d..0ee0507 100644
Binary files a/bin/AnalyseCalc/Classeur2$feuille$colonne.class and b/bin/AnalyseCalc/Classeur2$feuille$colonne.class differ
diff --git a/bin/AnalyseCalc/Classeur2$feuille$graphic.class b/bin/AnalyseCalc/Classeur2$feuille$graphic.class
index b1b872b..1154791 100644
Binary files a/bin/AnalyseCalc/Classeur2$feuille$graphic.class and b/bin/AnalyseCalc/Classeur2$feuille$graphic.class differ
diff --git a/bin/AnalyseCalc/Classeur2$feuille$ligne$cellule$validation.class b/bin/AnalyseCalc/Classeur2$feuille$ligne$cellule$validation.class
index 40d10ae..5f23707 100644
Binary files a/bin/AnalyseCalc/Classeur2$feuille$ligne$cellule$validation.class and b/bin/AnalyseCalc/Classeur2$feuille$ligne$cellule$validation.class differ
diff --git a/bin/AnalyseCalc/Classeur2$feuille$ligne$cellule.class b/bin/AnalyseCalc/Classeur2$feuille$ligne$cellule.class
index d8a811c..b4098df 100644
Binary files a/bin/AnalyseCalc/Classeur2$feuille$ligne$cellule.class and b/bin/AnalyseCalc/Classeur2$feuille$ligne$cellule.class differ
diff --git a/bin/AnalyseCalc/Classeur2$feuille$ligne.class b/bin/AnalyseCalc/Classeur2$feuille$ligne.class
index ba1c870..2282483 100644
Binary files a/bin/AnalyseCalc/Classeur2$feuille$ligne.class and b/bin/AnalyseCalc/Classeur2$feuille$ligne.class differ
diff --git a/bin/AnalyseCalc/Classeur2$feuille.class b/bin/AnalyseCalc/Classeur2$feuille.class
index c39ef16..3c6be0d 100644
Binary files a/bin/AnalyseCalc/Classeur2$feuille.class and b/bin/AnalyseCalc/Classeur2$feuille.class differ
diff --git a/bin/AnalyseCalc/Classeur2.class b/bin/AnalyseCalc/Classeur2.class
index a1a0cc3..625ee79 100644
Binary files a/bin/AnalyseCalc/Classeur2.class and b/bin/AnalyseCalc/Classeur2.class differ
diff --git a/bin/actions/actAttribut.class b/bin/actions/actAttribut.class
index b391244..8b6fe2c 100644
Binary files a/bin/actions/actAttribut.class and b/bin/actions/actAttribut.class differ
diff --git a/bin/calc/commandes.class b/bin/calc/commandes.class
index 08f1ece..8da84df 100644
Binary files a/bin/calc/commandes.class and b/bin/calc/commandes.class differ
diff --git a/bin/outils/outils.class b/bin/outils/outils.class
index aaa34e3..3ccfba3 100644
Binary files a/bin/outils/outils.class and b/bin/outils/outils.class differ
diff --git a/nodStudent.xml b/nodStudent.xml
index 729a21a..7223baf 100644
--- a/nodStudent.xml
+++ b/nodStudent.xml
@@ -1 +1 @@
-
EJ €- € €- €???Page 1(???)???, 00/00/000000:00:00Page 1/ 99
\ No newline at end of file
+
EJ €- € EJ???Page 1(???)???, 00/00/000000:00:00Page 1/ 99
\ No newline at end of file
diff --git a/src/AnalyseCalc/Classeur2.java b/src/AnalyseCalc/Classeur2.java
index 146d697..7362579 100644
--- a/src/AnalyseCalc/Classeur2.java
+++ b/src/AnalyseCalc/Classeur2.java
@@ -701,6 +701,7 @@ public class Classeur2 {
//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")));
}
@@ -1224,8 +1225,6 @@ public class Classeur2 {
private TreeMap series = new TreeMap();
-
-
public graphic(node nodeGraphic ) {
//chargement sujet
if(nodeGraphic.getAttributs().get("nomObjet")!=null) nomObjet = nodeGraphic.getAttributs().get("nomObjet");
@@ -1427,9 +1426,7 @@ public class Classeur2 {
}
}
- /********
- *
- */
+
//** Uniquement pour le chargement **
public void ajouteProperties(node nodeGraphic) {
node b = nodeGraphic.retourneFirstEnfant("chart:chart");
diff --git a/src/actions/actAttribut.java b/src/actions/actAttribut.java
index d09b445..28eed91 100644
--- a/src/actions/actAttribut.java
+++ b/src/actions/actAttribut.java
@@ -45,10 +45,10 @@ public class actAttribut extends AbstractAction{
if(nod.getLevel()>1 && !nod.getAllNameParents().contains("settings")) {
new attributs(nod,fenetres.create.getTextNodeSelect());
}else {
- JOptionPane.showMessageDialog(null, "Vous ne pouvez pas modifier directement les attributs de ce nodeAC." );
+ JOptionPane.showMessageDialog(null, "Vous ne pouvez pas modifier directement les attributs de ce node." );
}
}else {
- JOptionPane.showMessageDialog(null, "Ce nodeAC ne contient pas d'attribut de Calc.");
+ JOptionPane.showMessageDialog(null, "Ce node ne contient pas d'attribut de Calc.");
}
}
diff --git a/src/calc/commandes.java b/src/calc/commandes.java
index f027c2f..15f0927 100644
--- a/src/calc/commandes.java
+++ b/src/calc/commandes.java
@@ -160,6 +160,7 @@ public class commandes {
public static boolean analyse_controleDateModificationMini = false;
public static double analyse_notefrom=20;
public static Date analyse_modificationDateMini = null;
+ public static int analysis_nbr_Ligne_maxi = 100;
@@ -210,10 +211,10 @@ public class commandes {
analyse_controleDateCreation=false;
analyse_controle_Initial_Creator=false;
analyse_baremeABC=false;
- analyse_progression=1;
- analyse_bareme=20;
+ analyse_progression=1;
+ analyse_bareme=20;
analyse_tolerance_characters = 5;
- analyse_tolerance_text = 0.79;
+ analyse_tolerance_text = 0.79;
analyse_number_match = 2;
analyse_mini_number_modification = 0;
analyse_nombres_modifications_simultané_maxi = 100;
@@ -226,6 +227,7 @@ public class commandes {
analysis_filename = "";
analysis_nbr_feuilles = 0;
analysis_producteur = "";
+ analysis_nbr_Ligne_maxi = 100;
//** Variables pour l'interface du logiciel
diff --git a/src/evaluer/crearNodeAna.java b/src/evaluer/crearNodeAna.java
index bb927e2..9292cd7 100644
--- a/src/evaluer/crearNodeAna.java
+++ b/src/evaluer/crearNodeAna.java
@@ -12,6 +12,8 @@ import xml.node;
public class crearNodeAna {
node ana = new node("analyse");
+ int nbrPointTotal = 0;
+ int pointGagner = 0;
/**
* Création du node analyse.
@@ -27,14 +29,27 @@ public class crearNodeAna {
}
}
+ /**
+ * Obtient le node analyse de la class cearNodeAna.
+ * @return
+ */
public node getAna() {
return ana;
}
- public void setAna(node ana) {
- this.ana = ana;
+
+ /**
+ * Calcul le total des points de l'étudiants.
+ * Ajoute les attributs nbrPointTotal et pointGagner.
+ */
+ public void getAllResultat() {
+ for (node enfant : ana.retourneAllEnfants("resultat")) {
+ nbrPointTotal = nbrPointTotal + Integer.valueOf(enfant.getAttributs().get("total"));
+ pointGagner = pointGagner + Integer.valueOf(enfant.getAttributs().get("point"));
+ }
+ ana.getAttributs().put("nbrPointTotal", String.valueOf(nbrPointTotal));
+ ana.getAttributs().put("pointGagner", String.valueOf(pointGagner));
}
-
}
diff --git a/src/evaluer/evaluerAttributs.java b/src/evaluer/evaluerAttributs.java
index 949d70b..b26239d 100644
--- a/src/evaluer/evaluerAttributs.java
+++ b/src/evaluer/evaluerAttributs.java
@@ -12,7 +12,7 @@ public class evaluerAttributs {
/**
* Evaluer les attributs des nodes.
- * @param nodeSujet : le node du sujet (colonne, ligne)
+ * @param nodeSujet : le node du sujet (colonne, ligne, graphic)
* @param nodeEtudiant : le node de l'étudiant.
* @param analyse : le node analyse qui contiendra les résultats.
*/
@@ -23,7 +23,11 @@ public class evaluerAttributs {
if(nodeSujet.getNameNode().equals("colonne")) evaluerAttributColonne();
if(nodeSujet.getNameNode().equals("ligne")) {
evaluerAttributLigne();
- evaluerAttributCellule(nodeSujet);
+ evaluerAttributCellule();
+ }
+ if(nodeSujet.getNameNode().equals("graphic")) {
+ evaluerAttributGraphic();
+ evaluerLesNodesEnfantsGraphic();
}
}
@@ -31,7 +35,7 @@ public class evaluerAttributs {
* Evaluer les attributs du node colonne.
*/
private void evaluerAttributColonne() {
- nAnalyse.retourneLastEnfant("feuille").addEnfant(new node("colonne", nSujet, "RefColonne", nSujet.getAttributs().get("RefColonne")));
+ nAnalyse.retourneLastEnfant("feuille").addEnfant(new node("colonne", null, "RefColonne", nSujet.getAttributs().get("RefColonne")));
for (Map.Entry entry : nSujet.getAttributs().entrySet()){
if(nSujet.isAttributEvaluer(entry.getKey())) {
node colonneEtudiant = trouveColonneEtudiant();
@@ -44,7 +48,7 @@ public class evaluerAttributs {
* Evaluer les attributs du node ligne.
*/
private void evaluerAttributLigne() {
- nAnalyse.retourneLastEnfant("feuille").addEnfant(new node("ligne", nSujet, "RefLigne", nSujet.getAttributs().get("RefLigne")));
+ nAnalyse.retourneLastEnfant("feuille").addEnfant(new node("ligne", null, "RefLigne", nSujet.getAttributs().get("RefLigne")));
for (Map.Entry entry : nSujet.getAttributs().entrySet()){
if(nSujet.isAttributEvaluer(entry.getKey())) {
node ligneEtudiant = trouveLigneEtudiant();
@@ -56,11 +60,11 @@ public class evaluerAttributs {
/**
* Evaluer les attributs du node cellule.
*/
- private void evaluerAttributCellule(node ligneSujet) {
- for (node cellule : ligneSujet.retourneAllEnfants("cellule")) {
+ private void evaluerAttributCellule() {
+ for (node cellule : nSujet.retourneAllEnfants("cellule")) {
if(cellule.isEvaluer()) {
node celluleEtudiant = trouveCelluleEtudiant(cellule);
- nAnalyse.retourneLastEnfant("ligne").addEnfant(new node("cellule", cellule, "RefLigne", cellule.getAttributs().get("RefLigne"), "RefColonne", cellule.getAttributs().get("RefColonne")));
+ nAnalyse.retourneLastEnfant("ligne").addEnfant(new node("cellule", null, "RefLigne", cellule.getAttributs().get("RefLigne"), "RefColonne", cellule.getAttributs().get("RefColonne")));
for (Map.Entry entry : cellule.getAttributs().entrySet()){
if(cellule.isAttributEvaluer(entry.getKey())) {
nAnalyse.retourneLastEnfant("cellule").addEnfant(new outils().Compare("cellule",entry.getKey(), entry.getValue(), celluleEtudiant.getAttributs().get(entry.getKey())));
@@ -86,6 +90,37 @@ public class evaluerAttributs {
}
}
+ /**
+ * Evaluer les attributs du node graphic.
+ */
+ private void evaluerAttributGraphic() {
+ for (Map.Entry entry : nSujet.getAttributs().entrySet()){
+ if(nSujet.isAttributEvaluer(entry.getKey())) {
+ String valeurEtudiant = "";
+ if(nEtudiant!=null) valeurEtudiant=nEtudiant.getAttributs().get(entry.getKey());
+ nAnalyse.retourneLastEnfant("graphic").addEnfant(new outils().Compare("graphic",entry.getKey(), entry.getValue(), valeurEtudiant));
+ }
+ }
+ }
+
+ /**
+ * Evaluer tous les nodes enfants du node graphic.
+ */
+ private void evaluerLesNodesEnfantsGraphic() {
+ for (node enfant : nSujet.getEnfants()) {
+ if(enfant.isEvaluer()) {
+ node enfantEtudiant = trouveEnfantGraphicEtudiant(enfant.getNameNode());
+ for (Map.Entry entry : enfant.getAttributs().entrySet()){
+ if(enfant.isAttributEvaluer(entry.getKey())) {
+ String valeurEtudiant = "";
+ if(enfantEtudiant!=null) valeurEtudiant = enfantEtudiant.getAttributs().get(entry.getKey());
+ nAnalyse.retourneLastEnfant("graphic").addEnfant(new outils().Compare("graphic",entry.getKey(), entry.getValue(), valeurEtudiant ));
+ }
+ }
+ }
+ }
+ }
+
/**
* Trouve la colonne de l'étudiant.
* @return
@@ -114,6 +149,15 @@ public class evaluerAttributs {
return Tempo.retourneFirstEnfant("cellule", "RefLigne", cellule.getAttributs().get("RefLigne"), "RefColonne", cellule.getAttributs().get("RefColonne"));
}
+ /**
+ * Trouve le node enfant du node graphique.
+ * @param nameNode
+ * @return
+ */
+ private node trouveEnfantGraphicEtudiant(String nameNode) {
+ if(nEtudiant==null) return null;
+ return nEtudiant.retourneFirstEnfant(nameNode);
+ }
diff --git a/src/evaluer/evaluerLesFichiersEtudiants.java b/src/evaluer/evaluerLesFichiersEtudiants.java
index 3eb16a5..d2cdaf6 100644
--- a/src/evaluer/evaluerLesFichiersEtudiants.java
+++ b/src/evaluer/evaluerLesFichiersEtudiants.java
@@ -2,7 +2,6 @@ package evaluer;
import java.io.IOException;
import java.text.ParseException;
-import java.util.zip.ZipException;
import javax.swing.JEditorPane;
import javax.xml.parsers.ParserConfigurationException;
@@ -18,17 +17,15 @@ import calcul.enumerations.typeFichier;
import fenetres.baliseStyle;
import xml.EnsembleFichiers;
import xml.LecturesDossiers;
-import xml.ecritureFileXML;
import xml.node;
import xml.transformeXLMtoNode;
public class evaluerLesFichiersEtudiants implements Runnable{
private final JEditorPane txt;
-
+ public node tousLesResultats = new node("Tous");
public evaluerLesFichiersEtudiants(JEditorPane txt) {
-
commandes.analyse=true;
this.txt=txt;
this.txt.setContentType("text/plain");
@@ -37,8 +34,7 @@ public class evaluerLesFichiersEtudiants implements Runnable{
@Override
public synchronized void run() {
-
-
+
commandes.message = new StringBuilder();
commandes.message.append(baliseStyle.balise());
commandes.message.append("
*** LES FICHIERS DES ETUDIANTS ANALYSÉS ET ÉVALUÉS ***
");
@@ -94,8 +90,7 @@ public class evaluerLesFichiersEtudiants implements Runnable{
}
}
-
-
+
//*****************************************
//** Nombre de fichier writer à analyser **
//*****************************************
@@ -174,7 +169,8 @@ public class evaluerLesFichiersEtudiants implements Runnable{
//***********************************************************
new transformeXLMtoNode(EnsembleFichiers.getListeContentTableur().get(i),false,null);
node nod = transformeXLMtoNode.getNodeRoot();
-
+ if(!nod.isHasEnfant()) continue;
+
Classeur2 ClasseurStudent;
try {
@@ -192,25 +188,29 @@ public class evaluerLesFichiersEtudiants implements Runnable{
nodStudent.saveNodeEnXMLinNewFile("nodStudent.xml", commandes.pathApp);
if(commandes.analyse) {
- node ana = new crearNodeAna(nomEtudiant, i).getAna();
+ crearNodeAna evaluationEtudiant = new crearNodeAna(nomEtudiant, i);
+ node ana = evaluationEtudiant.getAna();
new evaluerNodesClasseurStudent(ana, nodStudent);
- ana.saveNodeEnXMLinNewFile("ana.xml", commandes.pathApp);
+ evaluationEtudiant.getAllResultat();
+ tousLesResultats.addEnfant(ana.clone());
}
-
-
+ tousLesResultats.saveNodeEnXMLinNewFile("ana.xml", commandes.pathApp);
} catch (CloneNotSupportedException | IOException e) {
e.printStackTrace();
}
-
+ }// ** Parcours l'ensemble des fichiers des étudiants ***
+ }// Run
+
+}
//**********************************
//** Analyse des fichiers student **
//**********************************
- if(commandes.analyse||commandes.ecritNodeAnalyse) {
-
-
-
-
+// if(commandes.analyse||commandes.ecritNodeAnalyse) {
+//
+//
+//
+//
// Run.ecritureNodeEnXML(nodStudent, "fichier student","",false,""); //écriture du node nodStudent de l'étudiant
// node ana = analyseFichier.analyse(nodStudent, commandes.sujet, i, a, txt,texteAfficher);
// try {
@@ -219,26 +219,26 @@ public class evaluerLesFichiersEtudiants implements Runnable{
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
- //**************************************************
- //** Ecriture des fichiers d'analyse des students **
- //**************************************************
- if(commandes.ecritNodeAnalyse) {
-
-
-
+// //**************************************************
+// //** Ecriture des fichiers d'analyse des students **
+// //**************************************************
+// if(commandes.ecritNodeAnalyse) {
+//
+//
+//
// try {
//// Run.ecritureNodeEnXML(ana, "nodana"+ana.retourneFirstEnfantsByName("ouverture").getAttributs().get("dossier"),commandes.path,Run.TypeFile.Analyse);
// } catch (IOException e) {
// e.printStackTrace();
// }
- }
-
- //****************************
- //** Création des feedbacks **
- //****************************
- if(!commandes.sansFeeback&&!commandes.ecritNodeAnalyse) {
- if(!commandes.zipfeedback) {
- //feedback(ana, verif); //classique directement dans le répertoire
+// }
+//
+// //****************************
+// //** Création des feedbacks **
+// //****************************
+// if(!commandes.sansFeeback&&!commandes.ecritNodeAnalyse) {
+// if(!commandes.zipfeedback) {
+// //feedback(ana, verif); //classique directement dans le répertoire
// try {
//// feedbacks.feedback(ana,verif, false,false);
// } catch (IOException e) {
@@ -246,8 +246,8 @@ public class evaluerLesFichiersEtudiants implements Runnable{
// } catch (ParseException e) {
// e.printStackTrace();
// }
- }
- if(commandes.zipfeedback) { // Dans une archive pour Moodle
+// }
+// if(commandes.zipfeedback) { // Dans une archive pour Moodle
// try {
//// a.AddStreamToZip(feedbacks.feedback(ana, verif, true,false), meptl.retourneLeNomDuFeedback(a.getLectDossiers().getEC().getListeNomFichierFeedBack().get(i),ana, verif),commandes.analyse_size,commandes.analyse_nameZip);
// // Modification imposé par Moodle 4
@@ -265,20 +265,20 @@ public class evaluerLesFichiersEtudiants implements Runnable{
// } catch (ParseException e) {
// e.printStackTrace();
// }
- }
- }
-
- //********************************************************************************
- //** Ajoute au node ensembleanalyse lorsque -csv file.csv ou -verifcsv file.scv **
- //********************************************************************************
+// }
+// }
+//
+// ********************************************************************************
+// ** Ajoute au node ensembleanalyse lorsque -csv file.csv ou -verifcsv file.scv **
+// ********************************************************************************
// if(commandes.ecritNoteCSV) ensembleanalyse.addNode(ana);
-
+//
//*********************************************************
//** Message dans la console sur l'analyse de l'étudiant **
//*********************************************************
// commandes.message.append(meptl.messageSystem(ana).toString());
- }
- }
+// }
+// }
//
//
//
@@ -324,11 +324,8 @@ public class evaluerLesFichiersEtudiants implements Runnable{
// verificationFichierAnalyse_node_commandesSujet.messagMiseAJourFichierAnalyseAprèsAnalyse();
// }
//
- txt.setContentType("text/html");
- txt.setText(commandes.message.toString());
-
- }
+// txt.setContentType("text/html");
+// txt.setText(commandes.message.toString());
+//
+// }
-
-
-}
diff --git a/src/evaluer/evaluerNodesClasseurStudent.java b/src/evaluer/evaluerNodesClasseurStudent.java
index cf46654..339a087 100644
--- a/src/evaluer/evaluerNodesClasseurStudent.java
+++ b/src/evaluer/evaluerNodesClasseurStudent.java
@@ -8,15 +8,22 @@ public class evaluerNodesClasseurStudent {
private node nAna = new node();
private node nodeEtudiant = new node();
+ /**
+ * Evaluer les fichiers des étudiants.
+ * Commence par évaluer les feuilles (nodes colonne, lignes puis cellules).
+ * Puis evalue le node graphic par le nomObjet="nameObject".
+ * @param ana
+ * @param nodStudent
+ */
public evaluerNodesClasseurStudent(node ana, node nodStudent) {
nodeEtudiant = nodStudent;
nAna = ana;
evaluerLesFeuilles();
- nAna.getAttributs().put("test", "reussi");
+ evaluerLesGraphics();
}
/**
- * Evaluer les feuilles les unes après les autres.
+ * Evaluer les feuilles les unes après les autres.
*/
private void evaluerLesFeuilles() {
for (node feuilleSujet : commandes.sujet.retourneAllEnfants("feuille")) {
@@ -30,6 +37,21 @@ public class evaluerNodesClasseurStudent {
}
}
+ /**
+ * Evaluer les graphics les uns après les autres.
+ */
+ private void evaluerLesGraphics() {
+ for (node graphicSujet : commandes.sujet.retourneAllEnfants("graphic")) {
+ if(graphicSujet.isEvaluer()) {
+ node graphicEtudiant = trouveLeGraphicEtudiant(graphicSujet.getAttributs().get("nomObjet"),graphicSujet.getAttributs().get("TitreGraphique"), graphicSujet.getAttributs().get("type") );
+ node anaGraphic = new node("graphic");
+ anaGraphic.getAttributs().put("nomObjet", graphicSujet.getAttributs().get("nomObjet"));
+ nAna.addEnfant(anaGraphic);
+ new evaluerAttributs(graphicSujet, graphicEtudiant , nAna);
+ }
+ }
+ }
+
/**
* Trouve la feuille de l'étudiant.
* @param nomFeuille
@@ -39,6 +61,19 @@ public class evaluerNodesClasseurStudent {
return nodeEtudiant.retourneFirstEnfant("feuille", "nomFeuille", nomFeuille);
}
+ /**
+ * Trouve le graphic de l'étudiant.
+ * @param nomObjet
+ * @return
+ */
+ private node trouveLeGraphicEtudiant(String nomObjet, String TitreGraphic, String type) {
+ node graph = nodeEtudiant.retourneFirstEnfant("graphic", "nomObjet", nomObjet);
+ if(graph==null) graph = nodeEtudiant.retourneFirstEnfant("graphic", "TitreGraphique", TitreGraphic);
+ if(graph==null) graph = nodeEtudiant.retourneFirstEnfant("graphic", "type", type);
+ if(graph==null) graph = nodeEtudiant.retourneFirstEnfant("graphic");
+ return graph;
+ }
+
/**
* Evaluer les colonnes les unes après les autres.
* @param feuilleSujet
@@ -66,6 +101,8 @@ public class evaluerNodesClasseurStudent {
}
}
+
+
public node getAnalyse() {
return nAna;
}
diff --git a/src/outils/outils.java b/src/outils/outils.java
index 6e55fc9..e018ec1 100644
--- a/src/outils/outils.java
+++ b/src/outils/outils.java
@@ -11,53 +11,109 @@ import xml.node;
public class outils {
-// private int pointsClass = 0;
-// private int pointTotal=0;
-// private int pointEnJeu = 0;
-
/**
- * Compare les String A et B.
- * La String B contient le poids de la note après le symbole ‽
- * Les String ne sont pas nettoyées avant comparaisons.
+ * Compare les String ValeurSujet et ValeurEtudiant.
+ * La String ValeurSujet contient la note après le symbole ‽.
*
- * @param A : String du fichier remis
- * @param B : string du fichier consigne (sujet) avec le symbole ‽ pour la notation
- * @return une String contenant "Correct" , "Erreur" ou "Optionnel".
- * @throws UnsupportedEncodingException
+ * @param nomNode : nom du node.
+ * @param key : nom de l'attribut.
+ * @param ValeurEtudiant : Valeur de l'attribut du fichier remis.
+ * @param ValeurSujet : Valeur de l'attribut du fichier consigne (sujet) avec le symbole ‽ pour la notation.
+ * @return le node resultat.
*/
public node Compare(String nomNode, String key , String ValeurSujet , String ValeurEtudiant){
if(ValeurEtudiant==null) ValeurEtudiant="";
resultatNotationParComparaison resultat = new resultatNotationParComparaison(false, false, nomNode, key, ValeurSujet, ValeurEtudiant, 0, 0);
+ // Recupération des points et suppression de texte ‽point.
if (ValeurSujet != null && ValeurSujet.contains("‽")) {
TraitePoint(ValeurSujet, resultat);
ValeurSujet = ValeurSujet.substring(0, ValeurSujet.indexOf("‽"));
}
-
+
+ // Retourne le resultat si optionnel (point = 0 par défaut).
if(resultat.isOptionnel()) {
return resultat.getResultat();
}
+
- //intervalles de valeurs avec le symbole →
+ // Nettoyer les textes des caractères spéciaux et chiffre.
+ // Puis égalité strict entre ValeurSujet et ValeurEtudiant.
+ if(ValeurSujet.contains("↑")) {
+ ValeurSujet = nettoyerTexte(ValeurSujet);
+ ValeurEtudiant = nettoyerTexte(ValeurEtudiant);
+ return egaliteStrict(ValeurSujet,ValeurEtudiant,resultat);
+ }
+
+ // Intervalles de valeurs avec le symbole →
if(ValeurSujet.contains("→")) {
- return Intervalle(ValeurEtudiant,ValeurSujet, resultat).getResultat();
+ return Intervalle(ValeurEtudiant,ValeurSujet, resultat);
}
- // Egalité entre les deux valeurs
- if (ValeurEtudiant.equals(ValeurSujet)) {
- resultat.setCorrect(true);
- resultat.setPoint(resultat.getTotal());
- return resultat.getResultat();
- }else {
- resultat.setCorrect(false);
- resultat.setPoint(0);
- return resultat.getResultat();
+ // Contient exactement.
+ if(ValeurSujet.contains("¦")) {
+ return containsExact(ValeurSujet, ValeurEtudiant,resultat);
}
+ // par défaut
+ return egaliteStrict( ValeurSujet, ValeurEtudiant, resultat);
}
+ /**
+ * Compare les string `ValeurSujet` et `ValeurEtudiant`.
+ * @param ValeurSujet
+ * @param ValeurEtudiant
+ * @param resultat
+ */
+ private node egaliteStrict(String ValeurSujet, String ValeurEtudiant, resultatNotationParComparaison resultat) {
+ if (ValeurEtudiant.equals(ValeurSujet)) {
+ resultat.setCorrect(true);
+ resultat.setPoint(resultat.getTotal());
+ }else {
+ resultat.setCorrect(false);
+ resultat.setPoint(0);
+ }
+ return resultat.getResultat();
+ }
+
+
+ /**
+ * Vérifie si la chaîne `ValeurSujet` est contenue de manière exacte dans `value2` entre des délimiteurs `|`.
+ *
+ * @param ValeurSujet La valeur à rechercher.ValeurEtudiant.
+ * @param ValeurEtudiant La chaîne de recherche au format.
+ * @return true si `ValeurSujet` est trouvé entre les `|`, false sinon.
+ */
+ public node containsExact(String ValeurSujet, String ValeurEtudiant, resultatNotationParComparaison resultat) {
+ // Vérification si les deux valeurs ne sont pas nulles
+ if (ValeurSujet == null || ValeurEtudiant == null) {
+ resultat.setOptionnel(true);
+ resultat.setPoint(0);
+ resultat.setTotal(0);
+ throw new IllegalArgumentException("Les deux valeurs ne doivent pas être nulles.");
+ }
+
+ // Utilisation de split() avec le caractère ¦
+ String[] parties = ValeurSujet.split("¦");
+
+ for (int i = 0; i < parties.length; i++) {
+ System.out.println("Partie " + (i + 1) + ": " + parties[i]);
+
+ // Formater la valeur recherchée avec les séparateurs |...|
+ String pattern = parties[i] ;
+ // Vérifie si le motif exact est dans la chaîne de recherche
+ if( ValeurEtudiant.contains(pattern)) {
+ resultat.setOptionnel(false);
+ resultat.setCorrect(true);
+ resultat.setPoint(resultat.getTotal());
+ }
+ }
+
+ return resultat.getResultat();
+ }
+
/**
* Compare les String A et B.
@@ -91,16 +147,11 @@ public class outils {
-
-
-
-
-
- private resultatNotationParComparaison Intervalle(String A, String Sujet, resultatNotationParComparaison resultat) {
+ private node Intervalle(String A, String Sujet, resultatNotationParComparaison resultat) {
if (A == null || A.isEmpty() || Sujet == null || Sujet.isEmpty()) {
resultat.setCorrect(false);
resultat.setPoint(0);
- return resultat;
+ return resultat.getResultat();
}
try {
@@ -116,7 +167,7 @@ public class outils {
resultat.setOptionnel(true);
resultat.setPoint(0);
resultat.setTotal(0);
- return resultat;
+ return resultat.getResultat();
}
// Nettoyer les bornes et la valeur A
@@ -133,7 +184,7 @@ public class outils {
if (valueA >= lowerBound && valueA <= upperBound) {
resultat.setCorrect(true);
resultat.setPoint(resultat.getTotal());
- return resultat;
+ return resultat.getResultat();
}
} catch (NumberFormatException e) {
String key = resultat.getDescription();
@@ -142,7 +193,7 @@ public class outils {
resultat.setOptionnel(true);
resultat.setPoint(0);
resultat.setTotal(0);
- return resultat;
+ return resultat.getResultat();
} catch (Exception e) {
}
@@ -153,7 +204,7 @@ public class outils {
resultat.setOptionnel(true);
resultat.setPoint(0);
resultat.setTotal(0);
- return resultat;
+ return resultat.getResultat();
}
@@ -198,52 +249,23 @@ public class outils {
}
+
+
/**
- * Tritaement des tollérance et des OU exact
- * @param A
- * @param Sujet
- * @return
- */
- private String TraitementIntervalleOUExact(String A, String Sujet) {
-
- if(A.length()==0) {
- return "Erreur : ";
- }
+ * Supprime tous les caractères spéciaux et les chiffres d'une chaîne de texte.
+ * @param texte Le texte d'entrée à nettoyer.
+ * @return Le texte nettoyé ne contenant que des lettres (A-Z, a-z).
+ */
+ public String nettoyerTexte(String texte) {
+ if (texte == null) {
+ return "";
+ }
+ // Remplace tous les caractères qui NE sont PAS des lettres (A-Z, a-z) par une chaîne vide
+ return texte.replaceAll("[^a-zA-Z]", "");
+ }
+
+
- String TextB[] = Sujet.split("¦");
- for(int i=0;i=b0 ) return "Correct : ";
-
- }
-
-
- return "Erreur : ";
- }
@@ -316,18 +338,7 @@ public class outils {
if(TraitementCouleur(couleurA, couleurB).equals("Correct : ")) {
couleur =true;
}
-// int Ared = Integer.parseInt(couleurA.substring(0, 2),16);
-// int Agreen = Integer.parseInt(couleurA.substring(2, 4),16);
-// int Ablue = Integer.parseInt(couleurA.substring(4, 6),16);
-//
-// int Bred = Integer.parseInt(couleurB.substring(0, 2),16);
-// int Bgreen = Integer.parseInt(couleurB.substring(2, 4),16);
-// int Bblue = Integer.parseInt(couleurB.substring(4, 6),16);
-//
-// // couleur dominante
-// if(Ared>Agreen+10 && Ared>Ablue+10 && Bred>Bgreen+10 && Bred>=Bblue+10) couleur=true;
-// if(Agreen>Ared+10 && Agreen>Ablue+10 && Bgreen>Bred+10 && Bgreen>Bblue+10) couleur = true;
-// if(Ablue>Ared+10 && Ablue>Agreen+10 & Bblue>Bred+10 && Bblue>Bgreen+10) couleur = true;
+
}
if(taille && type && couleur) return "Correct : ";
@@ -386,6 +397,11 @@ public class outils {
return false;
}
+
+
+
+
+
/**
* Traitement des conditions OU
* @param A
diff --git a/src/outils/resultatNotationParComparaison.java b/src/outils/resultatNotationParComparaison.java
index 759f6e5..a339f0a 100644
--- a/src/outils/resultatNotationParComparaison.java
+++ b/src/outils/resultatNotationParComparaison.java
@@ -14,7 +14,17 @@ public class resultatNotationParComparaison {
private int total; //
private node resultat = new node("resultat");
- // **Constructeur**
+ /**
+ * Resultat de l'évaluation.
+ * @param optionnel : par defaut la valeur est false.
+ * @param correct : par défaut la valeur est false.
+ * @param nomNode : le nom du node qui contient l'attribut.
+ * @param description : le nom de l'attribut.
+ * @param valeurSujet : la valeur de l'attribut dans le sujet.
+ * @param valeurEtudiant : la valeur de l'attribut dans le fihcier étudiant.
+ * @param point : les points gagngés par l'étudiant.
+ * @param total : le nombre de point si correct juste.
+ */
public resultatNotationParComparaison(boolean optionnel ,boolean correct, String nomNode, String description, String valeurSujet, String valeurEtudiant, int point, int total) {
this.optionnel = optionnel;
this.correct = correct;
diff --git a/src/xml/ecritureFileXML.java b/src/xml/ecritureFileXML.java
index 47ac3df..a90047b 100644
--- a/src/xml/ecritureFileXML.java
+++ b/src/xml/ecritureFileXML.java
@@ -13,7 +13,6 @@ import java.nio.file.Paths;
public class ecritureFileXML {
-
public static boolean write(node nodeWrite, String nameFileWithExt) {
String directoryName = Paths.get("").toAbsolutePath().toString();
File file = new File(directoryName + "\\" + nameFileWithExt) ;