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 traduction = new Hashtable(); 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="Titre 1"; // if(code.equals("Heading_20_2")) code="Titre 2"; // if(code.equals("Heading_20_3")) code="Titre 3"; // if(code.equals("Standard_20__28_user_29_")) code="Standard"; // // //meta données // if(code.equals("dc:subject texte")) code="
Valeur de la méta donnée SujetMenu Fichier/Propriétés
Onglet Description
"; // if(code.equals("dc:title texte")) code="
Valeur de la méta donnée TitreMenu Fichier/Propriétés
Onglet Description
"; // if(code.equals("meta:user-defined Auteur2")) code="
La méta donnée Auteur2Menu Fichier/Propriétés
Onglet Propriétés personnalisées
Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.

ATTENTION: Vous devez tapez comme nom de la méta donnée Auteur2
Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.
Sinon vous aurez une valeur null
"; // if(code.equals("meta:user-defined Date du contrôle")) code="
La méta donnée Date du contrôleMenu Fichier/Propriétés
Onglet Propriétés personnalisées
Clique sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.

ATTENTION: Vous devez tapez comme nom de la méta donnée Date du contrôle
Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.
Sinon vous aurez une valeur null
"; // if(code.equals("meta:user-defined Département")) code="
La méta donnée DépartementMenu Fichier/Propriétés
Onglet Propriétés personnalisées
Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.

ATTENTION: Vous devez tapez comme nom de la méta donnée Département
Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.
Sinon vous aurez une valeur null
"; // if(code.equals("meta:user-defined Groupe")) code="
La méta donnée GroupeMenu Fichier/Propriétés
Onglet Propriétés personnalisées
Clique sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.

ATTENTION: Vous devez tapez comme nom de la méta donnée Groupe
Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.
Sinon vous aurez une valeur null
"; // // if(code.equals("text:user-defined text:name")) code="
La méta donnée personnaliséeMenu Fichier/Propriétés
Onglet Propriétés personnalisées
Clique sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.
"; // // //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 GRAS"; // if(code.equals("style:text-properties fo:font-style")) code="Style texte Italic"; // // // //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="Entête ou Pied de page : Bordure inférieure"; // if(code.equals("style:header-footer-properties fo:border-right")) code="Entête ou Pied de page : Bordure droite"; // if(code.equals("style:header-footer-properties fo:border-left")) code="Entête ou Pied de page : Bordure gauche"; // if(code.equals("style:header-footer-properties fo:border-top")) code="Entête ou Pied de page : Bordure haute"; // if(code.equals("style:header-footer-properties fo:margin-bottom")) code="Entête ou Pied de page : Marge en dessous"; // if(code.equals("style:header-footer-properties fo:margin-top")) code="Entête ou Pied de page : 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
Gouttière"; // if(code.equals("style:header-footer-properties fo:border")) code="Les 4 bordures du pied de page
droite gauche bas haut"; // if(code.equals("style:header-footer-properties fo:border")) code="Les 4 bordures de l'entête
droite gauche bas haut"; // 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="
Position (numéro) absolue de la page
par rapport à l'ensemble des pagesC'est l'ordre d'apparition de la page lorsque le mode \"Livre\" est utilisé.
Dans le mode d'affichage \"Livre\" 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 \"Titre\""; // if(code.equals("text:subject Contenu textuel")) code="Valeur de la méta donnée \"Sujet\""; // if(code.equals("draw:frame draw:name")) code="
" + colorPo + "\">Nom de l'objet indiqué dans
l'onglet \"Options\"
de la boite \"Propriétés\" de l'objet.Si l'objet ne se nomme pas EXACTEMENT comme indiqué dans la consigne.

L'algorithme d'analyse ne pourra pas trouver l'objet.Vous aurez que des valeurs NULL

Faites attention à la case (majuscule et minuscule). Ne tapez pas d'espace après le dernier caractère. Ne tapez pas de guillemet, etc.
"; // if(code.equals("text:description Contenu textuel")) code="
" + colorPo + "\">Champ CommentairesPour insérer le champ \"Commentaires\".
Sélectionner le menu Insertion/Champ/Autres champs...

