bob.batch
Class TCommandes

java.lang.Object
  extended by bob.batch.TCommandes

public class TCommandes
extends java.lang.Object

Cette classe traite les commandes venant de l'interface batch de la boîte à outils. Elle gère un projet courant, ainsi que son fichier de description dont l'extension est ".prj". Ces principales méthodes sont les implémentations des commandes elle-mêmes.

Version:
1.0 juin 2004, 2.0 décembre 2004
Author:
Traore Daouda, Olivier Bert
See Also:
Bob, TProjet

Constructor Summary
TCommandes()
          Constructeur par défaut.
TCommandes(java.lang.String nom)
          Constructeur donnant un nom au projet
 
Method Summary
 void AfficherDependances(java.util.Vector<java.lang.String> args)
          Cette méthode affiche les dépendances
 void ajouter(java.util.Vector<java.lang.String> args)
          Cette méthode ajoute une liste de fichiers dans le projet
 void alaligne()
          passe à la ligne suivante dans du fichier projet en écriture
 boolean analyser_composant(java.lang.String fichier_composant)
          Cette méthode analyse un fichier de composant B et, s'il n'y a pas d'erreur, ajoute le composant produit dans le projet.
 void AplatirSansrenommage(java.util.Vector<java.lang.String> args)
          Implémentation de la commande   "fwr nom1 nom2"
Méthode qui fait l'aplatissement sans renommage d'un raffinement.
 void CallableOperations_x(java.util.Vector<java.lang.String> args)
          Cette methode affiche la liste des operations appelables par le composant.
 void CallableOperations(java.util.Vector<java.lang.String> args)
          Cette methode affiche la liste des operations appelables pour le composant.
 void ChangerTerminal(java.lang.String fichier)
          Implémente la commande    "ts terminal"
Change le terminal pour l'affichage des résultats des commandes.
 void charger()
          lit et charge le fichier projet en mémoire
 void constgraphe(java.util.Vector<TClause> l, TComposant comp)
          Construit le graphe de dependance du projet
 void copier(java.util.Vector<java.lang.String> args)
          Implémentation de la commande     "cp nom1 nom2"
Elle copie le composant "nom1" du projet en créant un composant de nom "nom2" ainsi que son fichier associé (renommé de manière cohérente).
 void dependance_add(TComposant comp)
          affiche la liste de dependances non résolues
 boolean dependance(java.lang.String nom)
          retourne vrai s'il n'y a pas de composant qui depend du composant "nom", ou s'il y a des composants qui dépendent de "nom et que l'utilisateur a confirmé de le supprimer quand même.
 void ecrire(java.lang.String nom_fichier)
          permet d'ecrire dans le fichier projet
 void ExportedOperations_x(java.util.Vector<java.lang.String> args)
          Affichage détaillé des opérations exportées.
 void ExportedOperations(java.util.Vector<java.lang.String> args)
          Cette méthode affiche les operations exportees par le composant donné
Auteur: Olivier Bert
 void fermer()
          ferme le fichier projet en écriture
 void GenererPO(java.util.Vector<java.lang.String> args)
          Implémentation de la commande    "po nom1 [nom2]"
Méthode expérimentale de génération d'obligation de preuves.
 java.lang.String getchemin(int i)
          donne le chemin associé à l'index i
 void InclureComposants(java.util.Vector<java.lang.String> args)
          Implémentation de la commande    "ic nom1 nom2"
Méthode qui fait l'inclusion de composants.
 int indice(java.lang.String chaine)
          Etant donné un nom de fichier, cette méthode retourne l'indice du fichier dans le vecteur ListeFichiers.
 int indice(TComposant comp)
          Cette méthode cherche l'indice d'un composant.
 void init_ecrire(boolean append)
          permet d'ouvrir le fichier projet en écriture
 void init_lire()
          permet d'ouvrir le fichier projet en lecture
