Salome HOME
chgt Copyrigth
[tools/eficas.git] / Noyau / N_OBJECT.py
1 ## coding=utf-8
2 # Copyright (C) 2007-2021   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
68     def getVal(self):
69         """
70             Retourne la valeur de l'objet. Cette méthode fournit
71             une valeur par defaut. Elle doit etre dérivée pour chaque
72             type d'objet
73         """
74         return self
75
76
77     def getJdcRoot(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.getJdcRoot()
84         else:
85             return self
86
87     def getValeurEffective(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     def isBLOC(self):
105         """
106             Indique si l'objet est un BLOC
107             surcharge dans MCBLOC
108         """
109         return 0
110
111     def longueurDsArbre(self):
112       return 1
113
114
115
116 class ErrorObj(OBJECT):
117
118     """Classe pour objets errones : emule le comportement d'un objet tel mcsimp ou mcfact
119     """
120
121     def __init__(self, definition, valeur, parent, nom="err"):
122         self.nom = nom
123         self.definition = definition
124         self.valeur = valeur
125         self.parent = parent
126         self.mcListe = []
127         if parent:
128             self.jdc = self.parent.jdc
129             # self.niveau = self.parent.niveau
130             # self.etape = self.parent.etape
131         else:
132             # Pas de parent
133             self.jdc = None
134             # self.niveau = None
135             # self.etape = None
136
137     def isValid(self, cr='non'):
138         return 0
139
140     def report(self):
141         """ génère le rapport de validation de self """
142         self.cr = CR()
143         self.cr.debut = u"Mot-clé invalide : " + self.nom
144         self.cr.fin = u"Fin Mot-clé invalide : " + self.nom
145         self.cr.fatal(_(u"Type non autorisé pour le mot-clé %s : '%s'"),
146                       self.nom, self.valeur)
147         return self.cr
148
149