]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOSynchron.cpp
bug correction on addfiles .
[creaImageIO.git] / src2 / creaImageIOSynchron.cpp
index 136c29e7fcd190756e4edb5eeb226b132c50d355..06785fe8e94bc32d55335409f95fea662b040920 100644 (file)
@@ -1,8 +1,9 @@
 #include <creaImageIOSynchron.h>
 #include <creaImageIOSystem.h>
 #include <boost/filesystem.hpp>
+#include <boost/algorithm/string.hpp>
+//namespace fs = boost::filesystem;
 
-namespace fs = boost::filesystem;
 
 //=====================================================================
  
@@ -11,7 +12,7 @@ namespace creaImageIO
 {
 
        //=====================================================================
-       #define QUERYSYNCDB(QUER,RES)                                           \
+       #define QUERYSYNCDB(QUER,RES)                                   \
     try                                                                        \
       {                                                                        \
        RES = mDB->execQuery(QUER.c_str());                             \
@@ -23,7 +24,7 @@ namespace creaImageIO
                   << e.errorMessage() );                               \
     }                                                                                                                                     
        //=====================================================================
-       #define UPDATESYNCDB(UP)                                                        \
+       #define UPDATESYNCDB(UP)                                        \
   try                                                                  \
     {                                                                  \
       mDB->execDML(UP.c_str());                                                \
@@ -52,7 +53,7 @@ namespace creaImageIO
        //=====================================================================
        void Synchronizer::Initialize()
        {    
-               if (!fs::exists(pathDB)) 
+               if (!boost::filesystem::exists(pathDB)) 
                {
                        CreateDB();
                }
@@ -146,7 +147,7 @@ namespace creaImageIO
 
     /////////////////////////////////////////////////////////////////////////////////////////////////
     // remove an entry of the DB
-    //@param i_table : table where do the remove
+    //@param i_table : table where to do the remove
     // @param i_key : the add_key reference (one entry to remove for ADD_OP table, many for IGNORED_FILES table
     //@result : -
     /////////////////////////////////////////////////////////////////////////////////////////////////
@@ -156,6 +157,24 @@ namespace creaImageIO
         UPDATESYNCDB(query);
        }
 
+       /////////////////////////////////////////////////////////////////////////////////////////////////
+    // remove several entries of the DB
+    // @param i_table : table where to do the remove
+       // @param i_attribute: attribute to match
+       // @param i_operand : operand to use
+    // @param i_val : the reference
+    //@result : -
+    /////////////////////////////////////////////////////////////////////////////////////////////////
+    void Synchronizer::RemoveEntries(const std::string i_table, 
+               const std::string i_attribute, 
+               const std::string i_operand, 
+               const std::string i_val)
+    {
+        std::stringstream query;
+               query<<"DELETE  FROM "<<i_table<<" WHERE "<<i_attribute<<" "<<i_operand<<" '"<<i_val<<"'";
+        UPDATESYNCDB(query.str());
+       }
+
     /////////////////////////////////////////////////////////////////////////////////////////////////
     // clean DataBase if an operation has no child anymore
        // @param refdb: the database segement to clean
@@ -293,10 +312,10 @@ namespace creaImageIO
     // @result : required attribute
     /////////////////////////////////////////////////////////////////////////////////////////////////
     std::string Synchronizer::GetAttribute(const std::string& attribute, 
-                                                                               const std::string& table, 
-                                                                               const std::string& searchParam,
-                                                                               const std::string& searchValue, 
-                                                                               const std::string& refdb)
+                                       const std::string& table, 
+                                       const std::string& searchParam,
+                                       const std::string& searchValue, 
+                                       const std::string& refdb)
     {
         std::stringstream query;
                std::string result;
@@ -331,11 +350,11 @@ namespace creaImageIO
     // @result : attribute value changed
     /////////////////////////////////////////////////////////////////////////////////////////////////
     void Synchronizer::SetAttribute(const std::string& attribute, 
-                                                                               const std::string& table, 
-                                                                               const std::string& value,
-                                                                               const std::string& searchParam,
-                                                                               const std::string& searchValue,
-                                                                               const std::string& refdb)
+                               const std::string& table, 
+                               const std::string& value,
+                               const std::string& searchParam,
+                               const std::string& searchValue,
+                               const std::string& refdb)
     {
                std::string val=value.c_str();
                std::string sVal=searchValue.c_str();
@@ -359,4 +378,45 @@ namespace creaImageIO
                sql += "';";
                UPDATESYNCDB(sql);
     }
-} 
\ No newline at end of file
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+    // get the files name to ignore for a add operation synchronization
+    // @param : the add key
+    //@result : list (path) of ignore files
+    /////////////////////////////////////////////////////////////////////////////////////////////////
+    void Synchronizer::GetList()
+    {
+               mList.clear();
+        std::vector<std::string> i_names;
+               std::string query = "SELECT PATH, REMOVE FROM IGNORED_FILES";
+               CppSQLite3Query res;
+        QUERYSYNCDB(query, res);
+               while (!res.eof())
+        {
+                       std::string file(res.getStringField(0));
+                       std::string ignore(res.getStringField(1));
+                       mList[file] = ignore == "0"? true : false;
+                       res.nextRow();
+        }
+               
+    }
+
+       bool Synchronizer::isIndexed(const std::string filename)
+       {
+               bool valid = true;
+               std::string name(filename);
+               boost::algorithm::replace_all( name,"\\" , "/");
+               std::map <std::string, bool>::iterator it_list = mList.begin();
+               for(;it_list != mList.end(); it_list++)
+               {
+                       if(it_list->first == name)
+                       {
+                               valid = false;
+                               break;
+                       }
+               }
+               return valid;
+       }
+}
\ No newline at end of file