static java.lang.String lire_string()
          lit une chaine de caractère
 java.lang.String lire()
          permet de lire dans du fichier projet
 void lister()
          liste les composants qui sont dans le projet
 TProjet projet()
          Renvoie l'instance du projet sur lequel on travaille
 void sauvegarder()
          Sauvegarde de l'espace de travail dans le fichier projet.
 void subsoper(java.util.Vector<java.lang.String> args)
          pour chaque opération du composant, calcule la terminaison, la garde et le prédicat avant-après et les affiche au terminal.
 void subsprim(java.util.Vector<java.lang.String> args)
          pour chaque opération du composant, calcule la substitution de l'opération et la substitution primitive équivalente qu'il affiche au terminal.
 void subssimpl(java.util.Vector args)
          Affichage de substitutions simplifiees du composant.
 void subswp(java.util.Vector<java.lang.String> args)
          Pour chaque opération, cete méthode calcule la plus faible précondition par rapport à l'invariant.
 void supprimer(int i)
          suprime un fichier à l'index i
 void supprimer(java.lang.String nom_fichier)
          supprime un fichier dans le projet
 void VisibleVariables(java.util.Vector<java.lang.String> args)
          Cette méthode affiche la liste des variables visibles
Auteur: Olivier Bert
 void visualiser(java.util.Vector<java.lang.String> args)
          Implémentation de la commande     "vc nomcomposant"
Elle visualise le contenu du composant "nomcomposant" du projet.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TCommandes

public TCommandes()
           throws java.io.IOException
Constructeur par défaut.
Attention: il crée un projet du nom de "monprojet.prj"

Throws:
java.io.IOException

TCommandes

public TCommandes(java.lang.String nom)
           throws java.io.IOException
Constructeur donnant un nom au projet

Throws:
java.io.IOException
Method Detail

projet

public TProjet projet()
Renvoie l'instance du projet sur lequel on travaille


ChangerTerminal

public void ChangerTerminal(java.lang.String fichier)
Implémente la commande    "ts terminal"
Change le terminal pour l'affichage des résultats des commandes.


analyser_composant

public boolean analyser_composant(java.lang.String fichier_composant)
Cette méthode analyse un fichier de composant B et, s'il n'y a pas d'erreur, ajoute le composant produit dans le projet.

Parameters:
fichier_composant - le nom du fichier
Returns:
vrai si pas d'erreur, faux sinon.

init_ecrire

public void init_ecrire(boolean append)
                 throws java.io.IOException
permet d'ouvrir le fichier projet en écriture

Throws:
java.io.IOException

init_lire

public void init_lire()
               throws java.io.IOException
permet d'ouvrir le fichier projet en lecture

Throws:
java.io.IOException

ecrire

public void ecrire(java.lang.String nom_fichier)
            throws java.io.IOException
permet d'ecrire dans le fichier projet

Throws:
java.io.IOException

lire

public java.lang.String lire()
                      throws java.io.IOException
permet de lire dans du fichier projet

Throws:
java.io.IOException

alaligne

public void alaligne()
              throws java.io.IOException
passe à la ligne suivante dans du fichier projet en écriture

Throws:
java.io.IOException

fermer

public void fermer()
            throws java.io.IOException
ferme le fichier projet en écriture

Throws:
java.io.IOException

sauvegarder

public void sauvegarder()
                 throws java.io.IOException
Sauvegarde de l'espace de travail dans le fichier projet.
Cette méthode doit être appelée pour ranger la liste des noms de fichiers des composants dans le fichier du projet.

Throws:
java.io.IOException

indice

public int indice(java.lang.String chaine)
Etant donné un nom de fichier, cette méthode retourne l'indice du fichier dans le vecteur ListeFichiers.

Parameters:
chaine - le nom du fichier
Returns:
l'indice du nom du fichier si trouvé, sinon retourne -1

indice

public int indice(TComposant comp)
Cette méthode cherche l'indice d'un composant.

Parameters:
comp - le composant
Returns:
l'indice du composant si trouvé, sinon retourne -1

charger

