else :
cata.dictTypesXSD[nom].append(self)
- def definitNomDuTypePyxb(self,forceACreer=False):
-
+ def definitNomDuTypePyxb(self,debug=False):
+
+ if debug : print ('definitNomDuTypePyxb', self, self.nom,self.nomComplet())
if hasattr(self,'nomDuTypePyxb') : self.aCreer = False; return self.nomDuTypePyxb
+ #debug=False
#except : pass
+ if debug : print ('definitNomDuTypePyxb traitement pour ', self.nom)
self.aCreer = True
cata = CONTEXT.getCurrentCata()
nom='T_'+self.nom
if (hasattr (self, 'nomXML')) and self.nomXML != None : nom='T_'+self.nomXML
if not (nom in cata.dictTypesXSD.keys()) :
+ if debug : print ('definitNomDuTypePyxb encore jamais traite ', self.nom , ' a pour type' , nom)
cata.dictTypesXSD[nom] = [self,]
self.nomDuTypePyxb=nom
return nom
objAComparer=listePossible[indice]
if self.compare(objAComparer) :
self.nomDuTypePyxb=objAComparer.nomDuTypePyxb
- if self.nom=='FactE' : print (2,self.aCreer)
+ 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
self.aCreer = True
# 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 :
- for e in listePourUnion :
- e.dumpXsd(dansFactorisation=True,multiple=True,first=first)
+ texteSimpleUnion += '\t'*(indent)+self.entites[nomMC][0].texteSimple
+ for e in listePourUnion[1:] :
+ e.dumpXsd(dansFactorisation=True,multiple=True,first=False)
# si on ext un mc simple la ligne suivante est inutile
# en revanche on ajoute le texte a tous les coups
- self.texteComplexeVenantDesFils += e.texteComplexe
+ #self.texteComplexeVenantDesFils += e.texteComplexe
e.metAJourPyxb(nomTypePyxbUnion)
- first=first * 0
texteSimpleUnion += '\t'*(indent)+e.texteSimple
texteSimpleUnion += finUnion
texteSimpleUnion+=fermeSimpleType
# --> homonymie on peut utiliser genealogie ?
self.nomDuTypeDeBase = self.traduitType()
- if not multiple :
- self.nomDuTypePyxb = self.definitNomDuTypePyxb()
+ #if not multiple :
+ # self.nomDuTypePyxb = self.definitNomDuTypePyxb()
#if first : self.aCreer = True
- elif first :
- self.nomDuTypePyxb = self.definitNomDuTypePyxb(forceACreer=1)
+ #elif first :
+ #else :
+ # self.nomDuTypePyxb = self.definitNomDuTypePyxb()
#self.aCreer = True
#else : print ('multiple and not first', self.aCreer)
+ self.definitNomDuTypePyxb()
-
#if not PourTraduction : print (self.texteXSD)
- dico = {}
+ # PN : version 0 de la construction des types a remplacer
#import pprint
#pprint.pprint(cata.dictTypesXSD)
+ #dicoARemplacer={}
+ #for k in list(cata.dictTypesXSD.keys()):
+ # if len(cata.dictTypesXSD[k])==1 : continue
+ # listeDesFacts=[]
+ # listeDesBlocs=[]
+ # listeDesBlocsAmbigus=[]
+ # for definition in cata.dictTypesXSD[k] :
+ # if definition.label == 'SIMP' : continue
+ # if definition.label == 'FACT' : listeDesFacts.append(definition)
+ # if definition.label == 'BLOC' : listeDesBlocs.append(definition)
+ # if definition.label == 'BlocAmbigu': listeDesBlocsAmbigus.append(definition)
+ # print (k,listeDesFacts,listeDesBlocs,listeDesBlocsAmbigus)
+ # for listeTraitee in listeDesFacts,listeDesBlocs,listeDesBlocsAmbigus:
+ # if len(listeTraitee) < 2 : continue
+ # dicoParTypePyxb={}
+ # for MC in listeTraitee :
+ # if MC.nomDuTypePyxb in list(dicoParTypePyxb.keys()): dicoParTypePyxb[MC.nomDuTypePyxb].append(MC)
+ # else : dicoParTypePyxb[MC.nomDuTypePyxb]=[MC,]
+ # for k in dicoParTypePyxb.keys() :
+ # if len(dicoParTypePyxb[k]) < 1 :
+ # dicoARemplacer[k]=dicoParTypePyxb[k][1:]
+
+ 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()):
dico[k]={}
for definition in cata.dictTypesXSD[k] :
- if definition.label == 'BLOC' or definition.label == 'BlocAmbigu':continue
- nom=definition.nomComplet()
- if k =='T_NumericalMethod' : print (nom)
- if definition.nomDuTypePyxb != 'T_'+definition.nom : dico[k][nom]=definition.nomDuTypePyxb
+ 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)
+ 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]
- #import pprint
- #pprint.pprint(dico)
+ #dico = {}
+ import pprint
+ pprint.pprint(dico)
if dico != {} : self.texteXSD += texteAnnotation.format(str(dico))
#import pprint