Dans la boite de dialogue \"Champ\"
Onglet \"Info document\"
"; // if(code.equals("page style:page-usage")) code="
Mise en page de la pageDans les Propriétés du style de page
Onglet Page
Mise en page
"; // 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
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 Vrai affiche le texte"; // if(code.equals("text:conditional-text text:string-value-if-false")) code="Si la condition est Fausse 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="
Contenu textuelAttention :
Si le texte n'a pas été trouvé.
L'application recherche le paragraphe par son contenu.
Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient "null".
Vérifier le contenu textuel de votre paragraphe.
"; // 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="
Condition de la sectionAttention :
Ne tapez pas d'espace après le dernier guillemet du texte.
Ne tapez pas d'espace après le dernier caractère de votre condition.
"; // 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
de l'objet"; // if(code.equals("draw:frame svg:x")) code="Position (distance) horizontale
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)
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
nombre de paragraphe adapté"; // if(code.equals("style:graphic-properties style:wrap-contour")) code="Adaptation du texte \"Contour\""; // if(code.equals("text:sequence text:name")) code="
Nom de la variable de Séquence pour légenderMenu Insertion/Champ/Autres champs...
Onglet \"Variables\"
"; // if(code.equals("text:sequence Contenu textuel")) code="
La légende avec la variable de SéquencePour légender une image, il faut un clic droite sur l'image et sélectionner Insérer une légende...
Cependant, il faut retirer la protection du contenu.
"; // if(code.equals("style:graphic-properties style:protect")) code="
Protection de l'objetDans la boite de dialogue Propriétés
Onglet Option
Vou devez cocher les protections (case à cocher)
"; // 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
(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="
Nom du champ de donnéesNe tapez pas d'espace à la fin du nom de la colonne, Sinon Null.
"; // 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="
Prefix (devant la numérotation)Attention :
Il peut y avoir devant la numération un espace.

Par exemple : §[espace]"; // 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="
Numérotation suivi d'un(e)Dans la boite de dialogue \"Numérotation des chapitres\"
Onglet Position
Numerotation suivi par.
"; // if(code.equals("text:outline-level-style text:display-levels")) code="
Nombre de niveau affiché par la numérotationDans la boite de dialogue \"Numérotation des chapitre\"
Afficher les sous-niveaux.
"; // // //Table, index, bibliographie // if(code.equals("txt:p Contenu textuel")) code="
Texte recherchéAttention, il suffit qu'un seul caractère soit différent avec la consigne pour que l'algorithme ne trouve pas le texte.
S'il ne trouve pas votre texte alors la valeur est \"null\".
L'algorithme peut trouver votre texte, mais s'il y a trop de différence, il n'accorde pas les points.
"; // // //variable de séquence // if(code.equals("text:sequence-decl text:name")) code="
Variable de séquenceLa variable de séquence permet de légender et de créer des index.
Pour ajouter une variable de séquence, vous devez sélectionner le menu
Insertion/Champ/Autres champs...
Onglet \"Variables\".
"; // 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="
"+ HTML.imgInterogation() +" Contenu textuelAttention :
Si le texte n'a pas été trouvé.
Vous devez savoir que l'application recherche le paragraphe par son contenu.
Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient "null".
Vérifier le contenu textuel de votre paragraphe.
"; // style paragraphe police // if(code.equals("style:font-name")) code="Police

Nom de la police de caractères

"; // if(code.equals("fo:font-size")) code="Police

Taille des caractères

"; // if(code.equals("style:font-style-name")) code="Police

Style de la police

"; // if(code.equals("fo:font-family")) code="Police

Famille de police de caractères

"; // if(code.equals("fo:font-weight")) code="Police

Style \"Gras\"

"; // if(code.equals("fo:font-style")) code="Police

Style de la font

"; // if(code.equals("style:font-size-asian")) code="Police

Taille des caractères

"; return code; } public static void initaliseTraduction() { // String colorPo = "#FF0000"; // // //Nom des styles de paragraphe // traduction.put("Heading_20_1", "Titre 1"); // traduction.put("Heading_20_2", "Titre 2"); // traduction.put("Heading_20_3", "Titre 3"); // traduction.put("Standard_20__28_user_29_", "Standard"); // // //meta données // traduction.put("dc:subject texte","
"+ HTML.imgInterogation() +" Valeur de la méta donnée Sujet Menu Fichier/Propriétés
Onglet Description
"); // traduction.put("dc:title texte", "
" + HTML.imgInterogation() + " Valeur de la méta donnée TitreMenu Fichier/Propriétés
Onglet Description
"); // traduction.put("meta:user-defined Auteur2", "
" + HTML.imgInterogation() + " La méta donnée Auteur2Menu Fichier/Propriétés
Onglet Propriétés personnalisées
Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.

ATTENTION: Vous devez tapez comme nom de la méta donnée Auteur2
Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.
Sinon vous aurez une valeur null
"); // traduction.put("meta:user-defined Date du contrôle", "
" + HTML.imgInterogation() +" La méta donnée Date du contrôleMenu Fichier/Propriétés
Onglet Propriétés personnalisées
Clique sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.

ATTENTION: Vous devez tapez comme nom de la méta donnée Date du contrôle
Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.
Sinon vous aurez une valeur null
"); // traduction.put("meta:user-defined Département", "
"+ HTML.imgInterogation() +" La méta donnée DépartementMenu Fichier/Propriétés
Onglet Propriétés personnalisées
Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.

ATTENTION: Vous devez tapez comme nom de la méta donnée Département
Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.
Sinon vous aurez une valeur null
"); // traduction.put("meta:user-defined Groupe", "
"+ HTML.imgInterogation() +" La méta donnée GroupeMenu Fichier/Propriétés
Onglet Propriétés personnalisées
Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.

ATTENTION: Vous devez tapez comme nom de la méta donnée Groupe
Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.
Sinon vous aurez une valeur null
"); // traduction.put("text:user-defined text:name", "
" + HTML.imgInterogation() +" La méta donnée personnaliséeMenu Fichier/Propriétés
Onglet Propriétés personnalisées
Cliquez sur le bouton \"Ajouter une propriété\" pour ajouter une méta données.
"); // // //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 GRAS"); // // //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", "Entête ou Pied de page : Bordure inférieure"); // traduction.put("style:header-footer-properties fo:border-right", "Entête ou Pied de page : Bordure droite"); // traduction.put("style:header-footer-properties fo:border-left", "Entête ou Pied de page : Bordure gauche"); // traduction.put("style:header-footer-properties fo:border-top", "Entête ou Pied de page : Bordure haute"); // traduction.put("style:header-footer-properties fo:margin-bottom", "Entête ou Pied de page : Marge en dessous"); // traduction.put("style:header-footer-properties fo:margin-top", "Entête ou Pied de page : 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
Gouttière"); // traduction.put("style:header-footer-properties fo:border", "Les 4 bordures du pied de page
droite gauche bas haut"); // 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", "
"+ HTML.imgInterogation() +" Position (numéro) absolue de la page
par rapport à l'ensemble des pagesC'est l'ordre d'apparition de la page lorsque le mode \"Livre\" est utilisé.
Dans le mode d'affichage \"Livre\" toutes les pages s'affichent, y compris les pages vides."); // traduction.put("text:title Contenu textuel", "Valeur de la méta donnée \"Titre\""); // traduction.put("text:subject Contenu textuel", "Valeur de la méta donnée \"Sujet\""); // traduction.put("draw:frame draw:name", "
" + colorPo + "\">"+ HTML.imgInterogation() +" Nom de l'objet indiqué dans
l'onglet \"Options\"
de la boite \"Propriétés\" de l'objet.Si l'objet ne se nomme pas EXACTEMENT comme indiqué dans la consigne.

