]> Creatis software - creaImageIO.git/commitdiff
Added functionality for non loaded nodes
authorcaballero <caballero>
Mon, 20 Apr 2009 11:29:34 +0000 (11:29 +0000)
committercaballero <caballero>
Mon, 20 Apr 2009 11:29:34 +0000 (11:29 +0000)
src2/creaImageIOSQLiteTreeHandler.cpp
src2/creaImageIOSQLiteTreeHandler.h
src2/creaImageIOTimestampDatabaseHandler.cpp
src2/creaImageIOTreeHandler.h
src2/creaImageIOTreeHandlerImageAdder.cpp

index 6af107d7c27fc023b17de9f0403edf5c2140754b..0a953fa34dd83c55faef58ef56cb3ec5e2019b6f 100644 (file)
@@ -975,7 +975,7 @@ namespace creaImageIO
        query<<"DELETE FROM "<<levelDescriptor<<" WHERE "<<key<<"='"<<value<<"';";
  
     UPDATEDB(query.str());
-       GimmickMessage(1," Deleting: Query: "<<query.str()<<std::endl);
+       GimmickDebugMessage(2," Deleting: Query: "<<query.str()<<std::endl);
   }
 
 
@@ -1051,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 "<<GetTree().GetLevelDescriptor(level).GetName();
+               out<<" WHERE "<<sp<<"='"<<sv<<"'";      
+               CppSQLite3Query q;
+               QUERYDB(out.str(),q);
+               
+               
+               while (!q.eof())
+               {
+                       for (int fld = 0; fld < q.numFields(); fld++)
+                       {
+                               results<<q.getStringField(fld);
+                       }
+                       q.nextRow();
+               }
+               level=level-1;
+               sp="ID";
+               sv=results.str();
+         }
+         parent_id=sv;
+
+  }
+
   /*
   //=====================================================================
   bool SQLiteTreeHandler::DBInsert(Node* alien_node,
index 1c35aac5c6f1c7757ae58c7c05b40c272c9be2a9..1284e169edd14fc17e138f64c74b973107533ef3 100644 (file)
@@ -94,7 +94,13 @@ namespace creaImageIO
     // WITHOUT altering the source, e.g. the database
     virtual void UnLoad(tree::Node* n);
     ///====================================================================
-
+       
+       //====================================================================
+    /// Returns the top level node id for the given search param and search value
+    virtual void GetTopLevelNodeId(const std::string& searchParam, 
+                                                                                       const std::string& searchValue, 
+                                                                                       std::string& parent_id);
+    ///====================================================================
 
     //====================================================================
     // WRITE METHODS : WORK ONLY IN WRITE MODE
index 0e1176e95c9a958ecad6551ce69def2c9c113dea..9ee54b30af2f3a3d062b63768f9e0b0bd98a2b3f 100644 (file)
@@ -168,6 +168,7 @@ namespace creaImageIO
            command += ",\nPATH text";
                command += ",\nLastModified datetext";
                command += ",\nLastRead datetext";
+               command += ",\nTopLevelNodeId text";
                command += ",\nconstraint FK_PARENT foreign key (PARENT_ID) references ";
                command += "FILES";
                command += "(ID) on delete restrict on update restrict";
@@ -303,14 +304,19 @@ namespace creaImageIO
                                                                                        const std::string& searchParam,
                                                                                        const std::string& searchValue)
   {
+       std::string av=attValue.c_str();
+       std::string sv=searchValue.c_str();
+       CleanName(av);
+       CleanName(sv);
+
        std::string sql = "UPDATE FILES SET ";
     sql += attName;
     sql += " = '";
-    sql += attValue;
+    sql += av;
     sql += "' WHERE ";
        sql += searchParam;
        sql += " = '";
-    sql += searchValue;
+    sql += sv;
        sql += "'";
     UPDATETIMESTAMPDB(sql);
   }
@@ -332,6 +338,10 @@ namespace creaImageIO
          {
                  RemoveFile(searchAtt,node->GetAttribute("FullFileName"));
          }
+         else
+         {
+                 DBRemove("TopLevelNodeId",node->GetAttribute("ID"));
+         }
 
 
   }
index 5a7cecd32f644aa3f9cb1fb47a70b7417b824cb6..9b7c4db9eb8ba36b297e81e287f9e60909e2b77a 100644 (file)
@@ -105,6 +105,13 @@ namespace creaImageIO
     virtual void UnLoad(tree::Node* n) { return; }
     //====================================================================
 
+       //====================================================================
+    /// Returns the top level node id for the given search param and search value
+    virtual void GetTopLevelNodeId(const std::string& searchParam, 
+                                                                                       const std::string& searchValue, 
+                                                                                       std::string& parent_id){ return; }
+    ///====================================================================
+
 
     //====================================================================
     // WRITE METHODS : WORK ONLY IN WRITE MODE
index f5424b63ca63d920e39ea9d7258b41afb4aaddd4..f68fa778119294e18ab1043af820143868dbfae4 100644 (file)
@@ -50,7 +50,7 @@ namespace creaImageIO
     std::vector<std::string>::const_iterator i;
     for (i=filenames.begin();i!=filenames.end();++i)
       {
-                 
+       mTimestampHandler->AddFile((*i), fs::last_write_time(*i), time(0));
        mProgress.IncNumberScannedFiles();
        if (IsHandledFile(*i)) 
          {
@@ -114,6 +114,7 @@ namespace creaImageIO
          }
        else 
          {
+               std::string parent_id;
                bool valid=mTimestampHandler->AddDirectory(dirpath, itr->string(), lastModif, time(0));
                if(valid)
                {
@@ -122,6 +123,8 @@ namespace creaImageIO
                        {
                        mProgress.IncNumberHandledFiles();
                        AddFile( itr->string() );
+                       mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id);
+                       mTimestampHandler->SetAttribute("TopLevelNodeId",parent_id,"PATH",itr->string());
                        }
                        mProgressSignal(mProgress);
                        if (mProgress.GetStop()) 
@@ -130,6 +133,7 @@ namespace creaImageIO
                        break;
                        }
                }
+               mTimestampHandler->SetAttribute("TopLevelNodeId",parent_id,"PATH",dirpath);
          }
       }