1438 lines
76 KiB
Java
1438 lines
76 KiB
Java
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 “Table des matières“";
|
||
// 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 "null".<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 "null".<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 "null".<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 "null".<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 "null".<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 “Table des matières“";
|
||
}
|
||
|
||
/**
|
||
* 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("'", "");
|
||
A = A.replace(""", "");
|
||
|
||
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("'", "");
|
||
A=A.replace("d'", "");
|
||
|
||
|
||
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;
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
|