]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
pour sauvegarde seulement
authorpascale.noyret <pascale.noyret@edf.fr>
Wed, 27 Jun 2018 09:40:39 +0000 (11:40 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Wed, 27 Jun 2018 09:40:39 +0000 (11:40 +0200)
Efi2Xsd/MCAccasXsd.py

index 9026b70eee4e97f5249839e01dd0ff9967463644..03ee55ebd7f3ed48514c17a3f06c1e8c11a405f9 100755 (executable)
@@ -21,14 +21,17 @@ class X_MCSIMP:
       # self.valeur tient compte de la valeur par defaut
       # utiliser getValeur ? expression numpy
       if not self.cata.modeleMetier : return
+      if CONTEXT.fromXML : return
       #print ('X_MCSIMP buildObjPyxb', self.nom, self,self.valeur)
       self.monNomClasseModeleMetier='T_'+self.nom
       self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
       #print (self.maClasseModeleMetier)
-      #print (self.valeur)
+      print (self.valeur)
+      print (type(self.valeur))
       if self.valeur != None : self.objPyxb=self.maClasseModeleMetier(self.valeur)
       elif self.definition.into != None and 'TXM' in self.definition.type  : self.objPyxb = None
       else                   : self.objPyxb=self.maClasseModeleMetier()
+      self.filsPyxb=None
       #print ('fin X_MCSIMP', self.objPyxb, self.nom,self)
 
 
@@ -99,27 +102,33 @@ class X_MCCOMPO:
 # 
    def buildObjPyxb(self,mc_list) :
       if not self.cata.modeleMetier : return
-      #print ('_______________________________________')
-      #print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list)
+      if CONTEXT.fromXML : return
+      print ('_______________________________________')
+      print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list)
       self.monNomClasseModeleMetier='T_'+self.nom
       self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
       listArg=[]
       for objAccas in mc_list :
          # on remonte les mots-clefs des blocs
         #print (type (objAccas))
-       if type (objAccas.objPyxb) == list :
-           for fils in objAccas.objPyxb : 
-               listArg.append(fils.objPyxb)
+        if objAccas.nature == 'MCBLOC' :
+           # Attention --> mc_list et mc_liste 
+           for fils in objAccas.mc_liste:
                fils.perePyxb=self
+               listArg.append(fils.objPyxb)
                print (fils.nom ,' a pour pere Pyxb', self, self.nom)
+        elif objAccas.nature == 'MCList' :
+           for fils in objAccas : 
+               fils.perePyxb=self
+               listArg.append(fils.objPyxb)
         else :
            listArg.append(objAccas.objPyxb)
            objAccas.perePyxb=self
-           print (objAccas.nom ,' a pour pere Pyxb', self, self.nom)
+           #print (objAccas.nom ,' a pour pere Pyxb', self, self.nom)
          #print ( objAccas.nom, ' a pour perepyxb ' , objAccas.perePyxb.nom) 
       self.objPyxb=self.maClasseModeleMetier(*listArg)
-      #print ('Fin ', self.nom, self.objPyxb)
-      #print ('_______________________________________')
+      print ('Fin ', self.nom, self.objPyxb)
+      print ('_______________________________________')
 
    def deletePyxbObject(self):
       print ('******************************************')
@@ -135,18 +144,21 @@ class X_MCCOMPO:
 class X_MCBLOC (X_MCCOMPO):
 # --------------------------
    def buildObjPyxb(self,mc_list):
+      if CONTEXT.fromXML : return
       if not self.cata.modeleMetier : return
+      # mise a none ? le bloc n a pas d existence en pyxb
       self.perePyxb=None
-      #print ('_______________________________________')
+      print ('_______________________________________')
       print ('X_MCBLOC buildObjPyxb', self.nom, self, mc_list)
-      import traceback
-      #traceback.print_stack()
-      # il faut attacher les objets au pere 
-      self.objPyxb=[]
+      # on rattache ses fils au bloc mais leur pere sera ensuite le MCCOMPO qui contient le bloc 
+      # Pas sur d en avoir besoin
+      self.filsPyxb=[]
+      self.objPyxb=None
       for objAccas in mc_list :
