| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
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]

## Public Types
typedef Service::Factory | Factory
Public Types inherited from extends2< Service, IFileCatalog, IFileCatalogMgr >
typedef extends2 | base_class
| Typedef to this class.
typedef extend_interfaces2 < IFileCatalog, IFileCatalogMgr > | extend_interfaces_base
| Typedef to the base of this class.
typedef extend_interfaces_base::ext_iids | interfaces
| MPL set of all the implemented interfaces.
Public Types inherited from Service
typedef Gaudi::PluginService::Factory2 < IService *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from CommonMessaging< implements3< IService, IProperty, IStateful > >
typedef CommonMessaging | base_class
Public Types inherited from implements3< IService, IProperty, IStateful >
typedef implements3 | base_class
| Typedef to this class.
typedef extend_interfaces3 < IService, IProperty, IStateful > | extend_interfaces_base
| Typedef to the base of this class.
typedef extend_interfaces_base::ext_iids | interfaces
| MPL set of all the implemented interfaces.
Public Types inherited from extend_interfaces3< I1, I2, I3 >
typedef mpl::fold< typename I1::iid::iids::type, typename mpl::fold< typename I2::iid::iids::type, typename I3::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type, mpl::insert< mpl::_1, mpl::_2 > >::type | ext_iids
| MPL set of interfaces extended by this one.
Public Types inherited from extend_interfaces2< I1, I2 >
typedef mpl::fold< typename I1::iid::iids::type, typename I2::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type | ext_iids
| MPL set of interfaces extended by this one.

## 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.
Public Member Functions inherited from extends2< Service, IFileCatalog, IFileCatalogMgr >
| extends2 (A1 a1, A2 a2, A3 a3)
| Templated constructor with 3 arguments.
| extends2 (A1 a1, A2 a2)
| Templated constructor with 2 arguments.
| extends2 (A1 a1)
| Templated constructor with 1 argument.
| extends2 ()
| Default constructor.
virtual void * | i_cast (const InterfaceID &tid) const
| Implementation of IInterface::i_cast.
virtual StatusCode | queryInterface (const InterfaceID &ti, void **pp)
| Implementation of IInterface::queryInterface.
virtual std::vector< std::string > | getInterfaceNames () const
| Implementation of IInterface::getInterfaceNames.
virtual | ~extends2 ()
| Virtual destructor.
Public Member Functions inherited from Service
virtual unsigned long | release ()
| Release Interface instance.
virtual const std::string & | name () const
| Retrieve name of the service.
virtual StatusCode | configure ()
virtual StatusCode | start ()
virtual StatusCode | stop ()
virtual StatusCode | terminate ()
virtual Gaudi::StateMachine::State | FSMState () const
virtual Gaudi::StateMachine::State | targetFSMState () const
virtual StatusCode | reinitialize ()
virtual StatusCode | restart ()
virtual StatusCode | sysInitialize ()
| Initialize Service.
virtual StatusCode | sysStart ()
| Initialize Service.
virtual StatusCode | sysStop ()
| Initialize Service.
virtual StatusCode | sysFinalize ()
| Finalize Service.
virtual StatusCode | sysReinitialize ()
| Re-initialize the Service.
virtual StatusCode | sysRestart ()
| Re-initialize the Service.
virtual StatusCode | setProperty (const Property &p)
virtual StatusCode | setProperty (const std::string &s)
virtual StatusCode | setProperty (const std::string &n, const std::string &v)
virtual StatusCode | getProperty (Property *p) const
virtual const Property & | getProperty (const std::string &name) const
virtual StatusCode | getProperty (const std::string &n, std::string &v) const
virtual const std::vector < Property * > & | getProperties () const
template<class TYPE >
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value
| Service (const std::string &name, ISvcLocator *svcloc)
| Standard Constructor.
SmartIF< ISvcLocator > & | serviceLocator () const
| Retrieve pointer to service locator.
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job.
template<class T >
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const
| Access a service by name, creating it if it doesn't already exist.
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const
template<class T >
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist.
template<class T >
Property * | declareProperty (const std::string &name, T &property, const std::string &doc="none") const
| Declare the named property.
Property * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
| Declare remote named properties.
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked.
Public Member Functions inherited from CommonMessaging< implements3< IService, IProperty, IStateful > >
| CommonMessaging (const A1 &a1, const A2 &a2, const A3 &a3)
| Templated constructor with 3 arguments.
| CommonMessaging (const A1 &a1, const A2 &a2)
| Templated constructor with 2 arguments.
| CommonMessaging (const A1 &a1)
| Templated constructor with 1 argument.
| CommonMessaging ()
| Default constructor.
virtual | ~CommonMessaging ()
| Virtual destructor.
SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service.
MsgStream & | msgStream () const
| Return an uninitialized MsgStream.
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts.
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS)
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL)
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR)
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR)
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING)
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO)
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG)
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE)
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO)
MSG::Level | msgLevel () const
| get the output level from the embedded MsgStream
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream
Public Member Functions inherited from extend_interfaces2< I1, I2 >
virtual | ~extend_interfaces2 ()
| Virtual destructor.

