KaliVeda
Toolkit for HIC analysis
KVDMSDataRepository Class Reference

Detailed Description

Manage remote data repository using a Data Management System.

Definition at line 17 of file KVDMSDataRepository.h.

#include <KVDMSDataRepository.h>

Inheritance diagram for KVDMSDataRepository:

Public Member Functions

 KVDMSDataRepository ()
 Default constructor. More...
 
virtual ~KVDMSDataRepository ()
 Destructor. More...
 
virtual Bool_t CheckFileStatus (const KVDataSet *, const Char_t *datatype, const Char_t *runfile)
 
virtual Bool_t CheckSubdirExists (const Char_t *dir, const Char_t *subdir=0)
 
virtual void CopyFileFromRepository (const KVDataSet *, const Char_t *datatype, const Char_t *filename, const Char_t *destination)
 
virtual int CopyFileToRepository (const Char_t *source, const KVDataSet *, const Char_t *datatype, const Char_t *filename)
 
virtual void DeleteFile (const KVDataSet *, const Char_t *datatype, const Char_t *filename, Bool_t confirm=kTRUE)
 
virtual KVUniqueNameListGetDirectoryListing (const KVDataSet *, const Char_t *datatype="", const Char_t *subdir="")
 
virtual Bool_t GetFileInfo (const KVDataSet *, const Char_t *datatype, const Char_t *runfile, FileStat_t &fs)
 
virtual const Char_t * GetFullPathToOpenFile (const KVDataSet *dataset, const Char_t *datatype, const Char_t *runfile)
 
virtual void MakeSubdirectory (const KVDataSet *, const Char_t *datatype="")
 Overrides KVDataRepository method. More...
 
TObject * OpenDataSetRunFile (const KVDataSet *ds, const Char_t *type, Int_t run, Option_t *opt="")
 
- Public Member Functions inherited from KVDataRepository
 KVDataRepository ()
 Default constructor. More...
 
virtual ~ KVDataRepository ()
 
virtual Bool_t CanWrite () const
 
void cd ()
 
virtual void CommitFile (TFile *file, const Char_t *datatype, const KVDataSet *dataset)
 
virtual int CopyFile (const char *f, const char *t, Bool_t overwrite=kFALSE)
 
void CreateAllNeededSubdirectories (const KVDataSet *DataSet, const Char_t *DataType)
 
virtual TFile * CreateNewFile (const KVDataSet *dataset, const Char_t *datatype, const Char_t *filename)
 
TSystem * FindHelper (const char *path, void *dirptr=0)
 
virtual KVDataSetManagerGetDataSetManager () const
 Return pointer to data set manager for this repository. More...
 
virtual const Char_t * GetFileTransferExec () const
 returns full path to executable used for remote file transfer More...
 
virtual const Char_t * GetFileTransferServer () const
 returns server url used for remote file transfer More...
 
virtual const Char_t * GetFileTransferType () const
 returns protocol used for remote file transfer More...
 
virtual const Char_t * GetFileTransferUser () const
 returns user name used for remote file transfer More...
 
virtual const Char_t * GetFullPathToTransferFile (const KVDataSet *dataset, const Char_t *datatype, const Char_t *runfile)
 
virtual const Char_t * GetRootDirectory () const
 returns root directory of data repository (fLocalrootdir) More...
 
Bool_t HelperIsConsistentWith (TSystem *helper, const char *path, void *dirptr=0)
 
virtual Bool_t Init ()
 
virtual Bool_t IsConnected ()
 Always returns kTRUE for local repositories. More...
 
virtual Bool_t IsRemote () const
 Returns kTRUE for remote repositories, kFALSE for local repositories. More...
 
virtual KVAvailableRunsFileNewAvailableRunsFile (const Char_t *, const KVDataSet *)
 
virtual void Print (Option_t *opt="") const
 Print info on repository. More...
 
virtual void PrintAvailableDatasetsUpdateWarning () const
 
- Public Member Functions inherited from KVBase
 KVBase ()
 Default constructor. More...
 
 KVBase (const Char_t *name, const Char_t *title="")
 Ctor for object with given name and type. More...
 
 KVBase (const KVBase &)
 copy ctor More...
 
virtual ~ KVBase ()
 
virtual void Clear (Option_t *opt="")
 Clear object properties : name, type/title, number, label. More...
 
virtual void Copy (TObject &) const
 Make a copy of this object. More...
 
const Char_t * GetLabel () const
 
UInt_t GetNumber () const
 
UInt_t GetNumberOfObjects () const
 
virtual TObject * GetObject () const
 
virtual const Char_t * GetType () const
 
Bool_t HasLabel () const
 
virtual Bool_t IsCalled (const Char_t *name) const
 
Bool_t IsLabelled (const Char_t *l) const
 
virtual Bool_t IsType (const Char_t *typ) const
 
virtual void List ()
 
KVBaseoperator= (const KVBase &)
 copy assignment operator More...
 
Double_t ProtectedGetX (const TF1 *func, Double_t val, int &status, Double_t xmin=0.0, Double_t xmax=0.0) const
 
