This commit is contained in:
pablo rodriguez 2022-04-25 13:44:14 +02:00
parent 4f93f244ad
commit 843210cb67
6 changed files with 66 additions and 60 deletions

1
bin/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/MEPTL/

Binary file not shown.

Binary file not shown.

View File

@ -9,7 +9,7 @@ import cXML.node;
/**
*
* @author pablo rodriguez
* @author pablo rodriguez - 2000
*
*/
public class HTML {

View File

@ -19,6 +19,7 @@ import cXML.Run.UserStatus;
*/
public class commandes {
//** Les commandes par défaut
static String nameSujet = ""; //sujet par défaut
public static boolean analyse = false; //analyse des fichiers étudiants
public static boolean ecritCode = false; // ecriture du code du sujet
@ -29,22 +30,23 @@ public class commandes {
public static boolean verifHisto2 = false; // vérification des historiques lorsqu'il y a aussi analyse
public static boolean fourniCSV = false; // fourni le fichier CSV contenant la liste des étudiants
public static boolean badCommand = false ; //erreur dans les commandes
public static boolean noNote =false;
public static boolean noLogo =false;
public static boolean newLogo=false;
public static boolean licence = false;
public static boolean noNote =false; // pas de note dans les feedbacks
public static boolean noLogo =false; // pas de logo dans les feedbacks
public static boolean newLogo=false; // un nouveau logo dans le feedback
public static boolean licence = false; // affiche la licence
public static boolean zipfeedback = false; // Les feedback dans une archive ZIP
static cXML.Run.UserStatus Profil = cXML.Run.UserStatus.TEACHER ; //Le profil TEACHER permet de lire dans les dossiers contenus dans le répertoire courant de l'application. Le profil STUDENT permet de lire au niveau du répertoire courant de l'application.
public static boolean fourniDossierDestination = false; //répertoire de destination des feedbacks et CSV;
public static String nameCSV = ""; //le nom du fichier contenant la liste des étudiants
public static String nameSVG =""; //le nom du nouveau logo
public static String contenuFichierSVG ="";
public static String contenuFichierSVG =""; // Le nouveau logo
public static String path ="";
public static String pathDestination ="";
public static String version ="3.5.1";
public static String version ="3.5.1"; // La version
public static String Command ="";
public static String culture = "FR";
//setting valeur par défaut
//** setting valeur par défaut
public static int tolerance_characters = 5;
public static double tolerance_text = 0.79;
public static int number_match = 2;
@ -54,6 +56,7 @@ public class commandes {
public static int tolerance_vert = 30;
public static int tolerance_bleu = 30;
/**
*
* @param args : table des arguments

View File

@ -22,7 +22,6 @@ import java.util.Date;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -38,7 +37,7 @@ import net.lingala.zip4j.exception.ZipException;
/**
*
* @author pablo rodriguez
* @author pablo rodriguez
*
*
*/
@ -51,7 +50,7 @@ public class meptl {
/**
* Démarrage de l'application.<br>
* <br>
* @param args
* @param args : les commandes de l'application.
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
@ -60,20 +59,19 @@ public class meptl {
*/
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, CloneNotSupportedException, InterruptedException {
System.getProperty("file.encoding","UTF-8");
node nodeCSV = null; //Permet de convertir le fichier contenant la liste des étudiants en node
patch = System.getProperty("user.dir");
// patch = "C:/Users/pabr6/OneDrive/Desktop/Nouveau dossier";
//les commandes
//** les commandes
new commandes(args,patch);
//Lancement des lectures des dossiers
//** Lancement des lectures des dossiers
Run a = new Run(patch,commandes.Profil);
//chargement du node sujet (fichier d'analyse)
//La méthode verificationFichier Analyse permet de détecter des erreurs dans le fichier d'analyse
//** chargement du node sujet (fichier d'analyse)
//** La méthode verificationFichier Analyse permet de détecter des erreurs dans le fichier d'analyse
node nodeSujet = new node();
if(!commandes.ecritCode && commandes.analyse) {
nodeSujet = chargementsujet(a, commandes.nameSujet);
@ -89,12 +87,12 @@ public class meptl {
System.exit(0);
}
//Chargement du contenu du nouveau logo
//** Chargement du contenu du nouveau logo
if(commandes.newLogo && !commandes.nameSVG.isEmpty()) {
commandes.contenuFichierSVG= chargementFichierSVG(a,commandes.nameSVG);
}
//chargement du node translation qui se trouve dans le node setting
//** chargement du node translation qui se trouve dans le node setting
outils.chargeTraduction(nodeSujet.retourneFirstEnfantsByName("translation"));
try {
@ -124,10 +122,15 @@ public class meptl {
}
//chargement et verification du CVS fourni
if(commandes.fourniCSV) nodeCSV = chargementFichierCSV(a, commandes.nameCSV);
//** Nouveau node qui permet de convertir le fichier contenant la liste des étudiants en node.
node nodeCSV = null;
// vérification des historiques
//** Chargement et verification du CVS fourni
if(commandes.fourniCSV) {
nodeCSV = chargementFichierCSV(a, commandes.nameCSV);
}
//** Vérification des historiques
node verif = new node();
if(commandes.verifHisto || commandes.verifHisto2) {
int nbFichierWriter = a.getLectDossiers().getEC().getListeContentWriter().size();
@ -146,42 +149,42 @@ public class meptl {
}
//nombre de fichier writer à analyser
//** Nombre de fichier writer à analyser
int nbFichierWriter = a.getLectDossiers().getEC().getListeContentWriter().size();
System.getProperty("file.encoding","UTF-8");
//ensemble des analyses
//** Ensemble des analyses
node ensembleanalyse = new node();
ensembleanalyse.setNomElt("analyses");
for(int i = 0 ; i < nbFichierWriter ; i++) {
// Ne prends pas en compte le dossier destination créé par la commande -dest
// Si pas d'analyse alors le nom doit contenir le caractère $ dans le nom du dossier.
//** Ne prends pas en compte le dossier destination créé par la commande -dest
//** Si pas d'analyse alors le nom doit contenir le caractère $ dans le nom du dossier.
if(commandes.fourniDossierDestination)if(a.getLectDossiers().getEC().getListeNomDossier().get(i).equals(commandes.pathDestination)) continue;
//Chargement du format (content) et transformation en node pour l'application
//** Chargement du format (content) et transformation en node pour l'application
node nod = a.XMLContent(a.getLectDossiers().getEC().getListeContentWriter().get(i));
node nodStudent = LectureFichierEtudiantSousFormeDeNode(nod,a,i);
//a.ecritureNodeEnXML(nodStudent, a.getLectDossiers().getEC().getListeNomDossier().get(i),"",false); //écriture du node de l'étudiant
// ecriture d'une fichier d'analyse.
// commande -write
//** Ecriture d'une fichier d'analyse.
//** commande -write
if(commandes.ecritCode && ! commandes.verifHisto && !commandes.analyse) {
node nodSujet = nodePourEcritureSujet(nodStudent,a,i);
nodSujet = addSetting(nodSujet); // ajoute le node setting et translation
a.ecritureNodeEnXML(nodSujet, a.getLectDossiers().getEC().getListeNomDossier().get(i),"",false,"Sujet");
}
// analyse des fichiers student
//** Analyse des fichiers student
if(commandes.analyse) {
node init = InitialisationAvantAnalyse(nodeSujet);
if(!Boolean.valueOf(init.getAttributs().get("erreur"))) {
node ana = analyse(nodStudent, nodeSujet, i, a);
// a.ecritureNodeEnXML(ana, "nodana"+ana.retourneFirstEnfantsByName("ouverture").getAttributs().get("dossier"),"",false); //écriture du node analyse de l'étudiant
// création des feedbacks avec des tailles définies
//** Création des feedbacks avec des tailles définies
if(!commandes.sansFeeback) if(!commandes.zipfeedback) feedback(ana, verif); //classique directement dans le répertoire
if(!commandes.sansFeeback) if(commandes.zipfeedback) { // Dans une archive pour Moodle
try {
@ -207,7 +210,7 @@ public class meptl {
}
}
//exportation au format CSV
//** Exportation au format CSV
if(commandes.ecritNoteCSV && !commandes.fourniCSV) {
if(!commandes.verifHisto2) ecritureCSV(ensembleanalyse);
if(commandes.verifHisto2) ecritureCSV(ensembleanalyse,verif,a,nodeSujet.retourneFirstEnfantsByName("setting"));
@ -218,9 +221,8 @@ public class meptl {
//a.ecritureNodeEnXML(ensembleanalyse, "ensembleAnalyse"); //écriture du node de l'étudiant
}
//bye bye
//** bye bye analyseWriter
commandes.clotureApplication();
}
@ -2889,33 +2891,33 @@ public class meptl {
}
/**
* Analyse toutes les contenus des enfants et les compares.<br>
* Utiliser pour les nodes <text:p><br>
* <br>
* @param Student
* @param Sujet
* @param retour
* @param nameItem
* @param nameElt
* @param a
* @return
*/
private static node analyseLesContenusDesArrayList(ArrayList<node> Student, ArrayList<node> Sujet, node retour, String nameItem, String nameElt, Run a) {
for(int i = 0 ; i < Sujet.size();i++) {
String sujetContent = Sujet.get(i).retourneLesContenusEnfants("");
node StudentNode = a.retourneFirstNodeByFindContent2(Student, outils.withoutCodeAndPoint(sujetContent),commandes.tolerance_characters,commandes.tolerance_text);
String studentContent = "null";
if(StudentNode!=null) studentContent = outils.NetChiffreALaFin(StudentNode.retourneLesContenusEnfants(""));
node item = retourneNoteAvecResultatsAnalyse(nameItem, "Contenu textuel", studentContent, sujetContent,nameElt);
retour.getNodes().add(item);
}
return retour;
}
// /**
// * Analyse toutes les contenus des enfants et les compares.<br>
// * Utiliser pour les nodes <text:p><br>
// * <br>
// * @param Student
// * @param Sujet
// * @param retour
// * @param nameItem
// * @param nameElt
// * @param a
// * @return
// */
// private static node analyseLesContenusDesArrayList(ArrayList<node> Student, ArrayList<node> Sujet, node retour, String nameItem, String nameElt, Run a) {
//
// for(int i = 0 ; i < Sujet.size();i++) {
// String sujetContent = Sujet.get(i).retourneLesContenusEnfants("");
// node StudentNode = a.retourneFirstNodeByFindContent2(Student, outils.withoutCodeAndPoint(sujetContent),commandes.tolerance_characters,commandes.tolerance_text);
// String studentContent = "null";
// if(StudentNode!=null) studentContent = outils.NetChiffreALaFin(StudentNode.retourneLesContenusEnfants(""));
//
// node item = retourneNoteAvecResultatsAnalyse(nameItem, "Contenu textuel", studentContent, sujetContent,nameElt);
// retour.getNodes().add(item);
//
// }
//
// return retour;
// }
/**