]> SALOME platform Git repositories - tools/eficas.git/blob - Validation/V_JDC.py
Salome HOME
35a84b48f0aec9f13254e6ed6988160313b8019d
[tools/eficas.git] / Validation / V_JDC.py
1 #@ MODIF V_JDC Validation  DATE 07/09/2009   AUTEUR COURTOIS M.COURTOIS 
2 # -*- coding: iso-8859-1 -*-
3 # RESPONSABLE COURTOIS M.COURTOIS
4 #            CONFIGURATION MANAGEMENT OF EDF VERSION
5 # ======================================================================
6 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
7 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
8 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
9 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
10 # (AT YOUR OPTION) ANY LATER VERSION.                                 
11 #
12 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
13 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
14 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
15 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
16 #
17 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
18 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
19 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
20 #                                                                       
21 #                                                                       
22 # ======================================================================
23
24
25 """
26    Ce module contient la classe mixin JDC qui porte les méthodes
27    nécessaires pour réaliser la validation d'un objet de type JDC
28    dérivé de OBJECT.
29
30    Une classe mixin porte principalement des traitements et est
31    utilisée par héritage multiple pour composer les traitements.
32 """
33 # Modules Python
34 import string,types
35
36 # Modules EFICAS
37 import V_MCCOMPO
38 from Noyau.N_Exception import AsException
39 from Noyau.N_utils import AsType
40
41 class JDC(V_MCCOMPO.MCCOMPO):
42    """
43    """
44
45    def report(self):
46       """ 
47           Methode pour generation d un rapport de validite
48       """
49       self.cr.purge()
50       self.cr.debut="DEBUT CR validation : "+self.nom
51       self.cr.fin="FIN CR validation :"+self.nom
52       for e in self.etapes :
53         if e.isactif():
54           self.cr.add(e.report())
55       self.state = 'modified'
56       self.isvalid(cr='oui')
57       return self.cr
58
59    def isvalid(self,cr='non'):
60       """
61         Méthode booléenne qui retourne 0 si le JDC est invalide, 1 sinon
62       """
63       # FR : on prend en compte l'état du JDC ('unchanged','modified','undetermined')
64       # afin d'accélérer le test de validité du JDC 
65       if self.state == 'unchanged':
66         return self.valid
67       else:
68         valid = 1
69         texte,test = self.verif_regles()
70         if test == 0:
71           if cr == 'oui': self.cr.fatal(string.strip(texte))
72           valid = 0
73         if valid :
74           for e in self.etapes:
75             if not e.isactif() : continue
76             if not e.isvalid():
77               valid = 0
78               break
79         self.state="unchanged"
80         self.valid = valid
81         return self.valid
82
83    def verif_regles(self):
84       """ 
85          Effectue la vérification de validité des règles du jeu de commandes 
86       """
87       l_noms_etapes=self.get_l_noms_etapes()
88       texte_global = ''
89       test_global = 1
90       for regle in self.regles :
91         texte,test = regle.verif(l_noms_etapes)
92         texte_global = texte_global + texte
93         test_global = test_global*test
94       return texte_global,test_global
95
96    def get_l_noms_etapes(self):
97       """ 
98           Retourne la liste des noms des étapes de self 
99       """
100       l=[]
101       for etape in self.etapes:
102         l.append(etape.nom)
103       return l
104