From: pascale.noyret Date: Thu, 26 Apr 2018 14:34:10 +0000 (+0200) Subject: chgt de noms des fichiers X-Git-Tag: V8_5_0rc2a2~3^2~5 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=e29033d0d813ef35d7b668efbdfe80502489d4b6;p=modules%2Feficas.git chgt de noms des fichiers --- diff --git a/Efi2Xsd/AccasXsd.py b/Efi2Xsd/AccasXsd.py new file mode 100755 index 00000000..e05e7be4 --- /dev/null +++ b/Efi2Xsd/AccasXsd.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import sys,os +import types + +#import raw.efficas as efficas +sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..'))) + +# ds l init du SIMP il manque siValide et fenetreIhm + +from mapDesTypes import dictSIMPEficasXML, dictSIMPXMLEficas +from mapDesTypes import dictFACTEficasXML, dictFACTXMLEficas +from mapDesTypes import dictPROCEficasXML, dictPROCXMLEficas +from mapDesTypes import dictOPEREficasXML, dictOPERXMLEficas +from mapDesTypes import dictBLOCEficasXML, dictBLOCXMLEficas +from mapDesTypes import dictPourCast, dictNomsDesTypes +from mapDesTypes import listeParamDeTypeTypeAttendu, listeParamDeTypeStr, dictPourCast +from mapDesTypes import listeParamTjsSequence, listeParamSelonType + + +from balises import * + +# ----------------- +class X_definition: +# ----------------- + + def getCode(self): + if hasattr(self,'code') : return + obj=self + while ( not hasattr(obj,'code') ): obj=obj.pere + self.code = obj.code + + def genealogie(self): + texte=self.nom + obj=self + while ( hasattr(obj,'pere') ): + texte=obj.pere.nom+'_'+texte + obj=obj.pere + return 'T_'+texte + + def nomSimple(self): + return 'T_'+self.nom + #return self.genealogie() + + + +# ---------------------------------------- +class X_definitionComposee (X_definition): +# ---------------------------------------- + + + def dumpXsd(self): + #print ('------------------------------------------------') + #print ('dumpXsd de ' , self.nom) + + self.getCode() + self.nomDuTypeCree = self.nomSimple() + self.texteSimple = "" # on n ajoute pas de type simple + + self.texteComplexe = debutTypeComplexe.format(self.nomDuTypeCree) + texteComplexeVenantDesFils="" + for nom in self.ordre_mc: + mcFils = self.entites[nom] + mcFils.dumpXsd() + self.texteComplexe += mcFils.texteElt + self.texteSimple += mcFils.texteSimple + texteComplexeVenantDesFils += mcFils.texteComplexe + self.texteComplexe += finTypeComplexe + self.texteComplexe = texteComplexeVenantDesFils + self.texteComplexe + + self.traduitMinMax() + self.texteElt=eltDsSequence.format(self.nom,self.code,self.nomDuTypeCree,self.minOccurs,self.maxOccurs) + + def traduitMinMax(self): + # ____________________ + # valable pour bloc, proc et oper + self.minOccurs = 0 + self.maxOccurs = 1 + +# --------------------------------- +class X_FACT (X_definitionComposee): +#--------- ------------------------ + def traduitMinMax(self): + if self.max == '**' or self.max == float('inf') : self.maxOccurs="unbounded" + else : self.maxOccurs = self.max + self.minOccurs = self.min + if self.statut =='f' : self.minOccurs=0 + +# --------------------------------- +class X_OPER (X_definitionComposee): +# --------------------------------- + pass + +# ---------------------------------- +class X_PROC (X_definitionComposee): +#----------------------------------- + pass + +#----------------------------------- +class X_BLOC (X_definitionComposee): +#----------------------------------- + def dumpXsd(self): + X_definitionComposee.dumpXsd(self) + +#-------------------------------- +class X_SIMP (X_definition): +#-------------------------------- + def dumpXsd(self): + #print ('exploreObjet SIMP') + self.getCode() + + # --> homonymie on peut utiliser genealogie + #self.traduitMinMax() + #self.traduitValMinValMax() + self.nomDuTypeDeBase = self.traduitType() + self.nomDuTypeCree = self.nomSimple() + self.texteSimple = typeSimple.format(self.nomDuTypeCree, self.nomDuTypeDeBase) + self.texteComplexe = "" + + # on se sert des listes si maxOccurs est > 0 + if self.statut =='f' : minOccurs = 0 + else : minOccurs = 1 + self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypeCree,minOccurs,1) + + + def traduitType(self): + # il faut traduire le min et le max + # il faut ajouter les regles + # il faut gerer les types tuple et fichier + return dictNomsDesTypes[self.type[0]] + + def traduitValMinValMax(self): + self.maxInclusive=self.val_max + self.minInclusive=self.val_min + if self.val_min == float('-inf') and val_max== float('inf') : return + print ('il faut affiner le type du SIMP ', self.nom) + if self.val_max == '**' or self.val_max == float('inf') : self.maxInclusive=None + else : self.maxInclusive = self.val_max + if self.val_min == '**' or self.val_max == float('-inf') : self.maxInclusive=None + else : self.minInclusive = self.val_min + + def traduitMinMax(self): + if self.min == 1 and self.max == 1 : return + print ('il faut creer une liste ' , self.nom) + + +#----------------- +class X_JDC_CATA : +#----------------- + + def dumpXsd(self): + self.texteSimple = "" + self.texteComplexe = "" + self.nomDuTypeCree='T_'+self.code + self.texteCata = debutTypeCata.format(self.nomDuTypeCree) + for commande in self.commandes : + commande.code=self.code + commande.dumpXsd() + self.texteSimple += commande.texteSimple + self.texteSimple += commande.texteComplexe + self.texteCata += commande.texteElt + self.texteCata += finTypeCata + self.texteElt=eltCata.format(self.code, self.nomDuTypeCree) + print (self.texteSimple) + print (self.texteComplexe) + print (self.texteCata) + print (self.texteElt) + diff --git a/Efi2Xsd/MCAccasXsd.py b/Efi2Xsd/MCAccasXsd.py new file mode 100755 index 00000000..eb20219c --- /dev/null +++ b/Efi2Xsd/MCAccasXsd.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import sys,os +#import raw.efficas as efficas +import types + +sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..'))) + + + +class X_MCSIMP: +# ------------- + + def buildObjPyxb(self) : + if not self.cata.modeleMetier : return + #print ('X_MCSIMP buildObjPyxb', self.nom, self) + self.monNomDeClasseModeleMetier='T_'+self.nom + self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomDeClasseModeleMetier) + if self.val != None : self.objPyxb=self.maClasseModeleMetier(self.val) + else : self.objPyxb=self.maClasseModeleMetier() + #print ('fin X_MCSIMP', self.objPyxb, self.nom,self) + + + def setValeurObjPyxb(self,newVal): + if not self.cata.modeleMetier : return + print ('setValeurObjPyxb') + if newVal != None : nvlObj=self.maClasseModeleMetier(newVal) + else : nvlObj=self.maClasseModeleMetier() + self.val=newVal + self.objPyxb=nvlObj + setattr(self.parent.objPyxb, self.nom, nvlObj) + + +class X_MCCOMPO: +# -------------- +# + def buildObjPyxb(self,mc_list) : + if not self.cata.modeleMetier : return + print ('X_MCCOMPO buildObjPyxb', self.nom, self) + self.monNomDeClasseModeleMetier='T_'+self.nom + self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomDeClasseModeleMetier) + listArg=[] + for objAccas in mc_list : + from Accas.A_MCLIST import MCList + if isinstance(objAccas,MCList) : + for mcfact in objAccas : listArg.append(mcfact.objPyxb) + else : listArg.append(objAccas.objPyxb) + print (listArg) + self.objPyxb=self.maClasseModeleMetier(*listArg) + +class X_MCFACT : +# -------------- +# Pour un MCFACT : +# le buildObjPyxb sera pris en charge par X_MCLIST +# on ne fait rien + + def buildObjPyxb(self,mc_list): + #print ('X_MCFACT buildObjPyxb debut et fin', self.nom, self) + pass + +class X_MCLIST: +# -------------- + + + def buildObjPyxb(self,factList): + if not self.cata.modeleMetier : return + #print ('X_MCLIST buildObjPyxb', self.nom, self) + + self.monNomDeClasseModeleMetier='T_'+self.nom + self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomDeClasseModeleMetier) + for objAccas in factList : + listArg=[] + for objAccasFils in objAccas.mc_liste : + listArg.append(objAccasFils.objPyxb) + objAccas.objPyxb=self.maClasseModeleMetier(*listArg) + #print (objAccas , 'ds MCLIST a pour obj pyxb', objAccas.objPyxb) + +class X_JDC: +# ---------- + + def __init__(self): + #print ('X_JDC buildObjPyxb', self) + if not self.cata.modeleMetier : return + self.monNomDeClasseModeleMetier=self.code + self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomDeClasseModeleMetier) + self.objPyxb=self.maClasseModeleMetier() + #print ('fin X_JDC buildObjPyxb', self.objPyxb, self) + + def enregistreEtapePyxb(self,etape): + # OK seulement si sequence (choice ? ...) + print ('ds enregistreEtapePyxb', etape.nom) + if not self.cata.modeleMetier : return + self.objPyxb.append(etape.objPyxb) + #self.toXml() + + def toXml(self): + if not self.cata.modeleMetier : return + print(self.objPyxb.toDOM().toprettyxml()) + print(self.objPyxb.toxml()) + + + +if __name__ == "__main__": + print ('a faire') diff --git a/Efi2Xsd/ReadmeFichiers.txt b/Efi2Xsd/ReadmeFichiers.txt new file mode 100644 index 00000000..3294b362 --- /dev/null +++ b/Efi2Xsd/ReadmeFichiers.txt @@ -0,0 +1,17 @@ +AccasXsd.py + contient les classes qui font le lien entre les classes de definition Accas et les classes pyxb generees a partir du XSD genere a partir du catalogue + +balises.py + contient les balises necessaires pour generer le xsd metier a partir du catalogue eficas (ou .py ou en .xsd) + +efficas.py + contient le modele genere par pyxb a partir du XSD eficas + +mapDesTypes.py + fait le lien bidirectionnel entre les types ACCAS et les types XSD + +MCAccasXsd.py + contient les classes qui font le lien entre les classes objet Accas et les classes pyxb generees a partir du XSD genere a partir du catalogue + +readerEfiXsd.py + contient les classes qui font le lien entre les classes de definition Accas et les classes pyxb generees a partir du modele eficas XSD