#include <creaImageIOGimmick.h>
-#include <creaMessageManager.h>
+#include <creaImageIOSystem.h>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string.hpp>
namespace creaImageIO
{
-
+
+
//==============================================================
Gimmick::Gimmick()
+ : mImageAdder(0)
{
- crea::MessageManager::RegisterMessageType("Gimmick!",
- "Gimmick",1);
+ RegisterGimmickMessageTypes();
}
//==============================================================
//==============================================================
- bool Gimmick::Initialize()
+ void Gimmick::Initialize()
{
// 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());
+ // Add it to the TreeHandlerMap
+ mTreeHandlerMap["Local database"] = mLocalDatabase;
+
// Create or open local database
if (! boost::filesystem::exists( GetLocalDatabasePath() ) )
{
- creaMessage("Gimmick!",1,
- "[Gimmick!] Local database '"<<GetLocalDatabasePath()<<"' "
- << "does not exist : creating it"<<std::endl);
-
+ std::string mess = "Local database '";
+ mess += GetLocalDatabasePath();
+ mess += "' does not exist : creating it";
+ GimmickMessage(1,mess<<std::endl);
+
// CREATING DEFAULT DB STRUCTURE
mLocalDatabase->GetTree().GetDescriptor().CreateDefault();
if ( ! mLocalDatabase->Create(true) )
{
- creaMessage("Gimmick!",1,
- "[Gimmick!] !! ERROR CREATING '"<<GetLocalDatabasePath()<<"'");
- return false;
+ GimmickError("ERROR CREATING '"<<GetLocalDatabasePath()<<"'");
}
+ mLocalDatabase->SetAttribute(0,"Name","Local database");
}
else
{
/// Open and test it
- creaMessage("Gimmick!",1,
- "[Gimmick!] Opening local database '"
- <<GetLocalDatabasePath()<<"' "
- <<std::endl);
+ GimmickMessage(1,"Opening local database '"
+ <<GetLocalDatabasePath()<<"' "
+ <<std::endl);
if ( ! mLocalDatabase->Open(true) )
{
- creaMessage("Gimmick!",1,
- "[Gimmick!] !! ERROR OPENING '"<<GetLocalDatabasePath()<<"'");
- return false;
+ GimmickError("ERROR OPENING '"<<GetLocalDatabasePath()<<"'");
}
}
- return true;
-
}
//================================================================
//==============================================================
- bool Gimmick::Finalize()
+ void Gimmick::Finalize()
{
delete mLocalDatabase;
}
//========================================================================
//========================================================================
- bool Gimmick::CreateUserSettingsDirectory()
+ void Gimmick::CreateUserSettingsDirectory()
{
if (! boost::filesystem::is_directory( GetUserSettingsDirectory() ) )
{
- creaMessage("Gimmick!",1,
- "[Gimmick!] Directory '"<<GetUserSettingsDirectory()<<"' "
- << "does not exist : creating it"<<std::endl);
+ GimmickMessage(1,"Directory '"<<GetUserSettingsDirectory()<<"' "
+ << "does not exist : creating it"<<std::endl);
if ( ! boost::filesystem::create_directory( GetUserSettingsDirectory() ) )
{
- creaMessage("Gimmick!",1,
- "[Gimmick!] !! ERROR CREATING '"<<GetUserSettingsDirectory()<<"'");
- return false;
+ GimmickError("ERROR CREATING '"<<GetUserSettingsDirectory()<<"'");
}
}
- return true;
}
//========================================================================
+
+ //========================================================================
+ /// Sets message level
+ void Gimmick::SetMessageLevel(int l)
+ {
+ SetGimmickMessageLevel(l);
+ }
+ //========================================================================
+
+ //========================================================================
+ /// Sets message level
+ void Gimmick::SetDebugMessageLevel(int l)
+ {
+ SetGimmickDebugMessageLevel(l);
+ }
+ //========================================================================
+
+ //========================================================================
+ /// Add a file to the local database
+ TreeHandler* Gimmick::GetTreeHandler(const std::string& name) const
+ {
+ TreeHandlerMapType::const_iterator i;
+ i = GetTreeHandlerMap().find(name);
+ if ( i == GetTreeHandlerMap().end() )
+ {
+ GimmickError("TreeHandler '"<<name<<"' does not exist");
+ }
+ return i->second;
+ }
+
+
+ //========================================================================
+ /// Add the files to the tree handler
+ void Gimmick::AddFiles(const std::string& d,
+ const std::vector<std::string>& filenames)
+ {
+ GimmickMessage(2,"Adding files to '"<<d<<"'"<<std::endl);
+
+ mImageAdder.SetTreeHandler(GetTreeHandler(d));
+ mImageAdder.AddFiles(filenames);
+
+ }
+ //========================================================================
+
+ //========================================================================
+ /// Add a dir to the local database
+ void Gimmick::AddDir(const std::string& d, const std::string& f,
+ bool recurse)
+ {
+ GimmickMessage(2,"Adding dir '"<<f<<"' to '"<<d<<"' recurse:"
+ <<recurse<<std::endl);
+
+ TreeHandler * handler=GetTreeHandler(d);
+ mImageAdder.SetTreeHandler(handler);
+ mImageAdder.AddDirectory(f,recurse);
+ //Synchronize(true, handler);
+
+ }
+
+ //========================================================================
+
+ //========================================================================
+
+ void Gimmick::Synchronize(bool update, TreeHandler* handler)
+ {
+ GimmickMessage(4,"Synchronizing. Update:"<<update<<std::endl);
+ if(mSynchronizer==0)
+ {
+ mSynchronizer=new Synchronizer(handler);
+ }
+ else
+ {
+ mSynchronizer->SetTreeHandler(handler);
+ }
+ mSynchronizer->Synchronize(update);
+
+ }
+
+ //========================================================================
+ ///
+ void Gimmick::Print(const std::string& d)
+ {
+ GetTreeHandler(d)->GetTree().Print();
+ }
+ //========================================================================
+
+
}