| # Gaudi Framework, version v22r0 |

Home |  | Generated: 9 Feb 2011

# Gaudi::MultiFileCatalog Class Reference

This class constitutes the core of the XML based FileCatalog API for using POOL within Gaudi. More...

`#include <MultiFileCatalog.h>`

Inheritance diagram for Gaudi::MultiFileCatalog:
[legend]
Collaboration diagram for Gaudi::MultiFileCatalog:
[legend]

List of all members.

## Public Member Functions
| MultiFileCatalog (const std::string &nam, ISvcLocator *svc)
| Create a catalog file, initialization of XercesC.
virtual | ~MultiFileCatalog ()
| Destructor,.
virtual StatusCode | initialize ()
| IService implementation.
virtual StatusCode | finalize ()
| Finalize service object.
virtual std::string | createFID () const
| Catalog interface.
virtual CSTR | connectInfo () const
| Access to connect string.
virtual void | init ()
| Parse the DOM tree of the XML catalog.
virtual void | commit ()
| Save DOM catalog to file.
virtual void | rollback ()
| Save DOM catalog to file.
virtual bool | readOnly () const
| Check if the catalog is read-only.
virtual bool | dirty () const
| Check if the catalog should be updated.
virtual bool | existsPFN (CSTR pfn) const
| Return the status of physical file name.
virtual std::string | lookupPFN (CSTR pfn) const
| Lookup file identifier by physical file name.
virtual bool | existsLFN (CSTR lfn) const
| Return the status of a logical file name.
virtual std::string | lookupLFN (CSTR lfn) const
| Lookup file identifier by logical file name.
virtual bool | existsFID (CSTR fid) const
| Return the status of a FileID.
virtual void | getPFN (CSTR fid, Files &files) const
| Dump all physical file names of the catalog and their attributes associate to the FileID.
virtual void | getLFN (CSTR fid, Files &files) const
| Dump all logical file names of the catalog associate to the FileID.
virtual void | getFID (Strings &fids) const
| Dump all file Identifiers.
virtual void | deleteFID (CSTR fid) const
| Delete FileID from the catalog.
virtual void | registerPFN (CSTR fid, CSTR pfn, CSTR ftype) const
| Create a FileID and DOM Node of the PFN with all the attributes.
virtual void | registerLFN (CSTR fid, CSTR lfn) const
| Create a FileID and DOM Node of the LFN with all the attributes.
virtual void | registerFID (CSTR fid) const
| Create a FileID and DOM Node.
virtual void | getMetaData (CSTR fid, Attributes &attr) const
| Dump all MetaData of the catalog for a given file ID.
virtual std::string | getMetaDataItem (CSTR fid, CSTR name) const
| Access metadata item.
virtual void | setMetaData (CSTR fid, CSTR attr, CSTR val) const
| Insert/update metadata item.
virtual void | dropMetaData (CSTR fid) const
| Drop all metadata of one FID.
virtual void | dropMetaData (CSTR fid, CSTR attr) const
| Drop specified metadata item.
virtual IFileCatalog * | findCatalog (CSTR connect, bool must_be_writable) const
| Catalog management.
virtual void | addCatalog (CSTR connect)
| Add new catalog identified by name to the existing ones.
virtual void | addCatalog (IFileCatalog *cat)
| Add new catalog identified by reference to the existing ones.
virtual void | removeCatalog (CSTR connect)
| Remove catalog identified by name from the existing ones.
virtual void | removeCatalog (const IFileCatalog *cat)
| Remove catalog identified by reference from the existing ones.
virtual Catalogs & | catalogs ()
| Access catalog container.
virtual const Catalogs & | catalogs () const
| Access catalog container (CONST).
virtual IFileCatalog * | writeCatalog (CSTR fid="") const
| Access to the (first) writable file catalog.
virtual void | setWriteCatalog (IFileCatalog *cat)
| Define the writable catalog identified by reference.
virtual void | setWriteCatalog (CSTR connect)
| Define the writable catalog identified by name.
## Protected Types
typedef const std::string & | CSTR
typedef std::vector < IFileCatalog * > | Catalogs
typedef std::vector< std::string > | CatalogNames
## Protected Member Functions
template<class T >
void | _exec (T pmf) const
template<class A1 , class F >
std::string | _find (A1 &arg1, F pmf) const
template<class A1 , class F >
void | _collect (A1 arg1, F pmf) const
template<class A1 , class A2 , class F >
void | _collect (A1 arg1, A2 &arg2, F pmf) const
## Private Member Functions
IFileCatalog * | getCatalog (CSTR fid, bool throw_if_not, bool writable=true, bool prt=true) const
| Find catalog containing a given file identifier.
Catalogs::iterator | i_findCatalog (CSTR connect, bool must_be_writable)
| Find catalog by connect string.
void | propHandler (Property &)
| simple property handle to allow interactive modification of list of the file catalogs
void | printError (CSTR msg, bool throw_exc=true) const
std::string | lookupFID (CSTR lfn) const
## Private Attributes
Catalogs | m_catalogs
| Container with references to known catalogs.
CatalogNames | m_catalogNames
| Property : Container with catalog names.
bool | m_started
| Flag to indicate if catalog is started.
CatalogNames | m_oldNames
| BACKUP:: Container with catalog names.