L'algorithme d'analyse ne pourra pas trouver l'objet.Vous aurez que des valeurs NULL

Faites attention à la case (majuscule et minuscule). Ne tapez pas d'espace après le dernier caractère. Ne tapez pas de guillemet, etc.
"); // traduction.put("text:description Contenu textuel", "
" + colorPo + "\">"+ HTML.imgInterogation() +" Champ CommentairesPour insérer le champ \"Commentaires\".
Sélectionner le menu Insertion/Champ/Autres champs...

Dans la boite de dialogue \"Champ\"
Onglet \"Info document\"
"); // traduction.put("page style:page-usage", "
"+ HTML.imgInterogation() +" Mise en page de la pageDans les Propriétés du style de page
Onglet Page
Mise en page
"); // 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 Vrai affiche le texte"); // traduction.put("text:conditional-text text:string-value-if-false", "Si la condition est Fausse affiche le texte"); // traduction.put("text:span Contenu textuel","
"+ HTML.imgInterogation() + "Contenu textuel avec formatage localAttention formatage local:
Si le texte n'a pas été trouvé.
Vous devez savoir que l'application recherche le paragraphe par son contenu.
Mais aussi par le type d'élément (ici un formatage local).
Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient "null".
Vérifier le contenu textuel, ou le type d'élément.
"); // traduction.put("text:p Contenu textuel", "
"+ HTML.imgInterogation() +" Contenu textuel dans un paragrapheAttention paragraphe de texte :
Si le texte n'a pas été trouvé.
Vous devez savoir que l'application recherche le paragraphe par son contenu.
Mais aussi par le type d'élément (ici un paragraphe de texte).
Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient "null".
Vérifier le contenu textuel, ou le type d'élément.
"); // 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", "
"+ HTML.imgInterogation() +" Condition de la sectionAttention section conditionnel:
Ne tapez pas d'espace après le dernier guillemet du texte.
Ne tapez pas d'espace après le dernier caractère de votre condition.
"); // 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
de l'objet"); // traduction.put("draw:frame svg:x", "Position (distance) horizontale
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)
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
nombre de paragraphe adapté"); // traduction.put("style:graphic-properties style:wrap-contour", "Adaptation du texte \"Contour\""); // traduction.put("text:sequence text:name", "
"+ HTML.imgInterogation() +" Nom de la variable de Séquence pour légenderMenu Insertion/Champ/Autres champs...
Onglet \"Variables\"
"); // traduction.put("text:sequence Contenu textuel", "
"+ HTML.imgInterogation() +" La légende avec la variable de SéquencePour légender une image, il faut un clic droite sur l'image et sélectionner Insérer une légende...
Cependant, il faut retirer la protection du contenu.
"); // traduction.put("style:graphic-properties style:protect", "
"+ HTML.imgInterogation() +" Protection de l'objetDans la boite de dialogue Propriétés
Onglet Option
Vou devez cocher les protections (case à cocher)
"); // traduction.put("style:graphic-properties style:wrap-contour-mode", "Mode contour du texte"); // traduction.put("draw:text-box fo:min-height", "Hauteur du frame
(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", "
"+ HTML.imgInterogation() +" Nom du champ de donnéesNe tapez pas d'espace à la fin du nom de la colonne, Sinon Null.
"); // 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", "
" + HTML.imgInterogation() + " Prefix (devant la numérotation)Attention :
Il peut y avoir devant la numération un espace.

Par exemple : §[espace]"); // 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", "
" + HTML.imgInterogation() + " Numérotation suivi d'un(e)Dans la boite de dialogue \"Numérotation des chapitres\"
Onglet Position
Numerotation suivi par.
"); // traduction.put("text:outline-level-style text:display-levels", "
" + HTML.imgInterogation() + " Nombre de niveau affiché par la numérotationDans la boite de dialogue \"Numérotation des chapitres\"
Afficher les sous-niveaux.
"); // // //Table, index, bibliographie // traduction.put("txt:p Contenu textuel", "
" + HTML.imgInterogation() + " Texte recherchéAttention, il suffit qu'un seul caractère soit différent avec la consigne pour que l'algorithme ne trouve pas le texte.
S'il ne trouve pas votre texte alors la valeur est \"null\".
L'algorithme peut trouver votre texte, mais s'il y a trop de différence, il n'accorde pas les points.
"); // // // // Paragraphe et retour à la ligne // //traduction.put("text:line-break name", "
" + HTML.imgInterogation() +" Retour à la ligneUn retour à la ligne est différent d'un paragraphe.
Pour réaliser un retour à la ligne vous devez taper
SHIFT + ENTRÉE
"); // //traduction.put("text:p name", "
" + HTML.imgInterogation() +" Paragraphe de texteLe paragraphe de texte est représenté par un pied de mouche Ƣ
"); // // // //variable de séquence // traduction.put("text:sequence-decl text:name", "
" + HTML.imgInterogation() +" Variable de séquenceLa variable de séquence permet de légender et de créer des index.
Pour ajouter une variable de séquence, vous devez sélectionner le menu
Insertion/Champ/Autres champs...
Onglet \"Variables\".
"); // 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="
"+ HTML.imgInterogation() +" Contenu textuelAttention :
Si le texte n'a pas été trouvé.
Vous devez savoir que l'application recherche le paragraphe par son contenu.
Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient "null".
Vérifier le contenu textuel de votre paragraphe.
"; // 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
Type “Table des matières“"; } /** * Chargement des traductions des éléments de l'exercice an utilsant le node "translation" du fichier d'analyse.
* Les noms des éléments sont placés dans un dictionnaire la key et la valeur est le code HTML. * * @param translation Le node "translation" qui se trouve dans le node "setting" 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 = "
"; String className = ""; if(translation.getAttributs().get("class")!=null) if(!translation.getAttributs().get("class").isEmpty()) className = "
"; 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="

Lien

"; if(translation.getNodes().get(i).getAttributs().get("color")!=null) if(!translation.getNodes().get(i).getAttributs().get("color").isEmpty()) 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 + "" + classText + contenu + link + "
" ; if(T) codeHTML = className + HTML.imgInterogation() + color + translate + "
" + classText + contenu + link + "
" ; }else { if(!T) codeHTML = className + translate + "" + classText + contenu + link + "
" ; if(T) codeHTML = className + HTML.imgInterogation() + translate + "" + classText + contenu + link + "
" ; } }else { if(!color.isEmpty()) { if(!T) codeHTML = className + color + translate + ""+ classText + contenu + "
" ; if(T) codeHTML = className + HTML.imgInterogation() + color + translate + ""+ classText + contenu + "" ; }else { if(!T) codeHTML = className + translate + classText + contenu + "" ; if(T) codeHTML = className + HTML.imgInterogation() + translate + classText + contenu + "" ; } } }else { if(!link.isEmpty()) { if(!color.isEmpty()) { if(!T) codeHTML = color + translate+ "" + link; if(T) codeHTML = color + HTML.imgInterogation() + translate+ "" + link; }else { if(!T) codeHTML = translate + link; if(T) codeHTML = HTML.imgInterogation() + translate + link; } }else { if(!color.isEmpty()) { if(!T) codeHTML = color + translate+ ""; if(T) codeHTML = color + HTML.imgInterogation() + translate+ ""; }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 ‽ † ¢ → ¦ ↕ ↑ † ×
* * @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((tailleAtailleB-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 * 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
* Bascule le texte en minuscule.
* @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.
* Cette méthode est utilisée pour supprimer les numéros de page dans les index (table de matières par exemple).
* @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 AjouteDansALesNodesB(ArrayList A,ArrayList B){ for(int i=0; i * Lorsque les deux chaînes de caractères partages 79% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne TRUE.
* Lorsque les deux chaînes de caractères partages moins de 79% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne FALSE.
* Les Chaînes de caractères doivent avoir au moins 6 caractères, après néttoyage du texte avec la méthode NetTexte().
* Sinon le seuil de tolérance est de 99.99%.
*
    *
  • Lorsque la longueur de la chaîne de caractères est inférieure à 50 caractères alors compare par groupe de 2 caractères.
  • *
  • 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.
  • *
  • Lorsque la longueur de la chaîne de caractères est supérieure à 200 caractères alors compare par groupe de 4 caractères.
  • *
*
* @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=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 table1 = new ArrayList(); 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; } }