CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PoolDatabaseSchema.h
Go to the documentation of this file.
1 #ifndef INCLUDE_ORA_POOLDATABASESCHEMA_H
2 #define INCLUDE_ORA_POOLDATABASESCHEMA_H
3 
4 #include "IDatabaseSchema.h"
5 // externals
6 #include "CoralBase/AttributeList.h"
7 
8 namespace ora {
9 
10  struct PoolDbCacheData {
12 
13  PoolDbCacheData( int id, const std::string& name, const std::string& className,
14  const std::string& mappingVersion, unsigned int nobjWritten );
15 
17 
18  PoolDbCacheData( const PoolDbCacheData& rhs );
19 
21 
22  int m_id;
23  std::string m_name;
24  std::string m_className;
25  std::string m_mappingVersion;
26  unsigned int m_nobjWr;
27  };
28 
29  class PoolDbCache {
30  public:
31  PoolDbCache();
32  ~PoolDbCache();
33  void add( int id, const PoolDbCacheData& data );
34  const std::string& nameById( int id );
35  int idByName( const std::string& name );
36  PoolDbCacheData& find( int id );
37  void remove( int id );
38  std::map<std::string,PoolDbCacheData* >& sequences();
39  void clear();
40 
41  private:
44  std::map<int,PoolDbCacheData > m_idMap;
45  std::map<std::string,PoolDbCacheData* > m_sequences;
46  };
47 
48  class PoolMainTable: public IMainTable {
49  public:
50  static std::string tableName();
51  public:
52  explicit PoolMainTable( coral::ISchema& dbSchema );
53  virtual ~PoolMainTable();
54  bool getParameters( std::map<std::string,std::string>& destination );
55  std::string schemaVersion();
56  public:
57  bool exists();
58  void create();
59  void drop();
60  private:
61  coral::ISchema& m_schema;
62  };
63 
64 
66  public:
67  static std::string tableName();
68  static std::string sequenceNameColumn();
69  static std::string sequenceValueColumn();
70  public:
71  explicit PoolSequenceTable( coral::ISchema& dbSchema );
72  virtual ~PoolSequenceTable();
73  void init( PoolDbCache& dbCache );
74  bool add( const std::string& sequenceName );
75  bool getLastId( const std::string& sequenceName, int& lastId );
76  void sinchronize( const std::string& sequenceName, int lastValue );
77  void erase( const std::string& sequenceName );
78  public:
79  bool exists();
80  void create();
81  void drop();
82  private:
83  coral::ISchema& m_schema;
85  };
86 
88  public:
89  static std::string tableName();
90  static std::string mappingVersionColumn();
91  static std::string containerNameColumn();
92  public:
93  explicit PoolMappingVersionTable( coral::ISchema& dbSchema );
94  virtual ~PoolMappingVersionTable();
95  public:
96  bool exists();
97  void create();
98  void drop();
99  private:
100  coral::ISchema& m_schema;
101  };
102 
104  public:
105  static std::string tableName();
106  static std::string mappingVersionColumn();
107  static std::string elementIdColumn();
108  static std::string elementTypeColumn();
109  static std::string scopeNameColumn();
110  static std::string variableNameColumn();
111  static std::string variableParIndexColumn();
112  static std::string variableTypeColumn();
113  static std::string tableNameColumn();
114  static std::string columnNameColumn();
115  public:
116  explicit PoolMappingElementTable( coral::ISchema& dbSchema );
117  virtual ~PoolMappingElementTable();
118  public:
119  bool exists();
120  void create();
121  void drop();
122  private:
123  coral::ISchema& m_schema;
124  };
125 
127  public:
128  static std::string tableName();
129  static std::string containerIdColumn();
130  static std::string containerNameColumn();
131  static std::string containerTypeColumn();
132  static std::string tableNameColumn();
133  static std::string classNameColumn();
134  static std::string baseMappingVersionColumn();
135  static std::string numberOfWrittenObjectsColumn();
136  static std::string numberOfDeletedObjectsColumn();
137  static std::string homogeneousContainerType();
138  public:
139  explicit PoolContainerHeaderTable( coral::ISchema& dbSchema );
140  virtual ~PoolContainerHeaderTable();
141  void init( PoolDbCache& dbCache );
142  bool getContainerData( std::map<std::string, ContainerHeaderData>& destination );
143  void addContainer( int id, const std::string& containerName, const std::string& className );
144  void removeContainer( int id );
145  void incrementNumberOfObjects( int id );
146  void decrementNumberOfObjects( int id );
147  void updateNumberOfObjects( const std::map<int,unsigned int>& numberOfObjectsForContainerIds );
148  public:
149  bool exists();
150  void create();
151  void drop();
152  private:
153  coral::ISchema& m_schema;
155  };
156 
158  public:
159  static std::string tableName();
160  static std::string classVersionColumn();
161  static std::string containerNameColumn();
162  static std::string mappingVersionColumn();
163  public:
164  explicit PoolClassVersionTable( coral::ISchema& dbSchema );
165  virtual ~PoolClassVersionTable();
166  public:
167  bool exists();
168  void create();
169  void drop();
170  private:
171  coral::ISchema& m_schema;
172  };
173 
175  public:
176  static std::string emptyScope();
177  public:
178  explicit PoolMappingSchema( coral::ISchema& dbSchema );
179  virtual ~PoolMappingSchema();
180  void init( PoolDbCache& dbCache );
181  public:
182  bool getVersionList( std::set<std::string>& destination );
183  bool getMapping( const std::string& version, MappingRawData& destination );
184  void storeMapping( const MappingRawData& mapping );
185  void removeMapping( const std::string& version );
186  bool getContainerTableMap( std::map<std::string, int>& destination );
187  bool getMappingVersionListForContainer( int containerId, std::set<std::string>& destination, bool onlyDependency=false );
188  bool getMappingVersionListForTable( const std::string& tableName, std::set<std::string>& destination );
189  bool getDependentClassesInContainerMapping( int containerId, std::set<std::string>& destination );
190  bool getClassVersionListForMappingVersion( const std::string& mappingVersion, std::set<std::string>& destination );
191  bool getClassVersionListForContainer( int containerId, std::map<std::string,std::string>& versionMap );
192  bool selectMappingVersion( const std::string& classId, int containerId, std::string& destination );
193  bool containerForMappingVersion( const std::string& mappingVersion, int& destination );
194  void insertClassVersion( const std::string& className, const std::string& classVersion, const std::string& classId,
195  int dependencyIndex, int containerId, const std::string& mappingVersion );
196  void setMappingVersion( const std::string& classId, int containerId, const std::string& mappingVersion );
197  private:
198  coral::ISchema& m_schema;
200  };
201 
203  public:
204  static std::string& tableName();
205  static std::string& objectNameColumn();
206  static std::string& tokenColumn();
207  static std::string& timetypeColumn();
208  public:
209  CondMetadataTable( coral::ISchema& dbSchema, PoolDbCache& dbCache );
210  virtual ~CondMetadataTable();
211  void setObjectName( const std::string& name, int contId, int itemId );
212  bool eraseObjectName( const std::string& name );
213  bool eraseAllNames();
214  bool getObjectByName( const std::string& name, std::pair<int,int>& destination );
215  bool getNamesForObject( int contId, int itemId, std::vector<std::string>& destination );
216  bool getNamesForContainer( int contId, std::vector<std::string>& destination );
217  bool getAllNames( std::vector<std::string>& destination );
218  public:
219  bool exists();
220  void create();
221  void drop();
222  private:
223  coral::ISchema& m_schema;
225  };
226 
228  public:
229  static bool existsMainTable( coral::ISchema& dbSchema );
230  public:
231  explicit PoolDatabaseSchema( coral::ISchema& dbSchema );
232  virtual ~PoolDatabaseSchema();
233 
234  bool exists();
235  void create();
236  void drop();
237 
246 
247  private:
248  coral::ISchema& m_schema;
258  };
259 
260 }
261 
262 #endif
263 
264 
IDatabaseTable & mappingElementTable()
IMappingSchema & mappingSchema()
void init(PoolDbCache &dbCache)
static std::string numberOfWrittenObjectsColumn()
static std::string tableName()
static std::string & objectNameColumn()
bool getNamesForObject(int contId, int itemId, std::vector< std::string > &destination)
static std::string tableNameColumn()
static std::string tableName()
static std::string variableTypeColumn()
PoolDbCacheData m_mappingData
PoolMappingSchema m_mappingSchema
static std::string containerNameColumn()
std::map< std::string, PoolDbCacheData * > & sequences()
PoolSequenceTable(coral::ISchema &dbSchema)
static std::string containerTypeColumn()
void setObjectName(const std::string &name, int contId, int itemId)
PoolDbCacheData m_databaseData
static std::string columnNameColumn()
static std::string baseMappingVersionColumn()
PoolClassVersionTable m_classVersionTable
PoolMappingSchema(coral::ISchema &dbSchema)
int idByName(const std::string &name)
static std::string mappingVersionColumn()
void init(PoolDbCache &dbCache)
void updateNumberOfObjects(const std::map< int, unsigned int > &numberOfObjectsForContainerIds)
std::map< std::string, PoolDbCacheData * > m_sequences
static std::string tableNameColumn()
INamingServiceTable & namingServiceTable()
void removeMapping(const std::string &version)
static std::string containerIdColumn()
PoolMappingElementTable m_mappingElementTable
bool getContainerData(std::map< std::string, ContainerHeaderData > &destination)
void sinchronize(const std::string &sequenceName, int lastValue)
bool getClassVersionListForContainer(int containerId, std::map< std::string, std::string > &versionMap)
void add(int id, const PoolDbCacheData &data)
PoolSequenceTable m_sequenceTable
bool getContainerTableMap(std::map< std::string, int > &destination)
static std::string variableParIndexColumn()
CondMetadataTable m_metadataTable
static std::string emptyScope()
std::map< int, PoolDbCacheData > m_idMap
static std::string classVersionColumn()
IDatabaseTable & mappingVersionTable()
bool selectMappingVersion(const std::string &classId, int containerId, std::string &destination)
PoolMappingElementTable(coral::ISchema &dbSchema)
void setMappingVersion(const std::string &classId, int containerId, const std::string &mappingVersion)
static std::string elementIdColumn()
bool eraseObjectName(const std::string &name)
bool getMappingVersionListForContainer(int containerId, std::set< std::string > &destination, bool onlyDependency=false)
bool getMapping(const std::string &version, MappingRawData &destination)
static std::string numberOfDeletedObjectsColumn()
bool containerForMappingVersion(const std::string &mappingVersion, int &destination)
static bool existsMainTable(coral::ISchema &dbSchema)
PoolDbCacheData & find(int id)
bool getParameters(std::map< std::string, std::string > &destination)
PoolClassVersionTable(coral::ISchema &dbSchema)
bool getLastId(const std::string &sequenceName, int &lastId)
static std::string homogeneousContainerType()
PoolContainerHeaderTable(coral::ISchema &dbSchema)
static std::string sequenceNameColumn()
static std::string & tokenColumn()
PoolDbCacheData & operator=(const PoolDbCacheData &rhs)
static std::string classNameColumn()
coral::ISchema & m_schema
static std::string sequenceValueColumn()
IContainerHeaderTable & containerHeaderTable()
void init(PoolDbCache &dbCache)
PoolMappingVersionTable(coral::ISchema &dbSchema)
bool getAllNames(std::vector< std::string > &destination)
bool getClassVersionListForMappingVersion(const std::string &mappingVersion, std::set< std::string > &destination)
const std::string & nameById(int id)
PoolDatabaseSchema(coral::ISchema &dbSchema)
static std::string mappingVersionColumn()
PoolMainTable(coral::ISchema &dbSchema)
PoolMappingVersionTable m_mappingVersionTable
void addContainer(int id, const std::string &containerName, const std::string &className)
static std::string containerNameColumn()
static std::string scopeNameColumn()
PoolContainerHeaderTable m_containerHeaderTable
void storeMapping(const MappingRawData &mapping)
static std::string variableNameColumn()
bool getMappingVersionListForTable(const std::string &tableName, std::set< std::string > &destination)
void insertClassVersion(const std::string &className, const std::string &classVersion, const std::string &classId, int dependencyIndex, int containerId, const std::string &mappingVersion)
bool getVersionList(std::set< std::string > &destination)
static std::string tableName()
bool add(const std::string &sequenceName)
static std::string mappingVersionColumn()
static std::string containerNameColumn()
IDatabaseTable & classVersionTable()
bool getNamesForContainer(int contId, std::vector< std::string > &destination)
ISequenceTable & sequenceTable()
static std::string & timetypeColumn()
static std::string elementTypeColumn()
coral::ISchema & m_schema
CondMetadataTable(coral::ISchema &dbSchema, PoolDbCache &dbCache)
bool getObjectByName(const std::string &name, std::pair< int, int > &destination)
std::string className(const T &t)
Definition: ClassName.h:30
static std::string & tableName()
std::string schemaVersion()
bool getDependentClassesInContainerMapping(int containerId, std::set< std::string > &destination)
void erase(const std::string &sequenceName)