ATLAS Offline Software
UserDatabase.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef INCLUDE_PERSISTENCYSVC_USERDATABASE_H
6 #define INCLUDE_PERSISTENCYSVC_USERDATABASE_H
7 
12 #include "POOLCore/DbPrint.h"
13 
14 namespace pool {
15  // forward declarations
16  class DatabaseConnectionPolicy;
17  class IFileCatalog;
18  class ITransaction;
19 
20 
21  namespace PersistencySvc {
22  // forward declarations
23  class TechnologyDispatcher;
24  class DatabaseHandler;
25  class DatabaseRegistry;
26 
32  class UserDatabase : virtual public IDatabase,
33  virtual public ITechnologySpecificAttributes,
34  public APRMessaging
35  {
36  public:
38  UserDatabase( TechnologyDispatcher& technologyDispatcher,
39  const DatabaseConnectionPolicy& policy,
40  IFileCatalog& fileCatalog,
41  ITransaction& transaction,
43  const std::string& name,
45 
47  virtual ~UserDatabase();
48 
51 
53  virtual void connectForRead() override;
54  virtual void connectForRead( const DatabaseConnectionPolicy& policy ) override;
55 
57  virtual void connectForWrite() override;
58  virtual void connectForWrite( const DatabaseConnectionPolicy& policy ) override;
59 
61  virtual void disconnect() override;
62 
64  virtual IDatabase::OpenMode openMode() const override;
65 
67  virtual const std::string& fid() override;
68 
70  virtual const std::string& pfn() override;
71 
76  virtual bool setTechnology( long technology ) override;
77 
79  virtual long technology() const override;
80 
82  virtual std::vector< std::string > containers() override;
83 
85  virtual IContainer* containerHandle( const std::string& name ) override;
86 
90 
91  protected:
92  virtual
93  bool attributeOfType( const std::string& attributeName,
94  void* data,
95  const std::type_info& typeInfo,
96  const std::string& option ) override;
97 
98  virtual
99  bool setAttributeOfType( const std::string& attributeName,
100  const void* data,
101  const std::type_info& typeInfo,
102  const std::string& option ) override;
103  private:
115  std::string m_name;
129  std::string m_the_fid;
130  std::string m_the_pfn;
131 
134 
136  void setTechnologyIdentifier( const std::string& sTechnology );
137  };
138  }
139 }
140 
141 #endif
pool::IContainer
Definition: IContainer.h:23
python.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:158
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
pool::PersistencySvc::DatabaseHandler
Definition: DatabaseHandler.h:34
checkxAOD.nameType
nameType
Definition: Tools/PyUtils/bin/checkxAOD.py:188
pool::PersistencySvc::UserDatabase::technologySpecificAttributes
virtual ITechnologySpecificAttributes & technologySpecificAttributes() override
pool::PersistencySvc::UserDatabase::disconnect
virtual void disconnect() override
Disconnects from the database.
pool::PersistencySvc::UserDatabase::m_the_fid
std::string m_the_fid
Other names used.
Definition: UserDatabase.h:129
pool::IDatabase::OpenMode
OpenMode
Current open mode enumeration.
Definition: IDatabase.h:28
pool::PersistencySvc::UserDatabase::databaseHandler
DatabaseHandler & databaseHandler()
Returns the database handler.
pool::PersistencySvc::UserDatabase::containers
virtual std::vector< std::string > containers() override
Returns the names of the containers in this database.
pool::PersistencySvc::UserDatabase::setAttributeOfType
virtual bool setAttributeOfType(const std::string &attributeName, const void *data, const std::type_info &typeInfo, const std::string &option) override
The actual method setting the attribute data given a name.
IDatabase.h
pool
pool namespace
Definition: libname.h:15
pool::PersistencySvc::UserDatabase::attributeOfType
virtual bool attributeOfType(const std::string &attributeName, void *data, const std::type_info &typeInfo, const std::string &option) override
The actual method returning the attribute data given a name.
pool::PersistencySvc::UserDatabase::m_technologyDispatcher
TechnologyDispatcher & m_technologyDispatcher
Reference to the technology dispatcher.
Definition: UserDatabase.h:105
pool::PersistencySvc::UserDatabase::technology
virtual long technology() const override
Returns the technology identifier for this database.
pool::DatabaseSpecification::NameType
NameType
Enumeration type specifying the database name field, wherever the latter is used in methods accessing...
Definition: DatabaseSpecification.h:14
pool::APRMessaging
AthMessaging wrapper to set the output level in APR components.
Definition: DbPrint.h:35
pool::PersistencySvc::UserDatabase::UserDatabase
UserDatabase(TechnologyDispatcher &technologyDispatcher, const DatabaseConnectionPolicy &policy, IFileCatalog &fileCatalog, ITransaction &transaction, DatabaseRegistry &registry, const std::string &name, DatabaseSpecification::NameType nameType)
Constructor.
pool::PersistencySvc::UserDatabase::m_registry
DatabaseRegistry & m_registry
Reference to the database registry.
Definition: UserDatabase.h:113
pool::PersistencySvc::UserDatabase::fid
virtual const std::string & fid() override
Returns the file identifier of this database.
pool::PersistencySvc::UserDatabase::~UserDatabase
virtual ~UserDatabase()
Destructor.
DbPrint.h
pool::PersistencySvc::UserDatabase::connectForWrite
virtual void connectForWrite(const DatabaseConnectionPolicy &policy) override
pool::PersistencySvc::UserDatabase::openMode
virtual IDatabase::OpenMode openMode() const override
Returns the opening mode. It can be used to check whether the database is connected.
pool::IFileCatalog
Definition: IFileCatalog.h:23
pool::PersistencySvc::UserDatabase::m_nameType
DatabaseSpecification::NameType m_nameType
The database name spacification.
Definition: UserDatabase.h:117
pool::PersistencySvc::UserDatabase::m_the_pfn
std::string m_the_pfn
Definition: UserDatabase.h:130
pool::PersistencySvc::UserDatabase::m_transaction
ITransaction & m_transaction
Reference to the global transaction.
Definition: UserDatabase.h:111
pool::PersistencySvc::UserDatabase::pfn
virtual const std::string & pfn() override
Returns the physical file name of this database.
pool::ITransaction
Definition: ITransaction.h:21
pool::PersistencySvc::UserDatabase::setTechnologyIdentifier
void setTechnologyIdentifier(const std::string &sTechnology)
Converts a technology string to the technology (long) identifier.
pool::PersistencySvc::UserDatabase::m_databaseHandler
DatabaseHandler * m_databaseHandler
The underlying database handler.
Definition: UserDatabase.h:123
ISession.h
pool::PersistencySvc::DatabaseRegistry
Definition: DatabaseRegistry.h:19
pool::PersistencySvc::UserDatabase::m_catalog
IFileCatalog & m_catalog
Reference to the file catalog.
Definition: UserDatabase.h:109
pool::PersistencySvc::UserDatabase::connectForRead
virtual void connectForRead() override
Connects explicitly to the database for read operations.
pool::PersistencySvc::UserDatabase::m_technologySet
bool m_technologySet
Checks if the technology identifier has been set.
Definition: UserDatabase.h:121
pool::PersistencySvc::UserDatabase::m_technology
long m_technology
The technology identifier of the database.
Definition: UserDatabase.h:119
pool::ITechnologySpecificAttributes
Definition: ITechnologySpecificAttributes.h:22
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
pool::IDatabase
Definition: IDatabase.h:25
pool::PersistencySvc::UserDatabase::m_name
std::string m_name
The database name.
Definition: UserDatabase.h:115
pool::PersistencySvc::UserDatabase
Definition: UserDatabase.h:35
pool::PersistencySvc::UserDatabase::checkInRegistry
bool checkInRegistry()
Checks in the registry if the database handler already exists.
ITechnologySpecificAttributes.h
pool::PersistencySvc::UserDatabase::m_openMode
IDatabase::OpenMode m_openMode
Current open mode.
Definition: UserDatabase.h:125
pool::PersistencySvc::UserDatabase::m_alreadyConnected
bool m_alreadyConnected
Flag indicating whether a connection has been already made once.
Definition: UserDatabase.h:127
DatabaseSpecification.h
pool::PersistencySvc::UserDatabase::containerHandle
virtual IContainer * containerHandle(const std::string &name) override
Returns a pointer to a container object. The user acquires ownership of that object.
pool::DatabaseConnectionPolicy
Definition: DatabaseConnectionPolicy.h:19
pool::PersistencySvc::UserDatabase::connectForWrite
virtual void connectForWrite() override
Connects explicitly to the database for write/update operations.
pool::PersistencySvc::UserDatabase::m_policy
const DatabaseConnectionPolicy & m_policy
Reference to the policy.
Definition: UserDatabase.h:107
pool::PersistencySvc::UserDatabase::technologySpecificAttributes
virtual const ITechnologySpecificAttributes & technologySpecificAttributes() const override
Returns the object holding the technology specific attributes.
pool::PersistencySvc::UserDatabase::connectForRead
virtual void connectForRead(const DatabaseConnectionPolicy &policy) override
pool::PersistencySvc::UserDatabase::setTechnology
virtual bool setTechnology(long technology) override
Sets the technology identifier for this database.
pool::PersistencySvc::TechnologyDispatcher
Definition: TechnologyDispatcher.h:30