]> Creatis software - bbtk.git/blobdiff - packages/std/src/bbstdWriteColumnsString.cxx
#3348 BBTK Feature New Normal - VectorFilterDouble (find nearest point) WriteColumn...
[bbtk.git] / packages / std / src / bbstdWriteColumnsString.cxx
index bd0f0b03d22a777f95cf3e8f10e1fd7e2d12ce2c..3c5d8d529fad22996977b50262ce561d00cd0421 100644 (file)
@@ -13,43 +13,89 @@ BBTK_BLACK_BOX_IMPLEMENTATION(WriteColumnsString,bbtk::AtomicBlackBox);
 //===== 
 void WriteColumnsString::Process()
 {
-
-       std::cout << "MLER WriteColumnsString::Process Start " << std::endl;
-       
        std::ofstream write_fi;
-       write_fi.open(bbGetInputFileName().c_str());
-       //std::cout<<"write_fi "<<bbGetInputFileName().c_str()<<std::endl;
-       std::vector<std::string> headers = bbGetInputHeaders();
+       write_fi.open(bbGetInputFileName().c_str());    
+       std::vector<std::string> headers = bbGetInputHeaders(); //Headers Input
+       bool onHeaders = bbGetInputOnHeaders();
+       std::vector<std::vector<std::string> > values;
+       values.push_back( bbGetInputlstData1() );
+       values.push_back( bbGetInputlstData2() );
+       values.push_back( bbGetInputlstData3() );
+       values.push_back( bbGetInputlstData4() );
+       values.push_back( bbGetInputlstData5() );
+       values.push_back( bbGetInputlstData6() );
+       values.push_back( bbGetInputlstData7() );
+       values.push_back( bbGetInputlstData8() );
+       values.push_back( bbGetInputlstData9() );
+       std::vector<std::vector<std::string> >::iterator it;
 
-       int i,j,k;
+       
 
-       if(write_fi.is_open())
+       for(it = values.begin() ; it != values.end() ; )
        {
-               for(i=0 ;i< headers.size(); i++ )
+               if((*it).empty())
                {
-                       write_fi << headers[i] << "\t";
-               }//for headersSize
+                       it = values.erase(it);
+               }else
+               {
+                       it++;
+               } // if 
+       } // for it
+
 
-               for(j=0; j< bbGetInputlstData1().size();j++)
+       bool ok         = true;
+       int i,size      = values.size();
+       for ( i=0 ; i<size-1 ; i++ )
+       {
+               if ( values[i].size() != values[i+1].size() )
                {
-                       write_fi << bbGetInputlstData1()[j] << "\n";
-               }
+                       ok=false;
+               } // if
+       } // for
 
-               std::cout<<"size Header"<<headers.size()<<std::endl;
-               
 
-       }// if write_fi.is_open()
-       else
+       if (ok==true)
        {
-               std::cout<<"No es posible abrir"<<std::endl;
-       }//else
+               if(write_fi.is_open())
+               {       
+                       if(onHeaders == true) // If onHeaders is true, the file is write with Headers.
+                       {
+                               //Add each header input write to file
+                               for(unsigned int i=0 ;i< headers.size(); i++ )
+                               {
+                                       if(i==(headers.size()-1))
+                                       {
+                                               write_fi << headers[i] << "\n";
+                                       }else{
+                                               write_fi << headers[i] << "\t";
+                                       } // if
+                               }//for headersSize
+                       }
+                       unsigned int colSize = values[0].size();
+                       for(unsigned int j=0 ; j<colSize ; j++)
+                       {
+                               for(unsigned int i=0;i<values.size();i++)
+                               {
+                                       if(i==(values.size()-1))
+                                       {
+                                               write_fi << values[i][j] << "\n";
+                                       }else{
+                                               write_fi << values[i][j] << "\t";
+                                       } // if
+                               } // for
+                       } // for
+               } else { // if write_fi.is_open()
+                       std::cout<<"EED WriteColumnsString::Process   Imposible to open file."<<std::endl;
+               }//if open
+
+       } else {
+               printf("EED WriteColumnsString::Process   Warning!   The size of the vectors are not equal. \n");
+       }// if ok
 
        write_fi.close();
+       bbSetOutputOutFileName(bbGetInputFileName().c_str());  
 
-       bbSetOutputOutFileName("Prueba.txt");
 
-       std::cout << "MLER WriteColumnsString::End Process " << std::endl;
-  
 }
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
@@ -60,7 +106,7 @@ void WriteColumnsString::bbUserSetDefaultValues()
 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
 //    Here we initialize the input 'In' to 0
    bbSetInputFileName("");     
-  
+   bbSetInputFileName("true");
 }
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
@@ -72,8 +118,6 @@ void WriteColumnsString::bbUserInitializeProcessing()
 //    Here does nothing 
 //    but this is where you should allocate the internal/output pointers 
 //    if any 
-
-  
 }
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)