if debug : print ('creeSequence', creeSequence, aReduire)
for nomMC in aReduire.keys():
- if debug : print ('---------- boucle for', nomMC)
+ if debug : print ('--------------------------------------------- boucle for', nomMC, aReduire[nomMC])
listeSuivante=aReduire[nomMC]
if creeChoice and listeSuivante != [[]] :
self.texteComplexe += '\t'*(indent) + debSequenceDsBloc; indent=indent+1
self.ajouteAuxTextes(nomMC,indent)
if listeSuivante == [[]] : continue # Est-ce toujours vrai ?
- if len(listeSuivante) == 1 : self.ajouteAuxTextes(listeSuivante[0],indent)
- else : self.factoriseEtCreeDump(listeSuivante, indent+int(creeSequence),nomMC)
+ if debug : print ('listeSuivante', listeSuivante)
+ 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 creeChoice : indent=indent -1 ; self.texteComplexe += '\t'*(indent) + finSequenceDsBloc
+ if debug : print ('--------------------------------------------- fin boucle for', nomMC)
if declencheChoiceAvecSeqVid :
self.texteComplexe += '\t'*indent + debSequenceDsBloc
if creeChoice : indent=indent -1 ; self.texteComplexe += '\t'*indent + finChoiceDsBloc
if creeSequence : indent=indent -1 ; self.texteComplexe += '\t'*(indent) + finSequenceDsBloc
- #if doitFermerSequence : indent=indent-1;self.texteComplexe += '\t'*(indent) + finSequenceDsBloc
- #print (self.texteSimple)
- #print ('______',' self.texteComplexe')
- #print (self.texteComplexe)
- #print ('_____', 'self.texteComplexeVenantDesFils')
- #print (self.texteComplexeVenantDesFils)
- #print ('fin pour _______________________________', self.nom)
+ debug=False
+ if debug : print (self.texteSimple)
+ if debug : print ('______',' self.texteComplexe')
+ if debug : print (self.texteComplexe)
+ if debug : print ('_____', 'self.texteComplexeVenantDesFils')
+ if debug : print (self.texteComplexeVenantDesFils)
+ if debug : print ('fin pour _______________________________', self.nom)
return (maListeRetour)
def ajouteAuxTextes(self,nomMC,indent,debug=False) :
+ if nomMC == 'radial_meshing' : debug =True
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
nomMC=nomMC[0]
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 debug : print (nomMC, 'dans ajoute vraiment aux textes', self.entites )
+ if debug : print (nomMC, 'dans ajoute vraiment aux textes' )
if len(self.entites[nomMC]) == 1:
mc=self.entites[nomMC][0]
mc.dumpXsd(dansFactorisation=True)
print ('Projection XSD impossible, changez un des ', nomMC)
exit()
+ # 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
+
+
# cette boucle ne fonctionne que pour des SIMP
resteATraiter=copy(self.entites[nomMC])
#print ('________resteATraiter', resteATraiter)
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)
- if debug : print ('self.texteSimple' , self.texteSimple)
- if debug : print ('self.texteElt' , self.texteElt)
- if debug : print ('________________________')
+ #if debug : print ('self.nom', self.nom)
+ #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
texteSimpleUnion += finUnion
texteSimpleUnion +=fermeSimpleType
self.texteSimple += texteSimplePart1 + texteSimpleUnion
- if debug :
- print ('______________')
- print (self.texteSimple)
- print ('______________')
- #print ('self.texteSimple', self.texteSimple)
+ #if debug :
+ # print ('______________')
+ # print (self.texteSimple)
+ # print ('______________')
- def fusionneDsUnChoix(self, nomMC,indent, debug=False):
+ def fusionneDsUnChoix(self, nomMC,indent, debug=True):
if debug : print ('______fusionneDsUnChoix ', self.nom, self, nomMC,indent)
if debug : print (self.texteComplexe)
texteDocUnion='\n'
mcRef= self.entites[nomMC][0]
# max = 1 : a priori les choix sont exclusifs
if (hasattr (mcRef, 'aDejaEteDumpe')) :
- if debug : print ("je passe la NORMALEMENT car j ai deja ete dumpe")
+ 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)
self.entites[nomMC][0].aDejaEteDumpe=True
+ def fusionneDesMatricesDeMemeType(self,nomMC,nbColsMin,nbColsMax,nbLigsMin,nbLigsMax,debug=False):
+ #if nomMC == 'BU_map' : debug=True
+ if debug : print ('fusionneDesMatricesDeMemeType', nomMC,nbColsMin,nbColsMax,nbLigsMin,nbLigsMax)
+ elt=self.entites[nomMC][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)
+ self.texteSimple += debutSimpleType.format(elt.nomDuTypePyxb+'_element')
+ self.texteSimple += debutRestrictionBase.format(elt.nomDuTypeDeBase)
+ if typeDeMatrice.typEltInto != None:
+ for val in typeDeMatrice.typEltInto : self.texteSimple += enumeration.format(val)
+ self.texteSimple += fermeRestrictionBase
+ self.texteSimple += fermeSimpleType
+ nom=elt.nomDuTypePyxb
+ self.texteSimple += matriceSimpleType.format(nom,nom,nbColsMin,nbColsMax,nom,self.code,nom,nbLigsMin,nbLigsMax,nom,self.code,nom,1,1)
+ self.texteComplexe += eltMatrice.format(nomMC,self.code,nom,0,1)
+ if debug : print ('fusionneDesMatricesDeMemeType, self.texteSimple ', self.texteSimple)
+ if debug : print ('fusionneDesMatricesDeMemeType self.texteComplexe', self.texteComplexe)
+ if debug : print ('------------------------------------------ ')
+
+ def fusionneDesMatrices(self,nomMC):
+ print ('______fusionneDesMatrices ', nomMC, ' dans : ', self)
+ print ('Pas d union des types complexes')
+ if debug : print (self.texteComplexe)
+ #self.texteComplexe = debutTypeSubstDsBlocFactorise.format(self.nomDuTypePyxb)
+ self.texteComplexe +=debutChoiceDsBloc
+ for mc in self.entites[nomMC]:
+ mc.dumpXsd()
+ self.texteComplexe+=mc.texteElt
+ self.texteSimple+=mc.texteSimple
+ mc.aDejaEteDumpe=True
+ self.texteComplexe+=finChoiceDsBloc
+
+
# ----------------------------------------
class X_definitionComposee (X_definition):
if dansFactorisation : minOccurs = 1
if self.suisUneMatrice :
+ if dansFactorisation : return
self.dumpSpecifiqueMatrice(minOccurs)
return
nom=self.nomDuTypePyxb
nbCols=typeDeMatrice.nbCols
nbLigs=typeDeMatrice.nbCols
- self.texteSimple += matriceSimpleType.format(nom,nom,nbCols,nom,self.code,nom,nbLigs,nbLigs,nom,self.code,nom,self.min,self.max)
+ self.texteSimple += matriceSimpleType.format(nom,nom,nbCols,nbCols,nom,self.code,nom,nbLigs,nbLigs,nom,self.code,nom,self.min,self.max)
self.texteElt = eltMatrice.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1)
# on ne paut pas tester le type qui depend du cataloge
if hasattr(self.type[0], 'typElt') :
self.suisUneMatrice = True
- # on presume que le type de l elt est un ASSD
+ # on presume que le type de l elt est un ASSDi si il n est pas un type connu
if self.type[0].typElt not in dictNomsDesTypes.keys(): return 'xs:string'
return dictNomsDesTypes[self.type[0].typElt]
else :
#pprint.pprint(dico)
# PN reflechir a ce *** de nom
#if dico != {} : self.texteXSD += texteAnnotation.format(self.nomDuCodeDumpe,str(dico))
- print ('uuuuuuuuuuuuuuuuuuuuuu', dico)
+ #print ('uuuuuuuuuuuuuuuuuuuuuu', dico)
if dico != {} : self.texteXSD += texteAnnotation.format(str(dico))
#import pprint
import pyxb.binding
import pyxb.binding.basis
#import pyxb.utils.utility
- #import pyxb.utils.domutils
+ import pyxb.utils.domutils
except : pass
from Accas import A_ASSD
self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
if self.waitMatrice() :
- debug=True
#PNPN : Attention rien ne relie les objets listeObjPyxb a un objAccas
# 27/04 je ne sais pas si cela posera pb
self.listeLines = []
def buildObjPyxb(self,mc_list, debug=False) :
if not self.cata or not self.cata.modeleMetier : return
- if self.nom == 'Techno_data' : debug=1
if debug : print ('X_MCCOMPO', self.nom)
deepDebug=False
self.listArg=[]
- def enregistreEtapePyxb(self,etape,indice=0):
+ def enregistreEtapePyxb(self,etape,indice=0, debug=False):
# ne fonctionne pas : a reecrire avec les fonctions addObjPyxb et ReconstruitPerePyxb
# ne contient pas indice pour l insant
- print ( 'hhhhhhhhhhhhhhh enregistreEtapePyxb hhhhhhhhhhhhhhhhhhhhhhhhh')
- print ('enregistre ds ',self, etape.nom, 'indice = ', indice)
+
+ if debug : print ( 'hhhhhhhhhhhhhhh enregistreEtapePyxb hhhhhhhhhhhhhhhhhhhhhhhhh')
+ if debug : print ('enregistre ds ',self, etape.nom, 'indice = ', indice)
if etape.nature == 'COMMENTAIRE' : return
if not self.cata.modeleMetier : return
- print ('etape.objPyxb', etape.objPyxb)
- print (etape.objPyxb.toDOM(element_name='RN_EDG').toprettyxml())
+ if debug : print ('etape.objPyxb', etape.objPyxb)
+ if debug : print (etape.objPyxb.toDOM(element_name='RN_EDG').toprettyxml())
self.objPyxb.append(etape.objPyxb)
etape.perePyxb = self
#except pyxb.ValidationError as e:
# print(e.details())
- def toXml(self,fichier=None, debug=True):
+ def toXml(self,fichier=None, debug=False):
if debug : print ('ds to XML')
if not self.cata or not self.cata.modeleMetier : return
- if debug : print (' to xml ***************',self.objPyxb,'***************',)
- if debug : print (' to xml ***************',self,'***************',)
- if debug : print (' to xml ***************',self.objPyxb.orderedContent(),'***************',)
- if debug : print(self.objPyxb.toDOM().toprettyxml())
- if debug : print(self.objPyxb.toxml())
+ #if debug : print (' to xml ***************',self.objPyxb,'***************',)
+ #if debug : print (' to xml ***************',self,'***************',)
+ #if debug : print (' to xml ***************',self.objPyxb.orderedContent(),'***************',)
+ #if debug : print(self.objPyxb.toDOM().toprettyxml())
+ #if debug : print(self.objPyxb.toxml())
+ #ns1 = pyxb.namespace.Namespace("xsi:schemaLocation")
+ #monUri='http://chercheurs.edf.com/logiciels/{} {}'.format(self.code,os.path.basename(self.cata.fileModeleMetier))
+ #print ('monUri', monUri)
+ #pyxb.utils.domutils.BindingDOMSupport.DeclareNamespace(ns1, monUri)
+
+ ns1 = pyxb.namespace.Namespace("http://www.w3.org/2001/XMLSchema-instance")
+ pyxb.utils.domutils.BindingDOMSupport.DeclareNamespace(ns1, 'xsi')
+ texteXML = self.objPyxb.toDOM().toprettyxml()
+ if debug : print (texteXML)
+ if debug : print ('__________________________________________________________________________')
+ #enteteXML = '<ns1:{} xmlns:ns1="http://chercheurs.edf.com/logiciels/{}" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://chercheurs.edf.com/logiciels/{} file:{}>'.format(self.code,self.code,self.code,self.cata.fileModeleMetier)
return (self.objPyxb.toDOM().toprettyxml())
def analyseFromXML(self,debug=False):
- print ("je suis ds analyseFromXML -- > appel ds analyseXML de I_JDC.py")
+ if debug : print ("je suis ds analyseFromXML -- > appel ds analyseXML de I_JDC.py")
if self.procedure == "" : return
self.objPyxb=self.cata.modeleMetier.CreateFromDocument(self.procedure)
if not hasattr(self.cata.modeleMetier,'AccasUserAssd'):