This commit is contained in:
pablo rodriguez 2022-04-25 14:54:45 +02:00
parent 843210cb67
commit 6f70638576
5 changed files with 107 additions and 96 deletions

Binary file not shown.

View File

@ -23,7 +23,7 @@ public class commandes {
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
public static boolean ecritSujet = false; // ecriture 2 du code du sujet
public static boolean ecritSujet = false; // ecriture 2 du code du sujet, uniquement les nodes évalués
public static boolean ecritNoteCSV = false; // ecriture note.csv
public static boolean sansFeeback = false; // pas de feedback étudiant
public static boolean verifHisto = false; // vérification des historiques correspond à la commande -verif

View File

@ -66,36 +66,44 @@ public class meptl {
//** les commandes
new commandes(args,patch);
//** Chargement du node sujet (fichier d'analyse)
node nodeSujet = new node();
//** Nouveau node qui permet de convertir le fichier contenant la liste des étudiants en node.
node nodeCSV = null;
//** 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
node nodeSujet = new node();
if(!commandes.ecritCode && commandes.analyse) {
nodeSujet = chargementsujet(a, commandes.nameSujet);
commandes.culture = nodeSujet.retourneFirstEnfantsByName("setting").getAttributs().get("culture"); //récupère la culture de l'utilisateur
//** La méthode verificationFichier Analyse permet de détecter des erreurs dans le fichier d'analyse
new verificationFichierAnalyse(nodeSujet);
if(verificationFichierAnalyse.erreur==true) verificationFichierAnalyse.clotureWithErrorInanalyzeFile();
//a.ecritureNodeEnXML(nodeSujet, "sujet","",false); // ecriture du node sujet
//** Ecriture d'un nouveau sujet. Uniquement les nodes évalués.
if(commandes.ecritSujet) {
a.ecritureNodeEnXML(nodeSujet, "sujet","",false, "Sujet"); // ecriture du node sujet
a.ecritureNodeEnXML(nodeSujet, "sujet","",false, "Sujet"); // ecriture du node sujet. Uniquement les nodes évalués.
System.out.println();
System.out.println("\tWriting of the \"sujet.xml\" file completed.");
System.out.println("\tUn nouveau fichier \"sujet.xml\" a été créé dans le dossier courant.");
commandes.clotureApplication();
System.exit(0);
}
//** 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
outils.chargeTraduction(nodeSujet.retourneFirstEnfantsByName("translation"));
try {
//** 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
outils.chargeTraduction(nodeSujet.retourneFirstEnfantsByName("translation"));
// Charge les nouvelles tolérances du nombre de caractère et du texte pour la recherche et la comparaison des textes.
if(nodeSujet.containElementByName("text:similarity")) {
node similarity = nodeSujet.retourneFirstEnfantsByName("text:similarity");
@ -116,19 +124,22 @@ public class meptl {
if(color.getAttributs().get("tolerance_vert") != null) commandes.tolerance_vert= Integer.valueOf(color.getAttributs().get("tolerance_vert"));
if(color.getAttributs().get("tolerance_bleu") != null) commandes.tolerance_bleu= Integer.valueOf(color.getAttributs().get("tolerance_bleu"));
}
//** Chargement et verification du CVS fourni
if(commandes.fourniCSV) {
nodeCSV = chargementFichierCSV(a, commandes.nameCSV);
}
}catch (Exception e) {
System.out.println(e);
}
}
//** Nouveau node qui permet de convertir le fichier contenant la liste des étudiants en node.
node nodeCSV = null;
//** Chargement et verification du CVS fourni
if(commandes.fourniCSV) {
nodeCSV = chargementFichierCSV(a, commandes.nameCSV);
}
//** Vérification des historiques
node verif = new node();
@ -157,7 +168,6 @@ public class meptl {
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
@ -221,6 +231,7 @@ public class meptl {
//a.ecritureNodeEnXML(ensembleanalyse, "ensembleAnalyse"); //écriture du node de l'étudiant
}
//** bye bye analyseWriter
commandes.clotureApplication();
}

View File

@ -13,25 +13,23 @@ public class verificationFichierAnalyse {
public verificationFichierAnalyse(node Sujet) throws CloneNotSupportedException{
if(Sujet==null) {
System.out.println();
System.out.println("**-** Error, the analysis file is null.");
System.out.println("**-** Erreur, le fichier d'analyse est null.");
System.out.println();
clotureWithErrorInanalyzeFile();
}
//vérification des attributs du node fichier
//** Vérification des attributs du node fichier
if(Sujet.getAttributs().size()>0) {
verificationNodeFichier(Sujet.getAttributs());
}else {
System.out.println();
System.out.println("**-** ERROR in the analysis file.");
System.out.println("* The node \"fichier\" does not contain any attributes.");
System.out.println("**-** Erreur, le fichier d'analyse est vide.");
System.out.println();
erreur=true;
}
//Vérification des attributs du node style:paragraph et vérification style de paragraphe par défaut
//** Vérification des attributs du node style:paragraph et vérification style de paragraphe par défaut
if(Sujet.retourneEnfantsByNameExist("style:paragraph")) {
verificationNodeEvaluate(Sujet.retourneFirstEnfantsByName("style:paragraph").getAttributs(),"style:paragraph");
if(Sujet.retourneFirstEnfantsByName("style:paragraph").retourneEnfantsByNameExist("style:default-style")) {
@ -105,12 +103,10 @@ public class verificationFichierAnalyse {
private static void verificationNodeFichier(Dictionary<String, String> attribut) {
// le node fichier ne doit pas avoir un attribut addmenu="true"
if(attribut.get("addmenu")!=null) if(attribut.get("addmenu").equals("true")) {
if(attribut.get("addmenu")!=null) {
System.out.println();
System.out.println("**-** ERROR in the analysis file at node \"fichier\".");
System.out.println("The \"fichier\" node must not have the attribute \"addmenu = true\".");
System.out.println("This node not allowed to create a menu.");
System.out.println("Only main nodes can have this attribute with this value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"fichier\".");
System.out.println("Le node \"fichier\" ne doit pas contenir l'attribut \"addmenu = true\".");
System.out.println();
erreur=true;
}
@ -118,17 +114,17 @@ public class verificationFichierAnalyse {
// le node fichier doit avoir l'attribut evaluer=true
if(attribut.get("evaluer")==null) {
System.out.println();
System.out.println("**-** ERROR in the analysis file at node \"fichier\".");
System.out.println("The \"fichier\" node must contain the attribute \"evaluer = true\".");
System.out.println("This attribute has been deleted or has been renamed.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"fichier\".");
System.out.println("Le node \"fichier\" doit contenir evaluer=\"true\".");
System.out.println("l'attribut \"evaluer\" a été supprimé.");
System.out.println();
erreur=true;
}else {
if(!attribut.get("evaluer").equals("true")) {
System.out.println();
System.out.println("**-** ERROR in the analysis file at node \"fichier\".");
System.out.println("The \"fichier\" node must contain the attribute \"evaluer = true\".");
System.out.println("The value of this attribute is not correct.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"fichier\".");
System.out.println("Le node \"fichier\" doit contenir evaluer=\"true\".");
System.out.println("La valeur doit être TRUE.");
System.out.println();
erreur=true;
}
@ -137,18 +133,19 @@ public class verificationFichierAnalyse {
// le node fichier doit contenir l'attribut metaSujet et une valeur autre que le point d'interrogation ou vide
if(attribut.get("metaSujet")==null) {
System.out.println();
System.out.println("**-** ERROR in the analysis file at node \"fichier\".");
System.out.println("The \"fichier\" node must contain the attribute \"sujetMeta\".");
System.out.println("This attribute has been deleted or has been renamed.");
System.out.println("This attribute must contain a value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"fichier\".");
System.out.println("Le node \"fichier\" doit contenir l'attribut \"sujetMeta\".");
System.out.println("L'attribut \"sujetMeta\" a été supprimé.");
System.out.println("Cet attribut doit contenir une valeur.");
System.out.println();
erreur=true;
}else {
if(attribut.get("evaluer").equals("?") || attribut.get("evaluer").isEmpty() ) {
System.out.println();
System.out.println("**-** ERROR in the analysis file at node \"fichier\".");
System.out.println("The \"sujetMeta\" node must contain a value other than \"?\" And not empty.");
System.out.println("In the custom properties of the ODF file, create the \"Sujet\" property and enter some text as the value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"fichier\".");
System.out.println("L'attribut \"sujetMeta\" doit contenir une valeur autre que \"?\" ou vide.");
System.out.println("Dans les propriétés personnalisées des fichiers ODF, vous pouvez ajouter la propriété \"Sujet\" et faire correspondre à cette valeur.");
System.out.println("Voir la documentation d'analyseWriter.");
System.out.println();
erreur=true;
}
@ -170,17 +167,17 @@ public class verificationFichierAnalyse {
if(attribut.get("addmenu")!=null) {
if(!attribut.get("addmenu").equals("true")) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \""+ nameNode +"\".");
System.out.println("The main node \"" + nameNode +"\" must contain the attribute \"addmenu=true\".");
System.out.println("For this version, it is necessary to create a summary and a menu for the main nodes.");
System.out.println("**-** Erreur dans le fichier d'analyse. Dans le node \""+ nameNode +"\".");
System.out.println("Le node principal \"" + nameNode +"\" doit contenir l'attribut \"addmenu=true\".");
System.out.println("Pour cette version, Il est necessaire de créer un lien de menu du node principal,(tableau de syntèse des feedback).");
System.out.println();
erreur=true;
}
}else {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \""+ nameNode +"\".");
System.out.println("The main node \"" + nameNode +"\" must contain the attribute \"addmenu=true\". This attribute has been deleted.");
System.out.println("For this version, it is necessary to create a summary and a menu for the main nodes.");
System.out.println("**-** Erreur dans le fichier d'analyse. Dans le node \""+ nameNode +"\".");
System.out.println("Le node principal \"" + nameNode +"\" doit contenir l'attribut \"addmenu=true\". Cet attribut a été supprimé.");
System.out.println("Pour cette version, Il est necessaire de créer un lien de menu du node principal,(tableau de syntèse des feedback).");
System.out.println();
erreur=true;
}
@ -203,9 +200,9 @@ public class verificationFichierAnalyse {
String k = key.nextElement();
if(structure.getAttributs().get(k).contains("")) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"structurepage\".");
System.out.println("The node " + nom + " must not have evaluated attributes.");
System.out.println("The node " + nom + " can have the attribut \"evaluer=true\" but any attributes values cannot contain \"\".");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"structurepage\".");
System.out.println("Le node " + nom + " ne peut pas contenir des attributs évalués.");
System.out.println("Le node " + nom + " peut contenir l'attribut \"evaluer=true\" ce qui permettra l'évaluation des nodes enfants mais aucun attribut de ce node sera évalué.");
System.out.println();
erreur= true;
}
@ -229,10 +226,9 @@ public class verificationFichierAnalyse {
String k = key.nextElement();
if(structure.getNodes().get(i).getAttributs().get(k).contains("")) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"structurepage\".");
System.out.println("The node " + nom + " must not have evaluated attributes.");
System.out.println("The node " + nom + " can have the attribut \"evaluer=true\" but any attributes values cannot contain \"\".");
System.out.println();
System.out.println("**-** Erreur dans le fichier d'analyse le node \"structurepage\".");
System.out.println("Le node " + nom + " ne peut pas contenir des attributs évalués.");
System.out.println("Le node " + nom + " peut contenir l'attribut \"evaluer=true\" ce qui permettra l'évaluation des nodes enfants mais aucun attribut de ce node sera évalué.");
System.out.println();
erreur= true;
}
@ -252,8 +248,8 @@ public class verificationFichierAnalyse {
if(setting.getAttributs().get("culture") != null) {
if(!setting.getAttributs().get("culture").equals("FR")) {
System.out.println();
System.out.println("**-** WARNING in analysis file at node \"setting\".");
System.out.println("The culture cannot be different than \"FR\".");
System.out.println("**-** Avertissement dans le fichier d'analyse le node \"setting\".");
System.out.println("La culture ne peutr pas être différent de \"FR\".");
System.out.println();
}
}
@ -279,16 +275,24 @@ public class verificationFichierAnalyse {
size = Long.valueOf(zip.getAttributs().get("size"));
}catch (Exception e) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The zip size cannot be different from a numeric value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("La taille du fichier doit être une valeur numérique.");
System.out.println();
erreur=true;
}
if(size<1000000) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The zip size is too low.");
System.out.println("The zip size should be bigger than 1Mo.");
System.out.println("**-** Erreur dans le fichier d'analyse \"setting\".");
System.out.println("La taille de l'archive ZIP est trop faible (supérieure à 1 000 000).");
System.out.println("La taille doit être supérieure à 1Mo.");
System.out.println();
erreur=true;
}
if(size>100000000) {
System.out.println();
System.out.println("**-** Erreur dans le fichier d'analyse \"setting\".");
System.out.println("La taille de l'archive ZIP est trop grande (inférieur à 100 000 000).");
System.out.println("La taille doit être inférieure à 100Mo.");
System.out.println();
erreur=true;
}
@ -299,8 +303,8 @@ public class verificationFichierAnalyse {
Matcher match= pt.matcher(name);
if(match.find()) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The name of the zip cannot contain a special character.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("Le nom de l'archive ne doit pas contenir de carcatères spéciaux.");
System.out.println();
erreur=true;
}
@ -315,15 +319,15 @@ public class verificationFichierAnalyse {
number_match = Integer.valueOf(plagiarism.getAttributs().get("number_match"));
}catch (Exception e) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The number of match must be a numeric value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("Le nombre de correspondance \"number_match\" doit être une valeur numérique.");
System.out.println();
erreur=true;
}
if(number_match<0) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The number of matches must be a positive numeric value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("Le nombre de correspondance \"number_match\" doit être unevaleur positive.");
System.out.println();
erreur=true;
}
@ -335,15 +339,15 @@ public class verificationFichierAnalyse {
mini_number_modification = Integer.valueOf(plagiarism.getAttributs().get("mini_number_modification"));
}catch (Exception e) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The minimum number of modifications must be a numeric value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("Le nombre minimum de modification \"mini_number_modification\" doit être une valeur numérique.");
System.out.println();
erreur=true;
}
if(mini_number_modification<-1) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The minimum number of modifications must be a positive numeric value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("Le nombre minimum de modification \"mini_number_modification\" doit être une valeur positive.");
System.out.println();
erreur=true;
}
@ -355,15 +359,15 @@ public class verificationFichierAnalyse {
nombres_modifications_simultané_maxi = Integer.valueOf(plagiarism.getAttributs().get("nombres_modifications_simultané_maxi"));
}catch (Exception e) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The nombres_modifications_simultané_maxi must be a numeric value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("Le nombre de modifications simultanées \"nombres_modifications_simultané_maxi\" doit être une valeur numérique.");
System.out.println();
erreur=true;
}
if(nombres_modifications_simultané_maxi<0) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The nombres_modifications_simultané_maxi must be a positive numeric value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("Le nombre de modifications simultanées \"nombres_modifications_simultané_maxi\" doit être une valeur positive.");
System.out.println();
erreur=true;
}
@ -381,15 +385,15 @@ public class verificationFichierAnalyse {
tolerance_characters = Integer.valueOf(similarity.getAttributs().get("tolerance_characters"));
}catch (Exception e) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The tolerance_characters is not an integer.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("La tolérance de catactère \"tolerance_characters\" n'est pas un entier.");
System.out.println();
erreur=true;
}
if(tolerance_characters<0) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The tolerance_characters must be a positive numeric value.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("La tolérance de catactère \"tolerance_characters\" doit être une valeur positive.");
System.out.println();
erreur=true;
}
@ -400,15 +404,15 @@ public class verificationFichierAnalyse {
tolerance_text = Double.valueOf(similarity.getAttributs().get("tolerance_text"));
}catch (Exception e) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The tolerance_text is not a numeric.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("La tolérance sur le texte (similitude) \"tolerance_text\" doit être un numérique compris entre 0.01 et 0.99.");
System.out.println();
erreur=true;
}
if(tolerance_text<0 || tolerance_text>1) {
System.out.println();
System.out.println("**-** ERROR in analysis file at node \"setting\".");
System.out.println("The tolerance_text must be between 0.01 and 0.99.");
System.out.println("**-** Erreur dans le fichier d'analyse le node \"setting\".");
System.out.println("La tolérance sur le texte (similitude) \"tolerance_text\" doit être un numérique compris entre 0.01 et 0.99.");
System.out.println();
erreur=true;
}
@ -416,10 +420,6 @@ public class verificationFichierAnalyse {
}
}
}
@ -430,10 +430,10 @@ public class verificationFichierAnalyse {
if(styleParagraphDefault.getAttributs().get("evaluer")!=null) {
if(styleParagraphDefault.getAttributs().get("evaluer").equals("true")) {
System.out.println();
System.out.println("**-** WARNING in analysis file at node \"style:default-style\".");
System.out.println("The node \"style:default-style\" must not contain \"evaluer=true\".");
System.out.println("Default values are added to the different nodes \"style:style\" that are evaluated.");
System.out.println("Read the documentation about the node \"style:paragraph\".");
System.out.println("**-** AVERTISSEMENT dans le fichier d'analyse, le node \"style:default-style\".");
System.out.println("Le node \"style:default-style\" ne doit pas contenir l'attribut \"evaluer=true\".");
System.out.println("Les valeurs par défaut dans les styles de paragraphe (les nodes \"style:style\") ont été ajouté.");
System.out.println("Lisez dans la documentation, les caractéristique du node principal \"style:paragraph\".");
System.out.println();
}
}