#include <boost/filesystem.hpp>
#include <boost/algorithm/string.hpp>
+#ifndef PATH_MAX // If not defined yet : do it
+# define PATH_MAX 2048
+#endif
+
namespace creaImageIO
{
: mImageAdder(0)
{
RegisterGimmickMessageTypes();
+ mSettings=0;
+ mSynchronizer=0;
}
//==============================================================
//==============================================================
Gimmick::~Gimmick()
{
+ if(mSettings!=0)
+ {
mSettings->writeSettingsFile();
delete mSettings;
+ }
+ if(mSynchronizer!=0)
+ {
delete mSynchronizer;
+ }
}
//==============================================================
//==============================================================
void Gimmick::Initialize()
{
- std::string i_nameDB = "Local database";
+ std::string i_nameDB = "Local database";
// Create the UserSettings dir if does not exist
CreateUserSettingsDirectory();
// Sets the current directory to the home dir
std::string dbpath = GetLocalDatabasePath();
// Create or open local database
- mLocalDatabase = createDB(i_nameDB, mCurrentDirectory + "\\.gimmick\\localdatabase_Descriptor.txt", dbpath);
+ std::string dpath= mCurrentDirectory + "/.gimmick/localdatabase_Descriptor.txt";
+ boost::algorithm::replace_all( dpath,
+ INVALID_FILE_SEPARATOR ,
+ VALID_FILE_SEPARATOR);
+ mLocalDatabase = createDB(i_nameDB, dpath, dbpath);
// Add it to the TreeHandlerMap
mTreeHandlerMap[i_nameDB] = mLocalDatabase;
}
//================================================================
+
//================================================================
const std::string& Gimmick::GetLocalDatabasePath()
{
GimmickError("ERROR CREATING '"<<GetUserSettingsDirectory()<<"'");
}
}
+
+ std::string setDir=GetUserSettingsDirectory();
+ boost::algorithm::replace_all( setDir,
+ INVALID_FILE_SEPARATOR ,
+ VALID_FILE_SEPARATOR);
+ setDir+="localdatabase_Descriptor.txt";
+ //if(!boost::filesystem::is_regular_file(setDir)) //JPRX
+ if(!boost::filesystem::is_regular(setDir))
+ {
+ char name[PATH_MAX];
+//EED int err = GetBinaryDirectory(name, PATH_MAX);
+ crea::System::GetAppPath(name,PATH_MAX);
+
+ std::string path=name;
+ path=path.substr(0,path.size()-1);
+ path=path.substr(0,path.find_last_of("/"));
+ path+="/data/localdatabase_Descriptor.txt";
+ boost::algorithm::replace_all( path,
+ INVALID_FILE_SEPARATOR ,
+ VALID_FILE_SEPARATOR);
+ boost::filesystem::copy_file(path,setDir);
+ }
}
//========================================================================
GetTreeHandler(d)->GetTree().Print();
}
//========================================================================
+
+ void Gimmick::GetSetting(const std::string& name, std::string& value)
+ {
+ value = mSettings->getValue(name);
+ }
+ //========================================================================
+
+ //========================================================================
+
+ void Gimmick::GetAttributes(const std::string& d,
+ const std::string& filename,
+ const std::vector<std::string>& params,
+ std::vector<std::string>& results)
+ {
+ TreeHandler * handler=GetTreeHandler(d);
+ mImageAdder.SetCurrentDatabase(d);
+ mImageAdder.SetTreeHandler(handler);
+ mImageAdder.SetTimestampHandler(mTimestampDatabase);
+ mImageAdder.SetSynchronizer(mSynchronizer);
+ mImageAdder.GetAttributes(params, filename, results);
+ }
+ //========================================================================
+
+ //========================================================================
+
+ void Gimmick::UpdateSetting(const std::string& name, const std::string& value)
+ {
+ mSettings->updateSetting(name,value);
+ mSettings->writeSettingsFile();
+ }
+ //========================================================================
+
+ void Gimmick::DeleteDrive(const std::string& drive)
+ {
+ for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
+ it!= mTreeHandlerMap.end(); ++it)
+ {
+ mImageAdder.SetTreeHandler(it->second);
+ mImageAdder.DeleteDriveFromMainDB(drive);
+ }
+ mImageAdder.SetTimestampHandler(mTimestampDatabase);
+ mImageAdder.SetSynchronizer(mSynchronizer);
+ mImageAdder.DeleteDriveFromOtherDB(drive);
+ }
+
+ //========================================================================
+ void Gimmick::EditField(tree::Node* node, const std::string& d, const std::string& name, const std::string& key, const std::string& val)
+ {
+ TreeHandler * handler=GetTreeHandler(d);
+ mImageAdder.SetCurrentDatabase(d);
+ mImageAdder.SetTreeHandler(handler);
+ mImageAdder.EditField(node,name,key,val);
+ }
+ //========================================================================
+
+
/////////////////////////////////////////////////////////////////////////
// add DB from Settings file //
// @param : - //