]> Creatis software - creaImageIO.git/blobdiff - src/creaImageIOTreeHandlerImageAdder.cpp
Feature #1764
[creaImageIO.git] / src / creaImageIOTreeHandlerImageAdder.cpp
index 76e8530e69bac24cac0ba365195b79b872181be6..33f6dd80a42b991ba66d0263f54dd4c302c3a052 100644 (file)
@@ -1,3 +1,30 @@
+/*
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and 
+#  abiding by the rules of distribution of free software. You can  use, 
+#  modify and/ or redistribute the software under the terms of the CeCILL-B 
+#  license as circulated by CEA, CNRS and INRIA at the following URL 
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability. 
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------
+*/
+
 #include <creaImageIOTreeHandlerImageAdder.h>
 #include <creaImageIOSystem.h>
 #include <boost/filesystem.hpp>
@@ -47,9 +74,9 @@ namespace creaImageIO
   {
     mProgress.Reset();
        
-    unsigned int nbf = filenames.size(); 
+    //unsigned int nbf = filenames.size(); 
     std::vector<std::string>::const_iterator i;
-       mSynchronizer->GetList(mCurrentDB);
+    mSynchronizer->GetList(mCurrentDB);
     for (i=filenames.begin();i!=filenames.end();++i)
       {
        
@@ -86,9 +113,9 @@ namespace creaImageIO
        std::string addKey=mSynchronizer->GetAttribute("ADD_KEY","ADD_OPS","PATH",directory,mCurrentDB);
        mTreeHandler->BeginTransaction();
        mSynchronizer->GetList(mCurrentDB);
-       //AddDirectoryRecursor( directory, recurse, addKey );
-       DicomImageScanner sc;
-       AddDirectoryRecursorScanner(directory, recurse, addKey, sc, false );
+       AddDirectoryRecursor( directory, recurse, addKey );
+       //DicomImageScanner sc;
+       //AddDirectoryRecursorScanner(directory, recurse, addKey, sc, false );
        
        int nFiles=GetProgress().GetNumberAddedFiles();
        files<<nFiles;
@@ -138,19 +165,8 @@ namespace creaImageIO
                }
                else
                {
-                 std::string path=node->GetAttribute("FullFileName");
-                 //Gets the add key
-                 std::string addKey=mSynchronizer->GetAttribute("ADD_KEY","IGNORED_FILES","PATH",path,mCurrentDB);
-                 //Gets the number of files added
-                 int files=atoi((mSynchronizer->GetAttribute("FILES_ADDED","ADD_OPS","ADD_KEY",addKey,mCurrentDB)).c_str());
-                 files=files-1;
-                 std::stringstream out;
-                 out<<files;
-                 //Sets the new number of files
-                 mSynchronizer->SetAttribute("FILES_ADDED","ADD_OPS",out.str(),"ADD_KEY",addKey,mCurrentDB);
-                 //Sets the file as removed
-                 mSynchronizer->SetAttribute("REMOVE","IGNORED_FILES","1","PATH = '"+path+"' AND ADD_KEY",addKey,mCurrentDB);
-               }
+               remove(node);
+        }
   }
 
   //=====================================================================
@@ -167,7 +183,16 @@ namespace creaImageIO
                }
                else
                {
-                  std::string path=(*it)->GetAttribute("FullFileName");
+               remove(*it);
+               }
+       
+         }
+  }
+
+
+  void  TreeHandlerImageAdder::remove( tree::Node* i_node)
+  {
+         std::string path=i_node->GetAttribute("FullFileName");
                  //Gets the add key
                  std::string addKey=mSynchronizer->GetAttribute("ADD_KEY","IGNORED_FILES","PATH",path,mCurrentDB);
                  //Gets the number of files added
@@ -179,11 +204,7 @@ namespace creaImageIO
                  mSynchronizer->SetAttribute("FILES_ADDED","ADD_OPS",out.str(),"ADD_KEY",addKey,mCurrentDB);
                  //Sets the file as removed
                  mSynchronizer->SetAttribute("REMOVE","IGNORED_FILES","1","PATH = '"+path+"' AND ADD_KEY",addKey,mCurrentDB);
-               }
-       
-         }
   }
-
  
   
   //=======================================================================
@@ -228,18 +249,16 @@ namespace creaImageIO
                bool valid = mSynchronizer->isIndexed(itr->string());//true;//=mTimestampHandler->AddDirectory(dirpath, itr->string(), lastModif, time(0),mCurrentDB);
                if(valid)
                {
-
+                       std::string path(itr->string());
                        mProgress.IncNumberScannedFiles();
-                       boost::algorithm::replace_all( itr->string(),
-                                   INVALID_FILE_SEPARATOR , 
-                                  VALID_FILE_SEPARATOR);
+                        boost::algorithm::replace_all( path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR);
                        i_sc.ReadAttributes(itr->string(),attr);
-                       mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id);
+               //      mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id);
                        mTreeHandler->AddBranch(attr);
                        mProgress.IncNumberHandledFiles();
                        std::stringstream removedOn;
                        removedOn<<time(0);
-                       mSynchronizer->InsertIgnoreFile(addKey, itr->string(),"0",removedOn.str(),mCurrentDB);
+                        mSynchronizer->InsertIgnoreFile(addKey, path,"0",removedOn.str(),mCurrentDB);
 
                        
                        mProgressSignal(mProgress);
@@ -263,9 +282,10 @@ namespace creaImageIO
     mProgress.IncNumberScannedDirs();
 
     if ( !fs::exists( dirpath ) ) return;
-       time_t lastModif=fs::last_write_time(dirpath);
+    
+    /// \TODO fix warning: unused variable lastModif
+    time_t lastModif=fs::last_write_time(dirpath);
 
-       
     fs::directory_iterator end_itr; // default construction yields past-the-end
     for ( fs::directory_iterator itr( dirpath );
          itr != end_itr;
@@ -291,7 +311,7 @@ namespace creaImageIO
                        {
                        mProgress.IncNumberHandledFiles();
                        AddFile( itr->string() );
-                       mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id);
+                       //mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id);
                        std::stringstream removedOn;
                        removedOn<<time(0);
                        mSynchronizer->InsertIgnoreFile(addKey, itr->string(),"0",removedOn.str(),mCurrentDB);
@@ -688,5 +708,10 @@ namespace creaImageIO
          }
   }
 
+  //=======================================================================
+  const std::string TreeHandlerImageAdder::isAttributeExist(const std::string i_attr)
+  {
+         return mTreeHandler->GetTree().isAttributeExist(i_attr);
+  }
+
 }