00001 #ifndef __creaImageIOGimmick_h_INCLUDED__
00002 #define __creaImageIOGimmick_h_INCLUDED__
00003
00004 #include <creaImageIOSQLiteTreeHandler.h>
00005 #include <creaImageIOTreeHandlerImageAdder.h>
00006 #include <creaImageIOTimestampDatabaseHandler.h>
00007 #include <creaImageIOSynchron.h>
00008 #include <creaImageIOSettings.h>
00009
00010 namespace creaImageIO
00011 {
00038
00040 class CREAIMAGEIO_EXPORT Gimmick
00041 {
00042 public:
00044 Gimmick();
00046 ~Gimmick();
00047
00049 typedef TreeHandlerImageAdder::Progress AddProgress;
00050 typedef TreeHandlerImageAdder::ProgressCallbackType AddProgressCallbackType;
00051
00059 void ConnectAddProgressObserver( AddProgressCallbackType callback )
00060 { mImageAdder.ConnectProgressObserver(callback); }
00061
00062
00064 const AddProgress& GetAddProgress() const { return mImageAdder.GetProgress(); }
00065
00067 void Initialize();
00068
00070 void Finalize();
00071
00073 static void SetMessageLevel(int level);
00075 static void SetDebugMessageLevel(int level);
00076
00078 typedef std::map<std::string, TreeHandler*> TreeHandlerMapType;
00079
00081 TreeHandlerMapType& GetTreeHandlerMap() { return mTreeHandlerMap; }
00083 const TreeHandlerMapType& GetTreeHandlerMap() const
00084 { return mTreeHandlerMap; }
00085
00086
00088 void AddFiles(const std::string& handler,
00089 const std::vector<std::string>& filenames);
00090
00092 void AddDir(const std::string& handler, const std::string& path,
00093 bool recurse);
00094
00096 void RemoveFile(const std::string& d,
00097 tree::Node* filename);
00098
00100 void DeleteDrive(const std::string& drive);
00101
00102
00104 void CopyFiles(const std::vector<std::string>& filenames, const std::string& d );
00105
00106
00109 std::string Synchronize(const std::string& d, bool repair, bool checkAttributes);
00110
00112 void Print(const std::string& handler);
00113
00115 SQLiteTreeHandler *createDB(const std::string &i_name,
00116 const std::string &i_locDesc,
00117 const std::string &i_locDB);
00118
00119
00120 void addDB(const std::string &i_nameDB, const std::string &i_locationDB);
00121
00123 TreeHandler* GetTreeHandler(const std::string& name) const;
00124
00126 TimestampDatabaseHandler* GetTimestampDatabase() const;
00128 SQLiteTreeHandler* GetLocalDatabase() { return mLocalDatabase; }
00129
00130 const SQLiteTreeHandler* GetLocalDatabase() const
00131 { return mLocalDatabase; }
00132
00134 void GetSetting(const std::string& name, std::string& value);
00135
00137 void UpdateSetting(const std::string& name, const std::string& value);
00138
00140 void addDBSettings();
00141
00143 void EditField(tree::Node* node, const std::string& d, const std::string& name, const std::string& key, const std::string& val);
00144
00146 void GetAttributes(const std::string& d,
00147 const std::string& filename,
00148 const std::vector<std::string>& params,
00149 std::vector<std::string>& results);
00150
00152 const std::string& GetHomeDirectory();
00153 const std::string& GetUserSettingsDirectory();
00154 void CreateUserSettingsDirectory();
00155 const std::string& GetLocalDatabasePath();
00156 const std::string& GetTimestampDatabasePath();
00157
00158
00159
00160 private:
00161 SQLiteTreeHandler* mLocalDatabase;
00162 TimestampDatabaseHandler* mTimestampDatabase;
00163 TreeHandlerMapType mTreeHandlerMap;
00164 Synchronizer* mSynchronizer;
00165
00166 std::string mCurrentDirectory;
00167 std::string mHomeDirectory;
00168 std::string mUserSettingsDirectory;
00169 std::string mLocalDatabasePath;
00170 std::string mTimestampDatabasePath;
00171 Settings *mSettings;
00172 TreeHandlerImageAdder mImageAdder;
00173 };
00174
00175
00176
00177
00178 }
00179
00180
00181 #endif
00182
00183