Salome HOME
sauvegarde doc
[tools/eficas.git] / Noyau / N_OBJECT.py
1 # coding=utf-8
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     Ce module contient la classe OBJECT classe mère de tous les objets
23     servant à controler les valeurs par rapport aux définitions
24 """
25 from N_CR import CR
26 from strfunc import ufmt
27
28
29 class OBJECT:
30
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:
49             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
105 class ErrorObj(OBJECT):
106
107     """Classe pour objets errones : emule le comportement d'un objet tel mcsimp ou mcfact
108     """
109
110     def __init__(self, definition, valeur, parent, nom="err"):
111         self.nom = nom
112         self.definition = definition
113         self.valeur = valeur
114         self.parent = parent
115         self.mc_liste = []
116         if parent:
117             self.jdc = self.parent.jdc
118             # self.niveau = self.parent.niveau
119             # self.etape = self.parent.etape
120         else:
121             # Pas de parent
122             self.jdc = None
123             # self.niveau = None
124             # self.etape = None
125
126     def isvalid(self, cr='non'):
127         return 0
128
129     def report(self):
130         """ génère le rapport de validation de self """
131         self.cr = CR()
132         self.cr.debut = u"Mot-clé invalide : " + self.nom
133         self.cr.fin = u"Fin Mot-clé invalide : " + self.nom
134         self.cr.fatal(_(u"Type non autorisé pour le mot-clé %s : '%s'"),
135                       self.nom, self.valeur)
136         return self.cr