Salome HOME
646d8fca977a57e9fd9b4aa311d08def6352e84a
[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 __future__ import absolute_import
26 try :
27    from builtins import object
28 except :
29    pass 
30 from .N_CR import CR
31
32
33 class OBJECT(object):
34
35     """
36        Classe OBJECT : cette classe est virtuelle et sert de classe mère
37        aux classes de type ETAPE et MOCLES.
38        Elle ne peut etre instanciée.
39        Une sous classe doit obligatoirement implémenter les méthodes :
40
41        - __init__
42
43     """
44
45     def get_etape(self):
46         """
47            Retourne l'étape à laquelle appartient self
48            Un objet de la catégorie etape doit retourner self pour indiquer que
49            l'étape a été trouvée
50            XXX double emploi avec self.etape ???
51         """
52         if self.parent == None:
53             return None
54         return self.parent.get_etape()
55
56     def supprime(self):
57         """
58            Méthode qui supprime les références arrières suffisantes pour
59            que l'objet puisse etre correctement détruit par le
60            garbage collector
61         """
62         self.parent = None
63         self.etape = None
64         self.jdc = None
65         self.niveau = None
66
67     def get_val(self):
68         """
69             Retourne la valeur de l'objet. Cette méthode fournit
70             une valeur par defaut. Elle doit etre dérivée pour chaque
71             type d'objet
72         """
73         return self
74
75     def isBLOC(self):
76         """
77             Indique si l'objet est un BLOC
78         """
79         return 0
80
81     def get_jdc_root(self):
82         """
83             Cette méthode doit retourner l'objet racine c'est à dire celui qui
84             n'a pas de parent
85         """
86         if self.parent:
87             return self.parent.get_jdc_root()
88         else:
89             return self
90
91     def GETVAL(self, val):
92         """
93             Retourne la valeur effective du mot-clé en fonction
94             de la valeur donnée. Defaut si val == None
95         """
96         if (val is None and hasattr(self.definition, 'defaut')):
97             return self.definition.defaut
98         else:
99             return val
100
101     def reparent(self, parent):
102         """
103            Cette methode sert a reinitialiser la parente de l'objet
104         """
105         self.parent = parent
106         self.jdc = parent.jdc
107
108
109 class ErrorObj(OBJECT):
110
111     """Classe pour objets errones : emule le comportement d'un objet tel mcsimp ou mcfact
112     """
113
114     def __init__(self, definition, valeur, parent, nom="err"):
115         self.nom = nom
116         self.definition = definition
117         self.valeur = valeur
118         self.parent = parent
119         self.mc_liste = []
120         if parent:
121             self.jdc = self.parent.jdc
122             # self.niveau = self.parent.niveau
123             # self.etape = self.parent.etape
124         else:
125             # Pas de parent
126             self.jdc = None
127             # self.niveau = None
128             # self.etape = None
129
130     def isvalid(self, cr='non'):
131         return 0
132
133     def report(self):
134         """ génère le rapport de validation de self """
135         self.cr = CR()
136         self.cr.debut = u"Mot-clé invalide : " + self.nom
137         self.cr.fin = u"Fin Mot-clé invalide : " + self.nom
138         self.cr.fatal(_(u"Type non autorisé pour le mot-clé %s : '%s'"),
139                       self.nom, self.valeur)
140         return self.cr