]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
pb sur la fusion de fact de meme nom dans des blocs freres --> radial_meshing
authorPASCALE NOYRET <pascale.noyret@edf.fr>
Thu, 3 Mar 2022 17:15:53 +0000 (18:15 +0100)
committerEric Fayolle <eric.fayolle@edf.fr>
Fri, 8 Apr 2022 08:44:07 +0000 (10:44 +0200)
Efi2Xsd/AccasXsd.py
Efi2Xsd/ajoutBalise.py [deleted file]
Efi2Xsd/balisesXSD.py

index 36cbda21fb624089c3a524baee84af1054e0837d..92ed8d763353f0878f736adc5ca9fd3350288d12 100755 (executable)
@@ -137,8 +137,7 @@ class X_definition:
             cata.dictTypesXSD[nom].append(self)
 
     def definitNomDuTypePyxb(self,forceACreer=False,debug=False):
-        #if self.nom == 'SubgridScaleModel' : debug=True
-        #print ('definitNomDuTypePyxb', self, self.nom,self.nomComplet(),forceACreer)
+        if debug : print ('definitNomDuTypePyxb', self, self.nom,self.nomComplet(),forceACreer)
         #PNPN
         if hasattr(self,'nomDuTypePyxb') : self.aCreer = False; return self.nomDuTypePyxb
         #debug=False
@@ -155,9 +154,11 @@ class X_definition:
 
         if nom == 'T_Consigne' : return nom
 
+        if debug : print ('forceACreer : ', forceACreer)
         if not forceACreer :
             self.aCreer = False
             listePossible=cata.dictTypesXSD[nom]
+            if debug : print ('listePossible : ', listePossible)
             indice=0
             while (indice < len(listePossible)) :
                 objAComparer=listePossible[indice]
@@ -187,7 +188,7 @@ class X_definition:
 class X_compoFactoriseAmbigu(X_definition):
 # ----------------------------------------
 
-    def __init__(self,nom,listeDeCreation,pere, debug=True):
+    def __init__(self,nom,listeDeCreation,pere, debug=False):
 
         if debug :
             for i in listeDeCreation : print (i.nom)
@@ -214,7 +215,7 @@ class X_compoFactoriseAmbigu(X_definition):
 
         self.getNomDuCodeDumpe()
         self.nomDuTypePyxb = self.definitNomDuTypePyxb()
-        if debug : print (self.nomDuTypePyxb)
+        if debug : print ('CompoAmbigu : ' ,self.nomDuTypePyxb)
         self.texteSimple = ''
         self.texteComplexeVenantDesFils = ''
         self.texteComplexe = debutTypeSubstDsBlocFactorise.format(self.nomDuTypePyxb)
@@ -228,6 +229,7 @@ class X_compoFactoriseAmbigu(X_definition):
         self.texteComplexe +=self.texteComplexeVenantDesFils
         #print ('fin pour prepareDumpXSD pour', self.nom)
 
+      
     def compare(self,autreMC):
         if self.label != autreMC.label : return False
         #PN : le bug est la
@@ -330,7 +332,6 @@ class X_compoFactoriseAmbigu(X_definition):
 
 
     def factoriseEtCreeDump(self, laListe, indent=2 ,nomAppel=None, debug=False):
-        if debug : print ('_______________________________ factoriseEtCreeDump')
         if debug : print(self.nom, laListe, indent, nomAppel)
         maListeRetour=[]
         aReduire={}
@@ -376,7 +377,7 @@ class X_compoFactoriseAmbigu(X_definition):
 
         if debug : print ('creeSequence', creeSequence, aReduire)
         for nomMC in aReduire.keys():
-            if debug : print (nomMC)
+            if debug : print ('---------- boucle for', nomMC)
             listeSuivante=aReduire[nomMC]
             if creeChoice and  listeSuivante != [[]] :
                 self.texteComplexe += '\t'*(indent) +  debSequenceDsBloc; indent=indent+1
@@ -417,6 +418,7 @@ class X_compoFactoriseAmbigu(X_definition):
 
         if nomMC == 'Consigne' or nomMC == 'blocConsigne' : return
         if debug : print (nomMC, 'dans ajoute vraiment aux textes', self.entites )
