00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TFileInfo
00013 #define ROOT_TFileInfo
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef ROOT_TNamed
00024 #include "TNamed.h"
00025 #endif
00026
00027 #ifndef ROOT_Turl
00028 #include "TUrl.h"
00029 #endif
00030
00031 #ifndef ROOT_TUUID
00032 #include "TUUID.h"
00033 #endif
00034
00035 #ifndef ROOT_TMD5
00036 #include "TMD5.h"
00037 #endif
00038
00039 #ifndef ROOT_TObjString
00040 #include "TObjString.h"
00041 #endif
00042
00043 #ifndef ROOT_TList
00044 #include "TList.h"
00045 #endif
00046
00047 class TFileInfoMeta;
00048
00049
00050 class TFileInfo : public TNamed {
00051
00052 private:
00053 TUrl *fCurrentUrl;
00054
00055 TList *fUrlList;
00056 Long64_t fSize;
00057 TUUID *fUUID;
00058 TMD5 *fMD5;
00059 TList *fMetaDataList;
00060
00061 void ParseInput(const char *in);
00062
00063 TFileInfo& operator=(const TFileInfo&);
00064
00065 public:
00066 enum EStatusBits {
00067 kStaged = BIT(15),
00068 kCorrupted = BIT(16)
00069 };
00070
00071 TFileInfo(const char *url = 0, Long64_t size = -1, const char *uuid = 0,
00072 const char *md5 = 0, TObject *meta = 0);
00073 TFileInfo(const TFileInfo &);
00074
00075 virtual ~TFileInfo();
00076
00077 void ResetUrl() { fCurrentUrl = (TUrl*)fUrlList->First(); }
00078 TUrl *NextUrl();
00079 TUrl *GetCurrentUrl() const;
00080 TUrl *GetFirstUrl() const { return (TUrl*)fUrlList->First(); }
00081 Int_t GetNUrls() const { return fUrlList->GetEntries(); }
00082
00083 Bool_t SetCurrentUrl(const char *url);
00084 Bool_t SetCurrentUrl(TUrl *url);
00085
00086 Long64_t GetSize() const { return fSize; }
00087 TUUID *GetUUID() const { return fUUID; }
00088 TMD5 *GetMD5() const { return fMD5; }
00089 TList *GetMetaDataList() const { return fMetaDataList; }
00090 TFileInfoMeta *GetMetaData(const char *meta = 0) const;
00091
00092 void SetSize(Long64_t size) { fSize = size; }
00093 void SetUUID(const char *uuid);
00094
00095 TUrl *FindByUrl(const char *url, Bool_t withDeflt = kFALSE);
00096
00097 Bool_t AddUrl(const char *url, Bool_t infront = kFALSE);
00098 Bool_t RemoveUrl(const char *url);
00099 Bool_t AddMetaData(TObject *meta);
00100 Bool_t RemoveMetaData(const char *meta = 0);
00101
00102 Bool_t IsSortable() const { return kTRUE; }
00103 Int_t Compare(const TObject *obj) const;
00104
00105 void Print(Option_t *options="") const;
00106
00107 ClassDef(TFileInfo,3)
00108 };
00109
00110
00111 class TFileInfoMeta : public TNamed {
00112
00113 private:
00114 Long64_t fEntries;
00115 Long64_t fFirst;
00116 Long64_t fLast;
00117 Bool_t fIsTree;
00118 Long64_t fTotBytes;
00119 Long64_t fZipBytes;
00120
00121 TFileInfoMeta& operator=(const TFileInfoMeta&);
00122
00123 public:
00124 enum EStatusBits { kExternal = BIT(15) };
00125
00126 TFileInfoMeta() : fEntries(-1), fFirst(0), fLast(-1),
00127 fIsTree(kFALSE), fTotBytes(-1), fZipBytes(-1)
00128 { ResetBit(TFileInfoMeta::kExternal); }
00129 TFileInfoMeta(const char *objPath, const char *objClass = "TTree",
00130 Long64_t entries = -1, Long64_t first = 0, Long64_t last = -1,
00131 Long64_t totbytes = -1, Long64_t zipbytes = -1);
00132 TFileInfoMeta(const char *objPath, const char *objDir,
00133 const char *objClass, Long64_t entries = -1,
00134 Long64_t first = 0, Long64_t last = -1,
00135 Long64_t totbytes = -1, Long64_t zipbytes = -1);
00136 TFileInfoMeta(const TFileInfoMeta &m);
00137
00138 virtual ~TFileInfoMeta() { }
00139
00140 const char *GetObject() const;
00141 const char *GetClass() const { return GetTitle(); }
00142 const char *GetDirectory() const;
00143 Long64_t GetEntries() const { return fEntries; }
00144 Long64_t GetFirst() const { return fFirst; }
00145 Long64_t GetLast() const { return fLast; }
00146 Bool_t IsTree() const { return fIsTree; }
00147 Long64_t GetTotBytes() const { return fTotBytes; }
00148 Long64_t GetZipBytes() const { return fZipBytes; }
00149
00150 void SetEntries(Long64_t entries) { fEntries = entries; }
00151 void SetFirst(Long64_t first) { fFirst = first; }
00152 void SetLast(Long64_t last) { fLast = last; }
00153 void SetTotBytes(Long64_t tot) { fTotBytes = tot; }
00154 void SetZipBytes(Long64_t zip) { fZipBytes = zip; }
00155
00156 void Print(Option_t *options="") const;
00157
00158 ClassDef(TFileInfoMeta,2)
00159 };
00160
00161 #endif