]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOSQLiteTreeHandler.cpp
Fixed number of children algorithm and repetition of nodes on add directory.
[creaImageIO.git] / src2 / creaImageIOSQLiteTreeHandler.cpp
index f3595c9f156caa9fed39e9e5ff173f163f8cf33f..4363e7c0a99de19d39fc44b4e0570f0598a9496d 100644 (file)
@@ -126,13 +126,13 @@ namespace creaImageIO
   }
   //===================================================================== 
 
-
   //===================================================================== 
   int SQLiteTreeHandler::AddBranch( const AttributeMapType& attr )
   {
     tree::Node* parent = DBGetParent(attr);
     DBGraftToParent(parent,attr);
     return (parent->GetLevel()+1);
+         
   }
   //===================================================================== 
  
@@ -330,22 +330,22 @@ namespace creaImageIO
            
            
            // Add Attribute 'ID' to Description
-           GetTree().GetLevelDescriptor(l).Add
+           GetTree().GetDescriptor().Add
              (AttributeDescriptor( "ID",
                                    "Database Identifier",
                                    0,0,
                                    AttributeDescriptor::PRIVATE
-                                   ));
+                                   ),l);
            
            if (l>1) 
              {
                // Add Attribute 'PARENT_ID' to Description
-               GetTree().GetLevelDescriptor(l).Add
+               GetTree().GetDescriptor().Add
                  (AttributeDescriptor( "PARENT_ID",
                                        "Database Parent Identifier",
                                        0,0,
                                        AttributeDescriptor::PRIVATE
-                                       ));
+                                       ),l);
              }
            
          }
@@ -381,7 +381,6 @@ namespace creaImageIO
                   << i->GetGroup() << ","
                   << i->GetElement() << ","
                   << i->GetFlags() << ");";
-           
            UPDATEDB(insert.str());
          }
 
@@ -434,7 +433,7 @@ namespace creaImageIO
 
     tree::Descriptor& desc = GetTree().GetDescriptor();
     // clears the existing one
-    desc.GetLevelDescriptorList().clear();
+    desc.Clear();
      
     int nblevel = 0;
     std::string query = "SELECT * FROM LEVELS";
@@ -445,7 +444,7 @@ namespace creaImageIO
       {
        std::string name = q.getStringField(0);
        GimmickMessage(2," * Importing level '"<<name<<"'"<<std::endl);
-       desc.GetLevelDescriptorList().push_back(LevelDescriptor(name));
+       desc.Add(LevelDescriptor(name));
        nblevel++;
        q.nextRow();
       }   
@@ -483,13 +482,13 @@ namespace creaImageIO
            std::string name(q.getStringField(1));
            GimmickMessage(2,"  - Importing attribute '"<<key<<"' '"<<name
                           <<"'"<<std::endl);
-           desc.GetLevelDescriptor(level).Add
+           desc.Add
              (AttributeDescriptor( key, // Key
                                    name, // Name
                                    q.getIntField(2), // Group
                                    q.getIntField(3), // Element 
                                    q.getIntField(4) // Flags
-                                   ));
+                                   ),level);
            if ( key == "ID" ) 
              {
                ID_found = true;
@@ -661,14 +660,16 @@ namespace creaImageIO
     if (node->GetChildrenLoaded()) 
       {
        // 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;
+
       }
     
     /// If children not loaded : do it and recurse
@@ -688,6 +689,7 @@ namespace creaImageIO
 
     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++)
@@ -705,7 +707,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
@@ -848,8 +850,6 @@ namespace creaImageIO
       }
   }
 
-  //=====================================================================
-
   //===================================================================== 
   unsigned int SQLiteTreeHandler::GetNumberOfChildren(tree::Node* n) 
   {