X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOSQLiteTreeHandler.cpp;h=0a953fa34dd83c55faef58ef56cb3ec5e2019b6f;hb=f88a493a18a500a15b24ca81ab4117fc4ac6a542;hp=17025b4604cbc4161236d0ae94dfa61701212380;hpb=1f46782fbd6a0b396516b58546e66b407fd7aa2a;p=creaImageIO.git diff --git a/src2/creaImageIOSQLiteTreeHandler.cpp b/src2/creaImageIOSQLiteTreeHandler.cpp index 17025b4..0a953fa 100644 --- a/src2/creaImageIOSQLiteTreeHandler.cpp +++ b/src2/creaImageIOSQLiteTreeHandler.cpp @@ -148,9 +148,7 @@ 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; @@ -188,6 +186,24 @@ namespace creaImageIO return DBSetAttribute(n,key,value); } //===================================================================== + //===================================================================== + /// Sets an attribute + void SQLiteTreeHandler::SetAttribute(const std::string& levelDescriptor, + const std::string& key, + const std::string& value, + const std::string& searchParam, + const std::string& searchVal) + { + DBSetAttribute(levelDescriptor,key,value,searchParam, searchVal); + } + //===================================================================== + /// Deletes a tuple + void SQLiteTreeHandler::DeleteTuple(std::string levelDescriptor, + std::string key, std::string value) + { + DBDelete(levelDescriptor,key,value); + } + //===================================================================== @@ -851,17 +867,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) { @@ -878,22 +915,111 @@ 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 NumberOfChildren FROM "; @@ -925,6 +1051,39 @@ namespace creaImageIO 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 "<