-         self.objPyxb.append(objAccas)
-      #print ('Fin ', self.nom, self.objPyxb)
-      #print ('_______________________________________')
+         self.filsPyxb.append(objAccas.objPyxb)
+      print (self.filsPyxb)
+      print ('Fin ', self.nom, self.objPyxb)
+      print ('_______________________________________')
 
         
        
@@ -155,46 +167,54 @@ class X_MCLIST (X_MCCOMPO):
 # --------------------------
  
    def buildObjPyxb(self,mc_list):
-      #print ('_______________________________________')
-      #print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self)
-      if not self.cata.modeleMetier : return
-      self.monNomClasseModeleMetier='T_'+self.nom
-      self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
-      listArg=[]
+      print ('_______________________________________')
+      print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self)
+      print ('on ne fait rien')
+      print ('_______________________________________')
+      pass
+
+   #def build2ObjPyxb(self,mc_list):
+   #   if CONTEXT.fromXML : return
+   #   print ('_______________________________________')
+   #   print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self)
+   #   if not self.cata.modeleMetier : return
+   #   self.monNomClasseModeleMetier='T_'+self.nom
+   #   self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+   #   listArg=[]
       # MCList est une liste
-      for nbDeSequence in self :
-         for objAccas in nbDeSequence.mc_liste :
+   #   for nbDeSequence in self :
+   #      for objAccas in nbDeSequence.mc_liste :
              #print (type (objAccas))
              #print (objAccas.nom, objAccas.objPyxb, type(objAccas.objPyxb))
             #print ( type (objAccas.objPyxb) == list )
             if type (objAccas.objPyxb) == list :
                 #print ('ds le if')
-                for fils in objAccas.objPyxb : 
-                   listArg.append(fils.objPyxb)
-                   fils.perePyxb=self
-                   print (fils.nom ,' a pour pere Pyxb', self, self.nom)
-             else :
-                 listArg.append(objAccas.objPyxb)
-                 objAccas.perePyxb=self
-                 print (objAccas.nom ,' a pour pere Pyxb', self, self.nom)
+   #             for fils in objAccas.objPyxb : 
+   #                listArg.append(fils.objPyxb)
+   #                fils.perePyxb=self
+                   #print (fils.nom ,' a pour pere Pyxb', self, self.nom)
+   #          else :
+   #              listArg.append(objAccas.objPyxb)
+   #              objAccas.perePyxb=self
+                 #print (objAccas.nom ,' a pour pere Pyxb', self, self.nom)
              #listArg.append(objAccas.objPyxb)
              #objAccas.perePyxb=self
              #print ( objAccas.nom, ' a pour perepyxb ' , objAccas.perePyxb.nom) 
       
-      #print ('X_MCLIST', self.nom, self, listArg)
-      self.objPyxb=self.maClasseModeleMetier(*listArg)
-      print ('fin buildObjPyxb traite ds X_MCLIST', self.nom, self, self.objPyxb)
-      print ('_______________________________________')
+   #   print ('X_MCLIST', self.nom, self, listArg)
+   #   self.objPyxb=self.maClasseModeleMetier(*listArg)
+   #   print ('fin buildObjPyxb traite ds X_MCLIST', self.nom, self, self.objPyxb)
+   #   print ('_______________________________________')
 
 class X_MCFACT (X_MCCOMPO):
 # -------------------------
 # on gere au niveau du MCLIST
-
-   def buildObjPyxb(self,mc_list):
-      #print ('_______________________________________')
-      #print ('X_MCFACT buildObjPyxb debut et fin', self.nom, self)
-      #print ('_______________________________________')
       pass
+
+   #def build2ObjPyxb(self,mc_list):
+   #   print ('_______________________________________')
+   #   print ('X_MCFACT buildObjPyxb debut et fin', self.nom, self)
+   #   print ('_______________________________________')
   
 
 class X_JDC (X_MCCOMPO):
@@ -203,7 +223,6 @@ class X_JDC (X_MCCOMPO):
    def  __init__(self):
       #print ('_______________________________________')
       #print ('X_JDC buildObjPyxb',  self)
-      self.source=None
       if not self.cata.modeleMetier : return
       self.monNomClasseModeleMetier=self.code
       self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
@@ -217,13 +236,13 @@ class X_JDC (X_MCCOMPO):
      # OK seulement si sequence (choice ? ...)
       print ('ds enregistreEtapePyxb', etape.nom)
       if not self.cata.modeleMetier : return
