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