]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
les doublons dans le XSD
authorpascale.noyret <pascale.noyret@edf.fr>
Wed, 26 May 2021 14:54:29 +0000 (16:54 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Wed, 26 May 2021 14:54:29 +0000 (16:54 +0200)
Efi2Xsd/AccasXsd.py

index ffb51f1108b245fe3cb7a7dbf68f5f46d3a77225..9e01fc6707ca27c7753dcd782abc7e9b2432b007 100755 (executable)
@@ -137,7 +137,9 @@ class X_definition:
             cata.dictTypesXSD[nom].append(self)
 
     def definitNomDuTypePyxb(self,forceACreer=False,debug=False):
-        if debug : print ('definitNomDuTypePyxb', self, self.nom,self.nomComplet())
+        #if self.nom == 'SubgridScaleModel' : debug=True
+        #print ('definitNomDuTypePyxb', self, self.nom,self.nomComplet(),forceACreer)
+        #PNPN
         if hasattr(self,'nomDuTypePyxb') : self.aCreer = False; return self.nomDuTypePyxb
         #debug=False
         if debug : print ('definitNomDuTypePyxb traitement pour ',  self.nom)
@@ -186,17 +188,16 @@ class X_compoFactoriseAmbigu(X_definition):
 # ----------------------------------------
 
     def __init__(self,nom,listeDeCreation,pere, debug=False):
-        #if nom == 'blocFormatFichierMed_blocFormatFichierAll' : debug = True
-        #   import traceback
-        #   traceback.print_stack()
+
         if debug :
-            for (i) in listeDeCreation : print (i.nom)
+            for i in listeDeCreation : print (i.nom)
         self.label='BlocAmbigu'
         self.nom=nom
         self.pere=pere
         self.statut='f'
         self.entites={}
         self.mcXSD=[]
+        self.typesXSDDejaDumpes=[]
         self.ordre_mc=[]
         self.lesConditions = 'Possible Conditions : '
         for mc in listeDeCreation :
@@ -209,6 +210,7 @@ class X_compoFactoriseAmbigu(X_definition):
         self.construitEntites(self.mcXSD)
         self.constructionArbrePossibles()
         lesPossibles=deepcopy(self.arbrePossibles)
+        if debug : print ('lesPossibles ', lesPossibles)
 
         self.getNomDuCodeDumpe()
         self.nomDuTypePyxb = self.definitNomDuTypePyxb()
@@ -401,11 +403,10 @@ class X_compoFactoriseAmbigu(X_definition):
 
 
     def ajouteAuxTextes(self,nomMC,indent,debug=False) :
-        if debug : print ('ajouteAuxTextes', nomMC, self.nom, self.entites[nomMC])
-        debug=False
-        #if debug :
-        #   traceback.print_stack()
-        #for i in self.entites.keys() : print (self.entites[i][0].nom)
+        if debug : 
+           print ('______________________________________________________')
+           print ('ajouteAuxTextes', nomMC, self.nom)
+        #  for i in self.entites.keys() : print (self.entites[i][0].nom)
         if (indent  > 3) : indent = indent - 3
 
         # PN change le 17 fevrier . Est-ce normal  d arriver la ?
@@ -415,7 +416,7 @@ class X_compoFactoriseAmbigu(X_definition):
             nomMC=nomMC[0]
 
         if nomMC == 'Consigne' or nomMC == 'blocConsigne' : return
-        if debug : print (nomMC, 'dans ajoute aux textes', self.entites )
+        if debug : print (nomMC, 'dans ajoute vraiment aux textes', self.entites )
         if len(self.entites[nomMC]) == 1:
             mc=self.entites[nomMC][0]
             mc.dumpXsd(dansFactorisation=True)
@@ -455,7 +456,6 @@ class X_compoFactoriseAmbigu(X_definition):
             return
 
         # on ajoute le nom de l element
-        # PN : attention on dumpe 2 fois
         if not (isinstance(self.entites[nomMC][0], Accas.SIMP)) :
             sontTousDisjoint=True
             index=1
@@ -478,9 +478,18 @@ class X_compoFactoriseAmbigu(X_definition):
             if debug : print ('self.texteComplexe' , self.texteComplexe)
             if debug : print ('self.texteSimple' , self.texteSimple)
             if debug : print ('self.texteElt' , self.texteElt)
+            if debug : print ('________________________')
             return
         
-        self.entites[nomMC][0].dumpXsd(dansFactorisation=True,multiple=True,first=first)
+       
+        if hasattr(self.entites[nomMC][0], 'dejaDumpe') : # on a deja cree le type
+            if debug : print (self.entites[nomMC][0].nomDuTypePyxb, ' deja dumpe')
+        else :
+            if debug : print ('appel de dumpXsd')
+            self.entites[nomMC][0].dejaDumpe=True
+            self.entites[nomMC][0].dumpXsd(dansFactorisation=True,multiple=True,first=first)
+            if debug : print (self.entites[nomMC][0].nomDuTypePyxb)
+
         texteDocUnion='\n'
         i=1
         for mc in self.entites[nomMC]:
@@ -492,20 +501,15 @@ class X_compoFactoriseAmbigu(X_definition):
             texteDocUnion = texteDocUnion[0:-4]
             debutTexteEltUnion = self.entites[nomMC][0].texteElt.split('maxOccurs=')[0]
             self.texteComplexe += '\t'*(indent)+ reconstitueUnion.format(debutTexteEltUnion,texteDocUnion)
+        if self.entites[nomMC][0].nomDuTypePyxb in self.typesXSDDejaDumpes : return
+        self.typesXSDDejaDumpes.append(self.entites[nomMC][0].nomDuTypePyxb)
+        if debug : print ('et la j ajoute les definitions de type', self.entites[nomMC][0].nomDuTypePyxb)
+
         nomTypePyxbUnion=self.entites[nomMC][0].nomDuTypePyxb
-        texteSimpleUnion=debutSimpleType.format(nomTypePyxbUnion)
-        texteSimpleUnion+=debutUnion
-        #if len(listePourUnion) == 1 :
-        #PN  29 septembre 20. Est ce que ce if a un sens
-        # si len(listePourUnion==1) on est deja sorti non ?
-        #    mc=self.entites[nomMC][0]
-        #    mc.dumpXsd(dansFactorisation=True,multiple=True,first=first)
-            # inutile - deja fait plus haut
-        #    if mc.aCreer : self.texteComplexeVenantDesFils += mc.texteComplexe
-        #    if mc.aCreer : self.texteSimple   += mc.texteSimple
-        #else :
+        texteSimpleUnion = debutSimpleType.format(nomTypePyxbUnion)
+        texteSimpleUnion += debutUnion
         texteSimpleUnion += '\t'*(indent)+self.entites[nomMC][0].texteSimplePart2
-        texteSimplePart1= self.entites[nomMC][0].texteSimplePart1
+        texteSimplePart1  = self.entites[nomMC][0].texteSimplePart1
         for e in listePourUnion[1:] :
             e.dumpXsd(dansFactorisation=True,multiple=True,first=False)
             # si on ext un mc simple la ligne suivante est inutile
@@ -515,8 +519,12 @@ class X_compoFactoriseAmbigu(X_definition):
             texteSimpleUnion += '\t'*(indent) + e.texteSimplePart2
             texteSimplePart1 += e.texteSimplePart1
         texteSimpleUnion += finUnion
-        texteSimpleUnion+=fermeSimpleType
-        self.texteSimple   += texteSimplePart1 + texteSimpleUnion
+        texteSimpleUnion +=fermeSimpleType
+        self.texteSimple += texteSimplePart1 + texteSimpleUnion
+        if debug : 
+           print ('______________')
+           print (self.texteSimple)
+           print ('______________')
         #print ('self.texteSimple', self.texteSimple)
 
     def fusionneDsUnChoix(self, nomMC,indent, debug=False):
@@ -563,7 +571,7 @@ class X_compoFactoriseAmbigu(X_definition):
         self.texteDuFact += texteComplexe 
         self.texteDuFact += finChoiceDsBloc
         self.texteDuFact += finTypeCompo
-        self.texteSimple   += texteSimple
+        self.texteSimple += texteSimple
         self.texteComplexeVenantDesFils   += texteComplexeVenantDesFils
         self.texteComplexeVenantDesFils   += self.texteDuFact 
         self.texteComplexe += self.texteElt 
@@ -993,9 +1001,9 @@ class X_SIMP (X_definition):
             cata = CONTEXT.getCurrentCata()
             if len(self.type) == 2 and self.type[1]=='createObject' : suffixe = 'C'
             else : suffixe = 'U' 
-            print (cata.listeUserASSDDumpes)
-            print (typeATraduire.__name__)
-            print (typeATraduire.__name__ in cata.listeUserASSDDumpes)
+            #print (cata.listeUserASSDDumpes)
+            #print (typeATraduire.__name__)
+            #print (typeATraduire.__name__ in cata.listeUserASSDDumpes)
             if typeATraduire.__name__  not in cata.listeUserASSDDumpes :
                 cata.listeUserASSDDumpes.add(typeATraduire.__name__)
                 if issubclass(typeATraduire, Accas.UserASSDMultiple) :