]> SALOME platform Git repositories - tools/eficas.git/blob - Extensions/commande_comm.py
Salome HOME
ajout du replace_concept
[tools/eficas.git] / Extensions / commande_comm.py
1 #            CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
8 #
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
13 #
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
17 #
18 #
19 # ======================================================================
20 import os,traceback,string
21
22 from Noyau.N_CR import CR
23 from Noyau.N_Exception import AsException
24
25 class COMMANDE_COMM:
26     """
27     Cette classe sert à définir les objets de type Commande commentarisée
28     """
29     nature = "COMMANDE_COMMENTARISEE"
30     idracine='_comm'
31     
32     def __init__(self,texte='',parent=None,reg='oui'):
33         self.valeur = texte
34         if not parent :
35             self.jdc = self.parent = CONTEXT.get_current_step()
36         else:
37             self.jdc = self.parent = parent
38         if hasattr(self.parent,'etape'):
39           self.etape = self.parent.etape
40         else :
41           self.etape = None
42         self.definition=self
43         self.nom = ''
44         self.niveau = self.parent.niveau
45         self.actif=1
46         self.state="unchanged"
47         #self.appel = N_utils.callee_where(niveau=2)
48         if reg=='oui' : self.register()
49             
50     def isvalid(self):
51         return 1
52
53     def report(self):
54         """
55         Génère l'objet rapport (classe CR)
56         """
57         self.cr=CR()
58         if not self.isvalid(): self.cr.warn("Objet commande commentarisé invalide")
59         return self.cr
60
61     def copy(self):
62         """
63         Retourne une copie de self cad un objet COMMANDE_COMM
64         """
65         # XXX self.texte ne semble pas exister ???
66         return COMMANDE_COMM(self.texte,parent = self.parent,reg='non')
67
68     def init_modif(self):
69         self.state = 'modified'
70         self.parent.init_modif()    
71
72     def set_valeur(self,new_valeur):
73         """
74         Remplace la valeur de self(si elle existe) par new_valeur)
75         """
76         self.valeur = new_valeur
77         self.init_modif()
78
79     def get_valeur(self) :
80         """
81         Retourne la valeur de self, cad le texte de la commande commentarisée
82         """
83         return self.valeur
84
85     def register(self):
86         """
87         Enregistre la commande commenatrisée dans la liste des étapes de son parent lorsque celui-ci
88         est un JDC
89         """
90         self.parent.register(self)
91
92     def isoblig(self):
93         """
94         Indique si self est obligatoire ou non : retourne toujours 0
95         """
96         return 0
97
98     def ident(self):
99         """
100         Retourne le nom interne associé à self
101         Ce nom n'est jamais vu par l'utilisateur dans EFICAS
102         """
103         return self.nom
104
105     def isrepetable(self):
106         """
107         Indique si self est répétable ou non : retourne toujours 1
108         """
109         return 1        
110
111     def get_attribut(self,nom_attribut) :
112         """
113         Retourne l'attribut de nom nom_attribut de self (ou hérité)
114         """
115         if hasattr(self,nom_attribut) :
116           return getattr(self,nom_attribut)
117         else :
118           return None
119
120     def get_fr(self):
121         """
122         Retourne l'attribut fr de self.definition
123         """
124         try :
125           return getattr(self.definition,'fr')
126         except:
127           return ''
128
129     def liste_mc_presents(self):
130         return []
131
132     def supprime(self):
133         """ 
134         Méthode qui supprime toutes les boucles de références afin que l'objet puisse
135         être correctement détruit par le garbage collector 
136         """
137         self.parent = None
138         self.etape = None
139         self.jdc = None
140         self.niveau = None
141         self.definition = None
142         self.valeur = None
143         self.val = None
144         self.appel = None
145
146     def supprime_sdprods(self):
147         pass
148
149     def update_context(self,d):
150         """
151         Update le dictionnaire d avec les concepts ou objets produits par self
152         --> ne fait rien pour une commande en  commentaire
153         """
154         pass
155
156     def delete_concept(self,sd):
157         pass
158
159     def replace_concept (self,old_sd,sd):
160         pass
161
162     def get_sdprods(self,nom_sd):
163         return None
164
165     def uncomment(self):
166         """
167         Cette méthode a pour but de décommentariser l'objet courant,
168         cad de retourner un tuple contenant :
169           - l'objet CMD associé
170           - le nom de la sdprod éventuellement produite (sinon None)
171         """
172         # on récupère le contexte avant la commande commentarisée
173         context_ini = self.jdc.get_contexte_avant(self)
174         try:
175             # on essaie de créer un objet JDC...
176             CONTEXT.unset_current_step()
177             J=self.jdc.__class__(procedure=self.valeur,
178                                  definition=self.jdc.definition,
179                                  cata=self.jdc.cata,
180                                  cata_ord_dico=self.jdc.cata_ordonne_dico,
181                                  context_ini = context_ini,
182                                 )
183             J.analyse()
184         except Exception,e:
185             traceback.print_exc()
186             #self.jdc.set_context()
187             raise AsException("Erreur",str(e))
188         if len(J.cr.crfatal)>0 :
189             # des erreurs fatales ont été rencontrées
190             #self.jdc.set_context()
191             print 'erreurs fatales !!!'
192             raise AsException("Erreurs fatales",string.join(J.cr.crfatal))
193         #self.jdc.set_context()
194         new_etape = J.etapes[0]
195         if new_etape.sd :
196             nom_sd = new_etape.sd.nom
197         else:
198             nom_sd = None
199         return (new_etape.copy(),nom_sd)
200
201     def active(self):
202         """
203         Rend l'etape courante active
204         """
205         self.actif = 1
206
207     def inactive(self):
208         """
209         Rend l'etape courante inactive
210         """
211         self.actif = 0
212
213     def isactif(self):
214         """
215         Booléenne qui retourne 1 si self est valide, 0 sinon
216         """
217         return self.actif
218     
219     def verif_condition_bloc(self):
220       """
221           Evalue les conditions de tous les blocs fils possibles
222           (en fonction du catalogue donc de la définition) de self et
223           retourne deux listes :
224             - la première contient les noms des blocs à rajouter
225             - la seconde contient les noms des blocs à supprimer
226       """
227       return [],[]
228
229     def verif_condition_regles(self,liste_presents):
230       """
231           Retourne la liste des mots-clés à rajouter pour satisfaire les règles
232           en fonction de la liste des mots-clés présents
233       """
234       return []
235
236     def reparent(self,parent):
237       """
238           Cette methode sert a reinitialiser la parente de l'objet
239       """
240       self.parent=parent
241       self.jdc=parent.get_jdc_root()
242       self.etape=self
243
244     def verif_existence_sd(self):
245       """
246          Vérifie que les structures de données utilisées dans self existent bien dans le contexte
247          avant étape, sinon enlève la référence à ces concepts
248          --> sans objet pour les commandes commentarisées
249       """
250       pass
251         
252     def control_sdprods(self,d):
253       """sans objet pour les commandes commentarisées"""
254       pass