]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
partage Eric
authorpascale.noyret <pascale.noyret@edf.fr>
Thu, 8 Oct 2020 15:46:05 +0000 (17:46 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Thu, 8 Oct 2020 15:46:05 +0000 (17:46 +0200)
Efi2Xsd/AccasXsd.py
InterfaceQT4/readercata.py

index 7973942d011d3cb8a94e9504f34d01db98dd54a3..e3c5f81e0c92cbf2e9a68694a8acc843ca63f994 100755 (executable)
@@ -131,7 +131,7 @@ class X_definition:
        else :
           cata.dictTypesXSD[nom].append(self)
 
-   def definitNomDuTypePyxb(self,debug=False):
+   def definitNomDuTypePyxb(self,forceACreer=False,debug=False):
 
        if debug : print ('definitNomDuTypePyxb', self, self.nom,self.nomComplet())
        if hasattr(self,'nomDuTypePyxb') : self.aCreer = False; return self.nomDuTypePyxb
@@ -148,23 +148,24 @@ class X_definition:
           self.nomDuTypePyxb=nom
           return nom
 
-       self.aCreer = False
        if nom == 'T_Consigne' : return nom
        
-       listePossible=cata.dictTypesXSD[nom]
-       indice=0
-       while (indice < len(listePossible)) :
-          objAComparer=listePossible[indice]
-          if self.compare(objAComparer) : 
-             self.nomDuTypePyxb=objAComparer.nomDuTypePyxb
-             if debug : print ('definitNomDuTypePyxb',  self.nom , 'type identique', objAComparer.nomDuTypePyxb )
+       if not forceACreer :
+          self.aCreer = False
+          listePossible=cata.dictTypesXSD[nom]
+          indice=0
+          while (indice < len(listePossible)) :
+             objAComparer=listePossible[indice]
+             if self.compare(objAComparer) : 
+                self.nomDuTypePyxb=objAComparer.nomDuTypePyxb
+                if debug : print ('definitNomDuTypePyxb',  self.nom , 'type identique', objAComparer.nomDuTypePyxb )
              # c est nul pour la comparaison mais cela permet d etre ok dans le dictionnaire passe a Accas
-             cata.dictTypesXSD[nom].append(self)
-             if self.label != 'SIMP' :
-                 if objAComparer not in list(cata.dictTypesXSDJumeaux.keys()) : cata.dictTypesXSDJumeaux[objAComparer]=[self,]
-                 else : cata.dictTypesXSDJumeaux[objAComparer].append(self)
-             return objAComparer.nomDuTypePyxb
-          indice += 1
+                cata.dictTypesXSD[nom].append(self)
+                if self.label != 'SIMP' :
+                    if objAComparer not in list(cata.dictTypesXSDJumeaux.keys()) : cata.dictTypesXSDJumeaux[objAComparer]=[self,]
+                    else : cata.dictTypesXSDJumeaux[objAComparer].append(self)
+                return objAComparer.nomDuTypePyxb
+             indice += 1
        self.aCreer = True
        cata.dictTypesXSD[nom].append(self)
        nomAlter='T_'+self.nom+'_'+str(indice)
@@ -179,7 +180,6 @@ class X_compoFactoriseAmbigu(X_definition):
 # ----------------------------------------
 
    def __init__(self,nom,listeDeCreation,pere):
-       #print ('__ X_compoFactoriseAmbigu', listeDeCreation)
        #for (i,index) in listeDeCreation : print i.nom
        self.label='BlocAmbigu'
        self.nom=nom
@@ -188,7 +188,6 @@ class X_compoFactoriseAmbigu(X_definition):
        self.entites={}
        self.mcXSD=[]
        self.ordre_mc=[]
-       self.mcDejaDumpe=set()
        for mc in listeDeCreation : 
            self.mcXSD.append(mc)
            self.ordre_mc.append(mc.nom)
@@ -310,7 +309,7 @@ class X_compoFactoriseAmbigu(X_definition):
        print ('dans nomComplet pourquoi ?',self, self.nom)
 
        
-   def factoriseEtCreeDump(self, laListe, indent=2 ,nomAppel=None, debug=True):
+   def factoriseEtCreeDump(self, laListe, indent=2 ,nomAppel=None, debug=False):
        if debug : print ('_______________________________ factoriseEtCreeDump')
        if debug : print(self.nom, laListe, indent, nomAppel)
        maListeRetour=[]
@@ -379,12 +378,11 @@ class X_compoFactoriseAmbigu(X_definition):
        return (maListeRetour)
        
        
-   def ajouteAuxTextes(self,nomMC,indent) :
-       #if nomMC =='FactE' : 
-       #   import traceback
-       #   traceback.print_stack()
-       #print ('ajouteAuxTextes', nomMC, self.nom, self.entites)
-       if nomMC =='B' :print ('ajouteAuxTextes', nomMC, self.nom)
+   def ajouteAuxTextes(self,nomMC,indent,debug=False) :
+       if nomMC=='N1' and self.nom == 'bloc_une_bloc_deux' : debug=True
+       if debug : print ('ajouteAuxTextes', nomMC, self.nom, self.entites[nomMC])
+       #if debug : 
+       #   traceback.print_stack() 
        #for i in self.entites.keys() : print (self.entites[i][0].nom)
        if (indent  > 3) : indent = indent - 3 
        else : indent = 0
@@ -464,7 +462,7 @@ class X_compoFactoriseAmbigu(X_definition):
 class X_definitionComposee (X_definition):
 # ------------------------------------------
    
-   def CreeTexteComplexeVenantDesFils(self,dansFactorisation=False):
+   def creeTexteComplexeVenantDesFils(self,dansFactorisation=False):
        texteComplexeVenantDesFils=""
        blocsDejaDumpes=set()
        #for nom in self.ordre_mc:
@@ -487,14 +485,16 @@ class X_definitionComposee (X_definition):
              if mcFils.aCreer : texteComplexeVenantDesFils += mcFils.texteComplexe
        return texteComplexeVenantDesFils
 
-   def dumpXsd(self, dansFactorisation=False, multiple = False, first=False):
+   def dumpXsd(self, dansFactorisation=False, multiple = False, first=True):
        #print ('_________ dumpXsd___________', self.nom)
        if PourTraduction  : print (self.nom)
        # le prepareDump est appele sur les fils 
        if not (self.dejaPrepareDump) : self.prepareDumpXSD()
  
        self.getNomDuCodeDumpe()
-       self.nomDuTypePyxb  = self.definitNomDuTypePyxb()
+       if first : 
+          if multiple : self.nomDuTypePyxb  = self.definitNomDuTypePyxb(forceACreer)
+          else        : self.nomDuTypePyxb  = self.definitNomDuTypePyxb()
        self.texteSimple    = "" # on n ajoute pas de type simple
 
        self.traduitMinMax()
@@ -505,7 +505,7 @@ class X_definitionComposee (X_definition):
           if isinstance(self,X_OPER) or isinstance(self,X_PROC) : 
             self.texteComplexe += debutTypeCompoEtape.format(self.code)
           self.texteComplexe += debutTypeCompoSeq
-          texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils(dansFactorisation)
+          texteComplexeVenantDesFils=self.creeTexteComplexeVenantDesFils(dansFactorisation)
           self.texteComplexe  = texteComplexeVenantDesFils + self.texteComplexe
           # la fin de l oper est traitee dans le dumpXSD de X_OPER
           if not isinstance(self,X_OPER ) : self.texteComplexe += finTypeCompoSeq
@@ -706,7 +706,7 @@ class X_BLOC (X_definitionComposee):
        # Pour les blocs le minOccurs vaut 0 et le max 1
        if self.aCreer :
           self.texteComplexe = debutTypeSubst.format(self.nomDuTypePyxb)
-          texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils(dansFactorisation)
+          texteComplexeVenantDesFils=self.creeTexteComplexeVenantDesFils(dansFactorisation)
           self.texteComplexe  = texteComplexeVenantDesFils + self.texteComplexe
           self.texteComplexe += finTypeSubst
           
@@ -754,6 +754,7 @@ class X_SIMP (X_definition):
    def dumpXsd(self, dansFactorisation=False, multiple = False, first=False):
        #if PourTraduction  : print (self.nom)
        self.prepareDumpXSD()
+       # si inUnion la comparaison est fausse : on cree le nomDuType
        if multiple : self.inUnion=True
        #print ('exploreObjet SIMP')
        self.getNomDuCodeDumpe()
@@ -765,17 +766,14 @@ class X_SIMP (X_definition):
 
        #  --> homonymie on peut utiliser genealogie ?
        self.nomDuTypeDeBase = self.traduitType()
-       #if not multiple : 
-       #   self.nomDuTypePyxb   = self.definitNomDuTypePyxb()
-          #if first : self.aCreer = True
-       #elif first :
-       #else :
-       #  self.nomDuTypePyxb   = self.definitNomDuTypePyxb()
-          #self.aCreer = True
-       #else : print ('multiple and not first', self.aCreer)
-       self.definitNomDuTypePyxb()
+       if not multiple : 
+          self.nomDuTypePyxb   = self.definitNomDuTypePyxb()
+       else :
+          if first : 
+             # on force la creation
+             self.nomDuTypePyxb   = self.definitNomDuTypePyxb()
+             self.aCreer = True
 
-    
        
        # on se sert des listes ou non pour  la gestion des minOccurs /maxOccurs est > 0
        if self.statut =='f' : minOccurs = 0
@@ -845,10 +843,8 @@ class X_SIMP (X_definition):
 
    def prepareDumpXSD(self):
        self.inUnion=False
-       if self.statut   ==  'f' :
-          self.arbrePossibles = (self.nom,[])
-       else :
-          self.arbrePossibles = (self.nom,)
+       if self.statut   ==  'f' : self.arbrePossibles = (self.nom,[])
+       else                     : self.arbrePossibles = (self.nom,)
        self.mcXSD=[]
 
 
@@ -1087,33 +1083,24 @@ class X_JDC_CATA :
                  if definition.label  == 'BLOC' or  definition.label == 'BlocAmbigu':continue
                  if definition.nomDuTypePyxb == 'T_'+definition.nom : continue
                  listeATraiter=[definition.geneaCompleteSousFormeDeListe(),]
-                 print (1,listeATraiter)
                  while listeATraiter != [] :
                      listeGenea=listeATraiter[0]
                      listeATraiter=listeATraiter[1:]
-                     print (2,listeATraiter)
                      txtNomComplet=''
                      indexMC=0
                      for MC in listeGenea:
-                         #print (MC.nom)
-                         #print (listeGenea)
-                         #for e in listeGenea : print (e.nom)
                          txtNomComplet=txtNomComplet+'_'+MC.nom
                          if MC in list(cata.dictTypesXSDJumeaux.keys()) :
-                            print ("aCrrer", indexMC)
+                            #print ("aCrrer", indexMC)
                             for MCJumeau in cata.dictTypesXSDJumeaux[MC]:
                                 # attention nvlleGenalogie n a pas de sens en Accas
                                 nvlleGenalogie=listeGenea[:indexMC]+MCJumeau.geneaCompleteSousFormeDeListe()
                                 listeATraiter.append(nvlleGenalogie)
                          indexMC=indexMC+1
-                     print (3,listeATraiter)
-                     print ('1',txtNomComplet)
-                     print ('11',definition.nomComplet())
                      dico[k][txtNomComplet]=definition.nomDuTypePyxb
              if dico[k]== {} : del dico[k]
-        #dico = {}
         import pprint
-        pprint.pprint(dico)
+        #pprint.pprint(dico)
         if dico != {} : self.texteXSD += texteAnnotation.format(str(dico))
   
         #import pprint
index cf2670556fe1c65d48f72ad450d8e1635d24ffb1..2a705dd2d00a87eb39919fa1ac35719cb2b0db5f 100644 (file)
@@ -226,6 +226,7 @@ class ReaderCata (ReaderCataCommun):
              self.QWParent.informe('environnement', 'please source pyxb environment')
              exit()
            try : 
+           if 1 :
              nomCataXsd = os.path.splitext(os.path.basename(self.fichierCata))[0]
              fichierCataTrunc=os.path.splitext(os.path.basename(self.fichierCata))[0]  
              nomCataXsd = fichierCataTrunc+'_driver' 
@@ -233,7 +234,10 @@ class ReaderCata (ReaderCataCommun):
              import imp
              modeleMetier= imp.load_source(nomCataXsd,pathCata)
              #print ('nomCataXsd , pathCata ',nomCataXsd,pathCata)
-             texte=modeleMetier.PNEFdico.__doc__
+             try : 
+               texte=modeleMetier.PNEFdico.__doc__
+             except : 
+               texte=None
              if texte != None and texte != "":
                 l={}
                 texte='dicoEltDif = '+ texte
@@ -241,6 +245,7 @@ class ReaderCata (ReaderCataCommun):
                 dicoEltDif=l['dicoEltDif']
              
            except :
+           #else :
              if self.appliEficas.ssIhm == False :print ('______________ poum import cata_genere ')
              self.QWParent.informe('XSD driver', 'unable to load xsd driver',critique=False)
              modeleMetier = None