namespace creaImageIO
{
- //=====================================================================
- #define QUERYSYNCDB(QUER,RES) \
+ //=====================================================================
+ #define QUERYSYNCDB(QUER,RES) \
try \
- { \
+ { \
RES = mDB->execQuery(QUER.c_str()); \
- } \
+ } \
catch (CppSQLite3Exception& e) \
{ \
GimmickError("SQLite query '"<<QUER<<"' Error : " \
<< e.errorCode() << ":" \
<< e.errorMessage() ); \
}
- //=====================================================================
- #define UPDATESYNCDB(UP) \
- try \
+ //=====================================================================
+ #define UPDATESYNCDB(UP) \
+ try \
{ \
mDB->execDML(UP.c_str()); \
} \
- catch (CppSQLite3Exception& e) \
+ catch (CppSQLite3Exception& e) \
{ \
GimmickError("SQLite update '"<<UP<<"' Error : " \
<< e.errorCode() << ":" \
<< e.errorMessage() ); \
}
- //=====================================================================
+ //=====================================================================
- Synchronizer::Synchronizer(const std::string& path)
+ Synchronizer::Synchronizer(const std::string& path)
{
pathDB = path + "maintenance_database.db3";
mDB = new CppSQLite3DB;
Initialize();
}
- //=====================================================================
- Synchronizer::~Synchronizer()
+ //=====================================================================
+ Synchronizer::~Synchronizer()
{
}
//UpdateAddList(pathDB);
}
- //=====================================================================
+ //=====================================================================
void Synchronizer::CreateDB()
{
mDB->open(pathDB.c_str());
// CREATING TABLES
std::string command;
- command = "CREATE TABLE ";
- command += "ADD_OPS";
- command += "\n(\nADD_KEY INTEGER PRIMARY KEY";
- command += ",\nPATH text";
- command += ",\nRECURSIVE boolean";
- command += ",\nFILES_ADDED int";
- command += ",\nREFERENCEDDB text";
- command += "\n)";
- UPDATESYNCDB(command);
+ command = "CREATE TABLE ";
+ command += "ADD_OPS";
+ command += "\n(\nADD_KEY INTEGER PRIMARY KEY";
+ command += ",\nPATH text";
+ command += ",\nRECURSIVE boolean";
+ command += ",\nFILES_ADDED int";
+ command += ",\nREFERENCEDDB text";
+ command += "\n)";
+ UPDATESYNCDB(command);
- command = "CREATE TABLE ";
- command += "IGNORED_FILES";
- command += "\n(\nID INTEGER PRIMARY KEY";
- command += ",\nADD_KEY integer";
- command += ",\nPATH text";
- command += ",\nREMOVE boolean";
- command += ",\nTIME datetext";
- command += "\n)";
- UPDATESYNCDB(command);
+ command = "CREATE TABLE ";
+ command += "IGNORED_FILES";
+ command += "\n(\nID INTEGER PRIMARY KEY";
+ command += ",\nADD_KEY integer";
+ command += ",\nPATH text";
+ command += ",\nREMOVE boolean";
+ command += ",\nTIME datetext";
+ command += "\n)";
+ UPDATESYNCDB(command);
}
//=====================================================================
}
//=====================================================================
- void Synchronizer::GetFileList(std::vector<AddList> & list, const std::string& refdb)
+ void Synchronizer::GetFileList(std::vector<AddList> & list, const std::string& refdb)
{
CleanList(refdb);
- list=mAddList;
+ list=mAddList;
}
//=====================================================================
- void Synchronizer::GetIgnoredFiles(const std::string& key, std::vector<std::string> &ignoreList)
- {
+ void Synchronizer::GetIgnoredFiles(const std::string& key, std::vector<std::string> &ignoreList)
+ {
ignoreList=GetIgnoreList(key);
- }
+ }
- //=====================================================================
- void Synchronizer::UpdateAddList(const std::string& refdb)
+//=====================================================================
+ void Synchronizer::UpdateAddList(const std::string& refdb)
{
std::string query = "SELECT * FROM ADD_OPS WHERE REFERENCEDDB = '"+refdb+"';";
CppSQLite3Query res;
QUERYSYNCDB(query, res);
- while (!res.eof())
+ while (!res.eof())
{
- AddList temp = AddList(res);
+ AddList temp = AddList(res);
mAddList.push_back(temp);
- res.nextRow();
+ res.nextRow();
}
- }
+ }
/////////////////////////////////////////////////////////////////////////////////////////////////
// remove an entry of the DB
{
std::string query = "DELETE FROM " + i_table + " WHERE ADD_KEY = '" + i_key +"'";
UPDATESYNCDB(query);
- }
+ }
/////////////////////////////////////////////////////////////////////////////////////////////////
// remove several entries of the DB
// @param i_table : table where to do the remove
- // @param i_attribute: attribute to match
- // @param i_operand : operand to use
+ // @param i_attribute: attribute to match
+ // @param i_operand : operand to use
// @param i_val : the reference
//@result : -
/////////////////////////////////////////////////////////////////////////////////////////////////
const std::string i_val)
{
std::stringstream query;
- query<<"DELETE FROM "<<i_table<<" WHERE "<<i_attribute<<" "<<i_operand<<" '"<<i_val<<"'";
+ query<<"DELETE FROM "<<i_table<<" WHERE "<<i_attribute<<" "<<i_operand<<" '"<<i_val<<"'";
UPDATESYNCDB(query.str());
}
/////////////////////////////////////////////////////////////////////////////////////////////////
void Synchronizer::CleanList(const std::string& refdb)
{
- mAddList.clear();
- UpdateAddList(refdb);
+ mAddList.clear();
+ UpdateAddList(refdb);
std::vector<AddList>::iterator it_add = mAddList.begin();
for(;it_add <mAddList.end(); ++it_add)
{
if(it_add->nbFiles == "0")
{
- RemoveEntry("ADD_OPS", it_add->key);
- RemoveEntry("IGNORED_FILES", it_add->key);
-
+ RemoveEntry("ADD_OPS", it_add->key);
+ RemoveEntry("IGNORED_FILES", it_add->key);
+
}
}
mAddList.clear();
UpdateAddList(refdb);
}
- /////////////////////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////////////////////////
// Inserts a new add operation in the database
// @param path: the path of the directory that was added
- // @param recursive: shows if the action was called recursively or not
- // @param nChildren: the number of files affected by the operation
- // @param refdb: the referenced database
+ // @param recursive: shows if the action was called recursively or not
+ // @param nChildren: the number of files affected by the operation
+ // @param refdb: the referenced database
// @result : The operation has been added
/////////////////////////////////////////////////////////////////////////////////////////////////
- void Synchronizer::InsertAddOp(const std::string& path, const std::string& recursive, const std::string& nChildren, const std::string& refdb)
+ void Synchronizer::InsertAddOp(const std::string& path, const std::string& recursive, const std::string& nChildren, const std::string& refdb)
{
std::string insert;
std::string pat=path.c_str();
insert="INSERT INTO ADD_OPS (PATH,RECURSIVE,FILES_ADDED,REFERENCEDDB) VALUES('";
insert+=pat+"','";
insert+=recursive+"',";
- insert+=nChildren+",'";
+ insert+=nChildren+",'";
insert+=refdb+"');";
UPDATESYNCDB(insert);
}
insert+=addKey+"','";
insert+=pat+"','";
insert+=remove+"',";
- insert+=time+");";
+ insert+=time+");";
UPDATESYNCDB(insert);
}
- else
+ else
{
//Gets the add key
std::string ak=GetAttribute("ADD_KEY","IGNORED_FILES","ID",id,refdb);
insert+=addKey+"','";
insert+=pat+"','";
insert+=remove+"',";
- insert+=time+");";
+ insert+=time+");";
UPDATESYNCDB(insert);
}
else
/////////////////////////////////////////////////////////////////////////////////////////////////
std::vector<std::string> Synchronizer::GetIgnoreList(const std::string &i_key)
{
- mIgnoreList.clear();
+ mIgnoreList.clear();
std::vector<std::string> i_names;
- std::string query = "SELECT * FROM IGNORED_FILES WHERE ADD_KEY = ";
- query+=i_key;
+ std::string query = "SELECT * FROM IGNORED_FILES WHERE ADD_KEY = ";
+ query+=i_key;
CppSQLite3Query res;
QUERYSYNCDB(query, res);
- while (!res.eof())
+ while (!res.eof())
{
- RemoveList temp = RemoveList(res);
- if(temp.remove.compare("0")==0)
- {
- mIgnoreList.push_back(temp);
- }
- res.nextRow();
+ RemoveList temp = RemoveList(res);
+ if(temp.remove.compare("0")==0)
+ {
+ mIgnoreList.push_back(temp);
+ }
+ res.nextRow();
}
std::vector<RemoveList>::iterator it;
{
i_names.push_back((*it).path);
}
- return i_names;
+ return i_names;
}
- /////////////////////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////////////////////////
// Gets the required attribute in the required table
// @param attribute: the attribute to look for
// @param table: the table to look in
const std::string& refdb)
{
std::stringstream query;
- std::string result;
- std::string sVal=searchValue.c_str();
- CleanName(sVal);
- query<<"SELECT "<<attribute<<" FROM "<<table<<" WHERE "<<searchParam<<" = '"<<sVal;
- if(table.compare("ADD_OPS")==0)
- {
- query<<"' AND REFERENCEDDB = '"<<refdb<<"';";
- }
- else
- {
- query<<"';";
- }
+ std::string result;
+ std::string sVal=searchValue.c_str();
+ CleanName(sVal);
+ query<<"SELECT "<<attribute<<" FROM "<<table<<" WHERE "<<searchParam<<" = '"<<sVal;
+ if(table.compare("ADD_OPS")==0)
+ {
+ query<<"' AND REFERENCEDDB = '"<<refdb<<"';";
+ }
+ else
+ {
+ query<<"';";
+ }
CppSQLite3Query res;
QUERYSYNCDB(query.str(), res);
- while (!res.eof())
+ while (!res.eof())
{
- result=res.getStringField(0);
- res.nextRow();
+ result=res.getStringField(0);
+ res.nextRow();
}
- return result;
+ return result;
}
- /////////////////////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////////////////////////
// Sets the attribute value in the required table and column
// @param attribute: the attribute to look for
// @param table: the table to look in
- // @param value: the value to set
+ // @param value: the value to set
// @param searchParam: the search parameter
// @param searchValue: the search value
// @result : attribute value changed
const std::string& searchValue,
const std::string& refdb)
{
- std::string val=value.c_str();
- std::string sVal=searchValue.c_str();
- CleanName(val);
- CleanName(sVal);
- std::string sql = "UPDATE ";
- sql+=table;
- sql+=" SET ";
- sql += attribute;
- sql += " = '";
- sql += val;
- sql += "' WHERE ";
- sql += searchParam;
- sql += " = '";
- sql += sVal;
- if(table.compare("ADD_OPS")==0)
- {
- sql += "' AND REFERENCEDDB = '";
- sql += refdb;
- }
- sql += "';";
- UPDATESYNCDB(sql);
+ std::string val=value.c_str();
+ std::string sVal=searchValue.c_str();
+ CleanName(val);
+ CleanName(sVal);
+ std::string sql = "UPDATE ";
+ sql+=table;
+ sql+=" SET ";
+ sql += attribute;
+ sql += " = '";
+ sql += val;
+ sql += "' WHERE ";
+ sql += searchParam;
+ sql += " = '";
+ sql += sVal;
+ if(table.compare("ADD_OPS")==0)
+ {
+ sql += "' AND REFERENCEDDB = '";
+ sql += refdb;
+ }
+ sql += "';";
+ UPDATESYNCDB(sql);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
void Synchronizer::GetList()
{
- mList.clear();
+ mList.clear();
std::vector<std::string> i_names;
- std::string query = "SELECT PATH, REMOVE FROM IGNORED_FILES";
- CppSQLite3Query res;
+ std::string query = "SELECT PATH, REMOVE FROM IGNORED_FILES";
+ CppSQLite3Query res;
QUERYSYNCDB(query, res);
- while (!res.eof())
+ while (!res.eof())
{
- std::string file(res.getStringField(0));
- std::string ignore(res.getStringField(1));
- mList[file] = ignore == "0"? true : false;
- res.nextRow();
+ std::string file(res.getStringField(0));
+ std::string ignore(res.getStringField(1));
+ mList[file] = ignore == "0"? true : false;
+ res.nextRow();
}
-
}
bool Synchronizer::isIndexed(const std::string filename)
}
return valid;
}
-}
\ No newline at end of file
+}
+
+