Salome HOME
bug
[tools/eficas.git] / Noyau / N_OBJECT.py
1 # coding=utf-8
2 # Copyright (C) 2007-2017   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 getEtape(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.getEtape()
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 getVal(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
76     def getJdcRoot(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.getJdcRoot()
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     def isBLOC(self):
104         """
105             Indique si l'objet est un BLOC
106             surcharge dans MCBLOC
107         """
108         return 0
109
110     def longueurDsArbre(self):
111       return 1
112
113
114 class ErrorObj(OBJECT):
115
116     """Classe pour objets errones : emule le comportement d'un objet tel mcsimp ou mcfact
117     """
118
119     def __init__(self, definition, valeur, parent, nom="err"):
120         self.nom = nom
121         self.definition = definition
122         self.valeur = valeur
123         self.parent = parent
124         self.mcListe = []
125         if parent:
126             self.jdc = self.parent.jdc
127             # self.niveau = self.parent.niveau
128             # self.etape = self.parent.etape
129         else:
130             # Pas de parent
131             self.jdc = None
132             # self.niveau = None
133             # self.etape = None
134
135     def isValid(self, cr='non'):
136         return 0
137
138     def report(self):
139         """ génère le rapport de validation de self """
140         self.cr = CR()
141         self.cr.debut = u"Mot-clé invalide : " + self.nom
142         self.cr.fin = u"Fin Mot-clé invalide : " + self.nom
143         self.cr.fatal(_(u"Type non autorisé pour le mot-clé %s : '%s'"),
144                       self.nom, self.valeur)
145         return self.cr
146
147