Salome HOME
c8fc3c1ab6b22b142f42a603f4797ba81e12b816
[tools/eficas.git] / Noyau / N_OBJECT.py
1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21
22 """
23     Ce module contient la classe OBJECT classe mère de tous les objets
24     servant à controler les valeurs par rapport aux définitions
25 """
26 from N_CR import CR
27 from strfunc import ufmt
28
29 class OBJECT:
30    """
31       Classe OBJECT : cette classe est virtuelle et sert de classe mère
32       aux classes de type ETAPE et MOCLES.
33       Elle ne peut etre instanciée.
34       Une sous classe doit obligatoirement implémenter les méthodes :
35
36       - __init__
37
38    """
39
40    def get_etape(self):
41       """
42          Retourne l'étape à laquelle appartient self
43          Un objet de la catégorie etape doit retourner self pour indiquer que
44          l'étape a été trouvée
45          XXX double emploi avec self.etape ???
46       """
47       if self.parent == None: return None
48       return self.parent.get_etape()
49
50    def supprime(self):
51       """
52          Méthode qui supprime les références arrières suffisantes pour
53          que l'objet puisse etre correctement détruit par le
54          garbage collector
55       """
56       self.parent = None
57       self.etape = None
58       self.jdc = None
59       self.niveau = None
60
61    def get_val(self):
62       """
63           Retourne la valeur de l'objet. Cette méthode fournit
64           une valeur par defaut. Elle doit etre dérivée pour chaque
65           type d'objet
66       """
67       return self
68
69    def isBLOC(self):
70       """
71           Indique si l'objet est un BLOC
72       """
73       return 0
74
75    def get_jdc_root(self):
76       """
77           Cette méthode doit retourner l'objet racine c'est à dire celui qui
78           n'a pas de parent
79       """
80       if self.parent:
81          return self.parent.get_jdc_root()
82       else:
83          return self
84
85    def GETVAL(self,val):
86       """
87           Retourne la valeur effective du mot-clé en fonction
88           de la valeur donnée. Defaut si val == None
89       """
90       if (val is None and hasattr(self.definition,'defaut')) :
91         return self.definition.defaut
92       else:
93         return val
94
95    def reparent(self,parent):
96       """
97          Cette methode sert a reinitialiser la parente de l'objet
98       """
99       self.parent=parent
100       self.jdc=parent.jdc
101
102 class ErrorObj(OBJECT):
103     """Classe pour objets errones : emule le comportement d'un objet tel mcsimp ou mcfact
104     """
105     def __init__(self,definition,valeur,parent,nom="err"):
106         self.nom=nom
107         self.definition=definition
108         self.valeur=valeur
109         self.parent=parent
110         self.mc_liste=[]
111         if parent :
112             self.jdc = self.parent.jdc
113             #self.niveau = self.parent.niveau
114             #self.etape = self.parent.etape
115         else:
116             # Pas de parent
117             self.jdc = None
118             #self.niveau = None
119             #self.etape = None
120     def isvalid(self,cr='non'):
121         return 0
122
123     def report(self):
124       """ génère le rapport de validation de self """
125       self.cr=CR()
126       self.cr.debut = u"Mot-clé invalide : "+self.nom
127       self.cr.fin = u"Fin Mot-clé invalide : "+self.nom
128       self.cr.fatal(_(u"Type non autorisé pour le mot-clé %s : '%s'"),
129                         self.nom, self.valeur)
130       return self.cr
131