X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOTreeHandlerImageAdder.h;h=521f0ffc13bf31d4d7fe8a6c1b45b0d44f7aa89c;hb=e4c4c1a9a170f8eb89f8e8642a510c4499465280;hp=4d753d77c74eb72d07e4570f738d77f0344b4b99;hpb=f1caae70392f96f30dd90eb073be6be10fbf1caa;p=creaImageIO.git diff --git a/src2/creaImageIOTreeHandlerImageAdder.h b/src2/creaImageIOTreeHandlerImageAdder.h index 4d753d7..521f0ff 100644 --- a/src2/creaImageIOTreeHandlerImageAdder.h +++ b/src2/creaImageIOTreeHandlerImageAdder.h @@ -2,9 +2,12 @@ #define __creaImageIOTreeHandlerImageAdder_h_INCLUDED__ #include +#include +#include #include #include #include +#include // Signal/slot mechanism for progress events #include #include @@ -21,6 +24,7 @@ namespace creaImageIO class TreeHandlerImageAdder { + public: //==================================================================== /// Ctor @@ -29,6 +33,12 @@ namespace creaImageIO ~TreeHandlerImageAdder(); /// Sets the TreeHandler void SetTreeHandler(TreeHandler* tree) { mTreeHandler = tree;} + /// Sets the TimestampDatabaseHandler + void SetTimestampHandler(TimestampDatabaseHandler* tdh) { mTimestampHandler = tdh;} + /// Sets the synchronizer + void SetSynchronizer(Synchronizer* s){mSynchronizer=s;} + /// Sets the synchronizer + void SetCurrentDatabase(std::string cur){mCurrentDB=cur;} //==================================================================== //==================================================================== @@ -49,10 +59,10 @@ namespace creaImageIO mNumberAddedFiles = 0; } - int GetNumberScannedFiles() { return mNumberScannedFiles; } - int GetNumberScannedDirs() { return mNumberScannedDirs; } - int GetNumberHandledFiles() { return mNumberHandledFiles; } - int GetNumberAddedFiles() { return mNumberAddedFiles; } + int GetNumberScannedFiles() const { return mNumberScannedFiles; } + int GetNumberScannedDirs() const { return mNumberScannedDirs; } + int GetNumberHandledFiles() const { return mNumberHandledFiles; } + int GetNumberAddedFiles() const { return mNumberAddedFiles; } void IncNumberScannedFiles() { mNumberScannedFiles++; } void IncNumberScannedDirs() { mNumberScannedDirs++; } @@ -60,7 +70,7 @@ namespace creaImageIO void IncNumberAddedFiles() { mNumberAddedFiles++; } void SetStop() { mStop = true; } - bool GetStop() { return mStop; } + bool GetStop() const { return mStop; } private: bool mStop; @@ -76,7 +86,6 @@ namespace creaImageIO //============================================= //============================================= - // typedef boost::signals::trackable ProgressObserverType; typedef boost::signal ProgressSignalType; typedef ProgressSignalType::slot_function_type ProgressCallbackType; //============================================= @@ -99,33 +108,93 @@ namespace creaImageIO void AddFiles( const std::vector& filename ); /// (Recursively) adds the files of a directory to the TreeHandler void AddDirectory( const std::string& directory, - bool recurse ); + bool recurse); + /// Removes a file from the databases + void RemoveFile(tree::Node* node); + /// Removes files from the databases + void RemoveFiles(const std::vector& nodes); + /// Synchronizes the DB and disk by repeating the operations the user has done and returns a report + std::string Synchronize(bool repair, bool checkAttributes); + ///Recursively checks if the directory is synchronized and optionally the state of the attributes + void CheckSyncDirectory(const std::string &dirpath, + bool recursive, + bool repair, + bool checkAttributes, + std::vector &i_ignorefiles, + std::vector & attsModified, + std::vector & newfiles); + ///Copies the files indicated in the vector and updates all databases + void CopyFiles(const std::vector& filenames, const std::string directory ); + ///Finds the node that matches the specified parameters + void FindNode(tree::Node* parent, int level, + const std::string& searchParam, + const std::string& searchVal, + tree::Node*& node); + + ///Finds the nodes that partially match the searchVal + void FindNodePartial(tree::Node* parent, int level, const std::string& searchParam, const std::string& searchVal, tree::Node*& node); + + ///Checks the attributes of the database against the ones in disk + void CheckAttributes(bool repair, std::string& file, std::vector& attsModified); + ///Deletes the drive with the given name (use for all databases except maintenance and timestamp) + void DeleteDriveFromMainDB(const std::string& drive); + ///Deletes the drive with the given name (use for maintenance and timestamp databases) + void DeleteDriveFromOtherDB(const std::string& drive); + ///Edits the given field and sets the new parameters + void EditField(tree::Node* node, const std::string& name, const std::string& key, const std::string& val); + ///Returns the demanded attributes for the given file + void GetAttributes(const std::vector& params, + const std::string& filename, + std::vector& results); + + + + //==================================================================== private: /// Adds a single file to the TreeHandler - /// **WITHOUT** testing werther it is handled or not + /// **WITHOUT** testing wether it is handled or not /// hence you have to call IsHandledFile before using AddFile! void AddFile( const std::string& filename ); /// Recursive method which does the main job for AddDirectory void AddDirectoryRecursor( const std::string& directory, - bool recurse ); - + bool recurse, + const std::string &addKey); TreeHandler* mTreeHandler; + TimestampDatabaseHandler* mTimestampHandler; + Synchronizer* mSynchronizer; ImageReader mReader; + std::string mCurrentDB; Progress mProgress; ProgressSignalType mProgressSignal; + + }; // EO class TreeHandlerImageAdder //======================================================================= + + + } // EO namespace creaImageIO +#include +inline std::ostream& operator << ( std::ostream& o, + const creaImageIO::TreeHandlerImageAdder::Progress& p) +{ + o << p.GetNumberScannedFiles() << " files - " + << p.GetNumberScannedDirs() << " dirs - " + << p.GetNumberHandledFiles() << " handled -" + << p.GetNumberAddedFiles() << " added"; + return o; +} + // EOF #endif