Go to the documentation of this file.00001 #ifndef __creaImageIOTreeHandlerImageAdder_h_INCLUDED__
00002 #define __creaImageIOTreeHandlerImageAdder_h_INCLUDED__
00003
00004 #include <creaImageIOTreeHandler.h>
00005 #include <creaImageIOSynchron.h>
00006 #include <creaImageIOImageReader.h>
00007
00008
00009
00010 #include <boost/signal.hpp>
00011 #include <boost/bind.hpp>
00012 #if defined(USE_GDCM2)
00013 #include "creaImageIODicomScanner.h"
00014 #endif
00015
00016 namespace creaImageIO
00017 {
00022
00024
00025 class TreeHandlerImageAdder
00026 {
00027
00028 public:
00029
00031 TreeHandlerImageAdder(TreeHandler* tree);
00033 ~TreeHandlerImageAdder();
00035 void SetTreeHandler(TreeHandler* tree) { mTreeHandler = tree;}
00036
00038 void SetSynchronizer(Synchronizer* s){mSynchronizer=s;}
00040 void SetCurrentDatabase(std::string cur){mCurrentDB=cur;}
00041
00042
00043
00046 class Progress
00047 {
00048 public:
00049 Progress() { Reset(); }
00050 ~Progress() {}
00051
00052 void Reset()
00053 {
00054 mStop = false;
00055 mNumberScannedFiles = 0;
00056 mNumberScannedDirs = 0;
00057 mNumberHandledFiles = 0;
00058 mNumberAddedFiles = 0;
00059 }
00060
00061 int GetNumberScannedFiles() const { return mNumberScannedFiles; }
00062 int GetNumberScannedDirs() const { return mNumberScannedDirs; }
00063 int GetNumberHandledFiles() const { return mNumberHandledFiles; }
00064 int GetNumberAddedFiles() const { return mNumberAddedFiles; }
00065
00066 void IncNumberScannedFiles() { mNumberScannedFiles++; }
00067 void IncNumberScannedDirs() { mNumberScannedDirs++; }
00068 void IncNumberHandledFiles() { mNumberHandledFiles++; }
00069 void IncNumberAddedFiles() { mNumberAddedFiles++; }
00070
00071 void SetStop() { mStop = true; }
00072 bool GetStop() const { return mStop; }
00073
00074 private:
00075 bool mStop;
00076 int mNumberScannedFiles;
00077 int mNumberScannedDirs;
00078 int mNumberHandledFiles;
00079 int mNumberAddedFiles;
00080 };
00081
00082
00083
00084 const Progress& GetProgress() const { return mProgress; }
00085
00086
00087
00088 typedef boost::signal<void (Progress&)> ProgressSignalType;
00089 typedef ProgressSignalType::slot_function_type ProgressCallbackType;
00090
00091
00092
00100 void ConnectProgressObserver(ProgressCallbackType callback);
00101
00102
00103
00105 bool IsHandledFile( const std::string& filename);
00107 void AddFiles( const std::vector<std::string>& filename );
00109 void AddDirectory( const std::string& directory,
00110 bool recurse);
00111
00112
00113 #if defined(USE_GDCM2)
00114 void AddDirectoryRecursorScanner(const std::string &dirpath,
00115 bool recursive,const std::string &addKey, DicomImageScanner i_sc, bool b_loaded);
00116 #endif
00117
00119 void RemoveFile(tree::Node* node);
00121 void RemoveFiles(const std::vector<tree::Node*>& nodes);
00122
00123 void remove( tree::Node* i_node);
00124
00126 std::string Synchronize(bool repair, bool checkAttributes);
00128 void CheckSyncDirectory(const std::string &dirpath,
00129 bool recursive,
00130 bool repair,
00131 bool checkAttributes,
00132 std::vector<std::string> &i_ignorefiles,
00133 std::vector<std::string> & attsModified,
00134 std::vector<std::string> & newfiles);
00136 void CopyFiles(const std::vector<std::string>& filenames, const std::string directory );
00137
00139 void SaveAs(const std::vector<std::string>& filenames, std::vector<vtkImageData *> i_images);
00141 void FindNode(tree::Node* parent, int level,
00142 const std::string& searchParam,
00143 const std::string& searchVal,
00144 tree::Node*& node);
00145
00147 void FindNodePartial(tree::Node* parent, int level, const std::string& searchParam, const std::string& searchVal, tree::Node*& node);
00148
00150 void CheckAttributes(bool repair, std::string& file, std::vector<std::string>& attsModified);
00152 void DeleteDriveFromMainDB(const std::string& drive);
00154 void DeleteDriveFromOtherDB(const std::string& drive);
00156 void EditField(tree::Node* node, const std::string& name, const std::string& key, const std::string& val);
00158 void GetAttributes(const std::vector<std::string>& params,
00159 const std::string& filename,
00160 std::vector<std::string>& results);
00161
00163 const std::string isAttributeExist(const std::string i_attr);
00164
00165
00166
00167
00168
00169 private:
00170
00174 void AddFile( const std::string& filename );
00175
00177 void AddDirectoryRecursor( const std::string& directory,
00178 bool recurse,
00179 const std::string &addKey);
00180
00181 TreeHandler* mTreeHandler;
00182 Synchronizer* mSynchronizer;
00183 ImageReader mReader;
00184
00185 std::string mCurrentDB;
00186
00187 Progress mProgress;
00188 ProgressSignalType mProgressSignal;
00189
00190
00191 };
00192
00193
00194
00195
00196
00197
00198
00199 }
00200
00201 #include <iostream>
00202 inline std::ostream& operator << ( std::ostream& o,
00203 const creaImageIO::TreeHandlerImageAdder::Progress& p)
00204 {
00205 o << p.GetNumberScannedFiles() << " files - "
00206 << p.GetNumberScannedDirs() << " dirs - "
00207 << p.GetNumberHandledFiles() << " handled -"
00208 << p.GetNumberAddedFiles() << " added";
00209 return o;
00210 }
00211
00212
00213 #endif
00214