-#@ MODIF N_JDC Noyau DATE 23/10/2002 AUTEUR DURAND C.DURAND
+#@ MODIF N_JDC Noyau DATE 05/09/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
#
#
# ======================================================================
+
+
"""
Ce module contient la classe JDC qui sert à interpréter un jeu de commandes
"""
self.condition_context={}
self.index_etape_courante=0
self.UserError="UserError"
+ self.alea = None
def compile(self):
"""
"""
try:
if self.appli != None :
- self.appli.affiche_infos('Compilation du fichier de commandes \
- en cours ...')
+ self.appli.affiche_infos('Compilation du fichier de commandes en cours ...')
self.proc_compile=compile(self.procedure,self.nom,'exec')
except SyntaxError,e:
if CONTEXT.debug : traceback.print_exc()
if isinstance(sd,ASSD):self.sds_dict[sdnom]=sd
if self.appli != None :
- self.appli.affiche_infos('Interprétation du fichier de \
- commandes en cours ...')
+ self.appli.affiche_infos('Interprétation du fichier de commandes en cours ...')
# On sauve le contexte pour garder la memoire des constantes
# En mode edition (EFICAS) ou lors des verifications le contexte
# est recalculé
# de commandes avant la fin
# Fonctionnement normal, ne doit pas etre considere comme une erreur
CONTEXT.unset_current_step()
+ self.affiche_fin_exec()
+ self.traiter_fin_exec('commande')
except AsException,e:
# une erreur a ete identifiee
except self.UserError,exc_val:
self.traiter_user_exception(exc_val)
CONTEXT.unset_current_step()
+ self.traiter_fin_exec('commande')
except :
# erreur inattendue
del exc_typ,exc_val,exc_fr
CONTEXT.unset_current_step()
+ def affiche_fin_exec(self):
+ """
+ Cette methode realise l'affichage final des statistiques de temps
+ apres l'execution de toutes
+ les commandes en mode commande par commande ou par lot
+ Elle doit etre surchargee pour en introduire un
+ """
+ return
+
+ def traiter_fin_exec(self,mode,etape=None):
+ """
+ Cette methode realise un traitement final apres l'execution de toutes
+ les commandes en mode commande par commande ou par lot
+ Par defaut il n'y a pas de traitement. Elle doit etre surchargee
+ pour en introduire un
+ """
+ print "FIN D'EXECUTION",mode,etape
+
def traiter_user_exception(self,exc_val):
"""Cette methode realise un traitement sur les exceptions utilisateur
Par defaut il n'y a pas de traitement. La méthode doit etre
"""
if self.appli :
# Si le JDC est relié à une application maitre, on délègue la recherche
- file= self.appli.get_file(unite,fic_origine)
+ file,text= self.appli.get_file(unite,fic_origine)
else:
file = None
if unite != None:
" a l unite %s" % unite)
if not os.path.exists(file):
raise AsException("%s n'est pas un fichier existant" % unite)
- fproc=open(file,'r')
- text=string.replace(fproc.read(),'\r\n','\n')
- fproc.close()
+ fproc=open(file,'r')
+ text=fproc.read()
+ fproc.close()
+ if file == None : return None,None
+ text=string.replace(text,'\r\n','\n')
linecache.cache[file]=0,0,string.split(text,'\n'),file
return file,text
if index_etape >= self.index_etape_courante:
# On calcule le contexte en partant du contexte existant
d=self.current_context
+ if self.index_etape_courante==0 and self.context_ini:
+ d.update(self.context_ini)
liste_etapes=self.etapes[self.index_etape_courante:index_etape]
else:
d=self.current_context={}
+ if self.context_ini:d.update(self.context_ini)
liste_etapes=self.etapes
for e in liste_etapes:
def get_global_contexte(self):
return self.g_context.copy()
+
+ def get_cmd(self,nomcmd):
+ """
+ Méthode pour recuperer la definition d'une commande
+ donnee par son nom dans les catalogues declares
+ au niveau du jdc
+ """
+ for cata in self.cata:
+ if hasattr(cata,nomcmd):
+ return getattr(cata,nomcmd)
+