diff --git a/analyseWriter.jar b/analyseWriter.jar index b658aba..1e1793b 100644 Binary files a/analyseWriter.jar and b/analyseWriter.jar differ diff --git a/bin/MEPTL/HTML.class b/bin/MEPTL/HTML.class index 4a964d3..cdfabe5 100644 Binary files a/bin/MEPTL/HTML.class and b/bin/MEPTL/HTML.class differ diff --git a/bin/MEPTL/commandes.class b/bin/MEPTL/commandes.class index af891f2..fae2088 100644 Binary files a/bin/MEPTL/commandes.class and b/bin/MEPTL/commandes.class differ diff --git a/bin/MEPTL/ecritureSujet.class b/bin/MEPTL/ecritureSujet.class index 571bd2d..8f3da31 100644 Binary files a/bin/MEPTL/ecritureSujet.class and b/bin/MEPTL/ecritureSujet.class differ diff --git a/bin/MEPTL/meptl.class b/bin/MEPTL/meptl.class index 8fc5b94..be610d5 100644 Binary files a/bin/MEPTL/meptl.class and b/bin/MEPTL/meptl.class differ diff --git a/bin/MEPTL/outils.class b/bin/MEPTL/outils.class index 6594de3..c2ceca0 100644 Binary files a/bin/MEPTL/outils.class and b/bin/MEPTL/outils.class differ diff --git a/src/MEPTL/HTML.java b/src/MEPTL/HTML.java index aa10b35..db205bf 100644 --- a/src/MEPTL/HTML.java +++ b/src/MEPTL/HTML.java @@ -237,9 +237,10 @@ public class HTML { if(nod.getNodes().get(k).getAttributs().get("niveau")!=null) { String Tst = nod.getNodes().get(k).getAttributs().get("resultat"); - // String Key = outils.Traduction(nod.getNodes().get(k).getAttributs().get("elt") + " " + outils.withoutCodeAndPoint(nod.getNodes().get(k).getAttributs().get("attribut"))); + String Key = outils.traduction.get(nod.getNodes().get(k).getAttributs().get("elt") + " " + outils.withoutCodeAndPoint(nod.getNodes().get(k).getAttributs().get("attribut"))); - if(Key==null) Key = nod.getNodes().get(k).getAttributs().get("elt") + " " + outils.withoutCodeAndPoint(nod.getNodes().get(k).getAttributs().get("attribut")); + + if(Key==null) Key = nod.getNodes().get(k).getAttributs().get("elt") + " " + outils.withoutCodeAndPoint(nod.getNodes().get(k).getAttributs().get("attribut")); String valueStudent = nod.getNodes().get(k).getAttributs().get("valueStudent"); String valueSujet = outils.withoutCodeAndPoint(nod.getNodes().get(k).getAttributs().get("valueSujet")); @@ -275,6 +276,7 @@ public class HTML { code = code + HTML.Table(Tst, Key2, valueStudent, valueSujet, niveau); }else { if(nod.getNodes().get(k).getNodes().get(l).getAttributs().get("titre")!=null) code = code + HTML.SautLigneOnduleBleu(nod.getNodes().get(k).getNodes().get(l).getAttributs().get("titre")); + if(nod.getNodes().get(k).getNodes().get(l).getAttributs().get("titre1")!=null) code = code + HTML.SautLigneOnduleBleu(nod.getNodes().get(k).getNodes().get(l).getAttributs().get("titre1")); if(nod.getNodes().get(k).getNodes().get(l).getAttributs().get("titre2")!=null) code = code + HTML.SautP8(nod.getNodes().get(k).getNodes().get(l).getAttributs().get("titre2")); } diff --git a/src/MEPTL/analyseLesNodesEnants.java b/src/MEPTL/analyseLesNodesEnfants.java similarity index 87% rename from src/MEPTL/analyseLesNodesEnants.java rename to src/MEPTL/analyseLesNodesEnfants.java index f02a5b4..41d86df 100644 --- a/src/MEPTL/analyseLesNodesEnants.java +++ b/src/MEPTL/analyseLesNodesEnfants.java @@ -3,7 +3,7 @@ package MEPTL; import cXML.node; import cXML.Run; -public class analyseLesNodesEnants { +public class analyseLesNodesEnfants { /** * Cette méthode récursive permet d'analyser et d'évaluer les nodes enfants.
@@ -66,9 +66,9 @@ public class analyseLesNodesEnants { } } - //********************************************** - //** Analyse les nodes enfants du node enfant ** - //********************************************** + //************************************************************ + //** Analyse les nodes enfants du node enfant - Récursivité ** + //************************************************************ if(nodEnfantSujet!=null) { PourAnalyse = nodeNext(PourAnalyse, nomDuNodePourAnalyse, nodStudentCorrespondantAuNodSujet, nod2Student, nod1Student, nodEnfantSujet, nodSujetParagraphs, nodStudentParagraphes, a); } @@ -80,13 +80,13 @@ public class analyseLesNodesEnants { /** - * Permet d'analyser les styles depuis l'attribut analyseStyle.
+ * Permet d'analyser les styles depuis l'attribut analyseStyle.
* @param PourAnalyse : node pour le node analyse - * @param : Le nom du node de l'analyse pour cette partie (exemple ana:page) - * @param nodSujet - * @param nodStudent - * @param nodSujetParagraphs - * @param nodStudentParagraphs + * @param : Le nom du node de l'analyse pour cette partie de l'analyse(exemple ana:page) + * @param nodSujet : le node du sujet (consignes). + * @param nodStudent : le node de l'étudiant. + * @param nodSujetParagraphs : le node contenant l'ensemble des styles du sujet. + * @param nodStudentParagraphs : le node contenant l'ensemble des style de l'étudiant. * @return */ public static node analyseStyle(node PourAnalyse, String nomDuNodePourAnalyse, node nodSujet, node nodStudent, node nodSujetParagraphs, node nodStudentParagraphs ) { diff --git a/src/MEPTL/commandes.java b/src/MEPTL/commandes.java index e287541..65aac77 100644 --- a/src/MEPTL/commandes.java +++ b/src/MEPTL/commandes.java @@ -603,12 +603,28 @@ public class commandes { System.out.println("\t\t┌────────────────────────────────────────────────────┐"); System.out.println("\t\t│ (')_(') │"); System.out.println("\t\t│ ( `.° ) Bravo, vous avez travaillé très dur! │"); - System.out.println("\t\t│ (\")__(\") .. Bye Bye analyseWriter. │"); + System.out.println("\t\t│ (\")__(\") ... Bye Bye analyseWriter. │"); System.out.println("\t\t└────────────────────────────────────────────────────┘"); System.out.println(); System.exit(0); } + /** + * + */ + public static void clotureApplicationAvecErreur() { + System.out.println(); + System.out.println("\t\t┌────────────────────────────────────────────────────┐"); + System.out.println("\t\t│ (')_(') │"); + System.out.println("\t\t│ ( ;.; ) Une erreur c'est produite. │"); + System.out.println("\t\t│ (\")__(\") ... Bye Bye analyseWriter. │"); + System.out.println("\t\t└────────────────────────────────────────────────────┘"); + System.out.println(); + System.exit(0); + } + + + public static void clotureWithHelp() { System.out.println(); System.out.println("\t\t┌─────────────────────────────────────────────────────┐"); diff --git a/src/MEPTL/ecritureSujet.java b/src/MEPTL/ecritureSujet.java index dd66cb6..49ef147 100644 --- a/src/MEPTL/ecritureSujet.java +++ b/src/MEPTL/ecritureSujet.java @@ -300,7 +300,7 @@ public class ecritureSujet { if(no.get(k)!=null) { no.get(k).getAttributs().put("evaluer", "false"); if(listeDesNodesAvecEvalNode(no.get(k).getNomElt())) no.get(k).getAttributs().put("evalNameNode", "0"); - if(listeDesNodesSautEtTitre(no.get(k).getNomElt())) {no.get(k).getAttributs().put("saut", "false"); no.get(k).getAttributs().put("titre", ""); no.get(k).getAttributs().put("styletitre", "nostyle");} + if(listeDesNodesSautEtTitre(no.get(k).getNomElt())) {no.get(k).getAttributs().put("saut", "false"); no.get(k).getAttributs().put("titre", "");} if(listeDesNodesRechercheIndex(no.get(k).getNomElt())) {no.get(k).getAttributs().put("recherche_index", "false"); no.get(k).getAttributs().put("recherche_contenu_exact", "false");} if(listeDesNodesAnalyseStyle(no.get(k).getNomElt())) no.get(k).getAttributs().put("analyseStyle", "false"); if(listeDesNodesAllContent(no.get(k).getNomElt())) no.get(k).getAttributs().put("allContent", "strict0"); @@ -354,6 +354,7 @@ public class ecritureSujet { * @return */ private static boolean listeDesNodesAnalyseStyle(String nameNode) { + if(nameNode.contains("text:database-display")) return false; if(nameNode.contains("text:")) return true; return false; } diff --git a/src/MEPTL/meptl.java b/src/MEPTL/meptl.java index 2990057..774539f 100644 --- a/src/MEPTL/meptl.java +++ b/src/MEPTL/meptl.java @@ -142,9 +142,18 @@ public class meptl { if(commandes.analyse) { nodeSujet = chargementsujet(commandes.nameSujet, true); - //** Chargement de la culture ** - commandes.culture = nodeSujet.retourneFirstEnfantsByName("setting").getAttributs().get("culture"); //récupère la culture de l'utilisateur + if(nodeSujet==null) { + //*************************** + //** bye bye analyseWriter ** + //*************************** + commandes.clotureApplicationAvecErreur(); + } + //** Chargement de la culture ** + if(nodeSujet.retourneFirstEnfantsByName("setting").isHasAttributs()) { + commandes.culture = nodeSujet.retourneFirstEnfantsByName("setting").getAttributs().get("culture"); //récupère la culture de l'utilisateur + } + //** La méthode verificationFichier Analyse permet de détecter des erreurs dans le fichier d'analyse new verificationFichierAnalyse(nodeSujet); @@ -318,32 +327,33 @@ public class meptl { } } - //***************************************************** - //** Exportation au format CSV si -csv ou -verifcsv ** - //***************************************************** - if(commandes.ecritNoteCSV && !commandes.fourniCSV) { - if(!commandes.verifHisto2) ecritureCSV(ensembleanalyse); - if(commandes.verifHisto2) ecritureCSV(ensembleanalyse,verif,a,nodeSujet.retourneFirstEnfantsByName("setting")); - //a.ecritureNodeEnXML(ensembleanalyse, "ensembleAnalyse"); //écriture du node de l'étudiant + if(nodeSujet!=null) { + //***************************************************** + //** Exportation au format CSV si -csv ou -verifcsv ** + //***************************************************** + if(commandes.ecritNoteCSV && !commandes.fourniCSV) { + if(!commandes.verifHisto2) ecritureCSV(ensembleanalyse); + if(commandes.verifHisto2) ecritureCSV(ensembleanalyse,verif,a,nodeSujet.retourneFirstEnfantsByName("setting")); + //a.ecritureNodeEnXML(ensembleanalyse, "ensembleAnalyse"); //écriture du node de l'étudiant + } + + //*********************************************************************** + //** Exportation au format CSV si -csv file.csv ou -verifcsv file.csv ** + //*********************************************************************** + if(commandes.ecritNoteCSV && commandes.fourniCSV) { + ecritureCSV(ensembleanalyse,verif,a,nodeCSV, nodeSujet.retourneFirstEnfantsByName("setting")); + //a.ecritureNodeEnXML(ensembleanalyse, "ensembleAnalyse"); //écriture du node de l'étudiant + } + + //************************************** + //** Mise à jour du fichier d'analyse ** + //************************************** + if(commandes.MAJFichierAnalyse||commandes.MAJnameAnalysisFile) { + verificationFichierAnalyse.MiseAJourFichierAnalyse(); + verificationFichierAnalyse.messagMiseAJourFichierAnalyseAprèsAnalyse(); + } } - //*********************************************************************** - //** Exportation au format CSV si -csv file.csv ou -verifcsv file.csv ** - //*********************************************************************** - if(commandes.ecritNoteCSV && commandes.fourniCSV) { - ecritureCSV(ensembleanalyse,verif,a,nodeCSV, nodeSujet.retourneFirstEnfantsByName("setting")); - //a.ecritureNodeEnXML(ensembleanalyse, "ensembleAnalyse"); //écriture du node de l'étudiant - } - - //************************************** - //** Mise à jour du fichier d'analyse ** - //************************************** - if(commandes.MAJFichierAnalyse||commandes.MAJnameAnalysisFile) { - verificationFichierAnalyse.MiseAJourFichierAnalyse(); - verificationFichierAnalyse.messagMiseAJourFichierAnalyseAprèsAnalyse(); - } - - //*************************** //** bye bye analyseWriter ** //*************************** @@ -1049,10 +1059,10 @@ public class meptl { nodouverture.setAttributs(nodSujet.getAttributs()); nodouverture.getAttributs().put("dossier",a.getLectDossiers().getEC().getListeNomDossier().get(indexStudent)); nodouverture.getAttributs().put("filename", a.getLectDossiers().getEC().getListeFichierodt().get(indexStudent)); - nodouverture.getAttributs().put("filenameAnalyse", nodSujet.getAttributs().get("filename")); - nodouverture.getAttributs().put("producteur", nodStudent.getAttributs().get("producteur")); - nodouverture.getAttributs().put("dureeEdition", nodStudent.getAttributs().get("dureeEdition")); - nodouverture.getAttributs().put("dateModification", nodStudent.getAttributs().get("dateModification")); + if(nodSujet.getAttributs().get("analysis_filename")!=null) nodouverture.getAttributs().put("filenameAnalyse", nodSujet.getAttributs().get("analysis_filename")); + if(nodStudent.getAttributs().get("producteur")!=null) nodouverture.getAttributs().put("producteur", nodStudent.getAttributs().get("producteur")); + if(nodStudent.getAttributs().get("dureeEdition")!=null) nodouverture.getAttributs().put("dureeEdition", nodStudent.getAttributs().get("dureeEdition")); + if(nodStudent.getAttributs().get("dateModification")!=null) nodouverture.getAttributs().put("dateModification", nodStudent.getAttributs().get("dateModification")); nodouverture.getAttributs().put("patch", a.getPatch()); if(nodSujet.getAttributs().get("historiquePresent")!=null) nodouverture.getAttributs().put("historiquePresent", nodSujet.getAttributs().get("historiquePresent")); if(nodSujet.getAttributs().get("controleDateCreation")!=null) nodouverture.getAttributs().put("controleDateCreation", nodSujet.getAttributs().get("controleDateCreation")); @@ -1200,17 +1210,6 @@ public class meptl { manqueValeurMetaSujet=true; } } - }else { - - } - }else { - b = a.retourneFirstNodeByNameAttributValue(nodStudent, "meta:user-defined", "meta:name", "Sujet"); - if(b==null) { - manqueMetaSujet=true; - }else { - if(!nodSujet.getAttributs().get("metaSujet").equals(b.getContenu().get(0))) { - manqueValeurMetaSujet=true; - } } } @@ -1631,7 +1630,7 @@ public class meptl { //********************************************** //** Analyse de tous les autres nodes enfants ** //********************************************** - page=analyseLesNodesEnants.nodeNext(page, "ana:page", pageStudent, null, null, pageSujet, nodSujetParagraphes, nodStudentParagraphes, a); + page=analyseLesNodesEnfants.nodeNext(page, "ana:page", pageStudent, null, null, pageSujet, nodSujetParagraphes, nodStudentParagraphes, a); page.getAttributs().put("point", String.valueOf(outils.getPointsClass()-pointDebut)); page.getAttributs().put("pointTotal", String.valueOf(outils.getPointTotal()-pointTotalDebut)); @@ -1817,7 +1816,7 @@ public class meptl { } /** - * Analyse du node numerotationchapitre. + * Analyse du node numerotationchapitre.
* @param nodStudentNumerotation * @param nodSujetNumerotation * @param a @@ -1830,13 +1829,21 @@ public class meptl { nodnumerotations.setAttributs(nodSujetNumerotation.getAttributs());//ajoute tous les attributs du sujet nodnumerotations.setContenu(nodSujetNumerotation.getContenu()); //ajoute le commantaire du sujet - //ajoute l'identifiant pour le menu + //*************************************** + //** Ajoute l'identifiant pour le menu ** + //*************************************** if(a.retourneFirstNodeByNameAttributValue(nodmenu, "item", "name", "numerotationchapitre")!=null) { nodnumerotations.getAttributs().put("id", a.retourneFirstNodeByNameAttributValue(nodmenu, "item", "name", "numerotationchapitre").getAttributs().get("id")); } - //initialise les points + //*************************** + //** initialise les points ** + //*************************** outils.initiliseLesPoints(); + + //******************************************************************* + //** Parcours les nodes enfants du node ** + //******************************************************************* for(int i = 0 ; i < nodSujetNumerotation.getNodes().size(); i++) { if(nodSujetNumerotation.getNodes().get(i).getNomElt().equals("text:outline-level-style")) { int pointDebut = outils.getPointsClass(); @@ -1850,68 +1857,29 @@ public class meptl { node numerotationStudent = a.retourneFirstNodeByNameAttributValue(nodStudentNumerotation, "text:outline-level-style", "text:level", levelnumrotation); node numerotationSujet = nodSujetNumerotation.getNodes().get(i); - // analyse les attributs du node + //******************************************** + //** analyse les attributs des nodes ** + //******************************************** numerotation = analyseLesAttributEtContenuDuNode(numerotationStudent, numerotationSujet, numerotation, "ana:numerotation",numerotationSujet.getNomElt()); - - // les enfants du premier niveau du node - for(int j = 0 ; j < numerotationSujet.getNodes().size();j++ ) { - - node nodSujet = numerotationSujet.getNodes().get(j); - String nameNode = nodSujet.getNomElt(); - node nodStudent = null; - if(numerotationStudent!=null) if(numerotationStudent.retourneFirstEnfantsByName(nameNode).getNomElt().equals(nameNode)) { - nodStudent = numerotationStudent.retourneFirstEnfantsByName(nameNode); - } - //insère un saut si titre pas vide et saut=true - numerotation=addNodeSautTitre(nodSujet, numerotation); + //************************************ + //** analyse tous les nodes enfants ** + //************************************ + numerotation = analyseLesNodesEnfants.nodeNext(numerotation, "ana:numerotation", numerotationStudent, null, null, numerotationSujet, null, null, a); - // analyse attribut et contenu des enfants du premier niveau - numerotation = analyseLesAttributEtContenuDuNode(nodStudent, nodSujet, numerotation, "ana:numerotation",numerotationSujet.getNodes().get(j).getNomElt()); - - - for(int k = 0 ; k < nodSujet.getNodes().size();k++) { - node nod2Sujet = nodSujet.getNodes().get(k); - String nameNode2 = nod2Sujet.getNomElt(); - node nod2Student = null; - if(nodStudent!=null) if(nodStudent.retourneFirstEnfantsByName(nameNode2).getNomElt().equals(nameNode2)) { - nod2Student = numerotationStudent.retourneFirstEnfantsByName(nameNode2); - } - - //insère un saut si titre pas vide et saut=true - numerotation=addNodeSautTitre(nod2Sujet, numerotation); - - // analyse attribut et contenu des enfants du second niveau - numerotation = analyseLesAttributEtContenuDuNode(nod2Student, nod2Sujet, numerotation, "ana:numerotation",nod2Sujet.getNomElt() ); - - - for(int l = 0 ; l < nod2Sujet.getNodes().size();l++) { - node nod3Sujet = nod2Sujet.getNodes().get(l); - String nameNode3 = nod3Sujet.getNomElt(); - node nod3Student = null; - if(nod2Student!=null) if(nod2Student.retourneFirstEnfantsByName(nameNode3).getNomElt().equals(nameNode3)) { - nod3Student = numerotationStudent.retourneFirstEnfantsByName(nameNode3); - } - - //insère un saut si titre pas vide et saut=true - numerotation=addNodeSautTitre(nod3Sujet, numerotation); - - // analyse attribut et contenu des enfants du troisième niveau - numerotation = analyseLesAttributEtContenuDuNode(nod3Student, nod3Sujet, numerotation, "ana:paragraph", nod3Sujet.getNomElt()); - } - - } - - } - + //**************************************************************** + //** Insère les attributs des points dans les node de l'analyse ** + //**************************************************************** numerotation.getAttributs().put("point", String.valueOf(outils.getPointsClass()-pointDebut)); numerotation.getAttributs().put("pointTotal", String.valueOf(outils.getPointTotal()-pointTotalDebut)); nodnumerotations.getNodes().add(numerotation); - } } + //**************************************************************** + //** Insère les attributs des points dans les node de l'analyse ** + //**************************************************************** nodnumerotations.getAttributs().put("pointgagner",String.valueOf(outils.getPointsClass())); nodnumerotations.getAttributs().put("pointtotal",String.valueOf(outils.getPointTotal())); nodnumerotations.getAttributs().put("proportioncorrect",String.valueOf(outils.getProportionCorrect())); @@ -1934,14 +1902,22 @@ public class meptl { nodframes.setAttributs(nodSujetFrames.getAttributs()); //ajoute tous les attributs du sujet nodframes.setContenu(nodSujetFrames.getContenu()); //ajoute le commentaire du sujet - //ajoute l'identifiant pour le menu + //*************************************** + //** Ajoute l'identifiant pour le menu ** + //*************************************** if(a.retourneFirstNodeByNameAttributValue(nodmenu, "item", "name", "frames")!=null) { nodframes.getAttributs().put("id", a.retourneFirstNodeByNameAttributValue(nodmenu, "item", "name", "frames").getAttributs().get("id")); } - //initialise les points + //*************************** + //** initialise les points ** + //*************************** outils.initiliseLesPoints(); - for(int i = 0 ; i < nodSujetFrames.getNodes().size(); i++) { //niveau 1 + + //***************************************************** + //** Parcours les nodes enfants du node ** + //***************************************************** + for(int i = 0 ; i < nodSujetFrames.getNodes().size(); i++) { if(nodSujetFrames.getNodes().get(i).getNomElt().equals("draw:frame")) { int pointDebut = outils.getPointsClass(); int pointTotalDebut = outils.getPointTotal(); @@ -1954,103 +1930,28 @@ public class meptl { node frameStudent = a.retourneFirstNodeByNameAttributValue(nodStudentFrames, "draw:frame", "draw:name", nomDuFrame); node frameSujet = nodSujetFrames.getNodes().get(i); - // analyse les attributs du node + //******************************************** + //** analyse les attributs des nodes ** + //******************************************** frame = analyseLesAttributEtContenuDuNode(frameStudent, frameSujet, frame, "ana:frame",frameSujet.getNomElt()); - - // les enfants du premier niveau du node - for(int j = 0 ; j < frameSujet.getNodes().size();j++ ) { //niveau 2 - - node nodSujet = frameSujet.getNodes().get(j); - String nameNode = nodSujet.getNomElt(); - node nodStudent = null; - if(frameStudent!=null) if(frameStudent.retourneFirstEnfantsByName(nameNode).getNomElt().equals(nameNode)) { - nodStudent = frameStudent.retourneFirstEnfantsByName(nameNode); - } - if(frameStudent!=null) if(nameNode.equals("text:p")) { - - if(nodSujet.getAttributs().get("index")!=null) { - nodStudent = a.retourneFirstNodeByNameAttributValue(frameStudent, nameNode, "text:p", frameSujet.getNodes().get(j).getAttributs().get("index")); - } - - if(nodStudent==null)if(nodSujet.retourneLesContenusEnfants("").isEmpty()) { //si il n'y a pas de contenu, passe par l'index - nodStudent = a.retourneFirstNodeByNameAttributValue(frameStudent, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); - }else { - nodStudent = a.retourneFirstNodeByFindContent2(frameStudent.getNodes(), nodSujet.retourneLesContenusEnfants(""), commandes.tolerance_characters,commandes.tolerance_text); - } - - } - - //insère un saut si titre pas vide et saut=true - frame=addNodeSautTitre(nodSujet, frame); - - - // analyse attribut et contenu des enfants du premier niveau - frame = analyseLesAttributEtContenuDuNode(nodStudent, nodSujet, frame, "ana:frame",nodSujet.getNomElt()); - - - for(int k = 0 ; k < nodSujet.getNodes().size();k++) { //niveau 3 - node nod2Sujet = nodSujet.getNodes().get(k); - String nameNode2 = nod2Sujet.getNomElt(); - node nod2Student = null; - if(nodStudent!=null) if(nodStudent.retourneFirstEnfantsByName(nameNode2).getNomElt().equals(nameNode2)) { - nod2Student = nodStudent.retourneFirstEnfantsByName(nameNode2); - } - if(nodStudent!=null) if(nameNode2.equals("text:p")) { - if(nod2Sujet.getAttributs().get("index")!=null) { - nod2Student = a.retourneFirstNodeByNameAttributValue(nodStudent, nameNode2, "index", nod2Sujet.getAttributs().get("index")); - } - } - if(nodStudent!=null) if(nameNode2.equals("text:database-display")) { - if(nod2Sujet.getAttributs().get("text:column-name")!=null) { - nod2Student = a.retourneFirstNodeByNameAttributValue(nodStudent, nameNode2, "text:column-name", outils.withoutCodeAndPoint(nod2Sujet.getAttributs().get("text:column-name"))); - } - } - - //insère un saut si titre pas vide et saut=true - frame=addNodeSautTitre(nod2Sujet, frame); - - // analyse attribut et contenu des enfants du second niveau - frame = analyseLesAttributEtContenuDuNode(nod2Student, nod2Sujet, frame, "ana:frame",nod2Sujet.getNomElt() ); - - - for(int l = 0 ; l < nod2Sujet.getNodes().size();l++) { //niveau 4 - node nod3Sujet = nod2Sujet.getNodes().get(l); - String nameNode3 = nod3Sujet.getNomElt(); - node nod3Student = null; - if(nod2Student!=null) if(nod2Student.retourneFirstEnfantsByName(nameNode3).getNomElt().equals(nameNode3)) { - nod3Student = nod2Student.retourneFirstEnfantsByName(nameNode3); - } - if(nod2Student!=null) if(nameNode3.equals("text:database-display")) { - if(nod3Sujet.getAttributs().get("text:column-name")!=null) { - nod3Student = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode3, "text:column-name", outils.withoutCodeAndPoint(nod3Sujet.getAttributs().get("text:column-name"))); - } - } - // analyse attribut et contenu des enfants du troisième niveau - if(nod3Student!=null) if(nod3Sujet.getNomElt().equals("text:sequence") && nod3Student.getNomElt().equals("text:sequence")) { - ArrayList changements = nod2Student.retourneEnfantsByName("text:change", new ArrayList()); - nod3Student.setNodes(changements); - } - - //insère un saut si titre pas vide et saut=true - frame=addNodeSautTitre(nod3Sujet, frame); - - // analyse attribut et contenu des enfants du second niveau - frame = analyseLesAttributEtContenuDuNode(nod3Student, nod3Sujet, frame, "ana:frame", nod3Sujet.getNomElt()); - } - - } - - } - + //************************************ + //** analyse tous les nodes enfants ** + //************************************ + frame = analyseLesNodesEnfants.nodeNext(frame, "ana:frame", frameStudent, null, null, frameSujet, null, null, a); + + + //**************************************************************** + //** Insère les attributs des points dans les node de l'analyse ** + //**************************************************************** frame.getAttributs().put("point", String.valueOf(outils.getPointsClass()-pointDebut)); frame.getAttributs().put("pointTotal", String.valueOf(outils.getPointTotal()-pointTotalDebut)); nodframes.getNodes().add(frame); - - } } - + //**************************************************************** + //** Insère les attributs des points dans les node de l'analyse ** + //**************************************************************** nodframes.getAttributs().put("pointgagner",String.valueOf(outils.getPointsClass())); nodframes.getAttributs().put("pointtotal",String.valueOf(outils.getPointTotal())); nodframes.getAttributs().put("proportioncorrect",String.valueOf(outils.getProportionCorrect())); @@ -2598,7 +2499,7 @@ public class meptl { //************************************ //** analyse tous les nodes enfants ** //************************************ - page = analyseLesNodesEnants.nodeNext(page, "ana:page", pageStudent, null, null, pageSujet, nodSujetParagraphs, nodStudentParagraphs, a); + page = analyseLesNodesEnfants.nodeNext(page, "ana:page", pageStudent, null, null, pageSujet, nodSujetParagraphs, nodStudentParagraphs, a); //**************************************************************** //** Insère les attributs des points dans les node de l'analyse ** @@ -2983,29 +2884,32 @@ public class meptl { * @return */ public static node addNodeSautTitre(node nodSujet, node nodanalyse) { - if(nodSujet.getAttributs().get("saut")!=null) if(Boolean.valueOf(nodSujet.getAttributs().get("saut"))) { - if(nodSujet.getAttributs().get("titre")!=null) { - node N = new node(); - N.setNomElt("saut"); - N.getAttributs().put("titre", nodSujet.getAttributs().get("titre")); - N.setClose(true); - nodanalyse.getNodes().add(N); - } - if(nodSujet.getAttributs().get("titre2")!=null) { - node N = new node(); - N.setNomElt("saut"); - N.getAttributs().put("titre2", nodSujet.getAttributs().get("titre2")); - N.setClose(true); - nodanalyse.getNodes().add(N); - } - if(nodSujet.getAttributs().get("titre3")!=null) { - node N = new node(); - N.setNomElt("saut"); - N.getAttributs().put("titre3", nodSujet.getAttributs().get("titre3")); - N.setClose(true); - nodanalyse.getNodes().add(N); + if(nodSujet.getAttributs().get("saut")!=null) { + if(Boolean.valueOf(nodSujet.getAttributs().get("saut"))) { + if(nodSujet.getAttributs().get("titre")!=null) { + node N = new node(); + N.setNomElt("saut"); + N.getAttributs().put("titre", nodSujet.getAttributs().get("titre")); + N.setClose(true); + nodanalyse.getNodes().add(N); + } + if(nodSujet.getAttributs().get("titre2")!=null) { + node N = new node(); + N.setNomElt("saut"); + N.getAttributs().put("titre2", nodSujet.getAttributs().get("titre2")); + N.setClose(true); + nodanalyse.getNodes().add(N); + } + if(nodSujet.getAttributs().get("titre3")!=null) { + node N = new node(); + N.setNomElt("saut"); + N.getAttributs().put("titre3", nodSujet.getAttributs().get("titre3")); + N.setClose(true); + nodanalyse.getNodes().add(N); + } } } + return nodanalyse; } diff --git a/src/MEPTL/outils.java b/src/MEPTL/outils.java index 7b1d5b6..a7da160 100644 --- a/src/MEPTL/outils.java +++ b/src/MEPTL/outils.java @@ -680,11 +680,11 @@ public class outils { public static String withoutCodeAndPointPourRechercheContenuExact(String B) { if(B!=null) { if(B.contains("‽")) B=B.replaceAll("‽[0-9]{0,}", ""); //B=B.substring(0, B.indexOf("‽")); - if(B.contains("↑")) B=B.replace("↑", ""); - if(B.contains("↕")) B=B.replace("↕", ""); - if(B.contains("≡")) B=B.replace("≡", ""); - if(!B.isEmpty()) B=B.replace("¢", ""); - B=B.replaceAll("‽[0-9]{1,}", ""); + if(!B.isEmpty()) if(B.contains("↑")) B=B.replace("↑", ""); + if(!B.isEmpty()) if(B.contains("↕")) B=B.replace("↕", ""); + if(!B.isEmpty()) if(B.contains("≡")) B=B.replace("≡", ""); + if(!B.isEmpty()) if(B.contains("¢")) B=B.replace("¢", ""); + if(!B.isEmpty()) B=B.replaceAll("‽[0-9]{1,}", ""); } return B; } diff --git a/src/MEPTL/rechercherUnNodeStudent.java b/src/MEPTL/rechercherUnNodeStudent.java index b949169..f6dfac8 100644 --- a/src/MEPTL/rechercherUnNodeStudent.java +++ b/src/MEPTL/rechercherUnNodeStudent.java @@ -27,207 +27,138 @@ public class rechercherUnNodeStudent { node nodStudent =null; - //** Priorité à la recherche par contenu + //************************************************************************************************ + //** Recherche le node par le contenu exact du node en intégrant les contenus des nodes enfants ** + //************************************************************************************************ if(nodSujet.getAttributs().get("recherche_contenu_exact")!=null){ nodStudent = findNodeParContenuEXACT(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); if(nodStudent != null) return nodStudent; } - // recherche le node par index uniquement + //*********************************** + //** Recherche le node par l'index ** + //*********************************** if(nodSujet.getAttributs().get("recherche_index")!=null){ nodStudent = findNodeParIndex(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); - if(nodStudent != null) return nodStudent; + if(nodSujet.getAttributs().get("recherche_index").equalsIgnoreCase("true")) return nodStudent; } //***************************************************************** - //** Recherche Le node text:p par les différents contenu du node ** + //** Recherche le node text:p par les différents contenu du node ** //***************************************************************** - if(nameNode.equals("text:p")) { + if(nameNode.equals("text:p")||nameNode.equals("text:span")) { nodStudent = findLeNodeTextpParDesNodesEnfantsSpecifique(nameNode, nodSujet,nod0Student, nod1Student, nod2Student, a ); } - - if(nameNode.equals("text:title")) { - if(nod2Student!=null) nodStudent = nod2Student.retourneFirstEnfantsByName("text:title"); - if(nod1Student!=null) if(nodStudent==null) nodStudent = nod1Student.retourneFirstEnfantsByName("text:title"); - if(nod0Student!=null) if(nodStudent==null) nodStudent = nod0Student.retourneFirstEnfantsByName("text:title"); - return nodStudent; - } - - if(nameNode.equals("text:subject")) { - if(nod2Student!=null) nodStudent = nod2Student.retourneFirstEnfantsByName("text:subject"); - if(nod1Student!=null) if(nodStudent==null) nodStudent = nod1Student.retourneFirstEnfantsByName("text:subject"); - if(nod0Student!=null) if(nodStudent==null) nodStudent = nod0Student.retourneFirstEnfantsByName("text:subject"); - } - - if(nameNode.equals("text:initial-creator")) { - if(nod2Student!=null) nodStudent = nod2Student.retourneFirstEnfantsByName("text:initial-creator"); - if(nod1Student!=null) if(nodStudent==null) nodStudent = nod1Student.retourneFirstEnfantsByName("text:initial-creator"); - if(nod0Student!=null) if(nodStudent==null) nodStudent = nod0Student.retourneFirstEnfantsByName("text:initial-creator"); - } - - if(nameNode.equals("text:user-defined")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - } - - - //recherche par le contenu enfant du node les titres par défaut - if(nameNode.equals("text:h")) { - String contenuSujet = nodSujet.retourneLesContenusEnfants(""); - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByFindContent2(nod2Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod1Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod0Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); - } - - //recherche par text:name - if(nameNode.equals("text:section")) { - if(nodSujet.getAttributs().get("recherche_index")==null) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod2Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod1Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod0Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - }else { - if(nodSujet.getAttributs().get("recherche_index").equals("false")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod2Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod1Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod0Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - } - if(nodSujet.getAttributs().get("recherche_index").equals("true")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod2Student, nameNode, "index", nodSujet.getAttributs().get("index")); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod1Student, nameNode, "index", nodSujet.getAttributs().get("index")); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod0Student, nameNode, "index", nodSujet.getAttributs().get("index")); - } - } - } - - //recherche par le nom de la colonne dans les database - if(nameNode.equals("text:database-display")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "text:column-name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:column-name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "text:column-name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:column-name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "text:column-name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:column-name"))); - } - - //recherche par le nom de l'objet draw:name ou par text:anchor-page-number si ancrer à la page + //******************************************************************************** + //** Recherche le node draw:frame par draw:name ou recherche_anchor-page-number ** + //******************************************************************************** if(nameNode.equals("draw:frame")) { - if(nodSujet.getAttributs().get("recherche_anchor-page-number")==null) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod2Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod1Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod0Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - }else { - if(nodSujet.getAttributs().get("recherche_anchor-page-number").equals("false")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod2Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod1Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod0Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - } - if(nodSujet.getAttributs().get("recherche_anchor-page-number").equals("true")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "text:anchor-page-number", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("text:anchor-page-number"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "text:anchor-page-number", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("text:anchor-page-number"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "text:anchor-page-number", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("text:anchor-page-number"))); - //si recherche l'ancrage de la page pas trouvé alors recherche par draw:name - if(nodStudent==null) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod2Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod1Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod0Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); - } - } - } + nodStudent = findDrawFrame(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); } - - //recherche par le nom de l'objet - if(nameNode.equals("style:graphic-properties")) { - if(!nodSujet.getContenu().isEmpty()) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameContent(nod2Student, nameNode, nodSujet.getContenu().get(0)); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameContent(nod1Student, nameNode, nodSujet.getContenu().get(0)); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameContent(nod0Student, nameNode, nodSujet.getContenu().get(0)); - } + //*********************************************** + //** Recherche le nodes text:xxx par text:name ** + //*********************************************** + if(nameNode.equals("text:section") || nameNode.equals("text:user-defined") || nameNode.equals("text:table-of-content")) { + nodStudent = findByTextName(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); } + //****************************************************************** + //** Recherche le node text:database-display par text:column-name ** + //****************************************************************** + if(nameNode.equals("text:database-display")) { + nodStudent = findDataBase(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); + } - //Recherche un node table - if(nameNode.contains("table")) { - //recherche par le nom de la table - if(nameNode.equals("table:table")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "table:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("table:name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "table:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("table:name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "table:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("table:name"))); - } - - //recherche par l'index - if(nameNode.equals("table:table-row")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "index", nodSujet.getAttributs().get("index")); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "index", nodSujet.getAttributs().get("index")); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "index", nodSujet.getAttributs().get("index")); - } - - //recherche par l'index - if(nameNode.equals("table:table-cell")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "index", nodSujet.getAttributs().get("index")); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "index", nodSujet.getAttributs().get("index")); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "index", nodSujet.getAttributs().get("index")); - } + //************************************************** + //** Recherche le node table:table par table:name ** + //************************************************** + if(nameNode.equals("table:table")) { + nodStudent = findTable(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); + } + + //************************************************************************* + //** Recherche le node text:h par le contenu avec tolérance de carcatère ** + //************************************************************************* + if(nameNode.equals("text:h")) { + nodStudent = findByContentWithTolerance(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); + } - //recherche par le nom du style qui est toujours formé par nomtable.colonne - if(nameNode.equals("table:table-column")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "table:style-name", nodSujet.getAttributs().get("table:style-name")); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "table:style-name", nodSujet.getAttributs().get("table:style-name")); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "table:style-name", nodSujet.getAttributs().get("table:style-name")); - } + //******************************************************* + //** Recherche le node par l'index mais si pas demandé ** + //******************************************************* + if(nameNode.equals("table:table-row") || nameNode.equals("table:table-cell") || nameNode.equals("text:tab") || nameNode.equals("text:span")) { + nodStudent = findByIndexEvenIsFalse(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); + } + + + //*************************************************************** + //** Recherche le node table:table-column par table:style-name ** + //*************************************************************** + if(nameNode.equals("table:table-column")) { + nodStudent = findTableByStyleName(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); + } - //recherche par texte:name - if(nameNode.equals("text:table-of-content")) { - if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); - } + //********************************************* + //** Recherche le node par le contenu simple ** + //********************************************* + if(nameNode.equals("text:tab") || nameNode.equals("style:graphic-properties")) { + nodStudent = findByContentZero(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); } - - //recherche par contenu - if(nameNode.equals("text:span")) { - String contenuSujet = nodSujet.retourneLesContenusEnfants(""); - if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod2Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod1Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod0Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); + + //***************************************************************** + //** Recherche Le node text:p par les différents contenu du node ** + //** text:title - text:subject - text:initial-creator - text:tab ** + //***************************************************************** + if(nodStudent==null) { + nodStudent = findByNameNode(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); } - - //recherche par contenu - if(nameNode.equals("text:tab")) { - String contenuSujet = nodSujet.retourneLesContenusEnfants(""); - if(!contenuSujet.trim().isEmpty()) { - if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod2Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod1Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod0Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); - } + + //********************************************* + //** Recherche le node par le contenu simple ** + //********************************************* + if(nodStudent==null){ + nodStudent = findByContentZero(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); } - - // dernière tentative si le node est vide, recherche par le nom du node - if(nodStudent==null && !nameNode.equals("text:p")) { - if(nod2Student!=null) if(nod2Student.retourneEnfantsByNameExist(nameNode)) nodStudent = nod2Student.retourneFirstEnfantsByName(nameNode); - if(nod1Student!=null) if(nodStudent==null) if(nod1Student.retourneEnfantsByNameExist(nameNode)) nodStudent = nod1Student.retourneFirstEnfantsByName(nameNode); - if(nod0Student!=null) if(nodStudent==null) if(nod0Student.retourneEnfantsByNameExist(nameNode)) nodStudent = nod0Student.retourneFirstEnfantsByName(nameNode); - } - - - return nodStudent; } - - + /** + * Recherche par le contenu exact du node. Englobe les contenus des nodes enfants.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ private static node findNodeParContenuEXACT(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a ) { node nodStudent = null; if(nodSujet.getAttributs().get("recherche_contenu_exact").equals("true")) { - String valueAttribut = outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getContenu().get(0)); - if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod2Student.getNodes(), valueAttribut, nodSujet.getNomElt()); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod1Student.getNodes(), valueAttribut, nodSujet.getNomElt()); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod0Student.getNodes(), valueAttribut, nodSujet.getNomElt()); + if(!nodSujet.retourneLesContenusEnfants("").isEmpty()) { + String valueAttribut = outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.retourneLesContenusEnfants("")); + if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod2Student.getNodes(), valueAttribut, nodSujet.getNomElt()); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod1Student.getNodes(), valueAttribut, nodSujet.getNomElt()); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod0Student.getNodes(), valueAttribut, nodSujet.getNomElt()); + } } return nodStudent; } + /** + * Recherche par l'attribut index.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ private static node findNodeParIndex(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a ) { node nodStudent = null; if(nodSujet.getAttributs().get("recherche_index").equals("true")) { @@ -303,42 +234,212 @@ public class rechercherUnNodeStudent { if(nod0Student!=null) if(nodStudent==null) nodStudent = nod0Student.retourneFirstEnfantsByNameNode1ContainNameNode2("text:p","text:creator"); } - if(nodSujet.getAttributs().get("recherche_contenu_exact")!=null) { - if(nodSujet.getAttributs().get("recherche_contenu_exact").equalsIgnoreCase("true")) { - if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); - } + + //** Recherche par contenu + if(!nodSujet.getContenu().isEmpty()) { + String valueAttribut = outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getContenu().get(0)); + if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod2Student.getNodes(), valueAttribut, nodSujet.getNomElt()); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod1Student.getNodes(), valueAttribut, nodSujet.getNomElt()); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContentExact(nod0Student.getNodes(), valueAttribut, nodSujet.getNomElt()); } - -// if(nodSujet.getAttributs().get("recherche_index")!=null) { -// if(nodSujet.getAttributs().get("recherche_index").equalsIgnoreCase("true")) { -// if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); -// if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); -// if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); -// } -// } -// -// -// if(nodStudent==null) { -// if(nodSujet.retourneLesContenusEnfants("").isEmpty()) { //s'il n'y a pas de contenu, passe par l'index -// if(nodSujet.getAttributs().get("index")!=null) { -// if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); -// if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); -// if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "index", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("index"))); -// } -// }else { -// String contenuSujet = nodSujet.retourneLesContenusEnfants(""); -// if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod2Student.getNodes(),contenuSujet ,commandes.tolerance_characters,commandes.tolerance_text); -// if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod1Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); -// if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod0Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); -// } -// } + //** Recherche le node par index uniquement. Si trouve pa retourne un null. + if(nodSujet.getAttributs().get("index")!=null){ + String valueAttribut = nodSujet.getAttributs().get("index"); + if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student.getNodes(), nodSujet.getNomElt(),"index",valueAttribut); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student.getNodes(), nodSujet.getNomElt(),"index",valueAttribut); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student.getNodes(), nodSujet.getNomElt(),"index",valueAttribut); + } return nodStudent; } + + /** + * Recherche Le node draw:frame par l'attribut draw:name ou recherche_anchor-apge-number.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findDrawFrame(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + //recherche par le nom de l'objet draw:name par défaut + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod2Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod1Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValueNetTexte(nod0Student, nameNode, "draw:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("draw:name"))); + + if(nodStudent!=null) return nodStudent; + + if(nodSujet.getAttributs().get("recherche_anchor-page-number")!=null) if(nodSujet.getAttributs().get("recherche_anchor-page-number").equalsIgnoreCase("true")) { + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "text:anchor-page-number", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("text:anchor-page-number"))); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "text:anchor-page-number", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("text:anchor-page-number"))); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "text:anchor-page-number", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("text:anchor-page-number"))); + } + + return nodStudent; + } + + /** + * Recherche Le node text:section par l'attribut text:name;
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findByTextName(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "text:name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:name"))); + + return nodStudent; + } + + /** + * Recherche le node par son nom. Retourne le premier node qui correspond au nom du node.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findByNameNode(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + if(nod2Student!=null) if(nod2Student.retourneEnfantsByNameExist(nameNode)) nodStudent = nod2Student.retourneFirstEnfantsByName(nameNode); + if(nod1Student!=null) if(nodStudent==null) if(nod1Student.retourneEnfantsByNameExist(nameNode)) nodStudent = nod1Student.retourneFirstEnfantsByName(nameNode); + if(nod0Student!=null) if(nodStudent==null) if(nod0Student.retourneEnfantsByNameExist(nameNode)) nodStudent = nod0Student.retourneFirstEnfantsByName(nameNode); + + return nodStudent; + } + + /** + * Recherche le node text:database-display par text:column-name.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findDataBase(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "text:column-name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:column-name"))); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "text:column-name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:column-name"))); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "text:column-name", outils.withoutCodeAndPoint(nodSujet.getAttributs().get("text:column-name"))); + + return nodStudent; + } + + /** + * Recherche le node par le contenu simple get(0).
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findByContentZero(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + if(!nodSujet.getContenu().isEmpty()) { + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameContent(nod2Student, nameNode, nodSujet.getContenu().get(0)); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameContent(nod1Student, nameNode, nodSujet.getContenu().get(0)); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameContent(nod0Student, nameNode, nodSujet.getContenu().get(0)); + } + + return nodStudent; + } + + /** + * Rechercher le node table:table par table:name.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findTable(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "table:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("table:name"))); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "table:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("table:name"))); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "table:name", outils.withoutCodeAndPointPourRechercheContenuExact(nodSujet.getAttributs().get("table:name"))); + + return nodStudent; + } + + /** + * Recherche le node par son contenu avec une tolérance de carcatère.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findByContentWithTolerance(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + String contenuSujet = nodSujet.retourneLesContenusEnfants(""); + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByFindContent2(nod2Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod1Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByFindContent2(nod0Student.getNodes(), contenuSujet,commandes.tolerance_characters,commandes.tolerance_text); + + return nodStudent; + } + + /** + * Rechreche le node par son index même si pas demandé.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findByIndexEvenIsFalse(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + if(nodSujet.getAttributs().get("index")!=null){ + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "index", nodSujet.getAttributs().get("index")); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "index", nodSujet.getAttributs().get("index")); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "index", nodSujet.getAttributs().get("index")); + } + return nodStudent; + } + + /** + * Recherche le node par table:style-name.
+ * @param nameNode + * @param nodSujet + * @param nod0Student + * @param nod1Student + * @param nod2Student + * @param a + * @return + */ + private static node findTableByStyleName(String nameNode, node nodSujet,node nod0Student, node nod1Student, node nod2Student, Run a) { + node nodStudent = null; + if(nod2Student!=null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod2Student, nameNode, "table:style-name", nodSujet.getAttributs().get("table:style-name")); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod1Student, nameNode, "table:style-name", nodSujet.getAttributs().get("table:style-name")); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneFirstNodeByNameAttributValue(nod0Student, nameNode, "table:style-name", nodSujet.getAttributs().get("table:style-name")); + + return nodStudent; + } + + }