ROOT logo
#ifndef ALI_CDB_ID_H
#define ALI_CDB_ID_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/////////////////////////////////////////////////////////////////////
//                                                                 //
//  class AliCDBId						   //
//  Identity of an object stored into a database:  		   //
//  path, run validity range, version, subVersion 		   //
//                                                                 //
/////////////////////////////////////////////////////////////////////

#include "AliCDBPath.h"
#include "AliCDBRunRange.h"

#include <TObject.h>

class AliCDBId: public TObject {

  public:

    AliCDBId();

    AliCDBId(const AliCDBId& other);

    AliCDBId(const AliCDBPath& path, const AliCDBRunRange& runRange,
        Int_t version = -1, Int_t subVersion = -1);

    AliCDBId(const AliCDBPath& path, 
        Int_t firstRun , Int_t lastRun , Int_t verison = -1, 
        Int_t subVersion = -1); 

    static AliCDBId* MakeFromString(const TString& idString); 		

    virtual ~AliCDBId();

    const AliCDBPath& 	GetAliCDBPath() const {return fPath;}
    const TString& 		GetPath() const {return fPath.GetPath();}
    const TString 		GetPathLevel(Int_t i) const {return fPath.GetLevel(i);}
    Bool_t 			IsWildcard() const {return fPath.IsWildcard();}

    void 	SetPath(const char* path) {fPath.SetPath(path);}

    const 		AliCDBRunRange& GetAliCDBRunRange() const {return fRunRange;}
    AliCDBRunRange& GetAliCDBRunRange() {return fRunRange;}
    Int_t 		GetFirstRun() const {return fRunRange.GetFirstRun();}
    Int_t 		GetLastRun() const {return fRunRange.GetLastRun();}
    void 		SetFirstRun(Int_t firstRun) {fRunRange.SetFirstRun(firstRun);}
    void 		SetLastRun(Int_t lastRun) {fRunRange.SetLastRun(lastRun);}
    void 		SetRunRange(Int_t firstRun, Int_t lastRun)
    {fRunRange.SetRunRange(firstRun, lastRun);}


    Bool_t 	IsAnyRange() const {return fRunRange.IsAnyRange();}


    Int_t 	GetVersion() const {return fVersion;}
    Int_t 	GetSubVersion() const {return fSubVersion;}
    void 	SetVersion(Int_t version) {fVersion = version;}
    void 	SetSubVersion(Int_t subVersion) {fSubVersion = subVersion;}

    const TString& 	GetLastStorage() const {return fLastStorage;}
    void 		SetLastStorage(TString& lastStorage){fLastStorage = lastStorage;}

    Bool_t IsValid() const; 
    Bool_t IsSpecified() const {return !(IsWildcard() || IsAnyRange());}

    Bool_t HasVersion() const {return fVersion >= 0;}
    Bool_t HasSubVersion() const {return fSubVersion >= 0;}

    Bool_t Comprises(const AliCDBId& other) const
    {return fPath.Comprises(other.fPath)
      && fRunRange.Comprises(other.fRunRange);}

    virtual Bool_t IsEqual(const TObject *obj) const;

    TString ToString() const;
    void Print(Option_t* option="") const;
    virtual Int_t Compare(const TObject* obj) const;
    virtual Bool_t IsSortable() const;
    virtual const char  *GetName() const { return fPath.GetPath().Data(); }
  private:

    AliCDBPath fPath;		// path	
    AliCDBRunRange fRunRange;	// run range
    Int_t fVersion;			// version
    Int_t fSubVersion;		// subversion
    TString fLastStorage;		// previous storage place (new, grid, local, dump)

    ClassDef(AliCDBId, 1);
};

#endif
 AliCDBId.h:1
 AliCDBId.h:2
 AliCDBId.h:3
 AliCDBId.h:4
 AliCDBId.h:5
 AliCDBId.h:6
 AliCDBId.h:7
 AliCDBId.h:8
 AliCDBId.h:9
 AliCDBId.h:10
 AliCDBId.h:11
 AliCDBId.h:12
 AliCDBId.h:13
 AliCDBId.h:14
 AliCDBId.h:15
 AliCDBId.h:16
 AliCDBId.h:17
 AliCDBId.h:18
 AliCDBId.h:19
 AliCDBId.h:20
 AliCDBId.h:21
 AliCDBId.h:22
 AliCDBId.h:23
 AliCDBId.h:24
 AliCDBId.h:25
 AliCDBId.h:26
 AliCDBId.h:27
 AliCDBId.h:28
 AliCDBId.h:29
 AliCDBId.h:30
 AliCDBId.h:31
 AliCDBId.h:32
 AliCDBId.h:33
 AliCDBId.h:34
 AliCDBId.h:35
 AliCDBId.h:36
 AliCDBId.h:37
 AliCDBId.h:38
 AliCDBId.h:39
 AliCDBId.h:40
 AliCDBId.h:41
 AliCDBId.h:42
 AliCDBId.h:43
 AliCDBId.h:44
 AliCDBId.h:45
 AliCDBId.h:46
 AliCDBId.h:47
 AliCDBId.h:48
 AliCDBId.h:49
 AliCDBId.h:50
 AliCDBId.h:51
 AliCDBId.h:52
 AliCDBId.h:53
 AliCDBId.h:54
 AliCDBId.h:55
 AliCDBId.h:56
 AliCDBId.h:57
 AliCDBId.h:58
 AliCDBId.h:59
 AliCDBId.h:60
 AliCDBId.h:61
 AliCDBId.h:62
 AliCDBId.h:63
 AliCDBId.h:64
 AliCDBId.h:65
 AliCDBId.h:66
 AliCDBId.h:67
 AliCDBId.h:68
 AliCDBId.h:69
 AliCDBId.h:70
 AliCDBId.h:71
 AliCDBId.h:72
 AliCDBId.h:73
 AliCDBId.h:74
 AliCDBId.h:75
 AliCDBId.h:76
 AliCDBId.h:77
 AliCDBId.h:78
 AliCDBId.h:79
 AliCDBId.h:80
 AliCDBId.h:81
 AliCDBId.h:82
 AliCDBId.h:83
 AliCDBId.h:84
 AliCDBId.h:85
 AliCDBId.h:86
 AliCDBId.h:87
 AliCDBId.h:88
 AliCDBId.h:89
 AliCDBId.h:90
 AliCDBId.h:91
 AliCDBId.h:92
 AliCDBId.h:93
 AliCDBId.h:94
 AliCDBId.h:95