diff --git a/analyseWriter.jar b/analyseWriter.jar index d6f95d5..80bb481 100644 Binary files a/analyseWriter.jar and b/analyseWriter.jar differ diff --git a/bin/MEPTL/meptl.class b/bin/MEPTL/meptl.class index fa20e00..934bbce 100644 Binary files a/bin/MEPTL/meptl.class and b/bin/MEPTL/meptl.class differ diff --git a/documentation analyseWriter.odt b/documentation analyseWriter.odt index 7d1ad4d..06e1ff1 100644 Binary files a/documentation analyseWriter.odt and b/documentation analyseWriter.odt differ diff --git a/documentation analyseWriter.pdf b/documentation analyseWriter.pdf new file mode 100644 index 0000000..fe4b37d Binary files /dev/null and b/documentation analyseWriter.pdf differ diff --git a/src/MEPTL/meptl.java b/src/MEPTL/meptl.java index dddaaec..8e4eda8 100644 --- a/src/MEPTL/meptl.java +++ b/src/MEPTL/meptl.java @@ -82,7 +82,7 @@ public class meptl { if(verificationFichierAnalyse.erreur==true) verificationFichierAnalyse.clotureWithErrorInanalyzeFile(); //a.ecritureNodeEnXML(nodeSujet, "sujet","",false); // ecriture du node sujet if(commandes.ecritSujet) { - a.ecritureNodeEnXML(nodeSujet, "sujet","",false); // ecriture du node sujet + a.ecritureNodeEnXML(nodeSujet, "sujet","",false, "Sujet"); // ecriture du node sujet System.out.println(); System.out.println("\tWriting of the \"sujet.xml\" file completed."); commandes.clotureApplication(); @@ -141,7 +141,7 @@ public class meptl { } //a.ecritureNodeEnXML(verification, "VerificationHistorique","",false); //écriture du node de l'étudiant verif = verificationHistorique(verification, a); // vérification des correspondances entre les fichiers - a.ecritureNodeEnXML(verif, "Verif",commandes.pathDestination,commandes.fourniDossierDestination); //écriture du node de vérification + a.ecritureNodeEnXML(verif, "Verif",commandes.pathDestination,commandes.fourniDossierDestination, "Verif"); //écriture du node de vérification if(!commandes.analyse) {commandes.clotureApplication();System.exit(0);} } @@ -171,7 +171,7 @@ public class meptl { 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); + a.ecritureNodeEnXML(nodSujet, a.getLectDossiers().getEC().getListeNomDossier().get(i),"",false,"Sujet"); } // analyse des fichiers student @@ -2943,8 +2943,10 @@ public class meptl { 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 = ""; @@ -2953,13 +2955,16 @@ public class meptl { 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_correspondance"))>number_match) plagiat=true; - if(!verifStudent.getAttributs().get("first_modification_identique").equals("null")) plagiat=true; + 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; } } } @@ -2984,11 +2989,13 @@ public class meptl { 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"; @@ -3107,10 +3114,15 @@ public class meptl { node notation = nodana.retourneFirstEnfantsByName("bodyetnotation"); if(!baremeABC) { if(noteFrom ==null) noteFrom="20"; - if(!commandes.noNote) if(!plagiat) fichier.write("

" + notation.getAttributs().get("note") + " / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - if(!commandes.noNote) if(plagiat) fichier.write("

Plagiat / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - if(!commandes.noNote) if(!plagiat&&copiercoller) fichier.append("

Copiés Collés / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - + if(!commandes.noNote) if(!plagiat&&!copiercoller&&!pasAssezDeModification) fichier.write("

" + notation.getAttributs().get("note") + " / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\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.write("

" + AffichageNote + " / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); + } }else { String imageNote = ""; switch (notation.getAttributs().get("noteABC")) { @@ -3133,10 +3145,17 @@ public class meptl { imageNote = ""; break; } - if(!commandes.noNote) if(!plagiat) fichier.append("

" + imageNote +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - if(!commandes.noNote) if(plagiat) fichier.append("

Plagiat / " + "
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - if(!commandes.noNote) if(!plagiat&&copiercoller) fichier.append("

Copiés Collés / " +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - } + if(!commandes.noNote) if(!plagiat&& !copiercoller &&!pasAssezDeModification) fichier.write("

" + imageNote +"
"+ ouvre.getAttributs().get("metaSujet") +"

\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.write("

" + AffichageNote + " / " + "
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); + } + } //producteur if(ouvre.getAttributs().get("producteur")!=null) { @@ -3179,9 +3198,18 @@ public class meptl { fichier.write(" - Système : "+ SystemeStudent + "
"); } if(!auteurSujet.isEmpty()) {fichier.write("Sujet créé par : "+ auteurSujet + "
");}else {fichier.write("
");} - - if(!commandes.noNote) if(!plagiat&&!copiercoller) fichier.write("Méthode :
Progression " + ouvre.getAttributs().get("progression") + "Explication
"+ HTML.imgProgression() +"
- Pourcentage correcte : " + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("proportioncorrect") +"
"); - if(!commandes.noNote) if(plagiat || copiercoller) fichier.append("Méthode :
Progression " + ouvre.getAttributs().get("progression") + "Explication
"+ HTML.imgProgression() +"
- Pourcentage correcte : Plagiat
"); + + if(!commandes.noNote) { + if(!plagiat&&!copiercoller&&!pasAssezDeModification) fichier.write("Méthode :
Progression " + ouvre.getAttributs().get("progression") + "Explication
"+ HTML.imgProgression() +"
- Pourcentage correcte : " + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("proportioncorrect") +"
"); + 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.write("Méthode :
Progression " + ouvre.getAttributs().get("progression") + "Explication
"+ HTML.imgProgression() +"
- Pourcentage correcte : "+ AffichageNote +"
"); + } + } + if(baremeABC) { fichier.append("Barème :
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%Prendre en compte le coefficient de progression.
"); } @@ -3232,84 +3260,91 @@ public class meptl { fichier.write(HTML.SautLigne()); - //Ajoute de commentaire de l'exercice - fichier.write(HTML.H3(nodana.getContenu()).replace("-NewLine-", "
")); - fichier.write(HTML.SautLigne()); - - - fichier.write(HTML.H2("Synthèse")); - - fichier.write(HTML.TableEnteteTableurSynthese()); - 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")) { - if(!nodana.getNodes().get(k).getAttributs().get("proportioncorrect").equals("NaN")) { - fichier.write(HTML.TablePointsSyntheseStyle(nodana.getNodes().get(k).getAttributs().get("titre"),Double.valueOf(nodana.getNodes().get(k).getAttributs().get("proportioncorrect")),nodana.getNodes().get(k).getAttributs().get("pointtotal") + " pt",nodana.getNodes().get(k).getAttributs().get("pointgagner") + " pt", nodana.getNodes().get(k).getAttributs().get("poids"),nodana.getNodes().get(k).getAttributs().get("id"))); - }else { - IdError = IdError + nodana.getNodes().get(k).getAttributs().get("id"); - } + if(!plagiat && !copiercoller && !pasAssezDeModification) { + + //Ajoute de commentaire de l'exercice + fichier.write(HTML.H3(nodana.getContenu()).replace("-NewLine-", "
")); + + fichier.write(HTML.SautLigne()); + + + fichier.write(HTML.H2("Synthèse")); + + fichier.write(HTML.TableEnteteTableurSynthese()); + 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")) { + if(!nodana.getNodes().get(k).getAttributs().get("proportioncorrect").equals("NaN")) { + fichier.write(HTML.TablePointsSyntheseStyle(nodana.getNodes().get(k).getAttributs().get("titre"),Double.valueOf(nodana.getNodes().get(k).getAttributs().get("proportioncorrect")),nodana.getNodes().get(k).getAttributs().get("pointtotal") + " pt",nodana.getNodes().get(k).getAttributs().get("pointgagner") + " pt", nodana.getNodes().get(k).getAttributs().get("poids"),nodana.getNodes().get(k).getAttributs().get("id"))); + }else { + IdError = IdError + nodana.getNodes().get(k).getAttributs().get("id"); + } + } + } + + + //Metadonnées + if(nodana.retourneFirstEnfantsByName("meta")!=null) if(nodana.retourneFirstEnfantsByName("meta").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("meta"))); } - } - - - //Metadonnées - if(nodana.retourneFirstEnfantsByName("meta")!=null) if(nodana.retourneFirstEnfantsByName("meta").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("meta"))); - } - - //style de paragraphe - if(nodana.retourneFirstEnfantsByName("paragraphs")!=null) if(nodana.retourneFirstEnfantsByName("paragraphs").isClose()) { - //il est possible qu'il n'y ai aucun point car passé par analyseStyle dans le node structurepage - if(!IdError.contains(nodana.retourneFirstEnfantsByName("paragraphs").getAttributs().get("id"))){ - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("paragraphs"))); + + //style de paragraphe + if(nodana.retourneFirstEnfantsByName("paragraphs")!=null) if(nodana.retourneFirstEnfantsByName("paragraphs").isClose()) { + //il est possible qu'il n'y ai aucun point car passé par analyseStyle dans le node structurepage + if(!IdError.contains(nodana.retourneFirstEnfantsByName("paragraphs").getAttributs().get("id"))){ + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("paragraphs"))); + } } - } - - //pages - if(nodana.retourneFirstEnfantsByName("pages")!=null) if(nodana.retourneFirstEnfantsByName("pages").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("pages"))); - } - - //sequences - if(nodana.retourneFirstEnfantsByName("sequences")!=null) if(nodana.retourneFirstEnfantsByName("sequences").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("sequences"))); - } + + //pages + if(nodana.retourneFirstEnfantsByName("pages")!=null) if(nodana.retourneFirstEnfantsByName("pages").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("pages"))); + } + + //sequences + if(nodana.retourneFirstEnfantsByName("sequences")!=null) if(nodana.retourneFirstEnfantsByName("sequences").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("sequences"))); + } - //numerotationchapitre - if(nodana.retourneFirstEnfantsByName("numerotationchapitre")!=null) if(nodana.retourneFirstEnfantsByName("numerotationchapitre").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("numerotationchapitre"))); - } - - //frames - if(nodana.retourneFirstEnfantsByName("frames")!=null) if(nodana.retourneFirstEnfantsByName("frames").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("frames"))); - } - - //section - if(nodana.retourneFirstEnfantsByName("sections")!=null) if(nodana.retourneFirstEnfantsByName("sections").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("sections"))); - } - - //bibliographies - if(nodana.retourneFirstEnfantsByName("bibliographies")!=null) if(nodana.retourneFirstEnfantsByName("bibliographies").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("bibliographies"))); - } - - //tablematieres - if(nodana.retourneFirstEnfantsByName("tablematieres")!=null) if(nodana.retourneFirstEnfantsByName("tablematieres").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("tablematieres"))); - } + //numerotationchapitre + if(nodana.retourneFirstEnfantsByName("numerotationchapitre")!=null) if(nodana.retourneFirstEnfantsByName("numerotationchapitre").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("numerotationchapitre"))); + } + + //frames + if(nodana.retourneFirstEnfantsByName("frames")!=null) if(nodana.retourneFirstEnfantsByName("frames").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("frames"))); + } + + //section + if(nodana.retourneFirstEnfantsByName("sections")!=null) if(nodana.retourneFirstEnfantsByName("sections").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("sections"))); + } + + //bibliographies + if(nodana.retourneFirstEnfantsByName("bibliographies")!=null) if(nodana.retourneFirstEnfantsByName("bibliographies").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("bibliographies"))); + } + + //tablematieres + if(nodana.retourneFirstEnfantsByName("tablematieres")!=null) if(nodana.retourneFirstEnfantsByName("tablematieres").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("tablematieres"))); + } - //tableillustrations - if(nodana.retourneFirstEnfantsByName("tableillustrations")!=null) if(nodana.retourneFirstEnfantsByName("tableillustrations").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("tableillustrations"))); + //tableillustrations + if(nodana.retourneFirstEnfantsByName("tableillustrations")!=null) if(nodana.retourneFirstEnfantsByName("tableillustrations").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("tableillustrations"))); + } + + //structurepage + if(nodana.retourneFirstEnfantsByName("structurepage")!=null) if(nodana.retourneFirstEnfantsByName("structurepage").isClose()) { + fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("structurepage"))); + } + } - //structurepage - if(nodana.retourneFirstEnfantsByName("structurepage")!=null) if(nodana.retourneFirstEnfantsByName("structurepage").isClose()) { - fichier.write(HTML.Table(nodana.retourneFirstEnfantsByName("structurepage"))); - } + fichier.write("



"); @@ -3409,15 +3444,25 @@ public class meptl { System.getProperty("file.encoding","UTF-8"); int number_match = 2; + int mini_modification = 0; boolean plagiat = false; + boolean copiercoller = false; + boolean pasAssezDeModification =false; + node verifStudent = null; - if((commandes.verifHisto||commandes.verifHisto2)&&commandes.ecritNoteCSV&&commandes.fourniCSV) { + 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_correspondance"))>number_match) plagiat=true; + 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; } } } @@ -3441,6 +3486,8 @@ public class meptl { if(!commandes.noNote) { if(!plagiat) 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"; }else { cheminFeedBack = cheminFeedBack + ".html"; } @@ -3448,6 +3495,8 @@ public class meptl { if(!commandes.noNote) { if(!plagiat) cheminFeedBack = cheminFeedBack + "-" + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("noteABC") + ".html"; if(plagiat) cheminFeedBack = cheminFeedBack + "-Plagiat.html"; + if(copiercoller) cheminFeedBack = cheminFeedBack + "-Copier-Coller.html"; + if(pasAssezDeModification) cheminFeedBack = cheminFeedBack + "-Pas assez de modification.html"; }else { cheminFeedBack = cheminFeedBack + ".html"; } @@ -3471,23 +3520,28 @@ public class meptl { 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((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_correspondance"))>number_match) plagiat=true; - if(!verifStudent.getAttributs().get("first_modification_identique").equals("null")) plagiat=true; + 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; } } } @@ -3607,9 +3661,15 @@ public class meptl { node notation = nodana.retourneFirstEnfantsByName("bodyetnotation"); if(!baremeABC) { if(noteFrom ==null) noteFrom="20"; - if(!commandes.noNote) if(!plagiat&&!copiercoller) fichier.append("

" + notation.getAttributs().get("note") + " / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - if(!commandes.noNote) if(plagiat&&!copiercoller) fichier.append("

Plagiat / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - if(!commandes.noNote) if(!plagiat&&copiercoller) fichier.append("

Copiés Collés / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); + if(!commandes.noNote) if(!plagiat&&!copiercoller&&!pasAssezDeModification) fichier.append("

" + notation.getAttributs().get("note") + " / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\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("

" + AffichageNote + " / " + noteFrom +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); + } }else { String imageNote = ""; switch (notation.getAttributs().get("noteABC")) { @@ -3632,10 +3692,16 @@ public class meptl { imageNote = ""; break; } - if(!commandes.noNote) if(!plagiat) fichier.append("

" + imageNote +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - if(!commandes.noNote) if(plagiat) fichier.append("

Plagiat / " + "
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - if(!commandes.noNote) if(!plagiat&&copiercoller) fichier.append("

Copiés Collés / " +"
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); - + if(!commandes.noNote) if(!plagiat&& !copiercoller &&!pasAssezDeModification) fichier.append("

" + imageNote +"
"+ ouvre.getAttributs().get("metaSujet") +"

\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("

" + AffichageNote + " / " + "
"+ ouvre.getAttributs().get("metaSujet") +"

\r"); + } } @@ -3681,8 +3747,17 @@ public class meptl { } if(!auteurSujet.isEmpty()) {fichier.append("Sujet créé par : "+ auteurSujet + "
");}else {fichier.append("
");} - if(!commandes.noNote) if(!plagiat&&!copiercoller) fichier.append("Méthode :
Progression " + ouvre.getAttributs().get("progression") + "Explication
"+ HTML.imgProgression() +"
- Pourcentage correcte : " + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("proportioncorrect") +"
"); - if(!commandes.noNote) if(plagiat || copiercoller) fichier.append("Méthode :
Progression " + ouvre.getAttributs().get("progression") + "Explication
"+ HTML.imgProgression() +"
- Pourcentage correcte : Plagiat
"); + if(!commandes.noNote) { + if(!plagiat&&!copiercoller&&!pasAssezDeModification) fichier.append("Méthode :
Progression " + ouvre.getAttributs().get("progression") + "Explication
"+ HTML.imgProgression() +"
- Pourcentage correcte : " + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("proportioncorrect") +"
"); + 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 :
Progression " + ouvre.getAttributs().get("progression") + "Explication
"+ HTML.imgProgression() +"
- Pourcentage correcte : "+ AffichageNote +"
"); + } + } + if(baremeABC) { fichier.append("Barème :
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%Prendre en compte le coefficient de progression.
"); } @@ -3732,84 +3807,89 @@ public class meptl { } - - fichier.append(HTML.SautLigne()); - - //Ajoute de commentaire de l'exercice - fichier.append(HTML.H3(nodana.getContenu()).replace("-NewLine-", "
")); - - fichier.append(HTML.SautLigne()); - - - fichier.append(HTML.H2("Synthèse")); - - fichier.append(HTML.TableEnteteTableurSynthese()); - 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")) { - if(!nodana.getNodes().get(k).getAttributs().get("proportioncorrect").equals("NaN")) { - fichier.append(HTML.TablePointsSyntheseStyle(nodana.getNodes().get(k).getAttributs().get("titre"),Double.valueOf(nodana.getNodes().get(k).getAttributs().get("proportioncorrect")),nodana.getNodes().get(k).getAttributs().get("pointtotal") + " pt",nodana.getNodes().get(k).getAttributs().get("pointgagner") + " pt", nodana.getNodes().get(k).getAttributs().get("poids"),nodana.getNodes().get(k).getAttributs().get("id"))); - }else { - IdError = IdError + nodana.getNodes().get(k).getAttributs().get("id"); - } + fichier.append(HTML.SautLigne()); + + if(!plagiat && !copiercoller && !pasAssezDeModification) { + + //Ajoute de commentaire de l'exercice + fichier.append(HTML.H3(nodana.getContenu()).replace("-NewLine-", "
")); + + fichier.append(HTML.SautLigne()); + + + fichier.append(HTML.H2("Synthèse")); + + fichier.append(HTML.TableEnteteTableurSynthese()); + 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")) { + if(!nodana.getNodes().get(k).getAttributs().get("proportioncorrect").equals("NaN")) { + fichier.append(HTML.TablePointsSyntheseStyle(nodana.getNodes().get(k).getAttributs().get("titre"),Double.valueOf(nodana.getNodes().get(k).getAttributs().get("proportioncorrect")),nodana.getNodes().get(k).getAttributs().get("pointtotal") + " pt",nodana.getNodes().get(k).getAttributs().get("pointgagner") + " pt", nodana.getNodes().get(k).getAttributs().get("poids"),nodana.getNodes().get(k).getAttributs().get("id"))); + }else { + IdError = IdError + nodana.getNodes().get(k).getAttributs().get("id"); + } + } + } + + + //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()) { + //il est possible qu'il n'y ai aucun point car passé par analyseStyle dans le node structurepage + if(!IdError.contains(nodana.retourneFirstEnfantsByName("paragraphs").getAttributs().get("id"))){ + 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"))); + } + + //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("



"); + } - //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()) { - //il est possible qu'il n'y ai aucun point car passé par analyseStyle dans le node structurepage - if(!IdError.contains(nodana.retourneFirstEnfantsByName("paragraphs").getAttributs().get("id"))){ - 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"))); - } - - //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("



"); + //footer fichier.append("
"); @@ -3913,7 +3993,6 @@ public class meptl { System.out.println("\t Grade : " + notation.getAttributs().get("note") + "/" + ouverture.getAttributs().get("notefrom")); } - if(flagError) { System.out.println("\t ERROR in student's file."); if(Boolean.valueOf(erreurs.getAttributs().get("manqueHistorique"))) System.out.println("\t ERROR : There is no historic in the file. Perhaps, the file has not been modified or it has been reset by the student."); @@ -4302,7 +4381,7 @@ public class meptl { if(commandes.fourniDossierDestination) System.out.println(patch +"\\"+ commandes.pathDestination + "\\DateLong" + aujourdhui.getTime()+ "-Notes.csv"); BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, encoding); - fichier.write("prénom nom"+separator+"email"+separator+"identifiant"+separator+"date modification"+separator+"producteur"+separator+"durée edition"+separator+"sujet"+separator+"nbr modification" + separator + "nbr modifications date unique" + separator+ "nbr match" + separator +"note" + separator +"commentaire\n"); + fichier.write("prénom nom"+separator+"email"+separator+"identifiant"+separator+"date modification"+separator+"producteur"+separator+"durée edition"+separator+"sujet"+separator+"nbr modification" + separator + "nbr modifications date unique" + separator+ "nbr match consecutif" + separator +"note" + separator +"commentaire\n"); for (int i = 0 ; i < ana.getNodes().size() ; i++) { node nodouverture = ana.getNodes().get(i).retourneFirstEnfantsByName("ouverture"); @@ -4392,7 +4471,7 @@ public class meptl { if(commandes.verifHisto2) if(verifStudent!=null) { - int nbreCorrespondance = Integer.valueOf(verifStudent.getAttributs().get("nombre_correspondance")); + int nbreCorrespondanceConsecutive = Integer.valueOf(verifStudent.getAttributs().get("nombre_correspondances_consecutives")); int nbrDateModificationUnique = Integer.valueOf(verifStudent.getAttributs().get("nombre_modifications_date_unique")); note = bodyetnotation.getAttributs().get("note"); if(bodyetnotation.getAttributs().get("baremeABC")!=null) { @@ -4404,33 +4483,17 @@ public class meptl { } } - if(nbreCorrespondance>=commandes.number_match) { - bodyetnotation.getAttributs().put("commentaire","pas assez de modification"); -// if(bodyetnotation.getAttributs().get("baremeABC")!=null) { -// try { -// if(Boolean.valueOf(bodyetnotation.getAttributs().get("baremeABC"))) { -// note = bodyetnotation.getAttributs().get("noteABC") + separator + "pas assez de modification"; -// } -// }catch (Exception e) { -// -// } -// } + if(nbreCorrespondanceConsecutive>commandes.number_match) { + bodyetnotation.getAttributs().put("commentaire","Echange de fichier - plagiat"); + note = "0" ; } if(nbrDateModificationUnique<=commandes.mini_number_modification) { - bodyetnotation.getAttributs().put("commentaire","probable copy"); -// if(bodyetnotation.getAttributs().get("baremeABC")!=null) { -// try { -// if(Boolean.valueOf(bodyetnotation.getAttributs().get("baremeABC"))) { -// note = bodyetnotation.getAttributs().get("noteABC") + separator + "probable copy"; -// } -// }catch (Exception e) { -// -// } -// } + bodyetnotation.getAttributs().put("commentaire","pas assez de modification."); + note="0"; } - if(!verifStudent.getAttributs().get("first_modification_identique").equals("null")) { + if(!verifStudent.getAttributs().get("first_modification_identique").equals("null") && nbreCorrespondanceConsecutive>=commandes.number_match) { note = "0" ; - bodyetnotation.getAttributs().put("commentaire","échange de fichier"); + bodyetnotation.getAttributs().put("commentaire","Echange de fichier - plagiat"); } if(verifStudent.getAttributs().get("copier_coller")!=null){ bodyetnotation.getAttributs().put("commentaire","des copiés et des collés"); @@ -4438,7 +4501,7 @@ public class meptl { String nbrModification = verifStudent.getAttributs().get("nombre_modification"); String nombre_modifications_date_unique = verifStudent.getAttributs().get("nombre_modifications_date_unique"); - fichier.write(identification + separator + mail + separator + numeroEtudiant + separator + dateModif + separator + producteur + separator + traitementDureeEdition(dureeEdition) + separator + sujet + separator + nbrModification +separator + nombre_modifications_date_unique + separator + nbreCorrespondance + separator + traitementNote(note) + separator + bodyetnotation.getAttributs().get("commentaire")+"\n"); + fichier.write(identification + separator + mail + separator + numeroEtudiant + separator + dateModif + separator + producteur + separator + traitementDureeEdition(dureeEdition) + separator + sujet + separator + nbrModification +separator + nombre_modifications_date_unique + separator + nbreCorrespondanceConsecutive + separator + traitementNote(note) + separator + bodyetnotation.getAttributs().get("commentaire")+"\n"); } if(!commandes.verifHisto2) {