X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOSQLiteTreeHandler.cpp;h=17025b4604cbc4161236d0ae94dfa61701212380;hb=1f46782fbd6a0b396516b58546e66b407fd7aa2a;hp=564ec3346f601c9cd453b50ffec8f588347ee9ee;hpb=0c5c3d9301e8346541adc8251a663f6269303cd1;p=creaImageIO.git diff --git a/src2/creaImageIOSQLiteTreeHandler.cpp b/src2/creaImageIOSQLiteTreeHandler.cpp index 564ec33..17025b4 100644 --- a/src2/creaImageIOSQLiteTreeHandler.cpp +++ b/src2/creaImageIOSQLiteTreeHandler.cpp @@ -130,11 +130,8 @@ namespace creaImageIO //===================================================================== int SQLiteTreeHandler::AddBranch( const AttributeMapType& attr ) { - //std::cout << "AddBranch" << std::endl; tree::Node* parent = DBGetParent(attr); - //std::cout << " parent = "<GetLabel()<<" level "<GetLevel()<GetLevel()+1); } @@ -147,11 +144,30 @@ namespace creaImageIO DBRecursiveRemoveNode(node); // std::cout << "DELETE"<GetParent()) + bool remove=false; + tree::Node* parent=node->GetParent(); + if (parent) { - node->GetParent()->RemoveChildrenFromList(node); + parent->RemoveChildrenFromList(node); + int nC=GetNumberOfChildren(parent); + nC=nC-1; + if(nC>0) + { + std::stringstream out; + out <GetLevel()>0) + { + Remove(parent); + } // std::cout << "DELETE OK"<GetChildrenLoaded()||mIsAdding) + if (node->GetChildrenLoaded()) { // Iterate the children @@ -768,7 +784,16 @@ namespace creaImageIO // Create Node tree::Node* child = new tree::Node(parent,attr); child->SetChildrenLoaded(true); - // std::cout<<"Number of children "<GetNumberOfChildren()<1) + { + int nc = GetNumberOfChildren(parent)+1; + + // std::cout<<"Number of children "<GetNumberOfChildren()<GetLevel()>0 ) child->SetAttribute("PARENT_ID",parent->GetAttribute("ID")); @@ -865,29 +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(GetTree().GetNumberOfLevels()!=(level+1)) - { - std::string query = "SELECT * FROM "; - query += GetTree().GetLevelDescriptor(level+1).GetName(); - if (level>0) + + if(level0) { - query += " WHERE PARENT_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()) - { - nb++; - q.nextRow(); - } - } + + while (!q.eof()) + { + for (int fld = 0; fld < q.numFields(); fld++) + { + nb=q.getIntField(fld); + } + q.nextRow(); + } + } + /* + if(nb==0) + { + nb=1; + } + */ return nb; }