KaliVeda
Toolkit for HIC analysis
KVDataRepository.h
1 /*
2 $Id: KVDataRepository.h,v 1.12 2007/12/11 12:45:47 franklan Exp $
3 $Revision: 1.12 $
4 $Date: 2007/12/11 12:45:47 $
5 */
6 
9 
10 #ifndef __KVDATAREPOSITORY_H
11 #define __KVDATAREPOSITORY_H
12 
13 #include "KVBase.h"
14 #include "TString.h"
15 #include "TSystem.h"
16 #include "KVAvailableRunsFile.h"
17 #include "TEnv.h"
18 #include "KVList.h"
19 #include "KVUniqueNameList.h"
20 class TFile;
21 class KVDataSet;
22 class KVDataSetManager;
23 
58 class KVDataRepository: public KVBase {
59 
60 protected:
61 
87  void SetFullPath(TString& path, const Char_t* protocol);
88  virtual const Char_t* GetReadProtocol(const Char_t* dataset, const Char_t* datatype);
90 
91  virtual int Chmod(const char* file, UInt_t mode);
92  virtual void PrepareXRDTunnel();
93 
95  TObject* OpenDataSetFile(const KVDataSet* ds, const Char_t* type, const TString& fname, Option_t* opt = "");
96 public:
97  virtual int CopyFile(const char* f, const char* t, Bool_t overwrite = kFALSE);
98  TSystem* FindHelper(const char* path, void* dirptr = 0);
99  Bool_t HelperIsConsistentWith(TSystem* helper, const char* path, void* dirptr = 0);
100 
103 
104  virtual Bool_t Init();
105 
106  virtual Bool_t CheckSubdirExists(const Char_t* dir,
107  const Char_t* subdir = 0);
108  virtual Bool_t GetFileInfo(const KVDataSet* dataset,
109  const Char_t* datatype,
110  const Char_t* runfile, FileStat_t& fs) const;
111  virtual Bool_t CheckFileStatus(const KVDataSet* dataset,
112  const Char_t* datatype,
113  const Char_t* runfile);
114 
115  virtual const Char_t* GetFullPathToOpenFile(const KVDataSet* dataset,
116  const Char_t* datatype,
117  const Char_t* runfile);
118 
119  virtual const Char_t* GetFullPathToTransferFile(const KVDataSet* dataset,
120  const Char_t* datatype,
121  const Char_t* runfile);
122 
124  virtual Bool_t IsRemote() const
125  {
126  return kFALSE;
127  };
129  virtual Bool_t IsConnected()
130  {
131  return kTRUE;
132  };
137  virtual Bool_t CanWrite() const
138  {
139  return fCanWrite;
140  }
141  virtual KVUniqueNameList GetDirectoryListing(const KVDataSet* dataset,
142  const Char_t* datatype = "", const Char_t* subdir = "");
143 
144  virtual void CopyFileFromRepository(const KVDataSet* dataset,
145  const Char_t* datatype,
146  const Char_t* filename,
147  const Char_t* destination);
148  virtual int CopyFileToRepository(const Char_t* source,
149  const KVDataSet* dataset,
150  const Char_t* datatype,
151  const Char_t* filename);
152 
153  virtual TFile* CreateNewFile(const KVDataSet* dataset,
154  const Char_t* datatype,
155  const Char_t* filename);
156  virtual void CommitFile(TFile* file, const Char_t* datatype, const KVDataSet* dataset);
157 
158  virtual void MakeSubdirectory(const KVDataSet* dataset,
159  const Char_t* datatype = "");
160 
161  virtual void DeleteFile(const KVDataSet* dataset,
162  const Char_t* datatype,
163  const Char_t* filename, Bool_t confirm =
164  kTRUE);
165 
166  void Print(Option_t* opt = "") const override;
168  virtual const Char_t* GetFileTransferType() const
169  {
170  return fTransfertype;
171  };
173  virtual const Char_t* GetFileTransferExec() const
174  {
175  return fTransferExec;
176  };
178  virtual const Char_t* GetFileTransferServer() const
179  {
180  return fTransferserver;
181  };
183  virtual const Char_t* GetFileTransferUser() const
184  {
185  return fTransferuser;
186  };
188  virtual const Char_t* GetRootDirectory() const
189  {
190  return fLocalrootdir;
191  };
192 
193  virtual KVDataSetManager* GetDataSetManager() const;
194 
195  void cd();
196  static KVDataRepository* NewRepository(const Char_t* type);
197  virtual KVAvailableRunsFile* NewAvailableRunsFile(const Char_t*, const KVDataSet*);
198  virtual TObject* OpenDataSetRunFile(const KVDataSet* ds,
199  const KVString& type,
200  const run_index_t& run,
201  Option_t* opt = "");
202  void CreateAllNeededSubdirectories(const KVDataSet* DataSet, const Char_t* DataType);
203 
205  {
206  ;
207  }
208 
209  ClassDefOverride(KVDataRepository, 0) //Base class handling files in data repository
210 };
211 
213 R__EXTERN KVDataRepository* gDataRepository;
214 
215 #ifdef __CCIN2P3_RFIO
216 #include "TRFIOFile.h"
217 class KVRFIOSystem : public TRFIOSystem {
218 public:
219  KVRFIOSystem(): TRFIOSystem() { };
220  virtual ~KVRFIOSystem() { };
221 
222  Int_t Unlink(const char* path);
223  int Chmod(const char* file, UInt_t mode);
224 
225  ClassDef(KVRFIOSystem, 0) // TRFIOSystem with fully-functioning Unlink and Chmod methods
226 };
227 #endif
228 #endif
int Int_t
unsigned int UInt_t
#define R__EXTERN
bool Bool_t
char Char_t
constexpr Bool_t kFALSE
constexpr Bool_t kTRUE
const char Option_t
#define ClassDef(name, id)
#define ClassDefOverride(name, id)
Handles lists of available runs for different datasets and types of data.
Base class for KaliVeda framework.
Definition: KVBase.h:139
Base class for managing repositories of experimental data.
virtual KVDataSetManager * GetDataSetManager() const
Return pointer to data set manager for this repository.
virtual int CopyFileToRepository(const Char_t *source, const KVDataSet *dataset, const Char_t *datatype, const Char_t *filename)
virtual int Chmod(const char *file, UInt_t mode)
virtual const Char_t * GetFileTransferExec() const
returns full path to executable used for remote file transfer
virtual Bool_t IsRemote() const
Returns kTRUE for remote repositories, kFALSE for local repositories.
virtual void CopyFileFromRepository(const KVDataSet *dataset, const Char_t *datatype, const Char_t *filename, const Char_t *destination)
virtual const Char_t * GetReadProtocol(const Char_t *dataset, const Char_t *datatype)
virtual const Char_t * GetFileTransferType() const
returns protocol used for remote file transfer
static KVDataRepository * NewRepository(const Char_t *type)
virtual int CopyFile(const char *f, const char *t, Bool_t overwrite=kFALSE)
virtual Bool_t CheckFileStatus(const KVDataSet *dataset, const Char_t *datatype, const Char_t *runfile)
KVDataSetManager * fDSM
handles datasets in repository
virtual Bool_t CheckSubdirExists(const Char_t *dir, const Char_t *subdir=0)
virtual Bool_t Init()
virtual void PrepareXRDTunnel()
virtual KVUniqueNameList GetDirectoryListing(const KVDataSet *dataset, const Char_t *datatype="", const Char_t *subdir="")
virtual TObject * OpenDataSetRunFile(const KVDataSet *ds, const KVString &type, const run_index_t &run, Option_t *opt="")
void SetFullPath(TString &path, const Char_t *protocol)
virtual KVAvailableRunsFile * NewAvailableRunsFile(const Char_t *, const KVDataSet *)
virtual void PrintAvailableDatasetsUpdateWarning() const
TSeqCollection * fHelpers
List of helper classes for alternative file/directory access.
void CreateAllNeededSubdirectories(const KVDataSet *DataSet, const Char_t *DataType)
virtual KVDataSetManager * NewDataSetManager()
Create and return pointer to new data set manager.
virtual Bool_t CanWrite() const
virtual ~ KVDataRepository()
Bool_t HelperIsConsistentWith(TSystem *helper, const char *path, void *dirptr=0)
TSystem * FindHelper(const char *path, void *dirptr=0)
virtual void CommitFile(TFile *file, const Char_t *datatype, const KVDataSet *dataset)
virtual void DeleteFile(const KVDataSet *dataset, const Char_t *datatype, const Char_t *filename, Bool_t confirm=kTRUE)
virtual TFile * CreateNewFile(const KVDataSet *dataset, const Char_t *datatype, const Char_t *filename)
KVDataRepository()
Default constructor.
virtual const Char_t * GetFullPathToTransferFile(const KVDataSet *dataset, const Char_t *datatype, const Char_t *runfile)
virtual const Char_t * GetFileTransferUser() const
returns user name used for remote file transfer
virtual Bool_t GetFileInfo(const KVDataSet *dataset, const Char_t *datatype, const Char_t *runfile, FileStat_t &fs) const
virtual Bool_t IsConnected()
Always returns kTRUE for local repositories.
void Print(Option_t *opt="") const override
Print info on repository.
virtual const Char_t * GetFileTransferServer() const
returns server url used for remote file transfer
const KVDataSet * fCommitDataSet
used by CreateNewFile and CommitFile
virtual void MakeSubdirectory(const KVDataSet *dataset, const Char_t *datatype="")
virtual const Char_t * GetFullPathToOpenFile(const KVDataSet *dataset, const Char_t *datatype, const Char_t *runfile)
virtual const Char_t * GetRootDirectory() const
returns root directory of data repository (fLocalrootdir)
TObject * OpenDataSetFile(const KVDataSet *ds, const Char_t *type, const TString &fname, Option_t *opt="")
Manage all datasets contained in a given data repository.
Manage an experimental dataset corresponding to a given experiment or campaign.
Definition: KVDataSet.h:146
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
Optimised list in which named objects can only be placed once.
Specifies a runfile according to run number and file index ,.
Definition: run_index.h:31