]> SALOME platform Git repositories - tools/eficas.git/blob - Noyau/N_OBJECT.py
Salome HOME
*** empty log message ***
[tools/eficas.git] / Noyau / N_OBJECT.py
1 #@ MODIF N_OBJECT Noyau  DATE 07/09/2009   AUTEUR COURTOIS M.COURTOIS 
2 # -*- coding: iso-8859-1 -*-
3 # RESPONSABLE COURTOIS M.COURTOIS
4 #            CONFIGURATION MANAGEMENT OF EDF VERSION
5 # ======================================================================
6 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
7 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
8 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
9 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
10 # (AT YOUR OPTION) ANY LATER VERSION.                                 
11 #
12 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
13 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
14 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
15 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
16 #
17 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
18 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
19 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
20 #                                                                       
21 #                                                                       
22 # ======================================================================
23
24
25 """ 
26     Ce module contient la classe OBJECT classe mère de tous les objets
27     servant à controler les valeurs par rapport aux définitions
28 """
29 from N_CR import CR
30
31 class OBJECT:
32    """
33       Classe OBJECT : cette classe est virtuelle et sert de classe mère
34       aux classes de type ETAPE et MOCLES.
35       Elle ne peut etre instanciée.
36       Une sous classe doit obligatoirement implémenter les méthodes :
37
38       - __init__
39
40    """
41
42    def get_etape(self):
43       """
44          Retourne l'étape à laquelle appartient self
45          Un objet de la catégorie etape doit retourner self pour indiquer que
46          l'étape a été trouvée
47          XXX double emploi avec self.etape ???
48       """
49       if self.parent == None: return None
50       return self.parent.get_etape()
51
52    def supprime(self):
53       """ 
54          Méthode qui supprime les références arrières suffisantes pour
55          que l'objet puisse etre correctement détruit par le 
56          garbage collector
57       """
58       self.parent = None
59       self.etape = None
60       self.jdc = None
61       self.niveau = None
62
63    def get_val(self):
64       """
65           Retourne la valeur de l'objet. Cette méthode fournit
66           une valeur par defaut. Elle doit etre dérivée pour chaque 
67           type d'objet
68       """
69       return self
70
71    def isBLOC(self):
72       """
73           Indique si l'objet est un BLOC
74       """
75       return 0
76
77    def get_jdc_root(self):
78       """
79           Cette méthode doit retourner l'objet racine c'est à dire celui qui
80           n'a pas de parent
81       """
82       if self.parent:
83          return self.parent.get_jdc_root()
84       else:
85          return self
86
87    def GETVAL(self,val):
88       """
89           Retourne la valeur effective du mot-clé en fonction
90           de la valeur donnée. Defaut si val == None
91       """
92       if (val is None and hasattr(self.definition,'defaut')) :
93         return self.definition.defaut
94       else:
95         return val
96
97    def reparent(self,parent):
98       """
99          Cette methode sert a reinitialiser la parente de l'objet
100       """
101       self.parent=parent
102       self.jdc=parent.jdc
103
104 class ErrorObj(OBJECT):
105     """Classe pour objets errones : emule le comportement d'un objet tel mcsimp ou mcfact
106     """
107     def __init__(self,definition,valeur,parent,nom="err"):
108         self.nom=nom
109         self.definition=definition
110         self.valeur=valeur
111         self.parent=parent
112         self.mc_liste=[]
113         if parent :
114             self.jdc = self.parent.jdc
115             #self.niveau = self.parent.niveau
116             #self.etape = self.parent.etape
117         else:
118             # Pas de parent
119             self.jdc = None
120             #self.niveau = None
121             #self.etape = None
122     def isvalid(self,cr='non'):
123         return 0
124
125     def report(self):
126       """ génère le rapport de validation de self """
127       self.cr=CR()
128       self.cr.debut = "Mot-clé invalide : "+self.nom
129       self.cr.fin = "Fin Mot-clé invalide : "+self.nom
130       self.cr.fatal("Type non autorisé pour le mot-clé %s : '%s'" % (self.nom,self.valeur))
131       return self.cr
132