## Detailed Description

This class constitutes the core of the XML based FileCatalog API for using POOL within Gaudi.

This class manages multiple file catalogs.

Definition at line 20 of file MultiFileCatalog.h.

## Member Typedef Documentation

typedef std::vector<std::string> Gaudi::MultiFileCatalog::CatalogNames`[protected]`

Definition at line 25 of file MultiFileCatalog.h.

typedef std::vector<IFileCatalog*> Gaudi::MultiFileCatalog::Catalogs`[protected]`

Definition at line 24 of file MultiFileCatalog.h.

typedef const std::string& Gaudi::MultiFileCatalog::CSTR`[protected]`

Definition at line 23 of file MultiFileCatalog.h.

## Constructor & Destructor Documentation

MultiFileCatalog::MultiFileCatalog | ( | const std::string & | nam,
|  | ISvcLocator * | svc |
| ) |  |  |

Create a catalog file, initialization of XercesC.

Definition at line 27 of file MultiFileCatalog.cpp.

    00028   : base_class(nam, svc), m_started(false), m_oldNames()
    00029 {
    00030   declareProperty("Catalogs", m_catalogNames, "The list of Catalogs")
    00031     -> declareUpdateHandler ( &Gaudi::MultiFileCatalog::propHandler, this ) ;
    00032   m_catalogNames.push_back("xmlcatalog_file:test_catalog.xml");
    00033 }

MultiFileCatalog::~MultiFileCatalog | ( |  | ) | `[virtual]`

Destructor,.

Definition at line 35 of file MultiFileCatalog.cpp.

    00035                                       {
    00036 }

## Member Function Documentation

template<class A1 , class A2 , class F >

void Gaudi::MultiFileCatalog::_collect | ( | A1 | arg1,
|  | A2 & | arg2,
|  | F | pmf |
| ) |  |  | const`[inline, protected]`

Definition at line 44 of file MultiFileCatalog.h.

    00044                                                                                       {
    00045       A2 tmp;
    00046       for(Catalogs::const_iterator i=m_catalogs.begin();i!=m_catalogs.end();++i,tmp.clear()) {
    00047         ((*i)->*pmf)(arg1,tmp);
    00048         arg2.insert(arg2.end(),tmp.begin(),tmp.end());
    00049       }
    00050     }

template<class A1 , class F >

void Gaudi::MultiFileCatalog::_collect | ( | A1 | arg1,
|  | F | pmf |
| ) |  |  | const`[inline, protected]`

Definition at line 37 of file MultiFileCatalog.h.

    00037                                                                     {
    00038       A1 tmp;
    00039       for(Catalogs::const_iterator i=m_catalogs.begin();i!=m_catalogs.end();++i,tmp.clear()) {
    00040         ((*i)->*pmf)(tmp);
    00041         arg1.insert(arg1.end(),tmp.begin(),tmp.end());
    00042       }
    00043     }

template<class T >