public void charger()
lit et charge le fichier projet en mémoire


ajouter

public void ajouter(java.util.Vector<java.lang.String> args)
             throws java.io.IOException
Cette méthode ajoute une liste de fichiers dans le projet

Parameters:
args - est la commande d'entrée suivie des noms des fichiers à ajouter dans le projet.
Throws:
java.io.IOException

supprimer

public void supprimer(java.lang.String nom_fichier)
               throws java.io.IOException
supprime un fichier dans le projet

Parameters:
nom_fichier - le nom du fichier
Throws:
java.io.IOException

supprimer

public void supprimer(int i)
               throws java.io.IOException
suprime un fichier à l'index i

Throws:
java.io.IOException

lister

public void lister()
            throws java.io.IOException,
                   java.io.FileNotFoundException
liste les composants qui sont dans le projet

Throws:
java.io.IOException
java.io.FileNotFoundException

visualiser

public void visualiser(java.util.Vector<java.lang.String> args)
                throws java.io.IOException
Implémentation de la commande     "vc nomcomposant"
Elle visualise le contenu du composant "nomcomposant" du projet. Si la sortie courante est un fichier de sortie fs, elle écrit le composant dans fs. Notons que si le fichier résultat doit être compilé, alors il faut utiliser la commande "cp" (copier) pour garantir la cohérence entre le nom de fichier et le nom de composant.

Parameters:
args - un vecteur de String qui est la chaîne de mots (la ligne) de la commande d'entrée.
Throws:
java.io.IOException

copier

public void copier(java.util.Vector<java.lang.String> args)
            throws java.io.IOException
Implémentation de la commande     "cp nom1 nom2"
Elle copie le composant "nom1" du projet en créant un composant de nom "nom2" ainsi que son fichier associé (renommé de manière cohérente).
Le composant de nom nom2 ne doit pas exister dans le projet. Il est ajouté dans le projet courant.

Parameters:
args - un vecteur de String qui est la chaîne de mots (la ligne) de la commande d'entrée.
Throws:
java.io.IOException

getchemin

public java.lang.String getchemin(int i)
donne le chemin associé à l'index i


lire_string

public static java.lang.String lire_string()
                                    throws java.io.IOException
lit une chaine de caractère

Throws:
java.io.IOException

constgraphe

public void constgraphe(java.util.Vector<TClause> l,
                        TComposant comp)
Construit le graphe de dependance du projet

Parameters:
l - le vecteur des clauses du composant
comp - le composant (redondance)

dependance

public boolean dependance(java.lang.String nom)
                   throws java.io.IOException
retourne vrai s'il n'y a pas de composant qui depend du composant "nom", ou s'il y a des composants qui dépendent de "nom et que l'utilisateur a confirmé de le supprimer quand même. Utilisé uniquement dans la commande "rc" (remove component).

Parameters:
nom - le nom du composant
Returns:
true si le composant peut être supprime, faux sinon
Throws:
java.io.IOException

dependance_add

public void dependance_add(TComposant comp)
                    throws java.io.IOException
affiche la liste de dependances non résolues

Parameters:
comp - le composant
Throws:
java.io.IOException

subsprim

public void subsprim(java.util.Vector<java.lang.String> args)
              throws tatibouet.bparser.ParseException,
                     tatibouet.bparser.AfterParserException,
                     java.io.FileNotFoundException,
                     java.io.IOException
pour chaque opération du composant, calcule la substitution de l'opération et la substitution primitive équivalente qu'il affiche au terminal.

Parameters:
args - la ligne de la commande d'entrée.
Throws:
tatibouet.bparser.ParseException
tatibouet.bparser.AfterParserException
java.io.FileNotFoundException
java.io.IOException

subsoper

public void subsoper(java.util.Vector<java.lang.String> args)
              throws tatibouet.bparser.ParseException,
                     tatibouet.bparser.AfterParserException,
                     java.io.FileNotFoundException,
                     java.io.IOException
