analyseWriter/src/MEPTL/feedbacks.java
pablo rodriguez fe73a5f0c9 MAJ V4.4.0 (mise en place de la méthode marquenode. Cette méthode permet
d'afficher dans le feedback des étudiants les nom de tous les nodes
évalué même s'il n'y a pas de point.
Cette méthode est accéssible sur le click droite du node page)
2022-12-11 14:34:44 +01:00

571 lines
29 KiB
Java

package MEPTL;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.DateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cXML.node;
public class feedbacks {
public feedbacks() {
}
/**
* Ecriture du fichier feedback.<br>
* Si zip = true alors pour archive.<br>
* Si zip = false alors pour fichier html.<br>
* <br>
* @param nodana : node de l'analyse de l'étudiant.
* @param verif : node de vérification (ensemble des vérifications des historiques)
* @parame zip : Pour créer un fichier html ou une archive zip.
* @return
* @throws IOException
*/
public static StringBuilder feedback(node nodana, node verif, Boolean zip, Boolean TestFichierAnalyse) throws IOException {
System.getProperty("file.encoding","UTF-8");
Date aujourdhui = new Date();
int number_match = 2;
int mini_modification = 0;
boolean plagiat = false;
boolean copiercoller = false;
boolean pasAssezDeModification =false;
boolean baremeABC = false;
boolean producteur =false;
String SuiteBureautique="";
String VersionLibreOffice="";
String SystemeStudent="";
node verifStudent = null;
if((commandes.verifHisto||commandes.verifHisto2)) { //&&commandes.ecritNoteCSV&&commandes.fourniCSV
if(verif.getAttributs().get("number_match") != null) number_match = Integer.valueOf(verif.getAttributs().get("number_match"));
if(verif.getAttributs().get("mini_number_modification") != null) mini_modification = Integer.valueOf(verif.getAttributs().get("mini_number_modification"));
//verification du plagiat
verifStudent = verif.retourneFirstNodeByNameAndAttributValue("fichier", "dossier", nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("dossier"));
if(verifStudent != null) {
if(verifStudent.getAttributs().get("filename").equals(nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("filename"))) {
if(Integer.valueOf(verifStudent.getAttributs().get("nombre_correspondances_consecutives"))>number_match) plagiat=true;
if(!verifStudent.getAttributs().get("first_modification_identique").equals("null") && Integer.valueOf(verifStudent.getAttributs().get("nombre_correspondances_consecutives"))>=number_match) plagiat=true;
if(verifStudent.getAttributs().get("copier_coller")!=null) copiercoller=true;
if(Integer.valueOf(verifStudent.getAttributs().get("nombre_modification"))<=mini_modification) pasAssezDeModification=true;
}
}
}
if(nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("baremeABC")!=null) {
try {
baremeABC= Boolean.valueOf(nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("baremeABC"));
}catch (Exception e) {
System.out.println("Problème avec la valeur binaire de l'attribut baremeABC.");
}
}
StringBuilder fichier = new StringBuilder();
//ajoute le chemin vers le feedback dans le node d'analyse
//nodana.retourneFirstEnfantsByName("ouverture").getAttributs().put("feedback", patch + "/" + cheminFeedBack);
// auteur du sujet
String auteurSujet = nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("auteur");
//création du feedback
fichier.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\r"
+ "<html>\r"
+ "<head>\r"
+ "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\r"
+ "<title>Fichier généré par AnalyseWriter - Développeur : Pablo Rodriguez</title>\r");
fichier.append("\r<meta name=\"generator\" content=\"AnalyseWriter "+commandes.version+"\"/>"
+ "\r<meta name=\"author\" content=\""+auteurSujet+"\"/>"
+ "\r<meta name=\"created\" content=\""+ nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("date") +"\"/>");
fichier.append(HTML.getStyleCSS());
fichier.append("\r</head>\r");
fichier.append("<body lang=\"fr-FR\" link=\"#000080\" vlink=\"#800000\" dir=\"ltr\">\r");
fichier.append("<div class=\"header\">");
if(!commandes.noLogo) {
if(!commandes.newLogo) {
fichier.append("<h1 id=\"#top\" class=\"western\" align=\"center\" style=\"margin-left: 1cm; margin-right: 1cm; border: 2.00pt solid #ffffff; padding: 0.4cm 0.1cm; background: #505050\">\r\n" +
"<font color=\"#ffffff\" size=\"6\" style=\"font-size: 26pt\">Feedback - AnalyseWriter - format ODF 1.2<br>"+HTML.imgLogos()+"</font></h1>\r");
}else {
fichier.append("<h1 id=\"#top\" class=\"western\" align=\"center\" style=\"margin-left: 1cm; margin-right: 1cm; border: 2.00pt solid #ffffff; padding: 0.4cm 0.1cm; background: #505050\">\r\n" +
"<font color=\"#ffffff\" size=\"6\" style=\"font-size: 26pt\">Feedback - AnalyseWriter - format ODF 1.2<br>"+commandes.contenuFichierSVG+"</font></h1>\r");
}
}else {
fichier.append("<h1 id=\"#top\" class=\"western\" align=\"center\" style=\"margin-left: 1cm; margin-right: 1cm; border: 2.00pt solid #ffffff; padding: 0.4cm 0.1cm; background: #505050\">\r\n" +
"<font color=\"#ffffff\" size=\"6\" style=\"font-size: 26pt\">Feedback - AnalyseWriter - format ODF 1.2<br></font></h1>\r");
}
//**********
//** Note **
//**********
node ouvre = nodana.retourneFirstEnfantsByName("ouverture");
String noteFrom = ouvre.getAttributs().get("notefrom");
node notation = nodana.retourneFirstEnfantsByName("bodyetnotation");
if(!baremeABC) {
if(noteFrom ==null) noteFrom="20";
if(!commandes.noNote) if(!plagiat&&!copiercoller&&!pasAssezDeModification) fichier.append("<p><spanpablo>" + notation.getAttributs().get("note") + " / " + noteFrom +"<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
if(plagiat || copiercoller || pasAssezDeModification) {
notation.getAttributs().put("note","0");
String AffichageNote = "";
if(plagiat) AffichageNote = " Plagiat ";
if(copiercoller) AffichageNote = AffichageNote + " Copier Coller ";
if(pasAssezDeModification) AffichageNote = AffichageNote + " Pas assez de modification ";
if(!commandes.noNote) fichier.append("<p><spanpablo>" + AffichageNote + " / " + noteFrom +"<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
}
}else {
String imageNote = "";
switch (notation.getAttributs().get("noteABC")) {
case "A":
imageNote = HTML.NoteA();
break;
case "B":
imageNote = HTML.NoteB();
break;
case "C":
imageNote = HTML.NoteC();
break;
case "D":
imageNote = HTML.NoteD();
break;
case "E":
imageNote = HTML.NoteE();
break;
default:
imageNote = "";
break;
}
if(!commandes.noNote) if(!plagiat&& !copiercoller &&!pasAssezDeModification) fichier.append("<p><spanpablo>" + imageNote +"<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
if(plagiat || copiercoller || pasAssezDeModification) {
notation.getAttributs().put("note","0");
notation.getAttributs().put("noteABC","E");
String AffichageNote = "";
if(plagiat) AffichageNote = " Plagiat ";
if(copiercoller) AffichageNote = AffichageNote + " Copier Coller ";
if(pasAssezDeModification) AffichageNote = AffichageNote + " Pas assez de modification ";
if(!commandes.noNote) fichier.append("<p><spanpablo>" + AffichageNote + " / " + "<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
}
}
//producteur
if(ouvre.getAttributs().get("producteur")!=null) {
try {
producteur= true;
String[] decompose = ouvre.getAttributs().get("producteur").split("/");
SuiteBureautique=decompose[0];
VersionLibreOffice=decompose[1].substring(0, decompose[1].lastIndexOf("$"));
SystemeStudent=decompose[1].substring(decompose[1].lastIndexOf("$")+1, decompose[1].lastIndexOf(" "));
}catch (Exception e) {
System.out.println("Problème avec l'attribut producteur.");
}finally {
}
}
//**********************
//** Les informations **
//**********************
// date d'analyse, dossier étudiant, auteur sujet, date de la dernière modificatio, lien, algorithme
DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
LocalDateTime dateTimeModif = null;
String dateModif="";
if(!ouvre.getAttributs().get("dateModification").isEmpty()) {
try {
dateTimeModif = LocalDateTime.parse(ouvre.getAttributs().get("dateModification"));
dateModif = dateTimeModif.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM));
}catch (Exception e) {
System.out.println(e.toString());
}
}
fichier.append("<h4>Date d'analyse : "+ mediumDateFormat.format(aujourdhui) + "<br>");
fichier.append("Dossier étudiant : <span style=\"color:blue\">"+ ouvre.getAttributs().get("dossier") + "</span><br>");
fichier.append("Nom du fichier : <span style=\"color:blue\">"+ ouvre.getAttributs().get("filename") + "</span><br>");
fichier.append("Date de la dernière modification du fichier analysé : <span style=\"color:purple\">"+ dateModif + "</span><br>");
fichier.append("Durée d'édition du fichier analysé : <span style=\"color:purple\">"+ meptl.traitementDureeEdition(ouvre.getAttributs().get("dureeEdition") + "</span><br>"));
if(producteur) {
fichier.append("Suite de bureautique de l'étudiant : <span style=\"color:coral;\">"+ SuiteBureautique + "</span>");
fichier.append(" - Version : <span style=\"color:coral;\">"+ VersionLibreOffice + "</span>");
fichier.append(" - Système : <span style=\"color:coral;\">"+ SystemeStudent + "</span><br>");
}
fichier.append("<br>");
if(!auteurSujet.isEmpty()) {fichier.append("Sujet créé par : <span style=\"color:indigo\">"+ auteurSujet + "</span><br>");}
fichier.append("Hash du fichier analyse : <span style=\"color:red\">"+ ouvre.getAttributs().get("hash") + "</span><br>");
fichier.append("Nom du fichier analyse : <span style=\"color:red\">"+ commandes.nameSujet + "</span><br>");
fichier.append("Titre de l'exercice : <span style=\"color:red\">"+ ouvre.getAttributs().get("titre") + "</span><br>");
if(!commandes.noNote) {
if(!plagiat&&!copiercoller&&!pasAssezDeModification) fichier.append("Méthode : <div class=\"tooltip\"><font color=\"#0000ff\">Progression " + ouvre.getAttributs().get("progression") + "</font><span class=\"tooltiptext\">Explication<br>"+ HTML.imgProgression() +"</span></div> - Pourcentage correcte : " + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("proportioncorrect") +"<br>");
if(plagiat || copiercoller || pasAssezDeModification) {
String AffichageNote = "";
if(plagiat) AffichageNote = " Plagiat ";
if(copiercoller) AffichageNote = AffichageNote + " Copier Coller ";
if(pasAssezDeModification) AffichageNote = AffichageNote + " Pas assez de modification ";
fichier.append("Méthode : <div class=\"tooltip\"><font color=\"#0000ff\">Progression " + ouvre.getAttributs().get("progression") + "</font><span class=\"tooltiptext\">Explication<br>"+ HTML.imgProgression() +"</span></div> - Pourcentage correcte : "+ AffichageNote +"<br>");
}
if(baremeABC) {
fichier.append("Barème : <div class=\"tooltip\"><font color=\"#0000ff\">0% → E → " + Math.round(Double.valueOf(notation.getAttributs().get("BorneE"))*100) + "% → D → " + Math.round(Double.valueOf(notation.getAttributs().get("BorneD"))*100) + "% → C → " + Math.round(Double.valueOf(notation.getAttributs().get("BorneC"))*100) + "% → B → " + Math.round(Double.valueOf(notation.getAttributs().get("BorneB"))*100) + "% → A → 100%</font><span class=\"tooltiptext\">Prendre en compte le coefficient de progression.</span></div>");
}
}
if(ouvre.getAttributs().get("link_sujet")!=null) {
String linkSujet= ouvre.getAttributs().get("link_sujet");
Matcher m = Pattern.compile("^https://.{1,}|^http://.{1,}").matcher(linkSujet);
if(m.find()) {fichier.append("<br><a href=\"" + linkSujet + "\" target=\"_blank\">Lien vers le sujet</a><br>");}
}
if(ouvre.getAttributs().get("link_help")!=null) {
String linkSujet= ouvre.getAttributs().get("link_help");
Matcher m = Pattern.compile("^https://.{1,}|^http://.{1,}").matcher(linkSujet);
if(m.find()) {fichier.append("<br><a href=\"" + linkSujet + "\" target=\"_blank\">Lien vers le support</a><br>");}
}
fichier.append("<br><font color=\"#808080\" style=\"font-size: 9pt\"><i>Analysé avec la version : " + commandes.version + "<br></h4>");
fichier.append(HTML.SautLigne());
fichier.append("</div>");
//ajoute le menu si pas de détails
if(!commandes.noDetail) {
fichier.append(HTML.getHTMLmenu(nodana.retourneFirstEnfantsByName("menu").getNodes()));
}
//Les erreurs
node errors = nodana.retourneFirstEnfantsByName("erreurs");
if(Boolean.valueOf(errors.getAttributs().get("oneError"))) {
fichier.append(HTML.SautLigne());
if(Boolean.valueOf(errors.getAttributs().get("manqueHistorique"))) fichier.append(HTML.Paragraph_classp5("ERREUR : Il n'y a pas d'historique des modifications dans ce fichier. Le fichier n'a pas été modifié ou il a été réïnitialisé.<br>L'analyse de l'historique n'a pas pu se faire."));
if(Boolean.valueOf(errors.getAttributs().get("manqueCreationDate"))) fichier.append(HTML.Paragraph_classp5("ERREUR : La date de création du fichier a été supprimée. Le fichier a été réïnitialisé ou ce n'est pas le fichier du sujet."));
if(Boolean.valueOf(errors.getAttributs().get("manqueValeurCreationDate"))) fichier.append(HTML.Paragraph_classp5("ERREUR : Ce n'est pas la bonne date de création du fichier. Le fichier a été réïnitialisé ou ce n'est pas le fichier du sujet."));
if(Boolean.valueOf(errors.getAttributs().get("manqueMetaSujet"))) fichier.append(HTML.Paragraph_classp5("ERREUR : La méta donnée \"Sujet\" dans les propriétés du fichier a été supprimée ou renommée."));
if(Boolean.valueOf(errors.getAttributs().get("manqueValeurMetaSujet"))) fichier.append(HTML.Paragraph_classp5("ERREUR : La valeur de la méta donnée \"Sujet\" dans les propriétés du fichier n'est pas \"" + nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("metaSujet"))+".\"");
if(Boolean.valueOf(errors.getAttributs().get("manqueInitialCreator"))) fichier.append(HTML.Paragraph_classp5("ERREUR : La valeur de la méta donnée \"initial-creator\" dans les propriétés du fichier n'est pas \"" + nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("Initial_Creator"))+".\"");
}
//plagiat
if(plagiat) if(verifStudent!=null){
fichier.append(HTML.SautLigne());
ArrayList<node> correspondance = verifStudent.retourneEnfantsByName("correspondance", new ArrayList<node>());
for(int j = 0 ; j < correspondance.size();j++) {
fichier.append(HTML.Paragraph_classp5("Correspondance à la date=" + correspondance.get(j).getAttributs().get("date") + " avec l'étudiant " + correspondance.get(j).getAttributs().get("Avec_etudiant")));
}
}
fichier.append(HTML.SautLigne());
if(!plagiat && !copiercoller && !pasAssezDeModification) {
//Ajoute de commentaire de l'exercice
fichier.append(HTML.H3(nodana.getContenu().get(0)).replace("-NewLine-", "<br>"));
fichier.append(HTML.SautLigne());
//**************************************
//** Table de synthèse avec les liens **
//***************************************
fichier.append(HTML.H2("Synthèse"));
fichier.append(HTML.TableEnteteTableurSynthese());
fichier = SyntheseTable(nodana,fichier);
if(!commandes.noDetail) {
//Metadonnées
if(nodana.retourneFirstEnfantsByName("meta")!=null) if(nodana.retourneFirstEnfantsByName("meta").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("meta")));
}
//style de paragraphe
if(nodana.retourneFirstEnfantsByName("paragraphs")!=null) if(nodana.retourneFirstEnfantsByName("paragraphs").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("paragraphs")));
}
//pages
if(nodana.retourneFirstEnfantsByName("pages")!=null) if(nodana.retourneFirstEnfantsByName("pages").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("pages")));
}
//sequences
if(nodana.retourneFirstEnfantsByName("sequences")!=null) if(nodana.retourneFirstEnfantsByName("sequences").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("sequences")));
}
//numerotationchapitre
if(nodana.retourneFirstEnfantsByName("numerotationchapitre")!=null) if(nodana.retourneFirstEnfantsByName("numerotationchapitre").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("numerotationchapitre")));
}
//frames
if(nodana.retourneFirstEnfantsByName("frames")!=null) if(nodana.retourneFirstEnfantsByName("frames").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("frames")));
}
//section
if(nodana.retourneFirstEnfantsByName("sections")!=null) if(nodana.retourneFirstEnfantsByName("sections").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("sections")));
}
//tableau
if(nodana.retourneFirstEnfantsByName("tableaux")!=null) if(nodana.retourneFirstEnfantsByName("tableaux").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("tableaux")));
}
//bibliographies
if(nodana.retourneFirstEnfantsByName("bibliographies")!=null) if(nodana.retourneFirstEnfantsByName("bibliographies").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("bibliographies")));
}
//tablematieres
if(nodana.retourneFirstEnfantsByName("tablematieres")!=null) if(nodana.retourneFirstEnfantsByName("tablematieres").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("tablematieres")));
}
//tableillustrations
if(nodana.retourneFirstEnfantsByName("tableillustrations")!=null) if(nodana.retourneFirstEnfantsByName("tableillustrations").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("tableillustrations")));
}
//structurepage
if(nodana.retourneFirstEnfantsByName("structurepage")!=null) if(nodana.retourneFirstEnfantsByName("structurepage").isClose()) {
fichier.append(HTML.Table(nodana.retourneFirstEnfantsByName("structurepage")));
}
}
fichier.append("<p><br><br></p>");
}
//************
//** footer **
//************
fichier.append("<div class=\"footer\">");
fichier.append("<font color=\"#808080\" style=\"font-size: 10pt\"><i>analyseWriter - P. Rodriguez (université d'Artois) - Licence GPL v3.0 - analysé avec la version : " + commandes.version + " - ");
fichier.append("Fichier d'analyse créé avec la version : " + ouvre.getAttributs().get("version") + "</i></font>");
fichier.append("</div>");
fichier.append("<script>");
fichier.append("window.onscroll = function() {myFunction()};");
fichier.append("var navbar = document.getElementById(\"navbar\");");
fichier.append("var sticky = navbar.offsetTop;");
fichier.append("function myFunction() {");
fichier.append("if (window.pageYOffset >= sticky) {");
fichier.append("navbar.classList.add(\"sticky\")");
fichier.append("} else {");
fichier.append("navbar.classList.remove(\"sticky\");");
fichier.append("}");
fichier.append("}\r\n");
fichier.append("function toggleMenu() {\r\n" +
" var menuBox0 = document.getElementById('menu-box0'); \r\n" +
" var menuBox1 = document.getElementById('menu-box1'); \r\n" +
" var menuBox2 = document.getElementById('menu-box2'); \r\n" +
" var menuBox3 = document.getElementById('menu-box3'); \r\n" +
" var menuBox4 = document.getElementById('menu-box4'); \r\n" +
" var menuBox5 = document.getElementById('menu-box5'); \r\n" +
"\r\n"+
" if(menuBox0.style.display == \"block\") { " +
" menuBox0.style.display = \"none\";\r\n" +
" }\r\n" +
" else {" +
" menuBox0.style.display = \"block\";\r\n" +
" }\r\n" +
"\r\n"+
" if(menuBox1.style.display == \"block\") { " +
" menuBox1.style.display = \"none\";\r\n" +
" }\r\n" +
" else {" +
" menuBox1.style.display = \"block\";\r\n" +
" }\r\n" +
"\r\n"+
" if(menuBox2.style.display == \"block\") { " +
" menuBox2.style.display = \"none\";\r\n" +
" }\r\n" +
" else {" +
" menuBox2.style.display = \"block\";\r\n" +
" }\r\n" +
"\r\n"+
" if(menuBox3.style.display == \"block\") { " +
" menuBox3.style.display = \"none\";\r\n" +
" }\r\n" +
" else {" +
" menuBox3.style.display = \"block\";\r\n" +
" }\r\n" +
" if(menuBox4.style.display == \"block\") { " +
" menuBox4.style.display = \"none\";\r\n" +
" }\r\n" +
" else {" +
" menuBox4.style.display = \"block\";\r\n" +
" }\r\n" +
" if(menuBox5.style.display == \"block\") { " +
" menuBox5.style.display = \"none\";\r\n" +
" }\r\n" +
" else {" +
" menuBox5.style.display = \"block\";\r\n" +
" }\r\n" +
"}");
fichier.append("</script>");
fichier.append("</body>\r");
fichier.append("</html>");
if(!zip) {
//nom du fichier feedback
String metaS = nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("metaSujet");
if(metaS.equals("?")) metaS = "metaSujet-inconnu";
if(metaS.isEmpty()) metaS = "metaSujet-inconnu";
String cheminFeedBack = nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("dossier") + "-DateLong" + aujourdhui.getTime()+"-"+metaS;
if(!commandes.noNote&&!baremeABC) {
if(!plagiat&&!copiercoller)cheminFeedBack = cheminFeedBack + "-" + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("note") + ".html";
if(plagiat) cheminFeedBack = cheminFeedBack + "- plagiat.html";
if(copiercoller) cheminFeedBack = cheminFeedBack + "- copier-coller.html";
if(pasAssezDeModification) cheminFeedBack = cheminFeedBack + "- pas assez de modification.html";
}
if(!commandes.noNote&&baremeABC) {
if(!plagiat)cheminFeedBack = cheminFeedBack + "-" + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("noteABC") + ".html";
if(copiercoller) cheminFeedBack = cheminFeedBack + "- copier-coller.html";
if(plagiat) cheminFeedBack = cheminFeedBack + "- plagiat.html";
if(pasAssezDeModification) cheminFeedBack = cheminFeedBack + "- pas assez de modification.html";
}
if(commandes.noNote) {
cheminFeedBack = cheminFeedBack + ".html";
}
// Chemin vers le dossier de destination
Path outputFilePath = Paths.get(commandes.path + "/" + cheminFeedBack);
if(commandes.fourniDossierDestination) outputFilePath = Paths.get(commandes.path + "/" + commandes.pathDestination+ "/" + cheminFeedBack);
if(!TestFichierAnalyse) {
BufferedWriter fichier1 = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8);
//ajoute le chemin vers le feedback dans le node d'analyse
nodana.retourneFirstEnfantsByName("ouverture").getAttributs().put("feedback", commandes.path + "/" + cheminFeedBack);
fichier1.append(fichier.toString());
fichier1.close();
//affichage dans la console
if(!commandes.fourniDossierDestination) System.out.println("\n\t The feedback file has been written.\n\t " + commandes.path + "\\" + cheminFeedBack);
if(commandes.fourniDossierDestination) System.out.println("\n\t The feedback file has been written.\n\t " + commandes.path + "\\" + commandes.pathDestination + "\\" + cheminFeedBack);
}
}
return fichier;
}
private static StringBuilder SyntheseTable(node nodana, StringBuilder fichier) {
// String IdError = ""; // permet de récupérer les id des menu ou la proportioncorrect est NaN. (à cause de l'attribut analyseStyle=true)
for(int k = 0 ; k < nodana.getNodes().size();k++) {
if(nodana.getNodes().get(k).getAttributs().get("addmenu")!=null) {
if(nodana.getNodes().get(k).getAttributs().get("addmenu").equals("true")) {
node N = nodana.getNodes().get(k);
if(N.getAttributs().get("proportioncorrect")!=null) {
if(!N.getAttributs().get("proportioncorrect").equals("NaN")) {
if(N.getAttributs().get("titre")!=null) {
fichier.append(HTML.TablePointsSyntheseStyle(N.getAttributs().get("titre"),Double.valueOf(N.getAttributs().get("proportioncorrect")),N.getAttributs().get("pointtotal") + " pt",N.getAttributs().get("pointgagner") + " pt", N.getAttributs().get("poids"),N.getAttributs().get("id")));
}
if(N.getAttributs().get("titre1")!=null) {
fichier.append(HTML.TablePointsSyntheseStyle(N.getAttributs().get("titre1"),Double.valueOf(N.getAttributs().get("proportioncorrect")),N.getAttributs().get("pointtotal") + " pt",N.getAttributs().get("pointgagner") + " pt", N.getAttributs().get("poids"),N.getAttributs().get("id")));
}
if(N.getAttributs().get("titre2")!=null) {
fichier.append(HTML.TablePointsSyntheseStyle(N.getAttributs().get("titre2"),Double.valueOf(N.getAttributs().get("proportioncorrect")),N.getAttributs().get("pointtotal") + " pt",N.getAttributs().get("pointgagner") + " pt", N.getAttributs().get("poids"),N.getAttributs().get("id")));
}
if(N.getAttributs().get("titre3")!=null) {
fichier.append(HTML.TablePointsSyntheseStyle(N.getAttributs().get("titre3"),Double.valueOf(N.getAttributs().get("proportioncorrect")),N.getAttributs().get("pointtotal") + " pt",N.getAttributs().get("pointgagner") + " pt", N.getAttributs().get("poids"),N.getAttributs().get("id")));
}
}else {
// IdError = IdError + N.getAttributs().get("id");
// System.out.print("\t** Erreur menu, node : " + N.getNomElt());
}
}else {
if(N.getAttributs().get("titre")!=null) {
fichier.append(HTML.TablePointsSyntheseStyle(N.getAttributs().get("titre"),-1.0,"","", "",N.getAttributs().get("id")));
}
if(N.getAttributs().get("titre1")!=null) {
fichier.append(HTML.TablePointsSyntheseStyle(N.getAttributs().get("titre1"),-1.0,"","", "",N.getAttributs().get("id")));
}
if(N.getAttributs().get("titre2")!=null) {
fichier.append(HTML.TablePointsSyntheseStyle(N.getAttributs().get("titre2"),-1.0,"","", "",N.getAttributs().get("id")));
}
if(N.getAttributs().get("titre3")!=null) {
fichier.append(HTML.TablePointsSyntheseStyle(N.getAttributs().get("titre3"),-1.0,"","", "",N.getAttributs().get("id")));
}
}
}
}
}
ArrayList<node> LesPages = nodana.retourneFirstEnfantsByName("structurepage").retourneEnfantsByName("page", new ArrayList<node>());
if(LesPages.size()>0) {
fichier.append(HTML.SautLigne());
fichier.append(HTML.H2("Les points dans les pages"));
fichier.append(HTML.SautLigne());
for(int k = 0 ; k < LesPages.size();k++) {
if(LesPages.get(k).getNomElt().equals("page")) {
if(LesPages.get(k).getAttributs().get("proportioncorrect")!=null) {
if(!LesPages.get(k).getAttributs().get("proportioncorrect").equals("NaN")) {
fichier.append(HTML.TablePointsSyntheseStyle2(" Page "+ LesPages.get(k).getAttributs().get("numeroabsolue"),Double.valueOf(LesPages.get(k).getAttributs().get("proportioncorrect")),LesPages.get(k).getAttributs().get("pointTotal") + " pt",LesPages.get(k).getAttributs().get("point") + " pt"));
}
}
}
}
}
return fichier;
}
}