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