void Gaudi::MultiFileCatalog::_exec | ( | T | pmf | ) | const`[inline, protected]`

Definition at line 27 of file MultiFileCatalog.h.

    00027                                                  {
    00028       for(Catalogs::const_iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i)
    00029         ((*i)->*pmf)();
    00030     }

template<class A1 , class F >

std::string Gaudi::MultiFileCatalog::_find | ( | A1 & | arg1,
|  | F | pmf |
| ) |  |  | const`[inline, protected]`

Definition at line 31 of file MultiFileCatalog.h.

    00031                                                                        {
    00032       std::string result;
    00033       for(Catalogs::const_iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i)
    00034         if ( !(result= ((*i)->*pmf)(arg1)).empty() ) break;
    00035       return result;
    00036     }

void MultiFileCatalog::addCatalog | ( | IFileCatalog * | cat | ) | `[virtual]`

Add new catalog identified by reference to the existing ones.

Definition at line 163 of file MultiFileCatalog.cpp.

    00163                                                     {
    00164   if ( cat )  {
    00165     cat->addRef();
    00166     m_catalogs.push_back(cat);
    00167     return;
    00168   }
    00169   printError("Got invalid catalog to be added to multi catalog.",true);
    00170 }

void MultiFileCatalog::addCatalog | ( | CSTR | connect | ) | `[virtual]`

Add new catalog identified by name to the existing ones.

Catalog is already present ... silently ignore request

Definition at line 130 of file MultiFileCatalog.cpp.

    00130                                            {
    00131   if ( !con.empty() )  {
    00132     if ( 0 == findCatalog(con,false) )  {
    00133       static string xml_typ = "Gaudi::XMLFileCatalog";
    00134       string::size_type id0 = con.find("_");
    00135       string typ = con.substr(0,id0);
    00136       string url = con.substr(id0+1);
    00137       IInterface* cat = 0;
    00138       if ( strncasecmp("xml",typ.c_str(),3) == 0 )    {
    00139         cat = PluginService::Create<IInterface*>(xml_typ,url,msgSvc().get());
    00140       }
    00141       else    {
    00142         cat = PluginService::Create<IInterface*>(typ,url,serviceLocator().get());
    00143         if ( !cat )  {
    00144           cat = PluginService::Create<IInterface*>(typ,url,msgSvc().get());
    00145         }
    00146       }
    00147       if ( cat )  {
    00148         IFileCatalog* fileCat = 0;
    00149         if ( cat->queryInterface(IFileCatalog::interfaceID(),pp_cast<void>(&fileCat)).isSuccess() ) {
    00150           addCatalog(fileCat);
    00151           cat->release();
    00152           return;
    00153         }
    00154       }
    00155       printError("Failed to create catalog connection:"+con,true);
    00156     }
    00158     return;
    00159   }
    00160   printError("Got invalid (empty) catalog connection string.",true);
    00161 }

virtual const Catalogs& Gaudi::MultiFileCatalog::catalogs | ( |  | ) | const`[inline, virtual]`

Access catalog container (CONST).

Definition at line 143 of file MultiFileCatalog.h.

    00143 { return m_catalogs;      }

virtual Catalogs& Gaudi::MultiFileCatalog::catalogs | ( |  | ) | `[inline, virtual]`

Access catalog container.

Definition at line 141 of file MultiFileCatalog.h.

    00141 { return m_catalogs;      }

virtual void Gaudi::MultiFileCatalog::commit | ( |  | ) | `[inline, virtual]`

Save DOM catalog to file.

Definition at line 72 of file MultiFileCatalog.h.

    00072 { _exec(&IFileCatalog::commit);   }

MultiFileCatalog::CSTR MultiFileCatalog::connectInfo | ( |  | ) | const`[virtual]`

Access to connect string.

Definition at line 72 of file MultiFileCatalog.cpp.

    00072                                                          {
    00073   static string s("MultiCatalog");
    00074   return s;
    00075 }

std::string MultiFileCatalog::createFID | ( |  | ) | const`[virtual]`

Catalog interface.

Create file identifier using UUID mechanism.

Create file identifier using UUID mechanism

