X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOSQLiteTreeHandler.cpp;h=14bb3db2476d9f31ce80372afbe1993b2b21eb3d;hb=9b19229069b38b9b14563f427554fa7c8fd9ac6f;hp=aec51554f68406d87bd679cebf989b9770b542cf;hpb=57608b6038aaf31b21948e6244aeb814f0bb7cbd;p=creaImageIO.git diff --git a/src2/creaImageIOSQLiteTreeHandler.cpp b/src2/creaImageIOSQLiteTreeHandler.cpp index aec5155..14bb3db 100644 --- a/src2/creaImageIOSQLiteTreeHandler.cpp +++ b/src2/creaImageIOSQLiteTreeHandler.cpp @@ -132,14 +132,6 @@ namespace creaImageIO { tree::Node* parent = DBGetParent(attr); DBGraftToParent(parent,attr); - if(parent->GetLevel()GetLevel()>0) - { - int nC=GetNumberOfChildren(parent); - nC=nC+1; - std::stringstream out; - out <GetLevel()+1); } @@ -156,14 +148,12 @@ namespace creaImageIO tree::Node* parent=node->GetParent(); if (parent) { - parent->RemoveChildrenFromList(node); - int nC=GetNumberOfChildren(parent); - nC=nC-1; + int nC = parent->RemoveChildrenFromList(node); if(nC>0) { std::stringstream out; out <SetChildrenLoaded(true); - // std::cout<<"Number of children "<GetNumberOfChildren()<1) + { + int nc = GetNumberOfChildren(parent)+1; + + // std::cout<<"Number of children "<GetNumberOfChildren()<GetLevel()>0 ) @@ -852,17 +863,38 @@ namespace creaImageIO sql += GetTree().GetLevelDescriptor(n->GetLevel()).GetName(); sql += " SET "; sql += key; - sql += "='"; + sql += " = '"; sql += value; - sql += "' WHERE ID="; + sql += "' WHERE ID = '"; sql += n->GetAttribute("ID"); + sql +="'"; // sql += " LIMIT 1"; UPDATEDB(sql); } - //===================================================================== + //===================================================================== + /// Sets an attribute of a Node + void SQLiteTreeHandler::DBSetAttribute(const std::string& levelDescriptor, + const std::string& key, + const std::string& value, + const std::string& searchParam, + const std::string& searchVal) + { - //===================================================================== + std::string sql = "UPDATE "; + sql += levelDescriptor; + sql += " SET "; + sql += key; + sql += " = '"; + sql += value; + sql += "' WHERE "; + sql += searchParam; + sql += " = '"; + sql += searchVal; + sql += "'"; + UPDATEDB(sql); + } + //===================================================================== void SQLiteTreeHandler::DBRecursiveRemoveNode(Node* node) { @@ -879,46 +911,173 @@ namespace creaImageIO <<"' in level "<< GetTree().GetLevelDescriptor(node->GetLevel()).GetName() <GetChildrenList().begin(); - i != node->GetChildrenList().end(); - i++) - { - DBRecursiveRemoveNode((*i)); - } + + if(node->GetNumberOfChildren()!=0) + { + Node::ChildrenListType::iterator i; + for (i = node->GetChildrenList().begin(); + i != node->GetChildrenList().end(); + i++) + { + DBRecursiveRemoveNode((*i)); + } + } + else if(node->GetLevel()GetLevel()+1,node->GetAttribute("ID")); + } } + //===================================================================== + void SQLiteTreeHandler::DBRecursiveRemoveNode(int level, std::string parentId) + { + std::stringstream out; + std::stringstream result; + out<<"SELECT ID FROM "<GetLevel(); - - if(level0) - { - std::string query = "SELECT D1111_0011 FROM "; - query += GetTree().GetLevelDescriptor(level).GetName(); - if (level>0) + + if(level0) { - 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; + } + */ + return nb; + } + + //===================================================================== + void SQLiteTreeHandler::GetTopLevelNodeId(const std::string& searchParam, const std::string& searchValue, std::string& parent_id) + { + int level=GetTree().GetNumberOfLevels()-1; + std::string sp=searchParam.c_str(); + std::string sv=searchValue.c_str(); + while(level>1) + { + std::stringstream out; + std::stringstream results; + out<<"SELECT PARENT_ID FROM "<