void SetLabel (const Char_t *lab)
 
virtual void SetNumber (UInt_t num)
 
virtual void SetType (const Char_t *str)
 

Private Member Functions

virtual int Chmod (const char *file, UInt_t mode)
 Overrides KVDataRepository method. More...
 

Private Attributes

KVDMSfDMS
 connection to Data Management System More...
 

Additional Inherited Members

- Public Types inherited from KVBase
enum  EKaliVedaBits { kIsKaliVedaObject = BIT(23) }
 
- Static Public Member Functions inherited from KVDataRepository
static KVDataRepositoryNewRepository (const Char_t *type)
 
- Static Public Member Functions inherited from KVBase
static Bool_t AreEqual (Double_t x, Double_t y, Long64_t maxdif=1)
 Comparison between two 64-bit floating-point values. More...
 
static void BackupFileWithDate (const Char_t *path)
 
static void CombineFiles (const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE)
 
static void Deprecated (const char *method, const char *advice)
 
static Bool_t FindClassSourceFiles (const Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *dir_name=".")
 
static Bool_t FindExecutable (TString &exec, const Char_t *path="$(PATH)")
 
static const Char_t * FindFile (const Char_t *search, TString &wfil)
 
static const Char_t * GetBINDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetDATABASEFilePath ()
 
static const Char_t * GetDATADIRFilePath (const Char_t *namefile="")
 
static Bool_t GetDataSetEnv (const Char_t *dataset, const Char_t *type, Bool_t defval)
 
static const Char_t * GetDataSetEnv (const Char_t *dataset, const Char_t *type, const Char_t *defval)
 
static Double_t GetDataSetEnv (const Char_t *dataset, const Char_t *type, Double_t defval)
 
static const Char_t * GetETCDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetExampleFilePath (const Char_t *library, const Char_t *namefile)
 Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.) More...
 
static const Char_t * GetINCDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetKVBuildDate ()
 Returns KaliVeda build date. More...
 
static const Char_t * GetKVBuildDir ()
 Returns top-level directory used for build. More...
 
static const Char_t * GetKVBuildTime ()
 Returns KaliVeda build time. More...
 
static const Char_t * GetKVBuildType ()
 Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) More...
 
static const Char_t * GetKVBuildUser ()
 Returns username of person who performed build. More...
 
static const Char_t * GetKVSourceDir ()
 Returns top-level directory of source tree used for build. More...
 
static const Char_t * GetKVVersion ()
 Returns KaliVeda version string. More...
 
static const Char_t * GetLIBDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetListOfPlugins (const Char_t *base)
 
static const Char_t * GetListOfPluginURIs (const Char_t *base)
 
static const Char_t * GetPluginURI (const Char_t *base, const Char_t *plugin)
 
static void GetTempFileName (TString &base)
 
static const Char_t * GetTEMPLATEDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetWORKDIRFilePath (const Char_t *namefile="")
 
static const Char_t * gitBranch ()
 Returns git branch of sources. More...
 
static const Char_t * gitCommit ()
 Returns last git commit of sources. More...
 
static void InitEnvironment ()
 
static bool is_gnuinstall ()
 
static Bool_t IsThisAPlugin (const TString &uri, TString &base)
 
static TPluginHandler * LoadPlugin (const Char_t *base, const Char_t *uri="0")
 
static Bool_t OpenContextMenu (const char *method, TObject *obj, const char *alt_method_name="")
 
static void OpenTempFile (TString &base, std::ofstream &fp)
 