+        if debug : print (self.entites[nomMC])
         if len(self.entites[nomMC]) == 1:
             mc=self.entites[nomMC][0]
             mc.dumpXsd(dansFactorisation=True)
@@ -445,6 +447,7 @@ class X_compoFactoriseAmbigu(X_definition):
                 if not (mc.compare(autre)) :  nvlListeATraiter.append(autre)
             resteATraiter=copy(nvlListeATraiter)
 
+        if debug : print ('listePourUnion : ', listePourUnion)
         if len(listePourUnion) == 1:
             mc=listePourUnion[0]
             mc.dumpXsd(dansFactorisation=True,multiple=False,first=first)
@@ -528,7 +531,7 @@ class X_compoFactoriseAmbigu(X_definition):
         #print ('self.texteSimple', self.texteSimple)
 
     def fusionneDsUnChoix(self, nomMC,indent, debug=False):
-        if debug : print ('_________________________________', self.nom, self, nomMC,indent)
+        if debug : print ('______fusionneDsUnChoix ', self.nom, self, nomMC,indent)
         if debug : print (self.texteComplexe)
         texteDocUnion='\n'
         texteComplexe=''
@@ -542,6 +545,8 @@ class X_compoFactoriseAmbigu(X_definition):
         leNomDuTypePyxb  = mcRef.definitNomDuTypePyxb(forceACreer=True)
         if debug : print ('nomMC', nomMC)
         i=0
+
+        cata = CONTEXT.getCurrentCata()
         for mc in self.entites[nomMC]:
             if debug : print ('------------', mc)
             # on laisse dansFactorisation a False car ce n est pas comme une fusion de bloc 
@@ -549,6 +554,7 @@ class X_compoFactoriseAmbigu(X_definition):
             mc.texteSimple = ''
             mc.texteElt = ''
             mc.dumpXsd(dansFactorisationDeFusion=True)
+            mc.nomDuTypePyxb=leNomDuTypePyxb
             if debug : print ('texteSimple\n', mc.texteSimple, '\n fin\n')
             if debug : print ('texteComplexeVenantDesFils\n',mc.texteComplexeVenantDesFils, '\n fin\n')
             if debug : print ('texteComplexe\n', mc.texteComplexe, '\n fin\n')
@@ -558,6 +564,7 @@ class X_compoFactoriseAmbigu(X_definition):
             texteComplexeVenantDesFils += mc.texteComplexeVenantDesFils 
             texteSimple += mc.texteSimple
 
+
         if debug : print ('______________________________')
         if debug : print ('textecomplexeVenantDesFils : \n' ,texteComplexeVenantDesFils )
         if debug : print ('______________________________')
@@ -592,11 +599,10 @@ class X_definitionComposee (X_definition):
         blocsDejaDumpes=set()
         #for nom in self.ordre_mc:
         #  mcFils = self.entites[nom]
-        if debug : print ('creeTexteComplexeVenantDesFils', self.nom)
+        if debug : print ('___________________ creeTexteComplexeVenantDesFils', self.nom)
         if self.nom == 'LeProc' : debug = True
         for mcFils in self.mcXSD :
-            #print (mcFils,mcFils.nom)
-            if mcFils.nom == 'B1_B2' :debug=True 
+            if debug : print (mcFils,mcFils.nom)
             else : debug=False
             if not (isinstance(mcFils, Accas.BLOC)) :
                 mcFils.dumpXsd(dansFactorisation)
@@ -612,7 +618,7 @@ class X_definitionComposee (X_definition):
                 if mcFils.aCreer : texteComplexeVenantDesFils += mcFils.texteComplexe
         return texteComplexeVenantDesFils
 
-    def dumpXsd(self, dansFactorisation=False, dansFactorisationDeFusion = False, multiple = False, first=True, debug=False):
+    def dumpXsd(self, dansFactorisation=False, dansFactorisationDeFusion = False, multiple = False, first=True, debug=False, avecEltAbstrait=True):
         if PourTraduction  : print (self.nom)
         # le prepareDump est appele sur les fils
         if not (self.dejaPrepareDump) : self.prepareDumpXSD()
