]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
pour les chaines avec blancs
authorpascale.noyret <pascale.noyret@edf.fr>
Thu, 10 Jun 2021 12:41:38 +0000 (14:41 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Thu, 10 Jun 2021 12:41:38 +0000 (14:41 +0200)
Efi2Xsd/AccasXsd.py
Efi2Xsd/MCAccasXML.py
Efi2Xsd/balisesXSD.py
Noyau/N_MCSIMP.py
Noyau/N_SIMP.py

index 9e01fc6707ca27c7753dcd782abc7e9b2432b007..0f63f0d2592956393a541eedfff46f4fc59ea7c3 100755 (executable)
@@ -187,7 +187,7 @@ class X_definition:
 class X_compoFactoriseAmbigu(X_definition):
 # ----------------------------------------
 
-    def __init__(self,nom,listeDeCreation,pere, debug=False):
+    def __init__(self,nom,listeDeCreation,pere, debug=True):
 
         if debug :
             for i in listeDeCreation : print (i.nom)
@@ -945,6 +945,10 @@ class X_SIMP (X_definition):
            self.dumpSpecifiqueTuple(minOccurs)
            return
 
+        if self.avecBlancs and self.max > 1 :
+           self.dumpSpecifiqueTexteAvecBlancs(minOccurs,multiple)
+           return
+
         #print ('minOccurs',minOccurs)
         # le defaut est dans l elt Name -> tester la coherence d existence avec Accas
         # regles Accas
@@ -964,9 +968,7 @@ class X_SIMP (X_definition):
             if self.defaut :
                if self.max > 1 or self.max == '**' or self.max ==  float('inf') : 
                     txtDefaut=""
-                    if not('TXM' in (self.type)) : separe = ' ' 
-                    else : separe ='\n'
-                    for val in self.defaut : txtDefaut+=str(val) + separe 
+                    for val in self.defaut : txtDefaut+=str(val) + " " 
                     # cela ne fonctionne pas tres bien. a revoir
                     txtDefaut+=txtDefaut[0:-1]
                     if not('TXM' in (self.type)) : 
@@ -1057,6 +1059,42 @@ class X_SIMP (X_definition):
         self.texteSimple = self.texteSimplePart1 + self.texteSimplePart2
 
 
+    def dumpSpecifiqueTexteAvecBlancs(self,minOccurs,multiple):
+        # attention multiple non traite
+        # pour l instant on n a pas max =1 et on ne traite pas les into
+
+        texteAide = ""
+        if  self.ang != '' : texteAide = self.ang
+        elif self.fr != '' : texteAide = self.fr
+
+        self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,texteAide)
+        txtDefaut=""
+        # Pas de Defaut pour les string en XSD
+        # max sert pour la taille de la liste
+        if self.defaut : texteAide += ' Valeur par defaut dans le comm : '+str(self.defaut)
+        if texteAide != ''  : self.texteElt = eltDsSequenceWithHelp.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1,texteAide)
+        else : self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1)
+         
+        
+        if self.max == '**' or self.max ==  float('inf') : max='unbounded'
+        else  : max = self.max
+  
+        if self.max > 1 : # juste au cas ou on traite 1 pareil
+            self.texteSimple = ''
+            cata = CONTEXT.getCurrentCata()
+            if self.nomDuTypePyxb in cata.listeTypeTXMAvecBlancs: return
+            cata.listeTypeTXMAvecBlancs.add(self.nomDuTypePyxb)
+            self.texteSimple = complexChaineAvecBlancs.format(self.nomDuTypePyxb,max,self.nomDuTypePyxb)
+            if self.intoXML != None : into = self.intoXML
+            else : into = self.into
+            if into  == None :
+               self.texteSimple += typeEltChaineAvecBlancSansInto.format(self.nomDuTypePyxb)
+            else : 
+               self.texteSimple += debutChaineAvecBlancsInto.format(self.nomDuTypePyxb)
+               for val in into : self.texteSimple += milieuChaineAvecBlancsInto.format(val)
+               self.texteSimple += finChaineAvecBlancsInto
+           
+        
     def dumpSpecifiqueTuple(self,minOccurs):
         self.nomDuTypeDeBase = self.traduitType()
         tousPareil=True
