]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
ajout de la methode verif_item aux validateurs
authoreficas <>
Wed, 15 Oct 2003 17:24:55 +0000 (17:24 +0000)
committereficas <>
Wed, 15 Oct 2003 17:24:55 +0000 (17:24 +0000)
Editeur/composimp.py
Ihm/I_VALIDATOR.py

index 4b45351b5e4df42f70cba1cdf0955cd075897172..71d104fc19d2a689281eda7652cee19fae6b54c2 100644 (file)
@@ -1507,11 +1507,13 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       """
       valide=1
       if self.definition.validators :
-         if not self.definition.validators.is_list():
-            try :
-                valide=self.definition.validators.verif(item)
-            except :
-               valide=0
+         valide=self.definition.validators.verif_item(item)
+
+      #   if not self.definition.validators.is_list():
+      #      try :
+      #          valide=self.definition.validators.verif(item)
+      #      except :
+      #          valide=0
       return valide
      
   def valide_liste_partielle(self,item,listecourante):
index a39bff29cc0da95dcbb1d46a98d08ab66217ed8a..c516112c674d3fe987dd3676332553fe8e43c3c5 100644 (file)
@@ -66,6 +66,17 @@ class Valid:
    def valide_liste_partielle(self,liste_courante):
        return 0
 
+   def verif_item(self,valeur):
+       """
+          La methode verif du validateur effectue une validation complete de la valeur.
+          valeur peut etre un scalaire ou une liste. Le validateur doit traiter les 2
+          aspects s'il accepte des listes (dans ce cas la methode is_list doit retourner 1).
+          La methode valid_item sert pour effectuer des validations partielles de liste
+          Elle doit uniquement verifier la validite d'un item de liste mais pas les caracteristiques
+          de la liste
+       """
+       return 0
+
    def get_into(self,liste_courante=None,into_courant=None):
        """
           Cette méthode retourne la liste de choix proposée par le validateur. Si le validateur ne propose
@@ -139,6 +150,13 @@ class Valid:
 class FunctionVal(Valid):pass
 
 class OrVal(Valid):
+   def verif_item(self,valeur):
+       for validator in self.validators:
+           v=validator.verif_item(valeur)
+           if v :
+              return 1
+       return 0
+
    def is_list(self):
        """
           Si plusieurs validateurs sont reliés par un OU
@@ -183,6 +201,18 @@ class OrVal(Valid):
        return validator_into
 
 class AndVal(Valid):
+   def info(self):
+       return "\n et ".join([v.info() for v in self.validators])
+
+   def verif_item(self,valeur):
+       for validator in self.validators:
+           v=validator.verif_item(valeur)
+           if not v :
+              # L'info n'est probablement pas la meme que pour verif ???
+              self.local_info=validator.info()
+              return 0
+       return 1
+
    def is_list(self):
        """
           Si plusieurs validateurs sont reliés par un ET
@@ -228,12 +258,18 @@ class AndVal(Valid):
        return into_courant
 
 class CardVal(Valid):
+   def info(self):
+       return "longueur de liste comprise entre  %s et %s" % (self.min,self.max)
+
    def is_list(self):
        if self.max == '**' or self.max > 1:
              return 1
        else:
              return 0
 
+   def verif_item(self,valeur):
+       return 1
+
    def valide_liste_partielle(self,liste_courante=None):
        validite=1
         print liste_courante
@@ -274,6 +310,10 @@ class ListVal(Valid):
           return liste_choix
 
 class EnumVal(ListVal):
+   def verif_item(self,valeur):
+       if valeur not in self.into:return 0
+       return 1
+
    def has_into(self):
        return 1
  
@@ -290,9 +330,26 @@ class EnumVal(ListVal):
 class LongStr(ListVal):
    def info_erreur_item(self):
        return "Longueur de la chaine incorrecte"
+
+   def verif_item(self,valeur):
+       if len(valeur) < self.low :return 0
+       if len(valeur) > self.high:return 0
+       return 1
  
-class RangeVal(ListVal):pass
-class TypeVal(ListVal):pass
+class RangeVal(ListVal):
+   def verif_item(self,valeur):
+       if valeur < self.low :return 0
+       if valeur > self.high:return 0
+       return 1
+
+class TypeVal(ListVal):
+   def verif_item(self,valeur):
+       try:
+          self.coerce(valeur)
+       except:
+          return 0
+       return 1
+
 class PairVal(ListVal):
 
    def info_erreur_item(self):
@@ -323,9 +380,18 @@ class PairVal(ListVal):
        print "Ihm.I_MCSIMP.PairVal.verif: ",valeur
        return self.surcharge_verif(Noyau.N_VALIDATOR.PairVal.verif,valeur)
 
-class InstanceVal(ListVal):pass
+class InstanceVal(ListVal):
+   def verif_item(self,valeur):
+       if not isinstance(valeur,self.aClass): return 0
+       return 1
 
 class NoRepeat(ListVal):
+   def info(self):
+       return "pas de presence de doublon dans la liste"
+
+   def verif_item(self,valeur):
+       return 1
+
    def get_into(self,liste_courante=None,into_courant=None):
        """
           Methode get_into spécifique pour validateur NoRepeat
@@ -343,6 +409,9 @@ class NoRepeat(ListVal):
           return liste_choix
  
 class OrdList(ListVal):
+   def verif_item(self,valeur):
+       return 1
+
    def get_into(self,liste_courante=None,into_courant=None):
        """
           Methode get_into spécifique pour validateur OrdList