X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src2%2FcreaImageIOGimmick.cpp;h=90dc2c8fcf716f2a088eaa543fce4bcc5c12f0e6;hb=cc5a912f64e8de1f90d9ef0956633515a46d31ae;hp=b7cc5f7b5ad1874e36fdd725515fdf2d569a3faa;hpb=f4bdead5143dc3d816f1c2f2bd9786a21c843760;p=creaImageIO.git diff --git a/src2/creaImageIOGimmick.cpp b/src2/creaImageIOGimmick.cpp index b7cc5f7..90dc2c8 100644 --- a/src2/creaImageIOGimmick.cpp +++ b/src2/creaImageIOGimmick.cpp @@ -1,18 +1,19 @@ #include -#include +#include #include #include namespace creaImageIO { - + + //============================================================== Gimmick::Gimmick() + : mImageAdder(0) { - crea::MessageManager::RegisterMessageType("Gimmick!", - "Gimmick",1); + RegisterGimmickMessageTypes(); } //============================================================== @@ -27,57 +28,114 @@ namespace creaImageIO //============================================================== - bool Gimmick::Initialize() + void Gimmick::Initialize() { + std::string i_nameDB = "Local database"; // Create the UserSettings dir if does not exist - if (!CreateUserSettingsDirectory()) return false; + CreateUserSettingsDirectory(); // Sets the current directory to the home dir mCurrentDirectory = GetHomeDirectory(); + mSynchronizer=0; - // Create local database handler - mLocalDatabase = new SQLiteTreeHandler(GetLocalDatabasePath()); + std::string dbpath = GetLocalDatabasePath(); + // Create or open local database + mLocalDatabase = createDB(i_nameDB, mCurrentDirectory + "\\.gimmick\\localdatabase_Descriptor.txt", dbpath); + // Add it to the TreeHandlerMap + mTreeHandlerMap[i_nameDB] = mLocalDatabase; + + // Creates files and directories database + mTimestampDatabase = new TimestampDatabaseHandler(GetTimestampDatabasePath()); // Create or open local database - if (! boost::filesystem::exists( GetLocalDatabasePath() ) ) + if (! boost::filesystem::exists( GetTimestampDatabasePath() ) ) { - creaMessage("Gimmick!",1, - "[Gimmick!] Local database '"<GetTree().GetDescriptor().CreateDefault(); + std::string mess = "Timestamp database '"; + mess += GetTimestampDatabasePath(); + mess += "' does not exist : creating it"; + GimmickMessage(1,mess<Create(true) ) + if ( ! mTimestampDatabase->Create() ) { - creaMessage("Gimmick!",1, - "[Gimmick!] !! ERROR CREATING '"<Open(true) ) + GimmickMessage(1,"Opening Timestamp database '" + <Open() ) { - creaMessage("Gimmick!",1, - "[Gimmick!] !! ERROR OPENING '"<GetTree().GetDescriptor().createDescriptorfromFile(i_locDesc); + if ( ! sqlTreeH->Create(true) ) + { + GimmickError("ERROR CREATING '"<SetAttribute(0,"Name",i_name); + } + else + { + /// Open and test it + GimmickMessage(1,"Opening local database '" <Open(true) ) + { + GimmickError("ERROR OPENING '"<second; + } + delete mTimestampDatabase; } //============================================================== @@ -133,42 +191,134 @@ namespace creaImageIO } return mLocalDatabasePath; } + + //================================================================ + + //================================================================ + const std::string& Gimmick::GetTimestampDatabasePath() + { + if (mTimestampDatabasePath.size()==0) + { + mTimestampDatabasePath = GetUserSettingsDirectory(); + mTimestampDatabasePath += "timestamp_database.sqlite3"; + boost::algorithm::replace_all( mTimestampDatabasePath, + INVALID_FILE_SEPARATOR , + VALID_FILE_SEPARATOR); + } + return mTimestampDatabasePath; + } //======================================================================== //======================================================================== - bool Gimmick::CreateUserSettingsDirectory() + void Gimmick::CreateUserSettingsDirectory() { if (! boost::filesystem::is_directory( GetUserSettingsDirectory() ) ) { - creaMessage("Gimmick!",1, - "[Gimmick!] Directory '"<second; + } + + //======================================================================== + ///Returns the timestamp database handler + TimestampDatabaseHandler* Gimmick::GetTimestampDatabase() const + { + return mTimestampDatabase; + } + + + //======================================================================== + /// Add the files to the tree handler + void Gimmick::AddFiles(const std::string& d, + const std::vector& filenames) + { + GimmickMessage(2,"Adding files to '"<SetTreeHandler(handler); + } + mSynchronizer->Synchronize(update); + + } + + //======================================================================== + /// + void Gimmick::Print(const std::string& d) + { + GetTreeHandler(d)->GetTree().Print(); + } + //======================================================================== + + }