]> Creatis software - creaImageIO.git/commitdiff
Number of children ok even when only 1 !
authorguigues <guigues>
Thu, 9 Apr 2009 13:47:17 +0000 (13:47 +0000)
committerguigues <guigues>
Thu, 9 Apr 2009 13:47:17 +0000 (13:47 +0000)
src2/creaImageIOSQLiteTreeHandler.cpp

index 26a9641d92247dbe21f04aac67008cc4718f5683..17025b4604cbc4161236d0ae94dfa61701212380 100644 (file)
@@ -132,14 +132,6 @@ namespace creaImageIO
   {
     tree::Node* parent = DBGetParent(attr);
     DBGraftToParent(parent,attr);
-       if(parent->GetLevel()<GetTree().GetNumberOfLevels()-1&&parent->GetLevel()>0)
-       {
-       int nC=GetNumberOfChildren(parent);
-       nC=nC+1;
-       std::stringstream out;
-       out <<nC;
-       SetAttribute(parent,"NumberOfChildren",out.str());
-       }
     return (parent->GetLevel()+1);
          
   }
@@ -791,9 +783,16 @@ namespace creaImageIO
       {
        // Create Node
        tree::Node* child = new tree::Node(parent,attr);
-       GetNumberOfChildren(parent);
        child->SetChildrenLoaded(true);
-       //      std::cout<<"Number of children "<<parent->GetNumberOfChildren()<<std::endl;
+       if (level>1)
+         {
+           int nc = GetNumberOfChildren(parent)+1;
+           
+           //  std::cout<<"Number of children "<<parent->GetNumberOfChildren()<<std::endl;
+           std::stringstream out;
+           out << nc;
+           SetAttribute(parent,"NumberOfChildren",out.str());
+         }
 
        // Set PARENT_ID if necessary 
        if ( parent->GetLevel()>0 )
@@ -891,33 +890,38 @@ namespace creaImageIO
   //===================================================================== 
   unsigned int SQLiteTreeHandler::GetNumberOfChildren(tree::Node* n) 
   { 
-         // Query DB
-       int nb=0;
+    // Query DB
+    int nb=0;
     int level = n->GetLevel();
-       
-       if(level<GetTree().GetNumberOfLevels()&& level>0)
-       {
-               std::string query = "SELECT NumberOfChildren FROM ";
-    query += GetTree().GetLevelDescriptor(level).GetName();
-    if (level>0)
+    
+    if(level<GetTree().GetNumberOfLevels()&& level>0)
       {
-       query += " WHERE ID='" + n->UnsafeGetAttribute("ID") 
-         + "'";
-      }
-    CppSQLite3Query q;
-    QUERYDB(query,q);
+       std::string query = "SELECT NumberOfChildren FROM ";
+       query += GetTree().GetLevelDescriptor(level).GetName();
+       if (level>0)
+         {
+           query += " WHERE ID='" + n->UnsafeGetAttribute("ID") 
+             + "'";
+         }
+       CppSQLite3Query q;
+       QUERYDB(query,q);
        
-
-               while (!q.eof())
-               {
-                       for (int fld = 0; fld < q.numFields(); fld++)
-                       {
-                               nb=q.getIntField(fld);  
-                       }
-                       q.nextRow();
-               }
-       }
-       if(nb==0){nb=1;}
+       
+       while (!q.eof())
+         {
+           for (int fld = 0; fld < q.numFields(); fld++)
+             {
+               nb=q.getIntField(fld);  
+             }
+           q.nextRow();
+         }
+      }
+    /*
+    if(nb==0)
+      { 
+       nb=1;
+      }
+    */
     return nb; 
   }