X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOSQLiteTreeHandler.cpp;h=26a9641d92247dbe21f04aac67008cc4718f5683;hb=471e9e0a5f0ab325f625699fc78d984b7e1bd384;hp=7ce13041c1ffb245fb18786773c87eef54048549;hpb=b0bee282f8a6c60d5d86495b9bdbc0b89309bf1f;p=creaImageIO.git diff --git a/src2/creaImageIOSQLiteTreeHandler.cpp b/src2/creaImageIOSQLiteTreeHandler.cpp index 7ce1304..26a9641 100644 --- a/src2/creaImageIOSQLiteTreeHandler.cpp +++ b/src2/creaImageIOSQLiteTreeHandler.cpp @@ -130,10 +130,16 @@ namespace creaImageIO //===================================================================== int SQLiteTreeHandler::AddBranch( const AttributeMapType& attr ) { - mIsAdding=true; tree::Node* parent = DBGetParent(attr); DBGraftToParent(parent,attr); - mIsAdding=false; + if(parent->GetLevel()GetLevel()>0) + { + int nC=GetNumberOfChildren(parent); + nC=nC+1; + std::stringstream out; + out <GetLevel()+1); } @@ -146,11 +152,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 @@ -695,6 +720,9 @@ namespace creaImageIO int p=0; while (!q.eof()) { + + // std::cout << "DBLoadCh : creating node level "<GetLabel() - <<"'"<GetLabel() + // <<"'"<GetLevel()+1; level < GetTree().GetNumberOfLevels(); @@ -763,7 +791,10 @@ namespace creaImageIO { // Create Node tree::Node* child = new tree::Node(parent,attr); - std::cout<<"Number of children "<GetNumberOfChildren()<SetChildrenLoaded(true); + // std::cout<<"Number of children "<GetNumberOfChildren()<GetLevel()>0 ) child->SetAttribute("PARENT_ID",parent->GetAttribute("ID")); @@ -863,26 +894,30 @@ namespace creaImageIO // Query DB int nb=0; int level = n->GetLevel(); - if(GetTree().GetNumberOfLevels()!=(level+1)) + + if(level0) { - std::string query = "SELECT * FROM "; - query += GetTree().GetLevelDescriptor(level+1).GetName(); + std::string query = "SELECT NumberOfChildren FROM "; + query += GetTree().GetLevelDescriptor(level).GetName(); if (level>0) { - query += " WHERE PARENT_ID='" + n->UnsafeGetAttribute("ID") + query += " WHERE ID='" + n->UnsafeGetAttribute("ID") + "'"; } - CppSQLite3Query q; QUERYDB(query,q); while (!q.eof()) { - nb++; + for (int fld = 0; fld < q.numFields(); fld++) + { + nb=q.getIntField(fld); + } q.nextRow(); } } + if(nb==0){nb=1;} return nb; }