## 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.

## Additional Inherited Members
Protected Attributes inherited from Service
IntegerProperty | m_outputLevel
| Service output level.
Gaudi::StateMachine::State | m_state
| Service state.
Gaudi::StateMachine::State | m_targetState
| Service state.

## 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 29 of file MultiFileCatalog.h.

typedef std::vector<IFileCatalog*> Gaudi::MultiFileCatalog::Catalogs
| protected

Definition at line 28 of file MultiFileCatalog.h.

typedef const std::string& Gaudi::MultiFileCatalog::CSTR
| protected

Definition at line 27 of file MultiFileCatalog.h.

typedef Service::Factory Gaudi::MultiFileCatalog::Factory

Definition at line 24 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 26 of file MultiFileCatalog.cpp.

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

MultiFileCatalog::~MultiFileCatalog | ( |  | ) |
| virtual

Destructor,.

Definition at line 34 of file MultiFileCatalog.cpp.

{
}

## Member Function Documentation

template<class A1 , class F >

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

Definition at line 41 of file MultiFileCatalog.h.

{
A1 tmp;
for(Catalogs::const_iterator i=m_catalogs.begin();i!=m_catalogs.end();++i,tmp.clear()) {
((*i)->*pmf)(tmp);
arg1.insert(arg1.end(),tmp.begin(),tmp.end());
}
}
template<class A1 , class A2 , class F >

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

Definition at line 48 of file MultiFileCatalog.h.

{
A2 tmp;
for(Catalogs::const_iterator i=m_catalogs.begin();i!=m_catalogs.end();++i,tmp.clear()) {
((*i)->*pmf)(arg1,tmp);
arg2.insert(arg2.end(),tmp.begin(),tmp.end());
}
}
template<class T >

void Gaudi::MultiFileCatalog::_exec | ( | T | pmf | ) | const
| inline protected

Definition at line 31 of file MultiFileCatalog.h.

{
for(Catalogs::const_iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i)
((*i)->*pmf)();
}
template<class A1 , class F >

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

Definition at line 35 of file MultiFileCatalog.h.

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

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 129 of file MultiFileCatalog.cpp.

{
if ( !con.empty() ) {
if ( 0 == findCatalog(con,false) ) {
static const string xml_typ = "Gaudi::XMLFileCatalog";
string::size_type id0 = con.find("_");
string typ = con.substr(0,id0);
string url = con.substr(id0+1);
IInterface* cat = 0;
if ( strncasecmp("xml",typ.c_str(),3) == 0 ) {
cat = IFileCatalog::Factory::create(xml_typ,url,msgSvc().get());
}
else {
using Gaudi::PluginService::Details::Registry;
Registry& registry = Registry::instance();
if (registry.getInfo(typ).type ==
typeid(Service::Factory::FuncType).name()) {
cat = Service::Factory::create(typ,url,serviceLocator().get());
} else if (registry.getInfo(typ).type ==
typeid(IFileCatalog::Factory::FuncType).name()) {
cat = IFileCatalog::Factory::create(typ,url,msgSvc().get());
}
}
if ( cat ) {
IFileCatalog* fileCat = 0;
if ( cat->queryInterface(IFileCatalog::interfaceID(),pp_cast<void>(&fileCat)).isSuccess() ) {
addCatalog(fileCat);
cat->release();
return;
}
}
printError("Failed to create catalog connection:"+con,true);
}
return;
}
printError("Got invalid (empty) catalog connection string.",true);
}

void MultiFileCatalog::addCatalog | ( | IFileCatalog * | cat | ) |
| virtual

Add new catalog identified by reference to the existing ones.

Definition at line 167 of file MultiFileCatalog.cpp.

{
if ( cat ) {
cat->addRef();
m_catalogs.push_back(cat);
return;
}
printError("Got invalid catalog to be added to multi catalog.",true);
}

virtual Catalogs& Gaudi::MultiFileCatalog::catalogs | ( |  | ) |
| inline virtual

Access catalog container.

Definition at line 145 of file MultiFileCatalog.h.

{ return m_catalogs; }

virtual const Catalogs& Gaudi::MultiFileCatalog::catalogs | ( |  | ) | const
| inline virtual

Access catalog container (CONST)

Definition at line 147 of file MultiFileCatalog.h.

{ return m_catalogs; }

virtual void Gaudi::MultiFileCatalog::commit | ( |  | ) |
| inline virtual

