]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliCDBId.cxx
Setter method added
[u/mrichter/AliRoot.git] / STEER / AliCDBId.cxx
index 0f00a334f03cfeeec8487e57b7bc5c8296920f6d..85bd2883d07bf931661241052d234d8b6570e4f6 100644 (file)
@@ -22,6 +22,9 @@
 /////////////////////////////////////////////////////////////////////
 
 #include "AliCDBId.h"
+#include <Riostream.h>
+#include <TObjArray.h>
+#include <TObjString.h>
 
 ClassImp(AliCDBId)
 
@@ -76,6 +79,50 @@ fLastStorage("new")
 
 }
 
+//_____________________________________________________________________________
+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
@@ -85,7 +132,7 @@ AliCDBId::~AliCDBId() {
 //_____________________________________________________________________________
 Bool_t AliCDBId::IsValid() const {
 // validity check
-       
+
        if (!(fPath.IsValid() && fRunRange.IsValid())) {
                return kFALSE;
        }
@@ -94,22 +141,38 @@ Bool_t AliCDBId::IsValid() const {
        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();
-       if(GetSubVersion()>0){
-               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;
+
 }