X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOTimestampDatabaseHandler.cpp;h=f1561110b38acab9f7606338d6bca2e78dd16fe6;hb=b029354f54449e058d14c671e7155e65b4086de6;hp=be586d8cdf5f924ac80e5792f1d6c724cca27259;hpb=2a9cd3d33877f2490550c2de08452eac220a131c;p=creaImageIO.git diff --git a/src2/creaImageIOTimestampDatabaseHandler.cpp b/src2/creaImageIOTimestampDatabaseHandler.cpp index be586d8..f156111 100644 --- a/src2/creaImageIOTimestampDatabaseHandler.cpp +++ b/src2/creaImageIOTimestampDatabaseHandler.cpp @@ -169,6 +169,7 @@ namespace creaImageIO command += ",\nLastModified datetext"; command += ",\nLastRead datetext"; command += ",\nTopLevelNodeId text"; + command += ",\nReferencedDB text"; command += ",\nconstraint FK_PARENT foreign key (PARENT_ID) references "; command += "FILES"; command += "(ID) on delete restrict on update restrict"; @@ -182,7 +183,7 @@ namespace creaImageIO //===================================================================== - void TimestampDatabaseHandler::CleanName(std::string& str) const + void TimestampDatabaseHandler::CleanPath(std::string& str) const { size_t pos; do @@ -195,56 +196,55 @@ namespace creaImageIO } while ((int)pos!=-1); } - - //===================================================================== bool TimestampDatabaseHandler::AddDirectory(const std::string& parent, const std::string& path, const time_t lastModif, - const time_t lastRead) + const time_t lastRead, + const std::string& refdb) { bool valid=false; std::string par=parent.c_str(); std::string pat=path.c_str(); - CleanName(par); - CleanName(pat); + CleanPath(par); + CleanPath(pat); - std::string pathId=IsIndexed(pat); + std::string pathId=IsIndexed(pat,refdb); //Case: It is a root parent if(parent.compare("")==0) { if(pathId.compare("")==0) { - AddFile(pat,lastModif,lastRead); + AddFile(pat,lastModif,lastRead,refdb); valid=true; } else { - valid=CheckTimestamp(pathId, lastModif); + valid=CheckTimestamp(pathId, lastModif, refdb); } } else { - std::string parentId=IsIndexed(par); + std::string parentId=IsIndexed(par,refdb); //Case: Parent is not in database if(parentId.compare("")==0) { - AddFile(par,lastModif,lastRead); - parentId=IsIndexed(par); + AddFile(par,lastModif,lastRead,refdb); + parentId=IsIndexed(par,refdb); } //Case path is not in database if(pathId.compare("")==0) { - AddFile(parentId,pat,lastModif,lastRead); + AddFile(parentId,pat,lastModif,lastRead,refdb); valid=true; } //Parent and path are in the database else { SetAttribute("PARENT_ID",parentId,"ID", pathId); - valid=CheckTimestamp(pathId, lastModif); + valid=CheckTimestamp(pathId, lastModif, refdb); } } return valid; @@ -253,11 +253,11 @@ namespace creaImageIO //===================================================================== - void TimestampDatabaseHandler::AddFile(const std::string& path, const time_t lastModif, const time_t lastRead) + void TimestampDatabaseHandler::AddFile(const std::string& path, const time_t lastModif, const time_t lastRead, const std::string& refdb) { std::stringstream out; - out<<"INSERT INTO FILES (PARENT_ID,PATH,LastModified,LastRead) VALUES(0,'"<GetNumberOfChildren(); if(n>0) @@ -331,26 +334,26 @@ namespace creaImageIO std::vector::iterator it; for(it=children.begin();it!=children.end();++it) { - RemoveNode(searchAtt,(*it)); + RemoveNode(searchAtt,(*it),refdb); } } else if(node->GetLevel()==3) { - RemoveFile(searchAtt,node->GetAttribute("FullFileName")); + RemoveFile(searchAtt,node->GetAttribute("FullFileName"),refdb); } else { - DBRemove("TopLevelNodeId",node->GetAttribute("ID")); + DBRemove("TopLevelNodeId",node->GetAttribute("ID"),refdb); } } //===================================================================== - void TimestampDatabaseHandler::RemoveFile(const std::string& searchAtt, const std::string& searchVal) + void TimestampDatabaseHandler::RemoveFile(const std::string& searchAtt, const std::string& searchVal, const std::string& refdb ) { std::stringstream result; - std::string sel="SELECT PARENT_ID FROM FILES WHERE "+searchAtt+"='"+searchVal+"'"; + std::string sel="SELECT PARENT_ID FROM FILES WHERE "+searchAtt+"='"+searchVal+"' AND REFERENCEDDB='"+refdb+"';"; CppSQLite3Query q; QUERYTIMESTAMPDB(sel,q); @@ -363,7 +366,7 @@ namespace creaImageIO } q.nextRow(); } - DBRemove(searchAtt,searchVal); + DBRemove(searchAtt,searchVal,refdb); int nChildren=0; sel="SELECT ID FROM FILES WHERE PARENT_ID='"+result.str()+"'"; @@ -378,27 +381,27 @@ namespace creaImageIO { if(!result.str().compare("0")) { - RemoveFile("ID",result.str()); + RemoveFile("ID",result.str(),refdb); } else { - DBRemove("ID",result.str()); + DBRemove("ID",result.str(),refdb); } } } //===================================================================== - void TimestampDatabaseHandler::DBRemove(const std::string& searchAtt, const std::string& searchVal) + void TimestampDatabaseHandler::DBRemove(const std::string& searchAtt, const std::string& searchVal, const std::string& refdb) { - std::string query = "DELETE FROM FILES WHERE "+searchAtt+"='"+ searchVal + "';"; + std::string query = "DELETE FROM FILES WHERE "+searchAtt+"='"+ searchVal + "' AND REFERENCEDDB='"+refdb+"';"; UPDATETIMESTAMPDB(query); } //===================================================================== - bool TimestampDatabaseHandler::CheckTimestamp(const std::string pathId, const time_t lastModif) + bool TimestampDatabaseHandler::CheckTimestamp(const std::string pathId, const time_t lastModif, const std::string& refdb) { - std::string sel="SELECT LastModified FROM FILES WHERE ID='"+pathId+"';"; + std::string sel="SELECT LastModified FROM FILES WHERE ID='"+pathId+"' AND REFERENCEDDB='"+refdb+"';"; CppSQLite3Query q; QUERYTIMESTAMPDB(sel,q); double timestamp; @@ -424,4 +427,16 @@ namespace creaImageIO return false; } -}// namespace creaImageIO \ No newline at end of file + //===================================================================== + void TimestampDatabaseHandler::RemoveEntries(const std::string i_table, + const std::string i_attribute, + const std::string i_operand, + const std::string i_val) + { + std::stringstream query; + query<<"DELETE FROM "<