]> 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 4363e7c0a99de19d39fc44b4e0570f0598a9496d..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);
   }
@@ -129,8 +130,10 @@ namespace creaImageIO
   //===================================================================== 
   int SQLiteTreeHandler::AddBranch( const AttributeMapType& attr )
   {
+       mIsAdding=true;
     tree::Node* parent = DBGetParent(attr);
     DBGraftToParent(parent,attr);
+       mIsAdding=false;
     return (parent->GetLevel()+1);
          
   }
@@ -657,7 +660,7 @@ 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 
 
@@ -668,11 +671,15 @@ namespace creaImageIO
          {
            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();
@@ -687,9 +694,9 @@ namespace creaImageIO
     CppSQLite3Query q;
     QUERYDB(query,q);
 
+       int p=0;
     while (!q.eof())
       {
-       //        std::cout<<"Name in q: "<<q.fieldName(3)<<" Value: "<<q.getStringField(3)<<std::endl;
        nbloaded++;
        Node* n = new Node(node);
        for (int fld = 0; fld < q.numFields(); fld++)
@@ -707,7 +714,7 @@ namespace creaImageIO
        if ( numberoflevels != 1 ) 
          {
            //  msw[2].Pause();
-       //    nbloaded += DBLoadChildren(n, numberoflevels-1);
+           nbloaded += DBLoadChildren(n, numberoflevels-1);
            //      msw[2].Resume();
          }
        // next entry in db
@@ -715,9 +722,11 @@ namespace creaImageIO
       }
 
     node->SetChildrenLoaded(true);
+       
     
     //    msw[2].Pause();
     return nbloaded;
+       }
   }
   //=====================================================================
 
@@ -756,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"));