analyseWriter/src/evaluer/evaluationAttribut.java
pablo rodriguez 6c88b6b3b4 V4.4.4
Préparation pour nouvelle version avec gestion de la base des
évaluations.
La méthode analyseStyle peut être appliqué au niveau des styles de page
dans les en-têtes ou les pied de page.
2023-04-01 09:54:28 +02:00

1574 lines
67 KiB
Java

package evaluer;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import MEPTL.commandes;
import MEPTL.rechercherUnNodeStudent;
import cXML.node;
import list.listMethodeEvaluationAnalyseWriter;
import list.listeDesNodesAncrable;
import list.listeDesNodesEvalPlacement;
import list.listeDesNodesFormatageDirect;
import list.listeDesNodesPourEvaluerPage;
public class evaluationAttribut {
//****************************************************************************
//****************************************************************************
//** LES DEUX POINTS D'ENTRES DES METHODES D'EVALUATION **
//****************************************************************************
//****************************************************************************
/**
* POINT D'ENTREE DE LA METHODE ANALYSESTYLE;</br>
* </br>
* Analyse tous les attributs des nodes <style:style>.<br>
* Formatage direct des styles de paragraphe.</br>
* Les attributs doivent contenir le code ‼.<br>
* <br>
* @param nodeStyleParagraphStudent : le node de l'étudiant.
* @param nodeStyleParagraphSujet : le node du sujet
* @param retour : le node à retourner avec les enfants nommés nameItem.
* @param nameItem : le nom des nodes enfants.
* @param nameElt : le nom de l'élément (node) analysé. L'information se trouve au début pour la traduction
* @return le node <b>retour</b> avec tous les nodes enfants <b>nameItem</b> contenant les différentes analyses.
*/
public static node evalLesAttributAnalyseStyle(node nodeStyleParagraphStudent, node nodeStyleParagraphSujet, node retour, String nameItem, String nameElt) {
if(nodeStyleParagraphSujet.getAttributs().get("evaluer")==null) return retour;
if(!nodeStyleParagraphSujet.getAttributs().get("evaluer").equals("true")) return retour;
if(nodeStyleParagraphSujet.getAttributs().get("EvaluerATraversAnalyseStyle")==null) return retour;
if(nodeStyleParagraphSujet.getAttributs().get("EvaluerATraversAnalyseStyle").equals("false")) return retour;
Enumeration<String> key = nodeStyleParagraphSujet.getAttributs().keys();
while(key.hasMoreElements()) {
String k = key.nextElement();
if(nodeStyleParagraphSujet.getAttributs().get(k).contains("") || nodeStyleParagraphSujet.getAttributs().get(k).contains("")){
if(nodeStyleParagraphStudent!=null) {
String valueAttributStudent = nodeStyleParagraphStudent.getAttributs().get(k);
String valueAttributSujet = nodeStyleParagraphSujet.getAttributs().get(k).replace("", "");
node item = retourneNoteAvecResultatsAnalyse(nameItem,k, valueAttributStudent, valueAttributSujet,nameElt);
retour.getNodes().add(item);
}else {
String valueAttributStudent = "null";
String valueAttributSujet = nodeStyleParagraphSujet.getAttributs().get(k).replace("", "");
node item = retourneNoteAvecResultatsAnalyse(nameItem, k, valueAttributStudent, valueAttributSujet,nameElt);
retour.getNodes().add(item);
}
}
// évaluation des méthodes d'analyseWriter au travers de la méthode analyseStyle
if(listMethodeEvaluationAnalyseWriter.isMethodeEvaluationAnalyseWriterAvecPoint(k)) {
switch (k) {
case "evalNameNode": {
retour = evaluationAttribut.evaluationNameNode(retour, nodeStyleParagraphStudent, nodeStyleParagraphSujet.getNomElt(), nodeStyleParagraphSujet.getAttributs().get(k), nameElt);
}
case "evalLegacyStyleParentPresent":{
retour = evaluationAttribut.evalPresenceStyleParent(nodeStyleParagraphSujet, nodeStyleParagraphStudent, retour, nameElt);
}
}
}
}
retour = evalLesNodesEnfantsDesAnalyseAuTraversAnalyseStyle(nodeStyleParagraphSujet, nodeStyleParagraphStudent, retour, nameItem, nameElt);
return retour;
}
/**
* Evalue tous les nodes enfants des nodes analysés au travers d'analyseStyle.
* @param nodeStyleParagraphSujet
* @param nodeStyleParagraphStudent
* @param retour
* @param nameItem
* @param nameElt
* @return
*/
private static node evalLesNodesEnfantsDesAnalyseAuTraversAnalyseStyle(node nodeStyleParagraphSujet, node nodeStyleParagraphStudent, node retour, String nameItem, String nameElt) {
for(int i = 0 ; i < nodeStyleParagraphSujet.getNodes().size();i++) {
String nameNodeSujet = nodeStyleParagraphSujet.getNodes().get(i).getNomElt();
if(nodeStyleParagraphStudent!=null) {
if(nodeStyleParagraphSujet.retourneEnfantsByNameExist(nameNodeSujet) && nodeStyleParagraphStudent.retourneEnfantsByNameExist(nameNodeSujet) ) {
node propertiesSujet = nodeStyleParagraphSujet.getNodes().get(i);
if(propertiesSujet.getAttributs().get("evaluer")!=null) {
if(propertiesSujet.getAttributs().get("evaluer").equals("true")) {
node propertiesStudent = nodeStyleParagraphStudent.retourneFirstEnfantsByName(nameNodeSujet);
if(nameNodeSujet.equals("style:tab-stop")) {
propertiesStudent = rechercherUnNodeStudent.rechercheLeNodeEnCascade(nameNodeSujet, nodeStyleParagraphSujet.getNodes().get(i), null, null, nodeStyleParagraphStudent, null);
}
Enumeration<String> key = propertiesSujet.getAttributs().keys();
while(key.hasMoreElements()) {
String k = key.nextElement();
if(!listMethodeEvaluationAnalyseWriter.isMethodeEvaluationAnalyseWriterAvecPoint(k) &&
( propertiesSujet.getAttributs().get(k).contains("") || propertiesSujet.getAttributs().get(k).contains("")) ){
if(propertiesStudent!=null) {
String valueAttributStudent = propertiesStudent.getAttributs().get(k);
String valueAttributSujet = propertiesSujet.getAttributs().get(k).replace("", "");
node item = retourneNoteAvecResultatsAnalyse(nameItem,k, valueAttributStudent, valueAttributSujet,nameNodeSujet);
retour.getNodes().add(item);
}else {
String valueAttributStudent = "null";
String valueAttributSujet = propertiesSujet.getAttributs().get(k).replace("", "");
node item = retourneNoteAvecResultatsAnalyse(nameItem, k, valueAttributStudent, valueAttributSujet,nameNodeSujet);
retour.getNodes().add(item);
}
}
// évaluation des méthodes d'analyseWriter au travers de la méthode analyseStyle
if(listMethodeEvaluationAnalyseWriter.isMethodeEvaluationAnalyseWriterAvecPoint(k)) {
switch (k) {
case "evalNameNode": {
retour = evaluationAttribut.evaluationNameNode(retour, nodeStyleParagraphStudent, propertiesSujet.getNomElt(), propertiesSujet.getAttributs().get(k), propertiesSujet.getNomElt());
}
case "evalLegacyStyleParentPresent":{
retour = evaluationAttribut.evalPresenceStyleParent(propertiesSujet, nodeStyleParagraphStudent, retour, nameElt);
}
}
}
}
}
}
}
}else {
if(nodeStyleParagraphSujet.retourneEnfantsByNameExist(nameNodeSujet)) {
node propertiesSujet = nodeStyleParagraphSujet.getNodes().get(i);
if(propertiesSujet.getAttributs().get("evaluer")!=null) {
if(propertiesSujet.getAttributs().get("evaluer").equals("true")) {
Enumeration<String> key = propertiesSujet.getAttributs().keys();
while(key.hasMoreElements()) {
String k = key.nextElement();
if(propertiesSujet.getAttributs().get(k).contains("") || propertiesSujet.getAttributs().get(k).contains("")){
String valueAttributStudent = "null";
String valueAttributSujet = propertiesSujet.getAttributs().get(k).replace("", "");
node item = retourneNoteAvecResultatsAnalyse(nameItem, k, valueAttributStudent, valueAttributSujet,nameNodeSujet);
retour.getNodes().add(item);
}
// évaluation des méthodes d'analyseWriter au travers de la méthode analyseStyle
if(listMethodeEvaluationAnalyseWriter.isMethodeEvaluationAnalyseWriterAvecPoint(k)) {
switch (k) {
case "evalNameNode": {
retour = evaluationAttribut.evaluationNameNode(retour, nodeStyleParagraphStudent, propertiesSujet.getNomElt(), propertiesSujet.getAttributs().get(k), propertiesSujet.getNomElt());
}
case "evalLegacyStyleParentPresent":{
retour = evaluationAttribut.evalPresenceStyleParent(propertiesSujet, nodeStyleParagraphStudent, retour, nameElt);
}
}
}
}
}
}
}
}
if(nodeStyleParagraphSujet.getNodes().get(i).getNodes().size()>0) {
if(nodeStyleParagraphStudent!=null) {
String nameNodeEnfantSujet = nodeStyleParagraphSujet.getNodes().get(i).getNomElt();
if(nodeStyleParagraphStudent!=null) {
if(nodeStyleParagraphSujet.retourneEnfantsByNameExist(nameNodeEnfantSujet) && nodeStyleParagraphStudent.retourneEnfantsByNameExist(nameNodeEnfantSujet) ) {
if(nameNodeEnfantSujet.equals("style:tab-stop")) {
node propertiesStudent = rechercherUnNodeStudent.rechercheLeNodeEnCascade(nameNodeSujet, nodeStyleParagraphSujet.getNodes().get(i), null, null, nodeStyleParagraphStudent, null);
retour = evalLesNodesEnfantsDesAnalyseAuTraversAnalyseStyle(nodeStyleParagraphSujet.getNodes().get(i),propertiesStudent, retour, nameItem, nodeStyleParagraphSujet.getNodes().get(i).getNomElt());
}else {
retour = evalLesNodesEnfantsDesAnalyseAuTraversAnalyseStyle(nodeStyleParagraphSujet.getNodes().get(i), nodeStyleParagraphStudent.retourneFirstEnfantsByName(nameNodeEnfantSujet), retour, nameItem, nodeStyleParagraphSujet.getNodes().get(i).getNomElt());
}
}
}
}else {
retour = evalLesNodesEnfantsDesAnalyseAuTraversAnalyseStyle(nodeStyleParagraphSujet.getNodes().get(i), null, retour, nameItem, nameElt);
}
}
}
return retour;
}
/**
* POINTS D'ENTREES DES METHODES D'EVALUATION</br>
* </br>
* Analyse tous les attributs et les contenus d'un node.<br>
* Les attributs et les contenus doivent posséder la caractère ‽ ou ‼.<br>
* Ou le node doit posséder des attributs d'analyseWriter comme allContent="1", etc...</br>
* <br>
* @param nodeStudent : le node de l'étudiant.
* @param sujet : le node du sujet
* @param retour : le node à retourner avec les enfants nommés nameItem.
* @param nameItem : le nom des nodes enfants.
* @param nameElt : le nom de l'élément (node) analysé.
* @return le node <b>retour</b> avec tous les nodes enfants <b>nameItem</b> contenant les différentes analyse.
*/
public static node evalLesAttributEtContenuDuNode(node nodeStudent, node sujet, node retour, String nameItem, String nameElt) {
Enumeration<String> key = sujet.getAttributs().keys();
while(key.hasMoreElements()) {
String k = key.nextElement();
// evaluer les attributs de Writer avec l'évaluateur ‽
if( sujet.getAttributs().get(k).contains("")){
if(nodeStudent!=null) {
String valueAttributStudent = nodeStudent.getAttributs().get(k);
String valueAttributSujet = sujet.getAttributs().get(k);
node item = retourneNoteAvecResultatsAnalyse(nameItem,k, valueAttributStudent, valueAttributSujet,nameElt);
retour.getNodes().add(item);
}else {
String valueAttributStudent = "null";
String valueAttributSujet = sujet.getAttributs().get(k);
node item = retourneNoteAvecResultatsAnalyse(nameItem, k, valueAttributStudent, valueAttributSujet,nameElt);
retour.getNodes().add(item);
}
}
// evaluer avec evalNameNode, evalNameCreator, evalNameInitialCreator, evalEntetePasActive, evalPiedPagePasActive
// evalNameSequen, evalNamePage
if(!sujet.getAttributs().get(k).equals("0")) {
//évaluation du nom du node.
//Uniquement si pas au travers d'analyseStyle.
if(k.equals("evalNameNode") && !sujet.getAttributs().get(k).equals("0")) {
if(sujet.retourneParentByNameNode("style:style")!=null) {
node nodeStyleStyle = sujet.retourneParentByNameNode("style:style");
if(nodeStyleStyle.getAttributs().get("EvaluerATraversAnalyseStyle")!=null) {
if(nodeStyleStyle.getAttributs().get("EvaluerATraversAnalyseStyle").equals("false")) {
if(nodeStudent!=null) {
retour = evaluationNameNode(retour,nodeStudent, sujet.getNomElt(), sujet.getAttributs().get("evalNameNode"),sujet.getNomElt());
}else {
retour = evaluationNameNode(retour,null, sujet.getNomElt(), sujet.getAttributs().get("evalNameNode"),sujet.getNomElt());
}
}
}
}else {
if(nodeStudent!=null) {
retour = evaluationNameNode(retour,nodeStudent, sujet.getNomElt(), sujet.getAttributs().get("evalNameNode"),sujet.getNomElt());
}else {
retour = evaluationNameNode(retour,null, sujet.getNomElt(), sujet.getAttributs().get("evalNameNode"),sujet.getNomElt());
}
}
}
//évaluation du nom du style héridé.
if(k.equals("evalNameLegacyStyle") && !sujet.getAttributs().get(k).equals("0")) {
retour = evalNameLegacyStyle(sujet,nodeStudent,retour,nameElt);
}
//évaluation du nom du créateur.
if(k.equals("evalNameCreator") && sujet.getNomElt().equals("dc:creator")) {
if(nodeStudent!=null) {
retour = evaluationNameCreator(retour,nodeStudent, nodeStudent.getContenu().get(0), sujet.getAttributs().get("evalNameCreator"),"Editeur");
}else {
retour = evaluationNameCreator(retour,null, "Pas trouvé l'auteur", sujet.getAttributs().get("evalNameCreator"),"Editeur");
}
}
//évaluation du créateur initial
if(k.equals("evalNameInitialCreator") && sujet.getNomElt().equals("meta:initial-creator")) {
if(nodeStudent!=null) {
retour = evaluationNameInitialCreator(retour,nodeStudent, nodeStudent.getContenu().get(0), sujet.getAttributs().get("evalNameInitialCreator"),"Créateur");
}else {
retour = evaluationNameInitialCreator(retour,null, "Pas trouvé le créateur", sujet.getAttributs().get("evalNameInitialCreator"),"Créateur");
}
}
// evaluer la non activation de l'entête.
if(k.equals("evalEntetePasActive") && sujet.getNomElt().equals("style:header-style")) {
retour=evalEntetePasActive(sujet, nodeStudent, retour, nameElt);
}
// evaluer l'activation de l'entête
if(k.equals("evalEnteteActive") && sujet.getNomElt().equals("style:header-style")) {
retour=evalEnteteActive(sujet, nodeStudent, retour, nameElt);
}
//evaluer la non activation du pied de page.
if(k.equals("evalPiedPagePasActive") && sujet.getNomElt().equals("style:footer-style")) {
retour=evalPiedDePagePasActive(sujet, nodeStudent, retour, nameElt);
}
// evaluer l'activation du pied de page
if(k.equals("evalPiedPageActive") && sujet.getNomElt().equals("style:footer-style")) {
retour=evalPiedDePageActive(sujet, nodeStudent, retour, nameElt);
}
// evaluation du nom de la séquence.
if(k.equals("evalNameSequence") && sujet.getNomElt().equals("text:sequence-decl")) {
if(nodeStudent!=null) {
retour = evaluationNameSequence(retour,nodeStudent, sujet.getAttributs().get("text:name"), sujet.getAttributs().get("evalNameSequence"),"Séquence");
}else {
retour = evaluationNameSequence(retour,null, "Pas trouvé la séquence", sujet.getAttributs().get("evalNameSequence"),"Séquence");
}
}
// evaluation du nom de la page
if(k.equals("evalNamePage") && sujet.getNomElt().equals("page")) {
if(nodeStudent!=null) {
retour = evaluationNamePage(retour,nodeStudent, evaluation.withoutCodeAndPointPourRechercheContenuExact(sujet.getAttributs().get("style:master-page-name")), sujet.getAttributs().get("evalNamePage"),"Page");
}else {
retour = evaluationNamePage(retour,null, evaluation.withoutCodeAndPointPourRechercheContenuExact(sujet.getAttributs().get("style:master-page-name")), sujet.getAttributs().get("evalNamePage"),"Page");
}
}
// evaluation de la propriété personnalisé dans la structure du document
if(k.equals("evalTextUserDefined")) {
if(nodeStudent!=null) {
retour = evaluationTextUserDefined(retour,nodeStudent, sujet.getAttributs().get("text:name"), sujet.getAttributs().get("evalTextUserDefined"),"Propriété personnalisé");
}else {
retour = evaluationTextUserDefined(retour,null, "Pas trouvé la valeur", sujet.getAttributs().get("evalTextUserDefined"),"Propriété personnalisé");
}
}
// evaluation du numéro de la page.
if(k.equals("evalNumeroPage") && sujet.getNomElt().equals("page")) {
if(nodeStudent!=null) {
retour = evaluationNumeroPage(retour,nodeStudent, sujet.getAttributs().get("numero"), sujet.getAttributs().get("evalNumeroPage"),"numéro");
}else {
retour = evaluationNumeroPage(retour,null, "Pas trouvé la page", sujet.getAttributs().get("evalNumeroPage"),"numéro");
}
}
// evaluation du numéro absolu de la page.
if(k.equals("evalNumeroAbsoluePage") && sujet.getNomElt().equals("page")) {
if(nodeStudent!=null) {
retour = evaluationNumeroAbsoluePage(retour,nodeStudent, sujet.getAttributs().get("numeroabsolue"), sujet.getAttributs().get("evalNumeroAbsoluePage"),"numéro absolue");
}else {
retour = evaluationNumeroAbsoluePage(retour,null, "Pas trouvé la page", sujet.getAttributs().get("evalNumeroAbsoluePage"),"numéro absolue");
}
}
// evaluation de l'ancrage au numéro absolu de la page.
if(k.equals("evalAncrageNumeroAbsoluePage") && listeDesNodesAncrable.isAncrable(sujet)) {
if(nodeStudent!=null) {
retour = evaluationNumeroAbsoluePage(retour,nodeStudent.retourneNodePage(), sujet.retourneNodePage().getAttributs().get("numeroabsolue"), sujet.getAttributs().get("evalAncrageNumeroAbsoluePage"),"Ancrage");
}else {
retour = evaluationNumeroAbsoluePage(retour,null, "Pas trouvé la page", sujet.retourneNodePage().getAttributs().get("numeroabsolue"),"Ancrage");
}
}
// evaluation du placement du paragraphe
if(k.equals("evalPlacement") && listeDesNodesEvalPlacement.isPlacement(sujet)) {
retour=evalPlacement(sujet, nodeStudent, retour, nameElt);
}
//evaluation du premier enfant
if(k.equals("evalFirstChild") && listeDesNodesEvalPlacement.isPlacement(sujet)) {
if(nodeStudent!=null) {
String ReponseSujet = String.valueOf(sujet.isFirstChildNode());
retour = evaluationPremierEnfant(retour,nodeStudent, ReponseSujet, sujet.getAttributs().get("evalFirstChild"),"FirstChild");
}else {
retour = evaluationPremierEnfant(retour,null, "true", sujet.getAttributs().get("evalFirstChild"),"FirstChild");
}
}
//evaluation du dernier enfant
if(k.equals("evalLastChild") && listeDesNodesEvalPlacement.isPlacement(sujet)) {
if(nodeStudent!=null) {
String ReponseSujet = String.valueOf(sujet.isLastChildNode());
retour = evaluationDernierEnfant(retour,nodeStudent, ReponseSujet, sujet.getAttributs().get("evalLastChild"),"LastChild");
}else {
retour = evaluationDernierEnfant(retour,null, "true", sujet.getAttributs().get("evalLastChild"),"LastChild");
}
}
//evaluation de l'absence ou de la présence du formatage direct
if(k.equals("evalFormatageDirect") && listeDesNodesFormatageDirect.isFormatageDirect(sujet)) {
retour = evalFormatageDirect(sujet,nodeStudent,retour,nameElt);
}
//evaluation de l'absence ou de la présence du saut de page ou de colonne
if(k.equals("evalSautPageColonne") && listeDesNodesFormatageDirect.isFormatageDirect(sujet)) {
retour = evalSautPageColonne(sujet,nodeStudent,retour,nameElt);
}
//evaluation de l'absence de paragraphe vide dans la page
if(k.equals("evalPasParagrapheVide") && listeDesNodesPourEvaluerPage.isPage(sujet)) {
retour = evalPasParagrapheVide(sujet,nodeStudent,retour,nameElt);
}
//evaluation du nombre de page maximal
if(k.equals("evalNombreDePageMaxi") && sujet.getNomElt().equals("structurepage")) {
retour = evalNombreDePageMaxi(sujet,nodeStudent,retour,nameElt);
}
//evaluation du nombre de page maximal
if(k.equals("evalNombreDePageMini") && sujet.getNomElt().equals("structurepage")) {
retour = evalNombreDePageMini(sujet,nodeStudent,retour,nameElt);
}
//evaluation de la présence ou de l'absence d'un style Parent
//uniquement si ce n'est pas au travers d'analyseStyle
if(k.equals("evalLegacyStyleParentPresent") && sujet.getNomElt().equals("style:style")) {
if(sujet.getAttributs().get("EvaluerATraversAnalyseStyle")==null) {
retour = evalPresenceStyleParent(sujet,nodeStudent,retour,nameElt);
}else {
if(sujet.getAttributs().get("EvaluerATraversAnalyseStyle").equals("false")){
retour = evalPresenceStyleParent(sujet,nodeStudent,retour,nameElt);
}
}
}
}
}
//allContent
if(sujet.getAttributs().get("allContent")!=null) if(!sujet.getAttributs().get("allContent").isEmpty()){
retour = allContent(sujet, nodeStudent, retour, nameElt, nameItem);
}
return retour;
}
//****************************************************************************
//****************************************************************************
//** LES METHODES LORSQU'ELLES SONT LONGUES **
//****************************************************************************
//****************************************************************************
/**
* Méthode allContent.</br>
* Evaluer le contenu textuel d'un node.</br>
* @param sujet : le node sujet.
* @param nodeStudent : le node du student.
* @param retour : le node contenant les points et les informations de l'évaluation.
* @param nameElt : le mon de l'élément évalué.
* @return le node retour
*/
private static node allContent(node sujet, node nodeStudent, node retour, String nameElt, String nameItem) {
String points ="‽0";
if(sujet.getAttributs().get("allContent").contains("strict")) points = sujet.getAttributs().get("allContent").replace("strict", "");
if(sujet.getAttributs().get("allContent").contains("strictSansEspace")) points = sujet.getAttributs().get("allContent").replace("strictSansEspace", "≡‽");
if(sujet.getAttributs().get("allContent").contains("environ")) points = sujet.getAttributs().get("allContent").replace("environ", "¢‽");
String testPoint = points.substring(points.indexOf("")+1, points.length());
boolean pasDeProblem = true;
boolean pointSupAUn = false;
try {
if(Integer.valueOf(testPoint)>=1) pointSupAUn=true;
}catch (Exception e) {
commandes.message.append("<p>** ERREUR : "+"Dans le node " + sujet.getNomElt() + ".\nIl y a un problème avec la valeur de l'attribut allContent=\"" + sujet.getAttributs().get("allContent") + "\""
+"</p>");
System.out.println("Dans le node " + sujet.getNomElt() + ".\nIl y a un problème avec la valeur de l'attribut allContent=\"" + sujet.getAttributs().get("allContent") + "\"");
System.out.println(e.toString());
pasDeProblem=false;
}
if(pasDeProblem && pointSupAUn) {
String allContentSujet = evaluation.withoutCodeAndPointPourRechercheContenuExact(sujet.retourneLesContenusEnfants("")) + points;
String allContentStudent = "null";
if( nodeStudent!=null) allContentStudent = nodeStudent.retourneLesContenusEnfants("");
node item = retourneNoteAvecResultatsAnalyse(nameItem,"Contenu textuel", allContentStudent, allContentSujet, nameElt);
retour.getNodes().add(item);
}
return retour;
}
/**
* Méthode evalNameLegacyStyle.</br>
* Evaluer le nom du style hérité.</br>
* @param sujet : le node sujet.
* @param nodeStudent : le node du student.
* @param retour : le node contenant les points et les informations de l'évaluation.
* @param nameElt : le mon de l'élément évalué.
* @return le node retour
*/
private static node evalNameLegacyStyle(node sujet, node nodeStudent, node retour, String nameElt) {
String nameLegacyStyleSujet = sujet.getAttributs().get("text:style-name");
String point = sujet.getAttributs().get("evalNameLegacyStyle");
Pattern p = Pattern.compile("^P[0-9]{1,}|^T[0-9]{1,}|^L[0-9]{1,}");
if(nameLegacyStyleSujet!=null) {
Matcher m = p.matcher(nameLegacyStyleSujet);
if(m.find()) {
node fichier = sujet.racineDuNode();
node styleParagraphs = fichier.retourneFirstEnfantsByName("style:paragraph").retourneFirstNodeByNameAndAttributValueExactStrict("style:style", "style:name", nameLegacyStyleSujet);
if(styleParagraphs!=null) {
if(styleParagraphs.getAttributs().get("style:parent-style-name")!=null) {
nameLegacyStyleSujet = styleParagraphs.getAttributs().get("style:parent-style-name");
}
}
}
}
String nameLegacyStyleStudent="";
if(nodeStudent!=null) {
nameLegacyStyleStudent = nodeStudent.getAttributs().get("text:style-name");
if(nameLegacyStyleStudent!=null) {
Matcher m = p.matcher(nameLegacyStyleStudent);
if(m.find()) {
if(nodeStudent.getAttributs().get("text:style-name")!=null) {
String nameStyle1 = nodeStudent.getAttributs().get("text:style-name");
node fichier = nodeStudent.racineDuNode();
node styleParagraphs = fichier.retourneFirstEnfantsByName("style:paragraph").retourneFirstNodeByNameAndAttributValueExactStrict("style:style", "style:name", nameStyle1);
if(styleParagraphs!=null) {
if(styleParagraphs.getAttributs().get("style:parent-style-name")!=null) {
nameLegacyStyleStudent = styleParagraphs.getAttributs().get("style:parent-style-name");
}
}
}
}
}
}
if(nodeStudent!=null) {
retour = evaluationNameLegacyStyle(retour,nodeStudent, sujet.getNomElt(), point, nameElt, nameLegacyStyleStudent, nameLegacyStyleSujet) ;
}else {
retour = evaluationNameLegacyStyle(retour,null, sujet.getNomElt(), point, nameElt, nameLegacyStyleStudent, nameLegacyStyleSujet) ;
}
return retour;
}
/**
* Méthode evalEntetePasActive.</br>
* Evaluer l'absence de node dans le node style:header-style.</br>
* @param sujet : le node sujet.
* @param nodeStudent : le node du student.
* @param retour : le node contenant les points et les informations de l'évaluation.
* @param nameElt : le mon de l'élément évalué.
* @return le node retour
*/
private static node evalEntetePasActive(node sujet, node nodeStudent, node retour, String nameElt) {
if(nodeStudent!=null) {
String reponseSujet = "non";
String reponseStudent = "non";
if(sujet.getNodes().size()==0) reponseSujet="oui";
if(nodeStudent.getNodes().size()==0) reponseStudent="oui";
retour = evaluationEntetePasActive(retour,reponseStudent,reponseSujet,sujet.getAttributs().get("evalEntetePasActive"),"Entete");
}else {
String reponseSujet = "non";
if(sujet.getNodes().size()==0) reponseSujet="oui";
retour = evaluationEntetePasActive(retour,null, reponseSujet, sujet.getAttributs().get("evalEntetePasActive"),"Entete");
}
return retour;
}
/**
* Méthode evalEnteteActive.</br>
* Evaluer la présence de node dans style:header-style.</br>
* @param sujet : le node sujet.
* @param nodeStudent : le node du student.
* @param retour : le node contenant les points et les informations de l'évaluation.
* @param nameElt : le mon de l'élément évalué.
* @return le node retour
*/
private static node evalEnteteActive(node sujet, node nodeStudent, node retour, String nameElt) {
if(nodeStudent!=null) {
String reponseSujet = "non";
String reponseStudent = "non";
if(sujet.getNodes().size()>0) reponseSujet="oui";
if(nodeStudent.getNodes().size()>0) reponseStudent="oui";
retour = evaluationEnteteActive(retour,reponseStudent,reponseSujet,sujet.getAttributs().get("evalEnteteActive"),"Entete");
}else {
String reponseSujet = "non";
if(sujet.getNodes().size()>0) reponseSujet="oui";
retour = evaluationEnteteActive(retour,null, reponseSujet, sujet.getAttributs().get("evalEnteteActive"),"Entete");
}
return retour;
}
/**
* Méthode evalPiedDePagePasActive.</br>
* Evaluer l'absence de node dans le node style:footer-style.</br>
* @param sujet : le node sujet.
* @param nodeStudent : le node du student.
* @param retour : le node contenant les points et les informations de l'évaluation.
* @param nameElt : le mon de l'élément évalué.
* @return le node retour
*/
private static node evalPiedDePagePasActive(node sujet, node nodeStudent, node retour, String nameElt) {
if(nodeStudent!=null) {
String reponseSujet = "non";
String reponseStudent = "non";
if(sujet.getNodes().size()==0) reponseSujet="oui";
if(nodeStudent.getNodes().size()==0) reponseStudent="oui";
retour = evaluationPiedPagePasActive(retour,reponseStudent,reponseSujet , sujet.getAttributs().get("evalPiedPagePasActive"),"Pied page");
}else {
String reponseSujet = "non";
if(sujet.getNodes().size()==0) reponseSujet="oui";
retour = evaluationPiedPagePasActive(retour,null, reponseSujet, sujet.getAttributs().get("evalPiedPagePasActive"),"Pied page");
}
return retour;
}
/**
* Méthode evalPiedDePageActive.</br>
* Evaluer la présence de node dans le node style:header-style.</br>
* @param sujet : le node sujet.
* @param nodeStudent : le node du student.
* @param retour : le node contenant les points et les informations de l'évaluation.
* @param nameElt : le mon de l'élément évalué.
* @return le node retour
*/
private static node evalPiedDePageActive(node sujet, node nodeStudent, node retour, String nameElt) {
if(nodeStudent!=null) {
String reponseSujet = "non";
String reponseStudent = "non";
if(sujet.getNodes().size()>0) reponseSujet="oui";
if(nodeStudent.getNodes().size()>0) reponseStudent="oui";
retour = evaluationPiedPageActive(retour,reponseStudent,reponseSujet , sujet.getAttributs().get("evalPiedPageActive"),"Pied page");
}else {
String reponseSujet = "non";
if(sujet.getNodes().size()>0) reponseSujet="oui";
retour = evaluationPiedPageActive(retour,null, reponseSujet, sujet.getAttributs().get("evalPiedPageActive"),"Pied page");
}
return retour;
}
/**
* Méthode Placement;</br>
* Evaluer si le node placé juste avant est le même que dans le sujet.</br>
* @param sujet : le node sujet.
* @param nodeStudent : le node du student.
* @param retour : le node contenant les points et les informations de l'évaluation.
* @param nameElt : le mon de l'élément évalué.
* @return le node retour
*/
private static node evalPlacement(node sujet,node nodeStudent, node retour, String nameElt) {
if(nodeStudent!=null) {
int calcul = 0;
node nodeSujetfrereAvant = sujet.retourneLeNodeFrereAvant();
node nodParentSujet = sujet.getParent();
if(nodParentSujet!=null)if(nodParentSujet.getNomElt().equals("OU")) {
nodeSujetfrereAvant = nodParentSujet.retourneLeNodeFrereAvant();
}
if(nodeSujetfrereAvant!=null)if(nodeSujetfrereAvant.getNomElt().equals("OU")) {
nodeSujetfrereAvant = nodeSujetfrereAvant.getNodes().get(0);
}
while(nodParentSujet.getNomElt().equals("text:span")) {
nodParentSujet = nodParentSujet.getParent();
sujet = sujet.getParent();
}
node nodeStudentfereAvant = nodeStudent.retourneLeNodeFrereAvant();
//si le node frère avant est null alors traitement des nodes text:span (formatage local des caractères)
if(nodeStudentfereAvant==null) {
while(nodeStudent.getParent().getNomElt().equals("text:span")){
nodeStudentfereAvant = nodeStudent.getParent().retourneLeNodeFrereAvant();
nodeStudent = nodeStudent.getParent();
}
}
if(nodeSujetfrereAvant==null) nodeSujetfrereAvant = new node();
if(nodeStudentfereAvant==null) nodeStudentfereAvant = new node();
String A = nodeSujetfrereAvant.retourneLesContenusEnfants("");
String B = nodeStudentfereAvant.retourneLesContenusEnfants("");
if(A.isEmpty()) A = "Paragraphe vide";
if(B.isEmpty()) B = "Paragraphe vide";
if(!A.isEmpty() && !B.isEmpty()) if(cXML.StringSimilarity.similarity(A, B)>0.92) calcul++;
if(calcul==1) {
retour = evaluationPlacement(retour,B, A , sujet.getAttributs().get("evalPlacement"),"Placement");
}else {
retour = evaluationPlacement(retour,B, A , sujet.getAttributs().get("evalPlacement"),"Placement");
}
}else {
node nodeSujetAvant = sujet.retourneLeNodeFrereAvant();
if(nodeSujetAvant!=null) {
retour = evaluationPlacement(retour,null, nodeSujetAvant.retourneLesContenusEnfants(""), sujet.getAttributs().get("evalPlacement"),"Placement");
}else {
retour = evaluationPlacement(retour,null, "", sujet.getAttributs().get("evalPlacement"),"Placement");
}
}
return retour;
}
/**
* Méthode evalFormatgeDirect.</br>
* Evaluer la présence ou l'absence d'un formatage direct d'un style.</br>
* @param sujet
* @param nodeStudent
* @param retour
* @param nameElt
* @return
*/
private static node evalFormatageDirect(node sujet,node nodeStudent, node retour, String nameElt) {
if(nodeStudent!=null) {
String nameStyleStudent = "nonStudent";
boolean formatageStudent = false;
String nameStyleSujet = "nonSujet";
boolean formatageSujet = false;
if(nodeStudent.getAttributs().get("text:style-name")!=null) {
nameStyleStudent=nodeStudent.getAttributs().get("text:style-name");
}
if(sujet.getAttributs().get("text:style-name")!=null) {
nameStyleSujet = sujet.getAttributs().get("text:style-name");
nameStyleSujet = evaluation.withoutCodeAndPointPourRechercheContenuExact(nameStyleSujet);
}
Pattern p = Pattern.compile("^P[0-9]{1,}$");
Matcher m = p.matcher(nameStyleStudent);
if(m.find()) formatageStudent=true;
m = p.matcher(nameStyleSujet);
if(m.find()) formatageSujet=true;
if((formatageSujet && formatageStudent)) {
retour = evaluationFormatageDirect(retour,"Présence formatage direct", "Présence formatage direct", sujet.getAttributs().get("evalFormatageDirect"),"Formatage");
}
if((!formatageSujet && !formatageStudent)){
retour = evaluationFormatageDirect(retour,"Absence formatage direct", "Absence formatage direct" , sujet.getAttributs().get("evalFormatageDirect"),"Formatage");
}
if((formatageSujet && !formatageStudent)){
retour = evaluationFormatageDirect(retour,"Présence formatage direct", "Absence formatage direct" , sujet.getAttributs().get("evalFormatageDirect"),"Formatage");
}
if((!formatageSujet && formatageStudent)){
retour = evaluationFormatageDirect(retour,"Absence formatage direct", "Présence formatage direct" , sujet.getAttributs().get("evalFormatageDirect"),"Formatage");
}
}else {
String nameStyleSujet = "nonSujet";
boolean formatageSujet = false;
if(sujet.getAttributs().get("text:style-name")!=null) {
nameStyleSujet = sujet.getAttributs().get("text:style-name");
}
Pattern p = Pattern.compile("^P[0-9]{1,}$");
Matcher m = p.matcher(nameStyleSujet);
if(m.find()) formatageSujet=true;
if((formatageSujet)){
retour = evaluationFormatageDirect(retour,null, "Présence formatage direct" , sujet.getAttributs().get("evalFormatageDirect"),"Formatage");
}else {
retour = evaluationFormatageDirect(retour,null, "Absence formatage direct" , sujet.getAttributs().get("evalFormatageDirect"),"Formatage");
}
}
return retour;
}
/**
* Méthode evalSautPageColonne.</br>
* Evaluer la présence ou l'absence d'un saut de page ou de colonne.</br>
* @param sujet
* @param nodeStudent
* @param retour
* @param nameElt
* @return
*/
private static node evalSautPageColonne(node sujet,node nodeStudent, node retour, String nameElt) {
if(nodeStudent!=null) {
String typeSautStudent = "pas de saut";
String typeSautSujet = "pas de saut";
if(nodeStudent.getAttributs().get("text:style-name")!=null) {
String styleName = nodeStudent.getAttributs().get("text:style-name");
node styleStudent = nodeStudent.racineDuNode().retourneFirstEnfantsByName("style:paragraph").retourneFirstNodeByNameAndAttributValueExactStrict("style:style", "style:name", styleName);
if(styleStudent!=null) {
styleStudent = styleStudent.retourneFirstEnfantsByName("style:paragraph-properties");
if(styleStudent!=null) {
if(styleStudent.getAttributs().get("fo:break-before")!=null) {
if(styleStudent.getAttributs().get("fo:break-before")!="none") {
typeSautStudent = styleStudent.getAttributs().get("fo:break-before");
}
}
if(styleStudent.getAttributs().get("fo:break-after")!=null) {
if(styleStudent.getAttributs().get("fo:break-after")!="none") {
typeSautStudent = styleStudent.getAttributs().get("fo:break-after");
}
}
}
}
}
if(sujet.getAttributs().get("text:style-name")!=null) {
String styleName = sujet.getAttributs().get("text:style-name");
node styleSujet = sujet.racineDuNode().retourneFirstEnfantsByName("style:paragraph");
if(styleSujet!=null) {
styleSujet = styleSujet.retourneFirstNodeByNameAndAttributValueExactStrict("style:style", "style:name", styleName);
if(styleSujet!=null) {
styleSujet = styleSujet.retourneFirstEnfantsByName("style:paragraph-properties");
if(styleSujet!=null) {
if(styleSujet.getAttributs().get("fo:break-before")!=null) {
if(styleSujet.getAttributs().get("fo:break-before")!="none") {
typeSautSujet = styleSujet.getAttributs().get("fo:break-before");
}
}
if(styleSujet.getAttributs().get("fo:break-after")!=null) {
if(styleSujet.getAttributs().get("fo:break-after")!="none") {
typeSautSujet = styleSujet.getAttributs().get("fo:break-after");
}
}
}
}
}
}
typeSautSujet = evaluation.withoutCodeAndPointPourRechercheContenuExact(typeSautSujet);
if(typeSautSujet.equals("auto")) typeSautSujet="page";
if(typeSautStudent.equals("auto")) typeSautStudent="page";
retour = evaluationSautPageColonne(retour,typeSautStudent, typeSautSujet, sujet.getAttributs().get("evalSautPageColonne"),"Saut");
}else {
String typeSautStudent = "pas de saut";
String typeSautSujet = "pas de saut";
if(sujet.getAttributs().get("text:style-name")!=null) {
String styleName = sujet.getAttributs().get("text:style-name");
node styleSujet = sujet.racineDuNode().retourneFirstEnfantsByName("style:paragraph");
if(styleSujet!=null) {
styleSujet = styleSujet.retourneFirstNodeByNameAndAttributValueExactStrict("style:style", "style:name", styleName);
if(styleSujet!=null) {
styleSujet = styleSujet.retourneFirstEnfantsByName("style:paragraph-properties");
if(styleSujet!=null) {
if(styleSujet.getAttributs().get("fo:break-before")!=null) {
typeSautSujet = styleSujet.getAttributs().get("fo:break-before");
typeSautSujet = evaluation.withoutCodeAndPointPourRechercheContenuExact(typeSautSujet);
}
if(styleSujet.getAttributs().get("fo:break-after")!=null) {
typeSautSujet = styleSujet.getAttributs().get("fo:break-after");
typeSautStudent = styleSujet.getAttributs().get("fo:break-after");
}
}
}
}
}
if(typeSautSujet.equals("auto")) typeSautSujet="page";
retour = evaluationSautPageColonne(retour,typeSautStudent, typeSautSujet, sujet.getAttributs().get("evalSautPageColonne"),"Saut");
}
return retour;
}
private static node evalNombreDePageMaxi(node sujet,node nodeStudent, node retour, String nameElt) {
int point = 0;
int nombrePage = 1;
if(sujet.getAttributs().get("evalNombreDePageMaxi")!=null) {
String valeur = sujet.getAttributs().get("evalNombreDePageMaxi");
String A = valeur.substring(0, valeur.lastIndexOf("page"));
nombrePage = Integer.valueOf(A);
A = valeur.substring(valeur.lastIndexOf("page")+4, valeur.length());
point = Integer.valueOf(A);
}
String reponseSujet = "Nombre page inférieur ou égal à " +String.valueOf(nombrePage);
String reponseStudent = "Nombre page n'est pas inférieur ou égal à " +String.valueOf(nombrePage);
if(nodeStudent!=null) {
if(nodeStudent.getNodes().size()<=nombrePage) {
reponseStudent = "Nombre page inférieur ou égal à " +String.valueOf(nombrePage);
}
retour = evaluationNombreDePageMaxi(retour,reponseStudent, reponseSujet, String.valueOf(point),"Nombre de page maxi");
}else {
retour = evaluationNombreDePageMaxi(retour,reponseStudent, reponseSujet, String.valueOf(point),"Nombre de page maxi");
}
return retour;
}
private static node evalNombreDePageMini(node sujet,node nodeStudent, node retour, String nameElt) {
int point = 0;
int nombrePage = 1;
if(sujet.getAttributs().get("evalNombreDePageMini")!=null) {
String valeur = sujet.getAttributs().get("evalNombreDePageMini");
String A = valeur.substring(0, valeur.lastIndexOf("page"));
nombrePage = Integer.valueOf(A);
A = valeur.substring(valeur.lastIndexOf("page")+4, valeur.length());
point = Integer.valueOf(A);
}
String reponseSujet = "Nombre page supérieur ou égal à " +String.valueOf(nombrePage);
String reponseStudent = "Nombre page n'est pas supérieur ou égal à " +String.valueOf(nombrePage);
if(nodeStudent!=null) {
if(nodeStudent.getNodes().size()>=nombrePage) {
reponseStudent = "Nombre page supérieur ou égal à " +String.valueOf(nombrePage);
}
retour = evaluationNombreDePageMaxi(retour,reponseStudent, reponseSujet, String.valueOf(point),"Nombre de page mini");
}else {
retour = evaluationNombreDePageMaxi(retour,reponseStudent, reponseSujet, String.valueOf(point),"Nombre de page mini");
}
return retour;
}
/**
* évaluation de la présence d'un style parent hérité.
* Présence d'un héritage.
* @param sujet
* @param nodeStudent
* @param retour
* @param nameElt
* @return
*/
private static node evalPresenceStyleParent(node sujet,node nodeStudent, node retour, String nameElt) {
boolean presentSujet = false;
boolean presentStudent = false;
int point = 0;
if(sujet.getAttributs().get("evalLegacyStyleParentPresent")!=null) {
String valeur = sujet.getAttributs().get("evalLegacyStyleParentPresent");
point = Integer.valueOf(valeur);
}
if(sujet.getAttributs().get("style:parent-style-name")!=null) {
presentSujet=true;
}
if(nodeStudent!=null) {
if(nodeStudent.getAttributs().get("style:parent-style-name")!=null) {
presentStudent=true;
}
retour = evaluationLegacyStyleParentPresent(retour,String.valueOf(presentStudent), String.valueOf(presentSujet), String.valueOf(point),"Présence style Parent");
}else {
retour = evaluationLegacyStyleParentPresent(retour,"null", String.valueOf(presentSujet), String.valueOf(point),"Présence style Parent");
}
return retour;
}
/**
* Méthode evalPasParagrapheVide.</br>
* Evaluer l'absence de paragraphe vide dans la page.</br>
* @param sujet
* @param nodeStudent
* @param retour
* @param nameElt
* @return
*/
private static node evalPasParagrapheVide(node sujet,node nodeStudent, node retour, String nameElt) {
if(nodeStudent!=null) {
boolean pasParagrapheVideSujet = true;
boolean pasParagrapheVideStudent = true;
ArrayList<node> LesParagraphes = nodeStudent.retourneEnfantsByName("text:p", new ArrayList<node>());
LesParagraphes = nodeStudent.retourneEnfantsByName("text:h", LesParagraphes);
LesParagraphes = nodeStudent.retourneEnfantsByName("text:list", LesParagraphes);
LesParagraphes = nodeStudent.retourneEnfantsByName("text:list-item", LesParagraphes);
for(int i = 0 ; i < LesParagraphes.size();i++) {
if(pasParagrapheVideStudent) {
String Texte = LesParagraphes.get(i).retourneLesContenusEnfants("");
Texte = Texte.replace(" ", "");
Texte = Texte.replace("[tab]", "");
Texte = Texte.replace("[text:line-break]", "");
Texte = Texte.replace("[text:s]", "");
if(Texte.isEmpty()) pasParagrapheVideStudent=false;
}
}
LesParagraphes = sujet.retourneEnfantsByName("text:p", new ArrayList<node>());
LesParagraphes = sujet.retourneEnfantsByName("text:h", LesParagraphes);
LesParagraphes = sujet.retourneEnfantsByName("text:list", LesParagraphes);
LesParagraphes = sujet.retourneEnfantsByName("text:list-item", LesParagraphes);
for(int i = 0 ; i < LesParagraphes.size();i++) {
if(pasParagrapheVideSujet) {
String Texte = LesParagraphes.get(i).retourneLesContenusEnfants("");
Texte = Texte.replace(" ", "");
Texte = Texte.replace("[tab]", "");
Texte = Texte.replace("[text:line-break]", "");
Texte = Texte.replace("[text:s]", "");
if(Texte.isEmpty()) pasParagrapheVideSujet=false;
}
}
String reponsepasVide= "Il n'y a pas de paragraphe vide dans la page.";
String reponseVide= "Il y a au moins un paragraphe vide dans la page.";
String reponseStudent = "";
String reponseSujet = "";
if(pasParagrapheVideStudent) reponseStudent = reponsepasVide; else reponseStudent = reponseVide;
if(pasParagrapheVideSujet) reponseSujet = reponsepasVide; else reponseSujet = reponseVide;
retour = evaluationPasParagrapheVide(retour,reponseStudent, reponseSujet, sujet.getAttributs().get("evalPasParagrapheVide"),"Absence paragraphe vide");
}else {
boolean pasParagrapheVideSujet = true;
ArrayList<node> LesParagraphes = sujet.retourneEnfantsByName("text:p", new ArrayList<node>());
LesParagraphes = sujet.retourneEnfantsByName("text:h", LesParagraphes);
LesParagraphes = sujet.retourneEnfantsByName("text:list", LesParagraphes);
LesParagraphes = sujet.retourneEnfantsByName("text:list-item", LesParagraphes);
for(int i = 0 ; i < LesParagraphes.size();i++) {
if(pasParagrapheVideSujet) {
String Texte = LesParagraphes.get(i).retourneLesContenusEnfants("");
Texte = Texte.replace(" ", "");
Texte = Texte.replace("[tab]", "");
Texte = Texte.replace("[text:line-break]", "");
Texte = Texte.replace("[text:s]", "");
if(Texte.isEmpty()) pasParagrapheVideSujet=false;
}
}
String reponsepasVide= "Il n'y a pas de paragraphe vide dans la page.";
String reponseVide= "Il y a au moins un paragraphe vide dans la page.";
String reponseSujet = "";
if(pasParagrapheVideSujet) reponseSujet = reponsepasVide; else reponseSujet = reponseVide;
retour = evaluationPasParagrapheVide(retour,null, reponseSujet, sujet.getAttributs().get("evalPasParagrapheVide"),"Absence paragraphe vide");
}
return retour;
}
//***********************************************************************************
//***********************************************************************************
//** Les procédures suivantes sont les évaluations par comparaison avec le sujet **
//***********************************************************************************
//***********************************************************************************
/**
* Evaluation le nom du node.</br>
* @param retour : le node retour qui contient l'item ajouté
* @param nodStudent : le node Student qui peut être null
* @param nameNode : le nom du node
* @param point : les points
* @param nameElt : le nom de l'élément
* @return
*/
private static node evaluationNameNode(node retour, node nodStudent, String nameNode, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(nameNode,"name", nodStudent.getNomElt(),nameNode + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nameNode, "Erreur : -"+evaluation.getPointEnJeu()+" pt", "Nom du node" , "null", nameNode, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation du nom du style hérité.</br>
* </br>
* @param retour : node retour pour le node d'analyse ana:xxx
* @param nodStudent : node Student
* @param nameNode : nom du node
* @param point : point mise en jeu.
* @param nameElt : nom de l'élément pour le feedback (attribut)
* @param nameStyleLegacyStudent : Contenu textuel (le nom du style hérité de l'étudiant)
* @param nameStyleLegacySujet : Contenu textuel (le nom du style hérité du sujet)
* @return
*/
private static node evaluationNameLegacyStyle(node retour,node nodStudent, String nameNode, String point, String nameElt, String nameStyleLegacyStudent, String nameStyleLegacySujet) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(nameNode,"style heritage", nameStyleLegacyStudent, nameStyleLegacySujet + "" + point, nameElt);
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nameNode, "Erreur : -"+evaluation.getPointEnJeu()+" pt", "style heritage" , "null", nameStyleLegacySujet, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation. Si le node style:header-style ne possède pas d'attribut alors l'entete n'est pas activé.<br>
* Le nombre d'attribut est null.
* @param retour
* @param nodStudent
* @param nameNode
* @param point
* @param nameElt
* @return
*/
private static node evaluationEntetePasActive(node retour, String nbAttributStudent, String nbAttribut, String point, String nameElt) {
node item = null;
if(nbAttributStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(nbAttribut,"pas active", nbAttributStudent,nbAttribut + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nbAttribut, "Erreur", "pas active" , "null", nbAttribut, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation. Si le node style:header-style possède des ou un attribut alors l'entete est activé.<br>
* @param retour
* @param nbAttributStudent
* @param nbAttribut
* @param point
* @param nameElt
* @return
*/
private static node evaluationEnteteActive(node retour, String nbAttributStudent, String nbAttribut, String point, String nameElt) {
node item = null;
if(nbAttributStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(nbAttribut,"active", nbAttributStudent,nbAttribut + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nbAttribut, "Erreur", "active" , "null", nbAttribut, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation. Si le node style:footer-style ne possède pas d'attribut alors l'entete n'est pas activé.<br>
* @param retour
* @param nbAttributStudent
* @param nbAttribut
* @param point
* @param nameElt
* @return
*/
private static node evaluationPiedPagePasActive(node retour, String nbAttributStudent, String nbAttribut, String point, String nameElt) {
node item = null;
if(nbAttributStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(nbAttribut,"pas active", nbAttributStudent,nbAttribut + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nbAttribut, "Erreur", "pas active" , "null", nbAttribut, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation. Si le node style:footer-style possède des ou un attribut alors l'entete est activé.<br>
* @param retour
* @param nbAttributStudent
* @param nbAttribut
* @param point
* @param nameElt
* @return
*/
private static node evaluationPiedPageActive(node retour, String nbAttributStudent, String nbAttribut, String point, String nameElt) {
node item = null;
if(nbAttributStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(nbAttribut,"active", nbAttributStudent,nbAttribut + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nbAttribut, "Erreur", "active" , "null", nbAttribut, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation le champ auteur (éditeur).
* @param retour
* @param nodStudent
* @param nameCreator
* @param point
* @param nameElt
* @return
*/
private static node evaluationNameCreator(node retour, node nodStudent, String nameCreator, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
String reponseSujet = nameCreator;
String reponseStudent = nodStudent.getAttributs().get("creator");
if(reponseStudent!=null) if(!reponseStudent.isEmpty()) {
reponseStudent = reponseStudent.replace(".odt", "");
reponseStudent = reponseStudent.toLowerCase();
}
nameCreator = nameCreator.toLowerCase();
if(reponseStudent.contains(nameCreator)) {
reponseStudent = "auteur créateur "+ nameCreator + " identifié dans le nom du fichier.";
reponseSujet = "auteur créateur "+ nameCreator + " identifié dans le nom du fichier.";
}else {
reponseStudent = "auteur créateur "+ nameCreator + " n'est pas identifié dans le nom du fichier.";
}
item = retourneNoteAvecResultatsAnalyse(nameCreator,"name", reponseStudent,reponseSujet+ "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nameCreator, "Erreur", "Nom du l'éditeur" , "null", nameCreator, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation le nom de l'auteur (créateur ou premier auteur).</br>
* @param retour
* @param nodStudent
* @param nameCreator
* @param point
* @param nameElt
* @return
*/
private static node evaluationNameInitialCreator(node retour, node nodStudent, String nameCreator, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(nameCreator,"name", nodStudent.getContenu().get(0),nameCreator + "↑‽" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nameCreator, "Erreur", "Nom du créateur" , "null", nameCreator, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation du nom de la séquence.</br>
* @param retour
* @param nodStudent
* @param nameSequence
* @param point
* @param nameElt
* @return
*/
private static node evaluationNameSequence(node retour, node nodStudent, String nameSequence, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(nameSequence,"name", nodStudent.getAttributs().get("text:name"),nameSequence + "↑‽" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(nameSequence, "Erreur", "Nom de la séquence" , "null", nameSequence, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* evaluation du nom de la page.</br>
* @param retour
* @param nodStudent
* @param namePage
* @param point
* @param nameElt
* @return
*/
private static node evaluationNamePage(node retour, node nodStudent, String namePage, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(namePage,"name", nodStudent.getAttributs().get("style:master-page-name"),namePage + "↑‽" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(namePage, "Erreur", "Nom de la page" , "null", namePage, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation de la valeur de la propriété personalisée dans la structure ("text:name") de text:user-defined.</br>
* @param retour
* @param nodStudent
* @param textUserDefined
* @param point
* @param nameElt
* @return
*/
private static node evaluationTextUserDefined(node retour, node nodStudent, String textUserDefined, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(textUserDefined,"valeur", nodStudent.getAttributs().get("text:name"),textUserDefined + "╬‽" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(textUserDefined, "Erreur", "valeur de la propriété" , "null", textUserDefined, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation du numéro de la page.</br>
* <br>
* @param retour
* @param nodStudent
* @param numeroPage
* @param point
* @param nameElt
* @return
*/
private static node evaluationNumeroPage(node retour, node nodStudent, String numeroPage, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(numeroPage,"numéro", nodStudent.getAttributs().get("numero"),numeroPage + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(numeroPage, "Erreur", "Numéro de la page" , "null", numeroPage, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation du numéro absolu de la page.</br>
* <br>
* @param retour
* @param nodStudent
* @param numeroAbsoluePage
* @param point
* @param nameElt
* @return
*/
private static node evaluationNumeroAbsoluePage(node retour, node nodStudent, String numeroAbsoluePage, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse(numeroAbsoluePage,"numéro absolue", "page "+nodStudent.getAttributs().get("numeroabsolue"),"page "+numeroAbsoluePage + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node(numeroAbsoluePage, "Erreur", "Numéro de la page absolue" , "null", "page "+numeroAbsoluePage, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation du placement du node par rapport au précédent.</br>
* @param retour
* @param nodStudent
* @param contenuParagraph
* @param point
* @param nameElt
* @return
*/
private static node evaluationPlacement(node retour, String contenuParagraphStudentAvant, String contenuParagraphSujetAvant, String point, String nameElt) {
node item = null;
if(contenuParagraphStudentAvant!=null) {
//compare la même valeur "contenuParagraph" pour obtenir les points mais si un voisinage du contenu.
item = retourneNoteAvecResultatsAnalyse("Placement","avant", contenuParagraphStudentAvant , contenuParagraphSujetAvant + "╬‽" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node("Placement", "Erreur : -"+ point, "avant" , "null", contenuParagraphSujetAvant , 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
*
* @param retour
* @param contenuParagraphStudentAvant
* @param contenuParagraphSujetAvant
* @param point
* @param nameElt
* @return
*/
private static node evaluationFormatageDirect(node retour, String formatStudent, String FormatSujet, String point, String nameElt) {
node item = null;
if(formatStudent!=null) {
//compare la même valeur "contenuParagraph" pour obtenir les points mais si un voisinage du contenu.
item = retourneNoteAvecResultatsAnalyse("Formatage","paragraphe", formatStudent , FormatSujet + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node("Formatage", "Erreur : -"+ point, "paragraphe" , "null", FormatSujet , 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
*
* @param retour
* @param formatStudent
* @param FormatSujet
* @param point
* @param nameElt
* @return
*/
private static node evaluationSautPageColonne(node retour, String sautStudent, String sautSujet, String point, String nameElt) {
node item = null;
if(sautStudent!=null) {
//compare la même valeur "contenuParagraph" pour obtenir les points mais si un voisinage du contenu.
item = retourneNoteAvecResultatsAnalyse("Saut","", sautStudent , sautSujet + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node("Saut", "Erreur : -"+ point, "" , "null", sautSujet , 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
*
* @param retour
* @param reponseStudent
* @param reponseSujet
* @param point
* @param nameElt
* @return
*/
private static node evaluationNombreDePageMaxi(node retour, String reponseStudent, String reponseSujet, String point, String nameElt) {
node item = null;
if(reponseStudent!=null) {
//compare la même valeur "contenuParagraph" pour obtenir les points mais si un voisinage du contenu.
item = retourneNoteAvecResultatsAnalyse("Absence","", reponseStudent , reponseSujet + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node("Absence", "Erreur : -"+ point, "" , "null", reponseSujet , 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
*
* @param retour
* @param reponseStudent
* @param reponseSujet
* @param point
* @param nameElt
* @return
*/
private static node evaluationLegacyStyleParentPresent(node retour, String reponseStudent, String reponseSujet, String point, String nameElt) {
node item = null;
if(reponseStudent!=null) {
//compare la même valeur "contenuParagraph" pour obtenir les points mais si un voisinage du contenu.
item = retourneNoteAvecResultatsAnalyse("Présence Style Parent","", reponseStudent , reponseSujet + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node("Présence Style Parent", "Erreur : -"+ point, "" , "null", reponseSujet , 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
*
* @param retour
* @param sautStudent
* @param sautSujet
* @param point
* @param nameElt
* @return
*/
private static node evaluationPasParagrapheVide(node retour, String reponseStudent, String reponseSujet, String point, String nameElt) {
node item = null;
if(reponseStudent!=null) {
//compare la même valeur "contenuParagraph" pour obtenir les points mais si un voisinage du contenu.
item = retourneNoteAvecResultatsAnalyse("Absence","", reponseStudent , reponseSujet + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node("Absence", "Erreur : -"+ point, "" , "null", reponseSujet , 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation du dernier enfant.</br>
* @param retour
* @param nodStudent
* @param contenuParagraph
* @param point
* @param nameElt
* @return
*/
private static node evaluationDernierEnfant(node retour, node nodStudent, String reponseSujet, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse("LastChild","", String.valueOf(nodStudent.isLastChildNode()),reponseSujet + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node("LastChild", "Erreur : -"+ point, "" , "null", reponseSujet, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
/**
* Evaluation du premier enfant.</br>
* @param retour
* @param nodStudent
* @param reponseSujet
* @param point
* @param nameElt
* @return
*/
private static node evaluationPremierEnfant(node retour, node nodStudent, String reponseSujet, String point, String nameElt) {
node item = null;
if(nodStudent!=null) {
item = retourneNoteAvecResultatsAnalyse("FirstChild","", String.valueOf(nodStudent.isFirstChildNode()),reponseSujet + "" +point, nameElt );
}else {
evaluation.IncrementPointTotal(Integer.valueOf(point));
item = new node("FirstChild", "Erreur : -"+ point, "" , "null", reponseSujet, 2, evaluation.getPointEnJeu(),nameElt);
}
retour.getNodes().add(item);
return retour;
}
//************************************************************************
//************************************************************************
//** LA COMPARISON **
//************************************************************************
//************************************************************************
/**
* Retourne le node avec les résultats de la comparaison entre les deux valeurs (étudiant et sujet).<br>
* <br>
* @param nameNode : nom du node de retour.
* @param Tst (résultat de la comparaison)
* @param property : le nom de l'attribut.
* @param valueAttributStudent : la valeur de l'attribut de student.
* @param valueAttributSujet : la valeur de l'attribut du sujet.
* @return
*/
public static node retourneNoteAvecResultatsAnalyse(String nameNode, String property, String valueStudent, String valueSujet, String nameElt) {
String Tst = evaluation.Compare(valueStudent, valueSujet);
int niveau = 3;
if(Tst.contains("Correct")) niveau = 1;
if(Tst.contains("Erreur")) niveau = 2;
valueStudent = evaluation.remplaceCaracteresCodageAttribut(valueStudent);
valueSujet = evaluation.remplaceCaracteresCodageAttribut(valueSujet);
node item = new node(nameNode, Tst, property , valueStudent, valueSujet, niveau, evaluation.getPointEnJeu(),nameElt);
return item;
}
}