]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOSQLiteTreeHandler.cpp
Fixed a bug that didn't let it load on opening. Still exists a bug on adding.
[creaImageIO.git] / src2 / creaImageIOSQLiteTreeHandler.cpp
index 7d9f7ef4587ffeffbfb42abac854f05dff4666ff..b91308f12b85442a5f1397b208b8494920083e8c 100644 (file)
@@ -36,6 +36,7 @@ namespace creaImageIO
     : mFileName(filename)
   {
     mDB = new CppSQLite3DB;
+       mIsAdding=false;
     GimmickMessage(1,"SQLite version : "
                   <<std::string(mDB->SQLiteVersion())<< std::endl);
   }
@@ -126,13 +127,15 @@ namespace creaImageIO
   }
   //===================================================================== 
 
-
   //===================================================================== 
   int SQLiteTreeHandler::AddBranch( const AttributeMapType& attr )
   {
+       mIsAdding=true;
     tree::Node* parent = DBGetParent(attr);
     DBGraftToParent(parent,attr);
+       mIsAdding=false;
     return (parent->GetLevel()+1);
+         
   }
   //===================================================================== 
  
@@ -381,7 +384,6 @@ namespace creaImageIO
                   << i->GetGroup() << ","
                   << i->GetElement() << ","
                   << i->GetFlags() << ");";
-           
            UPDATEDB(insert.str());
          }
 
@@ -658,20 +660,26 @@ namespace creaImageIO
     int nbloaded = 0;
     // If children loaded we do not have to do it but we need to recurse
     // in order to load the children's children if necessary, and so on...
-    if (node->GetChildrenLoaded()) 
+    if (node->GetChildrenLoaded()||mIsAdding
       {
        // Iterate the children 
-       tree::Node::ChildrenListType::iterator i;
+
+       /*tree::Node::ChildrenListType::iterator i;
        for (i = node->GetChildrenList().begin();
             i!= node->GetChildrenList().end();
             ++i)
          {
            nbloaded += DBLoadChildren(*i,numberoflevels-1);
-         }
+         }*/
+
        return nbloaded;
+
       }
-    
+       else
+       {
     /// If children not loaded : do it and recurse
+ std::cout<<"Children are not loaded for node:"<<node->GetLabel()<<std::endl;
+ std::cout<<"Children are not loaded for node (pointer):"<<node<<std::endl;
 
     // Query DB
     int level = node->GetLevel();
@@ -686,6 +694,7 @@ namespace creaImageIO
     CppSQLite3Query q;
     QUERYDB(query,q);
 
+       int p=0;
     while (!q.eof())
       {
        nbloaded++;
@@ -713,9 +722,11 @@ namespace creaImageIO
       }
 
     node->SetChildrenLoaded(true);
+       
     
     //    msw[2].Pause();
     return nbloaded;
+       }
   }
   //=====================================================================
 
@@ -754,7 +765,7 @@ namespace creaImageIO
       {
        // Create Node
        tree::Node* child = new tree::Node(parent,attr);
-       
+       std::cout<<"Number of children "<<parent->GetNumberOfChildren()<<std::endl;
        // Set PARENT_ID if necessary 
        if ( parent->GetLevel()>0 )
          child->SetAttribute("PARENT_ID",parent->GetAttribute("ID"));
@@ -848,8 +859,6 @@ namespace creaImageIO
       }
   }
 
-  //=====================================================================
-
   //===================================================================== 
   unsigned int SQLiteTreeHandler::GetNumberOfChildren(tree::Node* n) 
   {