]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmick.cpp
Added Timestamp database to avoid repetition of files on addition.
[creaImageIO.git] / src2 / creaImageIOGimmick.cpp
index 8d1583ccac4ddd4fd75b62d39535e32e8cd05e8f..5ae843801e4952e9d89ca7e6d7b81497fe9a1959 100644 (file)
@@ -35,11 +35,11 @@ namespace creaImageIO
     // Sets the current directory to the home dir
     mCurrentDirectory =  GetHomeDirectory();
        mSynchronizer=0;
+
     // Create local database handler
     mLocalDatabase = new SQLiteTreeHandler(GetLocalDatabasePath());
     // Add it to the TreeHandlerMap
     mTreeHandlerMap["Local database"] = mLocalDatabase;
-
     // Create or open local database
     if (! boost::filesystem::exists( GetLocalDatabasePath() ) )
       {
@@ -69,6 +69,37 @@ namespace creaImageIO
          }
        
       }
+
+
+       // Creates files and directories database
+    mTimestampDatabase = new TimestampDatabaseHandler(GetTimestampDatabasePath());
+    // Create or open local database
+    if (! boost::filesystem::exists( GetTimestampDatabasePath() ) )
+      {
+       std::string mess = "Timestamp database '";
+       mess += GetTimestampDatabasePath();
+       mess += "' does not exist : creating it";
+       GimmickMessage(1,mess<<std::endl);
+       
+       if ( ! mTimestampDatabase->Create() )
+         {
+           GimmickError("ERROR CREATING '"<<GetTimestampDatabasePath()<<"'");
+         }
+       
+     }
+    else 
+      {
+       /// Open and test it
+       GimmickMessage(1,"Opening Timestamp database '"
+                      <<GetTimestampDatabasePath()<<"' "
+                      <<std::endl);
+       if ( ! mTimestampDatabase->Open() )
+         {
+           GimmickError("ERROR OPENING '"<<GetTimestampDatabasePath()<<"'");
+         }
+       
+      }
+
   }
   //================================================================
 
@@ -77,6 +108,7 @@ namespace creaImageIO
   void Gimmick::Finalize()
   {
     delete mLocalDatabase;
+       delete mTimestampDatabase;
   }
   //==============================================================
 
@@ -132,6 +164,22 @@ namespace creaImageIO
       }
     return mLocalDatabasePath;    
   }
+
+  //================================================================
+
+  //================================================================
+  const std::string& Gimmick::GetTimestampDatabasePath()
+  {
+    if (mTimestampDatabasePath.size()==0) 
+      {
+       mTimestampDatabasePath = GetUserSettingsDirectory();
+       mTimestampDatabasePath += "timestamp_database.sqlite3";
+       boost::algorithm::replace_all( mTimestampDatabasePath,
+                                      INVALID_FILE_SEPARATOR , 
+                                      VALID_FILE_SEPARATOR);
+      }
+    return mTimestampDatabasePath;    
+  }
   //========================================================================
 
   //========================================================================
@@ -168,7 +216,7 @@ namespace creaImageIO
   //========================================================================
 
   //========================================================================
-  /// Add a file to the local database
+  /// Returns the tree handler with the given name
   TreeHandler* Gimmick::GetTreeHandler(const std::string& name) const 
   {  
     TreeHandlerMapType::const_iterator i;
@@ -180,6 +228,13 @@ namespace creaImageIO
     return i->second;
   }
 
+  //========================================================================
+  ///Returns the timestamp database handler
+  TimestampDatabaseHandler* Gimmick::GetTimestampDatabase() const 
+  {  
+    return mTimestampDatabase;
+  }
+
 
   //========================================================================
   /// Add the files to the tree handler
@@ -189,6 +244,7 @@ namespace creaImageIO
     GimmickMessage(2,"Adding files to '"<<d<<"'"<<std::endl);
  
     mImageAdder.SetTreeHandler(GetTreeHandler(d));
+       mImageAdder.SetTimestampHandler(mTimestampDatabase);
     mImageAdder.AddFiles(filenames);
 
   }
@@ -204,6 +260,7 @@ namespace creaImageIO
 
        TreeHandler * handler=GetTreeHandler(d);
     mImageAdder.SetTreeHandler(handler);
+       mImageAdder.SetTimestampHandler(mTimestampDatabase);
     mImageAdder.AddDirectory(f,recurse);
        //Synchronize(true, handler);