static void PrintSplashScreen ()
 Prints welcome message and infos on version etc. More...
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="")
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ofstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchKVFile (const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
 
static const Char_t * WorkingDirectory ()
 

Constructor & Destructor Documentation

◆ KVDMSDataRepository()

KVDMSDataRepository::KVDMSDataRepository ( )

Default constructor.

Definition at line 16 of file KVDMSDataRepository.cpp.

◆ ~KVDMSDataRepository()

KVDMSDataRepository::~KVDMSDataRepository ( )
virtual

Destructor.

Definition at line 28 of file KVDMSDataRepository.cpp.

Member Function Documentation

◆ CheckFileStatus()

Bool_t KVDMSDataRepository::CheckFileStatus ( const KVDataSet ds,
const Char_t *  datatype,
const Char_t *  runfile 
)
virtual

Checks if the run file of given type is physically present in dataset subdirectory, i.e. (schematically), if

/root_of_data_repository/[datasetdir]/[datatypedir]/[runfile]

exists. If it does, the returned value is kTRUE (=1).

Reimplemented from KVDataRepository.

Definition at line 167 of file KVDMSDataRepository.cpp.

◆ CheckSubdirExists()

Bool_t KVDMSDataRepository::CheckSubdirExists ( const Char_t *  dir,
const Char_t *  subdir = 0 
)
virtual

Returns kTRUE if the following path is valid /root_of_data_repository/dir/[subdir]

Reimplemented from KVDataRepository.

Definition at line 81 of file KVDMSDataRepository.cpp.

◆ Chmod()

int KVDMSDataRepository::Chmod ( const char *  file,
UInt_t  mode 
)
privatevirtual

Overrides KVDataRepository method.

Reimplemented from KVDataRepository.

Definition at line 248 of file KVDMSDataRepository.cpp.

◆ CopyFileFromRepository()

void KVDMSDataRepository::CopyFileFromRepository ( const KVDataSet ds,
const Char_t *  datatype,
const Char_t *  filename,
const Char_t *  destination 
)
virtual

Copy file [datasetdir]/[datatypedir]/[filename] from the repository to [destination] We check if the file to copy exists.

Reimplemented from KVDataRepository.

Definition at line 112 of file KVDMSDataRepository.cpp.

◆ CopyFileToRepository()

int KVDMSDataRepository::CopyFileToRepository ( const Char_t *  source,
const KVDataSet ds,
const Char_t *  datatype,
const Char_t *  filename 
)
virtual

Copy file [source] to [datasetdir]/[datatypedir]/[filename] in the repository Returns status of file transfer command

Reimplemented from KVDataRepository.

Definition at line 138 of file KVDMSDataRepository.cpp.

◆ DeleteFile()

void KVDMSDataRepository::DeleteFile ( const KVDataSet ds,
const Char_t *  datatype,
const Char_t *  filename,
Bool_t  confirm = kTRUE 
)
virtual

Delete repository file [datasetdir]/[datatypedir]/[filename]

By default (confirm=kTRUE) we ask for confirmation before deleting. Set confirm=kFALSE to delete without confirmation (DANGER!!!)

Reimplemented from KVDataRepository.

Definition at line 211 of file KVDMSDataRepository.cpp.

◆ GetDirectoryListing()

KVUniqueNameList * KVDMSDataRepository::GetDirectoryListing ( const KVDataSet ds,
const Char_t *  datatype = "",
const Char_t *  subdir = "" 
)
virtual

Use the DMS catalogue in order to examine the directory

/root_of_data_repository/[datasetdir]/[datatype]/[subdir] /root_of_data_repository/[datasetdir]/[datatype] (if subdir="", default value) /root_of_data_repository/[datasetdir] (if datatype="", default value)

and fill a TList with one KVDMSFile_t object for each entry in the directory, User must delete the TList after use (list will delete its members)

Reimplemented from KVDataRepository.

Definition at line 46 of file KVDMSDataRepository.cpp.

◆ GetFileInfo()

Bool_t KVDMSDataRepository::GetFileInfo ( const KVDataSet ds,
const Char_t *  datatype,
const Char_t *  runfile,
FileStat_t &  fs 
)
virtual

Checks if the run file of given type is physically present in dataset subdirectory, i.e. (schematically), if

/root_of_data_repository/[datasetdir]/[datatypedir]/[runfile]

exists. If it does, the returned value is kTRUE (=1), in which case the FileStat_t object contains information about the file: WARNING: only fs.fSize and fs.fMtime are used in addition, the modification time corresponds to the last time that the DMS declaration of the file was changed, not the last physical modification of the file, i.e. it will be the date at which the file was imported into the DMS catalogue, the file may be much older.

Reimplemented from KVDataRepository.

Definition at line 271 of file KVDMSDataRepository.cpp.

◆ GetFullPathToOpenFile()

const Char_t * KVDMSDataRepository::GetFullPathToOpenFile ( const KVDataSet dataset,
const Char_t *  datatype,
const Char_t *  runfile 
)
virtual

Redefinition of KVDataRepository::GetFullPathToOpenFile

If ReadProtocol != "root" then we use the DMS to download copies of data repository files to the user's temporary directory for analysis - see OpenDataSetRunFile. In this case, the full path to open the given file is that of the temporary directory copy get read protocol for dataset and datatype

Reimplemented from KVDataRepository.

Definition at line 315 of file KVDMSDataRepository.cpp.

◆ MakeSubdirectory()

void KVDMSDataRepository::MakeSubdirectory ( const KVDataSet ds,
const Char_t *  datatype = "" 
)
virtual

Overrides KVDataRepository method.

Reimplemented from KVDataRepository.

Definition at line 191 of file KVDMSDataRepository.cpp.

◆ OpenDataSetRunFile()

TObject * KVDMSDataRepository::OpenDataSetRunFile ( const KVDataSet ds,
const Char_t *  type,
Int_t  run,
Option_t *  opt = "" 
)
virtual

Overrides KVDataRepository method

If ReadProtocol == "root" we use KVDataRepository method to open file via xrootd server

If ReadProtocol != "root" (default if user does not specify [name].DataRepository.ReadProtocol:root):

1) we look for a copy of the file in the user's temporary directory (gSystem->TempDirectory()); 2) if no copy exists, we download the file to the user's temporary directory 3) we open the file in the user's temporary directory get read protocol for dataset and datatype

Reimplemented from KVDataRepository.

Definition at line 347 of file KVDMSDataRepository.cpp.

Member Data Documentation

◆ fDMS

KVDMS* KVDMSDataRepository::fDMS
private

connection to Data Management System

Definition at line 19 of file KVDMSDataRepository.h.