X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOSQLiteTreeHandler.cpp;h=f29a8ce7ef4b7ced02410167684d1b1405cfef16;hb=96ca5a0d7b7ccd6b4291160c19afd48e3207db2a;hp=3d3fe70c1639ad2357a75f628ff63462020a2e9f;hpb=2df647c186de559388c62bfebba8795b860ee8ae;p=creaImageIO.git diff --git a/src2/creaImageIOSQLiteTreeHandler.cpp b/src2/creaImageIOSQLiteTreeHandler.cpp index 3d3fe70..f29a8ce 100644 --- a/src2/creaImageIOSQLiteTreeHandler.cpp +++ b/src2/creaImageIOSQLiteTreeHandler.cpp @@ -45,29 +45,6 @@ namespace creaImageIO //============================================================= - //============================================================= - // void SQLiteTreeHandler::Print() const - // { - /* - std::cout << "-> '"<Print(); - } - */ - // } - //============================================================= - - //===================================================================== - /* - bool SQLiteTreeHandler::LocationIsValid() - { - // TO DO - return true; - } - */ //===================================================================== @@ -222,11 +199,7 @@ namespace creaImageIO } //===================================================================== - // sqlite3_exec(db, zSQL, 0, 0, 0); - // sqlite3_free(zSQL); - // char* CHAIN = format_sql(QUER); \ -// sqlite3_free(CHAIN); \ - + //===================================================================== #define QUERYDB(QUER,RES) \ try \ @@ -447,7 +420,7 @@ namespace creaImageIO //===================================================================== bool SQLiteTreeHandler::DBImportTreeDescription() { - GimmickMessage(1,"Importing tree description from database ..." + GimmickMessage(1,"Importing tree description for database ..." <GetKey()); - if ( i != attr.end() ) - { - v = i->second; - } - */ + GetTree().UnsafeSetAttribute( a->GetKey(), "" ); } @@ -573,22 +539,6 @@ namespace creaImageIO } //===================================================================== - - - - - - - - - - - - - - - - //======================================================================== /// std::string& SQLformat(std::string& str) @@ -626,7 +576,7 @@ namespace creaImageIO { continue; } - // std::cout << "("<first<<","<second<<")"<first + "'"; values += "'" + SQLformat(i->second) + "'"; atts += ","; @@ -670,7 +620,6 @@ namespace creaImageIO } //===================================================================== - //===================================================================== int SQLiteTreeHandler::DBLoadChildren(tree::Node* node, int numberoflevels) @@ -710,7 +659,7 @@ namespace creaImageIO query += GetTree().GetLevelDescriptor(level+1).GetName(); if (level>0) { - query += " WHERE PARENT_ID='" + node->UnsafeGetAttribute("ID") + query += " WHERE PARENT_ID='" + node->GetAttribute("ID") + "'"; } CppSQLite3Query q; @@ -728,13 +677,7 @@ namespace creaImageIO { n->UnsafeSetAttribute(q.fieldName(fld),q.getStringField(fld)); } - /* - // Index - TypeId ti; - ti.type = type; - ti.id = n->GetFieldValue("ID"); - mTypeIdToNodeMap[ti] = n; - */ + // recurse if ( numberoflevels != 1 ) { @@ -807,39 +750,10 @@ namespace creaImageIO // Insert in DB DBInsert(child); - /* - std::string val; - SQLAppendAttributesValues(child,val); - std::string insert("INSERT INTO "); - insert += GetTree().GetLevelDescriptor(child->GetLevel()).GetName(); - insert += " " + val + ";"; - UPDATEDB(insert); - // Store DB id of newly created node; - long lastrow = mDB->lastRowId(); - std::stringstream ri; - ri << mDB->lastRowId(); - child->SetAttribute("ID",ri.str()); - */ // Down one level parent = child; - - /* - // Insert in TypeId map - TypeId ti; - ti.type = node->GetType(); - ti.id = node_id; - mTypeIdToNodeMap[ti] = node; - // std::cout << "== Insert TypeId ("<GetType()==Node::Patient) summary.added_patients++; - if (node->GetType()==Node::Study) summary.added_studies++; - if (node->GetType()==Node::Series) summary.added_series++; - if (node->GetType()==Node::Image) summary.added_images++; - */ - } + } } //====================================================================== @@ -1019,7 +933,7 @@ namespace creaImageIO query += GetTree().GetLevelDescriptor(level).GetName(); if (level>0) { - query += " WHERE ID='" + n->UnsafeGetAttribute("ID") + query += " WHERE ID='" + n->GetAttribute("ID") + "'"; } CppSQLite3Query q; @@ -1104,363 +1018,4 @@ namespace creaImageIO UPDATEDB(out.str()); } - /* - //===================================================================== - bool SQLiteTreeHandler::DBInsert(Node* alien_node, - UpdateSummary& summary) - { - // std::cout << "SQLiteTreeHandler::Insert('"<GetLabel() - // <<"')"<GetLabel()<<"'" - // << std::endl; - // Load the patients if not already done - DBLoadChildren(this,Node::Patient); - - parent_id = ""; - Node* parent = this; - - // The chain of ancestors - std::deque chain; - Node* cur = alien_node->GetParent(); - for (int type=Node::Patient; - typeGetType();++type) - { - chain.push_front(cur); - cur = cur->GetParent(); - } - - // create the nodes if do not exist - std::deque::iterator i; - for (i=chain.begin();i!=chain.end();++i) - { - // std::cout << " cur = '"<<(*i)->GetLabel()<<"'"<GetType()+1); - - parent_id = cur_id; - } - return parent; - } - //===================================================================== - - - - //===================================================================== - void SQLiteTreeHandler::DBRecursiveGetOrCreateNode(Node* alien_node, - Node* parent, - const std::string& parent_id, - UpdateSummary& summary) - { - // std::cout << "SQLiteTreeHandler::RecursiveGetOrCreateNode('" - // <GetLabel() - // <<"','"<GetChildrenList().begin(); - i != alien_node->GetChildrenList().end(); - i++) - { - DBRecursiveGetOrCreateNode((*i),new_node,new_id,summary); - } - } - //===================================================================== - - - //===================================================================== - Node* SQLiteTreeHandler::DBGetOrCreateNode(Node* alien_node, - Node* internal_parent, - std::string parent_id, - std::string& node_id, - UpdateSummary& summary) - { - // std::cout << "DBGetOrCreateNode('"<GetLabel()<<"','" - // << internal_parent << "','"<< parent_id<<"')"<0) - { - node_id = node->UnsafeGetFieldValue("ID"); - return node; - } - // Second : try in DB - - // Does not exist : Create new one - node = new Node(alien_node->GetType(),this,internal_parent); - node->SetChildrenLoaded(true); - // Copy fields values from alien - Node::FieldValueMapType::iterator i,j; - for (i = node->GetFieldValueMap().begin(); - i != node->GetFieldValueMap().end(); - i++) - { - j = alien_node->GetFieldValueMap().find(i->first); - if (j != alien_node->GetFieldValueMap().end() ) - { - i->second = j->second; - } - } - - msw[2].Resume(); - if (node->GetType()!=Node::Patient) - node->SetFieldValue("PARENT_ID",parent_id); - - // Insert in DB - std::string val; - BuildSQLFieldsValues(node,val); - std::string insert("INSERT INTO "); - insert += std::string(SQLiteTreeHandlerStructure::Table(node->GetType())) - + " " + val + ";"; - // std::cout << "** SQL = '"<lastRowId(); - std::stringstream ri; - ri << mDB->lastRowId(); - node_id = ri.str(); - // std::cout << "LastRowId='"<lastRowId()<<"' vs '"<SetFieldValue("ID",node_id); - // Insert in TypeId map - TypeId ti; - ti.type = node->GetType(); - ti.id = node_id; - mTypeIdToNodeMap[ti] = node; - // std::cout << "== Insert TypeId ("<GetType()==Node::Patient) summary.added_patients++; - if (node->GetType()==Node::Study) summary.added_studies++; - if (node->GetType()==Node::Series) summary.added_series++; - if (node->GetType()==Node::Image) summary.added_images++; - - return node; - } - //===================================================================== - - //===================================================================== - Node* SQLiteTreeHandler::GetChildrenLike(Node* parent, - Node* alien_node) - { - Node::ChildrenListType::iterator i; - for (i = parent->GetChildrenList().begin(); - i != parent->GetChildrenList().end(); - i++) - { - Node::Type type = alien_node->GetType(); - bool ok = true; - for (int j=0; - jGetFieldValue(SQLiteTreeHandlerStructure:: - QueryField(type,j).key ) != - (*i)->GetFieldValue(SQLiteTreeHandlerStructure:: - QueryField(type,j).key ) ) - { - ok = false; - break; - } - } - if (ok) - { - return (*i); - } - } - return 0; - } - //===================================================================== - - //===================================================================== - std::string SQLiteTreeHandler::DBGetNodeId(Node* node, - const std::string& parent_id) - { - // std::cout << "SQLiteTreeHandler::DBGetNodeId('"<GetLabel() - // <<"','"<GetType(); - - std::string table = SQLiteTreeHandlerStructure::Table(type); - std::string where = "WHERE "; - - if (type!=Node::Patient) - { - where += "PARENT_ID='" + parent_id - //node->GetFieldValue("PARENT_ID") - + "' AND "; - } - - for (int i=0;iGetParent()) - { - node->GetParent()->RemoveChildrenFromList(node); - } - delete node; - // std::cout << "DELETE OK"<GetLabel()<<"')"<GetType()); - query += " WHERE ID='"+ node->GetFieldValue("ID") + "';"; - - UPDATEDB(query); - - Node::ChildrenListType::iterator i; - for (i = node->GetChildrenList().begin(); - i != node->GetChildrenList().end(); - i++) - { - DBRecursiveRemoveNode((*i)); - } - } - - //===================================================================== - - //===================================================================== - int SQLiteTreeHandler::DBQueryNumberOfChildren(Node* node) - { - std::string query = "SELECT COUNT (ID) FROM "; - query += SQLiteTreeHandlerStructure::Table(node->GetType()+1); - if (node->GetType() != Node::Database) - { - query += " WHERE PARENT_ID='"+ node->GetFieldValue("ID")+"'"; - } - query += ";"; - - // std::cout << "**SQL = "<< query << std::endl; - - CppSQLite3Query q; - QUERYDB(query,q); - - // std::cout << "**RES = "<< q.getIntField(0) <