pour chaque opération du composant, calcule la terminaison, la garde et le prédicat avant-après et les affiche au terminal.

Parameters:
args - la ligne de la commande d'entrée.
Throws:
tatibouet.bparser.ParseException
tatibouet.bparser.AfterParserException
java.io.FileNotFoundException
java.io.IOException

subswp

public void subswp(java.util.Vector<java.lang.String> args)
            throws tatibouet.bparser.ParseException,
                   tatibouet.bparser.AfterParserException,
                   java.io.FileNotFoundException,
                   java.io.IOException
Pour chaque opération, cete méthode calcule la plus faible précondition par rapport à l'invariant.

Parameters:
args - la ligne de la commande d'entrée.
Throws:
tatibouet.bparser.ParseException
tatibouet.bparser.AfterParserException
java.io.FileNotFoundException
java.io.IOException

AfficherDependances

public void AfficherDependances(java.util.Vector<java.lang.String> args)
                         throws java.io.IOException
Cette méthode affiche les dépendances

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException

ExportedOperations

public void ExportedOperations(java.util.Vector<java.lang.String> args)
                        throws java.io.IOException
Cette méthode affiche les operations exportees par le composant donné
Auteur: Olivier Bert

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException

CallableOperations

public void CallableOperations(java.util.Vector<java.lang.String> args)
                        throws java.io.IOException
Cette methode affiche la liste des operations appelables pour le composant.
Auteur Olivier Bert

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException

CallableOperations_x

public void CallableOperations_x(java.util.Vector<java.lang.String> args)
                          throws java.io.IOException
Cette methode affiche la liste des operations appelables par le composant. Affichage détaillé.
Auteur Olivier Bert

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException

ExportedOperations_x

public void ExportedOperations_x(java.util.Vector<java.lang.String> args)
                          throws java.io.IOException
Affichage détaillé des opérations exportées.
Auteur: Olivier Bert

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException

VisibleVariables

public void VisibleVariables(java.util.Vector<java.lang.String> args)
                      throws java.io.IOException
Cette méthode affiche la liste des variables visibles
Auteur: Olivier Bert

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException

InclureComposants

public void InclureComposants(java.util.Vector<java.lang.String> args)
                       throws java.io.IOException
Implémentation de la commande    "ic nom1 nom2"
Méthode qui fait l'inclusion de composants.
Si "nom2" est absent, le composant et le fichier résultat sont nommés "nom1_inc", sinon ils sont nommés "nom2".
Par Olivier Bert.

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException

AplatirSansrenommage

public void AplatirSansrenommage(java.util.Vector<java.lang.String> args)
                          throws java.io.IOException
Implémentation de la commande   "fwr nom1 nom2"
Méthode qui fait l'aplatissement sans renommage d'un raffinement.
Si "nom2" est absent, le composant et le fichier résultat sont nommés "nom1_fwr", sinon ils sont nommés "nom2".
Par Didier Bert.

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException

subssimpl

public void subssimpl(java.util.Vector args)
               throws java.io.IOException
Affichage de substitutions simplifiees du composant. Auteur: Olivier BERT

Throws:
java.io.IOException

GenererPO

public void GenererPO(java.util.Vector<java.lang.String> args)
               throws java.io.IOException
Implémentation de la commande    "po nom1 [nom2]"
Méthode expérimentale de génération d'obligation de preuves.

Cette méthode existe à titre expérimental. Elle construit un composant dans lequel les opérations sont remplacées par des assertions correspondant à leur PO. Le composant est ajouté aux composants du projet (comme pour l'inclusion). Le résultat s'appelle "nom2" ou, par défaut, "nom1_po"

RESTRICTIONS: il ne s'agit que de machines avec éventuellement des liens INCLUDES (EXTENDS) et USES, mais pas de liens SEES.
Auteurs: Olivier Bert, Didier Bert

Parameters:
args - la ligne de la commande d'entrée.
Throws:
java.io.IOException


Copyright OB.