else :
declencheChoiceAvecSeqVid=False
#min=1
-
-
for ligne in laListe :
if ligne[0] in aReduire.keys():
else : aReduire[ligne[0]]=[ligne[1:],]
- if debug : print ('la Liste', laListe, declencheChoiceAvecSeqVid)
+ if debug : print ('la Liste', laListe, 'declencheChoiceAvecSeqVid : ',declencheChoiceAvecSeqVid)
if debug : print (aReduire)
if len(aReduire.keys()) == 1 :
if declencheChoiceAvecSeqVid == False :
creeChoice=True
creeSequence=False
+ if debug : print ('self.texteComplexe', self.texteComplexe)
if debug : print ('creeSequence', creeSequence, aReduire)
for nomMC in aReduire.keys():
if debug : print ('--------------------------------------------- boucle for', nomMC, aReduire[nomMC])
aTraiter=listeSuivante
while len(aTraiter) == 1 and isinstance(aTraiter[0],list): aTraiter=aTraiter[0]
if debug : print ('aTraiter', aTraiter)
- if len(aTraiter) == 1 :
- self.ajouteAuxTextes(aTraiter[0],indent)
- else :
- for mc in aTraiter : self.ajouteAuxTextes(mc, indent)
+ if len(listeSuivante) == 1 : self.ajouteAuxTextes(listeSuivante[0],indent)
+ else : self.factoriseEtCreeDump(listeSuivante, indent+int(creeSequence),nomMC)
if creeChoice : indent=indent -1 ; self.texteComplexe += '\t'*(indent) + finSequenceDsBloc
if debug : print ('--------------------------------------------- fin boucle for', nomMC)
def ajouteAuxTextes(self,nomMC,indent,debug=False) :
- #if nomMC == 'radial_meshing' : debug =True
if debug :
- print ('______________________________________________________')
- print ('ajouteAuxTextes', nomMC, self.nom)
+ 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 ?
# if faut traiter les Blocs exclusifs qui donnent des choices de sequences
# mais celles-ci risquent d etre ambigues
+
+ if nomMC==[] : return
+ # on a un niveau de liste par niveau de bloc imbrique
+ # voir cata_UQ
while (isinstance(nomMC,list)) :
if nomMC==[] : return
- nomMC=nomMC[0]
+ if len(nomMC) ==1 : nomMC = nomMC[0]
+ elif isinstance(nomMC[0],list) : nomMC = nomMC[0]
+ else :
+ for mc in nomMC : self.ajouteAuxTextes(mc, indent,debug)
+ return
+ if debug : print ('ajouteAuxTextes apresWhile', nomMC)
if nomMC == 'Consigne' or nomMC == 'blocConsigne' : return
#if debug : print (nomMC, 'dans ajoute vraiment aux textes', self.entites )
if debug : print (nomMC, 'dans ajoute vraiment aux textes' )
# cas des matrices :
if (self.entites[nomMC][0].label == 'SIMP') and hasattr (self.entites[nomMC][0].type[0], 'typElt') :
- typeEltMatrice=self.entites[nomMC][0].type[0].typElt
- memeElt=1
- nbColsMin=self.entites[nomMC][0].type[0].nbCols
- nbColsMax=self.entites[nomMC][0].type[0].nbCols
- nbLigsMin=self.entites[nomMC][0].type[0].nbLigs
- nbLigsMax=self.entites[nomMC][0].type[0].nbLigs
- for e in (self.entites[nomMC][1:]) :
- if not (hasattr(e.type[0], 'typElt')) :
- print ('Projection XSD impossible, changez un des ', nomMC)
- print ('melange de matrice et de non matrice')
- exit()
- if not (e.type[0].typElt == typeEltMatrice) : memeElt=O
- else :
- if nbColsMin > e.type[0].nbCols : nbColsMin = e.type[0].nbCols
- if nbColsMax < e.type[0].nbCols : nbColsMax = e.type[0].nbCols
- if nbLigsMin > e.type[0].nbLigs : nbLigsMin = e.type[0].nbLigs
- if nbLigsMax < e.type[0].nbLigs : nbLigsMax = e.type[0].nbLigs
- if debug and memeElt : print ('memeElt : ', memeElt)
- if memeElt : self.fusionneDesMatricesDeMemeType(nomMC,nbColsMin,nbColsMax,nbLigsMin,nbLigsMax)
- else : self.fusionneDesMatrices(self,nomMC)
- if debug : print ('fin fusion des matrices')
- return
+ typeEltMatrice=self.entites[nomMC][0].type[0].typElt
+ memeElt=1
+ nbColsMin=self.entites[nomMC][0].type[0].nbCols
+ nbColsMax=self.entites[nomMC][0].type[0].nbCols
+ nbLigsMin=self.entites[nomMC][0].type[0].nbLigs
+ nbLigsMax=self.entites[nomMC][0].type[0].nbLigs
+ for e in (self.entites[nomMC][1:]) :
+ if not (hasattr(e.type[0], 'typElt')) :
+ print ('Projection XSD impossible, changez un des ', nomMC)
+ print ('melange de matrice et de non matrice')
+ exit()
+ if not (e.type[0].typElt == typeEltMatrice) : memeElt=O
+ else :
+ if nbColsMin > e.type[0].nbCols : nbColsMin = e.type[0].nbCols
+ if nbColsMax < e.type[0].nbCols : nbColsMax = e.type[0].nbCols
+ if nbLigsMin > e.type[0].nbLigs : nbLigsMin = e.type[0].nbLigs
+ if nbLigsMax < e.type[0].nbLigs : nbLigsMax = e.type[0].nbLigs
+ if debug and memeElt : print ('memeElt : ', memeElt)
+ if memeElt : self.fusionneDesMatricesDeMemeType(nomMC,nbColsMin,nbColsMax,nbLigsMin,nbLigsMax)
+ else : self.fusionneDesMatrices(self,nomMC)
+ if debug : print ('fin fusion des matrices')
+ return
# cette boucle ne fonctionne que pour des SIMP
resteATraiter=copy(self.entites[nomMC])
- #print ('________resteATraiter', resteATraiter)
+ if debug :
+ print ('________ calcul des unions resteATraiter', resteATraiter)
+ for i in resteATraiter : print (i.nom)
listePourUnion=[]
first=1
while resteATraiter != [] :
for mcFrere in self.entites[nomMC][index:]:
ok = mc.isDisjoint(mcFrere)
if not ok :
- sontTousDisjoint=False
- break
+ sontTousDisjoint=False
+ break
if not(sontTousDisjoint) : break
index+=1
if not sontTousDisjoint:
- print ('2 blocs freres ont le meme nom et ne sont pas disjoints : pas encore traite')
- print ('Projection XSD impossible, changez un des ', nomMC)
- exit()
+ print ('2 blocs freres ont le meme nom et ne sont pas disjoints : pas encore traite')
+ print ('Projection XSD impossible, changez un des ', nomMC)
+ exit()
self.fusionneDsUnChoix(nomMC,indent)
#if debug : print ('self.nom', self.nom)
#if debug : print ('self.texteComplexe' , self.texteComplexe)
mcRef= self.entites[nomMC][0]
# max = 1 : a priori les choix sont exclusifs
if (hasattr (mcRef, 'aDejaEteDumpe')) :
- self.texteComplexe += '\t'*(indent) + mcRef.texteElt
- if debug : print ("je passe la NORMALEMENT car j ai deja ete dumpe, j ajoute juste l elt")
- return
+ self.texteComplexe += '\t'*(indent) + mcRef.texteElt
+ if debug : print ("je passe la NORMALEMENT car j ai deja ete dumpe, j ajoute juste l elt")
+ return
leNomDuTypePyxb = mcRef.definitNomDuTypePyxb(forceACreer=True)
if debug : print ('nomMC', nomMC)
i=0
typeDeMatrice =elt.type[0]
elt.dumpXsd(dansFactorisation=True)
if debug :
- #print ('fusionneDesMatricesDeMemeType self.texteSimple avant', self.texteSimple)
- print ('fusionneDesMatricesDeMemeType self.texteComplexe avant', self.texteComplexe)
+ #print ('fusionneDesMatricesDeMemeType self.texteSimple avant', self.texteSimple)
+ print ('fusionneDesMatricesDeMemeType self.texteComplexe avant', self.texteComplexe)
# if
self.texteSimple += debutSimpleType.format(elt.nomDuTypePyxb+'_element')
self.texteSimple += debutRestrictionBase.format(elt.nomDuTypeDeBase)
self.texteComplexe += debutTypeCompoSeq
texteComplexeVenantDesFils= self.creeTexteComplexeVenantDesFils(dansFactorisation)
if not dansFactorisationDeFusion :
- self.texteComplexe = texteComplexeVenantDesFils + self.texteComplexe
- self.texteComplexeVenantDesFils = ''
+ self.texteComplexe = texteComplexeVenantDesFils + self.texteComplexe
+ self.texteComplexeVenantDesFils = ''
else :
- self.texteComplexeVenantDesFils = texteComplexeVenantDesFils
+ 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) and avecEltAbstrait : self.texteComplexe += finTypeCompoEtape
if dansFactorisation : minOccurs = 1
if self.suisUneMatrice :
- if dansFactorisation : return
- self.dumpSpecifiqueMatrice(minOccurs)
- return
+ if dansFactorisation : return
+ self.dumpSpecifiqueMatrice(minOccurs)
+ return
if self.suisUnTuple :
- self.dumpSpecifiqueTuple(minOccurs)
- return
+ self.dumpSpecifiqueTuple(minOccurs)
+ return
if self.avecBlancs and self.max > 1 :
- self.dumpSpecifiqueTexteAvecBlancs(minOccurs,multiple)
- return
+ self.dumpSpecifiqueTexteAvecBlancs(minOccurs,multiple)
+ return
#print ('minOccurs',minOccurs)
# le defaut est dans l elt Name -> tester la coherence d existence avec Accas
if self.ang != '' : texteAide = self.ang
else : texteAide = self.fr
if self.intoXML and self.into :
- if self.intoXML != self.into :
- #print ('je passe la pour ', self.nom)
- texteAide = texteAide+'\nPossible choices for '+ self.nom + 'at this place : \n'+str(self.into)+'\n'
+ if self.intoXML != self.into :
+ #print ('je passe la pour ', self.nom)
+ texteAide = texteAide+'\nPossible choices for '+ self.nom + 'at this place : \n'+str(self.into)+'\n'
if self.defaut :
- if debug : print ('j ai un defaut')
- if self.max > 1 or self.max == '**' or self.max == float('inf') :
+ if debug : print ('j ai un defaut')
+ if self.max > 1 or self.max == '**' or self.max == float('inf') :
txtDefaut=""
for val in self.defaut : txtDefaut+=str(val) + " "
# cela ne fonctionne pas tres bien. a revoir
else :
texteAide += texteAide+'\ndefault Value in MDM : \n'+txtDefaut
self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,texteAide)
- else :
+ else :
if str(self.defaut) == 'True' : txtDefaut = 'true'
elif str(self.defaut) == 'False' : txtDefaut = 'false'
else : txtDefaut = str(self.defaut)
if texteAide != '' : self.texteElt = eltDsSequenceWithDefautAndHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut,texteAide)
else : self.texteElt = eltDsSequenceWithDefaut.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
else :
- if texteAide != '' : self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,texteAide)
- else : self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1)
+ if texteAide != '' : self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,texteAide)
+ else : self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1)
elif first:
# l'aide est geree a la fusion
self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,1,1)
if typeATraduire.__name__ not in cata.listeUserASSDDumpes :
cata.listeUserASSDDumpes.add(typeATraduire.__name__)
if issubclass(typeATraduire, Accas.UserASSDMultiple) :
- self.texteSimplePart1 = defUserASSDMultiple.format(typeATraduire.__name__)
- if cata.definitUserASSDMultiple == False :
- cata.definitUserASSDMultiple = True
- cata.texteSimple = cata.texteSimple + defBaseXSDUserASSDMultiple
+ self.texteSimplePart1 = defUserASSDMultiple.format(typeATraduire.__name__)
+ if cata.definitUserASSDMultiple == False :
+ cata.definitUserASSDMultiple = True
+ cata.texteSimple = cata.texteSimple + defBaseXSDUserASSDMultiple
else :
- self.texteSimplePart1 = defUserASSD.format(typeATraduire.__name__)
- if cata.definitUserASSD == False :
- cata.definitUserASSD = True
- cata.texteSimple = cata.texteSimple + defBaseXSDUserASSD
+ self.texteSimplePart1 = defUserASSD.format(typeATraduire.__name__)
+ if cata.definitUserASSD == False :
+ cata.definitUserASSD = True
+ cata.texteSimple = cata.texteSimple + defBaseXSDUserASSD
if typeATraduire.__name__+'_'+suffixe not in cata.listeUserASSDDumpes :
cata.texteSimple = cata.texteSimple + defUserASSDOrUserASSDMultiple.format(typeATraduire.__name__, suffixe,typeATraduire.__name__)
cata.listeUserASSDDumpes.add(typeATraduire.__name__+'_'+suffixe)
if self.intoXML != None : into = self.intoXML
else : into = self.into
if into == None :
- self.texteSimple += typeEltChaineAvecBlancSansInto.format(self.nomDuTypePyxb)
+ self.texteSimple += typeEltChaineAvecBlancSansInto.format(self.nomDuTypePyxb)
else :
- self.texteSimple += debutChaineAvecBlancsInto.format(self.nomDuTypePyxb)
- for val in into : self.texteSimple += milieuChaineAvecBlancsInto.format(val)
- self.texteSimple += finChaineAvecBlancsInto
+ self.texteSimple += debutChaineAvecBlancsInto.format(self.nomDuTypePyxb)
+ for val in into : self.texteSimple += milieuChaineAvecBlancsInto.format(val)
+ self.texteSimple += finChaineAvecBlancsInto
def dumpSpecifiqueTuple(self,minOccurs):
for leTypeComp in self.nomDuTypeDeBase[1:] :
if leTypeComp != leType :
tousPareil = False
- break;
+ break
#if tousPareil :
#PN PN a statuer
# self.texteSimple += debutSimpleType.format(self.nomDuTypePyxb)
# a Reprendre
typeATraduire = self.validators.typeDesTuples[i]
if not (typeATraduire in list(dictNomsDesTypes.keys())) :
- enRetour.append('AccasAssd')
+ enRetour.append('AccasAssd')
else :
enRetour.append(dictNomsDesTypes[self.validators.typeDesTuples[i]])
return enRetour
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 :
+ 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)
elif c.fr != '' : c.texteElt = eltEtapeSimpleWithHelp.format(c.nom,self.implement,c.nomDuTypePyxb,0,1,c.fr)
else : c.texteElt = eltEtapeSimple.format(c.nom,self.implement,c.nomDuTypePyxb,0,1)
self.texteCata += c.texteElt
- self.texteCata += finEltCataSimple
+ self.texteCata += finEltCataSimple