self.text=PythonGenerator.gener(self,obj,format)
return self.text
+ def generDico(self,obj,format='brut',config=None,appliEficas=None):
+
+ self.initDico()
+ # Cette instruction genere le contenu du fichier de commandes (persistance)
+ self.text=PythonGenerator.gener(self,obj,format)
+ return self.dicoComm
+
#----------------------------------------------------------------------------------------
# initialisations
def initDico(self) :
- self.Dico={}
- self.texteDico = ""
+ self.dicoComm={}
+ self.rang=0
#----------------------------------------------------------------------------------------
def writeDefault(self,fn) :
fileDico = fn[:fn.rfind(".")] + '.py'
f = open( str(fileDico), 'w')
- f.write('Dico = '+str(self.Dico))
+ f.write('dicoComm = '+str(self.dicoComm))
f.close()
#----------------------------------------------------------------------------------------
objTraite=objTraite.parent
if objTraite.nature == 'JDC' : break
if objTraite.nature == 'BLOC' : continue
- if objTraite.nature == 'OPERATEUR' :
- if objTraite.sd.nom != None : listeParents.insert(0,objTraite.sd.nom)
- else : listeParents.insert(0,'SD_non_nommee_erreur')
+ if objTraite.nature == 'OPERATEUR' or objTraite.nature == 'PROCEDURE' :
+ listeParents.insert(0,objTraite)
elif objTraite.nature == 'MCList' :
if len(objTraite.data > 1) :
- monRang=objTraite.data.index(objTraite)
- listeParents.insert(0,objTraite.nom+'_'+str(monRang))
+ monRang=objTraite.data.index(objTraite)
+ listeParents.insert(0,objTraite.nom+'_'+str(monRang))
else : listeParents.insert(0,objTraite.nom)
else : listeParents.insert(0,objTraite.nom)
- courant=self.Dico
- for p in listeParents:
+ courant=self.dicoComm
+ # On traite l etape pour ajouter le rang et la classe
+ etape=listeParents[0]
+ ordreId=etape.parent.etapes.index(etape)
+ if etape.nature == 'OPERATEUR' :
+ if not etape.sd.nom in courant.keys() :
+ courant[etape.sd.nom]={}
+ courant[etape.sd.nom]["@classeAccas"]= etape.nom
+ courant[etape.sd.nom]["@ordreAccas" ]= ordreId
+ courant=courant[etape.sd.nom]
+ else :
+ if not etape.nom in courant.keys() :
+ courant[etape.nom]={}
+ courant[etape.nom]["@classeAccas"]= etape.nom
+ courant[etape.nom]["@ordreAccas" ]= ordreId
+ courant=courant[etape.nom]
+ else :
+ if not(isinstance(courant[etape.nom], list)) :
+ laListe=[courant[etape.nom],]
+ courant[etape.nom]=laListe
+ newDict={}
+ newDict["@classeAccas"]= etape.nom
+ newDict["@ordreAccas" ]= ordreId
+ courant[etape.nom].append(newDict)
+ courant=newDict
+ for p in listeParents[1:]:
if not (p in courant.keys()) : courant[p]={}
courant=courant[p]
- courant[obj.nom]=s
- self.texteDico+=obj.nom+ "=" + s[0:-1]+ "\n"
+ # on transforme les concepts en nom
+ laValeur=self.transformeObjInRef(obj)
+ courant[obj.nom]=laValeur
return s
+ def transformeObjInRef(self,obj) :
+ # cas d une matrice d ASSD
+ for ssType in obj.definition.type:
+ if hasattr(ssType,'typElt') :
+ if ssType.typElt not in ('R','I','C','TXM') :
+ # on a une matrice d ASSD
+ listeLigne=[]
+ for ligne in obj.val:
+ col=[]
+ for elt in ligne :
+ col.append(elt.nom)
+ listeLigne.append(col)
+ return listeLigne
+ if obj.nom == 'library_map' : print (type(obj.valeur))
+ waitASSDTuple=0
+ if type(obj.valeur) in (tuple,list) :
+ for ss_type in obj.definition.type:
+ if repr(ss_type).find('Tuple') != -1 :
+ if hasattr(ssType,'typeDesTuples') :
+ for t in ssType.typeDesTuples :
+ if t not in ('R','I','C','TXM') :
+ waitASSDTuple=1
+ break
+ elif ss_type not in ('R','I','C','TXM'):
+ waitASSDTuple=1
+ if waitASSDTuple :
+ listeRetour=[]
+ for elt in obj.val :
+ if hasattr(elt,'nom') : listeRetour.append(elt.nom)
+ else : listeRetour.append(elt)
+ return listeRetour
+
+ if hasattr(obj.val,'nom') : listeRetour.append(obj.val.nom)
+ return obj.val
+
+