From 09ad9a4c3bd252d4bf7af54325e1ae0c2cee6d21 Mon Sep 17 00:00:00 2001 From: PASCALE NOYRET Date: Thu, 3 Mar 2022 18:15:53 +0100 Subject: [PATCH] pb sur la fusion de fact de meme nom dans des blocs freres --> radial_meshing --- Efi2Xsd/AccasXsd.py | 130 ++++++++++++++++++++--------------------- Efi2Xsd/ajoutBalise.py | 6 -- Efi2Xsd/balisesXSD.py | 16 +++-- 3 files changed, 73 insertions(+), 79 deletions(-) delete mode 100644 Efi2Xsd/ajoutBalise.py diff --git a/Efi2Xsd/AccasXsd.py b/Efi2Xsd/AccasXsd.py index 36cbda21..92ed8d76 100755 --- a/Efi2Xsd/AccasXsd.py +++ b/Efi2Xsd/AccasXsd.py @@ -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 index 45692d3f..00000000 --- a/Efi2Xsd/ajoutBalise.py +++ /dev/null @@ -1,6 +0,0 @@ -debuttypeChaineAvecBlancs = '\t\t\n\t\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t \n\t\t\t\t\t ' -fintypeChaineAvecBlancs = '\t\t\n\t\t \n\t\t \n\t\t \n\t\t' - -SequenceChaineAvecBlancs = '\t\t\n\t\t\t n\t\t\t \n\t\t\n' - - diff --git a/Efi2Xsd/balisesXSD.py b/Efi2Xsd/balisesXSD.py index a9becb59..9512763e 100644 --- a/Efi2Xsd/balisesXSD.py +++ b/Efi2Xsd/balisesXSD.py @@ -53,6 +53,9 @@ eltCompoDsSequenceWithHelp = '\t\t\t\n\t\t\n' +debutTypeCata = '\t\n\t\t\n' debutTypeCataExtension = '\t\n' -finTypeCata = '\t\t\n\t\n' -finSchema = '' -#eltCata = '\t\n' +finTypeCata = '\t\t\n\t\n' +finSchema = '' +eltCataSimple = '\t\n' #eltCodeSpecDsCata = '\t\t\t\n' #fermeEltCata = '\t\n' -includeCata = '\n\n' +includeCata = '\n\n' # EXTENSION @@ -112,6 +115,9 @@ eltCataFilsWithHelp = '\t\n' #implementeAbstrait = '\t\n' -- 2.39.2