KaliVeda
Toolkit for HIC analysis
KVDMS.h
1 
4 #ifndef __KVDMS_H
5 #define __KVDMS_H
6 
7 #include "KVBase.h"
8 #include "KVList.h"
9 #include "KVUniqueNameList.h"
10 #include "KVDatime.h"
11 
20 class DMSFile_t : public KVBase {
23 
24 public:
26  {
27  fIsCont = kFALSE;
28  }
29  DMSFile_t(const DMSFile_t& o) : KVBase()
30  {
31  o.Copy(*this);
32  }
33  void Copy(TObject& other) const override
34  {
38  KVBase::Copy(other);
39  auto _other = dynamic_cast<DMSFile_t&>(other);
40  _other.SetModTime(GetModTime());
41  _other.SetIsContainer(IsContainer());
42  }
43 
45  {
46  return fModTime;
47  }
48  void SetModTime(const KVDatime& d)
49  {
50  fModTime = d;
51  }
52  UInt_t GetSize() const
53  {
54  return GetNumber();
55  }
56  void SetSize(UInt_t s)
57  {
58  SetNumber(s);
59  }
60  void SetIsContainer(Bool_t yes = kTRUE)
61  {
62  fIsCont = yes;
63  }
65  {
66  return fIsCont;
67  }
68  void ls(Option_t* opt = "") const override;
69 
70  ClassDefOverride(DMSFile_t, 1) //Attributes of Data Management Service file/container
71 };
72 
73 class KVDMS : public KVBase {
77 
78 protected:
79  Bool_t buildCommand(const Char_t* scmd, const Char_t* args = "", Option_t* opts = "");
82 
83  /* take line from directory listing and extract infos on file size, modification date, etc. */
84  virtual void ExtractFileInfos(TString&, DMSFile_t*) const = 0;
85 
86 public:
87  virtual Int_t init() = 0;
88  virtual Int_t exit() = 0;
89 
90  /* produce simple listing of directory, with just the name of each file/container on a separate line */
91  virtual TString list(const Char_t* directory = "") = 0;
92 
93  /* produce full listing of directory, with for each file/container the name, size, owner, date, etc. on a separate line */
94  virtual TString longlist(const Char_t* directory = "") = 0;
95 
96  virtual Int_t cd(const Char_t* directory = "") = 0;
97  virtual Int_t chmod(const Char_t* path, UInt_t mode) = 0;
98  virtual Int_t put(const Char_t* source, const Char_t* target = ".") = 0;
99  virtual Int_t get(const Char_t* source, const Char_t* target = ".") = 0;
100  virtual TString info(const Char_t* file, Option_t* opt = "") = 0;
101  virtual Int_t forcedelete(const Char_t* path) = 0;
102  virtual Int_t mkdir(const Char_t* path, Option_t* opt = "") = 0;
103 
104  Bool_t IsContainer(TString&) const;
105 
106  KVDMS(const Char_t* name = "DMS", const Char_t* title = "Data Management System");
107 
108  KVUniqueNameList GetFullListing(const Char_t* directory = "");
109  KVUniqueNameList GetListing(const Char_t* directory = "");
110  Bool_t DirectoryContains(const Char_t* name, const Char_t* directory = "");
111  Bool_t GetPathInfo(const Char_t* path, DMSFile_t& fs);
112 
113  ClassDef(KVDMS, 1) //Interface to Data Management Service (SRB, IRODS, etc.)
114 };
115 
116 #endif
int Int_t
unsigned int UInt_t
#define d(i)
bool Bool_t
char Char_t
constexpr Bool_t kFALSE
const char Option_t
#define ClassDef(name, id)
#define ClassDefOverride(name, id)
void ls(Option_t *opt="") const override
List file/container attributes.
Definition: KVDMS.cpp:251
Bool_t fIsCont
kTRUE if is container
Definition: KVDMS.h:22
DMSFile_t(const DMSFile_t &o)
Definition: KVDMS.h:29
Bool_t IsContainer() const
Definition: KVDMS.h:64
UInt_t GetSize() const
Definition: KVDMS.h:52
void SetSize(UInt_t s)
Definition: KVDMS.h:56
void SetModTime(const KVDatime &d)
Definition: KVDMS.h:48
KVDatime fModTime
last modification
Definition: KVDMS.h:21
KVDatime GetModTime() const
Definition: KVDMS.h:44
DMSFile_t()
Definition: KVDMS.h:25
void SetIsContainer(Bool_t yes=kTRUE)
Definition: KVDMS.h:60
void Copy(TObject &other) const override
Definition: KVDMS.h:33
Base class for KaliVeda framework.
Definition: KVBase.h:139
virtual void SetNumber(UInt_t num)
Definition: KVBase.h:215
void Copy(TObject &) const override
Make a copy of this object.
Definition: KVBase.cpp:389
UInt_t GetNumber() const
Definition: KVBase.h:219
Abstract base class for interfaces to Data Management Systems (SRB, IRODS, etc.)
Definition: KVDMS.h:73
virtual Int_t forcedelete(const Char_t *path)=0
virtual TString longlist(const Char_t *directory="")=0
Bool_t GetPathInfo(const Char_t *path, DMSFile_t &fs)
Definition: KVDMS.cpp:159
KVUniqueNameList GetListing(const Char_t *directory="")
Definition: KVDMS.cpp:189
TString fcmd
string holding full path to command line with arguments
Definition: KVDMS.h:75
KVUniqueNameList GetFullListing(const Char_t *directory="")
Definition: KVDMS.cpp:120
virtual Int_t chmod(const Char_t *path, UInt_t mode)=0
TString fexec
string holding full path to executable
Definition: KVDMS.h:74
virtual void ExtractFileInfos(TString &, DMSFile_t *) const =0
virtual Int_t get(const Char_t *source, const Char_t *target=".")=0
virtual Int_t cd(const Char_t *directory="")=0
TString pipeCommand()
Definition: KVDMS.cpp:87
Bool_t DirectoryContains(const Char_t *name, const Char_t *directory="")
Definition: KVDMS.cpp:227
TString fout
string holding results of command
Definition: KVDMS.h:76
virtual Int_t mkdir(const Char_t *path, Option_t *opt="")=0
Int_t execCommand()
Definition: KVDMS.cpp:71
KVDMS(const Char_t *name="DMS", const Char_t *title="Data Management System")
Default ctor with name and title.
Definition: KVDMS.cpp:22
Bool_t buildCommand(const Char_t *scmd, const Char_t *args="", Option_t *opts="")
Definition: KVDMS.cpp:40
virtual Int_t exit()=0
virtual Int_t put(const Char_t *source, const Char_t *target=".")=0
Bool_t IsContainer(TString &) const
Definition: KVDMS.cpp:103
virtual TString info(const Char_t *file, Option_t *opt="")=0
virtual Int_t init()=0
virtual TString list(const Char_t *directory="")=0
Extension of TDatime to handle various useful date formats.
Definition: KVDatime.h:33
Optimised list in which named objects can only be placed once.