Salome HOME
94ae32ec6e1d2404edcf179f130743bc9676d04b
[tools/eficas.git] / Extensions / jdc_include.py
1 #            CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
8 #
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
13 #
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
17 #
18 #
19 # ======================================================================
20
21 """
22    Ce module contient la classe JDC_INCLUDE qui sert a inclure
23    dans un jeu de commandes une partie de jeu de commandes
24    au moyen de la fonctionnalite INCLUDE ou INCLUDE_MATERIAU
25    Quand l'utilisateur veut inclure un fichier il faut versifier
26    que le jeu de commandes inclus est valide et compatible
27    avec le contexte avant et apres l'insertion
28 """
29 from Accas import JDC,ASSD,AsException,JDC_CATA
30
31
32 class JDC_POURSUITE(JDC):
33    def __init__(self,definition=None,procedure=None,cata=None,
34                      cata_ord_dico=None,parent=None,
35                      nom='SansNom',appli=None,context_ini=None,
36                      jdc_pere=None,etape_include=None,prefix_include=None,
37                      recorded_units=None,old_recorded_units=None,**args):
38
39       JDC.__init__(self, definition=definition,
40                          procedure=procedure,
41                          cata=cata,
42                          cata_ord_dico=cata_ord_dico,
43                          parent=parent,
44                          nom=nom,
45                          appli=appli,
46                          context_ini=context_ini,
47                          **args
48                          )
49       self.jdc_pere=jdc_pere
50       self.etape_include=etape_include
51       self.prefix_include=prefix_include
52       if recorded_units is not None:self.recorded_units=recorded_units
53       if old_recorded_units is not None:self.old_recorded_units=old_recorded_units
54
55    def NommerSdprod(self,sd,sdnom,restrict='non'):
56       """
57           Nomme la SD apres avoir verifie que le nommage est possible : nom
58           non utilise
59           Ajoute un prefixe s'il est specifie (INCLUDE_MATERIAU)
60           Si le nom est deja utilise, leve une exception
61           Met le concept créé dans le concept global g_context
62       """
63       if self.prefix_include:
64           if sdnom != self.prefix_include:sdnom=self.prefix_include+sdnom
65       o=self.sds_dict.get(sdnom,None)
66       if isinstance(o,ASSD):
67          raise AsException("Nom de concept deja defini : %s" % sdnom)
68
69       # Il faut verifier en plus que le jdc_pere apres l'etape etape_include
70       # ne contient pas deja un concept de ce nom
71       #if self.jdc_pere.get_sd_apres_etape(sdnom,etape=self.etape_include):
72          # Il existe un concept apres self => impossible d'inserer
73       #   raise AsException("Nom de concept deja defini : %s" % sdnom)
74
75       # ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja.
76       # Ajoute a la creation (appel de reg_sd).
77       self.sds_dict[sdnom]=sd
78       sd.nom=sdnom
79
80       # En plus si restrict vaut 'non', on insere le concept dans le contexte du JDC
81       if restrict == 'non':
82          self.g_context[sdnom]=sd
83
84 class JDC_INCLUDE(JDC_POURSUITE):
85    def active_etapes(self):
86       for e in self.etapes:
87          e.active()
88
89 class JDC_CATA_INCLUDE(JDC_CATA):
90    class_instance=JDC_INCLUDE
91
92 class JDC_CATA_POURSUITE(JDC_CATA):
93    class_instance=JDC_POURSUITE
94
95 from Accas import AU_MOINS_UN,A_CLASSER
96
97 JdC_include=JDC_CATA_INCLUDE(code='ASTER', execmodul=None)
98
99 JdC_poursuite=JDC_CATA_POURSUITE(code='ASTER', execmodul=None,
100                                  regles = (AU_MOINS_UN('DEBUT','POURSUITE'),
101                                            AU_MOINS_UN('FIN'),
102                                            A_CLASSER(('DEBUT','POURSUITE'),'FIN')
103                                           )
104                                )
105
106