Salome HOME
Issue #1854 Recover feature control update
[modules/shaper.git] / src / ModuleBase / ModuleBase_FilterFactory.cpp
index 891d74370621fb944a2ff2789ec631cdf0927a95..b30ad90f5e356c36665a2055acee23c1cbca8008 100644 (file)
@@ -1,6 +1,6 @@
 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
 
-// File:        ModuleBase_FilterFactory.h
+// File:        ModuleBase_FilterFactory.cpp
 // Created:     10 Dec 2014
 // Author:      Natalia ERMOLAEVA
 
 #include <ModelAPI_Attribute.h>
 #include <ModelAPI_Data.h>
 //#include <ModelAPI_AttributeValidator.h>
-#include <Events_Error.h>
+#include <Events_InfoMessage.h>
 
 
 void ModuleBase_FilterFactory::registerFilter(const std::string& theID,
-                                              Handle(ModuleBase_Filter) theFilter)
+                                              ModuleBase_Filter* theFilter)
 {
   if (myIDs.find(theID) != myIDs.end()) {
-    Events_Error::send(std::string("Filter ") + theID + " is already registered");
+    Events_InfoMessage("ModuleBase_FilterFactory",
+      "Filter %1 is already registered").arg(theID).send();
   } else {
     myIDs[theID] = theFilter;
   }
@@ -27,7 +28,8 @@ void ModuleBase_FilterFactory::registerFilter(const std::string& theID,
 
 void ModuleBase_FilterFactory::assignFilter(const std::string& theID,
                                             const std::string& theFeatureID,
-                                            const std::string& theAttrID)
+                                            const std::string& theAttrID,
+                                            const std::list<std::string>& theArguments)
 {
   // create feature-structures if not exist
   std::map<std::string, std::map<std::string, AttrFilters> >::iterator aFeature = myAttrs.find(
@@ -41,34 +43,36 @@ void ModuleBase_FilterFactory::assignFilter(const std::string& theID,
   if (anAttr == aFeature->second.end()) {
     aFeature->second[theAttrID] = AttrFilters();
   }
-  aFeature->second[theAttrID][theID] = std::list<std::string>();
+  aFeature->second[theAttrID][theID] = theArguments;
 }
 
 void ModuleBase_FilterFactory::filters(const std::string& theFeatureID,
                                        const std::string& theAttrID,
                                        SelectMgr_ListOfFilter& theFilters/*,
-                                        std::list<Handle(ModuleBase_Filter)>& theFilters/*,
+                                        std::list<ModuleBase_Filter*>& theFilters/*,
                                         std::list<std::list<std::string> >& theArguments*/) const
 {
   SelectMgr_ListOfFilter aFilters;
 
-  std::map<std::string, std::map<std::string, AttrFilters> >::const_iterator aFeature = 
+  std::map<std::string, std::map<std::string, AttrFilters> >::const_iterator aFeature =
     myAttrs.find(theFeatureID);
   if (aFeature != myAttrs.cend()) {
     std::map<std::string, AttrFilters>::const_iterator anAttr = aFeature->second.find(theAttrID);
     if (anAttr != aFeature->second.end()) {
       AttrFilters::const_iterator aValIter = anAttr->second.cbegin();
       for (; aValIter != anAttr->second.cend(); aValIter++) {
-        std::map<std::string, Handle(ModuleBase_Filter)>::const_iterator aFound = myIDs.find(
+        std::map<std::string, ModuleBase_Filter*>::const_iterator aFound = myIDs.find(
           aValIter->first);
         if (aFound == myIDs.end()) {
-          Events_Error::send(std::string("Filter ") + aValIter->first + " was not registered");
+          Events_InfoMessage("ModuleBase_FilterFactory", "Filter %1 was not registered")
+            .arg(aValIter->first).send();
         } else {
-          Handle(ModuleBase_Filter) aFilter = aFound->second;
-          if (aFilter.IsNull())
-            continue;
+          ModuleBase_Filter* aFilter = aFound->second;
+          aFilter->setArguments(aValIter->second);
+          //if (aFilter.IsNull())
+          //  continue;
 
-          theFilters.Append(aFilter);//aFound->second);
+          theFilters.Append(aFilter->getFilter());//aFound->second);
           //theArguments.push_back(aValIter->second);
         }
       }
@@ -82,9 +86,9 @@ ModuleBase_FilterFactory::ModuleBase_FilterFactory()
   //registerFilter(kDefaultId, new Model_FeatureFilter);
 }
 
-const Handle(ModuleBase_Filter) ModuleBase_FilterFactory::filter(const std::string& theID) const
+const ModuleBase_Filter* ModuleBase_FilterFactory::filter(const std::string& theID) const
 {
-  std::map<std::string, Handle(ModuleBase_Filter)>::const_iterator aIt = myIDs.find(theID);
+  std::map<std::string, ModuleBase_Filter*>::const_iterator aIt = myIDs.find(theID);
   if (aIt != myIDs.end()) {
     return aIt->second;
   }