index 82b544e8a1899cf0ae920d87c811c9a699dc0023..c6937f8be124e3fb37fb414ab2265e58104ccb60 100755 (executable)
@@ -129,9 +129,8 @@ class X_OBJECT:
 class X_MCSIMP(X_OBJECT):
 # -----------------------
 
-    def buildObjPyxb(self, debug=False) :
+    def buildObjPyxb(self, debug=True) :
         if not self.cata or not self.cata.modeleMetier : return
-        #if self.nom == 'initial_rod_positions' : debug = True
         if self.nom == 'Consigne' : return None
         if debug : print (self.definition.nomComplet())
         if debug : print ('_______________ X_MCSIMP buildObjPyxb', self.nom, self,self.valeur)
@@ -186,6 +185,14 @@ class X_MCSIMP(X_OBJECT):
                     self.objPyxb.append(self.maClasseModeleMetier(*listeConstruction))
                     if debug  : print (self.objPyxb)
                   return
+            if self.waitChaineAvecBlancs() and self.definition.max > 1:
+               self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+               print (self.valeur)
+               self.objPyxb = self.maClasseModeleMetier(*self.valeur)
+               if debug : print ('X_MCSIMP', self.nom, self.objPyxb, )
+               if debug : print ('__________ fin X_MCSIMP', self.objPyxb, self.nom, self, self.maClasseModeleMetier,self.valeur)
+               return
+
                         
             if issubclass(self.maClasseModeleMetier, self.cata.modeleMetier.pyxb.binding.basis.STD_union):
                 if debug : print ('needFactory')
index b925ac67c362f67c4cb12124ca39e3bceb8ebc99..bde29bf2182c400f3bad9a9eeceed8018e5af6ac 100644 (file)
@@ -52,7 +52,7 @@ eltCompoDsSequenceWithHelp = '\t\t\t<xs:element name="{}" type="{}:{}" minOccurs
 
 # ETAPE
 eltEtape = '\t<xs:element name="{}" type="{}:{}" substitutionGroup="step_{}"/>\n'
-eltEtapeWithHelp = '\t<xs:element name="{}" type="{}:{}" substitutionGroup="step_{}"/>\n\t\t\t\t<xs:annotation>\n\t\t\t\t\t<xs:documentation>{}</xs:documentation>\n\t\t\t\t</xs:annotation>\n\t\t\t</xs:element>\n'
+eltEtapeWithHelp = '\t<xs:element name="{}" type="{}:{}" substitutionGroup="step_{}">\n\t\t\t\t<xs:annotation>\n\t\t\t\t\t<xs:documentation>{}</xs:documentation>\n\t\t\t\t</xs:annotation>\n\t\t\t</xs:element>\n'
 
 # BLOC
 debutTypeSubst    = '\t<xs:group name="{}">   \n\t\t<xs:sequence>\n'
@@ -137,5 +137,13 @@ matriceSimpleType = '\t<xs:simpleType name="{}_line">\n\t\t<xs:restriction>\n\t\
 matriceSimpleType +='\t<xs:group name="{}_matrix">\n\t\t<xs:sequence>\n\t\t\t<xs:element name="line" type="{}:{}_line" minOccurs="{}" maxOccurs="{}"/>\n\t\t </xs:sequence>\n\t</xs:group>\n'
 matriceSimpleType +='\t<xs:complexType name="{}"> \n\t\t<xs:group ref="{}:{}_matrix" minOccurs="1" maxOccurs="1"/>\n\t</xs:complexType>\n'
 
+# CHAINES AVEC BLANC
+debutChaineAvecBlancsInto  = '\t<xs:simpleType name="{}_enum">\n\t\t<xs:restriction base="xs:string">\n'
+milieuChaineAvecBlancsInto = '\t\t\t<xs:enumeration value="{}"/>\n'
+finChaineAvecBlancsInto    = '\t\t</xs:restriction>\n\t\t</xs:simpleType>\n'
+       
+complexChaineAvecBlancs = '\t<xs:complexType name="{}">\n\t\t<xs:sequence maxOccurs="{}">\n\t\t\t\t<xs:element name="s__" type="{}_enum"/>\n\t\t\t</xs:sequence>\n\t</xs:complexType>\n'
+
+typeEltChaineAvecBlancSansInto = '\t\t<xs:simpleType name="{}_enum">\n\t\t\t<xs:restriction base="xs:string">\n\t\t\t</xs:restriction>\n\t\t</xs:simpleType>'
 if __name__ == '__main__' :
     print ('ne fait rien')
