]> SALOME platform Git repositories - tools/eficas.git/blob - Validation/V_A_CLASSER.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Validation / V_A_CLASSER.py
1 #@ MODIF V_A_CLASSER Validation  DATE 13/10/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 class A_CLASSER:
26    """
27       La règle A_CLASSER vérifie que ...
28
29    """
30    def __init__(self,*args):
31       if len(args) > 2 :
32         print "Erreur à la création de la règle A_CLASSER(",args,")"
33         return
34       self.args=args
35       if type(args[0]) == tuple:
36         self.args0 = args[0]
37       elif type(args[0]) == str:
38         self.args0 = (args[0],)
39       else :
40         print "Le premier argument de :",args," doit etre un tuple ou une string"
41       if type(args[1]) == tuple:
42         self.args1 = args[1]
43       elif type(args[1]) == str:
44         self.args1 = (args[1],)
45       else :
46         print "Le deuxième argument de :",args," doit etre un tuple ou une string"
47       # création de la liste des mcs
48       liste = []
49       liste.extend(self.args0)
50       liste.extend(self.args1)
51       self.mcs = liste
52       self.init_couples_permis()
53
54    def init_couples_permis(self):
55       """ Crée la liste des couples permis parmi les self.args, càd pour chaque élément
56           de self.args0 crée tous les couples possibles avec un élément de self.args1"""
57       liste = []
58       for arg0 in self.args0:
59         for arg1 in self.args1:
60           liste.append((arg0,arg1))
61       self.liste_couples = liste
62
63    def verif(self,args):
64       """
65
66           args peut etre un dictionnaire ou une liste. Les éléments de args
67           sont soit les éléments de la liste soit les clés du dictionnaire.
68       """
69       # création de la liste des couples présents dans le fichier de commandes
70       l_couples = []
71       couple = []
72       text = ''
73       test = 1
74       for nom in args:
75         if nom in self.mcs :
76           couple.append(nom)
77           if len(couple) == 2 :
78             l_couples.append(tuple(couple))
79             couple = [nom,]
80       if len(couple) > 0 :
81         l_couples.append(tuple(couple))
82       # l_couples peut etre vide si l'on n'a pas réussi à trouver au moins un
83       # élément de self.mcs
84       if len(l_couples) == 0 :
85         message = "- Il faut qu'au moins un objet de la liste : "+`self.args0`+\
86                   " soit suivi d'au moins un objet de la liste : "+`self.args1`
87         return message,0
88       # A ce stade, on a trouvé des couples : il faut vérifier qu'ils sont
89       # tous licites
90       num = 0
91       for couple in l_couples :
92         num = num+1
93         if len(couple) == 1 :
94           # on a un 'faux' couple
95           if couple[0] not in self.args1:
96             text = text+"- L'objet : "+couple[0]+" doit etre suivi d'un objet de la liste : "+\
97                    `self.args1`+'\n'
98             test = 0
99           else :
100             if num > 1 :
101               # ce n'est pas le seul couple --> licite
102               break
103             else :
104               text = text+"- L'objet : "+couple[0]+" doit etre précédé d'un objet de la liste : "+\
105                    `self.args0`+'\n'
106               test = 0
107         elif couple not in self.liste_couples :
108           text = text+"- L'objet : "+couple[0]+" ne peut etre suivi de : "+couple[1]+'\n'
109           test = 0
110       return text,test
111