Definition at line 68 of file MultiFileCatalog.cpp.

    00068                                              {
    00069   return createGuidAsString();
    00070 }

virtual void Gaudi::MultiFileCatalog::deleteFID | ( | CSTR | fid | ) | const`[inline, virtual]`

Delete FileID from the catalog.

Definition at line 105 of file MultiFileCatalog.h.

    00106     {  writeCatalog(fid)->deleteFID(fid);                                     }

bool MultiFileCatalog::dirty | ( |  | ) | const`[virtual]`

Check if the catalog should be updated.

Definition at line 242 of file MultiFileCatalog.cpp.

    00243 {  return _findX0Bool(m_catalogs,&IFileCatalog::dirty,true);                  }

virtual void Gaudi::MultiFileCatalog::dropMetaData | ( | CSTR | fid,
|  | CSTR | attr |
| ) |  |  | const`[inline, virtual]`

Drop specified metadata item.

Definition at line 126 of file MultiFileCatalog.h.

    00127     {  writeCatalog(fid)->dropMetaData(fid,attr);                             }

virtual void Gaudi::MultiFileCatalog::dropMetaData | ( | CSTR | fid | ) | const`[inline, virtual]`

Drop all metadata of one FID.

Definition at line 123 of file MultiFileCatalog.h.

    00124     {  writeCatalog(fid)->dropMetaData(fid);                                  }

virtual bool Gaudi::MultiFileCatalog::existsFID | ( | CSTR | fid | ) | const`[inline, virtual]`

Return the status of a FileID.

Definition at line 92 of file MultiFileCatalog.h.

    00093     {  return 0 != getCatalog(fid,false,false,false);                          }

virtual bool Gaudi::MultiFileCatalog::existsLFN | ( | CSTR | lfn | ) | const`[inline, virtual]`

Return the status of a logical file name.

Definition at line 86 of file MultiFileCatalog.h.

    00087     { return !lookupLFN(lfn).empty();                                         }

virtual bool Gaudi::MultiFileCatalog::existsPFN | ( | CSTR | pfn | ) | const`[inline, virtual]`

Return the status of physical file name.

Definition at line 80 of file MultiFileCatalog.h.

    00081     { return !lookupPFN(pfn).empty();                                         }

StatusCode MultiFileCatalog::finalize | ( |  | ) | `[virtual]`

Finalize service object.

Reimplemented from Service.

Definition at line 59 of file MultiFileCatalog.cpp.

    00059                                        {
    00060   commit();
    00061   _exec(&IFileCatalog::release);
    00062   m_catalogs.clear();
    00063   m_started = false;
    00064   return Service::finalize();
    00065 }

IFileCatalog * MultiFileCatalog::findCatalog | ( | CSTR | connect,
|  | bool | must_be_writable |
| ) |  |  | const`[virtual]`

Catalog management.

Find catalog by connect string

Definition at line 103 of file MultiFileCatalog.cpp.

    00103                                                                                       {
    00104   for(Catalogs::const_iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i) {
    00105     if ( connect == (*i)->connectInfo() )
    00106       return (must_be_writable && (*i)->readOnly()) ? 0 : *i;
    00107   }
    00108   return 0;
    00109 }

IFileCatalog * MultiFileCatalog::getCatalog | ( | CSTR | fid,
|  | bool | throw_if_not,
|  | bool | writable = `true`,
|  | bool | prt = `true` |
| ) |  |  | const`[private]`

Find catalog containing a given file identifier.

Definition at line 77 of file MultiFileCatalog.cpp.

    00081 {
    00082   for(Catalogs::const_iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i)  {
    00083     IFileCatalog* c = *i;
    00084     if ( c )  {
    00085       if ( writable && c->readOnly() )
    00086         continue;
    00087       else if ( fid.empty() )
    00088         return c;
    00089       else if ( !fid.empty() && c->existsFID(fid) )
    00090         return c;
    00091     }
    00092   }
    00093   if ( prt )  {
    00094     printError("No writable file catalog found which contains FID:"+fid,throw_if_not);
    00095   }
    00096   else  {
    00097     MsgStream log(msgSvc(),name());
    00098     log << MSG::DEBUG << "No writable file catalog found which contains FID:" << fid << endmsg;
    00099   }
    00100   return 0;
    00101 }

