]> SALOME platform Git repositories - tools/eficas.git/blob - Noyau/N_JDC_CATA.py
Salome HOME
94082773f68fbb3b7d6db506c5d1ae7ba81d2e23
[tools/eficas.git] / Noyau / N_JDC_CATA.py
1 #@ MODIF N_JDC_CATA Noyau  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 de definition JDC_CATA
27     qui permet de spécifier les caractéristiques d'un JDC
28 """
29
30 import types,string,traceback
31
32 import N_ENTITE
33 import N_JDC
34
35 class JDC_CATA(N_ENTITE.ENTITE):
36    """
37     Classe pour definir un jeu de commandes
38
39     Attributs de classe :
40
41     - class_instance qui indique la classe qui devra etre utilisée 
42             pour créer l'objet qui servira à controler la conformité 
43             du jeu de commandes avec sa définition
44
45     - label qui indique la nature de l'objet de définition (ici, JDC)
46
47    """
48    class_instance = N_JDC.JDC
49    label = 'JDC'
50
51    def __init__(self,code='',execmodul=None,regles=(),niveaux=(),**args):
52       """
53       """
54       self.code = code
55       self.execmodul=execmodul
56       if type(regles)== types.TupleType:
57         self.regles = regles
58       else:
59         self.regles=(regles,)
60       # Tous les arguments supplémentaires sont stockés dans l'attribut args
61       # et seront passés au JDC pour initialiser ses paramètres propres
62       self.args=args
63       self.d_niveaux={}
64       self.l_niveaux=niveaux
65       self.commandes=[]
66       for niveau in niveaux:
67          self.d_niveaux[niveau.nom]=niveau
68       # On change d'objet catalogue. Il faut d'abord mettre le catalogue 
69       # courant à None
70       CONTEXT.unset_current_cata()
71       CONTEXT.set_current_cata(self)
72
73    def __call__(self,procedure=None,cata=None,cata_ord_dico=None,
74                      nom='SansNom',parent=None,**args):
75       """
76           Construit l'objet JDC a partir de sa definition (self),
77       """
78       return self.class_instance(definition=self,procedure=procedure,
79                          cata=cata,cata_ord_dico=cata_ord_dico,
80                          nom=nom,
81                          parent=parent,
82                          **args
83                          )
84
85    def enregistre(self,commande):
86       """
87          Methode qui permet aux definitions de commandes de s'enregistrer aupres
88          d'un JDC_CATA
89       """
90       self.commandes.append(commande)
91
92    def verif_cata(self):
93       """
94           Méthode de vérification des attributs de définition
95       """
96       if type(self.regles) != types.TupleType :
97         self.cr.fatal("L'attribut 'regles' doit etre un tuple : %s" %`self.regles`)
98       self.verif_cata_regles()
99
100    def verif_cata_regles(self):
101       """
102          Cette méthode vérifie pour tous les objets stockés dans la liste entités
103          respectent les REGLES associés  à self
104       """
105       # A FAIRE
106
107    def report(self):
108       """
109          Methode pour produire un compte-rendu de validation d'un catalogue de commandes
110       """
111       self.cr = self.CR(debut = "Compte-rendu de validation du catalogue "+self.code,
112                          fin = "Fin Compte-rendu de validation du catalogue "+self.code)
113       self.verif_cata()
114       for commande in self.commandes:
115         cr = commande.report()
116         cr.debut = "Début Commande :"+commande.nom
117         cr.fin = "Fin commande :"+commande.nom
118         self.cr.add(cr)
119       return self.cr
120
121    def supprime(self):
122       """
123           Méthode pour supprimer les références arrières susceptibles de provoquer
124           des cycles de références
125       """
126       for commande in self.commandes:
127          commande.supprime()
128
129    def get_niveau(self,nom_niveau):
130       """
131            Retourne l'objet de type NIVEAU de nom nom_niveau
132            ou None s'il n'existe pas
133       """
134       return self.d_niveaux.get(nom_niveau,None)
135
136
137