]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmick.cpp
*** empty log message ***
[creaImageIO.git] / src2 / creaImageIOGimmick.cpp
index b30fbc18ba9a4fa5d9704fae24640b158b75cb1b..3aae8a855e242c7fbc8a7f4b04bdc5531bc9df58 100644 (file)
@@ -13,6 +13,8 @@ namespace creaImageIO
     : mImageAdder(0)
   {    
     RegisterGimmickMessageTypes();
+       mSettings=0;
+       mSynchronizer=0;
   }
   //==============================================================
 
@@ -21,9 +23,15 @@ namespace creaImageIO
   //==============================================================
   Gimmick::~Gimmick()
   {
+        if(mSettings!=0)
+         {
          mSettings->writeSettingsFile();
       delete mSettings;
+         }
+         if(mSynchronizer!=0)
+         {
          delete mSynchronizer;
+         }
   }
   //==============================================================
   
@@ -285,6 +293,7 @@ namespace creaImageIO
   {
     GimmickMessage(2,"Adding files to '"<<d<<"'"<<std::endl);
  
+       mImageAdder.SetCurrentDatabase(d);
     mImageAdder.SetTreeHandler(GetTreeHandler(d));
        mImageAdder.SetTimestampHandler(mTimestampDatabase);
        mImageAdder.SetSynchronizer(mSynchronizer);
@@ -302,6 +311,7 @@ namespace creaImageIO
                   <<recurse<<std::endl);
 
        TreeHandler * handler=GetTreeHandler(d);
+       mImageAdder.SetCurrentDatabase(d);
     mImageAdder.SetTreeHandler(handler);
        mImageAdder.SetTimestampHandler(mTimestampDatabase);
        mImageAdder.SetSynchronizer(mSynchronizer);
@@ -314,17 +324,31 @@ namespace creaImageIO
   void Gimmick::RemoveFile(const std::string& d, 
                           tree::Node* node)
   {
+         mImageAdder.SetCurrentDatabase(d);
          mImageAdder.SetSynchronizer(mSynchronizer);
-         mTimestampDatabase->RemoveNode("PATH",node);
+         mTimestampDatabase->RemoveNode("PATH",node,d);
          mImageAdder.RemoveFile(node);
   }
   //========================================================================
 
   //========================================================================
  
-  std::string Gimmick::Synchronize(bool repair, bool checkAttributes)
+  void Gimmick::CopyFiles(const std::vector<std::string>& filenames, const std::string& d )
+  {
+         TreeHandler * handler=GetTreeHandler(d);
+         mImageAdder.SetCurrentDatabase(d);
+         mImageAdder.SetTreeHandler(handler);
+         mImageAdder.SetTimestampHandler(mTimestampDatabase);
+         mImageAdder.SetSynchronizer(mSynchronizer);
+         mImageAdder.CopyFiles(filenames, mSettings->getValue(SETTINGS_COPY_PATH));
+  }
+
+  //========================================================================
+  std::string Gimmick::Synchronize(const std::string& d, bool repair, bool checkAttributes)
   {
-         TreeHandler * handler=GetTreeHandler("Local database");
+         TreeHandler * handler=GetTreeHandler(d);
+         mImageAdder.SetCurrentDatabase(d);
          mImageAdder.SetTreeHandler(handler);
          mImageAdder.SetTimestampHandler(mTimestampDatabase);
          mImageAdder.SetSynchronizer(mSynchronizer);
@@ -338,6 +362,35 @@ namespace creaImageIO
     GetTreeHandler(d)->GetTree().Print();
   }
   //========================================================================
+
+  void Gimmick::GetSetting(const std::string& name, std::string& value)
+  {
+         value = mSettings->getValue(name);
+  }
+  //========================================================================
+
+  //========================================================================
+
+  void Gimmick::UpdateSetting(const std::string& name, const std::string& value)
+  {
+         mSettings->updateSetting(name,value);
+         mSettings->writeSettingsFile();
+  }
+  //========================================================================
+
+  void Gimmick::DeleteDrive(const std::string& drive)
+  {
+         for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
+           it!= mTreeHandlerMap.end(); ++it)
+          {
+                  mImageAdder.SetTreeHandler(it->second);
+                  mImageAdder.DeleteDriveFromMainDB(drive);
+          }
+         mImageAdder.SetTimestampHandler(mTimestampDatabase);
+         mImageAdder.SetSynchronizer(mSynchronizer);
+         mImageAdder.DeleteDriveFromOtherDB(drive);
+  }
+
   /////////////////////////////////////////////////////////////////////////
   // add DB from Settings file                                                                              //
   // @param : -                                                                                                                         //