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