else :
cata.dictTypesXSD[nom].append(self)
- def definitNomDuTypePyxb(self,debug=False):
+ def definitNomDuTypePyxb(self,forceACreer=False,debug=False):
if debug : print ('definitNomDuTypePyxb', self, self.nom,self.nomComplet())
if hasattr(self,'nomDuTypePyxb') : self.aCreer = False; return self.nomDuTypePyxb
self.nomDuTypePyxb=nom
return nom
- self.aCreer = False
if nom == 'T_Consigne' : return nom
- listePossible=cata.dictTypesXSD[nom]
- indice=0
- while (indice < len(listePossible)) :
- objAComparer=listePossible[indice]
- if self.compare(objAComparer) :
- self.nomDuTypePyxb=objAComparer.nomDuTypePyxb
- if debug : print ('definitNomDuTypePyxb', self.nom , 'type identique', objAComparer.nomDuTypePyxb )
+ if not forceACreer :
+ self.aCreer = False
+ listePossible=cata.dictTypesXSD[nom]
+ indice=0
+ while (indice < len(listePossible)) :
+ objAComparer=listePossible[indice]
+ if self.compare(objAComparer) :
+ self.nomDuTypePyxb=objAComparer.nomDuTypePyxb
+ 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
+ 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
cata.dictTypesXSD[nom].append(self)
nomAlter='T_'+self.nom+'_'+str(indice)
# ----------------------------------------
def __init__(self,nom,listeDeCreation,pere):
- #print ('__ X_compoFactoriseAmbigu', listeDeCreation)
#for (i,index) in listeDeCreation : print i.nom
self.label='BlocAmbigu'
self.nom=nom
self.entites={}
self.mcXSD=[]
self.ordre_mc=[]
- self.mcDejaDumpe=set()
for mc in listeDeCreation :
self.mcXSD.append(mc)
self.ordre_mc.append(mc.nom)
print ('dans nomComplet pourquoi ?',self, self.nom)
- def factoriseEtCreeDump(self, laListe, indent=2 ,nomAppel=None, debug=True):
+ def factoriseEtCreeDump(self, laListe, indent=2 ,nomAppel=None, debug=False):
if debug : print ('_______________________________ factoriseEtCreeDump')
if debug : print(self.nom, laListe, indent, nomAppel)
maListeRetour=[]
return (maListeRetour)
- def ajouteAuxTextes(self,nomMC,indent) :
- #if nomMC =='FactE' :
- # import traceback
- # traceback.print_stack()
- #print ('ajouteAuxTextes', nomMC, self.nom, self.entites)
- if nomMC =='B' :print ('ajouteAuxTextes', nomMC, self.nom)
+ def ajouteAuxTextes(self,nomMC,indent,debug=False) :
+ if nomMC=='N1' and self.nom == 'bloc_une_bloc_deux' : debug=True
+ if debug : print ('ajouteAuxTextes', nomMC, self.nom, self.entites[nomMC])
+ #if debug :
+ # traceback.print_stack()
#for i in self.entites.keys() : print (self.entites[i][0].nom)
if (indent > 3) : indent = indent - 3
else : indent = 0
class X_definitionComposee (X_definition):
# ------------------------------------------
- def CreeTexteComplexeVenantDesFils(self,dansFactorisation=False):
+ def creeTexteComplexeVenantDesFils(self,dansFactorisation=False):
texteComplexeVenantDesFils=""
blocsDejaDumpes=set()
#for nom in self.ordre_mc:
if mcFils.aCreer : texteComplexeVenantDesFils += mcFils.texteComplexe
return texteComplexeVenantDesFils
- def dumpXsd(self, dansFactorisation=False, multiple = False, first=False):
+ def dumpXsd(self, dansFactorisation=False, multiple = False, first=True):
#print ('_________ dumpXsd___________', self.nom)
if PourTraduction : print (self.nom)
# le prepareDump est appele sur les fils
if not (self.dejaPrepareDump) : self.prepareDumpXSD()
self.getNomDuCodeDumpe()
- self.nomDuTypePyxb = self.definitNomDuTypePyxb()
+ if first :
+ if multiple : self.nomDuTypePyxb = self.definitNomDuTypePyxb(forceACreer)
+ else : self.nomDuTypePyxb = self.definitNomDuTypePyxb()
self.texteSimple = "" # on n ajoute pas de type simple
self.traduitMinMax()
if isinstance(self,X_OPER) or isinstance(self,X_PROC) :
self.texteComplexe += debutTypeCompoEtape.format(self.code)
self.texteComplexe += debutTypeCompoSeq
- texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils(dansFactorisation)
+ texteComplexeVenantDesFils=self.creeTexteComplexeVenantDesFils(dansFactorisation)
self.texteComplexe = texteComplexeVenantDesFils + self.texteComplexe
# la fin de l oper est traitee dans le dumpXSD de X_OPER
if not isinstance(self,X_OPER ) : self.texteComplexe += finTypeCompoSeq
# Pour les blocs le minOccurs vaut 0 et le max 1
if self.aCreer :
self.texteComplexe = debutTypeSubst.format(self.nomDuTypePyxb)
- texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils(dansFactorisation)
+ texteComplexeVenantDesFils=self.creeTexteComplexeVenantDesFils(dansFactorisation)
self.texteComplexe = texteComplexeVenantDesFils + self.texteComplexe
self.texteComplexe += finTypeSubst
def dumpXsd(self, dansFactorisation=False, multiple = False, first=False):
#if PourTraduction : print (self.nom)
self.prepareDumpXSD()
+ # si inUnion la comparaison est fausse : on cree le nomDuType
if multiple : self.inUnion=True
#print ('exploreObjet SIMP')
self.getNomDuCodeDumpe()
# --> homonymie on peut utiliser genealogie ?
self.nomDuTypeDeBase = self.traduitType()
- #if not multiple :
- # self.nomDuTypePyxb = self.definitNomDuTypePyxb()
- #if first : self.aCreer = True
- #elif first :
- #else :
- # self.nomDuTypePyxb = self.definitNomDuTypePyxb()
- #self.aCreer = True
- #else : print ('multiple and not first', self.aCreer)
- self.definitNomDuTypePyxb()
+ if not multiple :
+ self.nomDuTypePyxb = self.definitNomDuTypePyxb()
+ else :
+ if first :
+ # on force la creation
+ self.nomDuTypePyxb = self.definitNomDuTypePyxb()
+ self.aCreer = True
-
# on se sert des listes ou non pour la gestion des minOccurs /maxOccurs est > 0
if self.statut =='f' : minOccurs = 0
def prepareDumpXSD(self):
self.inUnion=False
- if self.statut == 'f' :
- self.arbrePossibles = (self.nom,[])
- else :
- self.arbrePossibles = (self.nom,)
+ if self.statut == 'f' : self.arbrePossibles = (self.nom,[])
+ else : self.arbrePossibles = (self.nom,)
self.mcXSD=[]
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)
+ #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]
- #dico = {}
import pprint
- pprint.pprint(dico)
+ #pprint.pprint(dico)
if dico != {} : self.texteXSD += texteAnnotation.format(str(dico))
#import pprint