]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
correction methode purge_liste pour ne plus purger le mot cle present de la liste...
authoreficas <>
Wed, 15 May 2002 14:15:48 +0000 (14:15 +0000)
committereficas <>
Wed, 15 May 2002 14:15:48 +0000 (14:15 +0000)
Ihm/I_EXCLUS.py
Ihm/I_MCCOMPO.py
Ihm/I_MCLIST.py
Ihm/I_PRESENT_ABSENT.py
Ihm/I_UN_PARMI.py

index e53ead8e682fad7c0774c8f9a8f7680760426256..91428f2cf65278fabf92c5d9b1842511dab9e268 100644 (file)
@@ -13,7 +13,8 @@ class EXCLUS(I_REGLE.REGLE):
      if not regle_active : return liste_a_purger
 
      for mc in self.mcs:
-        if mc in liste_a_purger:
+        # Il ne faut pas purger un mot cle present. Sa cardinalite est verifiee par ailleurs
+        if mc in liste_a_purger and mc not in liste_mc_presents:
            liste_a_purger.remove(mc)
      return liste_a_purger
 
index 0fcab2e6d2790916d91b58f206131a299de5cc6d..45f365fcb52120fefccfd06951aeb3c625160901 100644 (file)
@@ -95,6 +95,20 @@ class MCCOMPO(I_OBJECT.OBJECT):
           liste.remove(k)
         if self.definition.entites[k].label=='BLOC':
           liste.remove(k)
+    # Pour corriger les exces qui pourraient etre commis dans la methode purge_liste
+    # des regles, on essaie de compenser comme suit :
+    # on ajoute les mots cles facteurs presents dont l'occurence n'est pas atteinte
+    for k in liste_mc_presents:
+      if k in liste:continue
+      objet = self.get_child(k,restreint = 'oui')
+      if isinstance(objet,MCFACT):
+          # un mot-clé facteur ne peut pas être répété plus de self.max fois
+          if objet.definition.max > 1:
+             liste.append(k)
+      elif isinstance(objet,MCList):
+          nb_occur_maxi = objet[0].definition.max
+          if len(objet) < nb_occur_maxi:
+              liste.append(k)
     return liste
 
   def liste_mc_presents(self):
index fc4afcf67cb224194193b4b1836c595ea7128582..48c306ed5a5cff046417c321c67c60e1a3108a7d 100644 (file)
@@ -161,3 +161,14 @@ class MCList:
      """
      for motcle in self.data :
          motcle.verif_existence_sd()
+
+  def get_sd_utilisees(self):
+    """
+        Retourne la liste des concepts qui sont utilisés à l'intérieur de self
+        ( comme valorisation d'un MCS)
+    """
+    l=[]
+    for motcle in self.data:
+      l.extend(motcle.get_sd_utilisees())
+    return l
+
index 5ddd4a80155a359a3f8a61ad50cd273bd6ce3603..133ffdacbd9ad396c1b08152706f424b426c29b0 100644 (file)
@@ -9,8 +9,9 @@ class PRESENT_ABSENT(I_REGLE.REGLE):
      if self.mcs[0] in liste_mc_presents:regle_active=1
      if not regle_active : return liste_a_purger
 
-     for mc in self.mcs:
-        if mc in liste_a_purger:
+     # Il ne faut pas purger le mot cle present
+     for mc in self.mcs[1:]:
+        if mc in liste_a_purger :
            liste_a_purger.remove(mc)
      return liste_a_purger
 
index a600514d16713cf690cf78390f41688a1fa5b4eb..90f0a1f70bf83e05be568cc2ff7caa7a0d843187 100644 (file)
@@ -14,8 +14,9 @@ class UN_PARMI(I_REGLE.REGLE):
      if not regle_active : return liste_a_purger
 
      # Si un des mots clés est présent, on les enlève tous
+     # sauf celui ci
      for mc in self.mcs:
-        if mc in liste_a_purger:
+        if mc in liste_a_purger and mc not in liste_mc_presents:
            liste_a_purger.remove(mc)
      return liste_a_purger