Salome HOME
Fix error in test case for issue #1779
[modules/shaper.git] / src / ModelHighAPI / ModelHighAPI_Folder.cpp
index a4402a5e623cc1413f9ab9571b30d0739b005c47..c6280ffd4e3b2c1481340a9061a0c67a5a5e743a 100644 (file)
@@ -21,6 +21,7 @@
 #include "ModelHighAPI_Folder.h"
 #include <ModelHighAPI_Dumper.h>
 #include <ModelHighAPI_Reference.h>
+#include <ModelHighAPI_Tools.h>
 
 #include <ModelAPI_AttributeReference.h>
 #include <ModelAPI_Document.h>
@@ -58,6 +59,17 @@ bool ModelHighAPI_Folder::initialize()
   return true;
 }
 
+void ModelHighAPI_Folder::setName(const std::string& theName)
+{
+  if (myFolder && myFolder->data() && myFolder->data()->isValid())
+    myFolder->data()->setName(theName);
+}
+
+std::string ModelHighAPI_Folder::name() const
+{
+  return myFolder->data()->name();
+}
+
 void ModelHighAPI_Folder::dump(ModelHighAPI_Dumper& theDumper) const
 {
   const std::string& aDocName = theDumper.name(myFolder->document());
@@ -65,15 +77,17 @@ void ModelHighAPI_Folder::dump(ModelHighAPI_Dumper& theDumper) const
   AttributeReferencePtr aStartRef = myFolder->reference(ModelAPI_Folder::FIRST_FEATURE_ID());
   AttributeReferencePtr aEndRef   = myFolder->reference(ModelAPI_Folder::LAST_FEATURE_ID());
 
-  // Dump folder if it is empty or when its features have been already dumped.
-  // Otherwise, just store the name of the folder.
+  // do not dump empty folders
   if (!aEndRef->value())
-    theDumper << myFolder << " = model.addFolder(" << aDocName << ")" << std::endl;
-  else if (theDumper.isDumped(aEndRef->value()))
+    return;
+
+  // Dump folder when its features have been already dumped.
+  // Otherwise, store the folder postponed.
+  if (theDumper.isDumped(EntityPtr(aEndRef->value())))
     theDumper << myFolder << " = model.addFolder(" << aDocName << ", "
               << aStartRef << ", " << aEndRef << ")" << std::endl;
   else
-    theDumper.name(myFolder);
+    theDumper.postpone(myFolder);
 }
 
 //--------------------------------------------------------------------------------------
@@ -91,10 +105,10 @@ std::shared_ptr<ModelHighAPI_Folder> addFolder(const std::shared_ptr<ModelAPI_Do
   std::shared_ptr<ModelAPI_Folder> aFolder = theDoc->addFolder(theFirstFeature.feature());
 
   AttributeReferencePtr aFirstFeatAttr = aFolder->reference(ModelAPI_Folder::FIRST_FEATURE_ID());
-  theFirstFeature.fillAttribute(aFirstFeatAttr);
+  fillAttribute(theFirstFeature.feature(), aFirstFeatAttr);
 
   AttributeReferencePtr aLastFeatAttr = aFolder->reference(ModelAPI_Folder::LAST_FEATURE_ID());
-  theLastFeature.fillAttribute(aLastFeatAttr);
+  fillAttribute(theLastFeature.feature(), aLastFeatAttr);
 
   return std::shared_ptr<ModelHighAPI_Folder>(new ModelHighAPI_Folder(aFolder));
 }