From 81cf34a7ea4edd0cef61258e6d65df60e80bbb6a Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr> Date: Mon, 11 Apr 2016 14:19:38 +0200 Subject: [PATCH] #2912 BBTK Feature New Normal - FilesFromDirectory box package std --- packages/std/src/bbstdFilesFromDirectory.cxx | 29 +++++++++++++++++++- packages/std/src/bbstdFilesFromDirectory.h | 2 ++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/std/src/bbstdFilesFromDirectory.cxx b/packages/std/src/bbstdFilesFromDirectory.cxx index 61fb34c..6712c8c 100644 --- a/packages/std/src/bbstdFilesFromDirectory.cxx +++ b/packages/std/src/bbstdFilesFromDirectory.cxx @@ -269,12 +269,39 @@ void FilesFromDirectory::CleanFilenames( std::string basePath ) { std::string tmpString; int i,ii,sizeFilenames = Filenames.size(); + int j,sizeFileEnd = bbGetInputFileEnd().size(); + int okEraseElement; + +//Selecting just the files in the FileEnd List + if (bbGetInputFileEnd().size()!=0) + { + for (i=sizeFilenames-1; i>=0; i--) + { + okEraseElement=0; + for (j=0; j<sizeFileEnd; j++) + { + std::string tmp=Filenames[i].substr( (Filenames[i].length()) - (bbGetInputFileEnd()[j]).length() ) ; + if (bbGetInputFileEnd()[j].compare( tmp )==0 ) + { + okEraseElement++; + } // if FileEnd + } // for j + + if (okEraseElement==0) + { + Filenames.erase( Filenames.begin()+i ); + } + } // for i + } // if FileEnd !=0 + + sizeFilenames = Filenames.size(); // Cleanning paths with spaces for (i=0; i<sizeFilenames; i++) { tmpString=Filenames[i]; + std::string::size_type spacePosition = tmpString.find_first_of(' '); if (spacePosition != std::string::npos) { @@ -286,6 +313,7 @@ void FilesFromDirectory::CleanFilenames( std::string basePath ) } // if spacePosition } + // Alphabetical order for (i=0; i<sizeFilenames; i++) { @@ -304,7 +332,6 @@ void FilesFromDirectory::CleanFilenames( std::string basePath ) unsigned int lenghtBasePath = basePath.length(); for (i=0; i<sizeFilenames; i++) { - SimpleFilenames.push_back( Filenames[i].substr( lenghtBasePath ) ); } // for i diff --git a/packages/std/src/bbstdFilesFromDirectory.h b/packages/std/src/bbstdFilesFromDirectory.h index 7d67556..852e83b 100644 --- a/packages/std/src/bbstdFilesFromDirectory.h +++ b/packages/std/src/bbstdFilesFromDirectory.h @@ -42,6 +42,7 @@ namespace bbstd BBTK_DECLARE_INPUT(In,std::string); BBTK_DECLARE_INPUT(Recursive,bool); BBTK_DECLARE_INPUT(Type,int); + BBTK_DECLARE_INPUT(FileEnd,std::vector<std::string>); BBTK_DECLARE_OUTPUT(Out,std::vector<std::string>); BBTK_DECLARE_OUTPUT(OutSimple,std::vector<std::string>); BBTK_PROCESS(Process); @@ -70,6 +71,7 @@ namespace bbstd BBTK_INPUT(FilesFromDirectory,In,"Directory Name",std::string,""); BBTK_INPUT(FilesFromDirectory,Recursive,"Recursive directory exploration",bool,""); BBTK_INPUT(FilesFromDirectory,Type,"0=files 1=All_directories 2=last_directories (0 default)",int,""); + BBTK_INPUT(FilesFromDirectory,FileEnd,"Select just the files with this end file name",std::vector<std::string>,""); BBTK_OUTPUT(FilesFromDirectory,Out,"FullPathNames of the files",std::vector<std::string>,""); BBTK_OUTPUT(FilesFromDirectory,OutSimple,"Simple Full PathNames of the files",std::vector<std::string>,""); -- 2.49.0