@@ -629,7 +635,7 @@ class X_definitionComposee (X_definition):
         if debug : print ('dumpXsd', self.nom, self.aCreer)
         if self.aCreer or dansFactorisationDeFusion:
             if not dansFactorisationDeFusion : self.texteComplexe = debutTypeCompo.format(self.nomDuTypePyxb)
-            if isinstance(self,X_OPER) or isinstance(self,X_PROC) :
+            if (isinstance(self,X_OPER) or isinstance(self,X_PROC)) and avecEltAbstrait :
                 self.texteComplexe += debutTypeCompoEtape.format(self.code)
             self.texteComplexe += debutTypeCompoSeq
             texteComplexeVenantDesFils= self.creeTexteComplexeVenantDesFils(dansFactorisation)
@@ -640,7 +646,7 @@ class X_definitionComposee (X_definition):
                self.texteComplexeVenantDesFils  = texteComplexeVenantDesFils 
             # la fin de l oper est traitee dans le dumpXSD de X_OPER
             if not isinstance(self,X_OPER ) : self.texteComplexe += finTypeCompoSeq
-            if isinstance(self,X_PROC)      : self.texteComplexe += finTypeCompoEtape
+            if isinstance(self,X_PROC) and avecEltAbstrait      : self.texteComplexe += finTypeCompoEtape
             if not isinstance(self,X_OPER ) and not dansFactorisationDeFusion: self.texteComplexe += finTypeCompo
         else :
             self.texteComplexe = ""
@@ -808,13 +814,13 @@ class X_FACT (X_definitionComposee):
 # ---------------------------------
 class X_OPER (X_definitionComposee):
 # ---------------------------------
-    def dumpXsd(self, dansFactorisation=False, multiple = False, first=False):
-        X_definitionComposee.dumpXsd(self,dansFactorisation)
+    def dumpXsd(self, dansFactorisation=False, multiple = False, first=False, avecEltAbstrait=True):
+        X_definitionComposee.dumpXsd(self,dansFactorisation,avecEltAbstrait=avecEltAbstrait)
         self.texteComplexe += finTypeCompoSeq
         self.texteComplexe += attributeNameName
         self.texteComplexe += attributeTypeForASSD
         self.texteComplexe += attributeTypeUtilisateurName.format(self.sd_prod.__name__)
-        self.texteComplexe += finTypeCompoEtape
+        if avecEltAbstrait  : self.texteComplexe += finTypeCompoEtape
         self.texteComplexe += finTypeCompo
 
 
@@ -1262,7 +1268,6 @@ class X_JDC_CATA :
     def dumpXsd(self, avecEltAbstrait,  debug = True):
         cata = CONTEXT.getCurrentCata()
         if debug : print ('avecEltAbstrait   -------------------', avecEltAbstrait)
-
         if debug : print ('self.importedBy -------------------', self.importedBy)
         if debug : print ('self.code       -------------------', self.code)
 
@@ -1287,55 +1292,37 @@ class X_JDC_CATA :
         if debug : print ('self.nomDuXsdPere  -------------------', self.nomDuXsdPere)
 
         self.nomDuTypePyxb    = 'T_'+self.nomDuCodeDumpe
-        self.dumpLesCommandes()
 
-        if self.implement == self.code :
-            self.texteCata += eltAbstraitCataPPal.format(self.code)
-            if 0 : pass
-            else  : self.texteCata += eltCataPPal.format(self.code,self.code,self.code)
-        else :
-            self.texteCata += eltAbstraitCataFils.format(self.implement,self.nomDuXsdPere,self.nomDuXsdPere)
-            if 0 : pass
-            else : self.texteCata += eltCataFils.format(self.implement,self.nomDuXsdPere,self.nomDuXsdPere,self.nomDuXsdPere)
-            self.texteInclusion += includeCata.format(self.nomDuXsdPere)
+        if avecEltAbstrait : self.dumpAvecEltAbstraitDesCommandes()
+        else : self.dumpSimpleDesCommandes()
 
