Salome HOME
CCAR: ajout des fichiers macros
[tools/eficas.git] / Validation / V_JDC.py
1 # -*- coding: utf-8 -*-
2 #@ MODIF V_JDC Validation  DATE 26/09/2003   AUTEUR DURAND C.DURAND 
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    Ce module contient la classe mixin JDC qui porte les méthodes
24    nécessaires pour réaliser la validation d'un objet de type JDC
25    dérivé de OBJECT.
26
27    Une classe mixin porte principalement des traitements et est
28    utilisée par héritage multiple pour composer les traitements.
29 """
30 # Modules Python
31 import string,types
32
33 # Modules EFICAS
34 import V_MCCOMPO
35 from Noyau.N_Exception import AsException
36 from Noyau.N_utils import AsType
37
38 class JDC(V_MCCOMPO.MCCOMPO):
39    """
40    """
41
42    def report(self):
43       """ 
44           Methode pour generation d un rapport de validite
45       """
46       self.cr.purge()
47       self.cr.debut="DEBUT CR validation : "+self.nom
48       self.cr.fin="FIN CR validation :"+self.nom
49       for e in self.etapes :
50         if e.isactif():
51           self.cr.add(e.report())
52       self.state = 'modified'
53       self.isvalid(cr='oui')
54       return self.cr
55
56    def isvalid(self,cr='non'):
57       """
58         Méthode booléenne qui retourne 0 si le JDC est invalide, 1 sinon
59       """
60       # FR : on prend en compte l'état du JDC ('unchanged','modified','undetermined')
61       # afin d'accélérer le test de validité du JDC 
62       if self.state == 'unchanged':
63         return self.valid
64       else:
65         valid = 1
66         texte,test = self.verif_regles()
67         if test == 0:
68           if cr == 'oui': self.cr.fatal(string.strip(texte))
69           valid = 0
70         if valid :
71           for e in self.etapes:
72             if not e.isactif() : continue
73             if not e.isvalid():
74               valid = 0
75               break
76         self.state="unchanged"
77         self.valid = valid
78         return self.valid
79
80    def verif_regles(self):
81       """ 
82          Effectue la vérification de validité des règles du jeu de commandes 
83       """
84       l_noms_etapes=self.get_l_noms_etapes()
85       texte_global = ''
86       test_global = 1
87       for regle in self.regles :
88         texte,test = regle.verif(l_noms_etapes)
89         texte_global = texte_global + texte
90         test_global = test_global*test
91       return texte_global,test_global
92
93    def get_l_noms_etapes(self):
94       """ 
95           Retourne la liste des noms des étapes de self 
96       """
97       l=[]
98       for etape in self.etapes:
99         l.append(etape.nom)
100       return l
101