/////////////////////////////////////////////////////////////////////
#include "AliCDBId.h"
+#include <Riostream.h>
+#include <TObjArray.h>
+#include <TObjString.h>
ClassImp(AliCDBId)
}
+//_____________________________________________________________________________
+AliCDBId* AliCDBId::MakeFromString(const TString& idString)
+{
+// constructor from string
+// string has the format as the output of AliCDBId::ToString:
+// path: "TRD/Calib/PIDLQ"; run range: [0,999999999]; version: v0_s0
+
+ AliCDBId* id = new AliCDBId("a/b/c",-1,-1,-1,-1);
+
+ TObjArray* arr1 = idString.Tokenize(';');
+ TIter iter1(arr1);
+ TObjString *objStr1 = 0;
+ while((objStr1 = dynamic_cast<TObjString*>(iter1.Next()))) {
+ TString buff(objStr1->GetName());
+
+ if(buff.Contains("path:")) {
+ TString path(buff(buff.First('\"')+1, buff.Length()-buff.First('\"')-2));
+ id->SetPath(path.Data());
+
+ } else if (buff.Contains("run range:")) {
+ TString firstRunStr(buff(buff.Index('[')+1, buff.Index(',')-buff.Index('[')-1));
+ TString lastRunStr(buff(buff.Index(',')+1, buff.Index(']')-buff.Index(',')-1));
+ id->SetRunRange(firstRunStr.Atoi(), lastRunStr.Atoi());
+
+ } else if (buff.Contains("version:")) {
+ if (buff.Contains("_s")) {
+ TString versStr(buff(buff.Last('v')+1, buff.Index('_')-buff.Last('v')-1));
+ TString subVersStr(buff(buff.Last('s')+1, buff.Length()-buff.Last('s')-1));
+ id->SetVersion(versStr.Atoi());
+ id->SetSubVersion(subVersStr.Atoi());
+ } else {
+ TString versStr(buff(buff.Last('v')+1, buff.Length()-buff.Last('v')-1));
+ id->SetVersion(versStr.Atoi());
+ }
+ }
+
+ }
+
+ delete arr1;
+
+ return id;
+
+}
+
//_____________________________________________________________________________
AliCDBId::~AliCDBId() {
//destructor
//_____________________________________________________________________________
Bool_t AliCDBId::IsValid() const {
// validity check
-
+
if (!(fPath.IsValid() && fRunRange.IsValid())) {
return kFALSE;
}
return !(!HasVersion() && HasSubVersion());
}
+//___________________________________________________________________________
+Bool_t AliCDBId::IsEqual(const TObject* obj) const {
+// check if this id is equal to other id (compares path, run range, versions)
+
+ if (this == obj) {
+ return kTRUE;
+ }
+
+ if (AliCDBId::Class() != obj->IsA()) {
+ return kFALSE;
+ }
+ AliCDBId* other = (AliCDBId*) obj;
+ return fPath.GetPath() == other->GetPath() && fRunRange.IsEqual(&other->GetAliCDBRunRange()) &&
+ fVersion == other->GetVersion() && fSubVersion == other->GetSubVersion();
+}
+
//_____________________________________________________________________________
TString AliCDBId::ToString() const {
// returns a string of Id data
- TString result;
- result += "path \"";
- result += GetPath();
- result += "\"; run range [";
- result += GetFirstRun();
- result += ",";
- result += GetLastRun();
- result += "]; version v";
- result += GetVersion();
- result += "_s";
- result += GetSubVersion();
-
- return result;
+ TString result = Form("path: \"%s\"; run range: [%d,%d]",
+ GetPath().Data(), GetFirstRun(), GetLastRun());
+
+ if(GetVersion() >= 0) result += Form("; version: v%d", GetVersion());
+ if(GetSubVersion() >= 0) result += Form("_s%d", GetSubVersion());
+ return result;
+}
+
+//_____________________________________________________________________________
+void AliCDBId::Print(Option_t* /*option*/) const {
+// Prints ToString()
+
+ cout << ToString().Data() << endl;
+
}