Save DOM catalog to file.

Definition at line 76 of file MultiFileCatalog.h.

{ _exec(&IFileCatalog::commit); }

MultiFileCatalog::CSTR MultiFileCatalog::connectInfo | ( |  | ) | const
| virtual

Access to connect string.

Definition at line 71 of file MultiFileCatalog.cpp.

{
static string s("MultiCatalog");
return s;
}

std::string MultiFileCatalog::createFID | ( |  | ) | const
| virtual

Catalog interface.

Create file identifier using UUID mechanism.

Create file identifier using UUID mechanism

Definition at line 67 of file MultiFileCatalog.cpp.

{
return createGuidAsString();
}

virtual void Gaudi::MultiFileCatalog::deleteFID | ( | CSTR | fid | ) | const
| inline virtual

Delete FileID from the catalog.

Definition at line 109 of file MultiFileCatalog.h.

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

bool MultiFileCatalog::dirty | ( |  | ) | const
| virtual

Check if the catalog should be updated.

Definition at line 246 of file MultiFileCatalog.cpp.

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

virtual void Gaudi::MultiFileCatalog::dropMetaData | ( | CSTR | fid | ) | const
| inline virtual

Drop all metadata of one FID.

Definition at line 127 of file MultiFileCatalog.h.

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

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

Drop specified metadata item.

Definition at line 130 of file MultiFileCatalog.h.

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

virtual bool Gaudi::MultiFileCatalog::existsFID | ( | CSTR | fid | ) | const
| inline virtual

Return the status of a FileID.

Definition at line 96 of file MultiFileCatalog.h.