+        if avecEltAbstrait :
+            if self.implement == self.code :
+                self.texteCata += eltAbstraitCataPPal.format(self.code)
+                self.texteCata += eltCataPPal.format(self.code,self.code,self.code)
+            else :
+                self.texteCata += eltAbstraitCataFils.format(self.implement,self.nomDuXsdPere,self.nomDuXsdPere)
+                self.texteCata += eltCataFils.format(self.implement,self.nomDuXsdPere,self.nomDuXsdPere,self.nomDuXsdPere)
+                self.texteInclusion += includeCata.format(self.nomDuXsdPere)
+
+            self.texteCata += eltCata.format(self.implement,self.implement,self.implement,self.implement,self.nomDuXsdPere)
+            if self.implement == self.code :
+                self.texteXSD  = texteDebut.format(self.code,self.code,self.code,self.code,self.code,self.code)
+            elif self.nomDuXsdPere ==  self.code :
+                self.texteXSD  = texteDebutNiveau2.format(self.code,self.implement,self.code,self.code,self.code, self.code,self.code,self.code,self.code,self.code)
+            else :
+                self.texteXSD  = texteDebutNiveau3.format(self.code,self.implement,self.code,self.nomDuXsdPere,self.code,self.code,self.code, self.code,self.code,self.code,self.code,self.code)
     
-        self.texteCata += eltCata.format(self.implement,self.implement,self.implement,self.implement,self.nomDuXsdPere)
-        #if self.implement == self.code :
-        #   self.texteCata      += debutTypeCata.format(self.nomDuCodeDumpe)
-        #else :
-        #   self.texteCata      += debutTypeCataExtension.format(self.nomDuCodeDumpe)
-        #   self.texteCata      += debutExtension.format(self.code,self.nomDuCodeDumpe)
-        #   self.texteInclusion += includeCata.format(self.nomDuXsdPere)
-
-
-
-        #for codeHeritant in self.importedBy:
-        #    self.texteCata += eltCodeSpecDsCata.format(codeHeritant)
-        #    self.texteTypeAbstrait += eltAbstrait.format(codeHeritant,codeHeritant,self.code,codeHeritant)
+            if self.texteInclusion != ""   : self.texteXSD += self.texteInclusion
 
-        #if self.implement != "" : self.texteCata = self.texteCata + finExtension + finTypeCompo
-        #else : self.texteCata  += finTypeCata
-
-        #if self.implement != "" :
-        #   self.texteElt=implementeAbstrait.format(self.nomDuCodeDumpe,self.code,self.nomDuTypePyxb,self.code,self.nomDuCodeDumpe)
-        #else :
-        #   self.texteElt  = eltCata.format(self.nomDuCodeDumpe,self.code, self.nomDuTypePyxb)
-
-        if self.implement == self.code :
-            self.texteXSD  = texteDebut.format(self.code,self.code,self.code,self.code,self.code,self.code)
-        elif self.nomDuXsdPere ==  self.code :
-            self.texteXSD  = texteDebutNiveau2.format(self.code,self.implement,self.code,self.code,self.code, self.code,self.code,self.code,self.code,self.code)
         else :
-            self.texteXSD  = texteDebutNiveau3.format(self.code,self.implement,self.code,self.nomDuXsdPere,self.code,self.code,self.code, self.code,self.code,self.code,self.code,self.code)
-
-        if self.texteInclusion != ""   : self.texteXSD += self.texteInclusion
+            self.texteXSD  = texteDebut.format(self.code,self.code,self.code,self.code,self.code,self.code)
         self.texteXSD += self.texteSimple
         self.texteXSD += self.texteComplexe
 
         #if self.texteTypeAbstrait != "" : self.texteXSD += self.texteTypeAbstrait
         self.texteXSD += self.texteCata
-        #self.texteXSD += self.texteElt
 
         toutesLesKeys=set()
         texteKeyRef = ""
@@ -1381,16 +1368,6 @@ class X_JDC_CATA :
 
         #if not PourTraduction : print (self.texteXSD)
 
