ATLAS Offline Software
DbDatabaseObj.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //====================================================================
6 // DbDatabaseObj object definition
7 //--------------------------------------------------------------------
8 //
9 // Package : System (The POOL project)
10 //
11 // Description: Generic data persistency
12 //
13 // @author M.Frank
14 //====================================================================
15 #ifndef POOL_DBDATABASEOBJ_H
16 #define POOL_DBDATABASEOBJ_H 1
17 
18 // We need the definition of the domain for defining the Database
20 #include "StorageSvc/DbAccessObj.h"
21 #include "StorageSvc/DbDomain.h"
22 #include "StorageSvc/DbDatabase.h"
23 #include "StorageSvc/DbContainer.h"
24 
25 // STL include files
26 #include <map>
27 #include <string>
28 #include <vector>
29 
30 
31 /*
32  * POOL namespace declaration
33  */
34 namespace pool {
35 
36  // Forward declarations
37  class DbToken;
38 
49  class DbDatabaseObj : public DbAccessObj<std::string, DbContainerObj > {
50  private:
52  typedef RootType TypeH;
54  typedef std::pair<std::string, std::string> Parameter;
56  typedef std::vector< Parameter > Parameters;
58  typedef std::vector< DbContainerObj > Containers;
60  typedef std::map<std::string, std::string> ParamMap;
62  typedef std::map< Guid , DbToken* > LinkMap;
64  typedef std::vector<DbToken*> LinkVector;
66  typedef std::map< Guid , const DbTypeInfo* > ShapeMap;
68  typedef std::map< long long int , int > IndexMap;
71 
93  std::map<TypeH, const DbTypeInfo*> m_classMap;
99  std::string m_logon;
104 
105  private:
108  public:
111  const std::string& pfn,
112  const std::string& fid,
115  virtual ~DbDatabaseObj();
117  const std::string& logon() const { return m_logon; }
119  long long int size();
121  IDbDatabase* info() { return m_info; }
122  const IDbDatabase* info() const { return m_info; }
124  DbDomain& domain() { return m_dom; }
125  const DbDomain& domain() const { return m_dom; }
127  int age() const { return m_fileAge; }
129  const Token* token() const { return m_token; }
130 
140  bool updatesPending() const;
143 
145  DbStatus read(const Token& token, ShapeH shape, void** object);
147  DbStatus getLink(const Token::OID_t& oid, Token* pTok);
149  std::string cntName(Token& token);
151  DbStatus makeLink(Token* pToken, Token::OID_t& refLink);
153  const DbTypeInfo* objectShape(const TypeH& classH);
155  const DbTypeInfo* objectShape(const Guid& nam);
157  const DbTypeInfo* contShape(const std::string& nam);
159  DbStatus addShape (const DbTypeInfo* pType);
161  const Token* cntToken(const std::string& cntName);
163  DbStatus containers(std::vector<const Token*>& conts, bool intern);
164  DbStatus containers(std::vector<IDbContainer*>& conts, bool intern);
166  DbStatus associations(std::vector<const Token*>& conts);
168  DbStatus shapes(std::vector<const DbTypeInfo*>& shaps);
170  int nParam();
172  DbStatus addParam(const std::string& nam, const std::string& val);
174  DbStatus param(const std::string& nam, std::string& val);
176  DbStatus params(std::vector< std::pair<std::string, std::string> >& vals);
178  DbStatus setOption(const DbOption& refOpt);
181 
183  void setAge(int value);
184  };
185 } // End namespace pool
186 #endif // POOL_DBDATABASEOBJ_H
pool::DbDatabaseObj::associations
DbStatus associations(std::vector< const Token * > &conts)
Allow access to all known associations between containers.
pool::DbDatabaseObj::contShape
const DbTypeInfo * contShape(const std::string &nam)
Retrieve persistent type information by container.
pool::DbDatabaseObj::transAct
DbStatus transAct(Transaction::Action action)
Execute Database Transaction action.
pool::DbAccessMode
int DbAccessMode
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:47
pool::DbDatabaseObj::read
DbStatus read(const Token &token, ShapeH shape, void **object)
read an object referenced by the token
pool::DbDatabaseObj::addShape
DbStatus addShape(const DbTypeInfo *pType)
Add persistent type to the Database.
pool::DbDatabaseObj::shapes
DbStatus shapes(std::vector< const DbTypeInfo * > &shaps)
Allow access to all known shapes used by the database.
pool::DbStatus
Definition: DbStatus.h:67
pool::DbDatabaseObj::info
IDbDatabase * info()
Access to technology dependent implementation.
Definition: DbDatabaseObj.h:121
pool::DbDatabaseObj::token
const Token * token() const
Access the token of the database object.
Definition: DbDatabaseObj.h:129
pool::DbDatabaseObj::m_shapeMap
ShapeMap m_shapeMap
Map containing all shapes.
Definition: DbDatabaseObj.h:89
DbAccessObj.h
pool::DbDatabaseObj::m_dom
DbDomain m_dom
Handle to domain.
Definition: DbDatabaseObj.h:73
pool::DbDatabaseObj::getLink
DbStatus getLink(const Token::OID_t &oid, Token *pTok)
Expand OID into a full Token, based on the Links table.
pool
pool namespace
Definition: libname.h:15
pool::DbDatabaseObj::m_indexMap
IndexMap m_indexMap
Map containing all index.
Definition: DbDatabaseObj.h:87
pool::DbDatabaseObj::logon
const std::string & logon() const
Access to the logon string.
Definition: DbDatabaseObj.h:117
pool::DbDatabaseObj::reopen
DbStatus reopen(DbAccessMode mode)
Re-open database with changing access permissions.
pool::DbDatabaseObj::setAge
void setAge(int value)
Update database age.
pool::DbDatabaseObj::param
DbStatus param(const std::string &nam, std::string &val)
Retrieve existing parameter by name.
athena.value
value
Definition: athena.py:122
pool::DbDatabaseObj::ParamMap
std::map< std::string, std::string > ParamMap
Parameter map definition.
Definition: DbDatabaseObj.h:60
pool::DbDatabaseObj::setOption
DbStatus setOption(const DbOption &refOpt)
Set options.
DbDomain.h
pool::DbDatabaseObj::m_token
Token * m_token
Token describing the object.
Definition: DbDatabaseObj.h:103
pool::DbDatabaseObj::age
int age() const
Access age value.
Definition: DbDatabaseObj.h:127
DbDatabase.h
Token
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition: Token.h:21
pool::DbDatabaseObj::makeLink
DbStatus makeLink(Token *pToken, Token::OID_t &refLink)
Add association link to link container.
pool::DbDatabaseObj::m_info
IDbDatabase * m_info
Technology dependent implementation block.
Definition: DbDatabaseObj.h:81
Token::OID_t
Definition: Token.h:24
pool::DbAccessObj
Definition: DbAccessObj.h:47
pool::DbDatabaseObj::objectShape
const DbTypeInfo * objectShape(const TypeH &classH)
Retrieve persistent type information by class handle.
pool::ShapeH
const class Shape * ShapeH
Definition: DbContainerObj.h:27
pool::IDbDatabase
Definition: IDbDatabase.h:41
pool::DbDatabaseObj::addParam
DbStatus addParam(const std::string &nam, const std::string &val)
Add a persistent parameter to the file.
pool::DbDatabaseObj::ShapeMap
std::map< Guid, const DbTypeInfo * > ShapeMap
Definition of map with shape elements.
Definition: DbDatabaseObj.h:66
DbContainer.h
pool::DbDatabaseObj::IndexMap
std::map< long long int, int > IndexMap
Definition of map with index elements.
Definition: DbDatabaseObj.h:68
pool::DbDatabaseObj::m_string_t
DbTypeInfo * m_string_t
Internal string representation type.
Definition: DbDatabaseObj.h:97
pool::DbDatabaseObj
Definition: DbDatabaseObj.h:49
pool::DbDatabaseObj::m_shapes
DbContainer m_shapes
Handle to shapes container.
Definition: DbDatabaseObj.h:77
pool::DbAccessObj< std::string, DbContainerObj >::mode
DbAccessMode mode() const
Access mode.
Definition: DbAccessObj.h:80
pool::DbDatabaseObj::containers
DbStatus containers(std::vector< const Token * > &conts, bool intern)
Allow access to all known containers.
pool::DbOption
Definition: DbOption.h:36
pool::DbDatabaseObj::m_linkVec
LinkVector m_linkVec
Random access array containing all links.
Definition: DbDatabaseObj.h:85
pool::DbDatabaseObj::cntName
std::string cntName(Token &token)
Retrieve container name from link container (using token oid, rather than contID)
pool::DbDatabaseObj::m_links
DbContainer m_links
Handle to link container.
Definition: DbDatabaseObj.h:75
pool::DbDatabaseObj::Parameters
std::vector< Parameter > Parameters
Database parameter container definition.
Definition: DbDatabaseObj.h:56
pool::DbDatabaseObj::retire
DbStatus retire()
End database access, but still leave database accessible.
pool::DbDatabaseObj::open
DbStatus open()
Open Database object.
pool::DbDatabaseObj::nParam
int nParam()
Retrieve the number of user parameters.
pool::DbDatabaseObj::DbDatabaseObj
DbDatabaseObj(DbDomain &dom, const std::string &pfn, const std::string &fid, DbAccessMode mode=pool::READ)
Standard constructor of a Database obejct.
pool::DbDatabaseObj::close
DbStatus close()
Close database object.
pool::DbDatabaseObj::m_params
DbContainer m_params
Handle to the parameter container.
Definition: DbDatabaseObj.h:79
pool::DbDatabaseObj::Containers
std::vector< DbContainerObj > Containers
Collection of retired database containers.
Definition: DbDatabaseObj.h:58
pool::DbDatabaseObj::objectShape
const DbTypeInfo * objectShape(const Guid &nam)
Retrieve persistent type information by shape identifier.
pool::DbDatabaseObj::getOption
DbStatus getOption(DbOption &refOpt)
Access options.
pool::READ
@ READ
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:68
pool::Transaction::Action
Action
Definition: Transaction.h:34
pool::DbDatabaseObj::info
const IDbDatabase * info() const
Definition: DbDatabaseObj.h:122
pool::DbDatabaseObj::TypeH
RootType TypeH
Reflection class identifier.
Definition: DbDatabaseObj.h:52
pool::DbDatabaseObj::Base
DbAccessObj< std::string, DbContainerObj > Base
Base class convenience typdef.
Definition: DbDatabaseObj.h:70
pool::DbDatabaseObj::m_linkMap
LinkMap m_linkMap
Map containing all links.
Definition: DbDatabaseObj.h:83
pool::DbDomain
Definition: DbDomain.h:47
pool::DbContainer
Definition: DbContainer.h:51
Guid
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition: Guid.h:20
pool::DbDatabaseObj::containers
DbStatus containers(std::vector< IDbContainer * > &conts, bool intern)
pool::DbDatabaseObj::cleanup
DbStatus cleanup()
Perform cleanup of internal data structures.
python.CaloScaleNoiseConfig.action
action
Definition: CaloScaleNoiseConfig.py:77
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
pool::DbDatabaseObj::m_fileAge
int m_fileAge
File age counter.
Definition: DbDatabaseObj.h:101
pool::DbDatabaseObj::LinkMap
std::map< Guid, DbToken * > LinkMap
Definition of map with link elements.
Definition: DbDatabaseObj.h:62
pool::DbDatabaseObj::domain
const DbDomain & domain() const
Definition: DbDatabaseObj.h:125
pool::DbDatabaseObj::LinkVector
std::vector< DbToken * > LinkVector
Definition of array with link elements.
Definition: DbDatabaseObj.h:64
pool::DbDatabaseObj::m_retiredConts
Containers m_retiredConts
Collection of retired database containers.
Definition: DbDatabaseObj.h:95
pool::DbDatabaseObj::updatesPending
bool updatesPending() const
Check for pending updates.
pool::DbDatabaseObj::m_classMap
std::map< TypeH, const DbTypeInfo * > m_classMap
Map with all cached mappings between known reflection classes.
Definition: DbDatabaseObj.h:93
pool::DbDatabaseObj::m_paramMap
ParamMap m_paramMap
Map with all cached file properties.
Definition: DbDatabaseObj.h:91
Guid.h
This file contains the class definition for the Guid class (migrated from POOL).
pool::DbDatabaseObj::cntToken
const Token * cntToken(const std::string &cntName)
Access local container token (if container exists)
pool::DbDatabaseObj::size
long long int size()
Access the size of the database: May be undefined for some technologies.
pool::DbDatabaseObj::~DbDatabaseObj
virtual ~DbDatabaseObj()
Standard Destructor.
pool::DbDatabaseObj::params
DbStatus params(std::vector< std::pair< std::string, std::string > > &vals)
Retrieve all parameters.
pool::DbTypeInfo
Definition: DbTypeInfo.h:47
pool::DbDatabaseObj::m_logon
std::string m_logon
Physical Database login.
Definition: DbDatabaseObj.h:99
pool::DbDatabaseObj::domain
DbDomain & domain()
Access to domain handle (CONST)
Definition: DbDatabaseObj.h:124
PlotCalibFromCool.vals
vals
Definition: PlotCalibFromCool.py:474
TScopeAdapter
Definition: RootType.h:119
pool::DbDatabaseObj::Parameter
std::pair< std::string, std::string > Parameter
Database parameter definition.
Definition: DbDatabaseObj.h:54