1 #@ MODIF sd_resultat SD DATE 22/10/2007 AUTEUR PELLET J.PELLET
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2007 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.
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.
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 # ======================================================================
22 from SD.sd_titre import sd_titre
24 from SD.sd_l_table import sd_l_table
25 from SD.sd_champ import sd_champ
26 from SD.sd_l_charges import sd_l_charges
27 from SD.sd_char_contact import sd_char_contact
29 from SD.sd_util import *
32 class sd_resultat(sd_titre):
33 #---------------------------------------
35 TAVA = AsColl(SDNom(debut=19), acces='NU', stockage='CONTIG', modelong='CONSTANT', type='K', ltyp=8, )
36 NOVA = AsObject(SDNom(debut=19), genr='N', xous='S', type='K', ltyp=16, )
37 TACH = AsColl(SDNom(debut=19), acces='NU', stockage='CONTIG', modelong='CONSTANT', type='K', ltyp=24, )
38 ORDR = AsVI(SDNom(debut=19), )
39 DESC = AsObject(SDNom(debut=19), genr='N', xous='S', type='K', ltyp=16, )
41 # la déclaration suivante simplifie la fonction check_resultat_i_char
42 CHAR = Facultatif(AsVK24(SDNom(debut=19),))
44 sd_l_table = Facultatif(sd_l_table(SDNom(nomj='')))
47 # existence de la SD :
49 return self.ORDR.exists
52 # indirection vers les champs de .TACH :
53 def check_resultat_i_TACH(self, checker):
54 tach = self.TACH.get()
55 for nosym in tach.keys():
56 for nom in tach[nosym] :
57 if not nom.strip(): continue
62 # indirection vers les objets de .TAVA :
63 def check_resultat_i_TAVA(self, checker):
64 tava = self.TAVA.get()
66 for knova in tava.keys():
67 suffix=tava[knova][0][:5]
68 if not suffix.strip(): continue # JP : est-ce possible ?
71 nom=self.nomj()[:19]+suffix
72 sd2 = AsObject(SDNom(nomj=nom,debut=0), xous='S', genr='V', type=Parmi('I','R','C','K'),
73 ltyp=Parmi(4,8,16,24),) ; sd2.check(checker)
76 # indirection vers les sd_l_charges stockées comme paramètres dans l'objet .CHAR :
77 def check_resultat_i_CHAR(self, checker):
78 lnom = self.CHAR.get()
82 if not nom.strip(): continue
85 sd2 = sd_l_charges(nomj=nom); sd2.check(checker)
88 # vérification de .ORDR :
89 def check_ORDR(self, checker):
93 sdu_compare(V, checker, nuti, '> ', 0 , comment='nuti > 0')
94 sdu_compare(V, checker, nuti, '<=', nmax, comment='nuti <= nmax')
96 # les numeros d'ordre doivent etre tous différents :
97 sdu_tous_differents(V,checker,V.get()[:nuti],'1:NUTI')
100 # vérification des longueurs des différents objets :
101 def check_LONGUEURS(self, checker):
102 ordr = self.ORDR.get()
103 tach = self.TACH.get()
104 nova = self.NOVA.get()
105 tava = self.TAVA.get()
106 desc = self.DESC.get()
108 nbmax_ordr=len(ordr) # la SD est concue pour stocker jusqu'à nbmax_ordr nume_ordre
109 nbmax_para=len(nova) # la SD est concue pour stocker jusqu'à nbmax_para paramètres
110 nbmax_nosym=len(desc) # la SD est concue pour stocker jusqu'à nbmax_nosym nom_cham
112 sdu_compare(self.TACH,checker,len(tach),'==',nbmax_nosym,'Incohérence TACH/DESC')
113 sdu_compare(self.TAVA,checker,len(tava),'==',nbmax_para, 'Incohérence TAVA/NOVA')
116 for ksym in tach.keys():
117 nosym=desc[ksym-1].strip()
118 sdu_compare(self.TACH,checker,len(tach[ksym]),'==',nbmax_ordr,nosym+' LONMAX(.TACH) != LONMAX(.ORDR)')
121 # objets trouvés dans .TAVA
122 for knova in tava.keys():
123 sdu_compare(tava,checker,len(tava[knova]),'==',4,'LONMAX(TAVA[ksym]==4')
124 suffix=tava[knova][0][:5]
125 npara=int(tava[knova][2])
126 if not suffix.strip(): continue
127 nom=self.nomj()[:19]+suffix
128 sd2 = AsObject(SDNom(nomj=nom,debut=0), xous='S', genr='V', type=Parmi('I','R','C','K'),
129 ltyp=Parmi(4,8,16,24),)
130 sdu_compare(sd2,checker,len(sd2.get()),'==',npara*nbmax_ordr,'Incohérence LONMAX / LONMAX(.ORDR)')
133 # vérification que les variables d'accès sont bien différentes :
134 def check_ACCES(self, checker):
135 ordr = self.ORDR.get()
136 nova = self.NOVA.get()
137 tava = self.TAVA.get()
139 nbmax_ordr=len(ordr) # la SD est concue pour stocker jusqu'à nbmax_ordr nume_ordre
140 nbuti_ordr=self.ORDR.lonuti # la SD contient réellement nbuti_ordr nume_ordre
143 # objets trouvés dans .TAVA
144 for knova in tava.keys():
146 suffix=tava[knova][0][:5]
147 if not suffix.strip(): continue
149 nupara=int(tava[knova][1])
150 nbpara=int(tava[knova][2])
151 acces=tava[knova][3].strip()
152 assert acces in ('PARA','ACCES') , acces
153 if acces == 'ACCES' :
154 # pour l'instant, on ne vérifie que 'INST' car 'FREQ', 'NUME_MODE', 'NOEUD_CMP' ne semblent pas tous différents ...
155 if nova1.strip() != 'INST' : continue
156 sdu_compare(tava,checker,nupara,'<=',nbpara,'nupara <= nbpara')
158 nom=self.nomj()[:19]+suffix
159 sd2 = AsObject(SDNom(nomj=nom,debut=0),)
162 for k in range(nbuti_ordr) :
163 seq.append(vect[k*nbpara+nupara-1])
165 sdu_tous_differents(sd2,checker,seq,nova1)