X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOTreeHandlerImageAdder.cpp;h=ae72e444a750219bc13bf1f75b4a23ab73dc63af;hb=bae8afe7ee037a3368be7060c3a0708582e7d413;hp=f51ef14c816a299a222309a2b04eb3d08101d713;hpb=0d98274674b094c2fbd1caec3afb0fe7ce993186;p=creaImageIO.git diff --git a/src/creaImageIOTreeHandlerImageAdder.cpp b/src/creaImageIOTreeHandlerImageAdder.cpp index f51ef14..ae72e44 100644 --- a/src/creaImageIOTreeHandlerImageAdder.cpp +++ b/src/creaImageIOTreeHandlerImageAdder.cpp @@ -1,3 +1,30 @@ +/* +# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Santé) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ +*/ + #include #include #include @@ -47,9 +74,9 @@ namespace creaImageIO { mProgress.Reset(); - unsigned int nbf = filenames.size(); + //unsigned int nbf = filenames.size(); std::vector::const_iterator i; - mSynchronizer->GetList(mCurrentDB); + mSynchronizer->GetList(mCurrentDB); for (i=filenames.begin();i!=filenames.end();++i) { @@ -138,19 +165,8 @@ namespace creaImageIO } else { - std::string path=node->GetAttribute("FullFileName"); - //Gets the add key - std::string addKey=mSynchronizer->GetAttribute("ADD_KEY","IGNORED_FILES","PATH",path,mCurrentDB); - //Gets the number of files added - int files=atoi((mSynchronizer->GetAttribute("FILES_ADDED","ADD_OPS","ADD_KEY",addKey,mCurrentDB)).c_str()); - files=files-1; - std::stringstream out; - out<SetAttribute("FILES_ADDED","ADD_OPS",out.str(),"ADD_KEY",addKey,mCurrentDB); - //Sets the file as removed - mSynchronizer->SetAttribute("REMOVE","IGNORED_FILES","1","PATH = '"+path+"' AND ADD_KEY",addKey,mCurrentDB); - } + remove(node); + } } //===================================================================== @@ -167,7 +183,16 @@ namespace creaImageIO } else { - std::string path=(*it)->GetAttribute("FullFileName"); + remove(*it); + } + + } + } + + + void TreeHandlerImageAdder::remove( tree::Node* i_node) + { + std::string path=i_node->GetAttribute("FullFileName"); //Gets the add key std::string addKey=mSynchronizer->GetAttribute("ADD_KEY","IGNORED_FILES","PATH",path,mCurrentDB); //Gets the number of files added @@ -179,11 +204,7 @@ namespace creaImageIO mSynchronizer->SetAttribute("FILES_ADDED","ADD_OPS",out.str(),"ADD_KEY",addKey,mCurrentDB); //Sets the file as removed mSynchronizer->SetAttribute("REMOVE","IGNORED_FILES","1","PATH = '"+path+"' AND ADD_KEY",addKey,mCurrentDB); - } - - } } - //======================================================================= @@ -218,28 +239,26 @@ namespace creaImageIO { if (recursive) { - AddDirectoryRecursorScanner( itr->string(), recursive, addKey, i_sc, true); + AddDirectoryRecursorScanner( itr->path().string(), recursive, addKey, i_sc, true); } } else { std::string parent_id; // tTest if directory (and only it) exists or not. - bool valid = mSynchronizer->isIndexed(itr->string());//true;//=mTimestampHandler->AddDirectory(dirpath, itr->string(), lastModif, time(0),mCurrentDB); + bool valid = mSynchronizer->isIndexed(itr->path().string());//true;//=mTimestampHandler->AddDirectory(dirpath, itr->string(), lastModif, time(0),mCurrentDB); if(valid) { - + std::string path(itr->path().string()); mProgress.IncNumberScannedFiles(); - boost::algorithm::replace_all( itr->string(), - INVALID_FILE_SEPARATOR , - VALID_FILE_SEPARATOR); - i_sc.ReadAttributes(itr->string(),attr); - mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id); + boost::algorithm::replace_all( path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR); + i_sc.ReadAttributes(itr->path().string(),attr); + // mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id); mTreeHandler->AddBranch(attr); mProgress.IncNumberHandledFiles(); std::stringstream removedOn; removedOn<InsertIgnoreFile(addKey, itr->string(),"0",removedOn.str(),mCurrentDB); + mSynchronizer->InsertIgnoreFile(addKey, path,"0",removedOn.str(),mCurrentDB); mProgressSignal(mProgress); @@ -263,9 +282,10 @@ namespace creaImageIO mProgress.IncNumberScannedDirs(); if ( !fs::exists( dirpath ) ) return; - time_t lastModif=fs::last_write_time(dirpath); + + /// \TODO fix warning: unused variable lastModif + time_t lastModif=fs::last_write_time(dirpath); - fs::directory_iterator end_itr; // default construction yields past-the-end for ( fs::directory_iterator itr( dirpath ); itr != end_itr; @@ -276,25 +296,25 @@ namespace creaImageIO { if (recursive) { - AddDirectoryRecursor( itr->string(), recursive, addKey); + AddDirectoryRecursor( itr->path().string(), recursive, addKey); } } else { std::string parent_id; // tTest if directory (and only it) exists or not. - bool valid = mSynchronizer->isIndexed(itr->string());//true;//=mTimestampHandler->AddDirectory(dirpath, itr->string(), lastModif, time(0),mCurrentDB); + bool valid = mSynchronizer->isIndexed(itr->path().string());//true;//=mTimestampHandler->AddDirectory(dirpath, itr->string(), lastModif, time(0),mCurrentDB); if(valid) { mProgress.IncNumberScannedFiles(); - if (IsHandledFile(itr->string())) + if (IsHandledFile(itr->path().string())) { mProgress.IncNumberHandledFiles(); - AddFile( itr->string() ); - mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id); + AddFile( itr->path().string() ); + //mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id); std::stringstream removedOn; removedOn<InsertIgnoreFile(addKey, itr->string(),"0",removedOn.str(),mCurrentDB); + mSynchronizer->InsertIgnoreFile(addKey, itr->path().string(),"0",removedOn.str(),mCurrentDB); } mProgressSignal(mProgress); @@ -332,17 +352,17 @@ namespace creaImageIO { if (recursive) { - CheckSyncDirectory( itr->string(), recursive, repair, checkAttributes, i_ignorefiles, attsModified, newfiles); + CheckSyncDirectory( itr->path().string(), recursive, repair, checkAttributes, i_ignorefiles, attsModified, newfiles); } } else { - if (IsHandledFile(itr->string())) + if (IsHandledFile(itr->path().string())) { bool bfound = false; for(std::vector::iterator it_new = i_ignorefiles.begin(); it_new < i_ignorefiles.end(); ++it_new) { - if((*it_new) == itr->string()) + if((*it_new) == itr->path().string()) { bfound = true; //Additional checking of attributes @@ -356,7 +376,7 @@ namespace creaImageIO } if(!bfound && i_ignorefiles.size()>0 ) { - newfiles.push_back( itr->string() ); + newfiles.push_back( itr->path().string() ); } } } @@ -461,7 +481,7 @@ namespace creaImageIO AddFile(*i); } } - nf+=newFiles.size(); + nf+=(int)newFiles.size(); newFiles.clear(); } @@ -688,5 +708,10 @@ namespace creaImageIO } } - + //======================================================================= + const std::string TreeHandlerImageAdder::isAttributeExist(const std::string i_attr) + { + return mTreeHandler->GetTree().isAttributeExist(i_attr); + } + }