virtual void Gaudi::MultiFileCatalog::getFID | ( | Strings & | fids | ) | const`[inline, virtual]`

Dump all file Identifiers.

Definition at line 102 of file MultiFileCatalog.h.

    00103     {  _collect(fids,&IFileCatalog::getFID);                                  }

virtual void Gaudi::MultiFileCatalog::getLFN | ( | CSTR | fid,
|  | Files & | files |
| ) |  |  | const`[inline, virtual]`

Dump all logical file names of the catalog associate to the FileID.

Definition at line 98 of file MultiFileCatalog.h.

    00099     {  _collect(fid,files,&IFileCatalog::getLFN);                             }

virtual void Gaudi::MultiFileCatalog::getMetaData | ( | CSTR | fid,
|  | Attributes & | attr |
| ) |  |  | const`[inline, virtual]`

Dump all MetaData of the catalog for a given file ID.

Definition at line 115 of file MultiFileCatalog.h.

    00116     {  _collect(fid,attr,&IFileCatalog::getMetaData);                         }

string MultiFileCatalog::getMetaDataItem | ( | CSTR | fid,
|  | CSTR | name |
| ) |  |  | const`[virtual]`

Access metadata item.

Definition at line 220 of file MultiFileCatalog.cpp.

    00220                                                                   {
    00221   std::string result;
    00222   for(Catalogs::const_iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i)
    00223     if ( !(result= (*i)->getMetaDataItem(fid,attr)).empty() ) break;
    00224   return result;
    00225 }

virtual void Gaudi::MultiFileCatalog::getPFN | ( | CSTR | fid,
|  | Files & | files |
| ) |  |  | const`[inline, virtual]`

Dump all physical file names of the catalog and their attributes associate to the FileID.

Definition at line 95 of file MultiFileCatalog.h.

    00096     {  _collect(fid,files,&IFileCatalog::getPFN);                             }

MultiFileCatalog::Catalogs::iterator MultiFileCatalog::i_findCatalog | ( | CSTR | connect,
|  | bool | must_be_writable |
| ) |  |  | `[private]`

Find catalog by connect string.

Definition at line 112 of file MultiFileCatalog.cpp.

    00112                                                                     {
    00113   for(Catalogs::iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i) {
    00114     if ( connect == (*i)->connectInfo() ) {
    00115       return (must_be_writable && (*i)->readOnly()) ? m_catalogs.end() : i;
    00116     }
    00117   }
    00118   return m_catalogs.end();
    00119 }

virtual void Gaudi::MultiFileCatalog::init | ( |  | ) | `[inline, virtual]`

Parse the DOM tree of the XML catalog.

Definition at line 69 of file MultiFileCatalog.h.

    00070     {  _exec(&IFileCatalog::init); m_started=true;                           }

StatusCode MultiFileCatalog::initialize | ( |  | ) | `[virtual]`

IService implementation.

Finalize service object

Reimplemented from Service.

Definition at line 38 of file MultiFileCatalog.cpp.

    00038                                          {
    00039   CatalogNames::const_iterator i;
    00040   std::string current = "";
    00041   if ( !Service::initialize().isSuccess() )  {
    00042     printError("Failed to initialize service base class.",false);
    00043     return StatusCode::SUCCESS;
    00044   }
    00045   try {
    00046     for(i=m_catalogNames.begin(); i != m_catalogNames.end(); ++i)  {
    00047       current = *i;
    00048       addCatalog(*i);
    00049     }
    00050     init();
    00051     return StatusCode::SUCCESS;
    00052   }
    00053   catch(const std::exception& /* e */)  {
    00054     printError("Cannot add file catalog:"+current,false);
    00055   }
    00056   return StatusCode::FAILURE;
    00057 }

std::string Gaudi::MultiFileCatalog::lookupFID | ( | CSTR | lfn | ) | const`[private]`

virtual std::string Gaudi::MultiFileCatalog::lookupLFN | ( | CSTR | lfn | ) | const`[inline, virtual]`

Lookup file identifier by logical file name.

