ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/////////////////////////////////////////////////////////////////////
//                                                                 //
//  class AliCDBDump						   //
//  access class to a DataBase in a dump storage (single file)     //
//                                                                 //
/////////////////////////////////////////////////////////////////////

#include <cstdlib>
#include <TSystem.h>
#include <TKey.h>
#include <TFile.h>
#include <TRegexp.h>
#include <TObjString.h>
#include <TList.h>

#include "AliCDBDump.h"
#include "AliCDBEntry.h"
#include "AliLog.h"

ClassImp(AliCDBDump)

//_____________________________________________________________________________
AliCDBDump::AliCDBDump(const char* dbFile, Bool_t readOnly):
  fFile(NULL), fReadOnly(readOnly)
{
  // constructor

  // opening file
  fFile = TFile::Open(dbFile, fReadOnly ? "READ" : "UPDATE");	
  if (!fFile) {
    AliError(Form("Can't open file <%s>!" , dbFile));
  } else {
    AliDebug(2,Form("File <%s> opened",dbFile));
    if(fReadOnly) AliDebug(2,Form("in read-only mode"));
  }

  fType="dump";
  fBaseFolder = dbFile;
}

//_____________________________________________________________________________
AliCDBDump::~AliCDBDump() {
  // destructor

  if (fFile) {
    fFile->Close();
    delete fFile;
  }
}


