analyseWriter/src/MEPTL/outils.java

1438 lines
76 KiB
Java
Raw Normal View History

2022-04-08 17:59:50 +02:00
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;
}
}