Definition at line 89 of file MultiFileCatalog.h.

    00090     {  return _find(lfn,&IFileCatalog::lookupLFN);                            }

virtual std::string Gaudi::MultiFileCatalog::lookupPFN | ( | CSTR | pfn | ) | const`[inline, virtual]`

Lookup file identifier by physical file name.

Definition at line 83 of file MultiFileCatalog.h.

    00084     {  return _find(pfn,&IFileCatalog::lookupPFN);                            }

void MultiFileCatalog::printError | ( | CSTR | msg,
|  | bool | throw_exc = `true` |
| ) |  |  | const`[private]`

Definition at line 121 of file MultiFileCatalog.cpp.

    00121                                                                 {
    00122   MsgStream log(msgSvc(),name());
    00123   if ( rethrow )  {
    00124     log << MSG::FATAL << msg << endmsg;
    00125     throw runtime_error("Catalog> "+msg);
    00126   }
    00127   log << MSG::ERROR << msg << endmsg;
    00128 }

void MultiFileCatalog::propHandler | ( | Property & |  | ) | `[private]`

simple property handle to allow interactive modification of list of the file catalogs

Definition at line 245 of file MultiFileCatalog.cpp.

    00246 {
    00247   // not yet initialized
    00248   if ( !m_started ) { m_oldNames = m_catalogNames; return; } // RETURN
    00249   // no real change - no action
    00250   if ( m_catalogNames == m_oldNames ) { return; }
    00251   m_oldNames = m_catalogNames ;
    00252   // remove ALL catalogs
    00253   removeCatalog("") ;
    00254   // add new catalogs
    00255   for ( CatalogNames::const_iterator inew = m_catalogNames.begin() ;
    00256         m_catalogNames.end() != inew ; ++inew ) { addCatalog ( *inew ) ; }
    00257   // start
    00258   init() ;
    00259   //
    00260   MsgStream log ( msgSvc() , name() ) ;
    00261   log << MSG::DEBUG
    00262       << "New catalogs to be used: "
    00263       << Gaudi::Utils::toString ( m_catalogNames ) << endmsg ;
    00264 }

bool MultiFileCatalog::readOnly | ( |  | ) | const`[virtual]`

Check if the catalog is read-only.

Definition at line 239 of file MultiFileCatalog.cpp.

    00240 {  return _findX0Bool(m_catalogs,&IFileCatalog::readOnly,false);              }

virtual void Gaudi::MultiFileCatalog::registerFID | ( | CSTR | fid | ) | const`[inline, virtual]`

Create a FileID and DOM Node.

Definition at line 112 of file MultiFileCatalog.h.

    00113     {  writeCatalog()->registerFID(fid);                                      }

void MultiFileCatalog::registerLFN | ( | CSTR | fid,
|  | CSTR | lfn |
| ) |  |  | const`[virtual]`

Create a FileID and DOM Node of the LFN with all the attributes.

Definition at line 233 of file MultiFileCatalog.cpp.

    00233                                                             {
    00234   IFileCatalog* c = getCatalog(fid,false,true,false);
    00235   if ( !c ) c = getCatalog("",true,true,true);
    00236   c->registerLFN(fid, lfn);
    00237 }

void MultiFileCatalog::registerPFN | ( | CSTR | fid,
|  | CSTR | pfn,
|  | CSTR | ftype |
| ) |  |  | const`[virtual]`

Create a FileID and DOM Node of the PFN with all the attributes.

Definition at line 227 of file MultiFileCatalog.cpp.

    00227                                                                        {
    00228   IFileCatalog* c = getCatalog(fid,false,true,false);
    00229   if ( !c ) c = getCatalog("",true,true,true);
    00230   c->registerPFN(fid, pfn, ftype);
    00231 }

void MultiFileCatalog::removeCatalog | ( | const IFileCatalog * | cat | ) | `[virtual]`

Remove catalog identified by reference from the existing ones.