-      if self.source== "xml" : return
+      #if self.source== "xml" : return
       self.objPyxb.append(etape.objPyxb)
       etape.perePyxb = self
       #self.toXml()
 
    def toXml(self):
-      if not self.cata.modeleMetier : return
+      #if not self.cata.modeleMetier : return
       print(self.objPyxb.toDOM().toprettyxml())
       print(self.objPyxb.toxml())
         
@@ -235,29 +254,43 @@ class X_JDC (X_MCCOMPO):
       self.objPyxb=self.cata.modeleMetier.CreateFromDocument(self.procedure)
       for objEtape in self.objPyxb.content():
           print ('analyse de ', objEtape)
-          dictArgs= (self.pyxbToDict(objEtape))
-          #objEtape.monNomClasseAccas=objEtape.monNomClasseModeleMetier[2:-2]
-          #maClasseAccas=getattr(self.cata,objEtape.monNomClasseAccas)
+          objEtape.dictArgs= (self.pyxbToDict(objEtape))
+          objEtape.monNomClasseAccas=objEtape._ExpandedName.localName()
+          print (objEtape.monNomClasseAccas, type(objEtape.monNomClasseAccas))
+          print (objEtape._ExpandedName, type(objEtape._ExpandedName))
+          objEtape.monNomClasseAccas=objEtape.monNomClasseAccas[2:]
+          #print (objEtape)
+          #print (objEtape.monNomClasseAccas)
+          maClasseAccas=getattr(self.cata,objEtape.monNomClasseAccas)
           print ( '________________')
+          print (objEtape , type(objEtape))
+          #print (dir(objEtape))
           print (objEtape.dictArgs)
           print ( '________________')
-          #objAccasEtape=maClasseAccas(**(objEtape.dictArgs))
+          objAccasEtape=maClasseAccas(**(objEtape.dictArgs))
       self.source='None'
 
    def pyxbToDict(self,objAAnalyser):
+    # la transformation de l objAAnalyser ne fonctionne pas pour tout
+    # faudrait - il travailler sur les types des objets ?
+    # c est a revoir -> fonction cast a prevoir ds les 2 sens
     if objAAnalyser is None: return
     dictArgs = {}
     if isinstance(objAAnalyser, pyxb.binding.basis.simpleTypeDefinition): 
-       if isinstance(objAAnalyser, types.StringTypes): return pyxb.utils.utility.QuotedEscaped(objAAnalyser,)
+       if isinstance(objAAnalyser, pyxb.binding.basis.enumeration_mixin):   return str(objAAnalyser)
+       if isinstance(objAAnalyser, types.StringTypes): return str(objAAnalyser,)
+       if isinstance(objAAnalyser, types.FloatType): return float(objAAnalyser,)
+       if isinstance(objAAnalyser, (types.IntType, types.LongType)): return int(objAAnalyser,)
        if isinstance(objAAnalyser, (types.NoneType, types.BooleanType, types.FloatType, types.IntType, types.LongType)):
         return repr(objAAnalyser)
+       #if isinstance(objAAnalyser, types.StringTypes): return pyxb.utils.utility.QuotedEscaped(objAAnalyser,)
        #pour une enum getattr(value dans le type)
        # return pythonLiteral(ReferenceFacet(facet=value, **kw))
        return objAAnalyser
     for expandedName, elementDeclaration in objAAnalyser._ElementMap.items():
         objPyxbName  = expandedName.localName()
         objPyxbValue = getattr(objAAnalyser, objPyxbName)
-        print (objPyxbName,objPyxbValue) 
         if objPyxbValue == None or objPyxbValue == [] : continue
         if elementDeclaration.isPlural():
             dictArgs[objPyxbName] = []
@@ -265,9 +298,9 @@ class X_JDC (X_MCCOMPO):
         else:
             dictArgs[objPyxbName] = self.pyxbToDict(getattr(objAAnalyser, objPyxbName))
     print ("***********************************")
-    print (objAAnalyser)
+    print ('pyxbToDict ', objAAnalyser)
     print (dictArgs)
-    for i in dictArgs.keys(): print (i, " ", dictArgs[i], " ", type(dictArgs[i]))
+    #for i in dictArgs.keys(): print (i, " ", dictArgs[i], " ", type(dictArgs[i]))
     print ("***********************************")
     return dictArgs