From: eficas <> Date: Thu, 25 Apr 2002 15:06:36 +0000 (+0000) Subject: F.R: - modifs dans I_MACRO_ETAPE et I_PROC_ETAPE car il faut aussi surcharger X-Git-Tag: CC_param_poursuite~418 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=f4bff65c3c901939546e26b40f36364bb4387ec3;p=modules%2Feficas.git F.R: - modifs dans I_MACRO_ETAPE et I_PROC_ETAPE car il faut aussi surcharger F.R: la méthode Build_sd (sans la modifier mais tout simplement parce F.R: qu'en la mettant dans I_ETAPE on la donne aux autres classes par héritage) F.R: Du coup, il faut ajouter des import dans ces deux fichiers --- diff --git a/Ihm/I_ETAPE.py b/Ihm/I_ETAPE.py index b5665280..7450d2c1 100644 --- a/Ihm/I_ETAPE.py +++ b/Ihm/I_ETAPE.py @@ -4,6 +4,13 @@ import string,types from copy import copy +# import rajoutés suite à l'ajout de Build_sd --> à résorber +import traceback +import Noyau +from Noyau import N_Exception +from Noyau.N_Exception import AsException +# fin import à résorber + # Modules EFICAS import I_MCCOMPO diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index 67ccbddf..b8a307b8 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -7,6 +7,12 @@ import traceback,types,string import I_ETAPE from Noyau.N_ASSD import ASSD +# import rajoutés suite à l'ajout de Build_sd --> à résorber +import Noyau +from Noyau import N_Exception +from Noyau.N_Exception import AsException +# fin import à résorber + class MACRO_ETAPE(I_ETAPE.ETAPE): def __init__(self): @@ -153,3 +159,48 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): # On met g_context à blanc self.g_context={} + def Build_sd(self,nom): + """ + Construit le concept produit de l'opérateur. Deux cas + peuvent se présenter : + + - le parent n'est pas défini. Dans ce cas, l'étape prend en charge + la création et le nommage du concept. + + - le parent est défini. Dans ce cas, l'étape demande au parent la + création et le nommage du concept. + + """ + if not self.isactif():return + try: + # On positionne la macro self en tant que current_step pour que les + # étapes créées lors de l'appel à sd_prod et à op_init aient la macro + # comme parent + self.set_current_step() + if self.parent: + sd= self.parent.create_sdprod(self,nom) + if type(self.definition.op_init) == types.FunctionType: + apply(self.definition.op_init,(self,self.parent.g_context)) + else: + sd=self.get_sd_prod() + if sd != None and self.reuse == None: + # On ne nomme le concept que dans le cas de non reutilisation + # d un concept + sd.nom=nom + self.reset_current_step() + if self.jdc and self.jdc.par_lot == "NON" : + self.Execute() + return sd + except AsException,e: + self.reset_current_step() + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1],e) + except EOFError: + #self.reset_current_step() + raise + except : + self.reset_current_step() + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1]+'\n', + string.join(l)) diff --git a/Ihm/I_PROC_ETAPE.py b/Ihm/I_PROC_ETAPE.py index ddfdabeb..99a7612c 100644 --- a/Ihm/I_PROC_ETAPE.py +++ b/Ihm/I_PROC_ETAPE.py @@ -1,4 +1,13 @@ import I_ETAPE + + +# import rajoutés suite à l'ajout de Build_sd --> à résorber +import traceback,types +import Noyau +from Noyau import N_Exception +from Noyau.N_Exception import AsException +# fin import à résorber + class PROC_ETAPE(I_ETAPE.ETAPE): def get_sdname(self): return "" @@ -24,3 +33,30 @@ class PROC_ETAPE(I_ETAPE.ETAPE): for child in self.mc_liste : child.delete_concept(sd) + def Build_sd(self): + """ + Cette methode applique la fonction op_init au contexte du parent + et lance l'exécution en cas de traitement commande par commande + Elle doit retourner le concept produit qui pour une PROC est toujours None + En cas d'erreur, elle leve une exception : AsException ou EOFError + """ + if not self.isactif():return + try: + if self.parent: + if type(self.definition.op_init) == types.FunctionType: + apply(self.definition.op_init,(self,self.parent.g_context)) + else: + pass + if self.jdc.par_lot == "NON" : + self.Execute() + except AsException,e: + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1],e) + except EOFError: + self.reset_current_step() + raise + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1]+'\n', + string.join(l))