//_____________________________________________________________________________
Bool_t AliCDBDump::KeyNameToId(const char* keyname, AliCDBRunRange& runRange,
    Int_t& version, Int_t& subVersion) {
  // build AliCDBId from keyname numbers

  Ssiz_t mSize;

  // valid keyname: Run#firstRun_#lastRun_v#version_s#subVersion.root
  TRegexp keyPattern("^Run[0-9]+_[0-9]+_v[0-9]+_s[0-9]+$");
  keyPattern.Index(keyname, &mSize);
  if (!mSize) {
    AliDebug(2,Form("Bad keyname <%s>.", keyname));
    return kFALSE;
  }

  TObjArray* strArray = (TObjArray*) TString(keyname).Tokenize("_");

  TString firstRunString(((TObjString*) strArray->At(0))->GetString());
  runRange.SetFirstRun(atoi(firstRunString.Data() + 3));
  runRange.SetLastRun(atoi(((TObjString*) strArray->At(1))->GetString()));

  TString verString(((TObjString*) strArray->At(2))->GetString());
  version = atoi(verString.Data() + 1);

  TString subVerString(((TObjString*) strArray->At(3))->GetString());
  subVersion = atoi(subVerString.Data() + 1);

  delete strArray;

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliCDBDump::IdToKeyName(const AliCDBRunRange& runRange, Int_t version,
    Int_t subVersion, TString& keyname) {
  // build key name from AliCDBId data (run range, version, subVersion)

  if (!runRange.IsValid()) {
    AliDebug(2,Form("Invalid run range <%d, %d>.",
          runRange.GetFirstRun(), runRange.GetLastRun()));
    return kFALSE;
  }

  if (version < 0) {
    AliDebug(2,Form("Invalid version <%d>.", version));
    return kFALSE;
  }

  if (subVersion < 0) {
    AliDebug(2,Form("Invalid subversion <%d>.", subVersion));
    return kFALSE;
  }

  keyname += "Run";
  keyname += runRange.GetFirstRun();
  keyname += "_";
  keyname += runRange.GetLastRun();
  keyname += "_v";
  keyname += version;
  keyname += "_s";
  keyname += subVersion;

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliCDBDump::MkDir(const TString& path) {
  // descend into TDirectory, making TDirectories if they don't exist 
  TObjArray* strArray = (TObjArray*) path.Tokenize("/");

  TIter iter(strArray);
  TObjString* str;

  while ((str = (TObjString*) iter.Next())) {

    TString dirName(str->GetString());
    if (!dirName.Length()) {
      continue;
    }

    if (gDirectory->cd(dirName)) {
      continue;
    }

    TDirectory* aDir = gDirectory->mkdir(dirName, "");
    if (!aDir) {
      AliError(Form("Can't create directory <%s>!", 
            dirName.Data()));
      delete strArray;

      return kFALSE;
    }

    aDir->cd();
  }	

  delete strArray;

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliCDBDump::PrepareId(AliCDBId& id) {
  // prepare id (version, subVersion) of the object that will be stored (called by PutEntry)

  AliCDBRunRange aRunRange; // the runRange got from filename 
  AliCDBRunRange lastRunRange(-1,-1); // highest runRange found
  Int_t aVersion, aSubVersion; // the version subVersion got from filename
  Int_t lastVersion = 0, lastSubVersion = -1; // highest version and subVersion found


  TIter iter(gDirectory->GetListOfKeys());
  TKey* key;

  if (!id.HasVersion()) {	// version not specified: look for highest version & subVersion	

    while ((key = (TKey*) iter.Next())) { // loop on keys

      const char* keyName = key->GetName();

      if (!KeyNameToId(keyName, aRunRange, aVersion, 
            aSubVersion)) {
        AliDebug(2,Form(
              "Bad keyname <%s>!I'll skip it.", keyName));
        continue;
      }

      if (!aRunRange.Overlaps(id.GetAliCDBRunRange())) continue;
      if(aVersion < lastVersion) continue;
      if(aVersion > lastVersion) lastSubVersion = -1;
      if(aSubVersion < lastSubVersion) continue;
      lastVersion = aVersion;
      lastSubVersion = aSubVersion;
      lastRunRange = aRunRange;
    }

    id.SetVersion(lastVersion);
    id.SetSubVersion(lastSubVersion + 1);

  } else { // version specified, look for highest subVersion only

    while ((key = (TKey*) iter.Next())) { // loop on the keys

      const char* keyName = key->GetName();

      if (!KeyNameToId(keyName, aRunRange, aVersion, 
            aSubVersion)) {
        AliDebug(2,Form(
              "Bad keyname <%s>!I'll skip it.", keyName));
        continue;
      }

      if (aRunRange.Overlaps(id.GetAliCDBRunRange()) 
          && aVersion == id.GetVersion()
          && aSubVersion > lastSubVersion) {
        lastSubVersion = aSubVersion;
        lastRunRange = aRunRange;
      }

    }

    id.SetSubVersion(lastSubVersion + 1);
  }

  TString lastStorage = id.GetLastStorage();
  if(lastStorage.Contains(TString("grid"), TString::kIgnoreCase) &&
      id.GetSubVersion() > 0 ){
    AliError(Form("Grid to Dump Storage error! local object with version v%d_s%d found:",id.GetVersion(), id.GetSubVersion()-1));
    AliError(Form("This object has been already transferred from Grid (check v%d_s0)!",id.GetVersion()));
    return kFALSE;
  }

  if(lastStorage.Contains(TString("new"), TString::kIgnoreCase) &&
      id.GetSubVersion() > 0 ){
    AliDebug(2, Form("A NEW object is being stored with version v%d_s%d",
          id.GetVersion(),id.GetSubVersion()));
    AliDebug(2, Form("and it will hide previously stored object with v%d_s%d!",
          id.GetVersion(),id.GetSubVersion()-1));
  }

  if(!lastRunRange.IsAnyRange() && !(lastRunRange.IsEqual(& id.GetAliCDBRunRange()))) 
    AliWarning(Form("Run range modified w.r.t. previous version (Run%d_%d_v%d_s%d)",
          lastRunRange.GetFirstRun(), lastRunRange.GetLastRun(), 
          id.GetVersion(), id.GetSubVersion()-1));

  return kTRUE;

}

// //_____________________________________________________________________________
// Bool_t AliCDBDump::GetId(const AliCDBId& query, AliCDBId& result) {
// // look for filename matching query (called by GetEntry)
// 
// 
//         AliCDBRunRange aRunRange; // the runRange got from filename
//         Int_t aVersion, aSubVersion; // the version and subVersion got from filename
// 
// 	TIter iter(gDirectory->GetListOfKeys());
// 	TKey* key;
// 
// 	if (!query.HasVersion()) { // neither version and subversion specified -> look for highest version and subVersion
// 
//                 while ((key = (TKey*) iter.Next())) { // loop on the keys
// 
// 			if (!KeyNameToId(key->GetName(), aRunRange, aVersion, aSubVersion)) continue;
//                         // aRunRange, aVersion, aSubVersion filled from filename
// 
// 			if (!aRunRange.Comprises(query.GetAliCDBRunRange())) continue;
// 			// aRunRange contains requested run!
// 
// 			if (result.GetVersion() < aVersion) {
// 				result.SetVersion(aVersion);
// 				result.SetSubVersion(aSubVersion);
// 
// 				result.SetFirstRun(
// 					aRunRange.GetFirstRun());
// 				result.SetLastRun(
// 					aRunRange.GetLastRun());
// 
// 			} else if (result.GetVersion() == aVersion
// 				&& result.GetSubVersion()
// 					< aSubVersion) {
// 
// 				result.SetSubVersion(aSubVersion);
// 
//                         	result.SetFirstRun(
// 					aRunRange.GetFirstRun());
//                         	result.SetLastRun(
// 					aRunRange.GetLastRun());
// 			} else if (result.GetVersion() == aVersion
// 				&& result.GetSubVersion() == aSubVersion){
//               			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 kFALSE;
// 				}
// 		}
// 
// 	} else if (!query.HasSubVersion()) { // version specified but not subversion -> look for highest subVersion
// 
// 		result.SetVersion(query.GetVersion());
// 
//                 while ((key = (TKey*) iter.Next())) { // loop on the keys
// 
// 			if (!KeyNameToId(key->GetName(), aRunRange, aVersion, aSubVersion)) continue;
//                         // aRunRange, aVersion, aSubVersion filled from filename
// 
//                        if (!aRunRange.Comprises(query.GetAliCDBRunRange())) continue;
// 			// aRunRange contains requested run!
// 			
// 			if(query.GetVersion() != aVersion) continue;
// 			// aVersion is requested version!
// 
// 	 		if(result.GetSubVersion() == aSubVersion){
//               			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 kFALSE;
// 	 		}
// 			if( result.GetSubVersion() < aSubVersion) {
// 
//                                 result.SetSubVersion(aSubVersion);
// 
//                                 result.SetFirstRun(
// 					aRunRange.GetFirstRun());
//                                 result.SetLastRun(
// 					aRunRange.GetLastRun());
// 			}
//                 }
// 
// 	} else { // both version and subversion specified
// 
//                 while ((key = (TKey*) iter.Next())) { // loop on the keys
// 
// 			if (!KeyNameToId(key->GetName(), aRunRange, aVersion, aSubVersion)) continue;
//                         // aRunRange, aVersion, aSubVersion filled from filename
// 
// 			if (!aRunRange.Comprises(query.GetAliCDBRunRange())) continue;
//  			// aRunRange contains requested run!
// 
// 			if(query.GetVersion() != aVersion || query.GetSubVersion() != aSubVersion) continue;
// 			// aVersion and aSubVersion are requested version and subVersion!
// 
// 			if(result.GetVersion() == aVersion && result.GetSubVersion() == aSubVersion){
//               			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 kFALSE; 
// 			}
// 			result.SetVersion(aVersion);
// 		        result.SetSubVersion(aSubVersion);
// 			result.SetFirstRun(aRunRange.GetFirstRun());
// 			result.SetLastRun(aRunRange.GetLastRun());
// 
// 		}
// 	}
// 
// 	return kTRUE;
// }

//_____________________________________________________________________________
AliCDBId* AliCDBDump::GetId(const AliCDBId& query) {
  // look for filename matching query (called by GetEntry)


  AliCDBRunRange aRunRange; // the runRange got from filename
  Int_t aVersion, aSubVersion; // the version and subVersion got from filename

  TIter iter(gDirectory->GetListOfKeys());
  TKey* key;

  AliCDBId* result = new AliCDBId();
  result->SetPath(query.GetPath());

  if (!query.HasVersion()) { // neither version and subversion specified -> look for highest version and subVersion

    while ((key = (TKey*) iter.Next())) { // loop on the keys

      if (!KeyNameToId(key->GetName(), aRunRange, aVersion, aSubVersion)) continue;
      // aRunRange, aVersion, aSubVersion filled from filename

      if (!aRunRange.Comprises(query.GetAliCDBRunRange())) continue;
      // aRunRange contains requested run!

      if (result->GetVersion() < aVersion) {
        result->SetVersion(aVersion);
        result->SetSubVersion(aSubVersion);

        result->SetFirstRun(
            aRunRange.GetFirstRun());
        result->SetLastRun(
            aRunRange.GetLastRun());

      } else if (result->GetVersion() == aVersion
          && result->GetSubVersion()
          < aSubVersion) {

        result->SetSubVersion(aSubVersion);

        result->SetFirstRun(
            aRunRange.GetFirstRun());
        result->SetLastRun(
            aRunRange.GetLastRun());
      } else if (result->GetVersion() == aVersion
          && result->GetSubVersion() == aSubVersion){
        AliError(Form("More than one object valid for run %d, version %d_%d!",
              query.GetFirstRun(), aVersion, aSubVersion));
        delete result;
        return NULL;
      }
    }

  } else if (!query.HasSubVersion()) { // version specified but not subversion -> look for highest subVersion

    result->SetVersion(query.GetVersion());

    while ((key = (TKey*) iter.Next())) { // loop on the keys

      if (!KeyNameToId(key->GetName(), aRunRange, aVersion, aSubVersion)) continue;
      // aRunRange, aVersion, aSubVersion filled from filename

      if (!aRunRange.Comprises(query.GetAliCDBRunRange())) continue; 
      // aRunRange contains requested run!

      if(query.GetVersion() != aVersion) continue;
      // aVersion is requested version!

      if(result->GetSubVersion() == aSubVersion){
        AliError(Form("More than one object valid for run %d, version %d_%d!",
              query.GetFirstRun(), aVersion, aSubVersion));
        delete result;
        return NULL;
      }
      if( result->GetSubVersion() < aSubVersion) {

        result->SetSubVersion(aSubVersion);

        result->SetFirstRun(
            aRunRange.GetFirstRun());
        result->SetLastRun(
            aRunRange.GetLastRun());
      } 
    }

  } else { // both version and subversion specified

    while ((key = (TKey*) iter.Next())) { // loop on the keys

      if (!KeyNameToId(key->GetName(), aRunRange, aVersion, aSubVersion)) continue;
      // aRunRange, aVersion, aSubVersion filled from filename

      if (!aRunRange.Comprises(query.GetAliCDBRunRange())) continue;
      // aRunRange contains requested run!

      if(query.GetVersion() != aVersion || query.GetSubVersion() != aSubVersion) continue;
      // 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!",
              query.GetFirstRun(), aVersion, aSubVersion));
        delete result;
        return NULL;
      }
      result->SetVersion(aVersion);
      result->SetSubVersion(aSubVersion);
      result->SetFirstRun(aRunRange.GetFirstRun());
      result->SetLastRun(aRunRange.GetLastRun());

    }
  }

  return result;
}

