import sys,os
import types
import Accas
-import inspect
+import imp
# CONTEXT est accessible (__init__.py de Noyau)
class X_definition:
# -----------------
- def getCode(self):
- if hasattr(self,'code') : return
+ def getNomDuCodeDumpe(self):
+ if hasattr(self,'nomDuCodeDumpe') : return
obj=self
- while ( not hasattr(obj,'code') ): obj=obj.pere
- self.code = obj.code
+ while ( not hasattr(obj,'nomDuCodeDumpe') ): obj=obj.pere
+ self.nomDuCodeDumpe = obj.nomDuCodeDumpe
#def genealogie(self,n):
# texte=self.nom
self.aCreer = False
if nom == 'T_Consigne' : return nom
listePossible=cata.dictTypesXSD[nom]
+ print (listePossible)
indice=0
while (indice < len(listePossible)) :
objAComparer=listePossible[indice]
#print ('------------------------------------------------')
if PourTraduction : print (self.nom)
- self.getCode()
+ self.getNomDuCodeDumpe()
self.nomDuTypePyxb = self.definitNomDuTypePyxb()
self.texteSimple = "" # on n ajoute pas de type simple
#
if self.aCreer :
self.texteComplexe = debutTypeCompo.format(self.nomDuTypePyxb)
- if inExtension : self.texteComplexe += debutEtension.format(self.code)
+ if inExtension : self.texteComplexe += debutEtension.format(self.nomDuCodeDumpe)
self.texteComplexe += debutTypeCompoSeq
texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils()
self.texteComplexe = texteComplexeVenantDesFils + self.texteComplexe
else :
self.texteComplexe = ""
- self.texteElt=eltCompoDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,self.minOccurs,self.maxOccurs)
+ self.texteElt=eltCompoDsSequence.format(self.nom,self.nomDuCodeDumpe,self.nomDuTypePyxb,self.minOccurs,self.maxOccurs)
#print (self.texteComplexe)
#print ('------------------------------------------------')
#print ('------------------------------------------------')
#print ('dumpXsd de ' , self.nom)
- self.getCode()
+ self.getNomDuCodeDumpe()
self.nomDuTypePyxb = self.definitNomDuTypePyxb()
self.texteSimple = "" # on n ajoute pas de type simple
else :
self.texteComplexe = ""
- self.texteElt=substDsSequence.format(self.code,self.nomDuTypePyxb,0,1)
+ self.texteElt=substDsSequence.format(self.nomDuCodeDumpe,self.nomDuTypePyxb,0,1)
#print ('------------------------------------------------')
if PourTraduction : print (self.nom)
#if self.nom == 'Fichier' : import traceback; traceback.print_stack()
#print ('exploreObjet SIMP')
- self.getCode()
+ self.getNomDuCodeDumpe()
self.aCreer = True
self.texteComplexe = ""
self.texteSimple = ""
# a revoir pour les tuples avec defaut
txtDefaut=""
for val in self.defaut : txtDefaut+=str(val) +" "
- self.texteElt = eltWithDefautDsSequence.format(nomUtil,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
+ self.texteElt = eltWithDefautDsSequence.format(nomUtil,self.nomDuCodeDumpe,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
else :
if str(self.defaut) == 'True' : txtDefaut = 'true'
else : txtDefaut = str(self.defaut)
- self.texteElt = eltWithDefautDsSequence.format(nomUtil,self.code,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
+ self.texteElt = eltWithDefautDsSequence.format(nomUtil,self.nomDuCodeDumpe,self.nomDuTypePyxb,minOccurs,1,txtDefaut)
- else : self.texteElt = eltDsSequence.format(nomUtil,self.code,self.nomDuTypePyxb,minOccurs,1)
+ else : self.texteElt = eltDsSequence.format(nomUtil,self.nomDuCodeDumpe,self.nomDuTypePyxb,minOccurs,1)
# self.aCreer est mis a jour ds definitNomDuTypePyxb
if not self.aCreer : return
def dumpXsd(self):
cata = CONTEXT.getCurrentCata()
- if self.fichierSource != self.module.__file__ :
- self.texteXSD = self.dumpDifferenceModuleMetier()
- return self.texteXSD
+ self.nomDuCodeDumpe=self.labelCode
+
+ print ('self.implementing -------------------', self.implementing)
+
self.texteSimple = ""
self.texteComplexe = ""
- self.nomDuTypePyxb='T_'+self.code
- self.texteCata = debutTypeCata.format(self.nomDuTypePyxb)
- for commande in self.commandes :
- commande.code=self.code
- commande.dumpXsd()
- self.texteSimple += commande.texteSimple
- self.texteSimple += commande.texteComplexe
- self.texteCata += commande.texteElt
- self.texteSimple += TypeEtEltAbstraitCodeSpec.format(self.code)
- self.texteCata += EltCodeSpecDsCata.format(self.code)
+ self.texteCata = ""
+
+ if self.implementing == "" :
+ self.texteCata = texteDebut.format(self.nomDuCodeDumpe,self.nomDuCodeDumpe,self.nomDuCodeDumpe)
+ self.texteCata += includeCata.format(self.nomDuCodeDumpe)
+ self.inExtension = False
+ else :
+ self.inExtension = True
+
+ self.texteElt = ""
+ self.nomDuTypePyxb = 'T_'+self.nomDuCodeDumpe
+ self.texteCata = debutTypeCata.format(self.nomDuTypePyxb)
+
+ self.dumpLesCommandes()
+
+
+ #for commande in self.commandes :
+ # commande.nomDuCodeDumpe=self.nomDuCodeDumpe
+ # commande.dumpXsd()
+ # self.texteSimple += commande.texteSimple
+ # self.texteSimple += commande.texteComplexe
+ # self.texteCata += commande.texteElt
+ #self.texteSimple += TypeEtEltAbstraitCodeSpec.format(self.nomDuCodeDumpe)
+ #self.texteCata += EltCodeSpecDsCata.format(self.nomDuCodeDumpe)
self.texteCata += finTypeCata
- self.texteElt = eltCata.format(self.code,self.code, self.nomDuTypePyxb)
+ self.texteElt = eltCata.format(self.nomDuCodeDumpe,self.nomDuCodeDumpe, self.nomDuTypePyxb)
- self.texteXSD = texteDebut.format(self.code,self.code,self.code,self.code)
+ self.texteXSD = texteDebut.format(self.nomDuCodeDumpe,self.nomDuCodeDumpe,self.nomDuCodeDumpe,self.nomDuCodeDumpe)
#self.texteXSD += textDeclaration
self.texteXSD += self.texteSimple
self.texteXSD += self.texteCata
return self.texteXSD
- def dumpDifferenceModuleMetier(self):
- fichierSourceExt=os.path.basename(self.fichierSource)
- fichierSource, extension=os.path.splitext(fichierSourceExt)
-
- allClassFromVimp=[]
- o=__import__(fichierSource,{},{})
- for k,d in inspect.getmembers(o):
- allClassFromVimp.append(k)
-
+ def dumpLesCommandes(self):
+ cata = CONTEXT.getCurrentCata()
+ fichierCataSourceExt=os.path.basename(cata.cata.__file__)
+ fichierCataSource, extension=os.path.splitext(fichierCataSourceExt)
+ importCataSource=__import__(fichierCataSource,{},{})
+
+ texte=""
+ for m in sys.modules:
+ monModule=sys.modules[m]
+ try :
+ if m in ('os', 'sys', 'inspect', 'six', 'pickle', 'codecs') : continue
+ if m in ('cPickle', 'pprint', 'dis', '_sre', 'encodings.aliases'): continue
+ if m in ('numbers', 'optparse', 'binascii', 'posixpath') : continue
+ if m in ('_locale', '_sysconfigdata_nd', 'gc', 'functools') : continue
+ if m in ('posixpath', 'types', 'posix', 'prefs') : continue
+ if m in ('warnings', 'types', 'posix', 'prefs') : continue
+ if monModule.__name__[0:15] == '_sysconfigdata_' : continue
+ if monModule.__name__ == '__future__' : continue
+ if monModule.__name__[0:3] == 'Ihm' : continue
+ if monModule.__name__[0:5] == 'numpy' : continue
+ if monModule.__name__[0:5] == 'Noyau' : continue
+ if monModule.__name__[0:5] == 'Accas' : continue
+ if monModule.__name__[0:7] == 'convert' : continue
+ if monModule.__name__[0:7] == 'Efi2Xsd' : continue
+ if monModule.__name__[0:7] == 'Editeur' : continue
+ if monModule.__name__[0:9] == 'generator' : continue
+ if monModule.__name__[0:10] == 'Validation' : continue
+ if monModule.__name__[0:10] == 'Extensions' : continue
+ if monModule.__name__[0:12] == 'InterfaceQT4' : continue
+ if monModule.__name__ == fichierCataSource : continue
+ texte= texte + "try : import "+ monModule.__name__ + " \n"
+ texte= texte + "except : pass \n"
+ texte= texte + "try : from "+ monModule.__name__ + ' import * \n'
+ texte= texte + "except : pass \n"
+ except :
+ pass
+
+ newModule=imp.new_module('__main__')
+ exec (texte, newModule.__dict__)
allClassToDump=[]
- for key, data in inspect.getmembers(self.module):
- if key in allClassFromVimp : continue
- if key != "modeleMetier" : allClassToDump.append(data)
+ for i in dir(importCataSource):
+ if i not in dir(newModule):
+ allClassToDump.append(importCataSource.__dict__[i])
+
- self.texteSimple = ""
- self.texteComplexe = ""
- self.texteCata = texteDebut.format(self.code,self.code,self.code)
- self.texteCata += includeCata.format(self.code)
- self.texteElt = ""
-
+ self.texteSimple = ''
+ self.texteElt = ''
for c in allClassToDump :
- if not(isinstance(c, Accas.OPER)) and not(isinstance(c, Accas.PROC)) : continue
- c.code=self.code
- c.dumpXsd(inExtension=True)
+ if not(isinstance(c, Accas.OPER)) and not(isinstance(c, Accas.PROC)) : continue
+ c.nomDuCodeDumpe=self.nomDuCodeDumpe
+ c.dumpXsd(self.inExtension)
self.texteSimple += c.texteSimple
self.texteSimple += c.texteComplexe
- c.texteElt=eltCompoDsSequenceInExtension.format(c.nom,self.code,c.nomDuTypePyxb)
- self.texteElt += c.texteElt
- #print (self.texteCata)
- #print (self.texteSimple)
- #print (self.texteElt)
- self.texteXSD = self.texteCata+'\n'+self.texteSimple+'\n'+self.texteElt+'\n'+texteFin+'\n'
- #if not PourTraduction : print (self.texteXSD)
- return self.texteXSD
+ c.texteElt=eltCompoDsSequenceInExtension.format(c.nom,self.nomDuCodeDumpe,c.nomDuTypePyxb)
+ self.texteCata += c.texteElt