index 29753a8a9be68b9a7012242121b3bf95431b2c7c..046d2d08b494a20b7b39eb11ab4a785ed7975816 100644 (file)
@@ -86,8 +86,10 @@ class MCSIMP(N_OBJECT.OBJECT):
                 else :
                     #PNPN --> chgt pour Vimmp
                     for v in self.valeur :
-                        try : v.ajoutUtilisePar(self)
-                        except : print ('il y a un souci ici', self.nom, self.valeur)
+                        print (v, type(v))
+                        v.ajoutUtilisePar(self)
+                        #try : v.ajoutUtilisePar(self)
+                        #except : print ('il y a un souci ici', self.nom, self.valeur)
         self.buildObjPyxb()
         self.listeNomsObjsCrees = []
 
@@ -97,6 +99,7 @@ class MCSIMP(N_OBJECT.OBJECT):
             de la valeur donnée. Defaut si val == None
             Attention aux UserASSD et aux into (exple Wall gp de maille et 'Wall')
         """
+        #print ('getValeurEffective ________________', val)
         if (val is None and hasattr(self.definition, 'defaut')): val = self.definition.defaut
         if self.definition.type[0] == 'TXM' and isinstance(val,str) : return val
         if self.definition.creeDesObjets :
@@ -106,6 +109,7 @@ class MCSIMP(N_OBJECT.OBJECT):
             else : valATraiter=val
             listeRetour=[]
             for v in valATraiter:
+                #print (v.__class__.__name__, self.definition.creeDesObjetsDeType.__name__)
                 if  (not(v.__class__.__name__ == self.definition.creeDesObjetsDeType.__name__)) :
                     if self.jdc != None and v in list(self.jdc.sdsDict.keys()): v=self.jdc.sdsDict[v]
                     else : v=self.convProto.convert(v)
@@ -115,7 +119,8 @@ class MCSIMP(N_OBJECT.OBJECT):
                 else :
                     if v.nom=='sansNom' :
                         for leNom,laVariable in self.jdc.g_context.items():
-                            if id(laVariable)== id(v) and (leNom != 'sansNom'):
+                            print (leNom,laVariable)
+                            if id(laVariable) == id(v) and (leNom != 'sansNom'):
                                 v.initialiseNom(leNom)
                     if v.parent== None : v.initialiseParent(self)
                     if issubclass(self.definition.creeDesObjetsDeType, UserASSDMultiple) :
index 58006da4c8eaa88c45e18317fb827ab765463784..80f2d0c78b4fec7b7674ae2ec1b2b78765846fc2 100644 (file)
@@ -50,7 +50,8 @@ class SIMP(N_ENTITE.ENTITE):
     def __init__(self, typ,ang="", fr="", statut='f', into=None, intoSug = None,siValide = None, defaut=None,
                  min=1, max=1, homo=1, position='local',filtre=None,
                  val_min=float('-inf'), val_max=float('inf'), docu="", validators=None, nomXML=None,
-                 sug=None,fenetreIhm=None, attribut=False,  sortie='n', intoXML=None, metAJour=None):
+                 sug=None,fenetreIhm=None, attribut=False,  sortie='n', intoXML=None, metAJour=None,
+                 avecBlancs=False):
         """
             Un mot-clé simple est caractérisé par les attributs suivants :
             - type : cet attribut est obligatoire et indique le type de valeur attendue
@@ -125,6 +126,20 @@ class SIMP(N_ENTITE.ENTITE):
         self.intoXML    = intoXML
         self.sortie     = sortie
         self.filtre     = filtre
+        self.avecBlancs = avecBlancs
+        if not(self.avecBlancs) and self.max > 1 and 'TXM' in self.type and self.into != None :
+            for val in self.into :
+                if val.find(' ') : 
+                   self.avecBlancs = True  
+                   break
+        if not(self.avecBlancs) and self.max > 1 and 'TXM' in self.type and self.into != None :
+            for val in self.intoXML :
+                if val.find(' ') : 
+                   self.avecBlancs = True  
+                   break
+        if self.avecBlancs and not ('TXM' in self.type) : 
+            print ('definition incoherente avecBlanc et non texte pour ', self) 
+            exit()
         if self.filtre  :
             self.filtreExpression = self.filtre[0]
             self.filtreVariables = self.filtre[1]