//_____________________________________________________________________________
AliCDBEntry* AliCDBDump::GetEntry(const AliCDBId& queryId) {
  // get AliCDBEntry from the database

  TDirectory::TContext context(gDirectory, fFile);

  if (!(fFile && fFile->IsOpen())) {
    AliError("AliCDBDump storage is not initialized properly");
    return NULL;
  }

  if (!gDirectory->cd(queryId.GetPath())) {
    return NULL;
  }

  AliCDBId *dataId = GetEntryId(queryId);

  if (!dataId || !dataId->IsSpecified()) {
    if(dataId) delete dataId;
    return NULL;
  }

  TString keyname;
  if (!IdToKeyName(dataId->GetAliCDBRunRange(), dataId->GetVersion(),
        dataId->GetSubVersion(), keyname)) {
    AliDebug(2,Form("Bad ID encountered! Subnormal error!"));
    delete dataId;
    return NULL;
  }

  // get the only AliCDBEntry object from the file
  // the object in the file is an AliCDBEntry entry named keyname
  // keyName = Run#firstRun_#lastRun_v#version_s#subVersion

  TObject* anObject = gDirectory->Get(keyname);
  if (!anObject) {
    AliDebug(2,Form("Bad storage data: NULL entry object!"));
    delete dataId;
    return NULL;
  } 

  if (AliCDBEntry::Class() != anObject->IsA()) {
    AliDebug(2,Form("Bad storage data: Invalid entry object!"));
    delete dataId;
    return NULL;
  }

  ((AliCDBEntry*) anObject)->SetLastStorage("dump");

  delete dataId;
  return (AliCDBEntry*) anObject;
}

//_____________________________________________________________________________
AliCDBId* AliCDBDump::GetEntryId(const AliCDBId& queryId) {
  // get AliCDBEntry from the database

  TDirectory::TContext context(gDirectory, fFile);

  if (!(fFile && fFile->IsOpen())) {
    AliError("AliCDBDump storage is not initialized properly");
    return NULL;
  }

  if (!gDirectory->cd(queryId.GetPath())) {
    return NULL;
  }

  AliCDBId* dataId = 0;

  // 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
    AliCDBId selectedId(queryId);
    GetSelection(&selectedId);
    dataId = GetId(queryId);
  } else {
    dataId = GetId(queryId);
  }

  if (dataId && !dataId->IsSpecified()) {
    delete dataId;
    return NULL;
  }

  return dataId;
}

//_____________________________________________________________________________
void AliCDBDump::GetEntriesForLevel0(const AliCDBId& queryId, TList* result) {
  // multiple request (AliCDBStorage::GetAll)

  TDirectory* saveDir = gDirectory;

  TIter iter(gDirectory->GetListOfKeys());
  TKey* key;

  while ((key = (TKey*) iter.Next())) {

    TString keyNameStr(key->GetName());
    if (queryId.GetAliCDBPath().Level1Comprises(keyNameStr)) {
      gDirectory->cd(keyNameStr);
      GetEntriesForLevel1(queryId, result);

      saveDir->cd();
    }
  }
}

//_____________________________________________________________________________
void AliCDBDump::GetEntriesForLevel1(const AliCDBId& queryId, TList* result) {
  // multiple request (AliCDBStorage::GetAll)

  TIter iter(gDirectory->GetListOfKeys());
  TKey* key;

  TDirectory* level0Dir = (TDirectory*) gDirectory->GetMother();

  while ((key = (TKey*) iter.Next())) {

    TString keyNameStr(key->GetName());
    if (queryId.GetAliCDBPath().Level2Comprises(keyNameStr)) {

      AliCDBPath aPath(level0Dir->GetName(), 
          gDirectory->GetName(), keyNameStr);
      AliCDBId anId(aPath, queryId.GetAliCDBRunRange(), 
          queryId.GetVersion(), -1);

      AliCDBEntry* anEntry = GetEntry(anId);
      if (anEntry) {
        result->Add(anEntry);
      }

    }
  }

}


//_____________________________________________________________________________
TList* AliCDBDump::GetEntries(const AliCDBId& queryId) {
  // multiple request (AliCDBStorage::GetAll)

  TDirectory::TContext context(gDirectory, fFile);

  if (!(fFile && fFile->IsOpen())) {
    AliError("AliCDBDump storage is not initialized properly");
    return NULL;
  }

  TList* result = new TList();
  result->SetOwner();

  TIter iter(gDirectory->GetListOfKeys());
  TKey* key;

  while ((key = (TKey*) iter.Next())) {

    TString keyNameStr(key->GetName());
    if (queryId.GetAliCDBPath().Level0Comprises(keyNameStr)) {
      gDirectory->cd(keyNameStr);
      GetEntriesForLevel0(queryId, result);

      fFile->cd();
    }
  }

  return result;
}

//_____________________________________________________________________________
Bool_t AliCDBDump::PutEntry(AliCDBEntry* entry, const char* mirrors) {
  // put an AliCDBEntry object into the database

  TDirectory::TContext context(gDirectory, fFile);

  if (!(fFile && fFile->IsOpen())) {
    AliError("AliCDBDump storage is not initialized properly");
    return kFALSE;
  }

  if (fReadOnly) {
    AliError("AliCDBDump storage is read only!");
    return kFALSE;
  }

  TString mirrorsString(mirrors);
  if(!mirrorsString.IsNull())
    AliWarning("AliCDBLocal storage cannot take mirror SEs into account. They will be ignored.");

  AliCDBId& id = entry->GetId();

  if (!gDirectory->cd(id.GetPath())) {
    if (!MkDir(id.GetPath())) {
      AliError(Form("Can't open directory <%s>!", 
            id.GetPath().Data()));
      return kFALSE;
    }
  }

  // set version and subVersion for the entry to be stored
  if (!PrepareId(id)) {
    return kFALSE;		
  }

  // build keyname from entry's id
  TString keyname;
  if (!IdToKeyName(id.GetAliCDBRunRange(), id.GetVersion(), id.GetSubVersion(), keyname)) {
    AliError("Invalid ID encountered! Subnormal error!");
    return kFALSE;
  }	

  // write object (key name: Run#firstRun_#lastRun_v#version_s#subVersion)
  Bool_t result = gDirectory->WriteTObject(entry, keyname);
  if (!result) {
    AliError(Form("Can't write entry to file: %s",
          fFile->GetName()));
  }

  if(result) {
    AliInfo(Form("CDB object stored into file %s",fFile->GetName()));
    AliInfo(Form("TDirectory/key name: %s/%s",id.GetPath().Data(),keyname.Data()));
  }

  return result;
}
//_____________________________________________________________________________
TList* AliCDBDump::GetIdListFromFile(const char* fileName){

  TString turl(fileName);
  if (turl[0] != '/') {
    turl.Prepend(TString(gSystem->WorkingDirectory()) + '/');
  }
  TFile *file = TFile::Open(turl);
  if (!file) {
    AliError(Form("Can't open selection file <%s>!", turl.Data()));
    return NULL;
  }
  file->cd();

  TList *list = new TList();
  list->SetOwner();
  int i=0;
  TString keycycle;

  AliCDBId *id;
  while(1){
    i++;
    keycycle = "AliCDBId;";
    keycycle+=i;

    id = (AliCDBId*) file->Get(keycycle);
    if(!id) break;
    list->AddFirst(id);
  }
  file->Close(); delete file; file=0;	
  return list;
}

//_____________________________________________________________________________
Bool_t AliCDBDump::Contains(const char* path) const{
  // check for path in storage

  TDirectory::TContext context(gDirectory, fFile);
  if (!(fFile && fFile->IsOpen())) {
    AliError("AliCDBDump storage is not initialized properly");
    return kFALSE;
  }

  return gDirectory->cd(path);

}

