From: pascale.noyret Date: Wed, 26 May 2021 14:54:29 +0000 (+0200) Subject: les doublons dans le XSD X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=94fca6b382dbfd5de0cf3751a59a4d8f6468ef7c;p=tools%2Feficas.git les doublons dans le XSD --- diff --git a/Efi2Xsd/AccasXsd.py b/Efi2Xsd/AccasXsd.py index ffb51f11..9e01fc67 100755 --- a/Efi2Xsd/AccasXsd.py +++ b/Efi2Xsd/AccasXsd.py @@ -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) :