]> Creatis software - clitk.git/blobdiff - tests_dav/GateMergeManager.hh
merger works when files are ordered
[clitk.git] / tests_dav / GateMergeManager.hh
index f7fb09595a65ee0a58a716e87782d77ebd54aa69..126dea3983d4c3f6bdd00aaccb84132a5e7c79cd 100644 (file)
@@ -17,8 +17,10 @@ See GATE/LICENSE.txt for further details
 #include <TFile.h>
 #include <TChain.h>
 #include <cstdlib>
+#include <list>
 
 using namespace std;
+typedef list<string> Strings;
 
 class GateMergeManager
 {
@@ -31,30 +33,19 @@ public:
      m_outDir       =       outDir;
      m_CompLevel    =            1;
      m_fastMerge    =    fastMerge;
-
-     //check if a .Gate directory can be found
-     if (!getenv("GC_DOT_GATE_DIR")) {
-        cout<<"Environment variable GC_DOT_GATE_DIR not set !"<<endl;
-        exit(1);
-     }
-     m_dir=getenv("GC_DOT_GATE_DIR");
-     if (m_dir.substr(m_dir.length()-1,m_dir.length())=="/") m_dir=m_dir+".Gate/";
-     else m_dir=m_dir+"/.Gate/";
-     ifstream dirstream(m_dir.c_str());
-     if (!dirstream) {
-        cout<<"Failed to open .Gate directory"<<endl;
-        exit(1);
-     }
-     dirstream.close();
-
   };
   ~GateMergeManager()
   {
-   if (filearr) delete filearr;
+         for (std::vector<TFile*>::const_iterator iter=filearr.begin(); iter!=filearr.end(); iter++)
+         {
+                 (*iter)->Close();
+                 delete *iter;
+         }
   }
 
 
   void StartMerging(string splitfileName);
+  void StartMergingFromFilenames(Strings filenames, string outputfile);
   void ReadSplitFile(string splitfileName);
   bool MergeTree(string name);
   bool MergeGate(TChain* chain);
@@ -74,10 +65,9 @@ private:
   bool FastMergeCoin(string name); 
   bool           m_forced;             // if to overwrite existing files
   int      m_verboseLevel;  
-  TFile**         filearr;
+  std::vector<TFile*>         filearr;
   Long64_t      m_maxRoot;             // maximum size of root output file
   int         m_CompLevel;             // compression level for root output
-  string            m_dir;             // .Gate directory path 
   string         m_outDir;             // where to save the output files
   int            m_Nfiles;             // number of files to mergw
   vector<int> m_lastEvents;            // latestevent from al files