//_____________________________________________________________________________
void AliCDBDump::QueryValidFiles()
{
  // Query the CDB for files valid for AliCDBStorage::fRun
  // fills list fValidFileIds with AliCDBId objects created from file name

  AliError("Not yet (and maybe never) implemented");
}

//_____________________________________________________________________________
Bool_t AliCDBDump::IdToFilename(const AliCDBId& /*id*/, TString& /*filename*/) const {
  // build file name from AliCDBId (path, run range, version) and fDBFolder

  AliError("Not implemented");
  return kFALSE;
}


//_____________________________________________________________________________
void AliCDBDump::SetRetry(Int_t /* nretry */, Int_t /* initsec */) {

  // Function to set the exponential retry for putting entries in the OCDB

  AliInfo("This function sets the exponential retry for putting entries in the OCDB - to be used ONLY for AliCDBGrid --> returning without doing anything");
  return;
} 

/////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                             //
// AliCDBDump factory  			                                                       //
//                                                                                             //
/////////////////////////////////////////////////////////////////////////////////////////////////

ClassImp(AliCDBDumpFactory)

  //_____________________________________________________________________________
  Bool_t AliCDBDumpFactory::Validate(const char* dbString) {
    // check if the string is valid dump URI

    TRegexp dbPattern("^dump://.+$");

    return TString(dbString).Contains(dbPattern);
  }

//_____________________________________________________________________________
AliCDBParam* AliCDBDumpFactory::CreateParameter(const char* dbString) {
  // create AliCDBDumpParam class from the URI string

  if (!Validate(dbString)) {
    return NULL;
  }

  TString pathname(dbString + sizeof("dump://") - 1);

  Bool_t readOnly;

  if (pathname.Contains(TRegexp(";ReadOnly$"))) {
    pathname.Resize(pathname.Length() - sizeof(";ReadOnly") + 1);
    readOnly = kTRUE;
  } else {
    readOnly = kFALSE;
  }

  gSystem->ExpandPathName(pathname);

  if (pathname[0] != '/') {
    pathname.Prepend(TString(gSystem->WorkingDirectory()) + '/');
  }

  return new AliCDBDumpParam(pathname, readOnly);
}

//_____________________________________________________________________________
AliCDBStorage* AliCDBDumpFactory::Create(const AliCDBParam* param) {
  // create AliCDBDump storage instance from parameters

  if (AliCDBDumpParam::Class() == param->IsA()) {

    const AliCDBDumpParam* dumpParam = 
      (const AliCDBDumpParam*) param;

    return new AliCDBDump(dumpParam->GetPath(),
        dumpParam->IsReadOnly());
  }

  return NULL;
}

/////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                             //
// AliCDBDump parameter class  			                                               //
//                                                                                             //
/////////////////////////////////////////////////////////////////////////////////////////////////

ClassImp(AliCDBDumpParam)

  //_____________________________________________________________________________
  AliCDBDumpParam::AliCDBDumpParam():
    fDBPath(), fReadOnly(kFALSE)
{
  // default constructor

}

//_____________________________________________________________________________
AliCDBDumpParam::AliCDBDumpParam(const char* dbPath, Bool_t readOnly):
  fDBPath(dbPath), fReadOnly(readOnly)
{
  // constructor

  TString uri;
  uri += "dump://";
  uri += dbPath;

  if (fReadOnly) {
    uri += ";ReadOnly";
  }

  SetURI(uri);
  SetType("dump");
}

//_____________________________________________________________________________
AliCDBDumpParam::~AliCDBDumpParam() {
  // destructor

}

//_____________________________________________________________________________
AliCDBParam* AliCDBDumpParam::CloneParam() const {
  // clone parameter

  return new AliCDBDumpParam(fDBPath, fReadOnly);
}

//_____________________________________________________________________________
ULong_t AliCDBDumpParam::Hash() const {
  // return Hash function

  return fDBPath.Hash();
}

