Salome HOME
CCAR : remplacement separateur New24.gif par Sep.gif
[tools/eficas.git] / Noyau / N_MCLIST.py
index 43f267f0bd76138491ba138353fbff53d5d8a876..9b21cdf941b8e11b5de0c7a8c7aaefa1bab31a69 100644 (file)
@@ -1,9 +1,30 @@
+#@ MODIF N_MCLIST Noyau  DATE 03/09/2002   AUTEUR GNICOLAS G.NICOLAS 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
+# (AT YOUR OPTION) ANY LATER VERSION.                                 
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+#                                                                       
+#                                                                       
+# ======================================================================
 """ 
     Ce module contient la classe MCList qui sert à controler la valeur
     d'une liste de mots-clés facteur par rapport à sa définition portée par un objet
     de type ENTITE
 """
 
+from copy import copy
 import UserList
 
 class MCList(UserList.UserList):
@@ -44,7 +65,7 @@ class MCList(UserList.UserList):
    def supprime(self):
       """ 
          Méthode qui supprime toutes les références arrières afin que l'objet puisse
-         être correctement détruit par le garbage collector 
+         etre correctement détruit par le garbage collector 
       """
       self.parent = None
       self.etape = None
@@ -73,7 +94,7 @@ class MCList(UserList.UserList):
         if k == name:
           if v.defaut != None : return v(None,k,None)
       # si on passe ici, c'est que l'on demande un fils qui n'est pas possible --> erreur
-      #print "Erreur : %s ne peut être un descendant de %s" %(name,self.nom)
+      #print "Erreur : %s ne peut etre un descendant de %s" %(name,self.nom)
       return None
 
    def isBLOC(self):
@@ -89,3 +110,37 @@ class MCList(UserList.UserList):
       """
       visitor.visitMCList(self)
 
+   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 child in self.data:
+        l.extend(child.get_sd_utilisees())
+      return l
+
+   def copy(self):
+      """
+        Réalise la copie d'une MCList
+      """
+      liste = self.data[0].definition.list_instance()
+      # FR -->Il faut spécifier un parent pour la méthode init qui attend 2 arguments ...
+      liste.init(self.nom,self.parent)
+      for objet in self:
+        new_obj = objet.copy()
+        # Pour etre coherent avec le constructeur de mots cles facteurs N_FACT.__call__
+        # dans lequel le parent de l'element d'une MCList est le parent de la MCList
+        new_obj.reparent(self.parent)
+        liste.append(new_obj)
+      return liste
+
+   def reparent(self,parent):
+      """
+         Cette methode sert a reinitialiser la parente de l'objet
+      """
+      self.parent=parent
+      self.jdc=parent.jdc
+      self.etape=parent.etape
+      for mcfact in self.data:
+        mcfact.reparent(parent)