#define __creaImageIOTreeHandlerImageAdder_h_INCLUDED__
#include <creaImageIOTreeHandler.h>
+#include <creaImageIOTimestampDatabaseHandler.h>
+#include <creaImageIOSynchron.h>
#include <creaImageIOImageReader.h>
#include <wx/wx.h>
#include <wx/progdlg.h>
+#include <creaWx.h>
// Signal/slot mechanism for progress events
#include <boost/signal.hpp>
#include <boost/bind.hpp>
class TreeHandlerImageAdder
{
+
public:
//====================================================================
/// Ctor
~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;}
//====================================================================
//====================================================================
void AddFiles( const std::vector<std::string>& 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<tree::Node*>& 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<std::string> &i_ignorefiles,
+ std::vector<std::string> & attsModified,
+ std::vector<std::string> & newfiles);
+ ///Copies the files indicated in the vector and updates all databases
+ void CopyFiles(const std::vector<std::string>& 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<std::string>& 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);
+
+
//====================================================================
private:
/// 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;