-        import pprint
-        #pprint.pprint (cata.dictTypesXSDJumeaux)
-        #for k in cata.dictTypesXSDJumeaux:
-        #    print (k.nom, k.nomComplet())
-        #    print (cata.dictTypesXSDJumeaux[k][0].nom, cata.dictTypesXSDJumeaux[k][0].nomComplet())
-
-        #pprint.pprint (cata.dictTypesXSD)
-        #for k in cata.dictTypesXSD:
-        #    print (k)
-        #    print (cata.dictTypesXSD)
 
         dico = {}
         for  k in list(cata.dictTypesXSD.keys()):
@@ -1419,6 +1396,7 @@ class X_JDC_CATA :
         #pprint.pprint(dico)
         # PN reflechir a ce *** de nom
         #if dico != {} : self.texteXSD += texteAnnotation.format(self.nomDuCodeDumpe,str(dico))
+        print ('uuuuuuuuuuuuuuuuuuuuuu', dico)
         if dico != {} : self.texteXSD += texteAnnotation.format(str(dico))
 
         #import pprint
@@ -1430,7 +1408,7 @@ class X_JDC_CATA :
         return self.texteXSD
 
 
-    def dumpLesCommandes(self):
+    def dumpAvecEltAbstraitDesCommandes(self):
         cata = CONTEXT.getCurrentCata()
         fichierCataSourceExt=os.path.basename(cata.cata.__file__)
         fichierCataSource, extension=os.path.splitext(fichierCataSourceExt)
@@ -1481,7 +1459,7 @@ class X_JDC_CATA :
             if not(isinstance(c, Accas.OPER)) and not(isinstance(c, Accas.PROC))  : continue
             c.nomDuCodeDumpe=self.nomDuCodeDumpe
             c.code=self.implement
-            c.dumpXsd()
+            c.dumpXsd(avecEltAbstrait=True)
 
             self.texteSimple   += c.texteSimple
             self.texteComplexe += c.texteComplexe
@@ -1489,3 +1467,19 @@ class X_JDC_CATA :
             elif c.fr != '' : c.texteElt = eltEtapeWithHelp.format(c.nom,self.implement,c.nomDuTypePyxb,self.implement,c.fr)
             else : c.texteElt = eltEtape.format(c.nom,self.implement,c.nomDuTypePyxb,self.implement)
             self.texteCata   += c.texteElt
+
+    def dumpSimpleDesCommandes(self):
+       self.texteCata  = eltCataSimple.format(self.code, self.code, self.code, self.code)
+       # on remplace les extensions par rien
+       for c in  self.commandes :
+            c.nomDuCodeDumpe=self.nomDuCodeDumpe
+            c.code=self.implement
+            c.dumpXsd(avecEltAbstrait=False)
+            self.texteSimple += c.texteSimple
+            self.texteSimple += c.texteComplexe
+            if c.ang  != '' : c.texteElt = eltEtapeSimpleWithHelp.format(c.nom,self.implement,c.nomDuTypePyxb,0,"unbounded",c.ang)
+            elif c.fr != '' : c.texteElt = eltEtapeSimpleWithHelp.format(c.nom,self.implement,c.nomDuTypePyxb,0,"unbounded",c.fr)
+            else : c.texteElt = eltEtapeSimple.format(c.nom,self.implement,c.nomDuTypePyxb,0,"unbounded")
+            self.texteCata  += c.texteElt
+       self.texteCata += finEltCataSimple 
+
diff --git a/Efi2Xsd/ajoutBalise.py b/Efi2Xsd/ajoutBalise.py
deleted file mode 100644 (file)
index 45692d3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-debuttypeChaineAvecBlancs = '\t\t<xs:simpleType name="T_stg">\n\t\t\t <xs:restriction>\n\t\t\t <xs:simpleType>\n\t\t\t\t <xs:list>\n\t\t\t\t <xs:simpleType>\n\t\t\t\t\t <xs:restriction base="xs:string">'
-fintypeChaineAvecBlancs = '\t\t</xs:restriction>\n\t\t </xs:simpleType>\n\t\t </xs:list>\n\t\t </xs:simpleType>\n\t\t'
-
-SequenceChaineAvecBlancs = '\t\t<xs:complexType name="T_{}">\n\t\t\t  <xs:sequence> <xs:element name="stg" type="Vimmp:T_stg" minOccurs="1" maxOccurs="1" default="{}">n\t\t\t  </xs:sequence>\n\t\t<xs:complexType name>\n'
-
-
index a9becb59757f5dac4eb9bea77189db3715dca3c3..9512763e8f36ad95d29b9a6e3d88b9584ed158d3 100644 (file)
@@ -53,6 +53,9 @@ eltCompoDsSequenceWithHelp = '\t\t\t<xs:element name="{}" type="{}:{}" minOccurs
 # ETAPE
 eltEtape = '\t<xs:element name="{}" type="{}:{}" substitutionGroup="step_{}"/>\n'
 eltEtapeWithHelp = '\t<xs:element name="{}" type="{}:{}" substitutionGroup="step_{}">\n\t\t\t\t<xs:annotation>\n\t\t\t\t\t<xs:documentation>{}</xs:documentation>\n\t\t\t\t</xs:annotation>\n\t\t\t</xs:element>\n'
