diff --git a/.classpath b/.classpath index 4b5675b..148593c 100644 --- a/.classpath +++ b/.classpath @@ -12,6 +12,6 @@ - + diff --git a/bin/MEPTL/rechercherUnNodeStudent.class b/bin/MEPTL/rechercherUnNodeStudent.class index 5e2b12b..cdd43df 100644 Binary files a/bin/MEPTL/rechercherUnNodeStudent.class and b/bin/MEPTL/rechercherUnNodeStudent.class differ diff --git a/bin/evaluer/evaluation.class b/bin/evaluer/evaluation.class index 3f5c71b..99cabd1 100644 Binary files a/bin/evaluer/evaluation.class and b/bin/evaluer/evaluation.class differ diff --git a/bin/fenetres/attributs.class b/bin/fenetres/attributs.class index 2f04643..c9cc736 100644 Binary files a/bin/fenetres/attributs.class and b/bin/fenetres/attributs.class differ diff --git a/bin/fenetres/create_act/actNewFichierAnalyse.class b/bin/fenetres/create_act/actNewFichierAnalyse.class index 9ecd867..9529ecf 100644 Binary files a/bin/fenetres/create_act/actNewFichierAnalyse.class and b/bin/fenetres/create_act/actNewFichierAnalyse.class differ diff --git a/bin/list/listeDesNodesAllContent.class b/bin/list/listeDesNodesAllContent.class index 0c40347..3663849 100644 Binary files a/bin/list/listeDesNodesAllContent.class and b/bin/list/listeDesNodesAllContent.class differ diff --git a/src/MEPTL/rechercherUnNodeStudent.java b/src/MEPTL/rechercherUnNodeStudent.java index 2a7467d..d8b1e81 100644 --- a/src/MEPTL/rechercherUnNodeStudent.java +++ b/src/MEPTL/rechercherUnNodeStudent.java @@ -2,6 +2,7 @@ package MEPTL; import java.util.ArrayList; +import java.util.Enumeration; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -34,6 +35,7 @@ public class rechercherUnNodeStudent { node nodStudent =null; + //************************************************************************************************ //** Recherche le node par le contenu exact du node en intégrant les contenus des nodes enfants ** @@ -42,7 +44,7 @@ public class rechercherUnNodeStudent { if(nodSujet.getAttributs().get("recherche_contenu_exact")!=null){ if(nodSujet.getAttributs().get("recherche_contenu_exact").contentEquals("true")) { nodStudent = findNodeParContenuEXACT(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); - if(nodStudent!=null) return nodStudent; + return nodStudent; } } @@ -53,19 +55,11 @@ public class rechercherUnNodeStudent { if(nodSujet.getAttributs().get("recherche_contenu_plus_proche_voisin")!=null && nodSujet.retourneLesContenusEnfants("").length()>2){ if(nodSujet.getAttributs().get("recherche_contenu_plus_proche_voisin").equals("true")){ nodStudent = findNodeParContenuPlusProcheVoisin(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a); - if(nodStudent != null) { -// System.out.println("A trouvé le node "+ nameNode + " par le plus proche voisin avec le contenu =" + nodSujet.retourneLesContenusEnfants("")); - return nodStudent; - }else { -// System.out.println("N'a pas trouvé le node "+ nameNode + " par le plus proche voisin avec le contenu =" + nodSujet.retourneLesContenusEnfants("")); - } + return nodStudent; } } - - - //*********************************** //** Recherche le node par l'index ** //*********************************** @@ -75,7 +69,7 @@ public class rechercherUnNodeStudent { return nodStudent; } } - + //********************************************************************************************************** @@ -88,8 +82,7 @@ public class rechercherUnNodeStudent { if(nodStudent!=null) return nodStudent; } - - + //***************************************************************** //** Recherche le node text:p par les différents contenu du node ** @@ -278,15 +271,15 @@ public class rechercherUnNodeStudent { if(nodStudent!=null) return nodStudent; //méthode par le calcul de la distance de levenshtein - if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod2Student.getNodes(), valueAttribut, nameNode,0.75,null); + if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod2Student.getNodes(), valueAttribut, nameNode,0.1,null); if(nod2Student!=null) if(nodStudent==null) { ArrayList tousLesfreres = nod2Student.retourneTousLesFreres(); for(int i = 0 ; i < tousLesfreres.size();i++) { if(tousLesfreres.get(i)!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(tousLesfreres.get(i).getNodes(), nameNode,valueAttribut,0.75,null); } } - if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod1Student.getNodes(), valueAttribut, nameNode,0.75,null); - if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod0Student.getNodes(), valueAttribut, nameNode,0.75,null); + if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod1Student.getNodes(), valueAttribut, nameNode,0.1,null); + if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod0Student.getNodes(), valueAttribut, nameNode,0.1,null); }else { @@ -698,13 +691,8 @@ public class rechercherUnNodeStudent { } - - - /** - * Recherche le node style:tab-stop par style:position.
- * Un tolérance de 0.05 est appliquée sur la valeur de la position.
- * On peut utiliser les intervalles dans la valeur de l'attribut style:position.
+ * Recherche le node style:position pour les stop de tabulation.
* @param nameNode * @param nodSujet * @param nod0Student @@ -726,10 +714,6 @@ public class rechercherUnNodeStudent { if(m3.find()) { valueAttribut = (valueAttribut.substring(m3.start(), m3.end())); }else { - System.out.println("Tolérance par défaut du tab-stop"); - System.out.println("La valeur du tab-stop du sujet est =" + valueAttribut); - System.out.println("Problème de pattern"); - System.out.println("no match avec la valeur du tab-stop du sujet."); JOptionPane.showMessageDialog(null, "Le fichier d'analyse possède une erreur dans la valeur du tab-stop." +"\r\nLa valeur est " + valueAttribut+ "\r\nProblème de pattern.","Erreur",JOptionPane.ERROR_MESSAGE); @@ -739,8 +723,6 @@ public class rechercherUnNodeStudent { valueAttribut = String.valueOf(evaluation.TraitementIntervaleRetourneValeurMaximale(valueAttribut) - tolerance); } }else { - System.out.println("Erreur avec la valeur du tab-stop du sujet."); - System.out.println("Valeur du tab-stop du sujet ="+valueAttribut); JOptionPane.showMessageDialog(null, "Le fichier d'analyse possède une erreur dans la valeur du tab-stop." +"\r\nLa valeur est " + valueAttribut,"Erreur",JOptionPane.ERROR_MESSAGE); } @@ -750,9 +732,6 @@ public class rechercherUnNodeStudent { try { ValeurSujet = Double.valueOf(valueAttribut); }catch (Exception e) { - System.out.println("La valeur du tab-stop du sujet est =" + valueAttribut); - System.out.println("Problème de cast en type double"); - System.out.println("Valeur tab-stop="+ValeurSujet); JOptionPane.showMessageDialog(null, "Le fichier d'analyse possède une erreur dans la valeur du tab-stop." +"\r\nLa valeur est " + valueAttribut+ "\r\nImpossible de convertir la valeur en type Double.", "Erreur",JOptionPane.ERROR_MESSAGE); @@ -771,9 +750,6 @@ public class rechercherUnNodeStudent { if(m3.find()) { valueAttributStudent = (valueAttributStudent.substring(m3.start(), m3.end())); }else { - System.out.println("La valeur du tab-stop du student est =" + valueAttributStudent); - System.out.println("Problème de pattern"); - System.out.println("no match avec la valeur du tab-stop du student."); JOptionPane.showMessageDialog(null, "Le fichier de l'étudiant possède une erreur dans la valeur du tab-stop." +"\r\nLa valeur est " + valueAttribut+ "\r\nProblème de pattern.","Erreur",JOptionPane.ERROR_MESSAGE); diff --git a/src/evaluer/evaluation.java b/src/evaluer/evaluation.java index d564e21..61d4ae1 100644 --- a/src/evaluer/evaluation.java +++ b/src/evaluer/evaluation.java @@ -884,8 +884,8 @@ public class evaluation { /** * Compare deux chaînes de caractères avec un seuil de similitude (79% par défaut).
- * Lorsque les deux chaînes de caractères partages 79% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne TRUE.
- * Lorsque les deux chaînes de caractères partages moins de 79% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne FALSE.
+ * Lorsque les deux chaînes de caractères partages 90% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne TRUE.
+ * Lorsque les deux chaînes de caractères partages moins de 90% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne FALSE.
* Les Chaînes de caractères doivent avoir au moins 6 caractères, après néttoyage du texte avec la méthode NetTexte().
* Sinon le seuil de tolérance est de 99.99%.
*
    @@ -900,7 +900,7 @@ public class evaluation { * @return TRUE ou FALSE en fonction de la comparaison et du seuil de tolérance. */ private static boolean similitudeString(String A, String Modele, Double tolerance_text) { - if(tolerance_text==null) tolerance_text = 0.79 ; + if(tolerance_text==null) tolerance_text = 0.9 ; Modele = NetTexte(Modele); A = NetTexte(A); diff --git a/src/fenetres/attributs.java b/src/fenetres/attributs.java index 4290d3e..45c2567 100644 --- a/src/fenetres/attributs.java +++ b/src/fenetres/attributs.java @@ -121,7 +121,7 @@ public class attributs extends JFrame { panelDroite.add(btnIntervalle); JButton btnTextClean = new JButton("Text clean"); - btnTextClean.setToolTipText("Texte nettoyé de tous les caractères spéciaux, chiffres et ignore la casse (équivalent à allContent=\"environ\").
    Cette fonction ne peut pas être combinée avec les autres fonctions ci-dessous.
    Ce n'est pas un opérateur OU contrairement à l'opérateur ↕.
    La tolérance de texte (79% de similitude avec le texte de la consigne) paramètre dans les setting. (exemple : ¢‽2) "); + btnTextClean.setToolTipText("Texte nettoyé de tous les caractères spéciaux, chiffres et ignore la casse (équivalent à allContent=\"environ\").
    Cette fonction ne peut pas être combinée avec les autres fonctions ci-dessous.
    Ce n'est pas un opérateur OU contrairement à l'opérateur ↕.
    La tolérance de texte (90% de similitude avec le texte de la consigne) paramètre dans les setting. (exemple : ¢‽2) "); btnTextClean.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { diff --git a/src/fenetres/create_act/actNewFichierAnalyse.java b/src/fenetres/create_act/actNewFichierAnalyse.java index 65b8366..b11d0ae 100644 --- a/src/fenetres/create_act/actNewFichierAnalyse.java +++ b/src/fenetres/create_act/actNewFichierAnalyse.java @@ -148,7 +148,7 @@ public class actNewFichierAnalyse extends AbstractAction{ Enumeration pages = Collections.enumeration(nod.getNodes()); while(pages.hasMoreElements()) { node nodLaPage = pages.nextElement(); - Pattern p = Pattern.compile("^text:p$|^text:h$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel + Pattern p = Pattern.compile("^text:p$|^text:h$|^text:span$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel ArrayList listTextesInPage = new ArrayList(); for(int i = 0 ; i < nodLaPage.getNodes().size();i++) { Matcher m = p.matcher(nodLaPage.getNodes().get(i).getNomElt()); @@ -173,7 +173,7 @@ public class actNewFichierAnalyse extends AbstractAction{ Enumeration pages = Collections.enumeration(nod.getNodes()); while(pages.hasMoreElements()) { node nodLaPage = pages.nextElement(); - Pattern p = Pattern.compile("^text:p$|^text:h$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel + Pattern p = Pattern.compile("^text:p$|^text:h$|^text:span$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel ArrayList listTextesInPage = new ArrayList(); for(int i = 0 ; i < nodLaPage.getNodes().size();i++) { Matcher m = p.matcher(nodLaPage.getNodes().get(i).getNomElt()); diff --git a/src/list/listeDesNodesAllContent.java b/src/list/listeDesNodesAllContent.java index 955218b..9cb7695 100644 --- a/src/list/listeDesNodesAllContent.java +++ b/src/list/listeDesNodesAllContent.java @@ -14,29 +14,33 @@ public class listeDesNodesAllContent { String nameNode = nod.getNomElt(); + switch (nameNode) { + case "text:p": return true; + case "text:span": return true; + case "text:list": return true; + case "text:tab":return true; + case "text:title":return true; + case "text:subject":return true; + case "page":return true; + case "text:time":return true; + case "structurepage":return true; - if(nameNode.equals("text:title")) return true; - if(nameNode.equals("text:subject")) return true; - if(nameNode.equals("page")) return true; - if(nameNode.equals("text:date")) return true; - if(nameNode.equals("text:time")) return true; + case "number:text":return false; + case "text:page-count":return false; + case "OU":return false; + case "text:conditional-text":return false; + case "text:bookmark":return false; + case "style:tab-stop":return false; + case "style:text-properties":return false; + case "style:paragraph-properties":return false; + case "style:style":return false; + case "style:default-style\"":return false; - if(nameNode.equals("structurepage")) return true; - if(nameNode.equals("number:text")) return false; - if(nameNode.equals("text:page-number")) return false; - if(nameNode.equals("text:page-count")) return false; - if(nameNode.equals("OU")) return false; - if(nameNode.equals("text:conditional-text")) return false; - if(nameNode.contains("text:bookmark")) return false; - if(nameNode.contains("text:bookmark")) return false; - if(nameNode.equals("style:tab-stop")) return false; + default: return true; + } -// if(nod.retourneLesContenusEnfants("").length()<=0) return false; - - if(nameNode.contains("text:")) return true; - - return true; + }