Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  master (01b473db)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
XMLFileCatalog.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #pragma once
12 
14 #include <xercesc/dom/DOMDocument.hpp>
15 #include <xercesc/dom/DOMElement.hpp>
16 #include <xercesc/parsers/XercesDOMParser.hpp>
17 #include <xercesc/sax/ErrorHandler.hpp>
18 
19 #include <memory>
20 
21 // Forward declarations
22 class IMessageSvc;
23 
24 /*
25  * Gaudi namespace declaration
26  */
27 namespace Gaudi {
28 
36  class XMLFileCatalog : public implements<IFileCatalog> {
37  protected:
38  typedef const std::string& CSTR;
39 
40  public:
43 
45  std::string createFID() const override;
48  CSTR connectInfo() const override { return m_file; }
50  void init() override;
52  void commit() override;
54  void rollback() override {
55  if ( dirty() ) init();
56  }
58  bool readOnly() const override { return m_rdOnly; }
60  bool dirty() const override { return m_update; }
62  bool existsPFN( CSTR pfn ) const override { return element( pfn, false ) != 0; }
64  std::string lookupPFN( CSTR fid ) const override { return lookupFID( fid ); }
66  bool existsLFN( CSTR lfn ) const override { return element( lfn, false ) != 0; }
68  std::string lookupLFN( CSTR lfn ) const override { return lookupFID( lfn ); }
70  bool existsFID( CSTR fid ) const override { return element( fid, false ) != 0; }
72  void getPFN( CSTR fid, Files& files ) const override;
74  void getLFN( CSTR fid, Files& files ) const override;
76  void getFID( Strings& fids ) const override;
78  void deleteFID( CSTR FileID ) const override;
80  void registerPFN( CSTR fid, CSTR pfn, CSTR ftype ) const override;
82  void registerLFN( CSTR fid, CSTR lfn ) const override;
84  void registerFID( CSTR fid ) const override;
86  void renamePFN( CSTR pfn, CSTR new_pfn ) const override;
88  void deletePFN( CSTR pfn ) const override;
90  void getMetaData( CSTR fid, Attributes& attr ) const override;
92  std::string getMetaDataItem( CSTR fid, CSTR name ) const override;
94  void setMetaData( CSTR fid, CSTR name, CSTR value ) const override;
96  void dropMetaData( CSTR fid ) const override { dropMetaData( fid, "*" ); }
98  void dropMetaData( CSTR fid, CSTR attr ) const override;
99 
100  private:
101  xercesc::DOMDocument* getDoc( bool throw_if_no_exists = true ) const;
102  std::string getfile( bool create );
103  void printError( CSTR msg, bool throw_exc = true ) const;
104  std::string lookupFID( CSTR lfn ) const;
105  xercesc::DOMNode* element( CSTR fid, bool print_err = true ) const;
106  xercesc::DOMNode* child( xercesc::DOMNode* par, CSTR tag, CSTR attr = "", CSTR val = "" ) const;
107  std::pair<xercesc::DOMElement*, xercesc::DOMElement*> i_registerFID( CSTR fid ) const;
108  bool m_rdOnly = false;
109  mutable bool m_update = false;
110  xercesc::DOMDocument* m_doc = nullptr;
111  std::unique_ptr<xercesc::XercesDOMParser> m_parser;
112  std::unique_ptr<xercesc::ErrorHandler> m_errHdlr;
113  std::string m_file;
115  };
117  std::string createGuidAsString();
118 } /* End namespace Gaudi */
Gaudi::XMLFileCatalog::deletePFN
void deletePFN(CSTR pfn) const override
remove a PFN
Definition: XMLFileCatalog.cpp:338
IMessageSvc
Definition: IMessageSvc.h:34
Gaudi::XMLFileCatalog::m_parser
std::unique_ptr< xercesc::XercesDOMParser > m_parser
Definition: XMLFileCatalog.h:111
Gaudi::XMLFileCatalog::existsFID
bool existsFID(CSTR fid) const override
Return the status of a FileID.
Definition: XMLFileCatalog.h:70
Gaudi::XMLFileCatalog::child
xercesc::DOMNode * child(xercesc::DOMNode *par, CSTR tag, CSTR attr="", CSTR val="") const
Definition: XMLFileCatalog.cpp:270
Gaudi::XMLFileCatalog::XMLFileCatalog
XMLFileCatalog(CSTR url, IMessageSvc *m)
Create a catalog file, initialization of XercesC.
Definition: XMLFileCatalog.cpp:189
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:19
Gaudi::XMLFileCatalog::setMetaData
void setMetaData(CSTR fid, CSTR name, CSTR value) const override
Insert/update metadata item.
Definition: XMLFileCatalog.cpp:280
Gaudi::XMLFileCatalog::deleteFID
void deleteFID(CSTR FileID) const override
Delete FileID Node from the catalog.
Definition: XMLFileCatalog.cpp:315
Gaudi::XMLFileCatalog::getLFN
void getLFN(CSTR fid, Files &files) const override
Dump all logical file names of the catalog associate to the FileID.
Definition: XMLFileCatalog.cpp:257
Gaudi::XMLFileCatalog::getPFN
void getPFN(CSTR fid, Files &files) const override
Dump all physical file names of the catalog and their attributes associate to the FileID.
Definition: XMLFileCatalog.cpp:251
Gaudi::XMLFileCatalog::commit
void commit() override
Save DOM catalog to file.
Definition: XMLFileCatalog.cpp:447
Gaudi::XMLFileCatalog::connectInfo
CSTR connectInfo() const override
Access to connect string.
Definition: XMLFileCatalog.h:48
Gaudi::XMLFileCatalog::m_msgSvc
IMessageSvc * m_msgSvc
Definition: XMLFileCatalog.h:114
compareOutputFiles.par
par
Definition: compareOutputFiles.py:477
Gaudi::XMLFileCatalog::getfile
std::string getfile(bool create)
Definition: XMLFileCatalog.cpp:474
Gaudi::XMLFileCatalog::registerLFN
void registerLFN(CSTR fid, CSTR lfn) const override
Create a FileID and Node of the logical file name with all the attributes.
Definition: XMLFileCatalog.cpp:419
Gaudi::Units::m
constexpr double m
Definition: SystemOfUnits.h:107
Gaudi::XMLFileCatalog::dropMetaData
void dropMetaData(CSTR fid) const override
Drop all metadata of one FID.
Definition: XMLFileCatalog.h:96
Gaudi::XMLFileCatalog::dirty
bool dirty() const override
Check if the catalog should be updated.
Definition: XMLFileCatalog.h:60
Gaudi::XMLFileCatalog::m_doc
xercesc::DOMDocument * m_doc
Definition: XMLFileCatalog.h:110
Gaudi::XMLFileCatalog::i_registerFID
std::pair< xercesc::DOMElement *, xercesc::DOMElement * > i_registerFID(CSTR fid) const
Definition: XMLFileCatalog.cpp:353
Gaudi::XMLFileCatalog::m_rdOnly
bool m_rdOnly
Definition: XMLFileCatalog.h:108
Gaudi::XMLFileCatalog::element
xercesc::DOMNode * element(CSTR fid, bool print_err=true) const
Definition: XMLFileCatalog.cpp:309
Gaudi::XMLFileCatalog::readOnly
bool readOnly() const override
Check if the catalog is read-only.
Definition: XMLFileCatalog.h:58
Gaudi
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
Definition: __init__.py:1
Gaudi::XMLFileCatalog::printError
void printError(CSTR msg, bool throw_exc=true) const
Definition: XMLFileCatalog.cpp:199
BoostArrayProperties.Strings
Strings
Definition: BoostArrayProperties.py:36
implements
Base class used to implement the interfaces.
Definition: implements.h:19
ConditionsStallTest.name
name
Definition: ConditionsStallTest.py:77
Gaudi::XMLFileCatalog::rollback
void rollback() override
Save DOM catalog to file.
Definition: XMLFileCatalog.h:54
Gaudi::XMLFileCatalog::CSTR
const std::string & CSTR
Definition: XMLFileCatalog.h:38
Gaudi::XMLFileCatalog::lookupPFN
std::string lookupPFN(CSTR fid) const override
Lookup file identifier by physical file name.
Definition: XMLFileCatalog.h:64
Gaudi::XMLFileCatalog::registerPFN
void registerPFN(CSTR fid, CSTR pfn, CSTR ftype) const override
Create a FileID and Node of the physical file name with all the attributes.
Definition: XMLFileCatalog.cpp:389
Gaudi::XMLFileCatalog
Definition: XMLFileCatalog.h:36
Gaudi::XMLFileCatalog::init
void init() override
Parse the DOM tree of the XML catalog.
Definition: XMLFileCatalog.cpp:205
Gaudi::createGuidAsString
std::string createGuidAsString()
Helper function creating file identifier using the UUID mechanism.
Gaudi::XMLFileCatalog::renamePFN
void renamePFN(CSTR pfn, CSTR new_pfn) const override
rename a PFN
Definition: XMLFileCatalog.cpp:330
Gaudi::XMLFileCatalog::getMetaData
void getMetaData(CSTR fid, Attributes &attr) const override
Dump all MetaData of the catalog for a given file ID.
Definition: XMLFileCatalog.cpp:263
Gaudi::XMLFileCatalog::getDoc
xercesc::DOMDocument * getDoc(bool throw_if_no_exists=true) const
Definition: XMLFileCatalog.cpp:194
IFileCatalog.h
Gaudi::XMLFileCatalog::getMetaDataItem
std::string getMetaDataItem(CSTR fid, CSTR name) const override
Access metadata item.
Definition: XMLFileCatalog.cpp:296
Gaudi::XMLFileCatalog::lookupLFN
std::string lookupLFN(CSTR lfn) const override
Lookup file identifier by logical file name.
Definition: XMLFileCatalog.h:68
Gaudi::XMLFileCatalog::m_update
bool m_update
Definition: XMLFileCatalog.h:109
Gaudi::XMLFileCatalog::registerFID
void registerFID(CSTR fid) const override
Create a FileID and Node.
Definition: XMLFileCatalog.cpp:321
Gaudi::XMLFileCatalog::m_file
std::string m_file
Definition: XMLFileCatalog.h:113
Gaudi::XMLFileCatalog::m_errHdlr
std::unique_ptr< xercesc::ErrorHandler > m_errHdlr
Definition: XMLFileCatalog.h:112
Gaudi::XMLFileCatalog::getFID
void getFID(Strings &fids) const override
Dump all file Identifiers.
Definition: XMLFileCatalog.cpp:245
CSTR
const std::string CSTR
Definition: MultiStoreSvc.cpp:51
Gaudi::XMLFileCatalog::existsPFN
bool existsPFN(CSTR pfn) const override
Return the status of a physical file name.
Definition: XMLFileCatalog.h:62
Gaudi::XMLFileCatalog::lookupFID
std::string lookupFID(CSTR lfn) const
Definition: XMLFileCatalog.cpp:230
Gaudi::XMLFileCatalog::existsLFN
bool existsLFN(CSTR lfn) const override
Return the status of a logical file name.
Definition: XMLFileCatalog.h:66
Gaudi::XMLFileCatalog::createFID
std::string createFID() const override
Catalog interface
Definition: XMLFileCatalog.cpp:192