]> Creatis software - bbtk.git/commitdiff
#3247 BBTK Feature New Normal - FilesFromDirectory RecursiveLevel
authorEduardo DAVILA <davila@localhost.localdomain>
Tue, 2 Apr 2019 14:35:55 +0000 (16:35 +0200)
committerEduardo DAVILA <davila@localhost.localdomain>
Tue, 2 Apr 2019 14:35:55 +0000 (16:35 +0200)
packages/std/src/bbstdFilesFromDirectory.cxx
packages/std/src/bbstdFilesFromDirectory.h

index e444b9ba1a84291479c94335389004a9c255b16d..7ea9ae3757a8377c3111190c362da2952e5cd19e 100644 (file)
@@ -50,8 +50,7 @@ void FilesFromDirectory::Process()
        Filenames.clear();
        SimpleFilenames.clear();
        DirName         = bbGetInputIn();
-       bool rec        = bbGetInputRecursive();
-       /*int nbFiles = */ Explore(DirName, rec);
+       /*int nbFiles = */ Explore(DirName, bbGetInputRecursive(), bbGetInputRecursiveLevel() );
        CleanFilenames( DirName );
        bbSetOutputOut(Filenames);   
        bbSetOutputOutSimple(SimpleFilenames);   
@@ -62,6 +61,7 @@ void FilesFromDirectory::bbUserSetDefaultValues()
     bbSetInputIn(".");
     bbSetInputRecursive(false);  
     bbSetInputType(0);  
+    bbSetInputRecursiveLevel(999);  
 }
 
 void FilesFromDirectory::bbUserInitializeProcessing() 
@@ -103,11 +103,14 @@ std::string FilesFromDirectory::NormalizePath(std::string const &pathname)
 
 
 
-int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive)
+int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive, int recursiveLevel)
 {
-       int numberOfFiles               = 0;
-       std::string dirName     = NormalizePath(dirpath);
-       int tmpNumberOfFiles;
+       int             numberOfFiles           = 0;
+
+if (recursiveLevel>=0){
+
+       std::string dirName                     = NormalizePath(dirpath);
+       int             tmpNumberOfFiles;
        std::string fileName;
 #ifdef _MSC_VER
        WIN32_FIND_DATA fileData;
@@ -130,7 +133,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive)
                        numberOfFiles++;
                        } // Type ALL_directories
 
-                       tmpNumberOfFiles        =       Explore(dirName+fileName, recursive);
+                       tmpNumberOfFiles        =       Explore(dirName+fileName, recursive,recursiveLevel-1);
                        if ((bbGetInputType()==2)&&tmpNumberOfFiles==0)
                        {
                        std::string temp = dirName+fileName;
@@ -249,7 +252,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive)
                                numberOfFiles++;
                                } // Type All_directories
 
-                               tmpNumberOfFiles        = Explore( fileName, recursive);
+                               tmpNumberOfFiles        = Explore( fileName, recursive, recursiveLevel-1);
                                if ((bbGetInputType()==2)&&tmpNumberOfFiles==0)
                                {
                                        Filenames.push_back(fileName);   
@@ -277,6 +280,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive)
    }// closedir
 #endif
 
+} // if recursiveLevel 
 
        return numberOfFiles;
 }
index 852e83b529ac9c603daa477c6d5eb9e4d9c51b07..841df20a83f8bf8ecc9fb570282d883975bf7c1d 100644 (file)
@@ -41,6 +41,7 @@ namespace bbstd
     BBTK_BLACK_BOX_INTERFACE(FilesFromDirectory,bbtk::AtomicBlackBox);
     BBTK_DECLARE_INPUT(In,std::string);
     BBTK_DECLARE_INPUT(Recursive,bool);  
+    BBTK_DECLARE_INPUT(RecursiveLevel,int);  
     BBTK_DECLARE_INPUT(Type,int);  
     BBTK_DECLARE_INPUT(FileEnd,std::vector<std::string>);  
     BBTK_DECLARE_OUTPUT(Out,std::vector<std::string>);
@@ -50,7 +51,7 @@ namespace bbstd
     
   private :
     std::string NormalizePath(std::string const &pathname);
-    int        Explore(std::string const &dirpath, bool recursive);
+    int        Explore(std::string const &dirpath, bool recursive, int recursiveLevel);
     void       CleanFilenames( std::string basePath );
 
     /// List of file names
@@ -69,8 +70,9 @@ namespace bbstd
    BBTK_CATEGORY("");
 
    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,Recursive,"(default false) Recursive directory exploration",bool,"");
+   BBTK_INPUT(FilesFromDirectory,Type,"(0 default) 0=files 1=All_directories 2=last_directories  ",int,"");
+   BBTK_INPUT(FilesFromDirectory,RecursiveLevel,"(999 default) Recursive level",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>,"");