{ 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 90 of file MultiFileCatalog.h.

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

virtual bool Gaudi::MultiFileCatalog::existsPFN | ( | CSTR | pfn | ) | const
| inline virtual

Return the status of physical file name.

Definition at line 84 of file MultiFileCatalog.h.

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

StatusCode MultiFileCatalog::finalize | ( |  | ) |
| virtual

Finalize service object.

Reimplemented from Service.

Definition at line 58 of file MultiFileCatalog.cpp.

{
commit();
_exec(&IFileCatalog::release);
m_catalogs.clear();
m_started = false;
return Service::finalize();
}

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

Catalog management.

Find catalog by connect string

Definition at line 102 of file MultiFileCatalog.cpp.

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

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 76 of file MultiFileCatalog.cpp.

{
for(Catalogs::const_iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i) {
IFileCatalog* c = *i;
if ( c ) {
if ( writable && c->readOnly() )
continue;
else if ( fid.empty() )
return c;
else if ( !fid.empty() && c->existsFID(fid) )
return c;
}
}
if ( prt ) {
printError("No writable file catalog found which contains FID:"+fid,throw_if_not);
}
else {
MsgStream log(msgSvc(),name());
log << MSG::DEBUG << "No writable file catalog found which contains FID:" << fid << endmsg;
}
return 0;
}

virtual void Gaudi::MultiFileCatalog::getFID | ( | Strings & | fids | ) | const
| inline virtual

Dump all file Identifiers.

Definition at line 106 of file MultiFileCatalog.h.

{ _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 102 of file MultiFileCatalog.h.

{ _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 119 of file MultiFileCatalog.h.

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

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

Access metadata item.

Definition at line 224 of file MultiFileCatalog.cpp.

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

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 99 of file MultiFileCatalog.h.

{ _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 111 of file MultiFileCatalog.cpp.

{
for(Catalogs::iterator i=m_catalogs.begin(); i != m_catalogs.end(); ++i) {
if ( connect == (*i)->connectInfo() ) {
return (must_be_writable && (*i)->readOnly()) ? m_catalogs.end() : i;
}
}
return m_catalogs.end();
}

virtual void Gaudi::MultiFileCatalog::init | ( |  | ) |
| inline virtual

Parse the DOM tree of the XML catalog.

Definition at line 73 of file MultiFileCatalog.h.

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

StatusCode MultiFileCatalog::initialize | ( |  | ) |
| virtual

IService implementation.

Finalize service object

Reimplemented from Service.

Definition at line 37 of file MultiFileCatalog.cpp.

{
CatalogNames::const_iterator i;
std::string current = "";
if ( !Service::initialize().isSuccess() ) {
printError("Failed to initialize service base class.",false);
return StatusCode::SUCCESS;
}
try {
for(i=m_catalogNames.begin(); i != m_catalogNames.end(); ++i) {
current = *i;
addCatalog(*i);
}
init();
return StatusCode::SUCCESS;
}
catch(const std::exception& /* e */) {
printError("Cannot add file catalog:"+current,false);
}
return StatusCode::FAILURE;
}

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 93 of file MultiFileCatalog.h.

{ 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 87 of file MultiFileCatalog.h.

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

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

Definition at line 120 of file MultiFileCatalog.cpp.

{
MsgStream log(msgSvc(),name());
if ( rethrow ) {
log << MSG::FATAL << msg << endmsg;
throw runtime_error("Catalog> "+msg);
}
log << MSG::ERROR << msg << endmsg;
}

void MultiFileCatalog::propHandler | ( | Property & |  | ) |
| private

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

Definition at line 249 of file MultiFileCatalog.cpp.

{
// not yet initialized
if ( !m_started ) { m_oldNames = m_catalogNames; return; } // RETURN
// no real change - no action
if ( m_catalogNames == m_oldNames ) { return; }
m_oldNames = m_catalogNames ;
// remove ALL catalogs
removeCatalog("") ;
// add new catalogs
for ( CatalogNames::const_iterator inew = m_catalogNames.begin() ;
m_catalogNames.end() != inew ; ++inew ) { addCatalog ( *inew ) ; }
// start
init() ;
//
MsgStream log ( msgSvc() , name() ) ;
log << MSG::DEBUG
<< "New catalogs to be used: "
<< Gaudi::Utils::toString ( m_catalogNames ) << endmsg ;
}

bool MultiFileCatalog::readOnly | ( |  | ) | const
| virtual

Check if the catalog is read-only.

Definition at line 243 of file MultiFileCatalog.cpp.

{ 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 116 of file MultiFileCatalog.h.

{ 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 237 of file MultiFileCatalog.cpp.

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

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 231 of file MultiFileCatalog.cpp.

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

void MultiFileCatalog::removeCatalog | ( | CSTR | connect | ) |
| virtual

Remove catalog identified by name from the existing ones.

Definition at line 176 of file MultiFileCatalog.cpp.

{
if ( con.empty() || con == "*" ) {
_exec(&IFileCatalog::release);
m_catalogs.clear();
return;
}
removeCatalog(findCatalog(con,false));
}

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

Remove catalog identified by reference from the existing ones.

Definition at line 185 of file MultiFileCatalog.cpp.

{
if ( cat ) {
Catalogs::iterator i=find(m_catalogs.begin(),m_catalogs.end(),cat);
if ( i != m_catalogs.end() ) {
(*i)->release();
m_catalogs.erase(i);
return;
}
printError("Unknown file catalog -- cannot be removed.",true);
}
printError("Invalid file catalog.",true);
}

virtual void Gaudi::MultiFileCatalog::rollback | ( |  | ) |
| inline virtual

Save DOM catalog to file.

Definition at line 78 of file MultiFileCatalog.h.

{ _exec(&IFileCatalog::rollback); }

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

Insert/update metadata item.

Definition at line 124 of file MultiFileCatalog.h.

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

void MultiFileCatalog::setWriteCatalog | ( | IFileCatalog * | cat | ) |
| virtual

Define the writable catalog identified by reference.

Definition at line 198 of file MultiFileCatalog.cpp.

{
if ( cat ) {
if ( !cat->readOnly() ) {
Catalogs::iterator i=find(m_catalogs.begin(),m_catalogs.end(),cat);
if ( i != m_catalogs.end() ) {
m_catalogs.erase(i);
m_catalogs.insert(m_catalogs.begin(),cat);
return;
}
printError("The catalog "+cat->connectInfo()+" is not known.",true);
}
printError("The catalog "+cat->connectInfo()+" is not writable.",true);
}
printError("Invalid file catalog.",true);
}

void MultiFileCatalog::setWriteCatalog | ( | CSTR | connect | ) |
| virtual

Define the writable catalog identified by name.

Definition at line 214 of file MultiFileCatalog.cpp.

{
Catalogs::iterator i = i_findCatalog(connect,true);
if ( i == m_catalogs.end() ) {
addCatalog(connect);
setWriteCatalog(findCatalog(connect,true));
return;
}
setWriteCatalog(*i);
}

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

Access to the (first) writable file catalog.

Definition at line 149 of file MultiFileCatalog.h.

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

## Member Data Documentation

CatalogNames Gaudi::MultiFileCatalog::m_catalogNames
| private

Property : Container with catalog names.

Definition at line 172 of file MultiFileCatalog.h.

Catalogs Gaudi::MultiFileCatalog::m_catalogs
| private

Container with references to known catalogs.

Definition at line 170 of file MultiFileCatalog.h.

CatalogNames Gaudi::MultiFileCatalog::m_oldNames
| private

BACKUP:: Container with catalog names.

Definition at line 176 of file MultiFileCatalog.h.

bool Gaudi::MultiFileCatalog::m_started
| private

Flag to indicate if catalog is started.

Definition at line 174 of file MultiFileCatalog.h.

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

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