analyseWriter/src/MEPTL/outils.java

1438 lines
76 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package MEPTL;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cXML.node;
/**
*
* @author pablo rodriguez
*
*/
public class outils {
public static Dictionary<String, String> traduction = new Hashtable<String, String>();
private static int pointsClass = 0;
private static int pointTotal=0;
private static int pointEnJeu = 0;
/**
*
* @param code
* @return
*/
public static String Traduction2(String code) {
// //paragraphe
// String colorPo = "#FF0000";
// //Nom des styles de paragraphe
// if(code.equals("Heading_20_1")) code="<b>Titre 1</b>";
// if(code.equals("Heading_20_2")) code="<b>Titre 2</b>";
// if(code.equals("Heading_20_3")) code="<b>Titre 3</b>";
// if(code.equals("Standard_20__28_user_29_")) code="<b>Standard</b>";
//
// //meta données
// if(code.equals("dc:subject texte")) code="<div class=\"tooltip2\">Valeur de la méta donnée Sujet<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Description</span></div>";
// if(code.equals("dc:title texte")) code="<div class=\"tooltip2\">Valeur de la méta donnée Titre<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Description</span></div>";
// if(code.equals("meta:user-defined Auteur2")) code="<div class=\"tooltip2\">La méta donnée Auteur2<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.<br><br><b><u>ATTENTION</u></b>: Vous devez tapez comme nom de la méta donnée <b>Auteur2<b><br>Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.<br>Sinon vous aurez une valeur <b>null</b></span></div>";
// if(code.equals("meta:user-defined Date du contrôle")) code="<div class=\"tooltip2\">La méta donnée Date du contrôle<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Clique sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.<br><br><b><u>ATTENTION</u></b>: Vous devez tapez comme nom de la méta donnée <b>Date du contrôle<b><br>Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.<br>Sinon vous aurez une valeur <b>null</b></span></div>";
// if(code.equals("meta:user-defined Département")) code="<div class=\"tooltip2\">La méta donnée Département<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.<br><br><b><u>ATTENTION</u></b>: Vous devez tapez comme nom de la méta donnée <b>Département<b><br>Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.<br>Sinon vous aurez une valeur <b>null</b></span></div>";
// if(code.equals("meta:user-defined Groupe")) code="<div class=\"tooltip2\">La méta donnée Groupe<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Clique sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.<br><br><b><u>ATTENTION</u></b>: Vous devez tapez comme nom de la méta donnée <b>Groupe<b><br>Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.<br>Sinon vous aurez une valeur <b>null</b></span></div>";
//
// if(code.equals("text:user-defined text:name")) code="<div class=\"tooltip2\">La méta donnée personnalisée<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Clique sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.</span></div>";
//
// //style de paragraphe
// if(code.equals("style:style style:master-page-name")) code="Enchaînement insère le style de page";
// if(code.equals("style:style style:next-style-name")) code="Style du paragraphe suivant";
// if(code.equals("style:paragraph-properties fo:border-bottom")) code="Bordure basse du paragraphe";
// if(code.equals("style:paragraph-properties fo:border-top")) code="Bordure haute du paragraphe";
// if(code.equals("style:paragraph-properties fo:border-left")) code="Bordure gauche du paragraphe";
// if(code.equals("style:paragraph-properties fo:border-right")) code="Bordure droite du paragraphe";
// if(code.equals("style:paragraph-properties fo:keep-with-next")) code="Conserver avec le paragraphe suivant";
// if(code.equals("style:paragraph-properties fo:keep-together")) code="Ne pas scinder le paragraphe";
// if(code.equals("style:paragraph-properties fo:margin-top")) code="Espacement au dessus du paragraphe";
// if(code.equals("style:paragraph-properties fo:margin-bottom")) code="Espacement en dessous du paragraphe";
// if(code.equals("style:paragraph-properties fo:orphans")) code="Nombre de ligne d'orpheline";
// if(code.equals("style:paragraph-properties fo:widows")) code="Nombre de ligne de veuve";
// if(code.equals("style:text-properties style:text-underline-color")) code="Couleur de soulignement du paragraphe";
// if(code.equals("style:text-properties style:text-underline-style")) code="Style du soulignement du paragraphe";
// if(code.equals("style:text-properties style:text-underline-width")) code="Epaisseur du trait de soulignement du paragraphe";
// if(code.equals("style:text-properties style:font-name")) code="Police de caractère du paragraphe";
// if(code.equals("style:text-properties fo:font-size")) code="Taille de la police de caractère du paragraphe";
// if(code.equals("style:text-properties style:font-style-name")) code="Style de la police de caractère du paragraphe";
// if(code.equals("style:text-properties fo:text-shadow")) code="Effet de caractère ombré du paragraphe";
// if(code.equals("style:paragraph-properties fo:text-align")) code="Alignement du paragraphe";
// if(code.equals("style:text-properties fo:font-variant")) code="Effet de caractère petite majuscule";
// if(code.equals("style:paragraph-properties fo:line-height")) code="Interligne";
// if(code.equals("style:paragraph-properties fo:text-indent")) code="Retrait de première ligne";
// if(code.equals("style:style style:parent-style-name")) code="Hérite du style";
// if(code.equals("style:paragraph-properties fo:text-indent")) code="Retrait";
// if(code.equals("style:paragraph-properties fo:padding-top")) code="Remplissage (espacement) en haut";
// if(code.equals("style:paragraph-properties fo:padding-left")) code="Remplissage (espacement) à gauche";
// if(code.equals("style:paragraph-properties fo:padding-right")) code="Remplissage (espacement) à droite";
// if(code.equals("style:paragraph-properties fo:padding-bottom")) code="Remplissage (espacement) en bas";
// if(code.equals("style:text-properties style:text-underline-type")) code="Style du trait de soulignage";
// if(code.equals("style:paragraph-properties style:tab-stop-distance")) code="Distance du stop de la tabulation";
// if(code.equals("style:text-properties fo:font-weight")) code="Style texte <b>GRAS</b>";
// if(code.equals("style:text-properties fo:font-style")) code="Style texte <i>Italic</i>";
//
//
// //style de page
// if(code.equals("style:master-page style:name")) code="Nom du style de page";
// if(code.equals("style:page-layout style:page-usage")) code="Mise en page de la page";
// if(code.equals("style:page-layout-properties fo:page-width")) code="Largeur de la page";
// if(code.equals("style:page-layout-properties fo:page-height")) code="Hauteur de la page";
// if(code.equals("style:page-layout-properties fo:margin-right")) code="Marge à droite de la page";
// if(code.equals("style:page-layout-properties fo:border")) code="Les 4 bordures de la page";
// if(code.equals("style:page-layout-properties fo:margin-left")) code="Marge à gauche de la page";
// if(code.equals("style:page-layout-properties fo:margin-bottom")) code="Marge en bas de la page";
// if(code.equals("style:page-layout-properties fo:margin-top")) code="Marge en haut de la page";
// if(code.equals("style:page-layout-properties fo:margin-right")) code="Marge à droite de la page";
// if(code.equals("text:chapter text:display")) code="Champ chapitre";
// if(code.equals("text:chapter Contenu textuel")) code="Valeur du champ chapitre";
// if(code.equals("style:header-footer-properties fo:border-bottom")) code="<b>Entête ou Pied de page</b> : Bordure inférieure";
// if(code.equals("style:header-footer-properties fo:border-right")) code="<b>Entête ou Pied de page</b> : Bordure droite";
// if(code.equals("style:header-footer-properties fo:border-left")) code="<b>Entête ou Pied de page</b> : Bordure gauche";
// if(code.equals("style:header-footer-properties fo:border-top")) code="<b>Entête ou Pied de page</b> : Bordure haute";
// if(code.equals("style:header-footer-properties fo:margin-bottom")) code="<b>Entête ou Pied de page</b> : Marge en dessous";
// if(code.equals("style:header-footer-properties fo:margin-top")) code="<b>Entête ou Pied de page</b> : Marge au dessus";
// if(code.equals("style:master-page style:next-style-name")) code="Style de la page suivante";
// if(code.equals("text:bookmark-ref text:ref-name")) code="Nom du repère de texte";
// if(code.equals("text:bookmark-ref text:reference-format")) code="Réfèrence du repère de texte";
// if(code.equals("style:columns fo:column-count")) code="Nombre de colonne";
// if(code.equals("style:columns fo:column-gap")) code="Espacement entre les colonnes<br><i>Gouttière</i>";
// if(code.equals("style:header-footer-properties fo:border")) code="Les 4 bordures du pied de page<br><i>droite gauche bas haut</i>";
// if(code.equals("style:header-footer-properties fo:border")) code="Les 4 bordures de l'entête<br><i>droite gauche bas haut</i>";
// if(code.equals("text:tab name")) code="Tabulation";
// if(code.equals("text:tab Contenu textuel")) code="Contenu textuel après tabulation";
// if(code.equals("text:initial-creator Contenu textuel")) code="Champ auteur (premier auteur)";
// if(code.equals("text:creator Contenu textuel")) code="Champ auteur (modifié)";
// if(code.equals("style:page-layout-properties style:num-format")) code="Format de la numérotation";
// if(code.equals("text:page-number text:select-page")) code="Champ numérotation de la page";
// if(code.equals("style:page-layout-properties style:print-orientation")) code="Orientation de la page";
// if(code.equals("style:header-footer-properties fo:min-height")) code="Hauteur minimal du pied de page";
//
// //style structure
// if(code.equals("page style:master-page-name")) code="Nom du style de page";
// if(code.equals("page numeroabsolue")) code="<div class=\"tooltip2\">Position (numéro) absolue de la page<br>par rapport à l'ensemble des pages<span class=\"tooltiptext2\">C'est l'ordre d'apparition de la page lorsque le mode \"<b>Livre</b>\" est utilisé.<br>Dans le mode d'affichage \"<b>Livre</b>\" toutes les pages s'affichent, y compris les pages vides.";
// if(code.equals("text:title Contenu textuel")) code="Valeur de la méta donnée \"<b>Titre</b>\"";
// if(code.equals("text:subject Contenu textuel")) code="Valeur de la méta donnée \"<b>Sujet</b>\"";
// if(code.equals("draw:frame draw:name")) code="<div class=\"tooltip2\" style=\"color:>" + colorPo + "\">Nom de l'objet indiqué dans<br>l'onglet \"<b>Options</b>\"<br>de la boite \"<b><u>Propriétés</u></b>\" de l'objet.<span class=\"tooltiptext2\">Si l'objet ne se nomme pas <b><u>EXACTEMENT</u></b> comme indiqué dans la consigne.<br><br>L'algorithme d'analyse ne pourra pas trouver l'objet.Vous aurez que des valeurs <b><u>NULL</u></b><br><br>Faites attention à la case (majuscule et minuscule). Ne tapez pas d'espace après le dernier caractère. Ne tapez pas de guillemet, etc.</span></div>";
// if(code.equals("text:description Contenu textuel")) code="<div class=\"tooltip2\" style=\"color:>" + colorPo + "\">Champ <b>Commentaires</b><span class=\"tooltiptext2\">Pour insérer le champ \"<b>Commentaires</b>\".<br>Sélectionner le menu Insertion/Champ/Autres champs...<br><br>Dans la boite de dialogue \"Champ\"<br>Onglet \"Info document\"</span></div>";
// if(code.equals("page style:page-usage")) code="<div class=\"tooltip2\">Mise en page de la page<span class=\"tooltiptext2\">Dans les <b>Propriétés</b> du style de page<br>Onglet <b>Page</b><br><b>Mise en page</b></span></div>";
// if(code.contains("text:illustration-index-source") && code.contains("text:caption-sequence-name")) code="Catégorie de la légende";
// if(code.equals("text:index-title-template Contenu textuel")) code="Titre de l'index";
// if(code.equals("text:table-of-content text:protected")) code="Protection de l'index";
// if(code.contains("text:table-of-content-source") && code.contains("text:outline-level")) code="Niveau de plan de l'index<br>Type &ldquo;Table des matières&ldquo;";
// if(code.equals("text:conditional-text text:condition")) code="La condition du texte conditionnel";
// if(code.equals("text:conditional-text text:string-value-if-true")) code="Si la condition est <b>Vrai</b> affiche le texte";
// if(code.equals("text:conditional-text text:string-value-if-false")) code="Si la condition est <b>Fausse</b> affiche le texte";
// if(code.equals("text:date text:fixed")) code="La date est fixe";
// if(code.equals("text:date style:data-style-name")) code="Style de la date";
// if(code.equals("text:span Contenu textuel")) code="Contenu textuel";
// if(code.equals("text:p Contenu textuel")) code="<div class=\"tooltip2\">Contenu textuel<span class=\"tooltiptext2\"><b><u>Attention :</u></b><br>Si le texte n'a pas été trouvé.<br>L'application recherche le paragraphe par son contenu.<br>Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient &quot;null&quot;.<br>Vérifier le contenu textuel de votre paragraphe.<br></span></div>";
// if(code.equals("text:date text:date-value")) code="La date";
// if(code.equals("text:section text:name")) code="Nom de la section";
// if(code.equals("text:section text:condition")) code="<div class=\"tooltip2\">Condition de la section<span class=\"tooltiptext2\"><b><u>Attention :</u></b><br>Ne tapez pas d'espace après le dernier guillemet du texte.<br>Ne tapez pas d'espace après le dernier caractère de votre condition.</span></div>";
// if(code.equals("text:section Contenu textuel")) code="Contenu textuel de la section";
// if(code.equals("style:paragraph-properties fo:break-before")) code="Type de saut placé avant";
// if(code.equals("style:paragraph-properties fo:padding")) code="Remplissage (padding) du paragraphe";
// if(code.equals("style:text-properties fo:color")) code="Couleur de la police";
// if(code.equals("text:h text:style-name")) code="Nom du style du paragraphe Titre";
// if(code.equals("text:change-start Contenu textuel")) code="Insertion du texte";
// if(code.equals("style:paragraph-properties fo:margin-right")) code="Retrait avant le paragraphe";
// if(code.equals("style:paragraph-properties fo:margin-left")) code="Retrait après le paragraphe";
// if(code.equals("style:paragraph-properties fo:border")) code="Style des quatre bordures";
//
// //frame
// if(code.equals("draw:frame text:anchor-type")) code="Ancrage de l'objet";
// if(code.equals("draw:frame text:anchor-page-number")) code="Ancrage dans la page numéro";
// if(code.equals("draw:frame svg:y")) code="Position (distance) verticale<br>de l'objet";
// if(code.equals("draw:frame svg:x")) code="Position (distance) horizontale<br>de l'objet";
// if(code.equals("draw:frame svg:height")) code="Hauteur de l'objet";
// if(code.equals("draw:frame svg:width")) code="Largeur de l'objet";
// if(code.equals("style:graphic-properties fo:padding")) code="Remplissage (marge)<br>avec les bords du cadre de l'objet";
// if(code.equals("style:graphic-properties style:vertical-pos")) code="Position verticale de l'objet par rapport à";
// if(code.equals("style:graphic-properties style:horizontal-pos")) code="Position horizontale de l'objet par rapport à";
// if(code.equals("style:graphic-properties fo:border")) code="Les 4 bordures de l'objet";
// if(code.equals("style:graphic-properties fo:margin-bottom")) code="Espacement en dessous de l'objet";
// if(code.equals("style:graphic-properties fo:margin-top")) code="Espacement au dessus de l'objet";
// if(code.equals("style:graphic-properties fo:margin-right")) code="Espacement à droite de l'objet";
// if(code.equals("style:graphic-properties fo:margin-left")) code="Espacement à gauche de l'objet";
// if(code.equals("style:graphic-properties style:horizontal-rel")) code="Position horizontale par rapport à";
// if(code.equals("style:graphic-properties style:vertical-rel")) code="Position verticale par rapport à";
// if(code.equals("style:graphic-properties style:wrap")) code="Adaptation du texte";
// if(code.equals("style:graphic-properties style:number-wrapped-paragraphs")) code="Adaptation du texte<br>nombre de paragraphe adapté";
// if(code.equals("style:graphic-properties style:wrap-contour")) code="Adaptation du texte \"<b>Contour</b>\"";
// if(code.equals("text:sequence text:name")) code="<div class=\"tooltip2\">Nom de la variable de <b>Séquence</b> pour légender<span class=\"tooltiptext2\">Menu Insertion/Champ/Autres champs...<br>Onglet \"<b>Variables</b>\"</span></div>";
// if(code.equals("text:sequence Contenu textuel")) code="<div class=\"tooltip2\">La légende avec la variable de <b>Séquence</b><span class=\"tooltiptext2\">Pour légender une image, il faut un clic droite sur l'image et sélectionner <b>Insérer une légende...</b><br>Cependant, il faut retirer la protection du contenu.</span></div>";
// if(code.equals("style:graphic-properties style:protect")) code="<div class=\"tooltip2\">Protection de l'objet</b><span class=\"tooltiptext2\">Dans la boite de dialogue <b>Propriétés</b><br>Onglet Option<br>Vou devez cocher les protections (case à cocher)</span></div>";
// if(code.equals("style:graphic-properties style:wrap-contour-mode")) code="Mode contour du texte";
// if(code.equals("draw:text-box fo:min-height")) code="Hauteur du frame<br>(cadre de texte)";
// if(code.equals("draw:frame Contenu textuel")) code="Paragraphe d'ancrage";
// if(code.equals("text:database-display text:table-type")) code="Type de la source de données";
// if(code.equals("text:database-display text:column-name")) code="<div class=\"tooltip2\">Nom du champ de données<span class=\"tooltiptext2\">Ne tapez pas d'espace à la fin du nom de la colonne, Sinon Null.</span></div>";
// if(code.equals("text:database-display text:database-name")) code="Nom de la base de données";
// if(code.equals("text:database-display text:table-name")) code="Nom de la table de données";
//
// //numérotation hiérarchisée
// if(code.equals("text:outline-level-style style:num-suffix")) code="Suffix (après la numérotation)";
// if(code.equals("text:outline-level-style style:num-prefix")) code="<div class=\"tooltip2\">Prefix (devant la numérotation)<span class=\"tooltiptext2\"><b><u>Attention :</u></b><br>Il peut y avoir devant la numération un espace.<br><br>Par exemple : <b>§[espace]</b>";
// if(code.equals("text:outline-level-style style:num-format")) code="Format de la numérotation";
// if(code.equals("text:outline-level-style text:level")) code="Niveau de la numérotation";
// if(code.equals("style:list-level-properties text:list-level-position-and-space-mode")) code="Position, Espacement de la numérotation";
// if(code.equals("style:list-level-label-alignment text:label-followed-by")) code="<div class=\"tooltip2\">Numérotation suivi d'un(e)<span class=\"tooltiptext2\">Dans la boite de dialogue \"Numérotation des chapitres\"<br>Onglet Position<br>Numerotation suivi par.</span></div>";
// if(code.equals("text:outline-level-style text:display-levels")) code="<div class=\"tooltip2\">Nombre de niveau affiché par la numérotation<span class=\"tooltiptext2\">Dans la boite de dialogue \"Numérotation des chapitre\"<br>Afficher les sous-niveaux.</span></div>";
//
// //Table, index, bibliographie
// if(code.equals("txt:p Contenu textuel")) code="<div class=\"tooltip2\">Texte recherché<span class=\"tooltiptext2\"><b><u>Attention</u></b>, il suffit qu'un seul caractère soit différent avec la consigne pour que l'algorithme ne trouve pas le texte.<br>S'il ne trouve pas votre texte alors la valeur est \"<b>null</b>\".<br>L'algorithme peut trouver votre texte, mais s'il y a trop de différence, il n'accorde pas les points.</span></div>";
//
// //variable de séquence
// if(code.equals("text:sequence-decl text:name")) code="<div class=\"tooltip2\">Variable de séquence<span class=\"tooltiptext2\">La variable de séquence permet de légender et de créer des index.<br>Pour ajouter une variable de séquence, vous devez sélectionner le menu<br>Insertion/Champ/Autres champs...<br>Onglet \"<b>Variables</b>\".</span></div>";
// retour à la ligne
//if(code.equals("text:line-break name")) code="Retour à la ligne dans le même paragraphe";
//if(code.equals("text:line-break Nom du node")) code="Retour à la ligne";
//if(code.equals("text:p Nom du node")) code="Nouveau paragraphe";
//if(code.equals("text:line-break Contenu textuel")) code="<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Contenu textuel<span class=\"tooltiptext2\"><b><u>Attention :</u></b><br>Si le texte n'a pas été trouvé.<br>Vous devez savoir que l'application recherche le paragraphe par son contenu.<br>Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient &quot;null&quot;.<br>Vérifier le contenu textuel de votre paragraphe.<br></span></div>";
// style paragraphe police
// if(code.equals("style:font-name")) code="<b><u><span style=\"color:"+ colorPo +"\">Police</span></u></b><p class=\"p2\">Nom de la police de caractères</p>";
// if(code.equals("fo:font-size")) code="<b><u><span style=\"color:"+ colorPo +"\">Police</span></u></b><p class=\"p2\">Taille des caractères</p>";
// if(code.equals("style:font-style-name")) code="<b><u><span style=\"color:"+ colorPo +"\">Police</span></u></b><p class=\"p2\">Style de la police</p>";
// if(code.equals("fo:font-family")) code="<b><u><span style=\"color:"+ colorPo +"\">Police</span></u></b><p class=\"p2\">Famille de police de caractères</p>";
// if(code.equals("fo:font-weight")) code="<b><u><span style=\"color:"+ colorPo +"\">Police</span></u></b><p class=\"p2\">Style <b>\"Gras\"</b></p>";
// if(code.equals("fo:font-style")) code="<b><u><span style=\"color:"+ colorPo +"\">Police</span></u></b><p class=\"p2\">Style de la font</b></p>";
// if(code.equals("style:font-size-asian")) code="<b><u><span style=\"color:"+ colorPo +"\">Police</span></u></b><p class=\"p2\">Taille des caractères</b></p>";
return code;
}
public static void initaliseTraduction() {
// String colorPo = "#FF0000";
//
// //Nom des styles de paragraphe
// traduction.put("Heading_20_1", "<b>Titre 1</b>");
// traduction.put("Heading_20_2", "<b>Titre 2</b>");
// traduction.put("Heading_20_3", "<b>Titre 3</b>");
// traduction.put("Standard_20__28_user_29_", "<b>Standard</b>");
//
// //meta données
// traduction.put("dc:subject texte","<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Valeur de la méta donnée Sujet <span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Description</span></div>");
// traduction.put("dc:title texte", "<div class=\"tooltip2\">" + HTML.imgInterogation() + " Valeur de la méta donnée Titre<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Description</span></div>");
// traduction.put("meta:user-defined Auteur2", "<div class=\"tooltip2\">" + HTML.imgInterogation() + " La méta donnée Auteur2<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.<br><br><b><u>ATTENTION</u></b>: Vous devez tapez comme nom de la méta donnée <b>Auteur2<b><br>Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.<br>Sinon vous aurez une valeur <b>null</b></span></div>");
// traduction.put("meta:user-defined Date du contrôle", "<div class=\"tooltip2\">" + HTML.imgInterogation() +" La méta donnée Date du contrôle<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Clique sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.<br><br><b><u>ATTENTION</u></b>: Vous devez tapez comme nom de la méta donnée <b>Date du contrôle<b><br>Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.<br>Sinon vous aurez une valeur <b>null</b></span></div>");
// traduction.put("meta:user-defined Département", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" La méta donnée Département<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.<br><br><b><u>ATTENTION</u></b>: Vous devez tapez comme nom de la méta donnée <b>Département<b><br>Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.<br>Sinon vous aurez une valeur <b>null</b></span></div>");
// traduction.put("meta:user-defined Groupe", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" La méta donnée Groupe<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.<br><br><b><u>ATTENTION</u></b>: Vous devez tapez comme nom de la méta donnée <b>Groupe<b><br>Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.<br>Sinon vous aurez une valeur <b>null</b></span></div>");
// traduction.put("text:user-defined text:name", "<div class=\"tooltip2\">" + HTML.imgInterogation() +" La méta donnée personnalisée<span class=\"tooltiptext2\">Menu Fichier/Propriétés<br>Onglet Propriétés personnalisées<br>Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.</span></div>");
//
// //style de paragraphe
// traduction.put("style:style style:master-page-name", "Enchaînement: Un saut de page avec le style de page");
// traduction.put("style:style style:next-style-name", "Style du paragraphe suivant");
// traduction.put("style:paragraph-properties fo:border-bottom", "Bordure basse du paragraphe");
// traduction.put("style:paragraph-properties fo:border-top", "Bordure haute du paragraphe");
// traduction.put("style:paragraph-properties fo:border-left", "Bordure gauche du paragraphe");
// traduction.put("style:paragraph-properties fo:border-right", "Bordure droite du paragraphe");
// traduction.put("style:paragraph-properties fo:keep-with-next", "Conserver avec le paragraphe suivant");
// traduction.put("style:paragraph-properties fo:keep-together", "Ne pas scinder le paragraphe");
// traduction.put("style:paragraph-properties fo:margin-top", "Espacement au dessus du paragraphe");
// traduction.put("style:paragraph-properties fo:margin-bottom", "Espacement en dessous du paragraphe");
// traduction.put("style:paragraph-properties fo:orphans", "Nombre de ligne d'orpheline");
// traduction.put("style:paragraph-properties fo:widows", "Nombre de ligne de veuve");
// traduction.put("style:text-properties style:text-underline-color", "Couleur de soulignement du paragraphe");
// traduction.put("style:text-properties style:text-underline-style", "Style du soulignement du paragraphe");
// traduction.put("style:text-properties style:text-underline-width", "Epaisseur du trait de soulignement du paragraphe");
// traduction.put("style:text-properties style:font-name", "Police de caractère du paragraphe");
// traduction.put("style:text-properties fo:font-size", "Taille de la police de caractère du paragraphe");
// traduction.put("style:text-properties style:font-style-name", "Style de la police de caractère du paragraphe");
// traduction.put("style:text-properties fo:text-shadow", "Effet de caractère ombré du paragraphe");
// traduction.put("style:paragraph-properties fo:text-align", "Alignement du paragraphe");
// traduction.put("style:text-properties fo:font-variant", "Effet de caractère petite majuscule");
// traduction.put("style:paragraph-properties fo:line-height", "Interligne");
// traduction.put("style:paragraph-properties fo:text-indent", "Retrait de première ligne");
// traduction.put("style:style style:parent-style-name", "Hérite du style");
// traduction.put("style:paragraph-properties fo:text-indent", "Retrait");
// traduction.put("style:paragraph-properties fo:padding-top", "Remplissage (espacement) en haut");
// traduction.put("style:paragraph-properties fo:padding-left", "Remplissage (espacement) à gauche");
// traduction.put("style:paragraph-properties fo:padding-right", "Remplissage (espacement) à droite");
// traduction.put("style:paragraph-properties fo:padding-bottom", "Remplissage (espacement) en bas");
// traduction.put("style:text-properties style:text-underline-type", "Style du trait de soulignage");
// traduction.put("style:paragraph-properties style:tab-stop-distance", "Distance du stop de la tabulation");
// traduction.put("style:text-properties fo:font-weight", "Style texte <b>GRAS</b>");
//
// //style de page
// traduction.put("style:master-page style:name", "Nom du style de page");
// traduction.put("style:page-layout style:page-usage", "Mise en page de la page");
// traduction.put("style:page-layout-properties fo:page-width", "Largeur de la page");
// traduction.put("style:page-layout-properties fo:page-height", "Hauteur de la page");
// traduction.put("style:page-layout-properties fo:margin-right", "Marge à droite de la page");
// traduction.put("style:page-layout-properties fo:border", "Les 4 bordures de la page");
// traduction.put("style:page-layout-properties fo:margin-left", "Marge à gauche de la page");
// traduction.put("style:page-layout-properties fo:margin-bottom", "Marge en bas de la page");
// traduction.put("style:page-layout-properties fo:margin-top", "Marge en haut de la page");
// traduction.put("style:page-layout-properties fo:margin-right", "Marge à droite de la page");
// traduction.put("text:chapter text:display", "Champ chapitre");
// traduction.put("text:chapter Contenu textuel", "Valeur du champ chapitre");
// traduction.put("style:header-footer-properties fo:border-bottom", "<b>Entête ou Pied de page</b> : Bordure inférieure");
// traduction.put("style:header-footer-properties fo:border-right", "<b>Entête ou Pied de page</b> : Bordure droite");
// traduction.put("style:header-footer-properties fo:border-left", "<b>Entête ou Pied de page</b> : Bordure gauche");
// traduction.put("style:header-footer-properties fo:border-top", "<b>Entête ou Pied de page</b> : Bordure haute");
// traduction.put("style:header-footer-properties fo:margin-bottom", "<b>Entête ou Pied de page</b> : Marge en dessous");
// traduction.put("style:header-footer-properties fo:margin-top", "<b>Entête ou Pied de page</b> : Marge au dessus");
// traduction.put("style:master-page style:next-style-name", "Style de la page suivante");
// traduction.put("text:bookmark-ref text:ref-name", "Nom du repère de texte");
// traduction.put("text:bookmark-ref text:reference-format", "Réfèrence du repère de texte");
// traduction.put("style:columns fo:column-count", "Nombre de colonne");
// traduction.put("style:columns fo:column-gap", "Espacement entre les colonnes<br><i>Gouttière</i>");
// traduction.put("style:header-footer-properties fo:border", "Les 4 bordures du pied de page<br><i>droite gauche bas haut</i>");
// traduction.put("text:tab name", "Tabulation");
// traduction.put("text:tab Contenu textuel", "Contenu textuel après tabulation");
// traduction.put("text:initial-creator Contenu textuel", "Champ auteur (premier auteur)");
// traduction.put("text:creator Contenu textuel", "Champ auteur (modifié)");
// traduction.put("style:page-layout-properties style:num-format", "Format de la numérotation");
// traduction.put("text:page-number text:select-page", "Champ numérotation de la page");
// traduction.put("style:page-layout-properties style:print-orientation", "Orientation de la page");
// traduction.put("style:header-footer-properties fo:min-height", "Hauteur minimal du pied de page");
//
// //style structure
// traduction.put("page style:master-page-name", "Nom du style de page");
// traduction.put("page numeroabsolue", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Position (numéro) absolue de la page<br>par rapport à l'ensemble des pages<span class=\"tooltiptext2\">C'est l'ordre d'apparition de la page lorsque le mode \"<b>Livre</b>\" est utilisé.<br>Dans le mode d'affichage \"<b>Livre</b>\" toutes les pages s'affichent, y compris les pages vides.");
// traduction.put("text:title Contenu textuel", "Valeur de la méta donnée \"<b>Titre</b>\"");
// traduction.put("text:subject Contenu textuel", "Valeur de la méta donnée \"<b>Sujet</b>\"");
// traduction.put("draw:frame draw:name", "<div class=\"tooltip2\" style=\"color:>" + colorPo + "\">"+ HTML.imgInterogation() +" Nom de l'objet indiqué dans<br>l'onglet \"<b>Options</b>\"<br>de la boite \"<b><u>Propriétés</u></b>\" de l'objet.<span class=\"tooltiptext2\">Si l'objet ne se nomme pas <b><u>EXACTEMENT</u></b> comme indiqué dans la consigne.<br><br>L'algorithme d'analyse ne pourra pas trouver l'objet.Vous aurez que des valeurs <b><u>NULL</u></b><br><br>Faites attention à la case (majuscule et minuscule). Ne tapez pas d'espace après le dernier caractère. Ne tapez pas de guillemet, etc.</span></div>");
// traduction.put("text:description Contenu textuel", "<div class=\"tooltip2\" style=\"color:>" + colorPo + "\">"+ HTML.imgInterogation() +" Champ <b>Commentaires</b><span class=\"tooltiptext2\">Pour insérer le champ \"<b>Commentaires</b>\".<br>Sélectionner le menu Insertion/Champ/Autres champs...<br><br>Dans la boite de dialogue \"Champ\"<br>Onglet \"Info document\"</span></div>");
// traduction.put("page style:page-usage", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Mise en page de la page<span class=\"tooltiptext2\">Dans les <b>Propriétés</b> du style de page<br>Onglet <b>Page</b><br><b>Mise en page</b></span></div>");
// traduction.put("text:index-title-template Contenu textuel", "Titre de l'index");
// traduction.put("text:table-of-content text:protected", "Protection de l'index");
// traduction.put("text:date text:fixed", "La date est fixe");
// traduction.put("text:conditional-text text:condition", "La condition du texte conditionnel");
// traduction.put("text:date style:data-style-name", "Style de la date");
// traduction.put("text:conditional-text text:string-value-if-true", "Si la condition est <b>Vrai</b> affiche le texte");
// traduction.put("text:conditional-text text:string-value-if-false", "Si la condition est <b>Fausse</b> affiche le texte");
// traduction.put("text:span Contenu textuel","<div class=\"tooltip2\">"+ HTML.imgInterogation() + "Contenu textuel avec formatage local<span class=\"tooltiptext2\"><b><u>Attention formatage local:</u></b><br>Si le texte n'a pas été trouvé.<br>Vous devez savoir que l'application recherche le paragraphe par son contenu.<br>Mais aussi par le type d'élément (ici un formatage local).<br>Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient &quot;null&quot;.<br>Vérifier le contenu textuel, ou le type d'élément.<br></span></div>");
// traduction.put("text:p Contenu textuel", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Contenu textuel dans un paragraphe<span class=\"tooltiptext2\"><b><u>Attention paragraphe de texte :</u></b><br>Si le texte n'a pas été trouvé.<br>Vous devez savoir que l'application recherche le paragraphe par son contenu.<br>Mais aussi par le type d'élément (ici un paragraphe de texte).<br>Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient &quot;null&quot;.<br>Vérifier le contenu textuel, ou le type d'élément.<br></span></div>");
// traduction.put("text:date text:date-value", "La date");
// traduction.put("text:section text:name", "Nom de la section");
// traduction.put("text:section text:condition", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Condition de la section<span class=\"tooltiptext2\"><b><u>Attention section conditionnel:</u></b><br>Ne tapez pas d'espace après le dernier guillemet du texte.<br>Ne tapez pas d'espace après le dernier caractère de votre condition.</span></div>");
// traduction.put("text:section Contenu textuel", "Contenu textuel de la section");
// traduction.put("style:paragraph-properties fo:break-before", "Type de saut placé avant");
// traduction.put("style:paragraph-properties fo:padding", "Remplissage (padding) du paragraphe");
// traduction.put("style:text-properties fo:color", "Couleur de la police");
// traduction.put("text:h text:style-name", "Nom du style du paragraphe Titre");
// traduction.put("text:change-start Contenu textuel", "Insertion du texte");
// traduction.put("style:paragraph-properties fo:margin-right", "Retrait avant le paragraphe");
// traduction.put("style:paragraph-properties fo:margin-left", "Retrait après le paragraphe");
// traduction.put("style:paragraph-properties fo:border", "Style des quatre bordures");
//
// //frame
// traduction.put("draw:frame text:anchor-type", "Ancrage de l'objet");
// traduction.put("draw:frame text:anchor-page-number", "Ancrage dans la page numéro");
// traduction.put("draw:frame svg:y", "Position (distance) verticale<br>de l'objet");
// traduction.put("draw:frame svg:x", "Position (distance) horizontale<br>de l'objet");
// traduction.put("draw:frame svg:height", "Hauteur de l'objet");
// traduction.put("draw:frame svg:width", "Largeur de l'objet");
// traduction.put("style:graphic-properties fo:padding", "Remplissage (marge)<br>avec les bords du cadre de l'objet");
// traduction.put("style:graphic-properties style:vertical-pos", "Position verticale de l'objet par rapport à");
// traduction.put("style:graphic-properties style:horizontal-pos", "Position horizontale de l'objet par rapport à");
// traduction.put("style:graphic-properties fo:border", "Les 4 bordures de l'objet");
// traduction.put("style:graphic-properties fo:margin-bottom", "Espacement en dessous de l'objet");
// traduction.put("style:graphic-properties fo:margin-top", "Espacement au dessus de l'objet");
// traduction.put("style:graphic-properties fo:margin-right", "Espacement à droite de l'objet");
// traduction.put("style:graphic-properties fo:margin-left", "Espacement à gauche de l'objet");
// traduction.put("style:graphic-properties style:horizontal-rel", "Position horizontale par rapport à");
// traduction.put("style:graphic-properties style:vertical-rel", "Position verticale par rapport à");
// traduction.put("style:graphic-properties style:wrap", "Adaptation du texte");
// traduction.put("style:graphic-properties style:number-wrapped-paragraphs", "Adaptation du texte<br>nombre de paragraphe adapté");
// traduction.put("style:graphic-properties style:wrap-contour", "Adaptation du texte \"<b>Contour</b>\"");
// traduction.put("text:sequence text:name", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Nom de la variable de <b>Séquence</b> pour légender<span class=\"tooltiptext2\">Menu Insertion/Champ/Autres champs...<br>Onglet \"<b>Variables</b>\"</span></div>");
// traduction.put("text:sequence Contenu textuel", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" La légende avec la variable de <b>Séquence</b><span class=\"tooltiptext2\">Pour légender une image, il faut un clic droite sur l'image et sélectionner <b>Insérer une légende...</b><br>Cependant, il faut retirer la protection du contenu.</span></div>");
// traduction.put("style:graphic-properties style:protect", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Protection de l'objet</b><span class=\"tooltiptext2\">Dans la boite de dialogue <b>Propriétés</b><br>Onglet Option<br>Vou devez cocher les protections (case à cocher)</span></div>");
// traduction.put("style:graphic-properties style:wrap-contour-mode", "Mode contour du texte");
// traduction.put("draw:text-box fo:min-height", "Hauteur du frame<br>(cadre de texte)");
// traduction.put("draw:frame Contenu textuel", "Paragraphe d'ancrage");
// traduction.put("text:database-display text:table-type", "Type de la source de données");
// traduction.put("text:database-display text:column-name", "<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Nom du champ de données<span class=\"tooltiptext2\">Ne tapez pas d'espace à la fin du nom de la colonne, Sinon Null.</span></div>");
// traduction.put("text:database-display text:database-name", "Nom de la base de données");
// traduction.put("text:database-display text:table-name", "Nom de la table de données");
//
// //numérotation hiérarchisée
// traduction.put("text:outline-level-style style:num-suffix", "Suffix (après la numérotation)");
// traduction.put("text:outline-level-style style:num-prefix", "<div class=\"tooltip2\">" + HTML.imgInterogation() + " Prefix (devant la numérotation)<span class=\"tooltiptext2\"><b><u>Attention :</u></b><br>Il peut y avoir devant la numération un espace.<br><br>Par exemple : <b>§[espace]</b>");
// traduction.put("text:outline-level-style style:num-format", "Format de la numérotation");
// traduction.put("text:outline-level-style text:level", "Niveau de la numérotation");
// traduction.put("style:list-level-properties text:list-level-position-and-space-mode", "Position, Espacement de la numérotation");
// traduction.put("style:list-level-label-alignment text:label-followed-by", "<div class=\"tooltip2\">" + HTML.imgInterogation() + " Numérotation suivi d'un(e)<span class=\"tooltiptext2\">Dans la boite de dialogue \"Numérotation des chapitres\"<br>Onglet Position<br>Numerotation suivi par.</span></div>");
// traduction.put("text:outline-level-style text:display-levels", "<div class=\"tooltip2\">" + HTML.imgInterogation() + " Nombre de niveau affiché par la numérotation<span class=\"tooltiptext2\">Dans la boite de dialogue \"Numérotation des chapitres\"<br>Afficher les sous-niveaux.</span></div>");
//
// //Table, index, bibliographie
// traduction.put("txt:p Contenu textuel", "<div class=\"tooltip2\">" + HTML.imgInterogation() + " Texte recherché<span class=\"tooltiptext2\"><b><u>Attention</u></b>, il suffit qu'un seul caractère soit différent avec la consigne pour que l'algorithme ne trouve pas le texte.<br>S'il ne trouve pas votre texte alors la valeur est \"<b>null</b>\".<br>L'algorithme peut trouver votre texte, mais s'il y a trop de différence, il n'accorde pas les points.</span></div>");
//
//
// // Paragraphe et retour à la ligne
// //traduction.put("text:line-break name", "<div class=\"tooltip2\">" + HTML.imgInterogation() +" Retour à la ligne<span class=\"tooltiptext2\">Un retour à la ligne est différent d'un paragraphe.<br>Pour réaliser un retour à la ligne vous devez taper<br><b>SHIFT + ENTRÉE</b></span></div>");
// //traduction.put("text:p name", "<div class=\"tooltip2\">" + HTML.imgInterogation() +" Paragraphe de texte<span class=\"tooltiptext2\">Le paragraphe de texte est représenté par un pied de mouche Ƣ</span></div>");
//
//
// //variable de séquence
// traduction.put("text:sequence-decl text:name", "<div class=\"tooltip2\">" + HTML.imgInterogation() +" Variable de séquence<span class=\"tooltiptext2\">La variable de séquence permet de légender et de créer des index.<br>Pour ajouter une variable de séquence, vous devez sélectionner le menu<br>Insertion/Champ/Autres champs...<br>Onglet \"<b>Variables</b>\".</span></div>");
// if(code.equals("text:line-break Nom du node")) code="Retour à la ligne";
// if(code.equals("text:p Nom du node")) code="Nouveau paragraphe";
// if(code.equals("text:line-break Contenu textuel")) code="<div class=\"tooltip2\">"+ HTML.imgInterogation() +" Contenu textuel<span class=\"tooltiptext2\"><b><u>Attention :</u></b><br>Si le texte n'a pas été trouvé.<br>Vous devez savoir que l'application recherche le paragraphe par son contenu.<br>Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient &quot;null&quot;.<br>Vérifier le contenu textuel de votre paragraphe.<br></span></div>";
// if(code.contains("text:illustration-index-source") && code.contains("text:caption-sequence-name")) code="Catégorie de la légende";
// if(code.contains("text:table-of-content-source") && code.contains("text:outline-level")) code="Niveau de plan de l'index<br>Type &ldquo;Table des matières&ldquo;";
}
/**
* Chargement des traductions des éléments de l'exercice an utilsant le node "<b>translation</b>" du fichier d'analyse.<br>
* Les noms des éléments sont placés dans un dictionnaire la key et la valeur est le code HTML.
*
* @param translation Le node "<b>translation</b>" qui se trouve dans le node "<b>setting</b>" du fichier d'analyse.
*/
public static void chargeTraduction(node translation) {
if(translation!=null) {
String classText = "";
if(translation.getAttributs().get("classtext")!=null) if(!translation.getAttributs().get("classtext").isEmpty()) classText = "</span><span class=\""+ translation.getAttributs().get("classtext") +"\">";
String className = "";
if(translation.getAttributs().get("class")!=null) if(!translation.getAttributs().get("class").isEmpty()) className = "<div class=\"" + translation.getAttributs().get("class") + "\">";
for(int i = 0 ; i < translation.getNodes().size();i++) {
String translate = "";
String contenu ="";
String link = "";
String color = "";
String codeHTML = "";
boolean T = false;
if(translation.getNodes().get(i).getAttributs().get("translate")!=null) if(!translation.getNodes().get(i).getAttributs().get("translate").isEmpty()) translate=translation.getNodes().get(i).getAttributs().get("translate");
if(!translation.getNodes().get(i).getContenu().isEmpty()) contenu = translation.getNodes().get(i).getContenu().replace("-!", "<").replace("!-", ">");
if(translation.getNodes().get(i).getAttributs().get("link")!=null) if(!translation.getNodes().get(i).getAttributs().get("link").isEmpty()) link="<p><a href=\"" + translation.getNodes().get(i).getAttributs().get("link") + "\" target=\"_blank\">Lien</a></p>";
if(translation.getNodes().get(i).getAttributs().get("color")!=null) if(!translation.getNodes().get(i).getAttributs().get("color").isEmpty()) color="<span style=\"color:" + translation.getNodes().get(i).getAttributs().get("color") + "\">";
if(translation.getNodes().get(i).getAttributs().get("image")!=null) if(!translation.getNodes().get(i).getAttributs().get("image").isEmpty()) if(translation.getNodes().get(i).getAttributs().get("image").equals("true")) T=true;
if(!contenu.isEmpty() && !className.isEmpty() && !classText.isEmpty()) {
if(!link.isEmpty()) {
if(!color.isEmpty()) {
if(!T) codeHTML = className + color + translate + "</span>" + classText + contenu + link + "</span></div>" ;
if(T) codeHTML = className + HTML.imgInterogation() + color + translate + "</span>" + classText + contenu + link + "</span></div>" ;
}else {
if(!T) codeHTML = className + translate + "</span>" + classText + contenu + link + "</span></div>" ;
if(T) codeHTML = className + HTML.imgInterogation() + translate + "</span>" + classText + contenu + link + "</span></div>" ;
}
}else {
if(!color.isEmpty()) {
if(!T) codeHTML = className + color + translate + "</span>"+ classText + contenu + "</span></div>" ;
if(T) codeHTML = className + HTML.imgInterogation() + color + translate + "</span>"+ classText + contenu + "</span></div>" ;
}else {
if(!T) codeHTML = className + translate + classText + contenu + "</span></div>" ;
if(T) codeHTML = className + HTML.imgInterogation() + translate + classText + contenu + "</span></div>" ;
}
}
}else {
if(!link.isEmpty()) {
if(!color.isEmpty()) {
if(!T) codeHTML = color + translate+ "</span>" + link;
if(T) codeHTML = color + HTML.imgInterogation() + translate+ "</span>" + link;
}else {
if(!T) codeHTML = translate + link;
if(T) codeHTML = HTML.imgInterogation() + translate + link;
}
}else {
if(!color.isEmpty()) {
if(!T) codeHTML = color + translate+ "</span>";
if(T) codeHTML = color + HTML.imgInterogation() + translate+ "</span>";
}else {
if(!T) codeHTML = translate;
if(T) codeHTML = HTML.imgInterogation() + translate;
}
}
}
codeHTML = codeHTML.replace("-!", "<").replace("!-", ">");
if(!codeHTML.isEmpty()) {
traduction.put(translation.getNodes().get(i).getNomElt().replace("..", " "),codeHTML);
}
}
}
}
/**
* Compare les chaîne de caractères A et sujet en fonction des 8 fonctions ‽ † ¢ → ¦ ↕ ↑ † ×<br>
*
* @param A le texte de l'étudiant.
* @param Sujet le tetxte du sujet.
* @return Une chaine de caractère contenant "Correct" ou "Erreur".
*/
public static String Compare(String A, String Sujet ) {
// les points
String pointString = "" ;
pointEnJeu=0;
if(Sujet!=null) if(Sujet.contains("")) {
pointString = TraitePoint(Sujet);
Sujet=Sujet.substring(0, Sujet.indexOf(""));
}
// optionnel pas d'analyse
if(pointEnJeu==0) return "Optionnel";
// autre chose que null, none ou vide (analyse très simple) toutes les autres fonctions sont ignorées
if(Sujet!=null) if(Sujet.contains("")) {
if(A==null) return "Erreur : -" + pointString;
if(A.equals("none")) return "Erreur : -" + pointString;
if(A.isEmpty()) return "Erreur : -" + pointString;
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}
// fonction ET CONTIENT plusieurs textes - quelque chose mais pas vide -
if(Sujet!=null) if(Sujet.contains("×") && !Sujet.contains("¢") && !Sujet.contains("") && !Sujet.contains("#") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("") ) {
if(A==null) return "Erreur : -" + pointString;
if(A.equals("none")) return "Erreur : -" + pointString;
if(A.isEmpty()) return "Erreur : -" + pointString;
if(TraitementETContient(A,Sujet).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}
return "Erreur : -" + pointString;
}
// fonction OU puis ET CONTIENT plusieurs textes - quelque chose mais pas vide -
if(Sujet!=null) if(Sujet.contains("×") && Sujet.contains("¦") && !Sujet.contains("¦(") && !Sujet.contains("¢") && !Sujet.contains("") && !Sujet.contains("#") && !Sujet.contains("") && !Sujet.contains("") ) {
if(A==null) return "Erreur : -" + pointString;
if(A.equals("none")) return "Erreur : -" + pointString;
if(A.isEmpty()) return "Erreur : -" + pointString;
if(TraitementOUETcontient(A,Sujet).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}
return "Erreur : -" + pointString;
}
// nettoyage du texte avant de l'analyser si ne contient pas d'autres fonctions cette fonction ne peut pas être combinée
if(Sujet!=null) if(Sujet.contains("¢") && !Sujet.contains("") && !Sujet.contains("#") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("") ) {
// Sujet = NetTexte(Sujet);
// A = NetTexte(A);
if(A==null) A="null";
// if(A.contains(Sujet)) {
// IncrementPointClass(pointEnJeu);
// return "Correct : +" + pointString;
// }
if(similitudeString(A, Sujet,commandes.tolerance_text)) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}
return "Erreur : -" + pointString;
}
//intervalles valeur simple pas de bordure, pas de couleur, et pas d'autres fonctions
if(Sujet.contains("") && A!=null && !Sujet.contains("#") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("") && !Sujet.contains("¢")) {
if (TraitementIntervalle(A,Sujet).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}else {
return "Erreur : -" + pointString;
}
}
// bordures simple sans intervalles ou autres fonctions
if(Sujet.contains("#") && Sujet.contains("pt") && Sujet.contains(" ") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("") && !Sujet.contains("¢") && A!=null) {
if(TraitementBordure2(Sujet,A).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}else {
return "Erreur : -" + pointString;
}
}
// couleur simple pas de bordure ou pas d'autres fonctions
if(Sujet.contains("#") && !Sujet.contains("pt") && Sujet.contains(" ") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("") && !Sujet.contains("¢") && A!=null) {
if(TraitementCouleur(Sujet,A).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}else {
return "Erreur : -" + pointString;
}
}
//Exact avec OU sans d'autres fonctions OU
if(Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("") && !Sujet.contains("¢")) {
if(TraitementOUExact(A,Sujet).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}else {
return "Erreur : -" + pointString;
}
}
//OU Exact mais sans les espaces et sans d'autres fonctions OU
if(Sujet.contains("") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("") && !Sujet.contains("¢")) {
if(TraitementOUExactSansEspace(A,Sujet).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}else {
return "Erreur : -" + pointString;
}
}
//Opérateur OU avec nettoyage du texte
if(Sujet.contains("") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("¢")) {
if(TraitementOU(A,Sujet).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}else {
return "Erreur : -" + pointString;
}
}
//Opérateur ou avec nettoyage des caractères spéciaux et des chiffres
if(Sujet.contains("") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("¢")) {
if(TraitementOUSupprimeChiffreEtsansCase(A,Sujet).equals("Correct : ")) {
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;
}else {
return "Erreur : -" + pointString;
}
}
// ne contient aucune fonction
if(!Sujet.contains("") && !Sujet.contains("¦") && !Sujet.contains("") && !Sujet.contains("") && !Sujet.contains("¢") && !Sujet.contains("") && !Sujet.contains("")) {
if(A!=null)if(A.equals("auto")) A=null;
if(Sujet!=null)if(Sujet.equals("auto")) Sujet=null;
if(A!=null) if(A.equals("0cm")) A=null;
if(Sujet!=null) if(Sujet.equals("0cm")) Sujet=null;
if(A!=null) if(A.equals("none")) A=null;
if(Sujet!=null) if(Sujet.equals("none")) Sujet=null;
if(A!=null) if(A.isEmpty()) A=null;
if(Sujet!=null) if(Sujet.isEmpty()) Sujet=null;
if(A!=null) if(A.equals("0")) A=null;
if(Sujet!=null) if(Sujet.equals("0")) Sujet=null;
if(A!=null) if(A.equals("null")) A=null;
if(Sujet!=null) if(Sujet.equals("null")) Sujet=null;
if(A!=null) if(A.equals("false")) A=null;
if(Sujet!=null) if(Sujet.equals("false")) Sujet=null;
if(A!=null) if(Sujet==null) if(!pointString.isEmpty()) { return "Erreur : -" + pointString;}
if(A!=null) if(Sujet==null) if(pointString.isEmpty()) {return "Erreur";}
if(A==null) if(Sujet==null) if(!pointString.isEmpty()){IncrementPointClass(pointEnJeu); return "Correct : +" + pointString;}
if(A==null) if(Sujet==null) if(pointString.isEmpty()) {IncrementPointClass(pointEnJeu); return "Correct";}
if(A==null) if(Sujet!=null) if(!pointString.isEmpty()) return "Erreur : -" + pointString;
if(A==null) if(Sujet!=null) if(pointString.isEmpty()) return "Erreur";
if(!pointString.isEmpty()) {
if(A.equals(Sujet)){
IncrementPointClass(pointEnJeu);
return "Correct : +" + pointString;}
else {
return "Erreur : -" + pointString;
}
}else {
if(A.equals(Sujet)){
IncrementPointClass(pointEnJeu);
return "Correct";}
else {
return "Erreur";
}
}
}else {
return "Erreur combinaison †¢→¦↕↑";
}
}
/**
* Traitement des points du paramètre
* @param B
* @return
*/
public static String TraitePoint(String B) {
int point = 0;
pointEnJeu=0;
String pointString ="";
String C =B.substring(B.indexOf("")+1,B.length());
if(B!=null) if(B.contains("")) if(B.length()>1) if(!C.isEmpty()) {
try {
point = Integer.valueOf(B.substring(B.indexOf("")+1,B.length()));
}catch (Exception e) {
System.out.println("erreur sur un point : " +B);
e.getMessage();
}
}else {
point=0;
}
if(point==0) {
pointString="";
}
if(point>0) {
pointString = Integer.valueOf(point) + " pt";
IncrementPointTotal(point);
pointEnJeu= point;
}
return pointString;
}
/**
* Traitement des intervalles
* @return
*/
private static String TraitementIntervalle(String A, String B) {
if(A.isEmpty()) return "Erreur : ";
String Text[] = B.split("");
// rechercher un digite une ou plusieur fois en fin.
Pattern p = Pattern.compile("[^0-9\\.]");
// création du moteur associé à la regex sur la chaîne A
// Matcher m0 = p.matcher(Text[0]);
// remplacement de toutes les occurrences par ""
Text[0]= p.matcher(Text[0]).replaceAll("");
Text[1] = p.matcher(Text[1]).replaceAll("");
A = p.matcher(A).replaceAll("");
double b0 = Double.valueOf(Text[0]);
double b1 = Double.valueOf(Text[1]);
if(A.isEmpty()) return "Erreur : ";
double v = Double.valueOf(A);
if(v<=b1 && v>=b0 ) return "Correct : ";
return "Erreur : ";
}
private static String TraitementBordure2(String Sujet, String B) {
if(Sujet.isEmpty()) return "Erreur : ";
String TextB[] = B.split(" ");
String TextA[] = Sujet.split(" ");
if(TextB.length!=3 || TextA.length!=3) return "Erreur : ";
boolean taille = false;
boolean type = false;
boolean couleur =false;
// traitement de la taille (epaisseur du trait)
if(TextA[0].contains("")) {
if(TraitementIntervalle(TextB[0], TextA[0]).equals("Correct : ")) taille = true;
}else {
double tailleA = Double.valueOf(TextA[0].replace("pt",""));
double tailleB = Double.valueOf(TextB[0].replace("pt",""));
double IT = 0.02;
if((tailleA<tailleB+IT) && (tailleA>tailleB-IT))taille = true;
}
// traitement du type de trait
String typeA = TextA[1];
String typeB = TextB[1];
//trait pointillé
if(typeA.equals("dash-dot")) typeA="dashed";
if(typeB.equals("dash-dot")) typeB="dashed";
if(typeA.equals("dotted")) typeA="dashed";
if(typeB.equals("dotted")) typeB="dashed";
if(typeA.equals("fine-dashed")) typeA="dashed";
if(typeB.equals("fine-dashed")) typeB="dashed";
if(typeB.equals("dash-dot-dot")) typeB="dashed";
if(typeA.equals("dash-dot-dot")) typeA="dashed";
if(typeA.equals("double-thin")) typeA="double";
if(typeB.equals("double-thin")) typeB="double";
if(typeA.equals("outset")) typeA="double";
if(typeB.equals("outset")) typeB="double";
if(typeA.equals("inset")) typeA="double";
if(typeB.equals("inset")) typeB="double";
if(typeA.equals("groove")) typeA="solid";
if(typeB.equals("groove")) typeB="solid";
if(typeA.equals("ridge")) typeA="solid";
if(typeB.equals("ridge")) typeB="solid";
if(typeA.equals(typeB)) type=true;
// traitement de la couleur du trait
String couleurA = TextA[2].replace("#", "");
String couleurB = TextB[2].replace("#", "");
if(couleurA.equals(couleurB)) couleur = true;
if(!couleur) {
if(TraitementCouleur(couleurA, couleurB).equals("Correct : ")) {
couleur =true;
}
}
if(taille && type && couleur) return "Correct : ";
return "Erreur : ";
}
/**
* Traitement de la couleur pour comparaison
* @param A
* @param B
* @return
*/
private static String TraitementCouleur(String A, String B) {
if(A.isEmpty()) return "Erreur : ";
// traitement de la couleur du trait
String couleurA = A.replace("#", "");
String couleurB = B.replace("#", "");
if(couleurA.equals(couleurB)) return "Correct : ";
if(couleurA.length()==6 && couleurB.length()==6) {
int Ared = Integer.parseInt(couleurA.substring(0, 2),16);
int Agreen = Integer.parseInt(couleurA.substring(2, 4),16);
int Ablue = Integer.parseInt(couleurA.substring(4, 6),16);
int Bred = Integer.parseInt(couleurB.substring(0, 2),16);
int Bgreen = Integer.parseInt(couleurB.substring(2, 4),16);
int Bblue = Integer.parseInt(couleurB.substring(4, 6),16);
// couleur dominante avec 10 niveau
if(Ared>Agreen+10 && Ared>Ablue+10 && Bred>Bgreen+10 && Bred>=Bblue+10) return "Correct : ";//couleur=true; //Couleur dominante rouge
if(Agreen>Ared+10 && Agreen>Ablue+10 && Bgreen>Bred+10 && Bgreen>Bblue+10) return "Correct : "; //couleur = true; //Couleur dominante vert
if(Ablue>Ared+10 && Ablue>Agreen+10 && Bblue>Bred+10 && Bblue>Bgreen+10) return "Correct : "; //couleur = true; //Couleur dominante bleu
if(Ablue==Ared && Ablue==Agreen && Bblue==Bred && Bblue==Bgreen) return "Correct : "; //couleur = true; //Couleur gris (tous les gris)
if(procheCouleur(Ared,Bred,Agreen,Bgreen,Ablue,Bblue)) return "Correct : "; //couleur = true; //Couleur gris (tous les gris)
}
//if(couleur) return "Correct : ";
return "Erreur : ";
}
/**
* couleur proche
* @param S1
* @param S2
* @return
*/
private static Boolean procheCouleur(int R1, int R2, int V1, int V2, int B1, int B2) {
int ecartR = Math.abs(R1-R2);
int ecartV = Math.abs(V1-V2);
int ecartB = Math.abs(B1-B2);
int sommeEcrat = ecartR+ecartV+ecartB;
if(sommeEcrat < 135) return true;
return false;
}
/**
* Traitement des conditions OU avec nettoyage du texte
* Comparaison egale, contient , similitude
* @param A
* @param B
* @return
*/
private static String TraitementOU(String A, String B) {
if(A==null) A="none";
if(A.isEmpty()) A="none";
A = NetTexte(A);
String TextB[] = B.split("");
for(int i=0;i<TextB.length;i++) {
TextB[i] = NetTexte(TextB[i]);
if(A.equals(TextB[i])) return "Correct : ";
if(A.contains(TextB[i])) return "Correct : ";
if(similitudeString(A, TextB[i],commandes.tolerance_text)) return "Correct : ";
}
return "Erreur : ";
}
/**
* Traitement Exact
* @param A
* @param B
* @return
*/
private static String TraitementOUExact(String A, String B) {
if(A==null && !B.contains("null")) return "Erreur : ";
if(A==null && B.contains("null")) return "Correct : ";
String TextB[] = B.split("¦");
for(int i=0;i<TextB.length;i++) {
if(!TextB[i].contains("")) {
if(A.equals(TextB[i])) return "Correct : ";
}else {
if (TraitementIntervalle(A,TextB[i]).equals("Correct : ")) return "Correct : ";
}
}
return "Erreur : ";
}
/**
*
* @param A
* @param Sujet
* @return
*/
private static String TraitementOUExactSansEspace(String A, String Sujet) {
if(A==null && !Sujet.contains("null")) return "Erreur : ";
if(A==null && Sujet.contains("null")) return "Correct : ";
A = A.replace(" ", "");
String TextB[] = Sujet.split("");
for(int i=0;i<TextB.length;i++) {
if(!TextB[i].contains("")) {
if(A.equals(TextB[i].replace(" ", ""))) return "Correct : ";
}else {
if (TraitementIntervalle(A,TextB[i].replace(" ", "")).equals("Correct : ")) return "Correct : ";
}
}
return "Erreur : ";
}
/**
* Fonction ET contient le texte du node Sujet
* @param A
* @param Sujet
* @return
*/
private static String TraitementETContient(String A, String Sujet) {
String TextB[] = Sujet.split("×");
boolean Correct = false;
for(int i=0;i<TextB.length;i++) {
if(!TextB[i].isEmpty()) {
if(A.trim().contains(TextB[i].trim())) {
Correct = true;
}else {
return "Erreur : ";
}
}
}
if(Correct) return "Correct : ";
return "Erreur : ";
}
/**
* Fonction OU contenant des ET contient le texte du node Sujet
* @param A
* @param Sujet
* @return
*/
private static String TraitementOUETcontient(String A, String Sujet) {
String TextB[] = Sujet.split("¦");
for(int i=0;i<TextB.length;i++) {
if(TextB[i].contains("×")) {
if(TraitementETContient( A, TextB[i]).equals("Correct : ")) return "Correct : ";
}else {
if(A.trim().contains(TextB[i].trim())) return "Correct : ";
}
}
return "Erreur : ";
}
/**
* Traitement des condition OU en supprimant les chiffres
* @param A
* @param B
* @return
*/
private static String TraitementOUSupprimeChiffreEtsansCase(String A, String B) {
if(A==null) A="none";
if(A.isEmpty()) A="none";
// rechercher un digite une ou plusieur fois en fin.
Pattern p = Pattern.compile("[0-9]");
// création du moteur associé à la regex sur la chaîne A
Matcher m = p.matcher(A);
// remplacement de toutes les occurrences par ""
A= m.replaceAll("");
A=A.toLowerCase();
m = p.matcher(B);
B = m.replaceAll("");
B= B.toLowerCase();
A = NetTexte(A);
String TextB[] = B.split("");
for(int i=0;i<TextB.length;i++) {
TextB[i] = NetTexte(TextB[i]);
if(A.equals(TextB[i].toLowerCase())) return "Correct : ";
}
return "Erreur : ";
}
/**
* Sans les point
* @param B
* @return
*/
public static String withoutPoint(String B) {
if(B!=null) if(B.contains("")) {
B=B.substring(0, B.indexOf(""));
}
return B;
}
public static String withoutCode(String B) {
B=B.replace("¢", "");
return B;
}
public static String withoutCodeAndPoint(String B) {
if(B!=null) {
if(B.contains("")) B=B.substring(0, B.indexOf(""));
if(!B.isEmpty()) B=B.replace("¢", "");
}
return B;
}
/**
* Uniquement suppression des codes ‽, ↑, ↕, ≡, ¢<br>
* pour effectuer la recherche d'un node par son contenu.
* @param B un string
* @return B un string
*/
public static String withoutCodeAndPointPourRechercheContenuExact(String B) {
if(B!=null) {
if(B.contains("")) 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("¢", "");
}
return B;
}
/**
* Supprime les caracatères spéciaux, la pontuaction, tous les espaces, et les chiffres<br>
* Bascule le texte en minuscule.<br>
* @param A Le texte qui doit être nettoyé.
* @return Le texte nettoyé.
*/
private static String NetTexte(String A) {
if (A!=null) {
A=A.toLowerCase().trim();
A = A.replace("&apos;", "");
A = A.replace("&quot", "");
Pattern pt = Pattern.compile("[^a-zA-Z0-9]"); // avec les chiffres "[^a-zA-Z0-9]"
Matcher match= pt.matcher(A);
while(match.find()){
String s= match.group();
A=A.replaceAll("\\"+s, "");
}
A=A.replaceAll("[0-9]", "");
A=A.replace(" ", "");
A=A.toLowerCase();
}
return A;
}
/**
* Netoyage les chiffres placés à la fin du texte.<br>
* Cette méthode est utilisée pour supprimer les numéros de page dans les index (table de matières par exemple).<br>
* @param A Le texte.
* @return Le texte A sans chiffre à la fin du texte.
*/
public static String NetChiffreALaFin(String A) {
A=A.replaceAll("{1,}[0-9]", "");
return A;
}
/**
* Retourne la chaîne sans le numéro à la fin
* @param A
* @return
*/
public static String RemoveLastNumber(String A) {
Pattern p = Pattern.compile("[0-9]+$");
Matcher m = p.matcher(A);
A= m.replaceAll("");
return A;
}
/**
*
* @param A
* @param B
* @return
*/
public static ArrayList<node> AjouteDansALesNodesB(ArrayList<node> A,ArrayList<node> B){
for(int i=0; i<B.size();i++) {
A.add(B.get(i));
}
return A;
}
/**
* Initialisation des points
*/
public static void initiliseLesPoints() {
pointsClass=0;
pointEnJeu=0;
pointTotal=0;
}
/**
* Compare deux chaînes de caractères avec un seuil de similitude (79% par défaut).<br>
* 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.<br>
* 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.<br>
* Les Chaînes de caractères doivent avoir au moins 6 caractères, après néttoyage du texte avec la méthode NetTexte().<br>
* Sinon le seuil de tolérance est de 99.99%.<br>
* <ul>
* <li>Lorsque la longueur de la chaîne de caractères est inférieure à 50 caractères alors compare par groupe de 2 caractères.</li>
* <li>Lorsque la longueur de la chaîne de caractères est entre à 50 et 200 caractères alors compare par groupe de 3 caractères.</li>
* <li>Lorsque la longueur de la chaîne de caractères est supérieure à 200 caractères alors compare par groupe de 4 caractères.</li>
* </ul>
* <br>
* @param A Chaîne de caracatères de l'étudiant.
* @param Modele Chaîne de caractères du sujet.
* @param tolerance_text Le seuil de tolérance pour la comparaison (valeur comprise entre 0 et 1).
* @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 ;
Modele = NetTexte(Modele);
A = NetTexte(A);
double Sim = StringSimilarity.similarity(A, Modele);
if(Sim<tolerance_text) return false;
// if(A.length()<6 || Modele.length()<6) tolerance_text = 0.9999;
//
// int compteur2 = 0 ;
// int total2 = 0;
//
// String B = "";
//
// int step = 2; //valeur par défaut du pas
// if(Modele.length()>=50 && Modele.length()<200) step=3;
// if(Modele.length()>=200) step = 4;
//
//
// for(int i = 0 ; i < Modele.length()-step;i=i+step) {
// B = Modele.substring(i, i+step);
// if(A.contains(B)) compteur2++;
// total2++;
// if(i+step>Modele.length()-step) {
// B = Modele.substring(i+step, Modele.length());
// if(A.contains(B)) compteur2++;
// total2++;
// }
// }
//
//
// int compteur2b = 0 ;
// int total2b = 0;
//
// for(int i = 0 ; i < A.length()-step;i=i+step) {
// B = A.substring(i, i+step);
// if(Modele.contains(B)) compteur2b++;
// total2b++;
// if(i+step>A.length()-step) {
// B = A.substring(i+step, A.length());
// if(Modele.contains(B)) compteur2b++;
// total2b++;
// }
// }
//
//
// double rapport1 = ((double)compteur2/(double)total2);
// double rapport2 = ((double)compteur2b/(double)total2b);
//
// if(rapport1<tolerance_text){
// return false;
// }
//
// if(rapport2<tolerance_text){
// return false;
// }
return true;
}
/**
* Remplace les _20_ par un espace
* Remplace les _26_ par un &
* @param A
* @return
*/
static String remplaceCaracteresCodageAttribut(String A) {
if(A!=null) {
A = A.replace("_20_", " ");
A = A.replace("_26_", "&");
}
return A;
}
/**
* Nettoyage (suppression) des caractères spéciaux
* @param A
* @return
*/
static String NetTexte2(String A) {
if (A!=null) {
A=A.toLowerCase().trim();
ArrayList<Integer> table1 = new ArrayList<Integer>();
byte[] V = A.getBytes();
byte[] W = new byte[V.length];
int c =0;
for(int i = 0 ; i < V.length;i++) {
if(V[i]>0) {
//if (V[i]!=63 && V[i]!=-128 && V[i]!=-103) { //63 les accents é ; -128 le symbole € -30,-128,-103 l'apostrophe
W[c]=V[i];
table1.add((int) W[c]);
c++;
}
}
try {
A = new String(W,"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
A=A.replace("@", "");
A=A.replace("?", "");
A=A.replace("!", "");
A=A.replace("α", "");
A=A.replace("β", "");
A=A.replace("γ", "");
A=A.replace("δ", "");
A=A.replace("ε", "");
A=A.replace("σ", "");
A=A.replace("τ", "");
A=A.replace("ζ", "");
A=A.replace("η", "");
A=A.replace("θ", "");
A=A.replace("ι", "");
A=A.replace("", "");
A=A.replace("'", "");
A=A.replace(" ", "");
A=A.replace("'", "");
A=A.replace("«", "");
A=A.replace("»", "");
A=A.replace("&apos;", "");
A=A.replace("d&apos;", "");
A=A.replace("", "");
A=A.replace("e", "");
A=A.replace("é", "");
A=A.replace("", ""); // pas le même encodage
A=A.replace("è", "");
A=A.replace("", ""); // pas le même encodage
A=A.replace("ê", "");
A=A.replace("o", "");
A=A.replace("ô", "");
A=A.replace("a", "");
A=A.replace("â", "");
A=A.replace("", ""); // pas le même encodage
A=A.replace("à", "");
A=A.replace("", ""); // pas le même encodage
A=A.replace("u", "");
A=A.replace("ù", "");
A=A.replace("û", "");
A=A.replace("c", "");
A=A.replace("ç", "");
A=A.replace("i", "");
A=A.replace("î", "");
A=A.replace("ï", "");
A=A.replace("", ""); // pas le même encodage
A=A.replace("0", "");
A=A.replace("1", "");
A=A.replace("2", "");
A=A.replace("3", "");
A=A.replace("4", "");
A=A.replace("5", "");
A=A.replace("6", "");
A=A.replace("7", "");
A=A.replace("8", "");
A=A.replace("9", "");
A=A.replace(":", "");
A=A.replace("-", "");
A=A.replace(".", "");
A=A.replace(",", "");
A=A.replace("_", "");
A=A.replace("_", "");
A=A.replace("(", "");
A=A.replace(")", "");
A=A.replace("\"", "");
A=A.replace("+", "");
A=A.replace("Œ", "");
A=A.replace("œ", "");
A=A.replace("oe", "");
A=A.replace("\r", "");
A=A.replace("\n", "");
A=A.replace("\t", "");
A=A.replace("/", "");
A=A.replace("(", "");
A=A.replace(")", "");
A=A.replace(" ","");
A=A.trim();
}
return A;
}
public static int getPointsClass() {
return pointsClass;
}
public static int getPointTotal() {
return pointTotal;
}
public static int getPointEnJeu() {
return pointEnJeu;
}
public static double getProportionCorrect() {
return (double) pointsClass/pointTotal;
}
public static void setPointsClass(int ptsClass) {
pointsClass = ptsClass;
}
public static void setPointTotal(int ptTotal) {
pointTotal = ptTotal;
}
public static void setPointEnJeu(int ptEnJeu) {
pointEnJeu = ptEnJeu;
}
public static void IncrementPointTotal(Integer pt) {
pointTotal=pointTotal+ pt;
}
public static void decrementPointEnJeuDuTotal() {
pointTotal=pointTotal-pointEnJeu;
}
private static void IncrementPointClass(Integer pt) {
pointsClass=pointsClass+ pt;
}
}