Definition at line 181 of file MultiFileCatalog.cpp.

    00181                                                              {
    00182   if ( cat )  {
    00183     Catalogs::iterator i=find(m_catalogs.begin(),m_catalogs.end(),cat);
    00184     if ( i != m_catalogs.end() )  {
    00185       (*i)->release();
    00186       m_catalogs.erase(i);
    00187       return;
    00188     }
    00189     printError("Unknown file catalog -- cannot be removed.",true);
    00190   }
    00191   printError("Invalid file catalog.",true);
    00192 }

void MultiFileCatalog::removeCatalog | ( | CSTR | connect | ) | `[virtual]`

Remove catalog identified by name from the existing ones.

Definition at line 172 of file MultiFileCatalog.cpp.

    00172                                               {
    00173   if ( con.empty() || con == "*" )  {
    00174     _exec(&IFileCatalog::release);
    00175     m_catalogs.clear();
    00176     return;
    00177   }
    00178   removeCatalog(findCatalog(con,false));
    00179 }

virtual void Gaudi::MultiFileCatalog::rollback | ( |  | ) | `[inline, virtual]`

Save DOM catalog to file.

Definition at line 74 of file MultiFileCatalog.h.

    00074 { _exec(&IFileCatalog::rollback); }

virtual void Gaudi::MultiFileCatalog::setMetaData | ( | CSTR | fid,
|  | CSTR | attr,
|  | CSTR | val |
| ) |  |  | const`[inline, virtual]`

Insert/update metadata item.

Definition at line 120 of file MultiFileCatalog.h.

    00121     {  writeCatalog(fid)->setMetaData(fid,attr,val);                          }

void MultiFileCatalog::setWriteCatalog | ( | CSTR | connect | ) | `[virtual]`

Define the writable catalog identified by name.

Definition at line 210 of file MultiFileCatalog.cpp.

    00210                                                     {
    00211   Catalogs::iterator i = i_findCatalog(connect,true);
    00212   if ( i == m_catalogs.end() ) {
    00213     addCatalog(connect);
    00214     setWriteCatalog(findCatalog(connect,true));
    00215     return;
    00216   }
    00217   setWriteCatalog(*i);
    00218 }

void MultiFileCatalog::setWriteCatalog | ( | IFileCatalog * | cat | ) | `[virtual]`

Define the writable catalog identified by reference.

Definition at line 194 of file MultiFileCatalog.cpp.

    00194                                                          {
    00195   if ( cat )  {
    00196     if ( !cat->readOnly() )  {
    00197       Catalogs::iterator i=find(m_catalogs.begin(),m_catalogs.end(),cat);
    00198       if ( i != m_catalogs.end() )  {
    00199         m_catalogs.erase(i);
    00200         m_catalogs.insert(m_catalogs.begin(),cat);
    00201         return;
    00202       }
    00203       printError("The catalog "+cat->connectInfo()+" is not known.",true);
    00204     }
    00205     printError("The catalog "+cat->connectInfo()+" is not writable.",true);
    00206   }
    00207   printError("Invalid file catalog.",true);
    00208 }

virtual IFileCatalog* Gaudi::MultiFileCatalog::writeCatalog | ( | CSTR | fid = `""` | ) | const`[inline, virtual]`

Access to the (first) writable file catalog.

Definition at line 145 of file MultiFileCatalog.h.

    00146     {  return getCatalog(fid,true,true,false);                                }

## Member Data Documentation

CatalogNames Gaudi::MultiFileCatalog::m_catalogNames`[private]`

Property : Container with catalog names.

Definition at line 168 of file MultiFileCatalog.h.

Catalogs Gaudi::MultiFileCatalog::m_catalogs`[private]`

Container with references to known catalogs.

Definition at line 166 of file MultiFileCatalog.h.

CatalogNames Gaudi::MultiFileCatalog::m_oldNames`[private]`

BACKUP:: Container with catalog names.

Definition at line 172 of file MultiFileCatalog.h.

bool Gaudi::MultiFileCatalog::m_started`[private]`

Flag to indicate if catalog is started.

Definition at line 170 of file MultiFileCatalog.h.

The documentation for this class was generated from the following files:

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v22r0/GaudiUtils/src/component/MultiFileCatalog.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v22r0/GaudiUtils/src/component/MultiFileCatalog.cpp

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines