+
#include <creaImageIOGimmick.h>
#include <creaImageIOSystem.h>
#ifndef PATH_MAX // If not defined yet : do it
# define PATH_MAX 2048
#endif
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
+
namespace creaImageIO
{
Gimmick::Gimmick()
: mImageAdder(0)
{
- RegisterGimmickMessageTypes();
+ RegisterGimmickMessageTypes();
mSettings=0;
mSynchronizer=0;
+ mLocalDescpName = "localdatabase_Descriptor.dscp";
+ mLocalDBName = "Local database";
}
//==============================================================
//==============================================================
Gimmick::~Gimmick()
{
+
if(mSettings!=0)
{
mSettings->writeSettingsFile();
//==============================================================
//==============================================================
- void Gimmick::Initialize(const std::string& path)
+ void Gimmick::Initialize(const std::string i_namedescp, const std::string i_namedb)
{
+ mLocalDescpName = i_namedescp;
+ mLocalDBName = i_namedb;
Initialize();
}
//==============================================================
void Gimmick::Initialize()
{
- std::string i_nameDB = "Local database";
+ std::string i_nameDB = mLocalDBName;
// 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
- std::string dpath= mCurrentDirectory + "/.gimmick/Shared/gimmick/localdatabase_Descriptor.dscp";
+ std::string dpath= mCurrentDirectory + "/.gimmick/Shared/gimmick/" + mLocalDescpName;
boost::algorithm::replace_all( dpath,
INVALID_FILE_SEPARATOR ,
VALID_FILE_SEPARATOR);
}
}
- ////////////////////////////////////////////////////////////////////////
- // create a DB from a attributes descriptor file for medical images //
- // @param i_name : DB name //
- // @param i_locDesc : location of descriptor file //
- // @param i_locDB : location of DB //
- // return : the SQLiteTreeHandler object on DB //
- //////////////////////////////////////////////////////////////////
- SQLiteTreeHandler *Gimmick::createDB(const std::string &i_name,
- const std::string &i_locDesc,
- const std::string &i_locDB)
+ ///////////////////////////////////////////////////////////////////////////
+ // create a DB from a attributes descriptor file for medical images //
+ // @param i_name : DB name //
+ // @param i_locDesc : location of descriptor file //
+ // @param i_locDB : location of DB //
+ // return : the SQLiteTreeHandler object on DB //
+ /////////////////////////////////////////////////////////////////////////
+ SQLiteTreeHandler* Gimmick::createDB(const std::string &i_name,
+ const std::string &i_locDesc,
+ const std::string &i_locDB)
{
- SQLiteTreeHandler *sqlTreeH = new SQLiteTreeHandler(i_locDB);
+ SQLiteTreeHandler* sqlTreeH( new SQLiteTreeHandler(i_locDB) );
// Create or open local database
if (! boost::filesystem::exists(i_locDB) )
{
else
{
/// Open and test it
- GimmickMessage(1,"Opening local database '" <<i_locDB<< "' " << std::endl);
+
+ GimmickDebugMessage(1,"Opening local database '" <<i_locDB<< "' " << std::endl);
if ( !sqlTreeH->Open(true) )
{
GimmickError("ERROR OPENING '"<<i_locDB<<"'");
//==============================================================
void Gimmick::Finalize()
{
-
- // delete SQLiteTreeHandler Object
- for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
- it!= mTreeHandlerMap.end();
- ++it)
- {
- delete it->second;
- }
+ if(mTreeHandlerMap.size() >0)
+ {
+ // delete SQLiteTreeHandler Object
+ for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
+ it!= mTreeHandlerMap.end();
+ ++it)
+ {
+ delete it->second;
+ }
+ }
}
//==============================================================
if (mLocalDatabasePath.size()==0)
{
mLocalDatabasePath = GetUserSettingsDirectory();
- mLocalDatabasePath += "Shared/gimmick/local_database.sqlite3";
+ mLocalDatabasePath += "Shared/gimmick/";
+ mLocalDatabasePath += mLocalDBName;
+ mLocalDatabasePath +=".sqlite3";
boost::algorithm::replace_all( mLocalDatabasePath,
INVALID_FILE_SEPARATOR ,
VALID_FILE_SEPARATOR);
//========================================================================
void Gimmick::CreateUserSettingsDirectory()
{
- if (! boost::filesystem::is_directory( GetUserSettingsDirectory() ) )
+ // std::string st("C:/Documents and Settings/cervenansky/.gimmick/");
+ // boost::algorithm::replace_all( st,
+ // INVALID_FILE_SEPARATOR ,
+ // VALID_FILE_SEPARATOR);
+ //const boost::filesystem::path mpath(st);
+//C:\Documents and Settings\cervenansky\.gimmick");
+ //if ( !boost::filesystem::exists( path ) ) return ;
+ // boost::filesystem::directory_iterator end_itr; // default construction yields past-the-end
+ // for ( boost::filesystem::directory_iterator itr( path ); itr != end_itr; ++itr )
+ // {
+ //// If is directory & recurse : do recurse
+ // if ( boost::filesystem::is_directory(itr->status()) )
+ // return;
+ // }
+
+ //JCP settings dir 02/10/2009
+ const std::string settingsdirectory = GetUserSettingsDirectory();
+ //boost::algorithm::replace_all( mUserSettingsDirectory,
+ // INVALID_FILE_SEPARATOR ,
+ // VALID_FILE_SEPARATOR);
+;//("E:\frederic");
+ //("C:\\Documents and Settings\\cervenansky\\.gimmick\\"); // settingsdirectory );
+ bool isdir = false;
+ isdir = boost::filesystem::is_directory(settingsdirectory); // settingsdirectory );
+ if (! isdir )
{
GimmickMessage(1,"Directory '"<<GetUserSettingsDirectory()<<"' "
- << "does not exist : creating it"<<std::endl);
+ << "does not exist : creating it"<<std::endl);
if ( ! boost::filesystem::create_directory( GetUserSettingsDirectory() ) )
{
boost::filesystem::create_directory( setDir );
setDir+="gimmick/";
boost::filesystem::create_directory( setDir );
- setDir+="localdatabase_Descriptor.dscp";
+ setDir+=mLocalDescpName;
if(!boost::filesystem::is_regular(setDir))
{
// The following stuff works on Linux, NOT CHECKED on Windows // JPR
#if defined(_WIN32)
- path+="/bin/Shared/gimmick/localdatabase_Descriptor.dscp";
+ path+="/bin/Shared/gimmick/";
+ path+=mLocalDescpName;
#else
- path+="/Shared/gimmick/localdatabase_Descriptor.dscp";
+ path+="/Shared/gimmick/";
+ path+= mLocalDescpName;
#endif
std::cout <<"From: " << path <<std::endl;
std::cout <<"To: " << setDir <<std::endl;