15#include <fairlogger/Logger.h>
17#include <TObjString.h>
36 mWildcard(
other.mWildcard)
44 :
TObject(), mPath(
""), mLevel0(level0), mLevel1(level1), mLevel2(level2), mValid(kTRUE), mWildcard(kFALSE)
54 if ((isWord(mLevel0) || mLevel0 ==
"*") && (isWord(mLevel1) || mLevel1 ==
"*") &&
55 (isWord(mLevel2) || mLevel2 ==
"*")) {
60 LOG(error) << R
"(Invalid Path ")" << level0 << "/" << level1 <<
"/" << level2 << R
"("!)";
67 :
TObject(), mPath(
path), mLevel0(
""), mLevel1(
""), mLevel2(
""), mValid(kTRUE), mWildcard(kFALSE)
76 :
TObject(), mPath(
path), mLevel0(
""), mLevel1(
""), mLevel2(
""), mValid(kTRUE), mWildcard(kFALSE)
82void IdPath::InitPath()
86 TSubString strippedString = mPath.Strip(TString::kBoth);
87 TString aString(strippedString);
88 strippedString = aString.Strip(TString::kBoth,
'/');
90 TObjArray* anArray = TString(strippedString).Tokenize(
"/");
91 Int_t paramCount = anArray->GetEntriesFast();
93 if (paramCount == 1) {
104 }
else if (paramCount == 2) {
105 mLevel0 = ((TObjString*)anArray->At(0))->GetString();
106 TString bString = ((TObjString*)anArray->At(1))->GetString();
108 if (isWord(mLevel0) && bString ==
"*") {
118 }
else if (paramCount == 3) {
119 mLevel0 = ((TObjString*)anArray->At(0))->GetString();
120 mLevel1 = ((TObjString*)anArray->At(1))->GetString();
121 mLevel2 = ((TObjString*)anArray->At(2))->GetString();
123 if ((isWord(mLevel0) || mLevel0 ==
"*") && (isWord(mLevel1) || mLevel1 ==
"*") &&
124 (isWord(mLevel2) || mLevel2 ==
"*")) {
136 LOG(info) << R
"(Invalid Path ")" << mPath.Data() << R"("!)";
138 mPath = Form(
"%s/%s/%s", mLevel0.Data(), mLevel1.Data(), mLevel2.Data());
148Bool_t IdPath::isWord(
const TString&
str)
152 TRegexp
pattern(
"^[a-zA-Z0-9_.-]+$");
161 mWildcard = mPath.MaybeWildcard();
168 if (mLevel0 ==
"*") {
172 return mLevel0 ==
str;
179 if (mLevel1 ==
"*") {
183 return mLevel1 ==
str;
190 if (mLevel2 ==
"*") {
194 return mLevel2 ==
str;
210 return mLevel0.Data();
213 return mLevel1.Data();
216 return mLevel2.Data();
Bool_t doesLevel2Contain(const TString &str) const
Bool_t isSupersetOf(const IdPath &other) const
Bool_t doesLevel1Contain(const TString &str) const
Bool_t doesLevel0Contain(const TString &str) const
const char * getLevel(Int_t i) const
GLsizei const GLchar *const * path
information complementary to a CCDB object (path, metadata, startTimeValidity, endTimeValidity etc)
VectorOfTObjectPtrs other
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::array< uint16_t, 5 > pattern