63db87da04
recherhce des nodes textuels
280 lines
11 KiB
Java
280 lines
11 KiB
Java
package fenetres;
|
|
|
|
import java.io.IOException;
|
|
|
|
import javax.swing.JEditorPane;
|
|
import javax.xml.parsers.ParserConfigurationException;
|
|
|
|
import org.xml.sax.SAXException;
|
|
|
|
import MEPTL.commandes;
|
|
import MEPTL.feedbacks;
|
|
import MEPTL.meptl;
|
|
import MEPTL.verificationFichierAnalyse;
|
|
import cXML.Run;
|
|
import cXML.node;
|
|
import calcul.calculIntervalleBaremeABCDE;
|
|
import evaluer.analyseFichier;
|
|
import net.lingala.zip4j.exception.ZipException;
|
|
|
|
public class evaluerLesFichiersEtudiants implements Runnable{
|
|
|
|
private final JEditorPane txt;
|
|
|
|
|
|
public evaluerLesFichiersEtudiants(JEditorPane txt) {
|
|
|
|
commandes.analyse=true;
|
|
this.txt=txt;
|
|
this.txt.setContentType("text/plain");
|
|
}
|
|
|
|
|
|
@Override
|
|
public synchronized void run() {
|
|
|
|
|
|
commandes.message = new StringBuilder();
|
|
commandes.message.append(baliseStyle.balise());
|
|
commandes.message.append("<hr><h1>*** LES FICHIERS DES ETUDIANTS ANALYSÉS ET ÉVALUÉS ***</h1><hr>");
|
|
commandes.message.append("<p>Dossier contenant les fichiers des étudiants.</p>");
|
|
commandes.message.append("<p><b>" + commandes.path + "</b></p>");
|
|
commandes.message.append("<br>");
|
|
if(commandes.analyse_baremeABC) {
|
|
commandes.message.append("<p>Barème alphabétique ABCDE.<p>");
|
|
commandes.message.append("<p>progression=" + String.valueOf(commandes.analyse_progression) + "<p>");
|
|
calculIntervalleBaremeABCDE C = new calculIntervalleBaremeABCDE(commandes.analyse_progression);
|
|
commandes.message.append("<p>" + C.getMessageLigne() +"</p>");
|
|
commandes.message.append("<br>");
|
|
}
|
|
if(commandes.zipfeedback) {
|
|
commandes.message.append("<p>Les feedbacks sont dans une archive ou des archives ZIP dans le dossier contenant les fichiers des étudiants.</p>");
|
|
commandes.message.append("<br>");
|
|
}
|
|
if(commandes.ecritNoteCSV) {
|
|
commandes.message.append("<p>Un fichiers CSV contenant les notes a été créé dans le dossier contenant les fichiers des étudiants.</p>");
|
|
commandes.message.append("<br>");
|
|
}
|
|
commandes.message.append("<hr>");
|
|
|
|
Run a = null;
|
|
try {
|
|
a = new Run(commandes.path,commandes.Profil, commandes.fichierStudentMoodle);
|
|
} catch (ParserConfigurationException e2) {
|
|
e2.printStackTrace();
|
|
} catch (SAXException e2) {
|
|
e2.printStackTrace();
|
|
} catch (IOException e2) {
|
|
e2.printStackTrace();
|
|
}
|
|
|
|
|
|
//**********************************************
|
|
//** Chargement et verification du CVS fourni **
|
|
//**********************************************
|
|
if(commandes.fourniCSV) {
|
|
commandes.nodeCSV = meptl.chargementFichierCSV();
|
|
}
|
|
|
|
|
|
//*****************************************
|
|
//** Nombre de fichier writer à analyser **
|
|
//*****************************************
|
|
int nbFichierWriter = a.getLectDossiers().getEC().getListeContentWriter().size();
|
|
commandes.analyse_Nbre_Fichier_Student = nbFichierWriter;
|
|
commandes.message.append("<br>");
|
|
commandes.message.append("<p>Nombre de fichier à analyser et évaluer : " + Integer.valueOf(nbFichierWriter) + "</p>");
|
|
commandes.message.append("<br>");
|
|
commandes.message.append("<hr>");
|
|
|
|
//***************************************
|
|
//** -verif ou -use file.xml -verifcsv **
|
|
//***************************************
|
|
node verif = new node();
|
|
if(commandes.verifHisto || commandes.verifHisto2) {
|
|
node verification = new node();
|
|
verification.setNomElt("verification");
|
|
verification.getAttributs().put("nombre_fichier", String.valueOf(a.getLectDossiers().getEC().getListeFichierodt().size()));
|
|
for(int i = 0 ; i < nbFichierWriter ; i++) {
|
|
txt.setText("\nChargement de l'historique du fichier n° " + String.valueOf(i) +" par comparaison avec les "+ String.valueOf(nbFichierWriter-1) + " autres fichiers");
|
|
node nod = Run.XMLContent(a.getLectDossiers().getEC().getListeContentWriter().get(i));
|
|
node nodStudent = meptl.LectureFichierEtudiantPourVerification(nod,a,i);
|
|
verification.getNodes().add(nodStudent);
|
|
}
|
|
//a.ecritureNodeEnXML(verification, "VerificationHistorique","",false); //écriture du node de l'étudiant
|
|
txt.setText("\nRecherche des concordances temporelles et d'auteur dans l'historique des modifications des " + nbFichierWriter + " fichiers."
|
|
+ "\nPatientez, cela peut prendre quelques secondes ou minutes.");
|
|
verif = meptl.verificationHistorique(verification, a); // vérification des correspondances entre les fichiers
|
|
|
|
//********************************
|
|
//** Ecriture du node verif.xml **
|
|
//********************************
|
|
try {
|
|
Run.ecritureNodeEnXML(verif, "Verif",commandes.path, "Verif");
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
} //écriture du node de vérification
|
|
commandes.message.append("<br>");
|
|
commandes.message.append("<hr><h1> *** Ecriture du fichier Verif.xml dans le dossier d'analyse *** </h1><hr>");
|
|
commandes.message.append("<br>");
|
|
if(!commandes.analyse) {
|
|
//** bye bye analyseWriter
|
|
commandes.clotureApplication();
|
|
}
|
|
}
|
|
|
|
//*********************************************************
|
|
//** Node contenant l'ensemble des analyses des étudiants **
|
|
//*********************************************************
|
|
node ensembleanalyse = new node();
|
|
ensembleanalyse.setNomElt("analyses");
|
|
|
|
//*****************************************************
|
|
//** Parcours l'ensemble des fichiers des étudiants ***
|
|
//*****************************************************
|
|
for(int i = 0 ; i < nbFichierWriter ; i++) {
|
|
txt.setText("\nEvaluation du fichier n° " + String.valueOf(i+1) +"/"+ String.valueOf(nbFichierWriter) + " fichier(s)");
|
|
|
|
//index de l'étudiant
|
|
commandes.analyse_index_Fichier_Student = 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.
|
|
if(commandes.fourniDossierDestination) if(a.getLectDossiers().getEC().getListeNomDossier().get(i).equals(commandes.pathDestination)) continue;
|
|
|
|
//***********************************************************
|
|
//** Lecture et transformation en node du fichier étudiant **
|
|
//***********************************************************
|
|
node nod = Run.XMLContent(a.getLectDossiers().getEC().getListeContentWriter().get(i));
|
|
node nodStudent=null;
|
|
try {
|
|
//Supprime l'historique des modifications
|
|
nod.supprimeTousLesNodesEnfantWithThisName("text:tracked-changes");
|
|
//Création du node de l'étudiant
|
|
nodStudent = meptl.LectureFichierEtudiantSousFormeDeNode(nod,a,i);
|
|
} catch (IOException e1) {
|
|
e1.printStackTrace();
|
|
}
|
|
|
|
//Ecriture du node fichier de l'étudiant
|
|
// try {
|
|
// Run.ecritureNodeEnXML(nodStudent, a.getLectDossiers().getEC().getListeNomDossier().get(i),commandes.path,"Sujet");
|
|
// } catch (IOException e1) {
|
|
// // TODO Auto-generated catch block
|
|
// e1.printStackTrace();
|
|
// }
|
|
|
|
|
|
//**********************************
|
|
//** Analyse des fichiers student **
|
|
//**********************************
|
|
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);
|
|
// try {
|
|
// Run.ecritureNodeEnXML(ana, "analyse", commandes.path, "");
|
|
// } catch (IOException e1) {
|
|
// // TODO Auto-generated catch block
|
|
// e1.printStackTrace();
|
|
// }
|
|
//**************************************************
|
|
//** Ecriture des fichiers d'analyse des students **
|
|
//**************************************************
|
|
if(commandes.ecritNodeAnalyse) {
|
|
try {
|
|
Run.ecritureNodeEnXML(ana, "nodana"+ana.retourneFirstEnfantsByName("ouverture").getAttributs().get("dossier"),commandes.path,"");
|
|
} 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
|
|
try {
|
|
feedbacks.feedback(ana,verif, false,false);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
if(commandes.zipfeedback) { // Dans une archive pour Moodle
|
|
try {
|
|
System.out.println("feedback zippé.");
|
|
a.AddStreamToZip(feedbacks.feedback(ana, verif, true,false), meptl.retourneLeNomDuFeedback(a.getLectDossiers().getEC().getListeNomFichierFeedBack().get(i),ana, verif),commandes.analyse_size,commandes.analyse_nameZip);
|
|
} catch (ZipException e) {
|
|
e.printStackTrace();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
//********************************************************************************
|
|
//** 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());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//*****************************************************
|
|
//** Exportation au format CSV si -csv ou -verifcsv **
|
|
//*****************************************************
|
|
if(commandes.ecritNoteCSV && !commandes.fourniCSV) {
|
|
if(!commandes.verifHisto2)
|
|
try {
|
|
meptl.ecritureCSV(ensembleanalyse);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
if(commandes.verifHisto2)
|
|
try {
|
|
meptl.ecritureCSV(ensembleanalyse,verif,a,commandes.sujet.retourneFirstEnfantsByName("setting"));
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
//***********************************************************************
|
|
//** Exportation au format CSV si -csv file.csv ou -verifcsv file.csv **
|
|
//***********************************************************************
|
|
if(commandes.ecritNoteCSV && commandes.fourniCSV) {
|
|
try {
|
|
meptl.ecritureCSV(ensembleanalyse,verif,a,commandes.nodeCSV, commandes.sujet.retourneFirstEnfantsByName("setting"));
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
//a.ecritureNodeEnXML(ensembleanalyse, "ensembleAnalyse"); //écriture du node de l'étudiant
|
|
}
|
|
|
|
//**************************************
|
|
//** Mise à jour du fichier d'analyse **
|
|
//**************************************
|
|
if(commandes.MAJFichierAnalyse||commandes.MAJnameAnalysisFile) {
|
|
try {
|
|
verificationFichierAnalyse.MiseAJourFichierAnalyse();
|
|
} catch (CloneNotSupportedException | IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
verificationFichierAnalyse.messagMiseAJourFichierAnalyseAprèsAnalyse();
|
|
}
|
|
|
|
txt.setContentType("text/html");
|
|
txt.setText(commandes.message.toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|