X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOSynchron.h;h=fde9f2d21afb090d69978ab69cbe375f54667b97;hb=6685b940296e57d4e3803765b986a6fe18d9be41;hp=7e4bc3693ccb58f150d9a44f078941fd46745ffc;hpb=48959b03ebd4e0d100f468f6c05c873f70b43516;p=creaImageIO.git diff --git a/src2/creaImageIOSynchron.h b/src2/creaImageIOSynchron.h index 7e4bc36..fde9f2d 100644 --- a/src2/creaImageIOSynchron.h +++ b/src2/creaImageIOSynchron.h @@ -11,13 +11,19 @@ namespace creaImageIO { using namespace std; //================================================================================================================ + ///Represents the list of currently added files class AddList { public : + ///Key to be added into the database std::string key; + ///Path of the directory std::string path; + /// Defines if the operation was recursive or not std::string recursive; + ///Number of added files std::string nbFiles; + ///Ctor AddList(CppSQLite3Query& res): key(res.getStringField(0)), path(res.getStringField(1)), @@ -28,14 +34,19 @@ namespace creaImageIO //================================================================================================================ //================================================================================================================ + ///Represents the list of currently removed files class RemoveList { public : + ///Key to be added into the database std::string key; + ///Path of the remove file std::string path; + ///Defines if the file was removed or not std::string remove; + ///Time of the last change of the file std::string time; - + ///Ctor RemoveList(CppSQLite3Query& res): key(res.getStringField(1)), path(res.getStringField(2)), @@ -46,47 +57,76 @@ namespace creaImageIO //================================================================================================================ //================================================================================================================ + ///In charge of the synchronization of the database and the disk state. class Synchronizer { public: + ///Ctor Synchronizer(const std::string& path); + ///Dtor virtual ~Synchronizer(); + ///Initializes the database void Initialize(); + ///Inserts an add operation to the database void InsertAddOp(const std::string& path, const std::string& recursive, const std::string& nChildren, const std::string& refdb); + ///Inserts a file to be ignored void InsertIgnoreFile(const std::string& addKey, const std::string& path, const std::string& remove, const std::string& time, const std::string& refdb); + ///Removes an entry that matches the given parameter void RemoveEntry(const std::string i_table, const std::string i_key); + ///Removes several entries + void RemoveEntries(const std::string i_table, + const std::string i_attribute, + const std::string i_operand, + const std::string i_key); + ///Gets the list of AddFiles void GetFileList(std::vector& files , const std::string& refdb); + ///Gets the list of ignored files void GetIgnoredFiles(const std::string& key, std::vector &ignoreList); + ///Gets the attribute that matches the parameters std::string GetAttribute(const std::string& attribute, const std::string& table, const std::string& searchParam, const std::string& searchValue, const std::string& refdb); + ///Sets an attribute to an entry that matches the given parameters void 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); + // Get the List of indexed files (removed or not) + void GetList(); + // Test to not if a file is indexed on db or not + bool isIndexed(const std::string filename); + // List of all indexed files + std::map mList; + ///The current AddList std::vector mAddList; + ///The current RemoveList std::vector mIgnoreList; private : /// The DB CppSQLite3DB* mDB; + ///Path of the current database std::string pathDB; + ///Creates a new database void CreateDB(); + ///Updates the AddList void UpdateAddList(const std::string& refdb); + ///Cleans the list in case operations are no longer useful (0 added files) void CleanList(const std::string& refdb); + ///Cleans the name (changes slashes and backslashes according to the system) void CleanName(std::string& str) const; - + ///Gets the ignore list std::vector GetIgnoreList(const std::string &i_key); };