//_____________________________________________________________________________
Bool_t AliCDBDumpParam::IsEqual(const TObject* obj) const {
  // check if this object is equal to AliCDBParam obj

  if (this == obj) {
    return kTRUE;
  }

  if (AliCDBDumpParam::Class() != obj->IsA()) {
    return kFALSE;
  }

  AliCDBDumpParam* other = (AliCDBDumpParam*) obj;

  return fDBPath == other->fDBPath;
}
 AliCDBDump.cxx:1
 AliCDBDump.cxx:2
 AliCDBDump.cxx:3
 AliCDBDump.cxx:4
 AliCDBDump.cxx:5
 AliCDBDump.cxx:6
 AliCDBDump.cxx:7
 AliCDBDump.cxx:8
 AliCDBDump.cxx:9
 AliCDBDump.cxx:10
 AliCDBDump.cxx:11
 AliCDBDump.cxx:12
 AliCDBDump.cxx:13
 AliCDBDump.cxx:14
 AliCDBDump.cxx:15
 AliCDBDump.cxx:16
 AliCDBDump.cxx:17
 AliCDBDump.cxx:18
 AliCDBDump.cxx:19
 AliCDBDump.cxx:20
 AliCDBDump.cxx:21
 AliCDBDump.cxx:22
 AliCDBDump.cxx:23
 AliCDBDump.cxx:24
 AliCDBDump.cxx:25
 AliCDBDump.cxx:26
 AliCDBDump.cxx:27
 AliCDBDump.cxx:28
 AliCDBDump.cxx:29
 AliCDBDump.cxx:30
 AliCDBDump.cxx:31
 AliCDBDump.cxx:32
 AliCDBDump.cxx:33
 AliCDBDump.cxx:34
 AliCDBDump.cxx:35
 AliCDBDump.cxx:36
 AliCDBDump.cxx:37
 AliCDBDump.cxx:38
 AliCDBDump.cxx:39
 AliCDBDump.cxx:40
 AliCDBDump.cxx:41
 AliCDBDump.cxx:42
 AliCDBDump.cxx:43
 AliCDBDump.cxx:44
 AliCDBDump.cxx:45
 AliCDBDump.cxx:46
 AliCDBDump.cxx:47
 AliCDBDump.cxx:48
 AliCDBDump.cxx:49
 AliCDBDump.cxx:50
 AliCDBDump.cxx:51
 AliCDBDump.cxx:52
 AliCDBDump.cxx:53
 AliCDBDump.cxx:54
 AliCDBDump.cxx:55
 AliCDBDump.cxx:56
 AliCDBDump.cxx:57
 AliCDBDump.cxx:58
 AliCDBDump.cxx:59
 AliCDBDump.cxx:60
 AliCDBDump.cxx:61
 AliCDBDump.cxx:62
 AliCDBDump.cxx:63
 AliCDBDump.cxx:64
 AliCDBDump.cxx:65
 AliCDBDump.cxx:66
 AliCDBDump.cxx:67
 AliCDBDump.cxx:68
 AliCDBDump.cxx:69
 AliCDBDump.cxx:70
 AliCDBDump.cxx:71
 AliCDBDump.cxx:72
 AliCDBDump.cxx:73
 AliCDBDump.cxx:74
 AliCDBDump.cxx:75
 AliCDBDump.cxx:76
 AliCDBDump.cxx:77
 AliCDBDump.cxx:78
 AliCDBDump.cxx:79
 AliCDBDump.cxx:80
 AliCDBDump.cxx:81
 AliCDBDump.cxx:82
 AliCDBDump.cxx:83
 AliCDBDump.cxx:84
 AliCDBDump.cxx:85
 AliCDBDump.cxx:86
 AliCDBDump.cxx:87
 AliCDBDump.cxx:88
 AliCDBDump.cxx:89
 AliCDBDump.cxx:90
 AliCDBDump.cxx:91
 AliCDBDump.cxx:92
 AliCDBDump.cxx:93
 AliCDBDump.cxx:94
 AliCDBDump.cxx:95
 AliCDBDump.cxx:96
 AliCDBDump.cxx:97
 AliCDBDump.cxx:98
 AliCDBDump.cxx:99
 AliCDBDump.cxx:100
 AliCDBDump.cxx:101
 AliCDBDump.cxx:102
 AliCDBDump.cxx:103
 AliCDBDump.cxx:104
 AliCDBDump.cxx:105
 AliCDBDump.cxx:106
 AliCDBDump.cxx:107
 AliCDBDump.cxx:108
 AliCDBDump.cxx:109
 AliCDBDump.cxx:110
 AliCDBDump.cxx:111
 AliCDBDump.cxx:112
 AliCDBDump.cxx:113
 AliCDBDump.cxx:114
 AliCDBDump.cxx:115
 AliCDBDump.cxx:116
 AliCDBDump.cxx:117
 AliCDBDump.cxx:118
 AliCDBDump.cxx:119
 AliCDBDump.cxx:120
 AliCDBDump.cxx:121
 AliCDBDump.cxx:122
 AliCDBDump.cxx:123
 AliCDBDump.cxx:124
 AliCDBDump.cxx:125
 AliCDBDump.cxx:126
 AliCDBDump.cxx:127
 AliCDBDump.cxx:128
 AliCDBDump.cxx:129
 AliCDBDump.cxx:130
 AliCDBDump.cxx:131
 AliCDBDump.cxx:132
 AliCDBDump.cxx:133
 AliCDBDump.cxx:134
 AliCDBDump.cxx:135
 AliCDBDump.cxx:136
 AliCDBDump.cxx:137
 AliCDBDump.cxx:138
 AliCDBDump.cxx:139
 AliCDBDump.cxx:140
 AliCDBDump.cxx:141
 AliCDBDump.cxx:142
 AliCDBDump.cxx:143
 AliCDBDump.cxx:144
 AliCDBDump.cxx:145
 AliCDBDump.cxx:146
 AliCDBDump.cxx:147
 AliCDBDump.cxx:148
 AliCDBDump.cxx:149
 AliCDBDump.cxx:150
 AliCDBDump.cxx:151
 AliCDBDump.cxx:152
 AliCDBDump.cxx:153
 AliCDBDump.cxx:154
 AliCDBDump.cxx:155
 AliCDBDump.cxx:156
 AliCDBDump.cxx:157
 AliCDBDump.cxx:158
 AliCDBDump.cxx:159
 AliCDBDump.cxx:160
 AliCDBDump.cxx:161
 AliCDBDump.cxx:162
 AliCDBDump.cxx:163
 AliCDBDump.cxx:164
 AliCDBDump.cxx:165
 AliCDBDump.cxx:166
 AliCDBDump.cxx:167
 AliCDBDump.cxx:168
 AliCDBDump.cxx:169
 AliCDBDump.cxx:170
 AliCDBDump.cxx:171
 AliCDBDump.cxx:172
 AliCDBDump.cxx:173
 AliCDBDump.cxx:174
 AliCDBDump.cxx:175
 AliCDBDump.cxx:176
 AliCDBDump.cxx:177
 AliCDBDump.cxx:178
 AliCDBDump.cxx:179
 AliCDBDump.cxx:180
 AliCDBDump.cxx:181
 AliCDBDump.cxx:182
 AliCDBDump.cxx:183
 AliCDBDump.cxx:184
 AliCDBDump.cxx:185
 AliCDBDump.cxx:186
 AliCDBDump.cxx:187
 AliCDBDump.cxx:188
 AliCDBDump.cxx:189
 AliCDBDump.cxx:190
 AliCDBDump.cxx:191
 AliCDBDump.cxx:192
 AliCDBDump.cxx:193
 AliCDBDump.cxx:194
 AliCDBDump.cxx:195
 AliCDBDump.cxx:196
 AliCDBDump.cxx:197
 AliCDBDump.cxx:198
 AliCDBDump.cxx:199
 AliCDBDump.cxx:200
 AliCDBDump.cxx:201
 AliCDBDump.cxx:202
 AliCDBDump.cxx:203
 AliCDBDump.cxx:204
 AliCDBDump.cxx:205
 AliCDBDump.cxx:206
 AliCDBDump.cxx:207
 AliCDBDump.cxx:208
 AliCDBDump.cxx:209
 AliCDBDump.cxx:210
 AliCDBDump.cxx:211
 AliCDBDump.cxx:212
 AliCDBDump.cxx:213
 AliCDBDump.cxx:214
 AliCDBDump.cxx:215
 AliCDBDump.cxx:216
 AliCDBDump.cxx:217
 AliCDBDump.cxx:218
 AliCDBDump.cxx:219
 AliCDBDump.cxx:220
 AliCDBDump.cxx:221
 AliCDBDump.cxx:222
 AliCDBDump.cxx:223
 AliCDBDump.cxx:224
 AliCDBDump.cxx:225
 AliCDBDump.cxx:226
 AliCDBDump.cxx:227
 AliCDBDump.cxx:228
 AliCDBDump.cxx:229
 AliCDBDump.cxx:230
 AliCDBDump.cxx:231
 AliCDBDump.cxx:232
 AliCDBDump.cxx:233
 AliCDBDump.cxx:234
 AliCDBDump.cxx:235
 AliCDBDump.cxx:236
 AliCDBDump.cxx:237
 AliCDBDump.cxx:238
 AliCDBDump.cxx:239
 AliCDBDump.cxx:240
 AliCDBDump.cxx:241
 AliCDBDump.cxx:242
 AliCDBDump.cxx:243
 AliCDBDump.cxx:244
 AliCDBDump.cxx:245
 AliCDBDump.cxx:246
 AliCDBDump.cxx:247
 AliCDBDump.cxx:248
 AliCDBDump.cxx:249
 AliCDBDump.cxx:250
 AliCDBDump.cxx:251
 AliCDBDump.cxx:252
 AliCDBDump.cxx:253
 AliCDBDump.cxx:254
 AliCDBDump.cxx:255
 AliCDBDump.cxx:256
 AliCDBDump.cxx:257
 AliCDBDump.cxx:258
 AliCDBDump.cxx:259
 AliCDBDump.cxx:260
 AliCDBDump.cxx:261
 AliCDBDump.cxx:262
 AliCDBDump.cxx:263
 AliCDBDump.cxx:264
 AliCDBDump.cxx:265
 AliCDBDump.cxx:266
 AliCDBDump.cxx:267
 AliCDBDump.cxx:268
 AliCDBDump.cxx:269
 AliCDBDump.cxx:270
 AliCDBDump.cxx:271
 AliCDBDump.cxx:272
 AliCDBDump.cxx:273
 AliCDBDump.cxx:274
 AliCDBDump.cxx:275
 AliCDBDump.cxx:276
 AliCDBDump.cxx:277
 AliCDBDump.cxx:278
 AliCDBDump.cxx:279
 AliCDBDump.cxx:280
 AliCDBDump.cxx:281
 AliCDBDump.cxx:282
 AliCDBDump.cxx:283
 AliCDBDump.cxx:284
 AliCDBDump.cxx:285
 AliCDBDump.cxx:286
 AliCDBDump.cxx:287
 AliCDBDump.cxx:288
 AliCDBDump.cxx:289
 AliCDBDump.cxx:290
 AliCDBDump.cxx:291
 AliCDBDump.cxx:292
 AliCDBDump.cxx:293
 AliCDBDump.cxx:294
 AliCDBDump.cxx:295
 AliCDBDump.cxx:296
 AliCDBDump.cxx:297
 AliCDBDump.cxx:298
 AliCDBDump.cxx:299
 AliCDBDump.cxx:300
 AliCDBDump.cxx:301
 AliCDBDump.cxx:302
 AliCDBDump.cxx:303
 AliCDBDump.cxx:304
 AliCDBDump.cxx:305
 AliCDBDump.cxx:306
 AliCDBDump.cxx:307
 AliCDBDump.cxx:308
 AliCDBDump.cxx:309
 AliCDBDump.cxx:310
 AliCDBDump.cxx:311
 AliCDBDump.cxx:312
 AliCDBDump.cxx:313
 AliCDBDump.cxx:314
 AliCDBDump.cxx:315
 AliCDBDump.cxx:316
 AliCDBDump.cxx:317
 AliCDBDump.cxx:318
 AliCDBDump.cxx:319
 AliCDBDump.cxx:320
 AliCDBDump.cxx:321
 AliCDBDump.cxx:322
 AliCDBDump.cxx:323
 AliCDBDump.cxx:324
 AliCDBDump.cxx:325
 AliCDBDump.cxx:326
 AliCDBDump.cxx:327
 AliCDBDump.cxx:328
 AliCDBDump.cxx:329
 AliCDBDump.cxx:330
 AliCDBDump.cxx:331
 AliCDBDump.cxx:332
 AliCDBDump.cxx:333
 AliCDBDump.cxx:334
 AliCDBDump.cxx:335
 AliCDBDump.cxx:336
 AliCDBDump.cxx:337
 AliCDBDump.cxx:338
 AliCDBDump.cxx:339
 AliCDBDump.cxx:340
 AliCDBDump.cxx:341
 AliCDBDump.cxx:342
 AliCDBDump.cxx:343
 AliCDBDump.cxx:344
 AliCDBDump.cxx:345
 AliCDBDump.cxx:346
 AliCDBDump.cxx:347
 AliCDBDump.cxx:348
 AliCDBDump.cxx:349
 AliCDBDump.cxx:350
 AliCDBDump.cxx:351
 AliCDBDump.cxx:352
 AliCDBDump.cxx:353
 AliCDBDump.cxx:354
 AliCDBDump.cxx:355
 AliCDBDump.cxx:356
 AliCDBDump.cxx:357
 AliCDBDump.cxx:358
 AliCDBDump.cxx:359
 AliCDBDump.cxx:360
 AliCDBDump.cxx:361
 AliCDBDump.cxx:362
 AliCDBDump.cxx:363
 AliCDBDump.cxx:364
 AliCDBDump.cxx:365
 AliCDBDump.cxx:366
 AliCDBDump.cxx:367
 AliCDBDump.cxx:368
 AliCDBDump.cxx:369
 AliCDBDump.cxx:370
 AliCDBDump.cxx:371
 AliCDBDump.cxx:372
 AliCDBDump.cxx:373
 AliCDBDump.cxx:374
 AliCDBDump.cxx:375
 AliCDBDump.cxx:376
 AliCDBDump.cxx:377
 AliCDBDump.cxx:378
 AliCDBDump.cxx:379
 AliCDBDump.cxx:380
 AliCDBDump.cxx:381
 AliCDBDump.cxx:382
 AliCDBDump.cxx:383
 AliCDBDump.cxx:384
 AliCDBDump.cxx:385
 AliCDBDump.cxx:386
 AliCDBDump.cxx:387
 AliCDBDump.cxx:388
 AliCDBDump.cxx:389
 AliCDBDump.cxx:390
 AliCDBDump.cxx:391
 AliCDBDump.cxx:392
 AliCDBDump.cxx:393
 AliCDBDump.cxx:394
 AliCDBDump.cxx:395
 AliCDBDump.cxx:396
 AliCDBDump.cxx:397
 AliCDBDump.cxx:398
 AliCDBDump.cxx:399
 AliCDBDump.cxx:400
 AliCDBDump.cxx:401
 AliCDBDump.cxx:402
 AliCDBDump.cxx:403
 AliCDBDump.cxx:404
 AliCDBDump.cxx:405
 AliCDBDump.cxx:406
 AliCDBDump.cxx:407
 AliCDBDump.cxx:408
 AliCDBDump.cxx:409
 AliCDBDump.cxx:410
 AliCDBDump.cxx:411
 AliCDBDump.cxx:412
 AliCDBDump.cxx:413
 AliCDBDump.cxx:414
 AliCDBDump.cxx:415
 AliCDBDump.cxx:416
 AliCDBDump.cxx:417
 AliCDBDump.cxx:418
 AliCDBDump.cxx:419
 AliCDBDump.cxx:420
 AliCDBDump.cxx:421
 AliCDBDump.cxx:422
 AliCDBDump.cxx:423
 AliCDBDump.cxx:424
 AliCDBDump.cxx:425
 AliCDBDump.cxx:426
 AliCDBDump.cxx:427
 AliCDBDump.cxx:428
 AliCDBDump.cxx:429
 AliCDBDump.cxx:430
 AliCDBDump.cxx:431
 AliCDBDump.cxx:432
 AliCDBDump.cxx:433
 AliCDBDump.cxx:434
 AliCDBDump.cxx:435
 AliCDBDump.cxx:436
 AliCDBDump.cxx:437
 AliCDBDump.cxx:438
 AliCDBDump.cxx:439
 AliCDBDump.cxx:440
 AliCDBDump.cxx:441
 AliCDBDump.cxx:442
 AliCDBDump.cxx:443
 AliCDBDump.cxx:444
 AliCDBDump.cxx:445
 AliCDBDump.cxx:446
 AliCDBDump.cxx:447
 AliCDBDump.cxx:448
 AliCDBDump.cxx:449
 AliCDBDump.cxx:450
 AliCDBDump.cxx:451
 AliCDBDump.cxx:452
 AliCDBDump.cxx:453
 AliCDBDump.cxx:454
 AliCDBDump.cxx:455
 AliCDBDump.cxx:456
 AliCDBDump.cxx:457
 AliCDBDump.cxx:458
 AliCDBDump.cxx:459
 AliCDBDump.cxx:460
 AliCDBDump.cxx:461
 AliCDBDump.cxx:462
 AliCDBDump.cxx:463
 AliCDBDump.cxx:464
 AliCDBDump.cxx:465
 AliCDBDump.cxx:466
 AliCDBDump.cxx:467
 AliCDBDump.cxx:468
 AliCDBDump.cxx:469
 AliCDBDump.cxx:470
 AliCDBDump.cxx:471
 AliCDBDump.cxx:472
 AliCDBDump.cxx:473
 AliCDBDump.cxx:474
 AliCDBDump.cxx:475
 AliCDBDump.cxx:476
 AliCDBDump.cxx:477
 AliCDBDump.cxx:478
 AliCDBDump.cxx:479
 AliCDBDump.cxx:480
 AliCDBDump.cxx:481
 AliCDBDump.cxx:482
 AliCDBDump.cxx:483
 AliCDBDump.cxx:484
 AliCDBDump.cxx:485
 AliCDBDump.cxx:486
 AliCDBDump.cxx:487
 AliCDBDump.cxx:488
 AliCDBDump.cxx:489
 AliCDBDump.cxx:490
 AliCDBDump.cxx:491
 AliCDBDump.cxx:492
 AliCDBDump.cxx:493
 AliCDBDump.cxx:494
 AliCDBDump.cxx:495
 AliCDBDump.cxx:496
 AliCDBDump.cxx:497
 AliCDBDump.cxx:498
 AliCDBDump.cxx:499
 AliCDBDump.cxx:500
 AliCDBDump.cxx:501
 AliCDBDump.cxx:502
 AliCDBDump.cxx:503
 AliCDBDump.cxx:504
 AliCDBDump.cxx:505
 AliCDBDump.cxx:506
 AliCDBDump.cxx:507
 AliCDBDump.cxx:508
 AliCDBDump.cxx:509
 AliCDBDump.cxx:510
 AliCDBDump.cxx:511
 AliCDBDump.cxx:512
 AliCDBDump.cxx:513
 AliCDBDump.cxx:514
 AliCDBDump.cxx:515
 AliCDBDump.cxx:516
 AliCDBDump.cxx:517
 AliCDBDump.cxx:518
 AliCDBDump.cxx:519
 AliCDBDump.cxx:520
 AliCDBDump.cxx:521
 AliCDBDump.cxx:522
 AliCDBDump.cxx:523
 AliCDBDump.cxx:524
 AliCDBDump.cxx:525
 AliCDBDump.cxx:526
 AliCDBDump.cxx:527
 AliCDBDump.cxx:528
 AliCDBDump.cxx:529
 AliCDBDump.cxx:530
 AliCDBDump.cxx:531
 AliCDBDump.cxx:532
 AliCDBDump.cxx:533
 AliCDBDump.cxx:534
 AliCDBDump.cxx:535
 AliCDBDump.cxx:536
 AliCDBDump.cxx:537
 AliCDBDump.cxx:538
 AliCDBDump.cxx:539
 AliCDBDump.cxx:540
 AliCDBDump.cxx:541
 AliCDBDump.cxx:542
 AliCDBDump.cxx:543
 AliCDBDump.cxx:544
 AliCDBDump.cxx:545
 AliCDBDump.cxx:546
 AliCDBDump.cxx:547
 AliCDBDump.cxx:548
 AliCDBDump.cxx:549
 AliCDBDump.cxx:550
 AliCDBDump.cxx:551
 AliCDBDump.cxx:552
 AliCDBDump.cxx:553
 AliCDBDump.cxx:554
 AliCDBDump.cxx:555
 AliCDBDump.cxx:556
 AliCDBDump.cxx:557
 AliCDBDump.cxx:558
 AliCDBDump.cxx:559
 AliCDBDump.cxx:560
 AliCDBDump.cxx:561
 AliCDBDump.cxx:562
 AliCDBDump.cxx:563
 AliCDBDump.cxx:564
 AliCDBDump.cxx:565
 AliCDBDump.cxx:566
 AliCDBDump.cxx:567
 AliCDBDump.cxx:568
 AliCDBDump.cxx:569
 AliCDBDump.cxx:570
 AliCDBDump.cxx:571
 AliCDBDump.cxx:572
 AliCDBDump.cxx:573
 AliCDBDump.cxx:574
 AliCDBDump.cxx:575
 AliCDBDump.cxx:576
 AliCDBDump.cxx:577
 AliCDBDump.cxx:578
 AliCDBDump.cxx:579
 AliCDBDump.cxx:580
 AliCDBDump.cxx:581
 AliCDBDump.cxx:582
 AliCDBDump.cxx:583
 AliCDBDump.cxx:584
 AliCDBDump.cxx:585
 AliCDBDump.cxx:586
 AliCDBDump.cxx:587
 AliCDBDump.cxx:588
 AliCDBDump.cxx:589
 AliCDBDump.cxx:590
 AliCDBDump.cxx:591
 AliCDBDump.cxx:592
 AliCDBDump.cxx:593
 AliCDBDump.cxx:594
 AliCDBDump.cxx:595
 AliCDBDump.cxx:596
 AliCDBDump.cxx:597
 AliCDBDump.cxx:598
 AliCDBDump.cxx:599
 AliCDBDump.cxx:600
 AliCDBDump.cxx:601
 AliCDBDump.cxx:602
 AliCDBDump.cxx:603
 AliCDBDump.cxx:604
 AliCDBDump.cxx:605
 AliCDBDump.cxx:606
 AliCDBDump.cxx:607
 AliCDBDump.cxx:608
 AliCDBDump.cxx:609
 AliCDBDump.cxx:610
 AliCDBDump.cxx:611
 AliCDBDump.cxx:612
 AliCDBDump.cxx:613
 AliCDBDump.cxx:614
 AliCDBDump.cxx:615
 AliCDBDump.cxx:616
 AliCDBDump.cxx:617
 AliCDBDump.cxx:618
 AliCDBDump.cxx:619
 AliCDBDump.cxx:620
 AliCDBDump.cxx:621
 AliCDBDump.cxx:622
 AliCDBDump.cxx:623
 AliCDBDump.cxx:624
 AliCDBDump.cxx:625
 AliCDBDump.cxx:626
 AliCDBDump.cxx:627
 AliCDBDump.cxx:628
 AliCDBDump.cxx:629
 AliCDBDump.cxx:630
 AliCDBDump.cxx:631
 AliCDBDump.cxx:632
 AliCDBDump.cxx:633
 AliCDBDump.cxx:634
 AliCDBDump.cxx:635
 AliCDBDump.cxx:636
 AliCDBDump.cxx:637
 AliCDBDump.cxx:638
 AliCDBDump.cxx:639
 AliCDBDump.cxx:640
 AliCDBDump.cxx:641
 AliCDBDump.cxx:642
 AliCDBDump.cxx:643
 AliCDBDump.cxx:644
 AliCDBDump.cxx:645
 AliCDBDump.cxx:646
 AliCDBDump.cxx:647
 AliCDBDump.cxx:648
 AliCDBDump.cxx:649
 AliCDBDump.cxx:650
 AliCDBDump.cxx:651
 AliCDBDump.cxx:652
 AliCDBDump.cxx:653
 AliCDBDump.cxx:654
 AliCDBDump.cxx:655
 AliCDBDump.cxx:656
 AliCDBDump.cxx:657
 AliCDBDump.cxx:658
 AliCDBDump.cxx:659
 AliCDBDump.cxx:660
 AliCDBDump.cxx:661
 AliCDBDump.cxx:662
 AliCDBDump.cxx:663
 AliCDBDump.cxx:664
 AliCDBDump.cxx:665
 AliCDBDump.cxx:666
 AliCDBDump.cxx:667
 AliCDBDump.cxx:668
 AliCDBDump.cxx:669
 AliCDBDump.cxx:670
 AliCDBDump.cxx:671
 AliCDBDump.cxx:672
 AliCDBDump.cxx:673
 AliCDBDump.cxx:674
 AliCDBDump.cxx:675
 AliCDBDump.cxx:676
 AliCDBDump.cxx:677
 AliCDBDump.cxx:678
 AliCDBDump.cxx:679
 AliCDBDump.cxx:680
 AliCDBDump.cxx:681
 AliCDBDump.cxx:682
 AliCDBDump.cxx:683
 AliCDBDump.cxx:684
 AliCDBDump.cxx:685
 AliCDBDump.cxx:686
 AliCDBDump.cxx:687
 AliCDBDump.cxx:688
 AliCDBDump.cxx:689
 AliCDBDump.cxx:690
 AliCDBDump.cxx:691
 AliCDBDump.cxx:692
 AliCDBDump.cxx:693
 AliCDBDump.cxx:694
 AliCDBDump.cxx:695
 AliCDBDump.cxx:696
 AliCDBDump.cxx:697
 AliCDBDump.cxx:698
 AliCDBDump.cxx:699
 AliCDBDump.cxx:700
 AliCDBDump.cxx:701
 AliCDBDump.cxx:702
 AliCDBDump.cxx:703
 AliCDBDump.cxx:704
 AliCDBDump.cxx:705
 AliCDBDump.cxx:706
 AliCDBDump.cxx:707
 AliCDBDump.cxx:708
 AliCDBDump.cxx:709
 AliCDBDump.cxx:710
 AliCDBDump.cxx:711
 AliCDBDump.cxx:712
 AliCDBDump.cxx:713
 AliCDBDump.cxx:714
 AliCDBDump.cxx:715
 AliCDBDump.cxx:716
 AliCDBDump.cxx:717
 AliCDBDump.cxx:718
 AliCDBDump.cxx:719
 AliCDBDump.cxx:720
 AliCDBDump.cxx:721
 AliCDBDump.cxx:722
 AliCDBDump.cxx:723
 AliCDBDump.cxx:724
 AliCDBDump.cxx:725
 AliCDBDump.cxx:726
 AliCDBDump.cxx:727
 AliCDBDump.cxx:728
 AliCDBDump.cxx:729
 AliCDBDump.cxx:730
 AliCDBDump.cxx:731
 AliCDBDump.cxx:732
 AliCDBDump.cxx:733
 AliCDBDump.cxx:734
 AliCDBDump.cxx:735
 AliCDBDump.cxx:736
 AliCDBDump.cxx:737
 AliCDBDump.cxx:738
 AliCDBDump.cxx:739
 AliCDBDump.cxx:740
 AliCDBDump.cxx:741
 AliCDBDump.cxx:742
 AliCDBDump.cxx:743
 AliCDBDump.cxx:744
 AliCDBDump.cxx:745
 AliCDBDump.cxx:746
 AliCDBDump.cxx:747
 AliCDBDump.cxx:748
 AliCDBDump.cxx:749
 AliCDBDump.cxx:750
 AliCDBDump.cxx:751
 AliCDBDump.cxx:752
 AliCDBDump.cxx:753
 AliCDBDump.cxx:754
 AliCDBDump.cxx:755
 AliCDBDump.cxx:756
 AliCDBDump.cxx:757
 AliCDBDump.cxx:758
 AliCDBDump.cxx:759
 AliCDBDump.cxx:760
 AliCDBDump.cxx:761
 AliCDBDump.cxx:762
 AliCDBDump.cxx:763
 AliCDBDump.cxx:764
 AliCDBDump.cxx:765
 AliCDBDump.cxx:766
 AliCDBDump.cxx:767
 AliCDBDump.cxx:768
 AliCDBDump.cxx:769
 AliCDBDump.cxx:770
 AliCDBDump.cxx:771
 AliCDBDump.cxx:772
 AliCDBDump.cxx:773
 AliCDBDump.cxx:774
 AliCDBDump.cxx:775
 AliCDBDump.cxx:776
 AliCDBDump.cxx:777
 AliCDBDump.cxx:778
 AliCDBDump.cxx:779
 AliCDBDump.cxx:780
 AliCDBDump.cxx:781
 AliCDBDump.cxx:782
 AliCDBDump.cxx:783
 AliCDBDump.cxx:784
 AliCDBDump.cxx:785
 AliCDBDump.cxx:786
 AliCDBDump.cxx:787
 AliCDBDump.cxx:788
 AliCDBDump.cxx:789
 AliCDBDump.cxx:790
 AliCDBDump.cxx:791
 AliCDBDump.cxx:792
 AliCDBDump.cxx:793
 AliCDBDump.cxx:794
 AliCDBDump.cxx:795
 AliCDBDump.cxx:796
 AliCDBDump.cxx:797
 AliCDBDump.cxx:798
 AliCDBDump.cxx:799
 AliCDBDump.cxx:800
 AliCDBDump.cxx:801
 AliCDBDump.cxx:802
 AliCDBDump.cxx:803
 AliCDBDump.cxx:804
 AliCDBDump.cxx:805
 AliCDBDump.cxx:806
 AliCDBDump.cxx:807
 AliCDBDump.cxx:808
 AliCDBDump.cxx:809
 AliCDBDump.cxx:810
 AliCDBDump.cxx:811
 AliCDBDump.cxx:812
 AliCDBDump.cxx:813
 AliCDBDump.cxx:814
 AliCDBDump.cxx:815
 AliCDBDump.cxx:816
 AliCDBDump.cxx:817
 AliCDBDump.cxx:818
 AliCDBDump.cxx:819
 AliCDBDump.cxx:820
 AliCDBDump.cxx:821
 AliCDBDump.cxx:822
 AliCDBDump.cxx:823
 AliCDBDump.cxx:824
 AliCDBDump.cxx:825
 AliCDBDump.cxx:826
 AliCDBDump.cxx:827
 AliCDBDump.cxx:828
 AliCDBDump.cxx:829
 AliCDBDump.cxx:830
 AliCDBDump.cxx:831
 AliCDBDump.cxx:832
 AliCDBDump.cxx:833
 AliCDBDump.cxx:834
 AliCDBDump.cxx:835
 AliCDBDump.cxx:836
 AliCDBDump.cxx:837
 AliCDBDump.cxx:838
 AliCDBDump.cxx:839
 AliCDBDump.cxx:840
 AliCDBDump.cxx:841
 AliCDBDump.cxx:842
 AliCDBDump.cxx:843
 AliCDBDump.cxx:844
 AliCDBDump.cxx:845
 AliCDBDump.cxx:846
 AliCDBDump.cxx:847
 AliCDBDump.cxx:848
 AliCDBDump.cxx:849
 AliCDBDump.cxx:850
 AliCDBDump.cxx:851
 AliCDBDump.cxx:852
 AliCDBDump.cxx:853
 AliCDBDump.cxx:854
 AliCDBDump.cxx:855
 AliCDBDump.cxx:856
 AliCDBDump.cxx:857
 AliCDBDump.cxx:858
 AliCDBDump.cxx:859
 AliCDBDump.cxx:860
 AliCDBDump.cxx:861
 AliCDBDump.cxx:862
 AliCDBDump.cxx:863
 AliCDBDump.cxx:864
 AliCDBDump.cxx:865
 AliCDBDump.cxx:866
 AliCDBDump.cxx:867
 AliCDBDump.cxx:868
 AliCDBDump.cxx:869
 AliCDBDump.cxx:870
 AliCDBDump.cxx:871
 AliCDBDump.cxx:872
 AliCDBDump.cxx:873
 AliCDBDump.cxx:874
 AliCDBDump.cxx:875
 AliCDBDump.cxx:876
 AliCDBDump.cxx:877
 AliCDBDump.cxx:878
 AliCDBDump.cxx:879
 AliCDBDump.cxx:880
 AliCDBDump.cxx:881
 AliCDBDump.cxx:882
 AliCDBDump.cxx:883
 AliCDBDump.cxx:884
 AliCDBDump.cxx:885
 AliCDBDump.cxx:886
 AliCDBDump.cxx:887
 AliCDBDump.cxx:888
 AliCDBDump.cxx:889
 AliCDBDump.cxx:890
 AliCDBDump.cxx:891
 AliCDBDump.cxx:892
 AliCDBDump.cxx:893
 AliCDBDump.cxx:894
 AliCDBDump.cxx:895
 AliCDBDump.cxx:896
 AliCDBDump.cxx:897
 AliCDBDump.cxx:898
 AliCDBDump.cxx:899
 AliCDBDump.cxx:900
 AliCDBDump.cxx:901
 AliCDBDump.cxx:902
 AliCDBDump.cxx:903
 AliCDBDump.cxx:904
 AliCDBDump.cxx:905
 AliCDBDump.cxx:906
 AliCDBDump.cxx:907
 AliCDBDump.cxx:908
 AliCDBDump.cxx:909
 AliCDBDump.cxx:910
 AliCDBDump.cxx:911