1 #include <creaImageIOGimmick.h>
3 #include <creaMessageManager.h>
5 #include <boost/filesystem.hpp>
6 #include <boost/algorithm/string.hpp>
11 //==============================================================
14 crea::MessageManager::RegisterMessageType("Gimmick!",
17 //==============================================================
21 //==============================================================
26 //==============================================================
29 //==============================================================
30 bool Gimmick::Initialize()
32 // Create the UserSettings dir if does not exist
33 if (!CreateUserSettingsDirectory()) return false;
34 // Sets the current directory to the home dir
35 mCurrentDirectory = GetHomeDirectory();
37 // Create local database handler
38 mLocalDatabase = new SQLiteTreeHandler(GetLocalDatabasePath());
39 // Create or open local database
40 if (! boost::filesystem::exists( GetLocalDatabasePath() ) )
42 creaMessage("Gimmick!",1,
43 "[Gimmick!] Local database '"<<GetLocalDatabasePath()<<"' "
44 << "does not exist : creating it"<<std::endl);
46 // CREATING DEFAULT DB STRUCTURE
47 mLocalDatabase->GetTree().GetDescriptor().CreateDefault();
49 if ( ! mLocalDatabase->Create(true) )
51 creaMessage("Gimmick!",1,
52 "[Gimmick!] !! ERROR CREATING '"<<GetLocalDatabasePath()<<"'");
59 creaMessage("Gimmick!",1,
60 "[Gimmick!] Opening local database '"
61 <<GetLocalDatabasePath()<<"' "
63 if ( ! mLocalDatabase->Open(true) )
65 creaMessage("Gimmick!",1,
66 "[Gimmick!] !! ERROR OPENING '"<<GetLocalDatabasePath()<<"'");
74 //================================================================
77 //==============================================================
78 bool Gimmick::Finalize()
80 delete mLocalDatabase;
82 //==============================================================
84 //================================================================
87 #define VALID_FILE_SEPARATOR "\\"
88 #define INVALID_FILE_SEPARATOR "/"
90 #define INVALID_FILE_SEPARATOR "\\"
91 #define VALID_FILE_SEPARATOR "/"
93 //================================================================
95 //================================================================
96 const std::string& Gimmick::GetHomeDirectory()
98 if (mHomeDirectory.size()==0)
100 #if defined(__GNUC__)
101 mHomeDirectory = getenv("HOME");
102 #elif defined(_WIN32)
103 mHomeDirectory = getenv("USERPROFILE");
106 return mHomeDirectory;
108 //================================================================
109 const std::string& Gimmick::GetUserSettingsDirectory()
111 if (mUserSettingsDirectory.size()==0)
113 mUserSettingsDirectory = GetHomeDirectory();
114 mUserSettingsDirectory += "/.gimmick/";
115 boost::algorithm::replace_all( mUserSettingsDirectory,
116 INVALID_FILE_SEPARATOR ,
117 VALID_FILE_SEPARATOR);
119 return mUserSettingsDirectory;
121 //================================================================
123 //================================================================
124 const std::string& Gimmick::GetLocalDatabasePath()
126 if (mLocalDatabasePath.size()==0)
128 mLocalDatabasePath = GetUserSettingsDirectory();
129 mLocalDatabasePath += "local_database.sqlite3";
130 boost::algorithm::replace_all( mLocalDatabasePath,
131 INVALID_FILE_SEPARATOR ,
132 VALID_FILE_SEPARATOR);
134 return mLocalDatabasePath;
136 //========================================================================
138 //========================================================================
139 bool Gimmick::CreateUserSettingsDirectory()
141 if (! boost::filesystem::is_directory( GetUserSettingsDirectory() ) )
143 creaMessage("Gimmick!",1,
144 "[Gimmick!] Directory '"<<GetUserSettingsDirectory()<<"' "
145 << "does not exist : creating it"<<std::endl);
147 if ( ! boost::filesystem::create_directory( GetUserSettingsDirectory() ) )
149 creaMessage("Gimmick!",1,
150 "[Gimmick!] !! ERROR CREATING '"<<GetUserSettingsDirectory()<<"'");
156 //========================================================================