}
}
// get the ADD operations List
- UpdateAddList();
+ //UpdateAddList(pathDB);
}
//=====================================================================
command += ",\nPATH text";
command += ",\nRECURSIVE boolean";
command += ",\nFILES_ADDED int";
+ command += ",\nREFERENCEDDB text";
command += "\n)";
UPDATESYNCDB(command);
}
//=====================================================================
- void Synchronizer::GetFileList(std::vector<AddList> & list)
+ void Synchronizer::GetFileList(std::vector<AddList> & list, const std::string& refdb)
{
- CleanList();
+ CleanList(refdb);
list=mAddList;
}
}
//=====================================================================
- void Synchronizer::UpdateAddList()
+ void Synchronizer::UpdateAddList(const std::string& refdb)
{
- std::string query = "SELECT * FROM ADD_OPS";
+ std::string query = "SELECT * FROM ADD_OPS WHERE REFERENCEDDB = '"+refdb+"';";
CppSQLite3Query res;
QUERYSYNCDB(query, res);
while (!res.eof())
/////////////////////////////////////////////////////////////////////////////////////////////////
// clean DataBase if an operation has no child anymore
+ // @param refdb: the database segement to clean
// @result : -
/////////////////////////////////////////////////////////////////////////////////////////////////
- void Synchronizer::CleanList()
+ void Synchronizer::CleanList(const std::string& refdb)
{
mAddList.clear();
- UpdateAddList();
+ UpdateAddList(refdb);
std::vector<AddList>::iterator it_add = mAddList.begin();
for(;it_add <mAddList.end(); ++it_add)
{
}
}
mAddList.clear();
- UpdateAddList();
+ UpdateAddList(refdb);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
// @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
// @result : The operation has been added
/////////////////////////////////////////////////////////////////////////////////////////////////
- void Synchronizer::InsertAddOp(const std::string& path, const std::string& recursive, const std::string& nChildren)
+ 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();
CleanName(pat);
- insert="INSERT INTO ADD_OPS (PATH,RECURSIVE,FILES_ADDED) VALUES('";
+ insert="INSERT INTO ADD_OPS (PATH,RECURSIVE,FILES_ADDED,REFERENCEDDB) VALUES('";
insert+=pat+"','";
insert+=recursive+"',";
- insert+=nChildren+");";
+ insert+=nChildren+",'";
+ insert+=refdb+"');";
UPDATESYNCDB(insert);
}
// @result : The file has been inserted
/////////////////////////////////////////////////////////////////////////////////////////////////
- void Synchronizer::InsertIgnoreFile(const std::string& addKey, const std::string& path, const std::string& remove, const std::string& time)
+ void Synchronizer::InsertIgnoreFile(const std::string& addKey, const std::string& path, const std::string& remove, const std::string& time, const std::string& refdb )
{
std::string pat=path.c_str();
CleanName(pat);
- std::string id=GetAttribute("ID","IGNORED_FILES","PATH",pat);
+ std::string id=GetAttribute("ID","IGNORED_FILES","PATH",pat,refdb);
if(id.compare("")==0)
{
std::string insert;
else
{
//Gets the add key
- std::string ak=GetAttribute("ADD_KEY","IGNORED_FILES","ID",id);
- //Sets the new add key attribute for the file
- SetAttribute("ADD_KEY","IGNORED_FILES",addKey,"ID", id);
- //Sets the new remove attribute for the file
- SetAttribute("REMOVE","IGNORED_FILES",remove,"ID", id);
- //Sets the new time attribute for the file
- SetAttribute("TIME","IGNORED_FILES",time,"ID", id);
+ std::string ak=GetAttribute("ADD_KEY","IGNORED_FILES","ID",id,refdb);
+ //gets the parent database to check if the file has been added to the current database
+ std::string parentDB=GetAttribute("*","ADD_OPS","ADD_KEY",ak,refdb);
+ //If there is no such entry, add it
+ if(parentDB.compare("")==0)
+ {
+ std::string insert;
+ insert="INSERT INTO IGNORED_FILES (ADD_KEY,PATH,REMOVE,TIME) VALUES('";
+ insert+=addKey+"','";
+ insert+=pat+"','";
+ insert+=remove+"',";
+ insert+=time+");";
+ UPDATESYNCDB(insert);
+ }
+ else
+ {
+ //Sets the new add key attribute for the file
+ SetAttribute("ADD_KEY","IGNORED_FILES",addKey,"ID", id,refdb);
+ //Sets the new remove attribute for the file
+ SetAttribute("REMOVE","IGNORED_FILES",remove,"ID", id,refdb);
+ //Sets the new time attribute for the file
+ SetAttribute("TIME","IGNORED_FILES",time,"ID", id,refdb);
+ }
}
}
std::string Synchronizer::GetAttribute(const std::string& attribute,
const std::string& table,
const std::string& searchParam,
- const std::string& searchValue)
+ const std::string& searchValue,
+ 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<<"';";
+ 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())
const std::string& table,
const std::string& value,
const std::string& searchParam,
- const std::string& searchValue)
+ const std::string& searchValue,
+ const std::string& refdb)
{
std::string val=value.c_str();
std::string sVal=searchValue.c_str();
sql += searchParam;
sql += " = '";
sql += sVal;
- sql += "'";
+ if(table.compare("ADD_OPS")==0)
+ {
+ sql += "' AND REFERENCEDDB = '";
+ sql += refdb;
+ }
+ sql += "';";
UPDATESYNCDB(sql);
}
}
\ No newline at end of file