#include #include #include "boost/filesystem.hpp" #include #include namespace fs = boost::filesystem; using boost::filesystem::path; using boost::next; using boost::prior; //using namespace crea; namespace creaImageIO { //==================================================================== // Ctor TreeHandlerImageAdder::TreeHandlerImageAdder(TreeHandler* tree) : mTreeHandler(tree) { } // Dtor TreeHandlerImageAdder::~TreeHandlerImageAdder() { } //==================================================================== //==================================================================== void TreeHandlerImageAdder::ConnectProgressObserver(ProgressCallbackType callback) { mProgressSignal.connect(callback); } //==================================================================== //===================================================================== bool TreeHandlerImageAdder::IsHandledFile( const std::string& filename) { return (mReader.CanRead(filename)); } //===================================================================== //===================================================================== void TreeHandlerImageAdder::AddFiles( const std::vector& filenames) { mProgress.Reset(); unsigned int nbf = filenames.size(); std::vector::const_iterator i; for (i=filenames.begin();i!=filenames.end();++i) { mTimestampHandler->AddFile((*i), fs::last_write_time(*i), time(0)); mProgress.IncNumberScannedFiles(); if (IsHandledFile(*i)) { mProgress.IncNumberHandledFiles(); AddFile(*i); } mProgressSignal(mProgress); if (mProgress.GetStop()) break; } } //===================================================================== //===================================================================== void TreeHandlerImageAdder::AddDirectory( const std::string& directory, bool recurse) { mProgress.Reset(); AddDirectoryRecursor( directory, recurse ); GimmickDebugMessage(3,mProgress< attr; mTreeHandler->GetTree().GetDescriptor().BuildAttributeMap(attr); mReader.ReadAttributes(filename,attr); int lev = mTreeHandler->AddBranch(attr); // update the progress according to lev if (levGetTree().GetNumberOfLevels()) mProgress.IncNumberAddedFiles(); } //===================================================================== //===================================================================== void TreeHandlerImageAdder::AddDirectoryRecursor(const std::string &dirpath, bool recursive) { GimmickDebugMessage(4,"Scanning '"<status()) ) { if (recursive) { AddDirectoryRecursor( itr->string(), recursive); } } else { std::string parent_id; bool valid=mTimestampHandler->AddDirectory(dirpath, itr->string(), lastModif, time(0)); if(valid) { mProgress.IncNumberScannedFiles(); if (IsHandledFile(itr->string())) { mProgress.IncNumberHandledFiles(); AddFile( itr->string() ); mTreeHandler->GetTopLevelNodeId("FullFileName",itr->string(),parent_id); mTimestampHandler->SetAttribute("TopLevelNodeId",parent_id,"PATH",itr->string()); } mProgressSignal(mProgress); if (mProgress.GetStop()) { //itr = end_itr; break; } } mTimestampHandler->SetAttribute("TopLevelNodeId",parent_id,"PATH",dirpath); } } } //======================================================================= }