3 Conception détaillée

publicité
ANALYSE et CONCEPTION
Laboratoire CLIPS - IMAG
840900634
version 1.0
WICALE
(Web Interface for Communication
with All Linguare Environnement)
Interface cliente générique
pour le pilotage
de serveurs linguistiques
Etat : En Travail
Version 1.0
REF :SPC-APP-1.0
Page 1 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
Destinataire(s) :
NOM
ACTION
Christian Boitet
Damien Genthial
Pour validation
Pour validation
VISA
Historiques du document de conception :
Version
Date
1.0
03/11/2003
Origine de la mise à Rédigé par
jour
CARPENA Virginie
Historiques de «WICALE»
Version
Date de livraison
Fonctionnalités
implémentées
1.0
Suivi des modifications de la version courante
Version
Page
Paragraphe
Description des Auteur
modifications
Page 2 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
Tables des matières
1
2
Analyse conceptuelle ......................................................................................................... 4
1.1
Les règles............................................................................................................................... 5
1.2
Définition des objets ............................................................................................................. 7
Les solutions envisagés ................................................................................................... 10
2.1
La solution 1 : Interface abstraite .................................................................................... 10
2.2
La solution 2 : Langagier................................................................................................... 11
2.3
Synthèse de la solution retenue aux niveau fonctionnel et organisationnel / conclusion
et perpectives ................................................................................................................................... 11
3
Conception détaillée ........................................................................................................ 11
3.1
Architecture technique du nouveau système ................................................................... 11
3.2
Les écrans (enchainement des menus et des écrans) ....................................................... 12
3.3
Les classes ........................................................................................................................... 25
3.4
Description des données..................................................................................................... 61
3.5
Les fichiers XML................................................................................................................ 61
3.6
Les méthodes ........................................................................... Error! Bookmark not defined.
Page 3 sur 65
Laboratoire CLIPS - IMAG
1
1.1
840900634
version 1.0
Analyse conceptuelle
Résumé
L’application WICALE permet de (voir figure 1) :
- communiquer avec le serveur afin de récupérer le résultat de l‘exécution d’une
commande sur le serveur,
- synchroniser les données linguistiques (réception et émission des linguiciels :
grammaires, dictionnaires, corpus…),
- gérer sur le client une image des linguiciels développés et mis en œuvre sur le serveur.
Préparer et exécuter
une ou des commandes
Serveur :ARIANE-G5,
PILAF, ou autre
Synchroniser les données
(émission et réception)
linguistes
Consulter et mettre à jour
les linguiciels (en local)
Modification des paramètres de
WICALE (langue, répertoires,…)
Fig.1 : Cas d’utilisation d’un linguiste
Page 4 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
Un utilisateur habilité (administrateur, informaticien) peut paramétrer l’application
WICALE. C’est à dire, définir les serveurs disponibles, et pour chaque serveur définir les
commandes (définition des paramètres, de la syntaxe et du résultat de la commande),
l’architecture des données.
Paramétrer les commandes disponibles
(paramètres, syntaxe et résultat)
Administrateur
, informaticien
Paramétrer l’architecture des linguiciels
(architecture, émission et réception)
Programmer le module pour un nouveau
serveur
Fig.2 : Cas d’utilisation de l’administrateur, informaticien
1.2
Les règles
Les fonctionnalités et les contraintes décrites dans le document de spécification, nous
permettent de décrire les règles de gestion de l’application WICALE.
WICALE peut implémenter un ou plusieurs EDLs.
Pour chaque EDL, on dispose d’une liste de commandes. L’exécution d’une commande sur le
serveur nécessite de définir la saisie des paramètres, la syntaxe de la commande
(l’enchaînement des paramètres) et le traitement du résultat.
Les types de paramètres disponibles sont des listes, cases à cocher, zones de texte, zones de
texte multi-lignes et zone de saisie d’un nom de fichier (FILE DIALOG).
L’application doit contrôler la saisie des données obligatoires.
La syntaxe d’une commande est une suite de mots clés, de valeurs, et de séparateurs.
Le résultat d’une commande retourné par le serveur est sous forme d’un texte, l’utilisateur
peut traiter ce résultat. Il peut remplacer une chaîne par une autre (replace), découper le texte
(split), et rechercher un texte particulier (find).
Page 5 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
Les données des EDL sont disponibles sur le poste du client, elle sont rangés suivant
l’architecture des données de l’EDL. Par exemple pour ARIANE pour un couple de langue et
une phase on dispose de composants linguistiques (des grammaires, dictionnaires et des
chaînes d’exécution…).
1
EDL
1..n
COMMANDE
1
1
COMPOSANT
1
1..n
0..n
0..n
1
PARAMETRE
1..n
SYNTAXE
hérite
1
0..n
0..n
ETAPE
TEXTE
Case à
cocher
CHOIX
FICHIER
RESULTAT
1
ETAPE
LISTE
E
Fig 3 : diagramme de classe
Page 6 sur 65
Laboratoire CLIPS - IMAG
1.3
version 1.0
840900634
Définition des objets
EDL
serveur
port
accès
url
L’objet EDL permet de définir les propriétés de l’EDL :
le nom de EDL (identifiant), le type d’accès au serveur
- accès par socket (accès, port)
- accès http(url).
COMMANDE
num_cde
nom_cde
intitule_cde
L’objet COMMANDE permet de définir les commandes
disponibles sur le serveur: le numéro de commande
(identifiant), le nom de commande correspond au nom du
fichier Analyse.py (PILAF), ou LIENLANG (pour
Ariane-G5), l’intitulé de la commande (texte connu des
utilisateurs Analyse morphologique ou Affichage du
couple de langues).
PARAMETRE
nom
libelle
posLibX
posLibY
dimLibX
dimLibY
type
valeur_def
obligatoire
PosX
Pos Y
Dim X
Dim Y
L’objet PARAMETRE permet de définir les propriétés
d’un paramètre : le nom du paramètre (identifiant), le
libellé, le type de paramètre (List, Texte, case à cocher,
fichier), les contrôles à effectuer sur les paramètres saisies
par l’utilisateur (saisie obligatoire), le positionnement des
paramètres dans l’écran de saisie (libellé + champ) et la
valeur par défaut.
TEXTE
Pas de nouveau attribut
Case à cocher
nom_valeur
liste_valeur
Chaine_recup
L’objet CASE A COCHER permet de définir les
propriétés d’un paramètre checkbox : liste de valeurs
Page 7 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
LISTE
nom_valeur
liste_valeur
Chaine_recup
Multiligne
Separateur
L’objet LISTE permet de définir les propriétés d’un
paramètre liste : le nom de la liste à afficher (par exemple
LISTE_MACHINE), la liste des valeurs ou le nom de la
commande : chaque valeur est séparé par un point-virgule
Par exemple (ED - Edition ; REC - Réception).
La chaîne à récupérer lors de la saisie pour compléter la
commande (Par exemple, l’expression régulière [A-Z]* -).
La commande a besoin du code ED et non du libellé.
CHOIX
L’objet CHOIX permet de définir les propriétés d’un
paramètre Choice : le libellé du choix, la position du choix
et la valeur.
nom_choix
posX posY
dimX dimY
valeur_choix
DIALOGFILE
Chaine_recup
SYNTAXE°
mot cle,
param
expression
séparateur
L’objet DIALOGFILE permet de définir les propriétés
d’un paramètre de type fichier : la chaîne récupérée est
soit le nom du fichier, soit le contenu du fichier Texte.
L’objet SYNTAXE permet de définir les propriétés de la
syntaxe d’une commande : le mot clé, le valeur du
paramètre à partir de l’expression, le séparateur.
Page 8 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
RESULTAT
Resultat_ok
L’objet RESULTAT permet de définir les propriétés d’un
résultat : le texte pour vérifier si le résultat est correcte.
ETAPE
methode
expression
expr_concat
expr_remplace
ment
L’objet ETAPE permet de définir les étapes de traitement
d’un résultat : la méthode à appliquer (split, find, replace)
et l’expression régulière (expression, expression de
concaténation, expression de remplacement).
COMPOSANT
nom
type
contenu
Le composant linguistique est identifié par son nom, type
(dictionnaires, formats…), contenu
Page 9 sur 65
Laboratoire CLIPS - IMAG
2
2.1
version 1.0
840900634
Les solutions envisagés
La solution 1 : Interface abstraite
Pour respecter les contraintes définies dans le cahier des charges, une des solutions est de
programmer les fonctionnalités communes aux serveurs (fonctionnalités décrites
précédemment : Exécution commande, synchronisation des résultats et navigation en locale).
Et de définir les spécificités des EDLs (liste de commandes, syntaxe…) dans des fichiers de
paramétrage XML.
Un utilisateur avertit peut compléter les spécificités sans modifier le programme.
Les écrans sont générés dynamiquement lors de l’exécution du programme.
Pour communiquer avec le serveur, le programme utilise une API (classe abstraite). Les
attributs et les méthodes sont définis pour chaque EDL.
XML
Application.jar
Modif
Paramètre
Ecran principal
Exécution
commande
Création script
Et exécution cde
Synchronisation
données
Modification
linguiciels
implémente
Interface Serveur
+getResultat
ServerAriane
Serveur
ServerPilaf
ServerUnl
Serveur
Figure 5 : Application dynamique
Serveur
Page 10 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
2.2
La solution 2 : Langagier
2.3
Synthèse de la solution retenue aux niveau fonctionnel et organisationnel /
conclusion et perpectives
La solution 1 a été retenue, elle répond aux spécifications techniques, elle permet de :
- ne pas recompiler l’application lors de l’ajout d’une commande ou paramètre,
- ne pas recompiler l’application lors de l’ajout d’un EDL
3
Conception détaillée
3.1 Architecture technique du nouveau système
L’application WICALE est structurée en package :
- ihm:définit les écrans de l’application,
- serveur : définit l’interface « ServeurLinguistique», les classes de chaque serveur
« ServerAriane », « ServerPilaf », « Serveur UNL ».
- objet : définit les classes des objets « Serveur », « Commande », « Parametre »,
« Syntaxe »…
- util : définit les fonctions communes : classe « Erreur », « XML », « ExprReguliere »,
« Fichier », « Constante », « Impression », « Jframe ».
IHM
SERVEUR
OBJET
UTIL
globale
Figure 6 : diagramme des composants
Page 11 sur 65
Laboratoire CLIPS - IMAG
3.2
version 1.0
840900634
Les écrans (enchaînement des menus et des écrans)
Les écrans sont définis dans le package IHM, ils sont structurés de la manière suivantes :
FrmMain
FrmSaisieParam
FrmAPropos
FrmScript
FrmResultat
FrmParametre
FrmSynchro
FrmNavigation
FrmComposant
Fig 7 : Enchaînement des écrans de WICALE
L’écran principal (FrmMain) s’affiche lorsque l’utilisateur lance l’application
linguiste
WICALE
Serveur
Lance l’application(main)
Charge les paramètres (chargeParametre – general.xml),
Crée les menus, (creeMenus),
Crée les composants (CreeComposants),
Affiche les libellés suivant la langue (afficheLibelle),
Affiche les serveurs et commandes (actionAfficheTree)
Demande l’écran A propos (actionPerformed)
Affiche l’écran A propos
Demande l’écran Resultat (actionPerformed)
Affiche l’écran FrmResultat
Page 12 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
Exécute commande(actionAfficheParametreCde)
Affiche l’écran FrmSaisieParam
Exécute script commande (actionPerformed)
Affiche l’écran FrmScript
Synchronise données (actionPerformed)
Affiche l’écran FrmSynchro
Consultation données(actionPerformed)
Affiche l’écran FrmNavigation
Demande l’écran Parametre(actionPerformed)
Affiche l’écran FrmParametre, au
retour
à
l’écran
principal
chargeParametre, afficheLibelle)
Interface prévue
L’écran principal présente les fonctionnalités de l’application WICALE, les commandes de
chaque serveur disponibles. Les fonctionnalités sont accessibles soit à partir des boutons de la
barre d’outils (OuvrirResultat, Quitter, Exécute la commande, Commande en attente,
Navigation, Synchronisation, Paramètres, A propos), soit à partir du menu Commande.
L’exécution de la commande est disponible en double cliquant sur la commande dans l’arbre.
Page 13 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
Les contrôles prévus
Lors de l’exécution d’une commande, vérifie qu’une commande a été sélectionné dans
l’arbre.
L’application implémente les fonctionnalités suggérées par le menu principal.
3.2.1 Ecran exécution Commande (FrmSaisieParam)
L’écran (FrmSaisieParam) est généré dynamiquement par rapport à la commande sélectionnée
(lecture des paramètres dans le fichier XML <PARAMETRE_SAISIE>.
A FAIRE : A partir de l’API Jframe
linguiste
WICALE
Serveur
Page 14 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
Demande affichage des paramètres de cde (main)
Crée les composants (commun + Commande.xml)
(CreeComposants),
Initialise l’écran (setup),
Initialise listes et valeurs par défaut (initialiseParametre)
Saisie des paramètres
Click sur Exécution Commande (option afficher
résultat dans le fichier coché(actionLancer)
Enregistre le fichier dans le répertoire saisie
Exécute
commande(getR
esultat)
Retourne
commande(traite
Resultat)
Click sur effacer paramètre
Vide tous les champs saisie
Saisie des paramètres
Click sur Exécution Commande (option afficher
résultat dans le fichier non coché (actionLancer)
Ouvre FrmResultat avec le résultat texte
Exécute
commande(getR
esultat)
Retourne
commande(traite
Resultat)
Demande de fermer l’ecran FrmResultat
Retour à l’écran frmSaisieParam
Click sur effacer paramètre
Vide tous les champs saisie
Saisie des paramètres
Click sur Script Commande (actionScript)
Enregistre les paramètres de la commande dans
Script.xml
Demande de fermer l’ecran FrmSaisieParam
Retour à l’écran principal (FrmMain)
Page 15 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
Interface prévue
L’écran principal présente les fonctionnalités de l’application WICALE, les commandes de
chaque serveur disponibles. Les fonctionnalités sont accessibles soit à partir des boutons de la
barre d’outils (OuvrirResultat, Quitter, Exécute la commande, Commande en attente,
Navigation, Synchronisation, Paramètres, A propos), soit à partir du menu Commande.
L’exécution de la commande est disponible en double cliquant sur la commande dans l’arbre.
Les contrôles prévus
Vérification lors de l’exécution de la commande ou de la création du script que les paramètres
obligatoires sont saisis.
3.2.2 Ecran Commandes en attente (FrmScript)
Page 16 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
L’écran (FrmScript) affiche les commandes préparées par l’utilisateur (elles sont stockées
dans le répertoire DATA/SERVEUR/Script.xml.
linguiste
WICALE
Serveur
Demande affichage du script (FrmScript)
Crée les composants (commun + Commande.xml)
(CreeComposants),
Initialise l’écran (setup),
Initialise listes suivant l’architecture (initialiseListe)
Modification possible des paramètres
Click sur OK(option afficher résultat dans le fichier
coché(actionLancer)
Enregistre le fichier dans le répertoire saisie
Exécute
les
commandes(getR
esultatScript)
Retourne
commande(traite
Resultat)
Demande à l’utilisateur s’il souhaite supprimer le script
L’utilisateur répond Oui
Script supprimé du fichier Script.xml
Sélection d’un script et click sur OK (option afficher
résultat dans le fichier non coché (actionLancer)
Demande à l’utilisateur s’il souhaite supprimer le script
Exécute
commande(getR
esultat)
Retourne
commande(traite
Resultat)
L’utilisateur répond Non
Ouvre FrmResultat avec le résultat texte
Demande de fermer l’ecran FrmResultat
Retour à l’écran frmScript
Page 17 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
Demande de fermer l’ecran FrmScript
Retour à l’écran principal (FrmMain)
Interface prévue
L’écran Envoi des commandes préparées Affiche la liste des scripts. L’utilisateur peut
modifier le script mais attention le script de commande ne sera pas contrôlé (pas de contrôle
de la saisie des paramètres ni de la syntaxe de la commande).
Les contrôles prévus
Aucun
3.2.3 Ecran de Navigation (FrmNavigation)
Page 18 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
L’écran (FrmNavigation) permet de sélectionner un composant afin de le visualiser à l’écran.
linguiste
WICALE
Serveur
Demande affichage de l’écran Navigation(FrmNavigation)
Crée les composants (commun + Commande.xml)
(CreeComposants),
Initialise l’écran (setup),
Initialise
listes
suivant
l’architecture
(initialiseListeComposant)
Sélection d’un composant et demande de l’ouvrir
Recherche du composant dans le répertoire DATA et
affichage du contenu dans l’écran FrmComposant
Modification du contenu et enregistrement
Mise à jour des fichiers XML contenant les données
Demande de fermer l’écran FrmComposant
Ferme FrmComposant et retour FrmNavigation
Demande de fermer FrmNAvigation
Ferme l’écran et retour à l’écran principal
Interface prévue
L’écran Consultation des composants permet de sélectionner le type de composant (dans
l’exemple ci –dessous un texte) et le composant. Pour visualiser le composant, il suffit de
double cliquer sur le composant ou de cliquer sur le bouton Ouvrir dans la barre d’outils
Page 19 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
puis Affichage du contenu dans l’écran FrmComposant (Dans une prochaine version de
WICALE il faudra que l’utilisateur puise ouvrir le composant dans un éditeur de texte).
Les contrôles prévus
Page 20 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
Aucun
3.2.4 Ecran Commandes en attente (FrmScript)
L’écran (FrmScript) affiche les commandes préparées par l’utilisateur (elles sont stockées
dans le répertoire DATA/SERVEUR/Script.xml.
linguiste
Demande
affichage
synchronisation(FrmSynchro)
WICALE
de
l’écran
Serveur
de
Crée les composants (commun + Commande.xml)
(CreeComposants),
Initialise l’écran (setup),
Initialise listes suivant l’architecture (initialiseListe)
Demande de visualisation d’un composant
Click sur OK(option afficher résultat dans le fichier
coché(actionLancer)
Exécute
les
commandes(getS
ynchronisation)
Affiche le résultat dans l’onglet composant
Retourne
contenu
composant (traiteResultat)
Demande d’emmettre un composant
La barre d’état affiche un message lorsque le
traitement est terminé
Demande de réceptionner un résultat
Mise à jour du fichier DATA/ …/ …xml.
La barre d’état affiche un message lorsque le
traitement est terminé
Exécute
la
commande(getSy
nchronisation)
Exécute
la
commande(getSy
nchronisation)
Demande de fermer l’ecran FrmSynchronisation
Retour à l’écran principal (FrmMain)
Page 21 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
Interface prévue
L’écran Synchronisation des composants permet de synchroniser ou de visualiser les
composants du serveur.
L’utilisateur peut visualiser le composant du serveur en sélectionnant le composant puis en
cliquant sur le bouton Visualiser. Le contenu du composant s’affiche dans l’onglet
Composant.
L’utilisateur peut récupérer un composant en local, il sélectionne le composant, puis clique
sur le bouton Réception.
L’utilisateur peut mettre à jour un composant sur le serveur, il sélectionne le composant, puis
clique sur le bouton Emission
Les contrôles prévus
Aucun
3.2.5 Ecran de paramétrage (FrmParametre)
Page 22 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
L’écran (FrmParametre) permet de mettre à jour les paramètres de l’application WICALE.
linguiste
WICALE
Serveur
Demande l’écran de paramétrage(FrmParametre)
Crée les composants (commun + Commande.xml)
(CreeComposants),
Initialise l’écran (setup),
Initialise listes suivant l’architecture (initialiseListe)
Mise à jour des paramètres et demande d’enregistrer
Mise à jour du fichier general.xml
Demande de fermer l’écran FrmParametre
Ferme FrmParametre et retour FrmMain principal
Interface prévue
L’écran Paramètres de WICALE permet de saisir les paramètres généraux de l’application
c’est à dire le serveur par défaut (sélectionné lors du lancement de la commande dans l’écran
principal), la langue utilisé (affichage des libellés dans les écrans),
Les répertoires des paramètres (fichier XML) et des données (fichier des composants XML).
Cet écran permet de mettre à jour le fichier général.xml directement dans le répertoire des
sources.
Page 23 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
Les contrôles prévus
Aucun
3.2.6 Ecran de paramétrage (FrmParametre)
L’écran (FrmParametre) permet de mettre à jour les paramètres de l’application WICALE.
linguiste
WICALE
Serveur
Demande l’écran d’a propos (FrmAPropos)
Crée les composants (commun + Commande.xml)
(CreeComposants),
Initialise l’écran (setup),
Page 24 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
Demande de fermer l’écran FrmAPropos
Ferme FrmAPropos et retour FrmMain principal
Interface prévue
L’écran A propos permet d’afficher le nom des personnes ayant crée l’application, de
l’administrateur, le numéro de version.
Les contrôles prévus
Aucun
3.3 La description des classes
Ce paragraphe décrit les classes avec leurs attributs et méthodes que nous avons développées
et la hiérarchie qui les rassemble.
Nous avons essayé de respecter un certain style quant à l’écriture des classes, variables et des
constantes qui sont décrites dans la charte de développement WICALE.
3.3.1 Répertoire IHM
Ce répertoire contient les classes qui permettent d’instancier les écrans.








FrmMain .java
FrmResultat.java
FrmSynchro
FrmAPropos
FrmNavigation
FrmSaisieParam
FrmComposant
FrmParametre
//écran principal
// écran de résultat
// écran de synchronisation
// écran A Propos
// écran de Navigation
// écran de Saisie de paramètres
// écran de visualisation d’un composant
//écran de saisie des paramètres généraux
Page 25 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
 FrmScript
attente
//écran de lancement des commandes en
3.3.1.1 Hiérarchie des classes
Javax.swing.*
FrmMain
FrmSaisieParam
FrmAPropos
FrmScript
FrmParametre
FrmResultat
FrmSynchro
FrmNavigation
FrmComposant
LÉGENDE
Instancie un objet de la
classe
Dérive de
Classe développée
Classe de la bibliothèque de Sun
Page 26 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
3.3.1.1.1 Classe FrmMain
C’est une classe principale qui est une JFRame appelant l’instanciation de la fenêtre
principale.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.*;
import java.awt.Component;
import java.io.*;
import org.w3c.dom.*;
import java.util.*;
import java.lang.*;
import javax.swing.JtoolBar
;
et des packages spécifiques du laboratoire fr .Imag.clips
import fr.imag.clips.wicale.util.TraiteXml;
import fr.imag.clips.wicale.objet.Parametre;
import fr.imag.clips.wicale.objet.Commande;
import fr.imag.clips.wicale.objet.ParametreCde;
import fr.imag.clips.wicale.objet.Serveur;
3.3.1.1.2 Attributs
private JPanel pnl = new JPanel();
private JToolBar toolbar = new JToolBar();
//private JPanel pnlParametre = new JPanel();
private JTree treeCommande = new JTree();
private
DefaultMutableTreeNode
nodRoot
=
DefaultMutableTreeNode("*");
private DefaultTreeModel treeModel ;
private JScrollPane scrollTree ;
private JLabel lblBarreEtat = new JLabel ("");
//JMenu
// JMenu fichier, 1 seule commande "Quitter"
private JMenu mnuFichier = new JMenu("", false);
private JMenuItem mnuFichierOuvrir = new JMenuItem("");
private JMenuItem mnuFichierQuitter = new JMenuItem("");
private JButton btnOuvrir = new JButton();
private JButton btnQuitter = new JButton();
// JMenu Commande
private JMenu mnuCommande = new JMenu("", false);
private JMenuItem mnuCommandeExecution = new JMenuItem("");
private JMenuItem mnuCommandeEnvoiScript = new JMenuItem("");
new
Page 27 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
private JMenuItem mnuCommandeNavigation = new JMenuItem("");
private JMenuItem mnuCommandeSynchronisation = new JMenuItem("");
private JMenuItem mnuCommandeParametre = new JMenuItem("");
//TOOLBAR
private JButton btnCommandeExecution = new JButton ("");
private JButton btnCommandeEnvoiScript = new JButton ("");
private JButton btnCommandeNavigation = new JButton ("");
private JButton btnCommandeSynchronisation = new JButton ("");
private JButton btnCommandeParametre = new JButton ("");
private JMenu mnuAide = new JMenu("", false);
private JMenuItem mnuAideApropos = new JMenuItem("");
private JButton btnAPropos = new JButton();
private JMenuBar mb = new JMenuBar();
3.3.1.1.3 Constructeur
public FrmMain()
3.3.1.1.4 Méthodes
 public void chargeParametre () :
 récupérer les paramètres généraux de l’application dans le fichier
general.xml:
- Parametre : répertoire Paramètre, répertoire DATA, langue par défaut,
serveur par défault
 public void actionPerformed (ActionEvent evt) :
 gestion des événements sur click des boutons (action sur les boutons
précités, notamment sur le bouton A Propos qui provoquera l’instanciation
d’une fenêtre A propos. Le bouton Ouvrir Résultat qui provoquera
l’instanciation d’une fenêtre FrmResultat. Le bouton Commande exécution
qui provoquera l’instanciation d’une fenêtre FrmSaisieParam. Le bouton
Navigation qui provoquera l’instanciation d’une fenêtre FrmNavigation. Le
bouton Synchronisation qui provoquera l’instanciation d’une fenêtre
FrmSynchro. Le bouton Envoi script qui provoquera l’instanciation d’une
fenêtre FrmScript. Le bouton Parametre qui provoquera l’instanciation
d’une fenêtre FrmParametre, à la fermeture de la fenêtre charge les
nouveaux paramètres. Le bouton Quitter qui provoquera la fermeture de
l’application.
Si doubleclique sur une commande dans l’arbre provoque l’instanciation de
la fenêtre FrmSaisieParam.
 public void creeMenus () :
crée les menus de l’écran principale
 public void creeComposant() :
crée les composants de l’écran principale
 public void setup() :
Page 28 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
initialise la taille et la position de l’écran
 public void actionAfficheTree() :
initialise l’arbre des serveurs.
 public void actionAfficheCommande () :
initialise l’arbre des groupes et des commandes.
 public void actionAfficheParametreCde () :
Vérifie si l’utilisateur a sélectionné une commande et ouvre l’écran
FrmSaisieParam.
 public void afficheLibelle () :
affiche le libellé (labels, menu) dans la langue choisi par l’utilisateur.
 Private int getIndexCde () :
Retourne l’identifiant de la commande sélectionné.
3.3.1.1.5 Classe FrmSaisieParam
C’est une classe qui instancie l’écran FrmSaisieParam crée dynamiquement.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
import java.lang.*;
import java.util.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JToolBar;
import java.awt.Button;
import java.awt.List;
import java.awt.CheckboxGroup;*/
import javax.swing.JToolBar;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
et des packages spécifiques du laboratoire fr .Imag.clips
import fr.imag.clips.wicale.objet.Parametre;
import fr.imag.clips.wicale.objet.Commande;
import fr.imag.clips.wicale.objet.SyntaxeCde;
import fr.imag.clips.wicale.objet.ParametreCde;
import fr.imag.clips.wicale.serveur.ServerLinguistique;
import fr.imag.clips.wicale.serveur.InterfaceServerLinguistique;
import fr.imag.clips.wicale.util.TraiteXml;
import fr.imag.clips.wicale.util.TraiteExprReg;
Page 29 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
3.3.1.1.6 Attributs
private JPanel pane = new JPanel();
private JPanel pnlParametre = new JPanel();
private JToolBar toolbar = new JToolBar();
private JButton btnLancer = new JButton("");
private JButton btnScript = new JButton("");
private JButton btnEffacer = new JButton("");
private JButton btnFermer = new JButton("");
private JLabel lblFichierOut = new JLabel("");
private JTextField txtFichierOut = new JTextField("",2);
private JButton btnParcourirOut = new JButton("");
private JLabel tabLabel[] = new JLabel [0];
private JButton tabBtn[] = new JButton [0];
private JTextField tabTxt [] = new JTextField [0];
private ButtonGroup tabBtnGroup [] = new ButtonGroup [0];
private JRadioButton tabRdoBtn[] = new JRadioButton [100];
private JTextArea tabTextArea [] = new JTextArea [0];
private JList tabList [] = new JList [0];
private JScrollPane tabScroll[] = new JScrollPane [0];
private DefaultListModel defLst;
private JComboBox tabComboBox [] = new JComboBox [0];
private int i=0, j=0;
//CURSOR
private Cursor curWait = new Cursor(Cursor.WAIT_CURSOR);
private Cursor curDefault = new Cursor(Cursor.DEFAULT_CURSOR);
//Variables globales
private Thread thRun;
private JFrame fPrincipale;
private Locale currentLocale = new Locale("fr", "FR");
private ResourceBundle messages ;
private Parametre paramAppli;
private Commande cde = new Commande("");
private ParametreCde[] tabParam ;
private SyntaxeCde[] tabSyntaxeCde = new SyntaxeCde[0];
private ParametreCde[] tabGeneral = new ParametreCde[0];
private ParametreCde[] tabCde = new ParametreCde[0];
private SyntaxeCde[] tabConstGeneral = new SyntaxeCde[0];
private SyntaxeCde[] tabConstCde = new SyntaxeCde[0];
private Document docListe;
3.3.1.1.7 Constructeur
Page 30 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
FrmSaisieParam(JFrame fParent, Parametre param, String sTitre, Commande
cdeSelect, boolean bModal)
3.3.1.1.8 Méthodes
 public void actionPerformed (ActionEvent evt) :
gestion des événements sur click des boutons (action sur les boutons
précités, notamment sur le bouton Parcourir In qui ouvre un écran
permettant de saisir le nom d’un fichier. Le bouton Parcourir Out qui ouvre
un écran permettant de saisir le répertoire le nom d’un fichier résultat. Le
bouton Effacer qui supprime les valeurs des champs. Le bouton Lancer qui
lance l’exécution de la commande. Le bouton Script qui permet de mettre à
jour le fichier Script.xml en ajoutant la nouvelle commande.
 public void valueChanged (ItemEvent iEvt):
Remplit les listes dépendantes de l’élément sélectionné
 public void remplitListe() :
Charge les éléments dans une combo ou une liste déroulante
 public void creeComposant() :
Charge les composants de l’écran dynamiquement à partir du fichier
Commande.XML rubrique <PARAMETRE>
 public void setup() :
initialise la taille et la position de l’écran
 public void actionQuitter () :
Quitte l’écran FrmSaisieParam et vérifie qu’aucun traitement n’est en cours sinon
affiche un message.
 public void actionLancer() :
Lance l’exécution de la commande et ouvre l’écran FrmResultat si l’utilisateur n’a
pas l’option résultat dans un fichier.
 public void actionScript() :
Enregistre les données de la commande dans le fichier Script.xml pour un envoi
ultérieure. Si le fichier n’existe pas il faut le créer
 public void actionEffacer () :
Vide les champs et déselectionne les valeurs des listes.
 Private void actionParcourir () :
Ouvre l’écran qui permet de
showOpenDialog()
sélectionner
un
fichier
JFileChooser.
 Private String [] getParam () :
Retourne un tableau avec la liste des paramètres.
Page 31 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
 Private boolean SaisieObligatoire() :
Retourne true si les données obligatoires ont été saisis sinon retourne un message.
 Private void initialiseParametre () :
Affiche les valeurs par défaut et charge les listes (appel initialiseListeId).
 Private void initialiseListeId () :
Initialise les listes et combos.
 Private void lireFichier() : ASUPPRIMER !!!!!!!!!!!!!!!!!!!!!!!!!! Package util
 Private void actionLancerThread () :
Lance la commande en arrière plan, le résultat est enregistré dans un fichier
(option résultat dans un fichier).
3.3.1.1.9 Classe FrmNavigation
C’est une classe qui charge l’écran de navigation.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
// Pour que javadoc puisse générer les liens sur la doc de ces classes
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JList;
import javax.swing.JToolBar;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.TraiteXml;
import fr.imag.clips.wicale.util.TraiteExprReg;
3.3.1.1.10 Attributs
private JPanel pnl = new JPanel();
private JPanel pnlParametre = new JPanel();
private JPanel pnlComposant = new JPanel();
Page 32 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
private JToolBar toolbar = new JToolBar();
private JButton btnOuvrir = new JButton("");
private JButton btnAnnuler = new JButton("");
private JLabel lblBarreEtat = new JLabel ("");
private JLabel lblComposant = new JLabel();
private JComboBox cboComposant = new JComboBox ();
private JLabel tabLabel[] = new JLabel[0];
private JList tabList[] = new JList[0];
private JScrollPane tabScroll[] = new JScrollPane[0];
private MouseListener mouseListener;
//CURSOR
private Cursor curWait = new Cursor(Cursor.WAIT_CURSOR);
private Cursor curDefault = new Cursor(Cursor.DEFAULT_CURSOR);
//Variables globales
private JFrame fPrincipale;
private Locale currentLocale ;
private ResourceBundle messages ;
private Parametre paramAppli;
private TraiteExprReg t = new TraiteExprReg();
private TraiteXml xml = new TraiteXml();
private
String[]
tabMotCle
=
{"id","data",
"libelle_data","niveau","mise_a_jour","param_id","suiv", "nom_fichier", "expression"};
private int iID=0, iDATA = 1, iLIBELLE_DATA = 2, iNIVEAU = 3, iMAJ = 4,
iPARAM_ID = 5, iSUIV=6, iNOM_FICHIER=7, iEXPRESSION=8;
private String[] [] tabStructure = new String[0] [0];
private int iIdComposant = 0;//Sélectionner un composant
private String[] tabParametre = new String [0];
3.3.1.1.11 Constructeur
public FrmNavigation(JFrame fParent, Parametre param, boolean bModal)
3.3.1.1.12 Méthodes
 public void actionPerformed(ActionEvent evt):
gestion des événements sur click des boutons (action sur les boutons
précités, notamment sur le bouton Edition qui ouvre un écran permettant de
visualiser le composant sélectionné. La sélection d’un composant dans une
liste permet d’initialiser les paramètres à saisir pour sélectionner un
composant. Par exemple lorsque l’on saisit composant Texte Les paramètres
à saisir par l’utilisateur sont Machine ; disque.
 public void valueChanged(ActionEvent evt):
Page 33 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
La sélection d’un élément dans une liste permet d’initialiser les listes
dépendantes. Par exemple lorsque l’on saisit un Corpus et on met à jour la
liste des textes.
 private void selectionElement(ActionEvent evt):
La sélection d’un composant dans la liste permet d’initialiser les listes des
paramètres à saisir.
 private void remplitListe(Object iEvt):
La sélection d’une valeur permet de mettre à jour d’autres liste. Par exemple
lorsque l’on sélectionne un corpus la liste des textes est mise à jour.
 private void creeComposant():
Crée les composants.
 private void setup():
Initialise la taille et la position de l’écran.
 private void initialiseListe():
Initialise les listes à partir du fichier XML Liste.xml.
 private void initialiseComposant(int iPosParametre, int iIdStructure):
Initialise les listes à partir du fichier XML Liste.xml.
 private void initialiseListeComposant ():
Initialise la liste des composants à partir du fichier XML Liste.xml.
 private int getIdComposant ():
Retourne l’identifiant du composant sélectionné.
 private void actionEdition():
Recherche le contenu du composant suivant l’architecture des données et ouvre
l’écran FrmComposant.
3.3.1.1.13 Classe FrmScript
C’est une classe qui charge l’écran de navigation.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;
import org.w3c.dom.*;
import org.w3c.dom.traversal.*;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
import javax.swing.*;
Page 34 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
import javax.swing.event.*;
// Pour que javadoc puisse générer les liens sur la doc de ces classes
import javax.swing.JButton;
import javax.swing.JComboBox;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.serveur.ServerLinguistique;
import fr.imag.clips.wicale.objet.Parametre;
3.3.1.1.14 Attributs
private JPanel pnl = new JPanel();
private JPanel pnlParametre = new JPanel();
private JToolBar toolbar = new JToolBar();
private JButton btnOK = new JButton("");
private JButton btnAnnuler = new JButton("");
private JLabel lblEntete = new JLabel ("");
private JComboBox cboEntete = new JComboBox ();
private JLabel lblScript = new JLabel ("");
private JTextArea txtScript = new JTextArea ("");
private JLabel lblFichierOut = new JLabel("");
private JTextField txtFichierOut = new JTextField("",2);
private JButton btnParcourirOut = new JButton("");
//CURSOR
private Cursor curWait = new Cursor(Cursor.WAIT_CURSOR);
private Cursor curDefault = new Cursor(Cursor.DEFAULT_CURSOR);
//Variables globales
private JFrame fPrincipale;
private Locale currentLocale ;
private ResourceBundle messages ;
private Parametre paramAppli;
private TraiteExprReg t = new TraiteExprReg ();
private TraiteXml xml = new TraiteXml ();
private Document docScript;
private JOptionPane optSupprimeScript;
3.3.1.1.15 Constructeur
FrmScript(JFrame fParent, Parametre param, boolean bModal)
3.3.1.1.16 Méthodes
 public void actionPerformed(ActionEvent evt):
gestion des événements sur click des boutons (action sur les boutons
précités, notamment sur le bouton actionOk permtet de lancer les
commandes du script sélectionné par l’utilisateur (actionOK).
Page 35 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
 public void itemStateChanged(ActionEvent evt):
La sélection d’un script (identifiant suivant l’architecture) affiche le script
contenu dans le fichier Script.Xml.
 private void creeComposant():
Crée les composants.
 private void setup():
Initialise la taille et la position de l’écran.
 private void actionOK():
Lance l’exécution du script suivant l’option résultat dans un fichier affiche le
résultat dans l’écran FrmResultat ou pas. Un message demande à l’utilisateur s’il
souhaite supprimer le script après exécution.
 private void actionSupprime (int iPosParametre, int iIdStructure):
Supprime le script dans le fichier script.xml.
 private void initialiseListe ():
Initialise la liste des structures à partir du fichier XML Script.xml.
 private int getEntete ():
Récupère l’entête des commandes par rapport à l’architecture des données.
3.3.1.1.17 Classe FrmSynchro
C’est une classe qui charge l’écran de navigation.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
// Pour que javadoc puisse générer les liens sur la doc de ces classes
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JToolBar;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
et classe développé pour WICALE package fr.imag.clips
Page 36 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
import fr.imag.clips.wicale.util.TraiteXml;
import fr.imag.clips.wicale.util.TraiteExprReg;
import fr.imag.clips.wicale.serveur.ServeurLinguistique;
3.3.1.1.18 Attributs
private JPanel pnl = new JPanel();
private JTabbedPane tabPnl = new JTabbedPane(JTabbedPane.LEFT);
private JPanel pnlOnglet1 = new JPanel();
private JPanel pnlOnglet2 = new JPanel();
private JPanel pnlParametre = new JPanel();
private JToolBar toolbar = new JToolBar();
private JButton btnReception = new JButton("");
private JButton btnEmission = new JButton("");
private JButton btnEdition = new JButton("");
private JButton btnAnnuler = new JButton("");
private JLabel lblBarreEtat = new JLabel ("");
private JTextArea txtTexte = new JTextArea("");
private JScrollPane scrollTextArea ;
private JLabel lblComposant = new JLabel();
private JComboBox cboComposant = new JComboBox ();
private JLabel tabLabel[] = new JLabel [0];
private JComboBox tabComboBox [] = new JComboBox [0];
//CURSOR
private Cursor curWait = new Cursor(Cursor.WAIT_CURSOR);
private Cursor curDefault = new Cursor(Cursor.DEFAULT_CURSOR);
//Variables globales
private JFrame fPrincipale;
private Locale currentLocale ;
private ResourceBundle messages ;
private Parametre paramAppli;
private TraiteExprReg t = new TraiteExprReg();
private TraiteXml xml = new TraiteXml();
private
String[]
tabMotCle
=
{"id","data",
"libelle_data","niveau","mise_a_jour","param_id","suiv", "nom_fichier"};
private int iID=0, iDATA = 1, iLIBELLE_DATA = 2, iNIVEAU = 3, iMAJ = 4,
iPARAM_ID = 5, iSUIV=6, iNOM_FICHIER=7;
private String[] [] tabStructure = new String[0] [0];
private
String[]
tabMotCleCdeSynchro
=
{"mot_cle","num_param","expression","separateur"};
private int iMOTCLE=0, iNUMPARAM = 1, iEXPRESSION = 2,
iSEPARATEUR = 3;
private String[] [] tabCdeSynchro = new String[0] [0];
private String[] tabMotCleNomModule= {"num_param","expression"};
Page 37 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
private String sIdSelectionne= "";
private int iIdComposant = 0;//Sélectionner un composant
private String[] tabParametre = new String [0];
3.3.1.1.19 Constructeur
FrmSynchro(JFrame fParent, Parametre param, boolean bModal)
3.3.1.1.20 Méthodes
 public void actionPerformed(ActionEvent evt):
gestion des événements sur click des boutons (action sur les boutons
précités, notamment sur le bouton Edition permte de lancer la commande de
visualisation du contenu du composant. Le contenu est affiché dans l’onglet
Composannt. Le bouton Réception permet de récupérer le composant en
locale et de l’enregistrer dans le répertoire DATA puis l’arborescence
suivant l’architecture des données. Le bouton Emission récupère le contenu
du composant (fichier dans le répertoire DATA puis l’arborescence suivant
l’architecture des données) et met à jour le composant sur le serveur.
 public void selectionComboBox (ActionEvent evt):
Sélectionne d’un composant dans la liste des composants et met à jour les
paramètres à mettre à jour
 private void creeComposant():
Crée les composants.
 private void setup():
Initialise la taille et la position de l’écran.
 private void actionReception ():
Lance la commande pour réceptionner un composant et l’enregistre dans un
fichier xml en local \DATA.
 private void actionEmission():
Lance la commande pour mettre à jour un composant sur le serveur.
 private void actionEdition ():
Lance la commande qui permet de visualiser le composant dans l’onglet
Composant.
 private void initialiseListe(int iPosParametre, int iIdStructure):
Initialise les listes suivant l’arborecence des données.
 private void initialiseListeComposant ():
Initialise les listes des compsants.
Page 38 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
 private int getIdComposant():
Retourne l’identifiant du composant sélectionné.
 private String getContenuModule(Document docSynchro):
Retourne le contenu d’un composant (recherche dans un fichier .XML répertoire
\DATA.
 private String [] getParam(Document docSynchro):
Retourne les paramètres de la commande.
3.3.1.1.21 Classe FrmParametre
C’est une classe qui charge l’écran de paramètres généraux de l’application WICALE.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.util.*;
import java.io.*;
import org.w3c.dom.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
// Pour que javadoc puisse générer les liens sur la doc de ces classes
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JToolBar;
import javax.swing.JComboBox;
import javax.swing.JTextField;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.objet.Parametre;
import fr.imag.clips.wicale.objet.serveur;
import fr.imag.clips.wicale.util.TraiteExprReg;
3.3.1.1.22 Attributs
private JPanel pnlParametre = new JPanel();
private JPanel pnl = new JPanel();
private JToolBar toolbar = new JToolBar();
private JButton btnOK = new JButton("");
private JButton btnAnnuler = new JButton("");
Page 39 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
private JLabel lblLangue = new JLabel ("");
private JComboBox cboLangue = new JComboBox ();
private JLabel lblServeur = new JLabel ("");
private JComboBox cboServeur = new JComboBox ();
private JLabel lblRepParametre = new JLabel ("");
private JTextField txtRepParametre = new JTextField ("");
private JLabel lblRepData = new JLabel ("");
private JTextField txtRepData = new JTextField ("");
//CURSOR
private Cursor curWait = new Cursor(Cursor.WAIT_CURSOR);
private Cursor curDefault = new Cursor(Cursor.DEFAULT_CURSOR);
//Variables globales
private Frame fPrincipale;
private Locale currentLocale ;
private ResourceBundle messages ;
private Parametre paramAppli;
3.3.1.1.23 Constructeur
FrmParametre(JFrame fParent, Parametre param, boolean bModal)
3.3.1.1.24 Méthodes
 public void actionPerformed(ActionEvent evt):
gestion des événements sur click des boutons (action sur les boutons
précités, notamment sur le bouton ok permet d’enregistrer les paramètres
dans le fichier General.xml.
 private void creeComposant():
Crée les composants.
 private void setup():
Initialise la taille et la position de l’écran.
 private void actionOk():
Permet de mettre à jour le fichier general.xml.
 private void initialiseListe ():
Initialise la liste des langues (recherche des fichiers MessageBundles dans le
Répertoire PARAMETRE) et des serveurs.
 private void getListeLangue ():
Recherche
les
langues
disponibles
MessageBundles*.properties.
c’est
à
dire
les
fichiers
Page 40 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
3.3.1.1.25 Classe FrmResultat
C’est une classe qui charge le résultat dans JEditorPane.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
// Pour que javadoc puisse générer les liens sur la doc de ces classes
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.Impression;
3.3.1.1.26 Attributs
private JTextArea txtResultat = new JTextArea("");
private JToolBar toolbar = new JToolBar("");
private JButton btnOuvrir = new JButton("");
private JButton btnEnregistrer = new JButton("");
private JButton btnImprimer= new JButton("");
private JButton btnFermer = new JButton("");
//CURSOR
private Cursor curWait = new Cursor(Cursor.WAIT_CURSOR);
private Cursor curDefault = new Cursor(Cursor.DEFAULT_CURSOR);
//CONSTANTE
public static final String CRLF = "\r\n";
//VARIABLES GLOBALES
private Locale currentLocale;
private ResourceBundle messages;
private JFrame fPrincipale;
3.3.1.1.27 Constructeur
FrmResultat(JFrame fParent, String sTitre, String sResultat, Locale currentParent)
3.3.1.1.28 Méthodes
 public void actionPerformed(ActionEvent evt):
Page 41 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
gestion des événements sur click des boutons (action sur les boutons
précités, notamment sur le bouton Ouvrir permet de choisir un fichier et
d’afficher le conteu du fichier texte dans un JTextArea. Le bouton
Enregistrer enregistrer dans le fichier saisie par l’utilisateur le contenu
visible à l’écran. Le bouton Imprimer permet d’imprimer le contenu du
fichier visible à l’écran. Le bouton Fermer permet de fermer l’écran
FrmResultat.
 private void creeComposant():
Crée les composants.
 private void setup():
Initialise la taille et la position de l’écran.
 private void afficheResultat ():
Affiche le résultat dans un JTextArea.
 private void actionOuvrir():
Ouvre un fichier.
 private void actionEnregistrer ():
Enregistre le résultat dans un fichier texte.
 private void actionImprimer():
Imprime le résultat.
3.3.1.1.29 Classe FrmComposant
C’est une classe qui charge l’écran de navigation.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
// Pour que javadoc puisse générer les liens sur la doc de ces classes
import javax.swing.JDialog;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.print.*;
import java.awt.print.Printable;
import java.awt.Graphics;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
Page 42 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.Impression;
3.3.1.1.30 Attributs
// Composants de la fenêtre principale
private JTextArea txtResultat = new JTextArea("");
private JToolBar toolbar = new JToolBar("");
private JButton btnEnregistrer = new JButton("");
private JButton btnImprimer= new JButton("");
private JTextField txtRechercher = new JTextField("");
private JButton btnRechercher = new JButton("");
private JButton btnFermer = new JButton("");
//CURSOR
private Cursor curWait = new Cursor(Cursor.WAIT_CURSOR);
private Cursor curDefault = new Cursor(Cursor.DEFAULT_CURSOR);
//VARIABLES GLOBALES
private Locale currentLocale;
private ResourceBundle messages;
private JDialog fPrincipale;
private String sNomFichier ="";
private String sNomComposant="";
private Document docComposant;
private TraiteXml xml = new TraiteXml();
3.3.1.1.31 Constructeur
FrmComposant(JDialog fParent, String sTitre, String sFichier, Document
doc, String sNom, String sContenu, Locale currentParent)
3.3.1.1.32 Méthodes
 public void actionPerformed(ActionEvent evt):
gestion des événements sur click des boutons (action sur les boutons
précités, notamment sur le bouton Enregistrer permet d’enregistrer le
contenu du composant dans le fichier XML du répertoire DATA et
arborescence. Le bouton Imprimer permet d’imprimer le contenu du
composant. Le bouton Rechercher affiche en surbrillance le texte recherché.
 private void creeComposant():
Crée les composants.
 private void setup():
Initialise la taille et la position de l’écran.
Page 43 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
 private void afficheResultat ():
affiche le texte (contenu du compsant) dans un JTExtArea.
 private void actionRecherche():
Recherche le texte dans le JtextArea et l’affiche en surbrillance.
 private void actionEnregistre():
Enregistre le composant en locale.
 private void actionImprime():
Imprime le contenu d JtextArea.
3.3.1.1.33 Classe FrmAPropos
C’est une classe qui charge l’écran d’A propos.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.awt.event.*;
import java.awt.*;
import java.util.*;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.Erreur;
3.3.1.1.34 Attributs
3.3.1.1.35 Constructeur
FrmAPropos(Frame frmParent, String sTitre)
3.3.1.1.36 Méthodes
 private void creeComposant():
Crée les composants.
 private void setup():
Initialise la taille et la position de l’écran.
3.3.1.1.37 Classe ThreadFichier
C’est une classe qui permet de lancer le traitement en arrière plan.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
Page 44 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
import java.util.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.TraiteXml;
import fr.imag.clips.wicale.util.TraiteExprReg;
import fr.imag.clips.wicale.serveur.ServeurLinguistique;
3.3.1.1.38 Attributs
3.3.1.1.39 Constructeur
ThreadFichier (JFrame EcranMsg, Locale currentParent, String [] tabParam,
String sNomFichierIn, String sNomFichierOut)
3.3.1.1.40 Méthodes
 public void run():
3.3.2 Répertoire objet
Ce répertoire contient les classes qui permettent d’instancier les objets.






Parametre .java
Commande.java
ParametreCde.java
SyntaxeCde.java
Serveur.java
ValeurListe.java
de type Combo ou liste
//Crée les paramètres généraux
//Crée un objet Commande
// Crée un objet Paramètre de Commande
// Crée l’objet Syntaxe de commande
// Crée l’objet Serveur
// Crée l’objet Valeur des listes pour paramètre
3.3.2.1 Hiérarchie des classes
Page 45 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
3.3.2.1.1 Classe Commande
C’est une classe qui permet de créer les objets Commande.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import org.w3c.dom.*
et des packages spécifiques du laboratoire fr .Imag.clips
import fr.imag.clips.wicale.util.TraiteXml;
3.3.2.1.2 Attributs
public int iNumeroCde;
public String sNomCde;
public String sIntituleCde;
//Constantes
public static final String[] tabSingleNode
= {"num_cde", "nom_cde",
"intitule_cde"};
public static final int iNUM_CDE=0, iNOM_CDE=1 , iINTITULE_CDE=2;
3.3.2.1.3 Constructeur
public Commande(String sLigne)
ligne = numero_commande|nom_commande|intituleCde|
3.3.2.1.4 Méthodes
 public String toString() :
Retourne la chaîne de carcatères de l’objet Commande
 public int getNumeroCde() :
Retourne l’identifiant de l’objet Commande
 public Commande[] getCommande(Document doc, String sXPath) :
Retourne la liste des commandes du document passé en paramètre
3.3.2.1.5 Classe Parametre
C’est une classe qui crée l’objet Parametre.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
import java.lang.String;
import org.w3c.dom.*;
et des packages spécifiques du laboratoire fr .Imag.clips
import fr.imag.clips.wicale.util.TraiteXml;
Page 46 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
3.3.2.1.6 Attributs
public String sLangue = "fr-FR";
public String sCodeLangue = "fr";
public String sCodePays = "FR";
public String sServeur = "Ariane";
public String sRepParametre = "PARAMETRE/";
public String sRepData = "DATA/";
//Constantes
public static final String sNOMFICHIER="General.xml";
public static final String[] tabSingleNode = {"LANGUE_PAR_DEFAUT",
"SERVEUR_PAR_DEFAUT", "REP_PARAMETRE", "REP_DATA"};
public static final int iLANGUE=0, iSERVEUR=1 , iREP_PARAMETRE=2,
iREP_DATA=3;
3.3.2.1.7 Constructeur
public Parametre() crée l’objet paramètre avec le contenu du fichier General.xml
3.3.2.1.8 Méthodes
 public void toString() :
Retourne une chaîne de cractère avec les informations de l’objet
3.3.2.1.9 Classe ParametreCde
Crée l’objet Paramètre de Commande.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
import java.lang.String;
import org.w3c.dom.*;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.TraiteXml;
3.3.2.1.10 Attributs
public String sNomParametre;
public String sLibelleParametre;
public int iPositionLibelleX, iPositionLibelleY;
public int iDimensionLibelleX, iDimensionLibelleY;
public String sTypeParametre;
public String sValeurParDefault;
public int iPositionX, iPositionY;
public int iDimensionX, iDimensionY;
public ValeurListe[] tabValeurListe;
Page 47 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
3.3.2.1.11 Constructeur
public ParametreCde(String ligne, ValeurListe[] tab)
3.3.2.1.12 Méthodes
 public String toString ():
Retourne la chaîne de caractères représentant le ParametreCde
sNomParametre|sLibelleParametre
|iPositionLibelleX
|iPositionLibelleY
|iDimensionLibelleX | iDimensionLibelleY | sTypeParametre |sValeurParDefault
iPositionX | iPositionY | iDimensionX |iDimensionY |
 public String NomParametre():
Retourne l’identifiant de l’objet le nom de paramètre.
 public Parametre[] getParametre (String sFichierParam, String sXPath):
Lit dans le fichier XML, la liste des paramètres de commande
3.3.2.1.13 Classe Serveur
C’est une classe qui crée l’objet Serveur.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.*
3.3.2.1.14 Attributs
3.3.2.1.15 Constructeur
Pas de constructeur
3.3.2.1.16 Méthodes
 private String[] getListeServeur(String sRepParametre) :
Recupère la liste des serveurs disponibles. Dans le répertoire PARAMETRE
recherche tous les répertoires. Chaque répertoire correspond à un serveur
3.3.2.1.17 Classe SyntaxeCde
Crée l’objet SYNTAXE CDE.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.lang.String;
import org.w3c.dom.*;
Page 48 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.TraiteXml;
3.3.2.1.18 Attributs
public String sMotCle;
public String sNumParam;
public String sExpression;
public String sSeparateur;
public boolean bSaisieObligatoire ;
3.3.2.1.19 Constructeur
public SyntaxeCde(String ligne)
ligne :
mot_cle|num_param|expression|separateur|SaisieObligatoire|
3.3.2.1.20 Méthodes
 public String toString():
Retourne la chaîne de caractères de la syntaxe de Commande
 public String MotCle():
Retourne le mot clé du composant
 public SyntaxeCde[] getSyntaxeCde(String sFichierParam, String sXPath):
Recherche les syntaxes pour la commande (sXPAth)
3.3.2.1.21 Classe ValeurListe
Crée l’objet ValeurListe.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
import java.lang.String;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.*
3.3.2.1.22 Attributs
public String sLibValeurListe,sValeurListe,
sInitialiseListe;
public boolean bSelectionMultiple;
public int iPosX, iPosY;
public int iDimX, iDimY;
sSeparateurSelectionMultiple,
Page 49 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
3.3.2.1.23 Constructeur
public ValeurListe(String ligne)
ligne :
LibelleValeurListe|MultipleLigne|SeparateurLigneMutilple|ValeurListe|iPosX|iPosY|i
DimX|iDimY|initialise_liste|
3.3.2.1.24 Méthodes
 public String toString():
Retourne la chaine de caractères de l’objet séparé par |.
LibelleValeurListe|MultipleLigne|SeparateurLigneMutilple|ValeurListe|iPosX|i
PosY|iDimX|iDimY|initialise_liste|
 public String NomValeurListe():
Retourne le libellé.
3.3.3 Répertoire SERVEUR
Ce répertoire contient les classes qui permettent d’instancier les écrans.




ServerLinguistique .java
ServerAriane.java
ServerPilaf.java
ServerUnl.java
//classe interface décrit les méthodes
// méthode spécifique Ariane
// méthode spécifique Pilaf
// méthode spécifique Unl
3.3.3.1 Hiérarchie des classes
Page 50 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
3.3.3.1.1 Classe ServerLinguistique
Spécifie les méthodes pour communiquer avec le serveur.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.lang.*
et des packages spécifiques du laboratoire fr .Imag.clips
import fr.imag.clips.wicale.objet.Commande;
3.3.3.1.2 Attributs
3.3.3.1.3 Constructeur
interface InterfaceServerLinguistique
{
public String getResultat(Commande cde, String [] tabParam, String
sFichierOut)
public String getResultatScript(String sEntete, String sListeCde, String
sFichierOut)
public String [] synchronisation(int iNumStructure, String [] tabParam)
3.3.3.1.4 Méthodes
3.3.3.1.5 Classe ServerAriane
C’est une classe qui décrit les méthodes de communication pour le serveur Ariane
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
import java.net.*;
import java.util.regex.*;
//Parsing dans fichier XML
import org.w3c.dom.*;
import org.w3c.dom.traversal.*;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
et des packages spécifiques du laboratoire fr .Imag.clips
import fr.imag.clips.wicale.util.TraiteExprReg;
import fr.imag.clips.wicale.util.TraiteXml;
import fr.imag.clips.wicale.objet.Commande;
3.3.3.1.6 Attributs
public static final String sRepXml="PARAMETRE/";
public static final String CRLF = "\r\n";
Page 51 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
public static final String sNomServeur = "Ariane";
3.3.3.1.7 Constructeur
3.3.3.1.8 Méthodes
 public String getResultat(Commande cde, String [] tabParam, String
sFichierOut):
Lance la commande par socket TCP/IP et retourne de résultat du serveur. Le
résultat est traité (fichier Commande.xml RESULTAT)
 public String String getResultatScript(String sEntete, String sListeCde, String
sFichierOut):
Lance les commandes par socket TCP/IP et retourne de résultat du serveur.
Le résultat est traité (fichier Commande.xml RESULTAT)
 public String [] synchronisation(int iNumStructure, String [] tabParam):
Lance une des commandes de synchronisation(édition, réception et émission)
3.3.3.1.9 Classe ServerPilaf
C’est une classe qui décrit les méthodes de communication avec le serveur.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.util.*;
import java.io.*;
import java.net.*;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.TraiteExprReg;
import fr.imag.clips.wicale.objet.Command;
3.3.3.1.10 Attributs
protected URL url;
protected HttpURLConnection server;
public
String
[]
"GENERER","TABLEX","TABVAR"};
public String [] tabCategorie;
public String [] tabVariable;
tabCde
=
{"ANALYSER",
//Constante
public final String CRLF = "\r\n";
public final String sNomServeur = "Pilaf";
Page 52 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
public final String sRepXml="PARAMETRE/";
3.3.3.1.11 Constructeur
Pas de constructeur
3.3.3.1.12 Méthodes
 public String getResultat(Commande cde, String [] tabParam, String
sFichierOut):
Lance la commande par socket TCP/IP et retourne de résultat du serveur. Le
résultat est traité (fichier Commande.xml RESULTAT)
 public String String getResultatScript(String sEntete, String sListeCde, String
sFichierOut):
Lance les commandes par socket TCP/IP et retourne de résultat du serveur.
Le résultat est traité (fichier Commande.xml RESULTAT)
 public String [] synchronisation(int iNumStructure, String [] tabParam):
Lance une des commandes de synchronisation(édition, réception et émission)
3.3.3.1.13 Classe ServerUnl
C’est une classe qui charge l’écran de navigation.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
et classe développé pour WICALE package fr.imag.clips
3.3.3.1.14 Attributs
3.3.3.1.15 Constructeur
3.3.3.1.16 Méthodes
 public String getResultat(Commande cde, String [] tabParam, String
sFichierOut):
Lance la commande par socket TCP/IP et retourne de résultat du serveur. Le
résultat est traité (fichier Commande.xml RESULTAT)
 public String String getResultatScript(String sEntete, String sListeCde, String
sFichierOut):
Lance les commandes par socket TCP/IP et retourne de résultat du serveur.
Le résultat est traité (fichier Commande.xml RESULTAT)
Page 53 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
 public String [] synchronisation(int iNumStructure, String [] tabParam):
Lance une des commandes de synchronisation(édition, réception et émission)
3.3.4 Répertoire Util
Ce répertoire contient les classes qui permettent d’instancier les écrans.





Constante.java
Impression.java
ExprReg.java
Xml.java
Erreur.java
//définie toutes les constantes de l’application
// permet d’imprimer un texte
// traite les expressions régulières
// traitement des fichiers XML
// traite les erreurs
3.3.4.1 Hiérarchie des classes
Page 54 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
3.3.4.1.1 Classe Constante
Définit les constantes pour l’application WICALE.
Héritage :
Aucun héritage
3.3.4.1.2 Attributs
public final String CRLF ="\r\n";
public final String sFICHIER_LANGUE = "MessagesBundle_";
public final String sEXT_LANGUE = ".properties";
3.3.4.1.3 Constructeur
Pas de constructeur
3.3.4.1.4 Méthodes
Pas de méthode
3.3.4.1.5 Classe Impression
C’est une classe qui contient les méthodes pour imprimer un texte.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.awt.*;
import javax.swing.*;
import java.awt.print.*;
et des packages spécifiques du laboratoire fr .Imag.clips
3.3.4.1.6 Attributs
private Component componentToBePrinted;
3.3.4.1.7 Constructeur
Impression(Component componentToBePrinted)
3.3.4.1.8 Méthodes
 public void print () :
Imprime le composant.
3.3.4.1.9 Classe ExprReg
Page 55 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
C’est une classe qui contient les méthodes pour traiter les expressions régulières d’un texte.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
import java.net.*;
import java.util.regex.*;
import org.xml.sax.*;
//save
import java.util.Properties;
import org.w3c.dom.*;
import org.w3c.dom.traversal.*;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
// Imported JAVA API for XML Parsing 1.0 classes,
// Xerces implementation and XPath API
//simport org.apache.xerces.parsers.DOMParser;
import org.apache.xpath.XPathAPI;
import org.apache.xml.utils.TreeWalker;
import org.apache.xml.utils.DOMBuilder;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;
import java.util.Enumeration;
et classe développé pour WICALE package fr.imag.clips
import fr.imag.clips.wicale.util.TraiteXml;
import fr.imag.clips.wicale.util.TraiteExprReg;
3.3.4.1.10 Attributs
3.3.4.1.11 Constructeur
3.3.4.1.12 Méthodes
 public boolean verifie(String sTraitementOK, String sChaine):
Vérifie si la chaîne de caractères sTraitementOK est contenu dans sChaine.
 public boolean find(String sExprDeb, String sExprCorps, String sExprFin,

String sChaine, String sSeparateur)):
Recherche la chaîne de caractères par rapport à l’expression régulières
passés en paramètres.
.
 public String [] split(String sExpr, String sChaine):
retourne un tableau avec les chaines de caractères.
Page 56 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
 private void String replace(String sExpr, String sChaineReplace, String
sChaine):
Remplace la chaine.
 public String traiteResultat(String sFichierParam, int iCde, String sChaine) ():
Traite le fichier Résultat Recherche toutes les étapes de traitement du résultat.
Chaque étape appelle l’une des méthodes replace, split, ou find et itère avec l’étape
suivante. Le résultat de l’étape n est l’entrée de l’étape n+1
 private void lireFichier(): ASUPPRIMER package Util.fichier
 public String[] traiteModule ():
Traite le fichier Résultat Recherche toutes les étapes de traitement du résultat.
Chaque étape appelle l’une des méthodes replace, split, ou find et itère avec l’étape
suivante. Le résultat de l’étape n est l’entrée de l’étape n+1
3.3.4.1.13 Classe Xml
C’est une classe qui contient les méthodes de traitements des fichiers XML.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.io.*;
import java.util.Properties;
import org.w3c.dom.*;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import org.w3c.dom.traversal.*;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
// Imported JAVA API for XML Parsing 1.0 classes,
import org.apache.xpath.XPathAPI;
import org.apache.xml.utils.TreeWalker;
import org.apache.xml.utils.DOMBuilder;
import javax.xml.parsers.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
// Imported Serializer classes
import javax.xml.transform.stream.*;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.dom.DOMSource;
Page 57 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
import javax.xml.transform.stream.StreamResult;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;;
3.3.4.1.14 Attributs
3.3.4.1.15 Constructeur
Pas de constructeur
3.3.4.1.16 Méthodes
 public Document initialiseDoc(String sNomFichier):
initialise le fichier XML dans un Document
 public String [] [] findDoc(Document doc, String xpath, String[]
tabSingleNode) :
Retourne un tableau avec le contenu des attributs.
 public Document updateDocModule(Element racine, Document doc, String
xpath, String [] tabNewValue) :
Met à jour le module.
 public Document updateDocListe(Element racine, Document doc, String xpath,
String [] tabNewValue):
 public Document supprimeAllChild(Document doc, String xpath) :
Supprime les nœuds dans le document
 public Document updateDocScript(Element racine, Document doc, String
xpath, String [] tabNewValue) :
 public String findValeur(Document doc, String xpath) :
Retrouve la valeur pour le premier attribut
 public String findAttribut(Document doc, String xpath) :
Retrouve la valeur pour le premier attribut
 public String sauveFichier(Document doc, String sCodeFichier, String
sFichierOut) :
Enregistre ou crée le fichier XML
 public String[] chargeListe(Document doc, String sServeur, String sXPath) :
Lit le fichier des listes Liste.XML
3.3.4.1.17 Classe Fichier
Page 58 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
C’est une classe qui contient les méthodes de traitement des fichiers.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.awt.event.*;
import java.io.*;
import java.util.*;
et classe développé pour WICALE package fr.imag.clips
3.3.4.1.18 Attributs
3.3.4.1.19 Constructeur
Pas de constructeur
3.3.4.1.20 Méthodes
 public boolean existeFichier(String sNomFichier):
Retourne tru si le fichier existe sinon false.
 public String sFichier(String sNomFichier):
Retourne le contenu du fichier texte
3.3.4.1.21 Classe Erreur
C’est une classe qui contient les méthodes de traitement des erreurs.
Héritage : Cette classe hérite des classes de la bibliothèque de Sun.
import java.util.*
et classe développé pour WICALE package fr.imag.clips
3.3.4.1.22 Attributs
3.3.4.1.23 Constructeur
Pas de constructeur
3.3.4.1.24 Méthodes
 public EnregistreErreur (String sNomFichier, int iErreur, String sMessage,
String sClass, String sMethode):
Page 59 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
Enregistre le message d’erreur dans le fichier .LOG dans le répertoire définit
par l’utlisateur dans l’écran de paramétrage.
Si le fichier ne peut pas être crée System.out.println
Page 60 sur 65
Laboratoire CLIPS - IMAG
3.4
Description des données
3.5
Les fichiers XML
840900634
version 1.0
Les DTD de chaque fichier XML au format UTF-8.
3.5.1 Fichier Paramètre General.xml
LeFichier General.xml contient les paramètres par défaut de l’application. Il se trouve dans le
répertoire IHM
<PARAMETRES>
<LANGUE_PAR_DEFAUT>fr_FR</LANGUE_PAR_DEFAUT>
<SERVEUR_PAR_DEFAUT>Ariane</SERVEUR_PAR_DEFAUT>
<REP_PARAMETRE>c:\Appli\Wicale\PARAMETRE\</REP_PARAMETRE>
<REP_DATA>c:\Appli\Wicale\DATA\</REP_DATA>
<FICHIER_LOG>c:\Appli\Wicale\DATA\</FICHIER_LOG>
</PARAMETRES>
3.5.2 Fichier Paramètre Commande.xml
LeFichier Commande.xml contient les informations de toutes les commandes du serveur. Le
fichier
se
trouve
dans
le
répertoire
des
paramètres
\PARAMETRE\NomServeur\Commande.xml
La commande 0 permet de définir les paramètres et la syntaxe de toutes les commandes. Par
exemple pour le serveur Ariane, l’utilisateur doit saisie le nom de la machine et du disque
pour lancer une commande.
Les numéros de commande commence par 1 et doivent se suivre.
<LST_COMMANDE>
<GPE_COMMANDE nom_groupe="Les actions et interrogations globales">
<nom_groupe>Les actions et interrogations globales</nom_groupe>
<type_groupe>GENERAL</type_groupe>
<COMMANDE num_cde="0">
<num_cde>0</num_cde>
<nom_cde>GENERAL</nom_cde>
<intitule_cde></intitule_cde>
<PARAMETRE_SAISIE>
<PARAMETRE>
<nom_param>Machine</nom_param>
<libelle_param>LBL_MACHINE</libelle_param>
<pos_lib_X>10</pos_lib_X><pos_lib_Y>40</pos_lib_Y>
<dim_lib_X>100</dim_lib_X><dim_lib_Y>20</dim_lib_Y>
<type_param>ComboBox</type_param>
<valeur_def_param>CARPENA</valeur_def_param>
<pos_X>20</pos_X><pos_Y>60</pos_Y>
<dim_X>160</dim_X><dim_Y>20</dim_Y>
<VALEUR_LISTE>
<libelle_liste>LISTE_MACHINE</libelle_liste>
<multiligne>false</multiligne>
<sep_multiligne></sep_multiligne>
<valeur_liste>MACHINE</valeur_liste>
<pos_X>20</pos_X><pos_Y>60</pos_Y>
<dim_X>160</dim_X><dim_Y>20</dim_Y>
<initialise_liste></initialise_liste>
</VALEUR_LISTE>
</PARAMETRE>
…
</PARAMETRE_SAISIE>
Page 61 sur 65
Laboratoire CLIPS - IMAG
840900634
version 1.0
<SYNTAXE>
<ETAPE>
<mot_cle>MACHINE = </mot_cle>
<num_param>0</num_param>
<expression>.*</expression>
<separateur>&retour_chariot;</separateur>
<saisie_obligatoire>true</saisie_obligatoire>
</ETAPE>
<ETAPE>
<mot_cle>DISQUE = </mot_cle>
<num_param>1</num_param>
<expression>.*</expression>
<separateur>&retour_chariot;</separateur>
<saisie_obligatoire>true</saisie_obligatoire>
</ETAPE>
…
</SYNTAXE>
</COMMANDE>
<COMMANDE num_cde="1">
<num_cde>1</num_cde>
<nom_cde>LISNOMCORP</nom_cde>
<intitule_cde>Liste des noms de corpus</intitule_cde>
<PARAMETRE_SAISIE>
</PARAMETRE_SAISIE>
<SYNTAXE>
<ETAPE>
<mot_cle>TRAIT = LISNOMCORP (*) </mot_cle>
<num_param></num_param>
<expression></expression>
<separateur>&retour_chariot;</separateur>
<saisie_obligatoire>false</saisie_obligatoire>
</ETAPE>
</SYNTAXE>
<RESULTAT>
<resultat_OK>-> Tout est O.K.</resultat_OK>
<resultat_type>-> Tout est O.K.</resultat_type>
<ETAPE>
<nom_methode>find</nom_methode>
<expr_deb>Liste des noms de corpus</expr_deb>
<expr_corps>[A-Za-z0-9.,?!\()\*\/\s\r\n&caract_sub;&caract_accent;:=_$:+]*</expr_corps>
<expr_fin>-LISTE TERMINEE-</expr_fin>
<expr_concat>&retour_chariot;</expr_concat>
<expr_remplacement></expr_remplacement>
</ETAPE>
…
3.5.3 Fichier Paramètre Architecture.xml
Liste de tous les composants
<ARCHITECTURE>
<STRUCTURE id="0">
<id>0</id>
<niveau>1</niveau>
<data>MACHINE</data>
<libelle_data>LBL_MACHINE</libelle_data>
<mise_a_jour>M</mise_a_jour><!--manuelle-->
<param_id></param_id>
<suiv>1</suiv>
<nom_fichier>Liste.xml</nom_fichier>
<valeur_tous></valeur_tous>
<valeur_def>CARPENA</valeur_def>
<expression>.*</expression>
</STRUCTURE>
<STRUCTURE id="1">
<id>1</id>
<niveau>2</niveau>
<data>DISQUE</data>
<libelle_data>LBL_DISQUE</libelle_data>
<mise_a_jour>M</mise_a_jour><!--manuelle-->
<param_id>0</param_id>
<suiv>2;3;6</suiv>
<nom_fichier>Liste.xml</nom_fichier>
<valeur_tous></valeur_tous>
Page 62 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
<valeur_def>191</valeur_def>
<expression>.*</expression>
</STRUCTURE>
3.5.4 Fichier Paramètre Emission.xml
Pour chaque composant, si le serveur permet emmettre le composant alors il faut définir la
syntaxe de la commande d’émission et de récupération du résultat
<LST_STRUCTURE>
<STRUCTURE id="4"><!--toutes les Chaine-->
<SYNTAXE>
<ETAPE>
<mot_cle>MACHINE=</mot_cle>
<num_param>0</num_param>
<expression>.*</expression>
<separateur>&retour_chariot;</separateur>
<saisie_obligatoire>true</saisie_obligatoire>
</ETAPE>
<ETAPE>
<mot_cle>DISQUE = </mot_cle>
<num_param>1</num_param>
<expression>.*</expression>
<separateur>&retour_chariot;</separateur>
<saisie_obligatoire>true</saisie_obligatoire>
</ETAPE>
…
</SYNTAXE>
<RESULTAT>
<NOM>
<num_param>4</num_param>
<expression>.*-</expression>
</NOM>
<CONTENU>
<resultat_OK>-> Tout est O.K.</resultat_OK>
<expr_split></expr_split>
<ETAPE>
<nom_methode>find</nom_methode>
<expr_deb>[\*]
CHAINE
LGS
LGC
[\!][\s]*NUMERO[(]S[)]
DATE[\s]*[\*]</expr_deb>
<expr_corps>[A-Za-z0-9()&caract_sub;\*\/\s\w\r\n\!]*</expr_corps>
<expr_fin>[\*]*</expr_fin>
<expr_concat>\r\n</expr_concat>
<expr_remplacement></expr_remplacement>
</ETAPE>
<ETAPE>
<nom_methode>find</nom_methode>
<expr_deb></expr_deb>
<expr_corps>[\s][0-9]{2}[\s]*[(][0-9]{2}\/[0-9]{2}\/[0-9]{2}[)]</expr_corps>
<expr_fin></expr_fin>
<expr_concat>\r\n</expr_concat>
<expr_remplacement></expr_remplacement>
</ETAPE>
…
</CONTENU>
</RESULTAT>
</STRUCTURE>
3.5.5 Fichier Paramètre Reception.xml
Pour chaque composant, si le serveur permet de réceptionner le composant alors il faut définir
la syntaxe de la commande de réception.
<LST_STRUCTURE>
<STRUCTURE id="2"><!--toutes les langues disponibles-->
<SYNTAXE>
<ETAPE>
<mot_cle>MACHINE=</mot_cle>
<num_param>0</num_param>
<expression>.*</expression>
<separateur>&retour_chariot;</separateur>
<saisie_obligatoire>true</saisie_obligatoire>
Page 63 sur 65
Laboratoire CLIPS - IMAG
version 1.0
840900634
</ETAPE>
<ETAPE>
<mot_cle>DISQUE = </mot_cle>
<num_param>1</num_param>
<expression>.*</expression>
<separateur>&retour_chariot;</separateur>
<saisie_obligatoire>true</saisie_obligatoire>
</ETAPE>
<ETAPE>
<mot_cle>LGS = *</mot_cle>
<num_param></num_param>
<expression></expression>
<separateur>&retour_chariot;</separateur>
<saisie_obligatoire>true</saisie_obligatoire>
</ETAPE>
…
</SYNTAXE>
</STRUCTURE>
3.6 L’internationalisation
Dans le répertoire des paramètres, on définit un fichier par langue. Le fichier se nomme
« MessagesBundle », le code langue, « _ » le code pays et l’extension .properties.
Ce fichier contient un mot clé et la valeur dans le langue.
LBL_TITRE=Pilote de serveurs linguistiques
LBL_TITRE_SYNCHRO=Synchronisation des composants
LBL_TITRE_NAVIGATION=Consultation des composants en local
LBL_SERVEUR=Serveur
LBL_LANGUE_APPLI=Langue
LBL_REPERTOIRE_PARAMETRE=Répertoire des paramètres
LBL_REPERTOIRE_DATA=Répertoire des données
LBL_PARAMETRE_GENERAL=Paramètres de WICALE
LBL_TABLE= Table…
Java permet de définir une variable Locale avec le paramètre code pays et code langue
Locale currentLocale = new Locale(CODE_FR, PAYS_FR) et une variable ResourceBundle
messages qui permet de rechercher le libellé dans le bon fichier.
//Initialisation des variables
Locale currentLocale = new Locale(sCodeLangue,sCodePays);
messages = ResourceBundle.getBundle(sRepParametre +
currentLocale);
//Lecture du libellés
messages.getString("LBL_PARAMETRE_GENERAL")
"/"+
"MessagesBundle"),
Dans ce chapitre, nous allons apprendre à écrire un programme Java qui puisse – être
indépendant d'une quelconque langue et d'un quelconque pays – intégrer une nouvelle
langue sans nécessiter de re-compilation – présenter certains éléments (monnaies,
dates, …) dans un format quelconque. Pour ce faire, nous allons utiliser des classes
disséminées dans différents packages (java.util, java.text, ...).
Pour mieux comprendre les choses, regardons ce petit programme de plus près.
Analysez-le et dites en quoi on pourrait améliorer ce programme.
Page 64 sur 65
Laboratoire CLIPS - IMAG
3.7
840900634
version 1.0
Séparation Code/Textes
Une des phases essentielles de l'internationalisation d'une application est de séparer le
code des textes affichés dans le programme. Si les textes sont noyés dans le
programme, il faudra modifier le code pour fournir l'application dans un nouveau
langage. Si, au contraire, les deux choses sont séparées, on pourra toucher le code
indépendamment des textes et réciproquement.
Au niveau de Java, les choses sont relativement simples. En effet, le package java.util
propose un certain nombre de classes prévues à cet effet, et notamment les classes
Locale et ResourceBundle.

Locale : cette classe permet de définir un objet de définition de la langue
et du pays pris en compte. On peut obtenir un objet Locale par défaut en
saisissant Locale.getDefault();

ResourceBundle : cette classe permet de gérer un paquet (bundle) de
messages pour une localisation (un objet Locale) donnée.
Pour mieux comprendre tout cela, regardons de plus près le programme suivant.
Notez que dans la fonction main, on choisit (pour le moment) une localisation bien
déterminée. Mais on ne voit quasiment plus aucune chaîne de caractères (en tant que
telle) dans le reste du programme.
La question que vous vous posez certainement est de savoir où le programme va
chercher les chaînes de caractères en question ? En fait, tout est dit dans ce programme,
il va les chercher dans des fichiers commençant par "RTVACalculator" (ATTENTION : ce
préfixe ne doit pas correspondre à un nom de vos fichiers de code, sans quoi cela génère
une erreur). Selon la localisation, la langue et le pays sont concaténés au préfixe ce qui
donne le nom du fichier à localiser. Si ce fichier n'existe pas, un fichier par défaut est
utilisé.
Page 65 sur 65
Téléchargement