+eltEtapeSimple  = '\t\t\t<xs:element name="{}" type="{}:{}" minOccurs="{}" maxOccurs="{}"/>\n'
+eltEtapeSimpleWithHelp = '\t\t\t<xs:element name="{}" type="{}:{}" minOccurs="{}" maxOccurs="{}">\n\t\t\t\t<xs:annotation>\n\t\t\t\t\t<xs:documentation>{}</xs:documentation>\n\t\t\t\t</xs:annotation>\n\t\t\t</xs:element>\n'
+
 
 # BLOC
 debutTypeSubst    = '\t<xs:group name="{}">   \n\t\t<xs:sequence>\n'
@@ -88,14 +91,14 @@ defUserASSDOrUserASSDMultiple='\t<xs:simpleType name="{}_{}">\n\t\t<xs:restricti
 
 
 # CATA
-debutTypeCata     = '\t<xs:complexType name="T_{}">\n\t\t<xs:choice minOccurs="0" maxOccurs="unbounded">\n'
+debutTypeCata      = '\t<xs:complexType name="T_{}">\n\t\t<xs:choice minOccurs="0" maxOccurs="unbounded">\n'
 debutTypeCataExtension = '\t<xs:complexType name="T_{}">\n'
-finTypeCata       = '\t\t</xs:choice>\n\t</xs:complexType>\n'
-finSchema         = '</xs:schema>'
-#eltCata           = '\t<xs:element name="{}" type="{}:{}"/>\n'
+finTypeCata        = '\t\t</xs:choice>\n\t</xs:complexType>\n'
+finSchema          = '</xs:schema>'
+eltCataSimple      = '\t<xs:element name="{}" type="{}:{}"/>\n'
 #eltCodeSpecDsCata = '\t\t\t<xs:element ref="{}_Abstract" minOccurs="0" maxOccurs="1"/>\n'
 #fermeEltCata      = '\t</xs:element>\n'
-includeCata       = '<xs:include schemaLocation="cata_{}.xsd" />\n\n'
+includeCata        = '<xs:include schemaLocation="cata_{}.xsd" />\n\n'
 
 
 # EXTENSION
@@ -112,6 +115,9 @@ eltCataFilsWithHelp = '\t<xs:element name="step_{}" type="{}:T_step_{}" substitu
 
 eltCata = '\t<xs:element name="{}" type="{}:T_{}"/>\n\t\t<xs:complexType name="T_{}">\n\t\t  <xs:choice minOccurs="0" maxOccurs="unbounded">\n\t\t\t<xs:element ref="step_{}" minOccurs="0" maxOccurs="1"/>\n\t\t  </xs:choice>\n\t\t</xs:complexType>\n'
 
+eltCataSimple = '\t<xs:element name="{}" type="{}:T_{}"/>\n\t\t<xs:complexType name="T_{}">\n\t\t  <xs:choice minOccurs="0" maxOccurs="unbounded">\n'
+
+finEltCataSimple = '\t\t  </xs:choice>\n\t\t</xs:complexType>\n'
 #\n\t<xs:element name="{}_Abstract" type="{}:T_{}_Abstract"/>\n'
 #implementeAbstrait  = '\t<xs:element name="{}" type="{}:{}" substitutionGroup="{}:{}_Abstract"/>\n'