New version of CDB framework. Proper initialization of CDB inside AliSimulation and...
[u/mrichter/AliRoot.git] / STEER / AliCDBLocal.cxx
index 233596d5ba87477c96f3cdde8ab22f87abedb760..e6e4a3d6fc53b644014b17b79ee522b7b0be4db3 100644 (file)
@@ -60,9 +60,9 @@ AliCDBLocal::~AliCDBLocal() {
 
 //_____________________________________________________________________________
 Bool_t AliCDBLocal::FilenameToId(const char* filename, AliCDBRunRange& runRange,
+       Int_t& version, Int_t& subVersion) {
 // build AliCDBId from filename numbers
 
-       Int_t& version, Int_t& subVersion) {
 
         Ssiz_t mSize;
 
@@ -240,11 +240,9 @@ Bool_t AliCDBLocal::PrepareId(AliCDBId& id) {
 }
 
 //_____________________________________________________________________________
-AliCDBId AliCDBLocal::GetId(const AliCDBId& query) {
+Bool_t AliCDBLocal::GetId(const AliCDBId& query, AliCDBId& result) {
 // look for filename matching query (called by GetEntry)
 
-       AliCDBId result(query.GetAliCDBPath(), -1, -1, -1, -1);
-
        TString dirName;
        dirName += fBaseDirectory;
        dirName += '/';
@@ -252,9 +250,9 @@ AliCDBId AliCDBLocal::GetId(const AliCDBId& query) {
 
        void* dirPtr = gSystem->OpenDirectory(dirName); 
        if (!dirPtr) {
-               AliError(Form("Directory <%s> not found", (query.GetPath()).Data()));
-               AliError(Form("in DB folder %s", fBaseDirectory.Data()));
-               return result;
+               AliDebug(2,Form("Directory <%s> not found", (query.GetPath()).Data()));
+               AliDebug(2,Form("in DB folder %s", fBaseDirectory.Data()));
+               return kFALSE;
        }
 
        const char* filename;   
@@ -296,10 +294,10 @@ AliCDBId AliCDBLocal::GetId(const AliCDBId& query) {
                                        aRunRange.GetLastRun());
                        } else if (result.GetVersion() == aVersion
                                && result.GetSubVersion() == aSubVersion){
-                               AliError(Form("More than one object valid for run %d, version %d_%d!", 
+                               AliDebug(2,Form("More than one object valid for run %d, version %d_%d!", 
                                        query.GetFirstRun(), aVersion, aSubVersion));
-                               result.SetRunRange(-1,-1); result.SetVersion(-1); result.SetSubVersion(-1);
-                               return result
+                               gSystem->FreeDirectory(dirPtr);
+                               return kFALSE
                                }
                }
                
@@ -322,10 +320,10 @@ AliCDBId AliCDBLocal::GetId(const AliCDBId& query) {
                        // aVersion is requested version!
                        
                        if(result.GetSubVersion() == aSubVersion){
-                               AliError(Form("More than one object valid for run %d, version %d_%d!", 
+                               AliDebug(2,Form("More than one object valid for run %d, version %d_%d!", 
                                        query.GetFirstRun(), aVersion, aSubVersion));
-                               result.SetRunRange(-1,-1); result.SetVersion(-1); result.SetSubVersion(-1);
-                               return result
+                               gSystem->FreeDirectory(dirPtr);
+                               return kFALSE
                        }
                        if( result.GetSubVersion() < aSubVersion) {
 
@@ -355,10 +353,10 @@ AliCDBId AliCDBLocal::GetId(const AliCDBId& query) {
                        // aVersion and aSubVersion are requested version and subVersion!
                        
                        if(result.GetVersion() == aVersion && result.GetSubVersion() == aSubVersion){
-                               AliError(Form("More than one object valid for run %d, version %d_%d!", 
+                               AliDebug(2,Form("More than one object valid for run %d, version %d_%d!", 
                                        query.GetFirstRun(), aVersion, aSubVersion));
-                               result.SetRunRange(-1,-1); result.SetVersion(-1); result.SetSubVersion(-1);
-                               return result
+                               gSystem->FreeDirectory(dirPtr);
+                               return kFALSE
                        }
                        result.SetVersion(aVersion);
                        result.SetSubVersion(aSubVersion);
@@ -370,30 +368,33 @@ AliCDBId AliCDBLocal::GetId(const AliCDBId& query) {
 
        gSystem->FreeDirectory(dirPtr);
 
-       return result;
+       return kTRUE;
 }
 
 //_____________________________________________________________________________
 AliCDBEntry* AliCDBLocal::GetEntry(const AliCDBId& queryId) {
 // get AliCDBEntry from the database
 
-       AliCDBId dataId;
-       
+       AliCDBId dataId(queryId.GetAliCDBPath(), -1, -1, -1, -1);
+        Bool_t result;
+               
        // look for a filename matching query requests (path, runRange, version, subVersion)
        if (!queryId.HasVersion()) {
                // if version is not specified, first check the selection criteria list
-               dataId = GetId(GetSelection(queryId));
+               AliCDBId selectedId(queryId);
+               GetSelection(&selectedId);
+               result = GetId(selectedId, dataId);
        } else {
-               dataId = GetId(queryId);
+               result = GetId(queryId, dataId);
        }
 
-       if (!dataId.IsSpecified()) return NULL;
+       if (!result || !dataId.IsSpecified()) return NULL;
 
        TString filename;
        if (!IdToFilename(dataId.GetAliCDBRunRange(), dataId.GetVersion(),
                 dataId.GetSubVersion(), filename)) {
 
-               AliError("Bad data ID encountered! Subnormal error!");
+               AliDebug(2,Form("Bad data ID encountered! Subnormal error!"));
                 return NULL;
        }
        
@@ -401,7 +402,7 @@ AliCDBEntry* AliCDBLocal::GetEntry(const AliCDBId& queryId) {
 
        TFile file(filename, "READ"); // open file
        if (!file.IsOpen()) {
-               AliError(Form("Can't open file <%s>!", filename.Data()));
+               AliDebug(2,Form("Can't open file <%s>!", filename.Data()));
                 return NULL;
        }
 
@@ -410,12 +411,12 @@ AliCDBEntry* AliCDBLocal::GetEntry(const AliCDBId& queryId) {
        
        TObject* anObject = file.Get("AliCDBEntry");
        if (!anObject) {
-               AliError("Bad storage data: NULL entry object!");
+               AliDebug(2,Form("Bad storage data: NULL entry object!"));
                return NULL;
        }
 
        if (AliCDBEntry::Class() != anObject->IsA()) {
-               AliError("Bad storage data: Invalid entry object!");
+               AliDebug(2,Form("Bad storage data: Invalid entry object!"));
                return NULL;
        }
        
@@ -450,7 +451,7 @@ void AliCDBLocal::GetEntriesForLevel0(const char* level0,
        
        void* level0DirPtr = gSystem->OpenDirectory(level0Dir);
        if (!level0DirPtr) {
-               AliError(Form("Can't open level0 directory <%s>!", 
+               AliDebug(2,Form("Can't open level0 directory <%s>!", 
                        level0Dir.Data()));
                 return;
        } 
@@ -485,7 +486,7 @@ void AliCDBLocal::GetEntriesForLevel1(const char* level0, const char* level1,
 
        void* level1DirPtr = gSystem->OpenDirectory(level1Dir);
        if (!level1DirPtr) {
-               AliError(Form("Can't open level1 directory <%s>!", 
+               AliDebug(2,Form("Can't open level1 directory <%s>!", 
                        level1Dir.Data()));
                 return;
        }
@@ -520,7 +521,7 @@ TList* AliCDBLocal::GetEntries(const AliCDBId& queryId) {
 
        void* storageDirPtr = gSystem->OpenDirectory(fBaseDirectory);
        if (!storageDirPtr) {
-               AliError(Form("Can't open storage directory <%s>",
+               AliDebug(2,Form("Can't open storage directory <%s>",
                        fBaseDirectory.Data()));
                return NULL;
        }       
@@ -561,7 +562,7 @@ Bool_t AliCDBLocal::PutEntry(AliCDBEntry* entry) {
        if (!IdToFilename(id.GetAliCDBRunRange(), id.GetVersion(),
                id.GetSubVersion(), filename)) {
 
-               AliError("Bad ID encountered! Subnormal error!");
+               AliDebug(2,Form("Bad ID encountered! Subnormal error!"));
                return kFALSE;
        }
        
@@ -579,7 +580,7 @@ Bool_t AliCDBLocal::PutEntry(AliCDBEntry* entry) {
        
        // write object (key name: "AliCDBEntry")
        Bool_t result = file.WriteTObject(entry, "AliCDBEntry");
-       if (!result) AliError(Form("Can't write entry to file: %s", filename.Data()));
+       if (!result) AliDebug(2,Form("Can't write entry to file: %s", filename.Data()));
 
        file.Close();
         if(result) AliInfo(Form("CDB object stored into file %s",filename.Data()));